This adds nix-run, which is a thin wrapper around nix-build.
nix-run calls nix-build, and then executes the resulting build.
If no executable artifact is built, nix-runs outputs an error
message.
myEnvRun calls myEnvFun and builds a script that directly runs
the load-env-* script.
Together, nix-run and myEnvRun allows you to set up an environment
that can be loaded in this way:
envs.nix:
{
gcc = myEnvRun {
name = "gcc";
buildInputs = [ gcc ];
};
}
$ nix-run -A gcc envs.nix
You end up directly in your environment without having to do
nix-env -i. You will always have a fresh environment and you
don't have to pollute you profile with a lot of env packages.
7 lines
164 B
Nix
7 lines
164 B
Nix
{ writeScript, bash, myEnvFun }: args:
|
|
|
|
let env = myEnvFun args; in writeScript "envrun-${args.name}" ''
|
|
#!${bash}/bin/bash
|
|
${env}/bin/load-env-${args.name}
|
|
''
|