diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 71193b8bb264a14f4e92c508be62c19bb137b725..a84669553e5d342aac4ea0fe2440f56fa2fabb45 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -110,10 +110,9 @@ build-9.0:
     - nix run -f ./ci -c curl -L "$GHC_TARBALL" > ghc.tar.xz
     - |
       nix build \
-      -f https://github.com/mpickering/ghc-artefact-nix/archive/master.tar.gz \
-      --arg url ./ghc.tar.xz \
-      --out-link ghc \
-      ghcHEAD
+      -f ci/ghc-from-artifact.nix \
+      --arg ghcTarball ./ghc.tar.xz \
+      --out-link ghc
     - export GHC=`pwd`/ghc/bin/ghc
     - rm -Rf $HOME/.cabal/packages/local ci/run
       # Build CI executable
diff --git a/ci/ghc-from-artifact.nix b/ci/ghc-from-artifact.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2357bb98dc2b2b3fb53fdac107537b226e2bc2e0
--- /dev/null
+++ b/ci/ghc-from-artifact.nix
@@ -0,0 +1,21 @@
+let
+  sources = import ./nix/sources.nix;
+  nixpkgs = import sources.nixpkgs {};
+in
+
+{ ghcTarball }:
+let
+  nixpkgsSrc = sources.nixpkgs;
+  ghc-artefact-nix =
+    let
+      src = nixpkgs.fetchFromGitHub {
+        owner = "mpickering";
+        repo = "ghc-artefact-nix";
+        rev = "5da00a2f9411f15a7e0cbacc0ad94ff4ffa195d7";
+        sha256 = "sha256:1ab2hc893vlsclddqyvw3yrhg33sn7pjckl2v8yi67d2jwc9zygn";
+      };
+    in import src {
+      url = ghcTarball;
+      nixpkgsSrc = sources.nixpkgs;
+    };
+in ghc-artefact-nix.ghcHEAD