NixOS Linux 物理机安装与配置

2023-12-19
2分钟阅读时长

Reference

参考资料如下:

  1. NixOS 中文网
  2. NixOS Manual

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

可以使用下面的命令查看磁盘和文件系统情况:

  1. du 查看指定目录或文件的磁盘使用情况,若不给定参数则显示当前目录

    1. du -h 显示友好信息,会递归地显示每个目录的大小
    2. du -h --max-depth=1 可以限定深度显示
  2. df 查看文件系统磁盘使用情况和剩余空间

    1. df -h 显示友好信息
    2. df -T 显示各分区的类型
    3. df -t ext4 限制显示类型
    4. df -x tmpfs 排除显示类型
    5. df -h | grep -v "/dev/loop" 排除 /dev/loop 使用情况
  3. lsblk 用于列出系统中所有的块设备,这包括sysfs 文件系统和udev 数据库

    1. lsblk -a 显示所有块设备,主要会增添显示逻辑块设备
    2. lsblk -f 显示更详细的信息
  4. fdisk 用于操作分区表

    1. fdisk -l 显示分区表信息
    2. fdisk -x 更详细地显示
    3. 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

  1. Nvidia 参考 NixOS Wiki Nvidia 的配置,错误的显卡配置会导致无法进入图形界面

    1. 仅含独立显卡的机器只需要安装独立显卡驱动
    2. 核显与独显组合则需要配置PRIME方案
  2. UUID

    1. 硬盘的UUID在每次格式化后都会刷新
    2. 注意区分 FileSystem UUIDPartition UUID ,NixOS使用前者
    3. 挂载所需的分区后建议由NixOS自动生成硬件配置
  3. 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

一般运行两次重建命令:

  1. 使用默认配置把系统先跑起来,然后打开实验性质的选项:

      nix.settings = {
        substituters = lib.mkForce [
          "https://mirrors.cernet.edu.cn/nix-channels/store"
        ];
        experimental-features = ["nix-command" "flakes"];
      };
  2. 导入配置,重建系统