SSOT #
https://github.com/nix-community/home-manager https://nix-community.github.io/home-manager/index.xhtml https://nix-community.github.io/home-manager/options.xhtml
安裝方式 #
-
NixOS
configuration.nix
下的一个 module. -
standalone. 用
home-manager
命令管理。- 不是 NixOS 或者 Darwin 的,只能用这个方式
- NixOS 或者 Darwin 的,又不想和系统配置放一起,想单独管理 home 的
-
nix-darwin
中的一个 module。macOS 用的,对我没用。
flake/standalone #
管理的方式可以是使用 channels 的标准方式,也可以是用 Nix Flakes
的方式。
# to check current <nixpkgs> version, e.g
$ nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version'
"24.05pre-git"
下面的
nix run home-manager/master -- init
等,实际上就是在运行 home-manager 命令行。 更好的办法是直接起一个 shellnix shell 'nixpkgs#home-manager'
, 然后直接运行需要的命令行工具。
对于 unstable:
nix run home-manager/master -- init
在 ~/.config/home-manager/
中创建了 flake.nix
and home.nix
。flake.nix
会引用 home.nix
(其实也就不一定非要叫这个名字)。
然后调整 ~/.config/home-manager/home.nix
的配置,activate:
nix run home-manager/master -- init --switch
这里是 initial 的 activation, 用的是 nix run
。往后,就可以用 home-manager
命令了。
** TODO 链接的 ~/.config/home-manager` folder 出错. **
install from flake #
由于我们的 home-manager 是放在一个 flake 里面的,并且用 git 管理。我们并不需要每次初始化,而是直接switch。
这个时候我们的 home-manager 是没有安装的,可以使用
nix shell 'nixpkgs#home-manager'
# 启动另外一个 shell, 并且 home-manager 命令是可以用
home-manager switch --flake "$HOME/dotfiles/nix#arch" --refresh --verbose
# or
home-manager switch --flake "https://nix.myctl.space/nix.tar.gz#arch" --refresh --verbose
options search: https://home-manager-options.extranix.com/
home-manager & nvim [TODO] #
https://www.reddit.com/r/NixOS/comments/108fwwh/tradeoffs_of_using_home_manager_for_neovim_plugins/ https://gist.github.com/nat-418/d76586da7a5d113ab90578ed56069509 https://gist.github.com/nat-418/493d40b807132d2643a7058188bff1ca
home-manager systemd user service #
https://haseebmajid.dev/posts/2023-10-08-how-to-create-systemd-services-in-nix-home-manager/