home-manager冲突

问题

Nix&NixOS 以其声明式、函数式、可复现的系统配置而深深吸引着我,而 Home Manager 则将这种能力扩展到了用户级别的 "dotfiles" 和环境管理。将 Home Manager 作为 NixOS 的一个模块来使用,可以实现系统和用户环境配置的无缝集成,只需一个 nixos-rebuild switch 即可同时更新两者。(参考)

但是,我遇到了一个奇怪的问题,在一次rebuild之后有如下报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
activating the configuration...
setting up /etc...
reloading user units for seeker...
restarting sysinit-reactivation.target
the following new units were started: sysinit-reactivation.target, systemd-tmpfiles-resetup.service
warning: the following units failed: home-manager-seeker.service
× home-manager-seeker.service - Home Manager environment for seeker
Loaded: loaded (/etc/systemd/system/home-manager-seeker.service; enabled; preset: ignored)
Active: failed (Result: exit-code) since Thu 2025-04-17 18:27:37 HKT; 272ms ago
Invocation: 35780f99f7694e9290b459cdb46d91b2
Process: 2941 ExecStart=/nix/store/vsiyw9cslr18jddbhx7yxi5y3gb033px-hm-setup-env /nix/store/m9fsq5cczs54rqv9g7jpja00z2adr0wk-home-manager-generation (code=exited, status=1/FAILURE)
Main PID: 2941 (code=exited, status=1/FAILURE)
IP: 0B in, 0B out
IO: 0B read, 0B written
Mem peak: 5.4M
CPU: 256ms

Apr 17 18:27:37 miLaptop hm-activate-seeker[2978]: Please do one of the following:
Apr 17 18:27:37 miLaptop hm-activate-seeker[2978]: - Move or remove the above files and try again.
Apr 17 18:27:37 miLaptop hm-activate-seeker[2978]: - In standalone mode, use 'home-manager switch -b backup' to back up
Apr 17 18:27:37 miLaptop hm-activate-seeker[2978]: files automatically.
Apr 17 18:27:37 miLaptop hm-activate-seeker[2978]: - When used as a NixOS or nix-darwin module, set
Apr 17 18:27:37 miLaptop hm-activate-seeker[2978]: 'home-manager.backupFileExtension'
Apr 17 18:27:37 miLaptop hm-activate-seeker[2978]: to, for example, 'backup' and rebuild.
Apr 17 18:27:37 miLaptop systemd[1]: home-manager-seeker.service: Main process exited, code=exited, status=1/FAILURE
Apr 17 18:27:37 miLaptop systemd[1]: home-manager-seeker.service: Failed with result 'exit-code'.
Apr 17 18:27:37 miLaptop systemd[1]: Failed to start Home Manager environment for seeker.
warning: error(s) occurred while switching to the new configuration

报错的原因也很简单: 就是Home Manager 想要在主目录 (/home/seeker) 中创建一个文件或符号链接,但是那个位置已经存在一个不是由 Home Manager 管理的真实文件或不同的符号链接。为了防止意外覆盖你的现有配置或数据,Home Manager 默认会停止并报错。

解决方案也很简单,先看一下日志journalctl -u home-manager-seeker.service,找到冲突的文件,手动删除一下/直接设置home-manager.backupFileExtension

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Apr 17 18:25:23 miLaptop systemd[1]: Starting Home Manager environment for seeker...
Apr 17 18:25:24 miLaptop hm-activate-seeker[29561]: Starting Home Manager activation
Apr 17 18:25:24 miLaptop hm-activate-seeker[29561]: Activating checkFilesChanged
Apr 17 18:25:24 miLaptop hm-activate-seeker[29561]: Activating checkKittyTheme
Apr 17 18:25:24 miLaptop hm-activate-seeker[29561]: Activating checkLinkTargets
Apr 17 18:25:24 miLaptop hm-activate-seeker[29588]: Existing file '/home/seeker/.config/mimeapps.list.backup' would be clobbered by backing up '/home/seeker/.config/mimeapps.list'
Apr 17 18:25:24 miLaptop hm-activate-seeker[29588]: Please do one of the following:
Apr 17 18:25:24 miLaptop hm-activate-seeker[29588]: - Move or remove the above files and try again.
Apr 17 18:25:24 miLaptop hm-activate-seeker[29588]: - In standalone mode, use 'home-manager switch -b backup' to back up
Apr 17 18:25:24 miLaptop hm-activate-seeker[29588]: files automatically.
Apr 17 18:25:24 miLaptop hm-activate-seeker[29588]: - When used as a NixOS or nix-darwin module, set
Apr 17 18:25:24 miLaptop hm-activate-seeker[29588]: 'home-manager.backupFileExtension'
Apr 17 18:25:24 miLaptop hm-activate-seeker[29588]: to, for example, 'backup' and rebuild.
Apr 17 18:25:24 miLaptop systemd[1]: home-manager-seeker.service: Main process exited, code=exited, status=1/FAILURE
Apr 17 18:25:24 miLaptop systemd[1]: home-manager-seeker.service: Failed with result 'exit-code'.
Apr 17 18:25:24 miLaptop systemd[1]: Failed to start Home Manager environment for seeker.

有一点奇怪

Home Manager 作为 NixOS 模块:它是如何工作的?
Home Manager 为啥要创建多层软链接?

TODO!


home-manager冲突
https://20040702.xyz/2025/04/01/home-manager-conflict/
作者
Seeker
发布于
2025年4月1日
许可协议