install

OS #

multi-user #

single user #

sudo mkdir /nix
sudo chown -R ec2-user:ec2-user /nix
sh <(curl -L https://nixos.org/nix/install) --no-daemon

# . ~/.nix-profile/etc/profile.d/nix.sh to activate things

mkdir ~/.config/nix
touch ~/.config/nix/nix.conf

# check ~/.bash_profile

nix --version  # to verify installation
rm -rf /nix

determinate systems #

  • install:

注意这里安装的是多用户的。会多出一个 nix-daemon.socket 的 systemd socket。

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install -v --no-confirm
  • uninstall
/nix/nix-installer uninstall

src

国内镜像 #

nixpkgs binary cache #

/etc/nix/nix.conf 或者 ~/.config/nix/nix.conf 中修改或者添加 (src):

substituters = https://mirror.sjtu.edu.cn/nix-channels/store https://cache.nixos.org

重启 nix-daemon:

sudo systemctl daemon-reload
sudo systemctl restart nix-daemon

注意的是 binary cache 的下载是由 nix-daemon 控制的,shell 上直接的 proxy 环境变量是不管用的。

可以修改服务的环境变量添加,nix-daemon.service 是在 /etc/systemd/system/nix-daemon.service, 可以添加文件 /etc/systemd/system/nix-daemon.service.d/override.conf:

[Service]
Environment="http_proxy=socks5://192.168.8.34:1080"
Environment="https_proxy=socks5://192.168.8.34:1080"
Environment="all_proxy=socks5://192.168.8.34:1080"

或者运行时,在 /run/systemd/system/nix-daemon.service.d/overrid.conf

其他的备选:

缓存的一些深入探讨, 介绍

nix-channel #

nix-channel --add https://mirrors.tuna.tsinghua.edu.cn/nix-channels/nixpkgs-unstable nixpkgs
nix-channel --update

GC #

Nix 用久了占用空间极大,手动 gc 垃圾清理可以用:

sudo nix-collect-garbage -d

TODO 如何删除特定的?比如 nix develop 下载的