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" </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 ''; }