61 lines
1.8 KiB
Nix
61 lines
1.8 KiB
Nix
{
|
|
pkgs,
|
|
stdenv ? pkgs.stdenv,
|
|
packages ? [ ],
|
|
shellHook ? "",
|
|
...
|
|
}@vars:
|
|
let
|
|
lib = pkgs.lib;
|
|
cleanVars = lib.removeAttrs vars [
|
|
"pkgs"
|
|
"packages"
|
|
"shellHook"
|
|
"stdenv"
|
|
];
|
|
exported = lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: "export ${n}=${v}") cleanVars);
|
|
script = ''
|
|
#! /usr/bin/env bash
|
|
${exported}
|
|
${shellHook}
|
|
'';
|
|
in
|
|
stdenv.mkDerivation {
|
|
name = "cass-shell";
|
|
preferLocalBuild = true;
|
|
|
|
nativeBuildInputs =
|
|
with pkgs;
|
|
[
|
|
coreutils
|
|
]
|
|
++ packages;
|
|
|
|
buildCommand = ''
|
|
# unset all nix-related variables
|
|
unset SHELL configureFlags mesonFlags shell depsHostHost STRINGS depsTargetTarget stdenv \
|
|
builder PWD SOURCE_DATE_EPOCH enableParallelInstalling CXX TEMPDIR system HOST_PATH \
|
|
enableParallelBuilding doInstallCheck buildCommandPath enableParallelChecking LS_COLORS \
|
|
depsTargetTargetPropagated cmakeFlakes outputs TMPDIR LD READELF doCheck \
|
|
depsBuildBuild SIZE propagatedNativeBuildInputs strictDeps AR AS TEMP SHLVL NM \
|
|
patches passAsFile buildInputs SSL_CERT_FILE depsBuildTarget OBJCOPY STRIP TMP OBJDUMP propagatedBuildInputs \
|
|
CC __ETC_PROFILE_SOURCED depsBuildTargetPropagated depsBuildBuildPropagated CONFIG_SHELL __structuredAttrs \
|
|
RANLIB nativeBuildInputs name depsHostHostPropagated TEST TZ HOME GZIP_NO_TIMESTAMPS \
|
|
cmakeFlags TERM buildCommand preferLocalBuild _
|
|
unset "''${!NIX_@}"
|
|
# create export commands for the rest
|
|
envs="$(env | sed 's/^/export /' -)"
|
|
# assemble script
|
|
printf '${script}' > $out
|
|
echo "$envs" >> $out
|
|
echo 'exec $SHELL' >> $out
|
|
# required here
|
|
sed -i 's/^export out=.*$//' $out
|
|
# inserted by env cmd
|
|
sed -i 's/^export _=.*$//' $out
|
|
# append to user's current path
|
|
sed -i '/^export PATH=/ s/$/:\$PATH/' $out
|
|
chmod +x $out
|
|
'';
|
|
|
|
}
|