安装Nix
sudo pacman -S nix
nix --version
基于ArchLinux安装Nix,通用安装过程参见Nix官方安装页面。
配置Nix基础环境
# 将Nix基础环境写入全局配置
sudo tee -a /etc/nix/nix.conf << EOF
# 启用 nix-command 和 flakes 的实验性功能
experimental-features = nix-command flakes
# 设置镜像源
substituters = https://mirrors.ustc.edu.cn/nix-channels/store https://cache.nixos.org/
EOF
# 启动nix-daemon,并设置开机自启
sudo systemctl enable --now nix-daemon
# 后续调整配置后,重启nix-daemon
sudo systemctl restart nix-daemon
在用户配置~/.config/nix/nix.conf中设置
substituters,需要在全局配置/etc/nix/nix.conf中增加trusted-users配置才能生效,为了避免配置分散,直接使用全局配置。
初始化Home Manager与Flakes
nix run home-manager/master -- init --switch
home-manager --version
如果nix命令时找不到/nix/store,尝试手工创建/nix/store目录:
sudo mkdir -p /nix/store(不知道为什么nix没有自己创建这个目录)。
执行上述命令后,会自动在~/.config/home-manager目录下生成home.nix和flake.nix(flake.lock)配置文件。
配置Home Manager
修改home.nix配置:
cd ~/.config/home-manager
mv home.nix home.nix.bak
cat > home.nix << EOF
{ config, pkgs, ... }:
{
home.username = "luanrz";
home.homeDirectory = "/home/luanrz";
home.stateVersion = "26.05";
home.packages = with pkgs; [
hello
git
vim
htop
curl
];
home.file = {
};
home.sessionVariables = {
};
programs.home-manager.enable = true;
programs.zsh = {
enable = true;
initExtra = ''
alias ll='ls -la'
'';
};
}
EOF
更新home-manager:
home-manager switch
如果新文件与原文件有冲突会报错,可以使用
-b backup参数备份原文件:home-manager switch -b backup
如果出现
error: creating directory "/nix/var/nix/builds/nix-xxx": Permission denied的报错,可以为当前用户授权:sudo chown $USER:nixbld /nix/var/nix/builds
配置Flakes
更新home-manager时不会自动更新flake,如果修改了~/.config/home-manager下的flake.nix配置,可执行下述命令更新flake:
cd ~/.config/home-manager
nix flake update