diff --git a/shell.nix b/shell.nix
new file mode 100644
index 000000000..d3bf73799
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,105 @@
+{nixpkgs ? import <nixpkgs> {} }:
+let
+  inherit (nixpkgs) pkgs;
+  inherit (pkgs) haskellPackages;
+
+  haskellDeps = ps: with ps; [
+    Diff
+    Glob
+    HTTP
+    HTTP
+    HsYAML
+    JuicyPixels
+    QuickCheck
+    SHA
+    aeson
+    aeson-pretty
+    attoparsec
+    base
+    base-compat
+    base64-bytestring
+    binary
+    blaze-html
+    blaze-markup
+    bytestring
+    case-insensitive
+    citeproc
+    commonmark
+    commonmark-extensions
+    commonmark-pandoc
+    conduit-extra
+    connection
+    connection
+    containers
+    data-default
+    deepseq
+    directory
+    doclayout
+    doctemplates
+    emojis
+    exceptions
+    file-embed
+    filepath
+    haddock-library
+    hsc2hs
+    hslua
+    hslua-module-system
+    hslua-module-text
+    http-client
+    http-client
+    http-client-tls
+    http-client-tls
+    http-types
+    ipynb
+    jira-wiki-markup
+    mtl
+    network
+    network
+    network-uri
+    pandoc-types
+    parsec
+    process
+    random
+    safe
+    scientific
+    skylighting
+    skylighting-core
+    socks
+    split
+    streaming-commons
+    syb
+    tagsoup
+    tasty
+    tasty-golden
+    tasty-hunit
+    tasty-lua
+    tasty-quickcheck
+    temporary
+    texmath
+    text
+    text-conversions
+    time
+    tls
+    unicode-transforms
+    unordered-containers
+    weigh
+    xml
+    xml-conduit
+    zip-archive
+    zlib
+  ];
+
+  ghc = haskellPackages.ghcWithPackages haskellDeps;
+
+  nixPackages = [
+    ghc
+    pkgs.gdb
+    haskellPackages.ghcid
+    haskellPackages.cabal2nix
+    haskellPackages.cabal-install
+  ];
+in
+pkgs.stdenv.mkDerivation {
+  name = "env";
+  buildInputs = nixPackages;
+}