在这里插入图片描述

一、为什么NixOS

突发噩耗

上周的某个晚上,我在用Arch时突然电脑就异常卡顿,然后我一个reboot发现关不了机,一直卡在光标哪里,等了几分钟都没重启,然后我就强制关机,重启发现进不去系统,拥有btrfs+timeshift的我并不慌,我尝试切出tty,没有用,就找出U盘,想用livecd来挂载硬盘来恢复,然后发现硬盘无法挂载,这时候我发现不对劲了,连忙重启狂按F12想要进入Win11 (我的Win11和Arch分别安装在两块不同的硬盘),然后震惊的一幕出现了,Win11蓝屏了。
因为双系统分别在两块不同的硬盘上,按理来说我的Arch挂了也不会影响我的Win11,所以我确定是硬件问题,看了一下蓝屏信息,显示是内存问题,因为是硬件问题,我处理不了,然后就等第二天去售后修电脑,等了一天,售后联系我说安装Linux的那块硬盘损坏了,导致Win11蓝屏,当他们用自己的硬盘测试时内存没有问题,用我的盘就直接蓝屏,然后售后的用DiskGenius测试了一下我的Linux盘,有几个磁盘坏道,好在格式化后坏道没有了,但健康度很低,这可是我一个月前刚买的SN770 1T。
在这里插入图片描述

痛定思痛

想了一下原因,我很大程度上怀疑是btrfs干的,因为我前两次Arch挂了都有它有关,所以我不敢再尝试用这个文件系统了,但没有btrfs的Arch是没有灵魂的,这意味着我必须舍弃Arch,转用ext4文件系统的发行版。
但舍弃了Arch系,我又不想用debian系,更不想用红帽系,似乎我没有选择了,我想要可以吃"后悔药"的,使用ext4作为文件系统的发行版,还有什么选择呢?然后我就发现了NixOS。

二、我对NixOS的一些思考

网上说NixOS很复杂,很难,但当我接触后,发现也不是那么难(打包另说),至少安装不难,最小化安装肯定没有Arch折腾,这是可以肯定的。
那它的"难"又难在哪里呢?我认为很大程度上在于新定义的难,毕竟NixOS对于传统Linux发行版有很大的区别,而这些区别也是它的优点。我认为想要入手NixOS,你可以先用一天把这个系统的运行方式,flake,home-manage(非必须)了解了后,操作起来就非常简单的(其实只要先知道有configuration.nix这个文件来全局配置系统就可以进入下一步了)
分享一个网站,可以大致了解这些新概念: 戳这里

在这篇文章中,你甚至可以不用了解flake和home-manager,因为我的初始配置全写在configuration.nix里(虽然回来迁移到flake了),但至少这对于你想快速上手NixOS下的Hyprland是一个不错的选择。

三、安装NixOS

错误的安装方式

我第一次物理机安装NixOS使是图形化界面安装(官网推荐的gnome环境的iso镜像,我不要最小化镜像的原因是在虚拟机试过几次都没有成功,而且图形化安装的默认ext4文件系统就合我心意,也不需要折腾硬盘分区),然后从早上七点安装到中午十二点都没完成,这直接把我干傻了。
(PS:取用户名不要用"nix",不然以后使用flake会有问题)

新的安装方式

第二次安装,在选择桌面时选择了"no desktop",几分钟就可安装完。

四、substituters&hosts的相关配置

安装后重启进入系统,输入命令:

sudoedit /etc/nixos/configuration.nix

然后加入:

  #substituters mirrors
   nix.settings = {
      substituters = [
        "https://mirror.sjtu.edu.cn/nix-channels/store"
        "https://cache.nixos.org"
        ];
  };

  #hosts
   networking.hosts = {
     "140.82.114.4" = ["github.com"];
  };

Ctrl + O保存(注意保存的路径为/etc/nixos/configuration.nix)覆盖原文件,然后更新:

nixos-rebuild switch

