NixOS 25.11 安装学习

资料

NixOS结构

  • NixOS
    • Nix 包管理器
      • /nix/store 软件包存储位置, 逻辑路径, 永久路径, 只读不可变, 属于root用户
    • 配置式
      • 物理目录
        • /dev/sda1 根目录
      • 系统目录
        • /  默认挂载根目录
        • /etc/nixos/configuration.nix 本地配置文件
        • /etc/nixos/hardware-configuration.nix 本地硬件配置文件
      • 安装临时目录
        • /mnt  临时挂载根目录
        • /mnt/etc/nixos/configuration.nix
        • /mnt/etc/nixos/hardware-configuration.nix
      • Flake远程配置仓库
        • flake.nix 核心文件,任意git仓库被视作flake框架进行管理的关键
        • 远端配置文件,可由本地文件迁移过来

图形桌面

NixOS同时安装多个 DE,登录选择切换,不会臃肿

GNOME:干净、专注,无桌面图标、无传统任务栏,官方默认,Wayland 稳定
Plasma:个性化,高度自定义,类似 Windows 的面板、任务栏、开始菜单
XFCE
Pantheon
Cinnamon
MATE
Enlightenment
LXQt
Budgie

NixOS的PC安装

  1. ISO安装盘:图形化安装 (Graphical Installer)
    • 安装包:下载图形化 ISO,刻录到 U 盘/CD
    • 安装程序:从 U 盘/CD 引导后进入桌面,双击 Install NixOS进Calamares 安装器
    • ·安装执行:自动分区,选择语言、键盘、用户账户和桌面环境,安装完成并重启
  2. ISO安装盘:手动安装 (Manual Installation)
    • 安装包:下载迷你版或图形化 ISO,刻录到 U 盘/CD
    • 安装程序
      • 引导迷你版,直接到命令行,用nixos帐号登录进终端(无密码,回车登录)
      • 引导图形版,直接到桌面,Ctrl+Alt+F3进终端
    • 安装执行
      • 配置网络nmtui
      • 分区格式化parted,挂载 /mnt(可用Disko加入配置文件,完成自动分区)
      • 生成配置nixos-generate-config --root /mnt 
      • 编辑 /mnt/etc/nixos/configuration.nix(设置引导加载器)
      • 执行 nixos-install,设置 root 密码,重启
  3. ISO安装盘:自定义 ISO 安装 (Custom ISO)
    • 在开发机克隆 nixpkgs,编辑 nixos/modules/installer/cd-dvd/installation-cd-minimal.nix
    • 构建:nix-build '<nixpkgs/nixos/release.nix>' -A iso.x86_64-linux
    • 刻录自定义 ISO 到介质,引导安装
  4. ISO安装盘:在Linux用Kexec 安装 (From Running Linux)
    • 在现有 Linux 构建 kexec 文件:nix-build -A kexec.x86_64-linux '<nixpkgs/nixos/release.nix>'
    • 复制到目标 PC,运行 kexec-boot 进入 NixOS 环境,无需安装盘
    • 执行手动安装
  5. 在Linux安装:安装第二系统(From Another Linux Distro)
    • 装Nix包管理器:curl -L https://nixos.org/nix/install | sh
    • 添加频道:nix-channel --add https://channels.nixos.org/nixos-25.11 nixos
    • 更新频道:nix-channel --update
    • 安装工具:nix-env -f '<nixpkgs>' -iA nixos-install-tools
    • 分区、挂载、生成配置
    • 执行 nixos-install --root /mnt
    • 更新引导加载器
      • 配置boot.loader支持多系统
  6. 在Linux安装:覆盖安装(In-Place Installation)
    • 安装包:curl -L https://nixos.org/nix/install | sh
    • 添加频道:nix-channel --add https://channels.nixos.org/nixos-25.11 nixpkgs
    • 安装工具:nix-env -f '<nixpkgs>' -iA nixos-install-tools
    • 生成 /etc/nixos/configuration.nix
    • 构建系统:nix-env -p /nix/var/nix/profiles/system -iA system
    • 设置 echo "lustrate" > /etc/NIXOS_LUSTRATE,执行 switch-to-configuration boot
    • 重启
  7. 在Linux安装:基于Flakes
    • nixos-install --flake github:你的配置#主机名
  8. SSH安装:nixos-anywhere远程覆盖安装
    • nix run github:numtide/nixos-anywhere -- --flake .#hostname root@target
  9. 虚拟机安装 (VM Installation)
    • 创建 VM(Linux 类型,≥768MB RAM,≥10GB 磁盘)
    • 挂载 ISO 作为 CD-ROM
    • 引导并跟随安装步骤
    • 在 configuration.nix 中
      • boot.loader.grub.device = "/dev/sda";
      • boot.initrd.checkJournalingFS = false;
    • 支持共享文件夹配置
  10. 网络引导安装 (Netboot/PXE)
    1. 在另一台机器构建 netboot 文件:nix-build -A netboot.x86_64-linux '<nixpkgs/nixos/release.nix>'
    2. 配置 DHCP/TFTP 服务器提供 kernel/initrd
    3. PC 从网络引导,执行手动安装步骤

