mirror of
https://github.com/NixOS/nix
synced 2025-06-24 22:11:15 +02:00
Rename nix profile install
to nix profile add
.
This commit is contained in:
parent
e5e5c819dd
commit
b37d1cdd8e
5 changed files with 75 additions and 72 deletions
|
@ -849,7 +849,7 @@ RawInstallablesCommand::RawInstallablesCommand()
|
||||||
void RawInstallablesCommand::applyDefaultInstallables(std::vector<std::string> & rawInstallables)
|
void RawInstallablesCommand::applyDefaultInstallables(std::vector<std::string> & rawInstallables)
|
||||||
{
|
{
|
||||||
if (rawInstallables.empty()) {
|
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.
|
// default, probably.
|
||||||
rawInstallables.push_back(".");
|
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` in Determinate Nix.
|
||||||
|
|
||||||
|
)""
|
|
@ -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;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
struct CmdProfileAdd : InstallablesCommand, MixDefaultProfile
|
||||||
{
|
{
|
||||||
std::optional<int64_t> priority;
|
std::optional<int64_t> priority;
|
||||||
|
|
||||||
CmdProfileInstall() {
|
CmdProfileAdd() {
|
||||||
addFlag({
|
addFlag({
|
||||||
.longName = "priority",
|
.longName = "priority",
|
||||||
.description = "The priority of the package to install.",
|
.description = "The priority of the package to add.",
|
||||||
.labels = {"priority"},
|
.labels = {"priority"},
|
||||||
.handler = {&priority},
|
.handler = {&priority},
|
||||||
});
|
});
|
||||||
|
@ -353,13 +353,13 @@ struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "install a package into a profile";
|
return "add a package to a profile";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string doc() override
|
std::string doc() override
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
#include "profile-install.md"
|
#include "profile-add.md"
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -415,7 +415,7 @@ struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
||||||
&& existingSource->originalRef == elementSource->originalRef
|
&& existingSource->originalRef == elementSource->originalRef
|
||||||
&& existingSource->attrPath == elementSource->attrPath
|
&& existingSource->attrPath == elementSource->attrPath
|
||||||
) {
|
) {
|
||||||
warn("'%s' is already installed", elementName);
|
warn("'%s' is already added", elementName);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -462,15 +462,15 @@ struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
|
||||||
"\n"
|
"\n"
|
||||||
" nix profile remove %3%\n"
|
" nix profile remove %3%\n"
|
||||||
"\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"
|
"The conflicting packages have a priority of %5%.\n"
|
||||||
"To prioritise the new package:\n"
|
"To prioritise the new package:\n"
|
||||||
"\n"
|
"\n"
|
||||||
" nix profile install %4% --priority %6%\n"
|
" nix profile add %4% --priority %6%\n"
|
||||||
"\n"
|
"\n"
|
||||||
"To prioritise the existing package:\n"
|
"To prioritise the existing package:\n"
|
||||||
"\n"
|
"\n"
|
||||||
" nix profile install %4% --priority %7%\n",
|
" nix profile add %4% --priority %7%\n",
|
||||||
originalConflictingFilePath,
|
originalConflictingFilePath,
|
||||||
newConflictingFilePath,
|
newConflictingFilePath,
|
||||||
originalEntryName,
|
originalEntryName,
|
||||||
|
@ -708,16 +708,14 @@ struct CmdProfileUpgrade : virtual SourceExprCommand, MixDefaultProfile, MixProf
|
||||||
|
|
||||||
if (!element.source) {
|
if (!element.source) {
|
||||||
warn(
|
warn(
|
||||||
"Found package '%s', but it was not installed from a flake, so it can't be checked for upgrades!",
|
"Found package '%s', but it was not added from a flake, so it can't be checked for upgrades!",
|
||||||
element.identifier()
|
element.identifier());
|
||||||
);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (element.source->originalRef.input.isLocked()) {
|
if (element.source->originalRef.input.isLocked()) {
|
||||||
warn(
|
warn(
|
||||||
"Found package '%s', but it was installed from a locked flake reference so it can't be upgraded!",
|
"Found package '%s', but it was added from a locked flake reference so it can't be upgraded!",
|
||||||
element.identifier()
|
element.identifier());
|
||||||
);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -787,7 +785,7 @@ struct CmdProfileList : virtual EvalCommand, virtual StoreCommand, MixDefaultPro
|
||||||
{
|
{
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "list installed packages";
|
return "list packages in the profile";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string doc() override
|
std::string doc() override
|
||||||
|
@ -978,7 +976,7 @@ struct CmdProfile : NixMultiCommand
|
||||||
: NixMultiCommand(
|
: NixMultiCommand(
|
||||||
"profile",
|
"profile",
|
||||||
{
|
{
|
||||||
{"install", []() { return make_ref<CmdProfileInstall>(); }},
|
{"add", []() { return make_ref<CmdProfileAdd>(); }},
|
||||||
{"remove", []() { return make_ref<CmdProfileRemove>(); }},
|
{"remove", []() { return make_ref<CmdProfileRemove>(); }},
|
||||||
{"upgrade", []() { return make_ref<CmdProfileUpgrade>(); }},
|
{"upgrade", []() { return make_ref<CmdProfileUpgrade>(); }},
|
||||||
{"list", []() { return make_ref<CmdProfileList>(); }},
|
{"list", []() { return make_ref<CmdProfileList>(); }},
|
||||||
|
@ -986,6 +984,8 @@ struct CmdProfile : NixMultiCommand
|
||||||
{"history", []() { return make_ref<CmdProfileHistory>(); }},
|
{"history", []() { return make_ref<CmdProfileHistory>(); }},
|
||||||
{"rollback", []() { return make_ref<CmdProfileRollback>(); }},
|
{"rollback", []() { return make_ref<CmdProfileRollback>(); }},
|
||||||
{"wipe-history", []() { return make_ref<CmdProfileWipeHistory>(); }},
|
{"wipe-history", []() { return make_ref<CmdProfileWipeHistory>(); }},
|
||||||
|
// 2025-04-05 Deprecated in favor of "add"
|
||||||
|
{"install", []() { return make_ref<CmdProfileAdd>(); }},
|
||||||
})
|
})
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ cp "${config_nix}" $flake1Dir/
|
||||||
# Test upgrading from nix-env.
|
# Test upgrading from nix-env.
|
||||||
nix-env -f ./user-envs.nix -i foo-1.0
|
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 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'
|
nix profile list | grep -A4 'Name:.*flake1' | grep 'Locked flake URL:.*narHash'
|
||||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
||||||
[ -e $TEST_HOME/.nix-profile/share/man ]
|
[ -e $TEST_HOME/.nix-profile/share/man ]
|
||||||
|
@ -64,12 +64,12 @@ nix profile diff-closures | grep 'env-manifest.nix: ε → ∅'
|
||||||
# Test XDG Base Directories support
|
# Test XDG Base Directories support
|
||||||
export NIX_CONFIG="use-xdg-base-directories = true"
|
export NIX_CONFIG="use-xdg-base-directories = true"
|
||||||
nix profile remove flake1 2>&1 | grep 'removed 1 packages'
|
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" ]]
|
[[ $($TEST_HOME/.local/state/nix/profile/bin/hello) = "Hello World" ]]
|
||||||
unset NIX_CONFIG
|
unset NIX_CONFIG
|
||||||
|
|
||||||
# Test conflicting package install.
|
# Test conflicting package add.
|
||||||
nix profile install $flake1Dir 2>&1 | grep "warning: 'flake1' is already installed"
|
nix profile add $flake1Dir 2>&1 | grep "warning: 'flake1' is already added"
|
||||||
|
|
||||||
# Test upgrading a package.
|
# Test upgrading a package.
|
||||||
printf NixOS > $flake1Dir/who
|
printf NixOS > $flake1Dir/who
|
||||||
|
@ -132,16 +132,16 @@ nix profile history | grep 'foo: 1.0 -> ∅'
|
||||||
nix profile diff-closures | grep 'Version 3 -> 4'
|
nix profile diff-closures | grep 'Version 3 -> 4'
|
||||||
|
|
||||||
# Test installing a non-flake package.
|
# 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!" ]]
|
[[ $(cat $TEST_HOME/.nix-profile/hello) = "Hello World!" ]]
|
||||||
nix profile remove simple 2>&1 | grep 'removed 1 packages'
|
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!" ]]
|
[[ $(cat $TEST_HOME/.nix-profile/hello) = "Hello World!" ]]
|
||||||
|
|
||||||
# Test packages with same name from different sources
|
# Test packages with same name from different sources
|
||||||
mkdir $TEST_ROOT/simple-too
|
mkdir $TEST_ROOT/simple-too
|
||||||
cp ./simple.nix "${config_nix}" simple.builder.sh $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 list | grep -A4 'Name:.*simple' | grep 'Name:.*simple-1'
|
||||||
nix profile remove simple 2>&1 | grep 'removed 1 packages'
|
nix profile remove simple 2>&1 | grep 'removed 1 packages'
|
||||||
nix profile remove simple-1 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'
|
nix profile remove flake1 2>&1 | grep 'removed 1 packages'
|
||||||
printf 4.0 > $flake1Dir/version
|
printf 4.0 > $flake1Dir/version
|
||||||
printf Utrecht > $flake1Dir/who
|
printf Utrecht > $flake1Dir/who
|
||||||
nix profile install $flake1Dir
|
nix profile add $flake1Dir
|
||||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello Utrecht" ]]
|
[[ $($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: ]]
|
[[ $(nix path-info --json $(realpath $TEST_HOME/.nix-profile/bin/hello) | jq -r .[].ca) =~ fixed:r:sha256: ]]
|
||||||
|
|
||||||
# Override the outputs.
|
# Override the outputs.
|
||||||
nix profile remove simple flake1
|
nix profile remove simple flake1
|
||||||
nix profile install "$flake1Dir^*"
|
nix profile add "$flake1Dir^*"
|
||||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello Utrecht" ]]
|
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello Utrecht" ]]
|
||||||
[ -e $TEST_HOME/.nix-profile/share/man ]
|
[ -e $TEST_HOME/.nix-profile/share/man ]
|
||||||
[ -e $TEST_HOME/.nix-profile/include ]
|
[ -e $TEST_HOME/.nix-profile/include ]
|
||||||
|
@ -179,7 +179,7 @@ nix profile upgrade flake1
|
||||||
[ -e $TEST_HOME/.nix-profile/include ]
|
[ -e $TEST_HOME/.nix-profile/include ]
|
||||||
|
|
||||||
nix profile remove flake1 2>&1 | grep 'removed 1 packages'
|
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/bin/hello ])
|
||||||
[ -e $TEST_HOME/.nix-profile/share/man ]
|
[ -e $TEST_HOME/.nix-profile/share/man ]
|
||||||
(! [ -e $TEST_HOME/.nix-profile/include ])
|
(! [ -e $TEST_HOME/.nix-profile/include ])
|
||||||
|
@ -193,9 +193,9 @@ printf World > $flake1Dir/who
|
||||||
cp -r $flake1Dir $flake2Dir
|
cp -r $flake1Dir $flake2Dir
|
||||||
printf World2 > $flake2Dir/who
|
printf World2 > $flake2Dir/who
|
||||||
|
|
||||||
nix profile install $flake1Dir
|
nix profile add $flake1Dir
|
||||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
||||||
expect 1 nix profile install $flake2Dir
|
expect 1 nix profile add $flake2Dir
|
||||||
diff -u <(
|
diff -u <(
|
||||||
nix --offline profile install $flake2Dir 2>&1 1> /dev/null \
|
nix --offline profile install $flake2Dir 2>&1 1> /dev/null \
|
||||||
| grep -vE "^warning: " \
|
| grep -vE "^warning: " \
|
||||||
|
@ -214,31 +214,31 @@ error: An existing package already provides the following file:
|
||||||
|
|
||||||
nix profile remove flake1
|
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.
|
The conflicting packages have a priority of 5.
|
||||||
To prioritise the new package:
|
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:
|
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
|
EOF
|
||||||
)
|
)
|
||||||
[[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
[[ $($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" ]]
|
[[ $($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" ]]
|
[[ $($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" ]]
|
# [[ $($TEST_HOME/.nix-profile/bin/hello) = "Hello World" ]]
|
||||||
|
|
||||||
# Ensure that conflicts are handled properly even when the installables aren't
|
# Ensure that conflicts are handled properly even when the installables aren't
|
||||||
# flake references.
|
# flake references.
|
||||||
# Regression test for https://github.com/NixOS/nix/issues/8284
|
# Regression test for https://github.com/NixOS/nix/issues/8284
|
||||||
clearProfiles
|
clearProfiles
|
||||||
nix profile install $(nix build $flake1Dir --no-link --print-out-paths)
|
nix profile add $(nix build $flake1Dir --no-link --print-out-paths)
|
||||||
expect 1 nix profile install --impure --expr "(builtins.getFlake ''$flake2Dir'').packages.$system.default"
|
expect 1 nix profile add --impure --expr "(builtins.getFlake ''$flake2Dir'').packages.$system.default"
|
||||||
|
|
||||||
# Test upgrading from profile version 2.
|
# Test upgrading from profile version 2.
|
||||||
clearProfiles
|
clearProfiles
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue