diff --git a/README.md b/README.md
index da9675b..672de96 100644
--- a/README.md
+++ b/README.md
@@ -96,7 +96,7 @@ log the size of the input, but _not_ the full input/output of requests.)
 
 - via `nix`:
     ~~~.sh
-    nix build  # or 'nix-build'
+    nix build -f release.nix     # or 'nix-build -f release.nix'
     nix-env -i ./result
     ~~~
 
diff --git a/default.nix b/default.nix
index 5c0ccfe..296987a 100644
--- a/default.nix
+++ b/default.nix
@@ -1,13 +1,38 @@
-{ pkgs ? import (fetchGit (import ./pkgs.nix)) {}
-, compiler ? "ghc822"
+{ mkDerivation, aeson, base, butcher, bytestring, cmdargs
+, containers, czipwith, data-tree-print, deepseq, directory, extra
+, filepath, ghc, ghc-boot-th, ghc-exactprint, ghc-paths, hspec
+, monad-memo, mtl, multistate, neat-interpolation, parsec, pretty
+, random, safe, semigroups, stdenv, strict, syb, text, transformers
+, uniplate, unsafe, yaml
 }:
-
-pkgs.haskell.packages.${compiler}.developPackage {
-  root = ./.;
-  name = "brittany";
-  overrides = with pkgs.haskell.lib; self: super: {
-  };
-  source-overrides = {
-    ghc-exactprint = "0.5.8.0";
-  };
+mkDerivation {
+  pname = "brittany";
+  version = "0.11.0.0";
+  src = ./.;
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    aeson base butcher bytestring cmdargs containers czipwith
+    data-tree-print deepseq directory extra filepath ghc ghc-boot-th
+    ghc-exactprint ghc-paths monad-memo mtl multistate
+    neat-interpolation pretty random safe semigroups strict syb text
+    transformers uniplate unsafe yaml
+  ];
+  executableHaskellDepends = [
+    aeson base butcher bytestring cmdargs containers czipwith
+    data-tree-print deepseq directory extra filepath ghc ghc-boot-th
+    ghc-exactprint ghc-paths monad-memo mtl multistate
+    neat-interpolation pretty safe semigroups strict syb text
+    transformers uniplate unsafe yaml
+  ];
+  testHaskellDepends = [
+    aeson base butcher bytestring cmdargs containers czipwith
+    data-tree-print deepseq directory extra filepath ghc ghc-boot-th
+    ghc-exactprint ghc-paths hspec monad-memo mtl multistate
+    neat-interpolation parsec pretty safe semigroups strict syb text
+    transformers uniplate unsafe yaml
+  ];
+  homepage = "https://github.com/lspitzner/brittany/";
+  description = "Haskell source code formatter";
+  license = stdenv.lib.licenses.agpl3;
 }
diff --git a/release.nix b/release.nix
new file mode 100644
index 0000000..b37b2ce
--- /dev/null
+++ b/release.nix
@@ -0,0 +1,5 @@
+{ pkgs ? import (fetchGit (import ./pkgs.nix)) {}
+, compiler ? "ghc822"
+}:
+
+pkgs.haskell.packages.${compiler}.callPackage ./shell.nix {}
diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000..5c0ccfe
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,13 @@
+{ pkgs ? import (fetchGit (import ./pkgs.nix)) {}
+, compiler ? "ghc822"
+}:
+
+pkgs.haskell.packages.${compiler}.developPackage {
+  root = ./.;
+  name = "brittany";
+  overrides = with pkgs.haskell.lib; self: super: {
+  };
+  source-overrides = {
+    ghc-exactprint = "0.5.8.0";
+  };
+}