2025-04-22 14:30:03 +08:00
2025-04-21 23:05:03 +08:00
2023-10-06 12:11:50 +08:00
2025-04-22 14:30:03 +08:00
2023-10-06 12:11:50 +08:00
2025-04-22 12:58:42 +08:00
2025-04-21 21:27:22 +08:00
2025-04-21 21:32:17 +08:00
2023-10-06 12:11:50 +08:00
2023-10-06 12:11:50 +08:00

目录结构

├── home              # home manager 配置信息
│  ├── core.nix       # 核心的通用配置,由其他配置引入
│  ├── desktop.nix    # 桌面环境配置
│  ├── server.nix     # 服务器配置
├── modules           # 通用模块,不同机器可以根据的需要引入
│  ├── home           # home manager 通用模块
│  │  └── -
│  └── nixos          # nixos 通用模块
├── overlays          # 安装包的修改配置
│  └── -
├── pkgs
│  └── -
├── profiles          # 不同机器的配置文件
│  ├── apollo         # 主服务器配置
│  ├── gaea           # 主用机配置
│  └── luna           # 虚拟机配置
├── secrets
│  └── _public_keys_
├── flake.lock
├── flake.nix         # nix flake 入口
├── nixos-install.sh  # nixos 全新安装脚本
└── flake.lock

如何安装?

  1. 准备一个 64 位的 nixos minimal iso image 烧录好,然后进入 live 系统。
  2. 分区

使用 fdisk 或 parted 工具进行分区。现在假设两个分区为:/dev/sda1 /dev/sda2

# 使用parted分区
parted /dev/nvme0n1 mklabel gpt
parted /dev/nvme0n1 mkpart primary fat32 1MiB 1024MiB
parted /dev/nvme0n1 mkpart primary btrfs 1024MiB 95%
  1. 格式化分区
  mkfs.fat -F 32 /dev/nvme0n1p1                 # boot / EFI 分区
  mkfs.btrfs /dev/nvme0n1p2                     # 系统分区
  1. 挂载
  mount /dev/nvme0n1p2 /mnt
  btrfs subvolume create /mnt/home   # home 分区
  btrfs subvolume create /mnt/nix    # nix 分区
  btrfs subvolume create /mnt/swap   # swap 分区

  umount /mnt
  mount -o compress=zstd /dev/nvme0n1p2 /mnt
  mkdir -p /mnt/{boot,nix,home,swap}
  mount /dev/nvme0n1p1 /mnt/boot
  mount -o compress=zstd,noatime,subvol=nix /dev/nvme0n1p2 /mnt/nix
  mount -o compress=noatime,subvol=swap /dev/nvme0n1p2 /mnt/swap
  mount -o compress=zstd,subvol=home /dev/nvme0n1p2 /mnt/home

  btrfs filesystem mkswapfile --size 16g --uuid clear /mnt/swap/swapfile

3.1 不变系统

如何希望使用不变原子系统, 在 profile 中引入 modules/nixos/sysatomic.nix 模块.

  mkdir -p /mnt/{boot,nix}
  mount /dev/nvme0n1p2 /mnt/nix
  mount /dev/nvme0n1p1 /mnt/boot
  1. 生成一个基本的配置
  nixos-generate-config --root /mnt
  1. 克隆仓库到本地
git clone  https://github.com/synebula/.nix.git /mnt/nix/.nix
cd /mnt/nix/.nix
  1. 将 /mnt/etc/nixos 中的 hardware-configuration.nix 拷贝到 /mnt/.nix/profiles/<profile>/hardware-configuration.nix 其中<profile>指需要的 profile。
cp /mnt/etc/nixos/hardware-configuration.nix /mnt/.nix/profiles/<profile>/hardware-configuration.nix
  1. 用户名修改: 编辑 /mnt/.nix/flake.nix 修改 username 变量。

  2. 使用 mkpasswd {PASSWORD} -m sha-512 命令生成的密码哈希串替换掉 /mnt/.nix/modules/nixos/user-group.nix 中的 users.users.<name>.hashedPassword 值替换掉。

  3. 安装

./nixos-install.sh <profile>

# 或者

nixos-install --option substituters "https://mirrors.ustc.edu.cn/nix-channels/store https://cache.nixos.org" --no-root-passwd --flake .#<profile>

  1. 重启
reboot

日常更新系统脚本

./nixos-switch.sh
Description
No description provided
Readme 1,020 KiB
Languages
Shell 58.5%
Nix 39.8%
CSS 1.5%
Python 0.2%