本文记录全新安装,以VMware + efi 为例 ,模拟真实物理机的安装。
准备
安装镜像
这里用 Minimal ISO image
https://nixos.org/download.html#nix-more 找到 Minimal ISO image 下载 比如我这里是 nixos-minimal-23.11.5213.b94a96839afc-x86_64-linux.iso
准备VMware
VMware创建虚拟机 选择自定义 安装程序光盘映像选择 上面下载的 nixos-mino 操作系统 选择 linux 发行版 选择 Fedora 64 位(可以开efi),cpu和内存自己看着弄,磁盘类型这里选择nvme,创建新虚拟磁盘,4G以上哦,我这选20G。
配置虚拟机
完成后不需要启动虚拟机,配置虚拟机 在显卡的地方 可以选择打开3D加速,但是显存调整一下,给512M-768M 就够了。
虚拟的选项 高级里面 有固件类型 选为efi。
启动minimal安装映像
因为这里是虚拟机环境,一般不需要配置网络,所以直接装就可以。如果你需要配置网络 参考 https://nixos.org/manual/nixos/stable/#sec-installation
为了方便 ,还是本地物理机ssh进去操作。光盘环境 默认是密码都是空的,所以执行 sudu passwd
给root设置一个密码 ip a
查看一下ip
然后本机 ssh root@192.168.xx.xx 进去。
分区配置
我这里分三个区 分别 efi / 和 swap
1
2
3
4
5
6
7
8
9
| parted /dev/nvme0n1 -- mklabel gpt
parted /dev/nvme0n1 -- mkpart ESP fat32 1MB 512MB
parted /dev/nvme0n1 -- mkpart primary 512MB -2GB
parted /dev/nvme0n1 -- mkpart swap linux-swap -2GB 100%
parted /dev/nvme0n1 -- set 1 esp on
mkfs.fat -F 32 -n boot /dev/nvme0n1p1
mkfs.btrfs -L NIXOS /dev/nvme0n1p2
mkswap -L swap /dev/nvme0n1p3
|
查看分区情况
1
2
3
4
5
6
7
8
| lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,LABEL
NAME SIZE TYPE MOUNTPOINT LABEL
loop0 918.2M loop /nix/.ro-store
sr0 964M rom /iso nixos-minimal-23.11-x86_64
nvme0n1 20G disk
├─nvme0n1p1 487M part boot
├─nvme0n1p2 17.7G part NIXOS
└─nvme0n1p3 1.9G part swap
|
挂载
1
2
3
4
| mount /dev/disk/by-label/NIXOS /mnt
mkdir -p /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
swapon /dev/nvme0n1p3
|
更新livecd
这一步非必须的,nix的国内源都不稳定 使用之前最好问一下哪个源在当前时间下比较靠谱。
1
2
3
4
5
6
7
8
9
10
11
12
| sudo -i
nix-channel --add https://mirrors.ustc.edu.cn/nix-channels/nixpkgs-unstable nixpkgs # 订阅镜像仓库频道
nix-channel --add https://mirrors.ustc.edu.cn/nix-channels/nixos-23.11 nixos # 请注意系统版本
nix-channel --list
----------------------------
#nixos https://mirrors.ustc.edu.cn/nix-channels/nixos-23.11
#nixpkgs https://mirrors.ustc.edu.cn/nix-channels/nixpkgs-unstable
----------------------------
nix-channel --update # 更新并解包频道
# nixos-rebuild --option substituters https://mirrors.ustc.edu.cn/nix-channels/store switch --upgrade # 临时切换二进制缓存源,并更新生成
nixos-rebuild --option substituters https://mirror.sjtu.edu.cn/nix-channels/store switch --upgrade # 临时切换二进制缓存源,并更新生成
|
创建和编辑 nix配置
生成一个基础的
1
| nixos-generate-config --root /mnt
|
简单修改一下
/mnt/etc/nixos 下默认有两个文件 configuration.nix 和 hardware-configuration.nix 。configuration 是nixos目前的唯一配置文件,hardware-configuration是硬件相关的,里面默认只有nixos-generate-config帮你生成的硬盘挂载信息。
目前我们并没有 启用 flakes 所以 没有flakes相关的。 新文章会包含flakes的相关内容
1
2
| cd /mnt/etc/nixos
nano configuration.nix
|
下文中几个特别说明
- virtualisation.vmware.guest.enable = true; 启用 vmtools
- nixpkgs.config.allowUnfree = true; 是否使用非开源自由软件,按需要开启
- users.mutableUsers = false; 禁止使用useradd 之类的指令添加新用户 按需要
- users.users.yh= 自动创建一个用户 用户名为 yh 你可以删掉整段
- 里面的 hashedPassword 是这个用户的密码hash
- sound.enable
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| { config, lib, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
nix.settings.substituters = [ "https://mirror.sjtu.edu.cn/nix-channels/store" ];
nixpkgs.config.allowUnfree = true;
networking.hostName = "nixos"; # Define your hostname.
time.timeZone = "Asia/Shanghai";
virtualisation.vmware.guest.enable = true;
sound.enable = true;
users.mutableUsers = false; # 禁止useradd添加用户
#security.sudo.wheelNeedsPassword = false;
users.users.yh= { #用户名是yh
isNormalUser = true;
hashedPassword = "*************";
extraGroups = [
"wheel"
"users"
];
};
environment.systemPackages = with pkgs; [
wget
curl
unzip
];
services.openssh.enable = true;
users.users.root.openssh.authorizedKeys.keys = [
"ssh-rsa *** joyanhui@qq.com"
];
users.users.yh.openssh.authorizedKeys.keys = [
"ssh-rsa *** joyanhui@qq.com"
];
system.stateVersion = "23.11";
}
|
安装
1
2
| cd /mnt
nixos-install --show-trace --option substituters https://mirror.sjtu.edu.cn/nix-channels/store
|
安装完成后
安装最后会让你输入root密码,但是偶尔会无效,所以需要单独切换到新系统里面 配置root密码
1
2
| nixos-enter # 进入部署好的系统,类似 arch 的 chroot
passwd root # 重置 root 密码
|
如果你需要手动添加用户
1
2
| useradd -m -G wheel username1 # 添加普通用户,并加入 wheel 组
passwd username1 # 设置普通账户密码
|
切换到flakes
基础安装参考