nix-community / home-manager

Manage a user environment using Nix [maintainer=@rycee]
https://nix-community.github.io/home-manager/
MIT License
6.56k stars 1.73k forks source link

bug: new home-manager install fails with file conflict between home-manager-path and nix-2.9.0 #2995

Open benjaminfjones opened 2 years ago

benjaminfjones commented 2 years ago

Is there an existing issue for this?

Issue description

While installing Nix and home-manager on a new machine, I encountered a file priority conflict error:

sh <(curl -L https://nixos.org/nix/install) --no-daemon
export NIX_PATH=$HOME/.nix-defexpr/channels:/nix/var/nix/profiles/per-user/ubuntu/channels

nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
nix-channel --update
nix-shell '<home-manager>' -A install

results in ...

Creating initial Home Manager generation...

/nix/store/qk1v11a6d6qk8g584kwwj71hmzr23apr-home-manager-generation
Starting Home Manager activation
Activating checkFilesChanged
Activating checkLinkTargets
Activating writeBoundary
Activating installPackages
installing 'home-manager-path'
building '/nix/store/nd94p3ar0wc3w55cr65161gxpqc0q2cg-user-environment.drv'...
error: files '/nix/store/kqcy7af4psh1plik6hjahm9hg0qzzr3q-home-manager-path/share/zsh/site-functions/_nix' and '/nix/store/2pnxdjz3x3c3jqadaks1h3zm83mhb9az-nix-2.9.0/share/zsh/site-functions/_nix' have the same priority 5; use 'nix-env --set-flag priority NUMBER INSTALLED_PKGNAME' or type 'nix profile install --help' if using 'nix profile' to find out howto change the priority of one of the conflicting packages (0 being the highest priority)
error: builder for '/nix/store/nd94p3ar0wc3w55cr65161gxpqc0q2cg-user-environment.drv' failed with exit code 1

Oops, Nix failed to install your new Home Manager profile!

Perhaps there is a conflict with a package that was installed using
"nix-env -i"? Try running

    nix-env -q

and if there is a conflicting package you can remove it with

    nix-env -e {package name}

Then try activating your Home Manager configuration again.
Uh oh, the installation failed! Please create an issue at

    https://github.com/nix-community/home-manager/issues

if the error seems to be the fault of Home Manager.

Maintainer CC

No response

System information

- system: `"x86_64-linux"`
 - host os: `Linux 5.4.0-1018-aws, Ubuntu, 20.04.4 LTS (Focal Fossa), nobuild`
 - multi-user?: `no`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.9.0`
 - channels(ubuntu): `"home-manager, nixpkgs"`
 - nixpkgs: `/home/ubuntu/.nix-defexpr/channels/nixpkgs`
benjaminfjones commented 2 years ago

Explicitly setting the file priority one way or the other fixes the problem,

nix-env --set-flag priority 0 nix-2.9.0
nix-shell '<home-manager>' -A install
... 
<works!>

but I don't see anything about this issue in the user manual, the github issues, or google searching.

sullyj3 commented 2 years ago

I think this might be #2848

stale[bot] commented 1 year ago

Thank you for your contribution! I marked this issue as stale due to inactivity. Please be considerate of people watching this issue and receiving notifications before commenting 'I have this issue too'. We welcome additional information that will help resolve this issue. Please read the relevant sections below before commenting.

If you are the original author of the issue

* If this is resolved, please consider closing it so that the maintainers know not to focus on this. * If this might still be an issue, but you are not interested in promoting its resolution, please consider closing it while encouraging others to take over and reopen an issue if they care enough. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

If you are not the original author of the issue

* If you are also experiencing this issue, please add details of your situation to help with the debugging process. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

Memorandum on closing issues

Don't be afraid to manually close an issue, even if it holds valuable information. Closed issues stay in the system for people to search, read, cross-reference, or even reopen – nothing is lost! Closing obsolete issues is an important way to help maintainers focus their time and effort.

benjaminfjones commented 1 year ago

Closing in favor of #2848

ameyp commented 1 year ago

2848 has been resolved, but this bug still exists.

ameyp commented 1 year ago

Apparently nix works around this issue with this block

https://github.com/NixOS/nix/issues/5445#issuecomment-954273357

sybereal commented 1 year ago

A similar issue but with a different file happens for me on a pristine install (reproduced with the nixos/nix Docker image).

docker run --rm -i nixos/nix <<EOF
nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
nix-channel --update
nix-shell '<home-manager>' -A install
EOF

This fails with the following error:

error: files '/nix/store/bp0ibyzjlclkjhb0mr6n8mbamyfh5qpx-man-db-2.10.2/share/locale/ro/LC_MESSAGES/man-db.mo' and '/nix/store/58s0kcp3yp8720l33lk2i7nzjszz6qbk-home-manager-path/share/locale/ro/LC_MESSAGES/man-db.mo' have the same priority 5; use 'nix-env --set-flag priority NUMBER INSTALLED_PKGNAME' or type 'nix profile install --help' if using 'nix profile' to find out howto change the priority of one of the conflicting packages (0 being the highest priority)
error: builder for '/nix/store/5n9043i7fwcpyfc8c7j4gqy7axgrvhq7-user-environment.drv' failed with exit code 1

Oops, Nix failed to install your new Home Manager profile!

Perhaps there is a conflict with a package that was installed using
"nix-env -i"? Try running

    nix-env -q

and if there is a conflicting package you can remove it with

    nix-env -e {package name}

Then try activating your Home Manager configuration again.
Uh oh, the installation failed! Please create an issue at

    https://github.com/nix-community/home-manager/issues

if the error seems to be the fault of Home Manager.

Docker image: nixos/nix@sha256:d8c6b97091d6944dd773c3c239899af047077dbf5411ef229bb50e5b21404b0d nixpkgs release: https://releases.nixos.org/nixpkgs/nixpkgs-22.11pre426729.dad4de1694c home-manager HEAD: https://github.com/nix-community/home-manager/commit/bc90de24d898655542589237cc0a6ada7564cb6c

stale[bot] commented 1 year ago

Thank you for your contribution! I marked this issue as stale due to inactivity. Please be considerate of people watching this issue and receiving notifications before commenting 'I have this issue too'. We welcome additional information that will help resolve this issue. Please read the relevant sections below before commenting.

If you are the original author of the issue

* If this is resolved, please consider closing it so that the maintainers know not to focus on this. * If this might still be an issue, but you are not interested in promoting its resolution, please consider closing it while encouraging others to take over and reopen an issue if they care enough. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

If you are not the original author of the issue

* If you are also experiencing this issue, please add details of your situation to help with the debugging process. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

Memorandum on closing issues

Don't be afraid to manually close an issue, even if it holds valuable information. Closed issues stay in the system for people to search, read, cross-reference, or even reopen – nothing is lost! Closing obsolete issues is an important way to help maintainers focus their time and effort.

tuxflo commented 1 year ago

I think this issue isn't stale since I'm facing the same problems when trying to install home manager in a Docker Container (nixos/nix) as described in the comment above.

osalbahr commented 1 year ago

I am able to reproduce this in the official nixos/nix container as well.

Step 1: start fresh container

$ podman pull nixos/nix && podman run --rm -it nixos/nix

Step 2: follow website instructions

$ nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager \
&& nix-channel --update \
&& nix-channel --add https://github.com/nix-community/home-manager/archive/release-23.05.tar.gz home-manager && nix-channel --update \
&& nix-shell '<home-manager>' -A install

Error:

bash-5.1# nix-shell '<home-manager>' -A install
The file /root/.config/home-manager/home.nix already exists, leaving it unchanged...

Creating initial Home Manager generation...

trace: warning: lib.modules.defaultPriority is deprecated, please use lib.modules.defaultOverridePriority instead.
/nix/store/szp16zn35nfkcqyv3kqv9bxrsxndnrb3-home-manager-generation
Starting Home Manager activation
Activating checkFilesChanged
Activating checkLinkTargets
Activating writeBoundary
Activating installPackages
installing 'home-manager-path'
building '/nix/store/4b8mpn7yszcn0c0qy4vr3lwh6bcr3skv-user-environment.drv'...
error: Unable to build profile. There is a conflict for the following files:

         /nix/store/26g7nm0ps69xdyn1am9rmvrfg2zkkbmg-man-db-2.10.2/bin/accessdb
         /nix/store/ipg0hj6ma0qzqgp26067jynjbnx5lyfq-home-manager-path/bin/accessdb
error: builder for '/nix/store/4b8mpn7yszcn0c0qy4vr3lwh6bcr3skv-user-environment.drv' failed with exit code 1

Oops, Nix failed to install your new Home Manager profile!

Perhaps there is a conflict with a package that was installed using
"nix-env -i"? Try running

    nix-env -q

and if there is a conflicting package you can remove it with

    nix-env -e {package name}

Then try activating your Home Manager configuration again.
Uh oh, the installation failed! Please create an issue at

    https://github.com/nix-community/home-manager/issues

if the error seems to be the fault of Home Manager.

I don't get why man-db-2.10.2 conflicts with home-manager-path and not sure if I should remove man-db (which I did not install). Here is nix-env -q for reference:

bash-5.1# nix-env -q
bash-interactive-5.1-p16
coreutils-full-9.1
curl-7.86.0
findutils-4.9.0
git-2.38.1
gnugrep-3.7
gnutar-1.34
gzip-1.12
iana-etc-20220915
less-608
man-db-2.10.2
nix-2.16.1
nss-cacert-3.83
openssh-9.1p1
wget-1.21.3
which-2.21

And before running any home manager commands:

$ podman run --rm nixos/nix nix-env -q
bash-interactive-5.1-p16
coreutils-full-9.1
curl-7.86.0
findutils-4.9.0
git-2.38.1
gnugrep-3.7
gnutar-1.34
gzip-1.12
iana-etc-20220915
less-608
man-db-2.10.2
nix-2.16.1
nss-cacert-3.83
openssh-9.1p1
wget-1.21.3
which-2.21
stale[bot] commented 10 months ago

Thank you for your contribution! I marked this issue as stale due to inactivity. Please be considerate of people watching this issue and receiving notifications before commenting 'I have this issue too'. We welcome additional information that will help resolve this issue. Please read the relevant sections below before commenting.

If you are the original author of the issue

* If this is resolved, please consider closing it so that the maintainers know not to focus on this. * If this might still be an issue, but you are not interested in promoting its resolution, please consider closing it while encouraging others to take over and reopen an issue if they care enough. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

If you are not the original author of the issue

* If you are also experiencing this issue, please add details of your situation to help with the debugging process. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

Memorandum on closing issues

Don't be afraid to manually close an issue, even if it holds valuable information. Closed issues stay in the system for people to search, read, cross-reference, or even reopen – nothing is lost! Closing obsolete issues is an important way to help maintainers focus their time and effort.

e-nikolov commented 10 months ago

This is still an issue. https://github.com/nix-community/home-manager/pull/4421 is my attempt at mitigating it by introducing a configuration option and a flag to set the priority of the packages installed by home-manager

nicksettoon commented 10 months ago

still occurring here

docker build --file .\dockerfile -t nix_controller .
36.12 installing 'home-manager-path'
36.13 building '/nix/store/ijndcnsr48m1pz04n9pnfdp56k45zr5k-user-environment.drv'...
36.22 error: Unable to build profile. There is a conflict for the following files:
36.22
36.22          /nix/store/g9sv3xrdasimd6xp4rd7pjli7xb70qr7-man-db-2.11.2/libexec/man-db/manconv
36.22          /nix/store/vr04ag53qddlr77886lq9mmssibbaz18-man-db-2.11.2/libexec/man-db/manconv
36.23 error: builder for '/nix/store/ijndcnsr48m1pz04n9pnfdp56k45zr5k-user-environment.drv' failed with exit code 1
36.24
36.24 Oops, Nix failed to install your new Home Manager profile!
36.24
36.24 Perhaps there is a conflict with a package that was installed using
36.24 "nix-env -i"? Try running
36.24
36.24     nix-env -q
36.24
36.24 and if there is a conflicting package you can remove it with
36.24
36.24     nix-env -e {package name}
36.24
36.24 Then try activating your Home Manager configuration again.
36.24 Uh oh, the installation failed! Please create an issue at
36.24
36.24     https://github.com/nix-community/home-manager/issues
36.24
36.24 if the error seems to be the fault of Home Manager.
bash-5.2# nix-env -q
bash-interactive-5.2-p15
coreutils-full-9.1
curl-8.1.1
findutils-4.9.0
git-2.40.1
gnugrep-3.7
gnutar-1.35
gzip-1.12
iana-etc-20230316
less-608
nix-2.18.1
nss-cacert-3.92
openssh-9.3p2
wget-1.21.4
which-2.21
stale[bot] commented 7 months ago

Thank you for your contribution! I marked this issue as stale due to inactivity. Please be considerate of people watching this issue and receiving notifications before commenting 'I have this issue too'. We welcome additional information that will help resolve this issue. Please read the relevant sections below before commenting.

If you are the original author of the issue

* If this is resolved, please consider closing it so that the maintainers know not to focus on this. * If this might still be an issue, but you are not interested in promoting its resolution, please consider closing it while encouraging others to take over and reopen an issue if they care enough. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

If you are not the original author of the issue

* If you are also experiencing this issue, please add details of your situation to help with the debugging process. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

Memorandum on closing issues

Don't be afraid to manually close an issue, even if it holds valuable information. Closed issues stay in the system for people to search, read, cross-reference, or even reopen – nothing is lost! Closing obsolete issues is an important way to help maintainers focus their time and effort.

e-nikolov commented 7 months ago

Not stale

drupol commented 4 months ago

Reproducer:

FROM nixos/nix

RUN nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
RUN nix-channel --update
RUN nix-shell '<home-manager>' -A install
RUN home-manager switch

Command: docker buildx build . -t nix:latest

Quick fix:

FROM nixos/nix

RUN nix-env --uninstall man-db
RUN nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
RUN nix-channel --update
RUN nix-shell '<home-manager>' -A install
RUN home-manager switch
devvythelopper commented 4 months ago

This can happen when you move/copy your home folder to a new computer, and prolly depends on how you install home-manager. Since I do it via /etc/nix/configuration.nix for me it happens every time.

The reason is that there will be a symlink /home/<username>/.nix-profile which points to a non-existant /nix/var/nix/profiles/per-user/<username> directory. To work around it, just create the non-existant directory and chown it to the <username>

The home-manager activation script should do a mkdir -p /nix/var/nix/profiles/per-user/<username> for this usecase.

stale[bot] commented 1 month ago

Thank you for your contribution! I marked this issue as stale due to inactivity. Please be considerate of people watching this issue and receiving notifications before commenting 'I have this issue too'. We welcome additional information that will help resolve this issue. Please read the relevant sections below before commenting.

If you are the original author of the issue

* If this is resolved, please consider closing it so that the maintainers know not to focus on this. * If this might still be an issue, but you are not interested in promoting its resolution, please consider closing it while encouraging others to take over and reopen an issue if they care enough. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

If you are not the original author of the issue

* If you are also experiencing this issue, please add details of your situation to help with the debugging process. * If you know how to solve the issue, please consider submitting a Pull Request that addresses this issue.

Memorandum on closing issues

Don't be afraid to manually close an issue, even if it holds valuable information. Closed issues stay in the system for people to search, read, cross-reference, or even reopen – nothing is lost! Closing obsolete issues is an important way to help maintainers focus their time and effort.