首页
/ NixOS虚拟机配置教程:从入门到图形界面部署

NixOS虚拟机配置教程:从入门到图形界面部署

2025-07-10 03:04:48作者:庞队千Virginia

前言

NixOS作为一款基于Nix包管理器的Linux发行版,其最大的特色就是支持声明式系统配置。本教程将详细介绍如何在虚拟机环境中配置和运行NixOS系统,适合想要学习NixOS配置或进行系统测试的开发者和运维人员。

准备工作

在开始之前,请确保您的系统满足以下要求:

  1. 支持虚拟化的Linux系统
  2. 如需运行图形界面虚拟机,需要图形环境支持
  3. 已安装Nix包管理器
  4. 具备基础的Nix语言知识

基础配置创建

生成默认配置

使用nixos-generate-config命令可以创建一个包含默认值和配置建议的文件:

nix-shell -I nixpkgs=channel:nixos-24.05 -p "$(cat <<EOF
  let
    pkgs = import <nixpkgs> { config = {}; overlays = []; };
    iso-config = pkgs.path + /nixos/modules/installer/cd-dvd/installation-cd-minimal.nix;
    nixos = pkgs.nixos iso-config;
  in nixos.config.system.build.nixos-generate-config
EOF
)"

执行后会生成两个文件:

  • hardware-configuration.nix:硬件相关配置(虚拟机中可忽略)
  • configuration.nix:系统主配置文件

基础配置示例

一个基本的NixOS虚拟机配置应包含以下内容:

{ config, pkgs, ... }:
{
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  users.users.alice = {
    isNormalUser = true;
    extraGroups = [ "wheel" ];  # 启用sudo权限
    initialPassword = "test";   # 初始密码(仅用于测试)
  };

  environment.systemPackages = with pkgs; [
    cowsay
    lolcat
  ];

  system.stateVersion = "24.05";
}

安全提示:生产环境中不应使用明文密码,建议使用initialHashedPassword或SSH密钥认证。

构建和运行虚拟机

构建虚拟机镜像

使用以下命令构建虚拟机:

nix-build '<nixpkgs/nixos>' -A vm -I nixpkgs=channel:nixos-24.05 -I nixos-config=./configuration.nix

构建完成后会生成result目录,包含虚拟机运行脚本。

运行虚拟机

以命令行模式运行:

QEMU_KERNEL_PARAMS=console=ttyS0 ./result/bin/run-nixos-vm -nographic; reset

登录用户名:alice,密码:test

验证安装的程序:

cowsay hello | lolcat

关机命令:

sudo poweroff

注意事项

虚拟机运行后会生成nixos.qcow2磁盘镜像文件,它保存了虚拟机的状态。如需全新测试环境,可删除此文件:

rm nixos.qcow2

图形界面配置

GNOME桌面环境

在配置文件中添加以下内容启用GNOME桌面:

services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;

构建并运行虚拟机:

nix-build '<nixpkgs/nixos>' -A vm -I nixpkgs=channel:nixos-24.05 -I nixos-config=./configuration.nix
./result/bin/run-nixos-vm

Sway Wayland合成器

将GNOME配置替换为:

programs.sway.enable = true;

运行虚拟机时需要指定兼容的显示驱动:

./result/bin/run-nixos-vm -device virtio-vga

或者通过配置文件指定:

imports = [ <nixpkgs/nixos/modules/virtualisation/qemu-vm.nix> ];
virtualisation.qemu.options = [
  "-device virtio-vga"
];

高级配置建议

  1. 网络配置:可以添加网络接口配置,使虚拟机能够访问外部网络
  2. 共享文件夹:配置主机与虚拟机之间的文件共享
  3. 资源分配:调整CPU核心数和内存大小
  4. 服务测试:在虚拟机中测试各种NixOS服务配置

常见问题解决

  1. 图形界面无法启动:检查是否启用了正确的显示驱动
  2. 登录失败:确认用户配置正确,或删除nixos.qcow2重新构建
  3. 性能问题:调整虚拟机资源配置,启用KVM加速

总结

通过本教程,您已经学会了:

  1. 创建基本的NixOS虚拟机配置
  2. 构建和运行NixOS虚拟机
  3. 配置图形界面环境
  4. 解决常见问题的方法

NixOS的声明式配置方式使得系统配置可重复、可验证,非常适合在虚拟机环境中进行测试和开发。