xuhongdi287

博客园 首页 新随笔 联系 订阅 管理

初识 NixOS

什么是 NixOS

NixOS 是一个基于 Nix 包管理器的 Linux 发行版,它以其独特的声明式配置和不可变系统设计而闻名。与传统 Linux 发行版不同,NixOS 采用了一种全新的方式来管理系统配置和软件包。

核心特点

1. 声明式配置

NixOS 的核心思想是声明式配置。你只需在配置文件中声明系统的期望状态,Nix 会自动处理所有依赖关系并构建出完整的系统。

# /etc/nixos/configuration.nix
{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  boot.loader.grub.enable = true;
  boot.loader.grub.device = "/dev/sda";

  networking.hostName = "my-nixos";
  
  services.xserver.enable = true;
  services.xserver.desktopManager.gnome.enable = true;
  
  environment.systemPackages = with pkgs; [
    vim
    git
    firefox
  ];
  
  users.users.myuser = {
    isNormalUser = true;
    extraGroups = [ "wheel" ];
  };
}

2. 不可变系统

NixOS 系统文件是不可变的,所有修改都通过重新构建系统实现。这意味着:

  • 系统永远不会进入不一致状态
  • 可以轻松回滚到之前的配置版本
  • 多个配置版本可以共存

3. 原子升级与回滚

使用 nixos-rebuild 命令进行系统升级:

# 升级系统
sudo nixos-rebuild switch --upgrade

# 回滚到上一个版本
sudo nixos-rebuild switch --rollback

# 列出所有可用的系统配置
nix-env -p /nix/var/nix/profiles/system --list-generations

4. 强大的包管理

Nix 包管理器提供了:

  • 依赖隔离:每个包都有独立的依赖环境
  • 多版本并存:可以同时安装同一软件的多个版本
  • 可重现构建:相同的 Nix 表达式总是产生相同的结果
# 安装包
nix-env -iA nixos.firefox

# 安装特定版本
nix-env -iA nixos.hello

# 搜索包
nix search hello

安装 NixOS

下载镜像

NixOS 官方网站 下载最新的安装镜像。

创建安装介质

# 使用 dd 写入 USB 驱动器
sudo dd if=nixos-23.11-x86_64-linux.iso of=/dev/sdX bs=4M status=progress

安装步骤

  1. 启动安装介质,进入 live 系统
  2. 分区:使用 cfdiskgdisk 创建分区
  3. 格式化分区:通常使用 ext4 文件系统
  4. 挂载分区:挂载根分区到 /mnt
  5. 生成配置
sudo nixos-generate-config --root /mnt
  1. 编辑配置
sudo nano /mnt/etc/nixos/configuration.nix
  1. 安装系统
sudo nixos-install
  1. 设置 root 密码并重启系统

基本操作

配置管理

# 编辑系统配置
sudo nano /etc/nixos/configuration.nix

# 应用配置(切换到新配置)
sudo nixos-rebuild switch

# 仅构建不切换
sudo nixos-rebuild build

# 测试配置(不切换)
sudo nixos-rebuild test

# 在下次启动时应用
sudo nixos-rebuild boot

用户包管理

# 安装用户包
nix-env -iA nixos.vim

# 列出已安装的包
nix-env -q

# 卸载包
nix-env -e vim

# 更新用户环境
nix-env -u

清理旧版本

# 清理旧的系统配置
sudo nix-collect-garbage -d

# 清理用户环境中的旧包
nix-collect-garbage

NixOS 的优势

可靠性

  • 配置错误不会破坏系统
  • 可以随时回滚到之前的工作状态
  • 系统更新不会导致依赖冲突

可重现性

  • 相同的配置文件在任何机器上产生相同的结果
  • 便于团队协作和配置共享
  • 适合服务器部署和基础设施即代码

灵活性

  • 支持多种桌面环境(GNOME、KDE、XFCE 等)
  • 易于定制和扩展
  • 强大的表达式语言支持复杂配置

学习资源

你可以查找的

总结

NixOS 是一个具有革命性设计理念的 Linux 发行版。虽然学习曲线较陡,但其带来的可靠性、可重现性和灵活性使其成为开发者和系统管理员的理想选择。如果你厌倦了传统 Linux 发行版的配置混乱和依赖问题,不妨尝试一下 NixOS。

附加信息

使用TRAE生成,若有误,请指正。

posted on 2026-05-19 21:31  xuhongdi287  阅读(277)  评论(0)    收藏  举报