
NixOS 系列(四):「无状态」操作系统
NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署推荐阅读:NixOS 与 Nix Flakes 新手入门,作者 Ryan YinNixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统更新记录:2023-02-18:在「移动 Nix Daemon 的临时文件夹」一段,修正配置不对 root 用户生效的问题。NixOS 广为人知的一大特点是,系统大部分软件的设置都由 Nix 语言的配置文件统一生成并管理。即使这些软件在运行时修改了自己的配置文件,在下次切换 Nix 配置或者系统重启时,NixOS 也会将配置文件重新覆盖。例如,在运行 NixOS 的电脑上运行 ls -alh /etc,可以看到大部分配置文件都只是到 /etc/static 的软链接:123456789101112# 省略部分不相关的行lrwxrwxrwx 1 root root 18 Jan 13 03:02 bashrc -> /etc/static/bashrclrwxrwxrwx 1 root root 18 Jan 13 03:...

NixOS 系列(三):软件打包,从入门到放弃
NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署推荐阅读:NixOS 与 Nix Flakes 新手入门,作者 Ryan YinNixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统NixOS 的一大特点是,系统所有的二进制程序和库文件都在 /nix/store 目录中,由 Nix包管理器管理。这也意味着,NixOS 不符合Linux 的 FHS 标准,它的 /lib 或 /lib64 目录下不存在类似 ld-linux-x86-64.so.2 之类的库文件动态加载器,更不存在 libc.so 之类的库文件。因此,除非静态链接,否则为其它 Linux 下编译的二进制文件将完全无法在 NixOS 下运行。所以,要在 NixOS 上使用尚不存在于 Nixpkgs 仓库中的软件,最佳方案是自己用 Nix 语言写一份打包脚本,给这个软件打一个包,然后把打包定义加入 configuration.nix 中,从而安装到系统上。关于 NixOS 的软件打包,有三个好消息和两个坏消息。好消息是:...

NixOS 系列(二):基础配置,Nix Flake,和批量部署
NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署推荐阅读:NixOS 与 Nix Flakes 新手入门,作者 Ryan YinNixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统这是我的 NixOS 系列文章的第二篇,主要介绍以下内容:NixOS 配置文件的基本格式和修改配置的方法 Nix 包管理器的 Flake 功能 Deploy-RS 部署工具本文假设你已经按照 NixOS 官方安装教程装好了一个系统。更新日志2023-05-10:增加推荐阅读:NixOS 与 Nix Flakes 新手入门,作者 Ryan Yin。2021-12-18:NixOS 21.11 仍没有默认启用 Flake 功能,更新文章中相关说明。基础配置在 NixOS 的安装过程中,nixos-generate-config 工具在 /etc/nixos 目录下生成了一份初始配置文件,configuration.nix 和 hardware-configuration.nix 两份文件。我们先不管 hardware-configuration.nix 这份文件,...

NixOS 系列(一):我为什么心动了
NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署推荐阅读:NixOS 与 Nix Flakes 新手入门,作者 Ryan YinNixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统我正在将我的各个服务器逐步从 Devuan Linux 迁移到 NixOS。NixOS 是一个以 Nix 配置文件为中心的 Linux 发行版,通过 /etc/nixos 的一份配置文件安装配置整个系统。这份配置文件指定了系统上的所有配置文件和软件包配置,因此你用同一份配置文件装出来的一定是一模一样的操作系统。Nix 语言是图灵完备的,所以理论上无论你用的软件配置多复杂,你都能用 Nix 生成对应的配置文件。Nix 包管理器的另一大特性是 Reproducible Build(可重复构建)。NixOS 的软件包也是用 Nix 配置文件指定的,而 Nix 包管理器可以保证,(在软件本身不故意对抗的情况下),用同一份配置文件(包括源码版本,编译命令等)...