这样我们就可以使用国内源了。
再次进入configuration.nix,在最下面的“environment.systemPackages”中修改增加自己喜欢的软件,可以去官网查看是否有相关软件:官网
像我的:

  { config, lib, pkgs, ... }:
  {
  ......(省略前面的配置)
  
  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
    vim 
    wget
    git
    curl
    firefox
    qq
    unzip
    unrar
  ];
  }

五、安装Hyprland

因为NixOS的Hyprland不会自动生成配置文件,使用我们得先安装一个桌面来下载,复制Hyprland的配置文件,这样更简单。
但不用担心,因为NixOS的特性,我们在用完这个临时桌面后只要把它的相关代码删除或注释掉,这个桌面就会被完全移除,非常干净。
当然,如果你不想安装临时桌面,想要直接从github仓库上clone相关配置文件然后cp或mv也是可以的,因为我的Hyprland配置文件在我的私人QQ群里,所以我安装了gnome环境,下载了QQ。
在这里插入图片描述

安装Gnome:

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

重启后即可进入Gnome。打开QQ,把Hyprland的配置文件下载,拷贝到 ~/.config中,命令行操作同理,git后cp到此目录下即可。

上手Hyprland

完成上面的步骤后,第二步就是安装Hyprland。
编辑/etc/nixos/configuration.nix
(这时候就可以把gnome的代码注释掉,相当于完全卸载gnome)

    # Enable Hyprland
  programs.hyprland.enable = true;
  environment.sessionVariables.NIXOS_OZONE_WL = "1";
  environment.sessionVariables.WLR_NO_HARDWARE_CURSORS = "1";
  services.xserver.displayManager.gdm.enable = true; 

然后编辑"environment.systemPackages":

  { config, lib, pkgs, ... }:
  {
  ......(省略前面的配置)
  
  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
###### Hyprland ###########

    libsForQt5.qt5.qtwayland
    kdePackages.qtwayland
    hyprland
    pyprland
    xwayland
    hyprpicker
    hyprcursor
    hyprlock
    hypridle
    hyprpaper
    waypaper
    hyprshot
    kitty
    waybar
    wofi
    wlogout
    dunst    
    hyprshade
  ];
  
  }

里面的一些软件你们自行决定,像wofi和rofi,我用的是wofi,因为我感觉rofi在wayland下运行不太好。
弄好好退出编辑,再更新一次:

nixos-rebuild switch

最后重启:

reboot

再次进入gdm后选择Hyprland会话,就可以愉快地使用Hyprland了。

六、设置中文输入法

NixOS设置中文输入法也不难,加入:

  # fcitx5
  environment.variables = {
    GTK_IM_MODULE = "fcitx";
    QT_IM_MODULE = "fcitx";
    XMODIFIERS = "@im=fcitx";
  };
    i18n.inputMethod = {
    enable = true;
    type = "fcitx5";
    fcitx5.addons = with pkgs; [
      fcitx5-rime
      fcitx5-chinese-addons
    ];
  };
  

PS;下面是我用的字体:

      # Fonts
  fonts.packages = with pkgs; [
    jetbrains-mono
    nerd-font-patcher
    noto-fonts-color-emoji
  ];
 

你也可以自己选择别的字体。

退出后更新系统

nixos-rebuild switch

重启,进入命令行输入

fcitx5-configtool

增加rime
在这里插入图片描述
在托盘的rime设置选择简化字就可以输入简体中文了。

七、结语

总的来说,NixOS确实是一个很好的发行版,我愿意称之为先天服务器圣体,它的可复现性真的很有用,现在我已经回不去Arch了,我的老年西数硬盘可经不起Arch的折腾,至少当这块硬盘爆了后,我可以从容地买一块新硬盘,然后拷贝我的备份的配置文件,然后复现我的系统。
但还是有一点要说明,学习NixOS前前后后一共花费了我差不多一周的时间,所以这个系统只时候有时间和经理去折腾的人。
当然,我只入门NixOS不到一周,有些东西我也不清楚,这个教程和我的看法仅代表我个人见解,供大家参考。

下面是成品:
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