NixOS虚拟机配置教程:从入门到图形界面部署
2025-07-10 03:04:48作者:庞队千Virginia
前言
NixOS作为一款基于Nix包管理器的Linux发行版,其最大的特色就是支持声明式系统配置。本教程将详细介绍如何在虚拟机环境中配置和运行NixOS系统,适合想要学习NixOS配置或进行系统测试的开发者和运维人员。
准备工作
在开始之前,请确保您的系统满足以下要求:
- 支持虚拟化的Linux系统
- 如需运行图形界面虚拟机,需要图形环境支持
- 已安装Nix包管理器
- 具备基础的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"
];
高级配置建议
- 网络配置:可以添加网络接口配置,使虚拟机能够访问外部网络
- 共享文件夹:配置主机与虚拟机之间的文件共享
- 资源分配:调整CPU核心数和内存大小
- 服务测试:在虚拟机中测试各种NixOS服务配置
常见问题解决
- 图形界面无法启动:检查是否启用了正确的显示驱动
- 登录失败:确认用户配置正确,或删除
nixos.qcow2
重新构建 - 性能问题:调整虚拟机资源配置,启用KVM加速
总结
通过本教程,您已经学会了:
- 创建基本的NixOS虚拟机配置
- 构建和运行NixOS虚拟机
- 配置图形界面环境
- 解决常见问题的方法
NixOS的声明式配置方式使得系统配置可重复、可验证,非常适合在虚拟机环境中进行测试和开发。