30 lines
571 B
Nix
30 lines
571 B
Nix
{ lib, writeText, buildEnv }:
|
|
|
|
{ name ? "dev-env"
|
|
, # Environment variables to set
|
|
env ? { }
|
|
, # Packages to add to the path
|
|
paths ? [ ]
|
|
}:
|
|
let
|
|
envToBash = name: value:
|
|
"export ${name}=${lib.escapeShellArg (toString value)}"
|
|
;
|
|
|
|
exports = lib.concatStringsSep "\n"
|
|
(map (name: envToBash name env.${name}) (lib.attrNames env));
|
|
|
|
env-root = writeText "env-root" ''
|
|
export PATH=@env-root@/bin:$PATH
|
|
|
|
${exports}
|
|
'';
|
|
in
|
|
buildEnv {
|
|
inherit name;
|
|
paths = paths;
|
|
postBuild = ''
|
|
sed "s|@env-root@|$out|g" ${env-root} > $out/.profile
|
|
'';
|
|
}
|