diff --git a/nix/default.nix b/nix/default.nix
index aee52baff74e634345097c5a253d97140ef3ec70..5743fed468252189916d5fa0207ca633c1181aa7 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -10,22 +10,22 @@ let
          rev = "0f0b14258be090303c5013c2e29234040fa9766c";
          sha256 = "0srpsnr5fhn2zp36jx3inj6vrs5n302hh3vv0c7rsc90aq5i27cr";
      }) {};
-     mk_framac_clang = { name, llvmPackages, llvm } :
-       plugins.helpers.simple_plugin
-         { inherit pkgs stdenv src opam2nix ocaml_version plugins name;
-           deps = [ llvmPackages.clang-unwrapped llvm pkgs.gnused ];
-           opamPackages = [ "camlp5" ];
-           preFramaCTests = ''
-             echo CONFIGURING Why3 for Frama_Clang.
-             export HOME=$(mktemp -d)
-             why3 config --detect
-           '';
-         }    
-     ;
 in
-(mk_framac_clang { name = "frama-clang-on-llvm-9";
-                   llvmPackages = unstablePckgs.llvmPackages_9;
-                   llvm = unstablePckgs.llvm_9; }) //
-    { on-llvm10 = (mk_framac_clang { name = "frama-clang-on-llvm-10";
-                                     llvmPackages = unstablePckgs.llvmPackages_10;
-                                     llvm = unstablePckgs.llvm_10; }); }
+let frama_clang_build { llvm_version, llvm_package } :
+(plugins.helpers.simple_plugin
+   { inherit pkgs stdenv src opam2nix ocaml_version plugins;
+     name = "frama-clang-on-llvm-" + llvm_version;
+     deps = [ llvm_package.clang-unwrapped llvm_package pkgs.gnused ];
+     opamPackages = [ "camlp5" ];
+     preFramaCTests = ''
+       echo CONFIGURING Why3 for Frama_Clang.
+       export HOME=$(mktemp -d)
+       why3 config --detect
+     '';
+   });
+in
+(frama_clang_build { llvm_version="9"; llvm_package = unstablePckgs.llvm_9 })
+//
+{ on-llvm10 =
+    (frama_clang_build
+      { llvm_version="10"; llvm_package = unstablePckgs.llvm_10});}