home manager

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 命令行。 更好的办法是直接起一个 shell nix shell 'nixpkgs#home-manager', 然后直接运行需要的命令行工具。

对于 unstable:

nix run home-manager/master -- init

~/.config/home-manager/ 中创建了 flake.nix and home.nixflake.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/