虚拟机安装 (VM Installation)

  • 创建 VM(Linux ,8GB+100GB+1芯2核,LSI Logic+nvme,00:0C:29:9A:DC:F4,分配IP85)
  • 装载引导 nixos-graphical-25.11.1335.09eb77e94fa2-x86_64-linux.iso
    • 选择Plasma桌面的Linux LTS
  • 安装流程
    • 内存要求最低3G
    • 语言位置:简体中文,上海
    • 键盘:Generic 105-key PC Chinese Default
    • 用户:姓名test,登录名ghost,密码4空,管理员密码1~6
    • 桌面:Plasma
    • 软件:不允许unfree软件
    • 分区:自动(/dev/nvme0n1,格式ext4,swap)写bootloader引导记录,主区设为boot
    • 点击安装,有日志可以看,如果不能走代理,会贼慢
    • 完成重启,启动真快!
  • 初次使用

手动安装 (Manual Installation)

  • 安装

    # 1. 分区(示例:1 个 EFI + 1 个根分区)
    parted /dev/sda -- mklabel gpt
    parted /dev/sda -- mkpart primary 512MiB -8GiB          # 第1个分区 → /dev/sda1
    parted /dev/sda -- mkpart primary linux-swap -8GiB 100% # 第2个分区 → /dev/sda2(swap)
    parted /dev/sda -- mkpart ESP fat32 1MiB 512MiB         # 第3个分区 → /dev/sda3(EFI)
    parted /dev/sda -- set 3 esp on                         # 设置第3个分区为 esp
    
    # 2. 格式化
    mkfs.fat -F 32 -n BOOT /dev/sda3          # EFI 分区
    mkfs.ext4 -L nixos /dev/sda1              # 根分区
    mkswap -L swap /dev/sda2 && swapon /dev/sda2   # swap 可选
    
    # 3. 挂载
    mount /dev/sda1 /mnt
    mkdir -p /mnt/boot
    mount /dev/sda3 /mnt/boot
    
    # 4. 生成配置(系统配置文件和硬件配置文件)
    nixos-generate-config --root /mnt
    
    # 5. 修改配置(最关键!必须加这两行,不然重启会黑屏)
    nano /mnt/etc/nixos/configuration.nix
    # 至少要加入:
    #   boot.loader.systemd-boot.enable = true;
    #   boot.loader.efi.canTouchEfiVariables = true;
    
    # 6. 安装系统
    nixos-install --cores 0 install   # 25.11 起推荐写 nixos-install --cores 0 install
    
    # 7. 安装过程中会让你设置 root 密码
    # 8. 安装完成 → 直接 reboot
    reboot
  • 首次开机设置

    # 1. 第一次更新系统 + 开启 flakes(强烈推荐)
    nixos-rebuild switch --upgrade
    
    # 2. 把你的 flake 配置(如果有)拉下来直接接管系统
    git clone https://github.com/你的用户名/your-nixos-config /etc/nixos
    cd /etc/nixos
    nixos-rebuild switch --flake .#hostname
    
    # 3. 以后日常更新就这一条
    nixos-rebuild switch --upgrade --flake /etc/nixos#hostname

复用配置安装

  • 手动模式安装
    • ISO引导进终端
    • 到完成生成配置文件这步
    • 复用旧配置文件
      • 复用旧配置文件 cp /run/media/nixos/USB/configuration.nix /tmp/my-config.nix
      • 如果你的旧配置文件里没有 imports硬件配置,则imports = [ ./hardware-configuration.nix ]
      • 如果硬件相同,则两个配置文件都覆盖掉
    • 完成后续步骤
  • 旧系统自动生成Disko配置
    • 安装工具 nix profile install github:nix-community/nixos-generators
    • Disko加入到远程Flake配置 sudo nix run github:nix-community/nixos-generators – --format disko --system x86_64-linux --flake /etc/nixos#your-hostname > /tmp/disko-generated.nix
    • Disko自动生成为Flake设计,无本地配置脚本
  • 本地配置Disko模式
    • u盘引导+含Disko配置文件
    • 复用配置文件 cp /run/media/nixos/USB/configuration.nix /tmp/my-config.nix
    • 自动分区 nix run github:nix-community/disko -- --mode format /tmp/my-config.nix
    • 自动挂载 nix run github:nix-community/disko -- --mode mount /tmp/my-config.nix
    • 安装 nixos-install --root /mnt
  • 远程配置Flake+Disko模式
    • u盘引导+含Disko配置文件
    • 复用配置文件 git clone https://github.com/你的用户名/your-config /tmp/my-flake
    • 安装 nixos-install --flake /tmp/my-flake#hostname
  • SSH安装nixos-anywhere模式
    • nix run github:numtide/nixos-anywhere -- --flake github:你的用户名/your-nixos-config#新主机名 root@目标机器IP

常见故障排除