diff --git a/README.rst b/README.rst
index 68a636880683069cf29febbf629b88d09a492042..a665c83e7adcba8ab09655e110c9e694f3540fa2 100644
--- a/README.rst
+++ b/README.rst
@@ -1,5 +1,12 @@
 ``hsc2hs``: Haskell Pre-processor for C FFI bindings
 ####################################################
+[![Hackage](https://img.shields.io/hackage/v/hsc2hs.svg)][Hackage: hsc2hs]
+[![Linux build](https://img.shields.io/travis/haskell/hsc2hs.svg)](https://travis-ci.org/haskell/hsc2hs)
+[![Windows build](https://ci.appveyor.com/api/projects/status/h1o9o9dqeegy5ifo?svg=true)](https://ci.appveyor.com/project/RyanGlScott/hsc2hs)
+
+[Hackage: hsc2hs]:
+  http://hackage.haskell.org/package/hsc2hs
+  "hsc2hs package on Hackage"
 
 The ``hsc2hs`` command can be used to automate some parts of the process
 of writing Haskell bindings to C code. It reads an almost-Haskell source
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000000000000000000000000000000000000..5b7237f97b339c0c36c950e00108016840229ea3
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,33 @@
+clone_folder: "c:\\WORK"
+
+environment:
+  global:
+    CABOPTS:  "--store-dir=C:\\SR --http-transport=plain-http"
+  matrix:
+    - GHCVER: "8.8.1"
+    - GHCVER: "8.6.5"
+    - GHCVER: "8.4.4"
+    - GHCVER: "8.2.2"
+    - GHCVER: "8.0.2.2"
+    - GHCVER: "7.10.3.2"
+    - GHCVER: "7.8.4.1"
+    - GHCVER: "7.6.3.1"
+
+cache:
+ - "C:\\SR"
+
+install:
+ - "choco install -y cabal"
+ - "choco install -y ghc --version %GHCVER%"
+ - "refreshenv"
+ - "set PATH=C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;%PATH%"
+ - "cabal --version"
+ - "ghc --version"
+ - "cabal %CABOPTS% update -v"
+
+build: off
+
+test_script:
+ - IF EXIST configure.ac bash -c "autoreconf -i"
+ - "echo packages:. > cabal.project"
+ - "cabal %CABOPTS% new-test -j1 all"