零风
NIX 让我的软件构建支持了可复现性,清晰可读的依赖以及很多好处,顺带一提现在nix的包早已经超过 arch

nix 好处非常多,但是软件编译大的批爆的风扇声音这个无论是aur 还是其他 nix 的都很难避免,本身我非常心疼电脑,因为 nix 构建和存储太离谱了,基本上写两个软件就是几百g , 加上 rust 语言编写的程序编译本就是对机器的折磨。
另外一个让我蛋疼的一点,一台机器上编译成功了的应用要在另外一台机器上使用,总是不可避免再次编译打包,我佛,t苦逼轻薄本只能说这辈子有了。
懒猫微服 lightos 非常好用,加上他本身就支持无感的内网穿透,随手测试了一下差不多轻松跑满带宽,本地局域网更不用说。配置完成,即便我在异地,我的非常多设备都可以同时使用一个缓存,一个 builder ,这几乎帮我节省了大部分无意义的时间,也不用担心像平台跑路那种情况。
Nix 远程构建(或称分布式构建)的核心原理是利用 SSH 协议将构建任务的安全外包与分发。
远程机不需要重新下载或猜测依赖,它只需要接收本地缺少的特定哈希路径。
本地和远程机器都认同相同的 /nix/store/<hash>-name。
nix remote build 强大到就像你在 aur 下一个git 包 然后自动编译成二进制传给你,这种完全本地机器友善方式
这边的话我采用的是 nixos 官方推荐的远程构建器的配置,配置完成后就可以极大减轻笔记本的 cpu 内存 负载
需要配置本机 root 能远程登陆 lightos builder
[root@nixos:~]# ssh-keygen
[root@nixos:~]# ssh-copy-id -p 144 tux@lzcos.heiyu.space
# 将公钥发送给remote build
设置 remote builder 用户拥有 构建的权限,这边的话我的默认账户是 tux ,我设置的tux
# in /etc/nix/nix.conf
trusted-users = root tux
重启远程机器的 Nix 守护进程:
sudo systemctl restart nix-daemon
在本地机器编辑或创建 /etc/nix/machines 文件,定义你的远程构建机:
# 格式: SSH-URI 系统架构 密钥路径 最大并行任务数 权重 支持的特性
ssh://nix-worker@remote-server-ip x86_64-linux /root/.ssh/id_remotebuild 4 1 big-parallel,kvm
参数说明:
在本地机器的 /etc/nix/nix.conf 中启用该机器文件:
builders = @/etc/nix/machines
# 如果希望本地即使能编译,也优先切到远程(或者本地架构不匹配时强制走远程)
builders-use-substitutes = true
重启本地机器的 Nix 守护进程:
sudo systemctl restart nix-daemon
# ── Remote Builder ──
nix.distributedBuilds = true;
nix.buildMachines = [{
hostName = "lzcos.heiyu.space";
system = "x86_64-linux";
maxJobs = 4;
speedFactor = 2;
sshUser = "tux";
supportedFeatures = [ "kvm" "big-parallel" ];
}];
nix.extraOptions = ''
builders-use-substitutes = true
'';
nixpkgs.config.allowUnfree = true;
services.
lazycat-cloud-client = {
enable = true;
};
配置完成执行 build 操作应该会默认到 rmote 上编译


本地笔记本几乎不会执行编译任务,温度非常低。即便在异地也能利用家中的懒猫构建
评论
0暂无评论