diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 87d65d5591a26341fecf9f5c8e2e77512a365b82..7e14dfd7ff3072248ca5b9b640d5a926663f0df3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -92,6 +92,13 @@ volatile:
   tags:
    - nix
 
+metacsl:
+  stage: tests
+  script:
+  - nix/frama-ci.sh build -A meta.tests
+  tags:
+  - nix
+
 Security:
   stage: tests
   script:
diff --git a/nix/default.nix b/nix/default.nix
index fdce398cfe5fadaca673a976eb8bb381dec43ffa..610b886c089a9da73b709082f2bde0900ac13421 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -214,7 +214,9 @@ rec {
         inherit src;
         buildInputs = (mk_buildInputs { opamPackages = [ "xml-light" ]; } ) ++
                     [ pkgs.getopt
-                      pkgs.libxslt pkgs.libxml2 pkgs.autoPatchelfHook stdenv.cc.cc.lib
+                      pkgs.libxslt pkgs.libxml2 pkgs.autoPatchelfHook
+                      pkgs.swiProlog
+                      stdenv.cc.cc.lib
         ];
         counter_examples_src = plugins.counter-examples.src;
         genassigns_src = plugins.genassigns.src;
@@ -226,6 +228,7 @@ rec {
         volatile_src = plugins.volatile.src;
         security_src = plugins.security.src;
         context_from_precondition_src = plugins.context-from-precondition.src;
+        metacsl_src = plugins.meta.src;
         postPatch = ''
                patchShebangs .
         '';
diff --git a/nix/frama-ci.nix b/nix/frama-ci.nix
index e093574991eec97d4c896c33edf17c28d543b5cf..6522675d3f51defaa8f4269181bc679dad3f097e 100644
--- a/nix/frama-ci.nix
+++ b/nix/frama-ci.nix
@@ -5,8 +5,8 @@ let
     src = builtins.fetchGit {
             "url" = "https://bobot:${password}@git.frama-c.com/frama-c/Frama-CI.git";
             "name" = "Frama-CI";
-            "rev" = "abf07b7c0f53b33b32c8b170580e14480fd3aba6";
-            "ref" = "master";
+            "rev" = "58e51d3a0811dc7641781ec9784e4bd52e33a3a5";
+            "ref" = "feature/nix/add_ci_to_metacsl";
     };
  in
  {