summaryrefslogtreecommitdiff
path: root/pkgs/persistent-nix-shell
diff options
context:
space:
mode:
authorAdrian Kummerlaender2020-02-18 11:25:34 +0100
committerAdrian Kummerlaender2020-02-18 11:25:34 +0100
commit18d2edf330e6932c177e71b1c7831a7a5ad77e38 (patch)
tree6e5193103b12070249105d370432c5f84f72961a /pkgs/persistent-nix-shell
parent832b80a68a42ef3ee3f96b9d16c2c37376ed023b (diff)
downloadpkgs-18d2edf330e6932c177e71b1c7831a7a5ad77e38.tar
pkgs-18d2edf330e6932c177e71b1c7831a7a5ad77e38.tar.gz
pkgs-18d2edf330e6932c177e71b1c7831a7a5ad77e38.tar.bz2
pkgs-18d2edf330e6932c177e71b1c7831a7a5ad77e38.tar.lz
pkgs-18d2edf330e6932c177e71b1c7831a7a5ad77e38.tar.xz
pkgs-18d2edf330e6932c177e71b1c7831a7a5ad77e38.tar.zst
pkgs-18d2edf330e6932c177e71b1c7831a7a5ad77e38.zip
Add plain persistent nix-shell wrapper
Automatically adds GC roots, including a fix for an implicit interactiveBash dependency
Diffstat (limited to 'pkgs/persistent-nix-shell')
-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) "$@"
+ '';
+}