summaryrefslogtreecommitdiff
path: root/pkgs/persistent-nix-shell/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/persistent-nix-shell/default.nix')
-rw-r--r--pkgs/persistent-nix-shell/default.nix20
1 files changed, 20 insertions, 0 deletions
diff --git a/pkgs/persistent-nix-shell/default.nix b/pkgs/persistent-nix-shell/default.nix
new file mode 100644
index 0000000..8a74eb4
--- /dev/null
+++ b/pkgs/persistent-nix-shell/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, pkgs, ... }:
+
+pkgs.writeTextFile {
+ name = "persistent-nix-shell";
+ executable = true;
+ destination = "/bin/persistent-nix-shell";
+
+ text = ''
+ #!/bin/sh -eu
+
+ mkdir -p .gcroots
+
+ nix-instantiate shell.nix --indirect --add-root $PWD/.gcroots/shell.drv > /dev/null
+ nix-store -r $(nix-store --query --references $PWD/.gcroots/shell.drv) --indirect --add-root $PWD/.gcroots/shell.dep > /dev/null
+
+ # Fix to prevent implicit interactiveBash dependency
+ export NIX_BUILD_SHELL=/run/current-system/sw/bin/bash
+ exec nix-shell $(readlink $PWD/.gcroots/shell.drv) "$@"
+ '';
+}