summaryrefslogtreecommitdiff
path: root/hosts/ades/thin-shim.nix
blob: a9f931b63f7209dfda619b8e2ec5416dfb1632d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
'';
}