diff --git a/.circleci/config.yml b/.circleci/config.yml
index cf9c30b5162c7757450ee18dc041cd61168b30ad..276e0c520002eb6ef3e3bb14b9c383659baba27b 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -22,15 +22,15 @@ jobs:
       - run:
           name: "Install Git"
           command: |
-            # Required for the checkout and run steps
-            nix-env -i git openssh stack
+            # Required for the checkout step.
+            nix-env -i git openssh
 
       - "checkout"
 
       - run:
           name: "Run Tests"
           command: |
-            stack test --coverage
+            nix-shell shell.nix --run "stack test --coverage"
 
 workflows:
   version: 2
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000000000000000000000000000000000000..6505d05247b12142bbb541554b664be9c8e5fadc
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,12 @@
+let
+  pkgs = import (builtins.fetchTarball {
+    url = "https://github.com/NixOS/nixpkgs/archive/3c83ad6ac13b67101cc3e2e07781963a010c1624.tar.gz";
+    sha256 = "0cdq342wrkvkyccygpp1gvwp7hhqg68hljjwld4vjixm901ayy14";
+  }) {};
+in
+{ pkgs ? pkgs }:
+pkgs.mkShell {
+  buildInputs = [
+    pkgs.stack
+  ];
+}