我的 NixOS 安装记录

警告
本文最后更新于 2024-04-06,文中内容可能已过时。

我这次安装 NixOS 做的额外的工作,也就是除官方文档之外的安装步骤。这里我用 WM 用的是 Hyprland

我的 NixOS 安装记录

在上个月,我还在使用着 Gentoo Linux,那时我还在想应该可以一直使用下去,结果后来有个组件需要用到 systemd,于是我准备从 openrc 换到 systemd,同时因为 pipewire 也很依赖 systemd,我用 openrc 的同时用 pipewire 总有一点不太得劲。但是我的环境也许有些独特了,或者是我自身实力不够,反正我无法以一种较为优雅的方式从 openrc 换到 systemd

后来我就想到了 NixOS,曾经我被它那些新鲜的特性搞得不知道从何下手(虽然现在我也不太能下手)。

我不好评价为什么我改成 grub 之后,grub-install 根本没有写入,我改回了 systemd-boot 就行了。后来我在搜相关问题的时候发现有人指出需要这个设置:

1
boot.loader.efi.canTouchEfiVariables = true;

由于我这个电脑现在是 Windows 11 + NixOS,所以我需要使用 grub 才可以

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
boot.loader.efi.canTouchEfiVariables = true;
boot.loader = {
  systemd-boot.enable = false;
  grub = {
    enable = true;
    device = "nodev";
    efiSupport = true;
    useOSProber = true;
  };
};

Hyprland 默认就是 Wayland,但是对于一些尚未完全准备充分的(比如 Chromium 内核的软件)软件需要加 environment.sessionVariables.NIXOS_OZONE_WL = "1";。但是对于老版本的 Electorn 应用来说,哪怕这个环境变量启用了也于事无补。

众所周知,Chromium 目前启用了 Wayland 之后就需要附加命令行参数的方式才能正常使用输入法。目前我只使用了 Brave 和 vscodium 需要这一点。

 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
home.packages = with pkgs;[
  (
    (brave.override {
      commandLineArgs = [
        "--enable-wayland-ime"
        "--ozone-platform=wayland"
        "--enable-features=UseOzonePlatform"
        # "--use-gl=egl"
      ];
    }).overrideAttrs
    (old: {
      # inherit (pkgs.guangtao-sources.brave) src pname version;
    })
  )
];

programs.vscode = {
  enable = true;
  enableExtensionUpdateCheck = false;
  enableUpdateCheck = false;
  extensions = with pkgs.vscode-extensions; [
    yzhang.markdown-all-in-one
    pkief.material-icon-theme
    llvm-vs-code-extensions.vscode-clangd
    vadimcn.vscode-lldb
    usernamehw.errorlens
    astro-build.astro-vscode
  ];
  userSettings = {
    "window.titleBarStyle" = "custom";
    "editor.fontFamily" = "Intel One Mono";
    "editor.fontSize" = 17;
    "telemetry.telemetryLevel" = "off";
    "workbench.iconTheme" = "material-icon-theme";
    "workbench.colorTheme" = "Quiet Light";
  };
  package =
    (pkgs.vscodium.override
      {
        commandLineArgs = [
          "--ozone-platform-hint=auto"
          "--ozone-platform=wayland"
          "--enable-wayland-ime"
        ];
      });
};

这里可以看到使用的是 vscode,而不是 vscodium,因为 vscodium 还没有这些配置选项,所以就用 vscode,替换掉 vscode 的 package 这样用了。

我将我自己在使用 NixOS 时的 configuration.nix 等文件上传到了 GitHub 仓库中: https://github.com/suoyuan666/NixOS_configfiles