]> gitweb.factorcode.org Git - factor.git/blobdiff - shell.nix
shell.nix: supply `wrapFactor` helper to make standalone factor binary
[factor.git] / shell.nix
index e1576d3cb12102e8967a62ebfe9f1922e51d559c..b9d4a136b0a5de7de38a88be1e78bbe29c878359 100644 (file)
--- a/shell.nix
+++ b/shell.nix
@@ -15,13 +15,25 @@ let
     udis86 # available since NixOS 19.09
     openal
   ];
+  runtimeLibPath = lib.makeLibraryPath runtimeLibs;
 in
 (mkClangShell {
   name = "factor-shell-env";
-  LD_LIBRARY_PATH = "/run/opengl-driver/lib:${lib.makeLibraryPath runtimeLibs}" ;
+  LD_LIBRARY_PATH = "/run/opengl-driver/lib:${runtimeLibPath}" ;
   buildInputs = runtimeLibs ++ [
     # for building factor
     git
     curl
+    makeWrapper
   ];
+  shellHook = ''
+    wrapFactor () {
+    [ -n "$1" ] || { printf "Usage: wrapFactor <factor-root>" ; return; }
+    local root="$(realpath $1)"
+    local binary="''${root}/factor"
+    wrapProgram "$binary" --prefix LD_LIBRARY_PATH : ${runtimeLibPath} \
+      --argv0 factor
+    ln -sf "''${root}/factor.image" "''${root}/.factor-wrapped.image"
+    }
+  '';
 })