mirror of
https://github.com/NixOS/nix
synced 2025-06-28 01:11:15 +02:00
* Implemented Eelco V.'s `-p' command to switch profiles. It switches
the symlink ~/.nix-userenv to the given argument (which defaults to .../links/current). /etc/profile.d/nix-profile creates this symlink if it doesn't exist yet. Example use: $ nix-env -l my_profile -i foo.nix subversion quake $ nix-env -p my_profile I don't like the term "profile". Let's deprecate it :-)
This commit is contained in:
parent
0e68af0ce3
commit
f83c5e3e5f
3 changed files with 33 additions and 18 deletions
|
@ -605,6 +605,26 @@ static void opQuery(Globals & globals,
|
|||
}
|
||||
|
||||
|
||||
static void opSwitchProfile(Globals & globals,
|
||||
Strings opFlags, Strings opArgs)
|
||||
{
|
||||
if (opFlags.size() > 0)
|
||||
throw UsageError(format("unknown flags `%1%'") % opFlags.front());
|
||||
if (opArgs.size() > 1)
|
||||
throw UsageError(format("--profile takes at most one argument"));
|
||||
|
||||
string linkPath =
|
||||
opArgs.size() == 0 ? globals.linkPath : opArgs.front();
|
||||
|
||||
string homeDir(getenv("HOME"));
|
||||
if (homeDir == "") throw Error("HOME environment variable not set");
|
||||
|
||||
string linkPathFinal = homeDir + "/.nix-userenv";
|
||||
|
||||
switchLink(linkPathFinal, linkPath);
|
||||
}
|
||||
|
||||
|
||||
void run(Strings args)
|
||||
{
|
||||
/* Use a higher default verbosity (lvlInfo). */
|
||||
|
@ -635,6 +655,8 @@ void run(Strings args)
|
|||
format("`%1%' requires an argument") % arg);
|
||||
globals.linkPath = absPath(*i);
|
||||
}
|
||||
else if (arg == "--profile" || arg == "-p")
|
||||
op = opSwitchProfile;
|
||||
else if (arg[0] == '-')
|
||||
opFlags.push_back(arg);
|
||||
else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue