入门安装(nixos 从0实现全集 梦中情os )

本文记录全新安装,以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

基础安装参考

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计