diff --git a/nixos/layers/dev-haskell.nix b/nixos/layers/dev-haskell.nix
index 8bfe8a6102f1587853143d052d8a79aa82dac349..a83aaac6d08016f99e79eb53d546dcb2cb0c0530 100644
--- a/nixos/layers/dev-haskell.nix
+++ b/nixos/layers/dev-haskell.nix
@@ -1,18 +1,8 @@
 { pkgs, ... }:
 
-let
-  all-hies-repo = pkgs.fetchFromGitHub {
-    owner = "infinisil";
-    repo = "all-hies";
-    rev = "0cba12ce4df375766dd183b4beebdee7d8e36e12";
-    sha256 = "1f91nrksr2x0zi2kbsy6qf4fmb1ybpx9p55rijhhs05rssk4b0nq";
-  };
-  all-hies = import all-hies-repo {};
-
-in
 {
   environment.systemPackages = with pkgs; [
     stack
-    all-hies.latest
+    haskell-ide-engine
   ];
 }
diff --git a/nixos/pkgs/default.nix b/nixos/pkgs/default.nix
index e0de960eb8b79db333ef21fb47441b1cb8442cfc..3fba7c2c940f3855f3edc3269205c253f1814964 100644
--- a/nixos/pkgs/default.nix
+++ b/nixos/pkgs/default.nix
@@ -8,6 +8,7 @@ let
     # e.g.:
     #mypkg = haskell.packages.ghc865.callPackage ./mypkg { };
     dotnet-sdk = callPackage ./dotnet-sdk { };
+    haskell-ide-engine = (import ./haskell-ide-engine { inherit pkgs; }).haskell-ide-engine;
   };
 
 in newpkgs
diff --git a/nixos/pkgs/haskell-ide-engine/all-hies.json b/nixos/pkgs/haskell-ide-engine/all-hies.json
new file mode 100644
index 0000000000000000000000000000000000000000..0ce99b32a141c795f3872a925deef26ec2b60a9a
--- /dev/null
+++ b/nixos/pkgs/haskell-ide-engine/all-hies.json
@@ -0,0 +1,6 @@
+{
+    "owner": "Infinisil",
+    "repo": "all-hies",
+    "rev": "c4fad117eb79305f5b8bc77a6a28562a5f8d2ca3",
+    "sha256": "19spg5xnb1gdnxal4vp402dknfhbva5jj5yq34qyzvksyn16c3dp"
+}
\ No newline at end of file
diff --git a/nixos/pkgs/haskell-ide-engine/default.nix b/nixos/pkgs/haskell-ide-engine/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..cad40387d2775895fc7dd967f81fd40c4ab689e2
--- /dev/null
+++ b/nixos/pkgs/haskell-ide-engine/default.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }:
+
+let
+  all-hies-repo = pkgs.fetchFromGitHub (builtins.fromJSON (builtins.readFile ./all-hies.json));
+  all-hies = import all-hies-repo {};
+in
+{
+  haskell-ide-engine = all-hies.latest;
+}
\ No newline at end of file
diff --git a/nixos/pkgs/haskell-ide-engine/update b/nixos/pkgs/haskell-ide-engine/update
new file mode 100755
index 0000000000000000000000000000000000000000..2dbc7aa12caca6ea161ce30559afd88f67aeeb39
--- /dev/null
+++ b/nixos/pkgs/haskell-ide-engine/update
@@ -0,0 +1,4 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i zsh -p zsh nix-prefetch-github
+
+nix-prefetch-github Infinisil all-hies > all-hies.json