NixOS Linux 物理机安装与配置
2023-12-19
3分钟阅读时长
NixOS Linux是一个精确、纯净、可信赖、可重部署的发行版,它的设计包含一些独立的特性。
Reference
参考资料如下:
Start
Network Configuration
NixOS 使用 wpa_supplicant
作为无线守护程序,因此可以使用交互式命令行或配置文件的形式进行网络连接
Passphrase
可以用 wpa_passphrase
生成一个用于连接 WIFI 的配置文件
wpa_passphrase XXX_wifi password > ~/.internet.conf
而后使用 wpa_supplicant
连接网络
wpa_supplicant -c internet.conf -i wlan0 &
如果需要额外指定网卡,可以使用 -D
选项指定。
Command Line
使用下面的命令进入命令行交互模式:
sudo systemctl start wpa_supplicant
sudo wpa_cli
在交互模式下使用如下步骤连接:
> add_network #0
> set_network 0 ssid "WIFI's SSID" #OK
> set_network 0 psk "WIFI's password" #OK
> set_network 0 key_mgmt WPA-PSK #OK
> enable_network 0 #OK
Change Channel
更换频道的目的是用国内源先把NixOS跑起来。
sudo -i
nix-channel --add https://mirrors.ustc.edu.cn/nix-channels/nixpkgs-unstable nixpkgs # 订阅镜像仓库频道
nix-channel --add https://mirrors.ustc.edu.cn/nix-channels/nixos-23.11 nixos # 请注意系统版本
nix-channel --list # 列出频道
nix-channel --update # 更新并解包频道
nixos-rebuild --option substituters "https://mirror.sjtu.edu.cn/nix-channels/store" switch --upgrade # 临时切换二进制缓存源,并更新生成
最后一步也可以不执行,而是在安装系统时一并执行。特别地,即使使用国内源,也可能存在特定的依赖关系致使没有对应的二进制包存在,建议使用手机热点的方式进行连接。
Partition
可以使用下面的命令查看磁盘和文件系统情况:
du
查看指定目录或文件的磁盘使用情况,若不给定参数则显示当前目录du -h
显示友好信息,会递归地显示每个目录的大小du -h --max-depth=1
可以限定深度显示
df
查看文件系统磁盘使用情况和剩余空间df -h
显示友好信息df -T
显示各分区的类型df -t ext4
限制显示类型df -x tmpfs
排除显示类型df -h | grep -v "/dev/loop"
排除/dev/loop
使用情况
lsblk
用于列出系统中所有的块设备,这包括sysfs 文件系统和udev 数据库lsblk -a
显示所有块设备,主要会增添显示逻辑块设备lsblk -f
显示更详细的信息
fdisk
用于操作分区表fdisk -l
显示分区表信息fdisk -x
更详细地显示fdisk [device]
对指定分区进行交互式操作
挂载分区后,对分区进行格式化操作
mkfs.ext4 -L NixOS /dev/nvme0n1p8
mkfs.fat -F 32 /dev/nvme0n1p7
如果忘记给根分区打上标签,可以事后使用 e2label
补上。
e2label /dev/nvme0n1p8 -L NixOS
e2label /dev/nvme0n1p8
Settings
Basic Configuration
在新机器上生成默认配置的命令如下:
nixos-generate-config --root /mnt
如果仅需要硬件配置,可以将其从标准输入输出重定向到文件
nixos-generate-config --show-hardware-config > /etc/nixos/hardware-configuration.nix
Driver Configuration
- Nvidia
参考 NixOS Wiki Nvidia 的配置,错误的显卡配置会导致无法进入图形界面
- 仅含独立显卡的机器只需要安装独立显卡驱动
- 核显与独显组合则需要配置PRIME方案
- UUID
- 硬盘的UUID在每次格式化后都会刷新
- 注意区分
FileSystem UUID
和Partition UUID
,NixOS使用前者 - 挂载所需的分区后建议由NixOS自动生成硬件配置
- Software
至少需要保证重建后的NixOS网络连通
network.wireless.enable = true; # use wpa_supplicant network.networkmanager.enable = true; # use networkmanager environment.systemPackage = with pkgs;[ git # flakes required firefox neovim curl # flakes required pciutils usbutils nix-prefetch-git # nix-prefetch-url already installed ];
Build System
一般运行两次重建命令:
-
使用默认配置把系统先跑起来,然后打开实验性质的选项:
nix.settings = { substituters = lib.mkForce [ "https://mirrors.cernet.edu.cn/nix-channels/store" ]; experimental-features = ["nix-command" "flakes"]; };
-
导入配置,重建系统