mirror of
https://github.com/NixOS/nix
synced 2025-06-24 18:01:16 +02:00
Merge pull request #13224 from NixOS/nix-profile-add
Rename `nix profile install` to `nix profile add`
This commit is contained in:
commit
e22142e11a
7 changed files with 86 additions and 75 deletions
|
@ -246,11 +246,11 @@ nix3_manpages = [
|
|||
'nix3-nar',
|
||||
'nix3-path-info',
|
||||
'nix3-print-dev-env',
|
||||
'nix3-profile',
|
||||
'nix3-profile-add',
|
||||
'nix3-profile-diff-closures',
|
||||
'nix3-profile-history',
|
||||
'nix3-profile-install',
|
||||
'nix3-profile-list',
|
||||
'nix3-profile',
|
||||
'nix3-profile-remove',
|
||||
'nix3-profile-rollback',
|
||||
'nix3-profile-upgrade',
|
||||
|
|
6
doc/manual/rl-next/nix-profile-add.md
Normal file
6
doc/manual/rl-next/nix-profile-add.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
synopsis: "Rename `nix profile install` to `nix profile add`"
|
||||
prs: [13224]
|
||||
---
|
||||
|
||||
The command `nix profile install` has been renamed to `nix profile add` (though the former is still available as an alias). This is because the verb "add" is a better antonym for the verb "remove" (i.e. `nix profile remove`). Nix also does not have install hooks or general behavior often associated with "installing".
|
|
@ -849,7 +849,7 @@ RawInstallablesCommand::RawInstallablesCommand()
|
|||
void RawInstallablesCommand::applyDefaultInstallables(std::vector<std::string> & rawInstallables)
|
||||
{
|
||||
if (rawInstallables.empty()) {
|
||||
// FIXME: commands like "nix profile install" should not have a
|
||||
// FIXME: commands like "nix profile add" should not have a
|
||||
// default, probably.
|
||||
rawInstallables.push_back(".");
|
||||
}
|
||||
|
|
37
src/nix/profile-add.md
Normal file
37
src/nix/profile-add.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
R""(
|
||||
|
||||
# Examples
|
||||
|
||||
- Add a package from Nixpkgs:
|
||||
|
||||
```console
|
||||
# nix profile add nixpkgs#hello
|
||||
```
|
||||
|
||||
- Add a package from a specific branch of Nixpkgs:
|
||||
|
||||
```console
|
||||
# nix profile add nixpkgs/release-20.09#hello
|
||||
```
|
||||
|
||||
- Add a package from a specific revision of Nixpkgs:
|
||||
|
||||
```console
|
||||
# nix profile add nixpkgs/d73407e8e6002646acfdef0e39ace088bacc83da#hello
|
||||
```
|
||||
|
||||
- Add a specific output of a package:
|
||||
|
||||
```console
|
||||
# nix profile add nixpkgs#bash^man
|
||||
```
|
||||
|
||||
# Description
|
||||
|
||||
This command adds [_installables_](./nix.md#installables) to a Nix profile.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> `nix profile install` is an alias for `nix profile add`.
|
||||
|
||||
)""
|
|
@ -1,34 +0,0 @@
|
|||
R""(
|
||||
|
||||
# Examples
|
||||
|
||||
* Install a package from Nixpkgs:
|
||||
|
||||
```console
|
||||
# nix profile install nixpkgs#hello
|
||||
```
|
||||
|
||||
* Install a package from a specific branch of Nixpkgs:
|
||||
|
||||
```console
|
||||
# nix profile install nixpkgs/release-20.09#hello
|
||||
```
|
||||
|
||||
* Install a package from a specific revision of Nixpkgs:
|
||||
|
||||
```console
|
||||
# nix profile install nixpkgs/d73407e8e6002646acfdef0e39ace088bacc83da#hello
|
||||
```
|
||||
|
||||
* Install a specific output of a package:
|
||||
|
||||
```console
|
||||
# nix profile install nixpkgs#bash^man
|
||||
```
|
||||
|
||||
|
||||
# Description
|
||||
|
||||
This command adds [*installables*](./nix.md#installables) to a Nix profile.
|
||||
|
||||
)""
|
|
@ -338,14 +338,14 @@ builtPathsPerInstallable(
|
|||
return res;
|
||||
}
|
||||
|
||||
struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
||||
struct CmdProfileAdd : InstallablesCommand, MixDefaultProfile
|
||||
{
|
||||
std::optional<int64_t> priority;
|
||||
|
||||
CmdProfileInstall() {
|
||||
CmdProfileAdd() {
|
||||
addFlag({
|
||||
.longName = "priority",
|
||||
.description = "The priority of the package to install.",
|
||||
.description = "The priority of the package to add.",
|
||||
.labels = {"priority"},
|
||||
.handler = {&priority},
|
||||
});
|
||||
|
@ -353,13 +353,13 @@ struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
|||
|
||||
std::string description() override
|
||||
{
|
||||
return "install a package into a profile";
|
||||
return "add a package to a profile";
|
||||
}
|
||||
|
||||
std::string doc() override
|
||||
{
|
||||
return
|
||||
#include "profile-install.md"
|
||||
#include "profile-add.md"
|
||||
;
|
||||
}
|
||||
|
||||
|
@ -415,7 +415,7 @@ struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
|||
&& existingSource->originalRef == elementSource->originalRef
|
||||
&& existingSource->attrPath == elementSource->attrPath
|
||||
) {
|
||||
warn("'%s' is already installed", elementName);
|
||||
warn("'%s' is already added", elementName);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -462,15 +462,15 @@ struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
|||
"\n"
|
||||
" nix profile remove %3%\n"
|
||||
"\n"
|
||||
"The new package can also be installed next to the existing one by assigning a different priority.\n"
|
||||
"The new package can also be added next to the existing one by assigning a different priority.\n"
|
||||
"The conflicting packages have a priority of %5%.\n"
|
||||
"To prioritise the new package:\n"
|
||||
"\n"
|
||||
" nix profile install %4% --priority %6%\n"
|
||||
" nix profile add %4% --priority %6%\n"
|
||||
"\n"
|
||||
"To prioritise the existing package:\n"
|
||||
"\n"
|
||||
" nix profile install %4% --priority %7%\n",
|
||||
" nix profile add %4% --priority %7%\n",
|
||||
originalConflictingFilePath,
|
||||
newConflictingFilePath,
|
||||
originalEntryName,
|
||||
|
@ -708,16 +708,14 @@ struct CmdProfileUpgrade : virtual SourceExprCommand, MixDefaultProfile, MixProf
|
|||
|
||||
if (!element.source) {
|
||||
warn(
|
||||
"Found package '%s', but it was not installed from a flake, so it can't be checked for upgrades!",
|
||||
element.identifier()
|
||||
);
|
||||
"Found package '%s', but it was not added from a flake, so it can't be checked for upgrades!",
|
||||
element.identifier());
|
||||
continue;
|
||||
}
|
||||
if (element.source->originalRef.input.isLocked()) {
|
||||
warn(
|
||||
"Found package '%s', but it was installed from a locked flake reference so it can't be upgraded!",
|
||||
element.identifier()
|
||||
);
|
||||
"Found package '%s', but it was added from a locked flake reference so it can't be upgraded!",
|
||||
element.identifier());
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -787,7 +785,7 @@ struct CmdProfileList : virtual EvalCommand, virtual StoreCommand, MixDefaultPro
|
|||
{
|
||||
std::string description() override
|
||||
{
|
||||
return "list installed packages";
|
||||
return "list packages in the profile";
|
||||
}
|
||||
|
||||
std::string doc() override
|
||||
|
@ -978,7 +976,7 @@ struct CmdProfile : NixMultiCommand
|
|||
: NixMultiCommand(
|
||||
"profile",
|
||||
{
|
||||
{"install", []() { return make_ref<CmdProfileInstall>(); }},
|
||||
{"add", []() { return make_ref<CmdProfileAdd>(); }},
|
||||
{"remove", []() { return make_ref<CmdProfileRemove>(); }},
|
||||
{"upgrade", []() { return make_ref<CmdProfileUpgrade>(); }},
|
||||
{"list", []() { return make_ref<CmdProfileList>(); }},
|
||||
|
@ -987,7 +985,11 @@ struct CmdProfile : NixMultiCommand
|
|||
{"rollback", []() { return make_ref<CmdProfileRollback>(); }},
|
||||
{"wipe-history", []() { return make_ref<CmdProfileWipeHistory>(); }},
|
||||
})
|
||||
{ }
|
||||
{
|
||||
aliases = {
|
||||
{"install", { AliasStatus::Deprecated, {"add"}}},
|
||||
};
|
||||
}
|
||||
|
||||
std::string description() override
|
||||
{
|
||||
|
|
|
@ -52,7 +52,7 @@ cp "${config_nix}" $flake1Dir/
|
|||
# Test upgrading from nix-env.
|
||||
nix-env -f ./user-envs.nix -i foo-1.0
|
||||
nix profile list | grep -A2 'Name:.*foo' | grep 'Store paths:.*foo-1.0'
|
||||
nix profile install $flake1Dir -L
|
||||
nix profile add $flake1Dir -L
|
||||
nix profile list | grep -A4 'Name:.*flake1' | grep 'Locked flake URL:.*narHash'
|
||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
||||
[ -e $TEST_HOME/.nix-profile/share/man ]
|
||||
|
@ -64,12 +64,12 @@ nix profile diff-closures | grep 'env-manifest.nix: ε → ∅'
|
|||
# Test XDG Base Directories support
|
||||
export NIX_CONFIG="use-xdg-base-directories = true"
|
||||
nix profile remove flake1 2>&1 | grep 'removed 1 packages'
|
||||
nix profile install $flake1Dir
|
||||
nix profile add $flake1Dir
|
||||
[[ $($TEST_HOME/.local/state/nix/profile/bin/hello) = "Hello World" ]]
|
||||
unset NIX_CONFIG
|
||||
|
||||
# Test conflicting package install.
|
||||
nix profile install $flake1Dir 2>&1 | grep "warning: 'flake1' is already installed"
|
||||
# Test conflicting package add.
|
||||
nix profile add $flake1Dir 2>&1 | grep "warning: 'flake1' is already added"
|
||||
|
||||
# Test upgrading a package.
|
||||
printf NixOS > $flake1Dir/who
|
||||
|
@ -132,16 +132,16 @@ nix profile history | grep 'foo: 1.0 -> ∅'
|
|||
nix profile diff-closures | grep 'Version 3 -> 4'
|
||||
|
||||
# Test installing a non-flake package.
|
||||
nix profile install --file ./simple.nix ''
|
||||
nix profile add --file ./simple.nix ''
|
||||
[[ $(cat $TEST_HOME/.nix-profile/hello) = "Hello World!" ]]
|
||||
nix profile remove simple 2>&1 | grep 'removed 1 packages'
|
||||
nix profile install $(nix-build --no-out-link ./simple.nix)
|
||||
nix profile add $(nix-build --no-out-link ./simple.nix)
|
||||
[[ $(cat $TEST_HOME/.nix-profile/hello) = "Hello World!" ]]
|
||||
|
||||
# Test packages with same name from different sources
|
||||
mkdir $TEST_ROOT/simple-too
|
||||
cp ./simple.nix "${config_nix}" simple.builder.sh $TEST_ROOT/simple-too
|
||||
nix profile install --file $TEST_ROOT/simple-too/simple.nix ''
|
||||
nix profile add --file $TEST_ROOT/simple-too/simple.nix ''
|
||||
nix profile list | grep -A4 'Name:.*simple' | grep 'Name:.*simple-1'
|
||||
nix profile remove simple 2>&1 | grep 'removed 1 packages'
|
||||
nix profile remove simple-1 2>&1 | grep 'removed 1 packages'
|
||||
|
@ -160,13 +160,13 @@ nix profile history | grep "packages.$system.default: 1.0, 1.0-man -> 3.0, 3.0-m
|
|||
nix profile remove flake1 2>&1 | grep 'removed 1 packages'
|
||||
printf 4.0 > $flake1Dir/version
|
||||
printf Utrecht > $flake1Dir/who
|
||||
nix profile install $flake1Dir
|
||||
nix profile add $flake1Dir
|
||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello Utrecht" ]]
|
||||
[[ $(nix path-info --json $(realpath $TEST_HOME/.nix-profile/bin/hello) | jq -r .[].ca) =~ fixed:r:sha256: ]]
|
||||
|
||||
# Override the outputs.
|
||||
nix profile remove simple flake1
|
||||
nix profile install "$flake1Dir^*"
|
||||
nix profile add "$flake1Dir^*"
|
||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello Utrecht" ]]
|
||||
[ -e $TEST_HOME/.nix-profile/share/man ]
|
||||
[ -e $TEST_HOME/.nix-profile/include ]
|
||||
|
@ -179,7 +179,7 @@ nix profile upgrade flake1
|
|||
[ -e $TEST_HOME/.nix-profile/include ]
|
||||
|
||||
nix profile remove flake1 2>&1 | grep 'removed 1 packages'
|
||||
nix profile install "$flake1Dir^man"
|
||||
nix profile add "$flake1Dir^man"
|
||||
(! [ -e $TEST_HOME/.nix-profile/bin/hello ])
|
||||
[ -e $TEST_HOME/.nix-profile/share/man ]
|
||||
(! [ -e $TEST_HOME/.nix-profile/include ])
|
||||
|
@ -193,9 +193,9 @@ printf World > $flake1Dir/who
|
|||
cp -r $flake1Dir $flake2Dir
|
||||
printf World2 > $flake2Dir/who
|
||||
|
||||
nix profile install $flake1Dir
|
||||
nix profile add $flake1Dir
|
||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
||||
expect 1 nix profile install $flake2Dir
|
||||
expect 1 nix profile add $flake2Dir
|
||||
diff -u <(
|
||||
nix --offline profile install $flake2Dir 2>&1 1> /dev/null \
|
||||
| grep -vE "^warning: " \
|
||||
|
@ -214,31 +214,31 @@ error: An existing package already provides the following file:
|
|||
|
||||
nix profile remove flake1
|
||||
|
||||
The new package can also be installed next to the existing one by assigning a different priority.
|
||||
The new package can also be added next to the existing one by assigning a different priority.
|
||||
The conflicting packages have a priority of 5.
|
||||
To prioritise the new package:
|
||||
|
||||
nix profile install path:${flake2Dir}#packages.${system}.default --priority 4
|
||||
nix profile add path:${flake2Dir}#packages.${system}.default --priority 4
|
||||
|
||||
To prioritise the existing package:
|
||||
|
||||
nix profile install path:${flake2Dir}#packages.${system}.default --priority 6
|
||||
nix profile add path:${flake2Dir}#packages.${system}.default --priority 6
|
||||
EOF
|
||||
)
|
||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
||||
nix profile install $flake2Dir --priority 100
|
||||
nix profile add $flake2Dir --priority 100
|
||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
||||
nix profile install $flake2Dir --priority 0
|
||||
nix profile add $flake2Dir --priority 0
|
||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World2" ]]
|
||||
# nix profile install $flake1Dir --priority 100
|
||||
# nix profile add $flake1Dir --priority 100
|
||||
# [[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
||||
|
||||
# Ensure that conflicts are handled properly even when the installables aren't
|
||||
# flake references.
|
||||
# Regression test for https://github.com/NixOS/nix/issues/8284
|
||||
clearProfiles
|
||||
nix profile install $(nix build $flake1Dir --no-link --print-out-paths)
|
||||
expect 1 nix profile install --impure --expr "(builtins.getFlake ''$flake2Dir'').packages.$system.default"
|
||||
nix profile add $(nix build $flake1Dir --no-link --print-out-paths)
|
||||
expect 1 nix profile add --impure --expr "(builtins.getFlake ''$flake2Dir'').packages.$system.default"
|
||||
|
||||
# Test upgrading from profile version 2.
|
||||
clearProfiles
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue