]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - flakes/openfoodnetwork/default.nix
WIP openfoodnetwork
[perso/Immae/Config/Nix.git] / flakes / openfoodnetwork / default.nix
diff --git a/flakes/openfoodnetwork/default.nix b/flakes/openfoodnetwork/default.nix
new file mode 100644 (file)
index 0000000..144d2de
--- /dev/null
@@ -0,0 +1,39 @@
+{ pkgs ? import <nixpkgs> {} }:
+
+let
+  gems = pkgs.bundlerEnv {
+    name = "openfoodnetwork";
+    gemfile = ./Gemfile;
+    lockfile = ./Gemfile.lock;
+    gemset = import ./gemset.nix;
+    gemConfig = pkgs.defaultGemConfig // {
+      libv8-node = attrs: {
+        dontBuild = false;
+        postPatch = let
+          noopScript = pkgs.writeShellScript "noop" "exit 0";
+          linkFiles = pkgs.writeShellScript "link-files" ''
+            cd ../..
+
+            mkdir -p vendor/v8/out.gn/libv8/obj/
+            ln -s "${pkgs.v8}/lib/libv8.a" vendor/v8/out.gn/libv8/obj/libv8_monolith.a
+
+            ln -s ${pkgs.v8}/include vendor/v8/include
+
+            mkdir -p ext/libv8-node
+            echo '--- !ruby/object:Libv8::Node::Location::Vendor {}' >ext/libv8-node/.location.yml
+          '';
+        in ''
+            cp ${noopScript} libexec/build-libv8
+            cp ${noopScript} libexec/build-monolith
+            cp ${noopScript} libexec/download-node
+            cp ${noopScript} libexec/extract-node
+            cp ${linkFiles} libexec/inject-libv8
+          '';
+      };
+    };
+  };
+in
+  pkgs.stdenv.mkDerivation {
+    name = "openfoodnetwork";
+    inherit
+  }