时隔许久的第二篇,由于我的 NixOS 配置已经改了很多,这里会从头开始讲——主要是思路,不一定和我当前配置一致。
此时已经分区完毕,是时候配置并安装系统了。
目录
- 硬盘分区
- 系统配置 (you are here)
- 程序配置
系统配置
下载模板
我使用 Misterio77/nix-starter-configs
中的 minimal
模板。
生成默认配置
合并 home-manager 到系统配置
我希望更新系统的同时更新用户环境(而不是分开),所以我这么做了。
创建 nixos/home-manager.nix
并添加导入。
修改 username 和 hostname
你可以为密码使用 initialHashedPassword
以免公开配置被别人一眼知道密码,但真正需要安全性还是推荐使用秘密管理工具如 agenix, sops-nix。(此处使用 12345678 作为示例密码)
使用 unstable
作为滚动发行版爱好者,连 Debian 都要用 Sid 的人,NixOS Stable 我是完全用不下去的。
Misterio77 的模板还在使用 NixOS 23.11(甚至不是 24.05,可能忘了更新),这里把它改为 Unstable。
配置 disko
移动之前用来创建分区的 disko 配置,并在 flake.nix
和 nixos/configuration.nix
添加导入。
配置 impermanence
这部分复杂一点:首先从 README 搬一个基础配置,只需要其中的 boot.initrd.postDeviceCommands 部分。
进行一些修改,使它适合我的分区:
你还可以调整 mtime
,以缩短或增加旧文件保留时间。
在同一个文件下面添加常规的 impermanence 配置:
这里声明了保留 machine-id
和一些系统文件夹。
添加导入:
配置 impermanence 的 home-manager 模块
没结束,impermanence 还有一个 home-manager 模块。
创建 home-manager/impermanence.nix
文件,它会从 home.homeDirectory
读取用户文件夹,因此不用再硬编码用户名。
由于 /etc/nixos
只有 root 能正常写入,这里声明了一个 ~/.os
文件夹用于之后存放 NixOS 配置。
添加导入:
应用配置
接下来安装一些应用。
其中一部分是 NixOS 配置,另一部分是 Home Manager 配置,我会在首行注释说明应该加在哪里。
gnome
google-chrome
vscode
安装
记下上面设置的 networking.hostName
,这里示例为 nixos
.
会经历一段漫长的下载,安装完之后先把配置复制到 /mnt/home/user/.os
再重启(我的配置放在 GitHub,所以我也不清楚到底有没有用)