summaryrefslogtreecommitdiff
path: root/lib/thin-shim.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/thin-shim.nix')
-rw-r--r--lib/thin-shim.nix41
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/thin-shim.nix b/lib/thin-shim.nix
new file mode 100644
index 0000000..a9f931b
--- /dev/null
+++ b/lib/thin-shim.nix
@@ -0,0 +1,41 @@
+pkgs:
+let
+ inherit (builtins)
+ map elem;
+
+ inherit (pkgs) stdenv;
+in
+pkg: inst:
+stdenv.mkDerivation {
+ pname = pkg.pname + "-shim";
+ version = pkg.version;
+ nativeBuildInputs = [pkg];
+ dontUnpack = true;
+ buildPhase = ''
+if [ -d ${pkg}/bin ]; then
+ mkdir -p "$out/bin"
+ for exe in $(ls "${pkg}/bin/"); do
+ cat >"$out/bin/$exe" <<EOF
+#!/bin/sh
+
+term=urxvt
+which \$term >/dev/null 2>&1 || term=xterm
+
+if [ "\$DISPLAY" ]; then
+ \$term -e nix shell '${inst}' --command '$exe' \$*
+else
+ nix shell '${inst}' --command '$exe' \$*
+fi
+EOF
+ chmod +x "$out/bin/$exe"
+ done
+fi
+
+for dir in "share/applications" "share/icons"; do
+ if [ -d "${pkg}/$dir" ]; then
+ mkdir -p "$out/$dir"
+ cp -a "${pkg}/$dir/"* "$out/$dir"
+ fi
+done
+'';
+}