我 23 年 4 月开始尝试使用 NixOS ,而现在是 2024 年 2 月,距离我入坑 NixOS 刚好 10 个月,我当初写的新手笔记已经获得了大量好评与不少的赞助,并成为了整个社区最受欢迎的入门教程之一。自 2023 年 6 月我为它专门创建一个 GitHub 仓库与单独的文档站点以来,它已经获得了 1189 个 stars ,除我之外还有 37 位读者给它提了 PR:
那么作为一个已经深度使用 NixOS 作为主力桌面系统接近 10 个月的熟手,我在这里也从另一个角度来分享下我的入坑体会。
1
lucifer9 276 天前 via iPhone
至少不适合 kde 用户吧
|
3
lucifer9 276 天前 via iPhone
目前只有 kde 支持 Xwayland 分数缩放效果最好。另外如果常用 app 有 qt 的有 gtk 的,sway 或者 hypr 下想保持类似的外观有点儿麻烦
|
5
param 276 天前 via Android
想换 Nix 好多年了。。但因为用好了 Arch ,切换又要学习成本和适应成本。
|
6
ltkun 276 天前 via Android
nix 找了一篇简介看了半天 没看懂是啥 还是 Arch 文档多 官方都有中文哈 查了下 wiki 也没中文条目 一看发行日期 2003 好吧 那时候在用 gentoo 后来换 Debian Ubuntu
|
8
zeromake 276 天前
wayland hidpi 下的 vscode ( chrome 有相同问题) 一直有各种问题,ime 一直搞不定,更新的太新了还会导致不能适配 hidpi 然后很模糊……,重点是 ime 还是不能用,没有 vscode 暂时不打算搞 linux 了
|
9
AlicFeng 276 天前
极力推荐 `ElementoryOS` 操作系统,很舒服、很爽!大学时期使用至今,八年的时间了
|
10
Maboroshii 276 天前 1
@zeromake 现在 fcitx5 在 wayland+kde 下的 chrome 系问题不大了 ,愿意折腾的话,可以再试试。 参考 https://wiki.archlinuxcn.org/wiki/Fcitx5 以及 https://wiki.archlinuxcn.org/wiki/Wayland
|
11
mikasyou 275 天前
我的 vscode 在 hyprland 上以原生 wayland 没啥大问题,就是不知道为什么 chromium 系的窗口软件切换焦点时,输入法就无效了,必须用一个 gtk/qt 窗口刷新下焦点才行。不过也还好。。。为了平铺忍了
|
12
youknowiam 275 天前
Gentoo 路过,舒服
|
13
sky96111 275 天前
@zeromake hidpi 模糊的问题,两个选择,要么打开 DE 的分数缩放功能,要么 Chrome/Chromium/Electron app 启动时加参数 --disable-features=WaylandFractionalScaleV1
https://www.reddit.com/r/archlinux/comments/13gtogn/chrome_browser_blurry_text_after_gnome_441_update/ IME 没法用没什么办法,谷歌不解决 |
14
yzld2002 275 天前 1
|
16
Moming 275 天前
之前尝试过 NixOS ,感觉用不来,很多包都是社区成员提供的,有些过期不能用的也没办法,也极少有官方来维护的。最后还是自己滚 fedora ,基本的环境配置搞一份同步到 GitHub ,有需要的环境走 Docker ,毕竟这个很多 image 都是有官方维护的版本,需要自己写的也可以抄抄搞一个出来。
|
17
licolicoli 275 天前
NixOS 最痛苦的事情莫过于你想要改某些系统文件而打包者并没有提供相应的选项,这样你就只能自己叠加 overlay, 然而叠完 overlay 的包 hash 会变,于是一连串的包哈希跟着变,于是你再也没法命中二进制缓存,喜提一个大部分包需要你自己编译的系统 XD
|
18
Cooky 275 天前 via Android
不能替换 systemd 的话 nixos 相对来说没什么实质性的进步
|
19
ryan4yin OP > 这样你就只能自己叠加 overlay, 然而叠完 overlay 的包 hash 会变
@licolicoli 目测你用法错了,或者说你是很久以前试用过 NixOS. 现在的用法是这样的: 1. 如果只是想改某个包,你首先应该考虑直接在需要的时候 override 而不是直接 overlay ,这类似生成一个局部变量,系统中其他包依赖的还是没改过的版本 2. 如果你要改一堆东西,那首先应该考虑在你需要的地方 new 一个新的 nixpkgs 实例,这同样类似局部变量,不过比方法一改的范围要更广一些 3. 只有在你确认你需要整个修改系统中的这个包的时候,才应该使用全局的 overlay ,但这就会导致你说的,导致大量的本地编译。 |
20
xiaokanhongchen 275 天前
我试过各种系统,就 nix 给我的感觉,无从下手,其实想想,还是 arch 官方文档最好了,什么都很清楚,知道从哪里着手,nix 试过了,实在是不知道从哪里入手,就看一大堆人推荐,要是有个简明快速上手指南就好了。
|
21
ryan4yin OP @xiaokanhongchen 我这帖子最前面就给了我写的的入门教程啊,如果你想试试 NixOS 的话不妨一看。
不过只面向 nix 用户的教程,目前就只有官方的 nix.dev 了,我这份可以用做参考。 |
22
xiaokanhongchen 275 天前
@ryan4yin 看了一遍,准备在硬盘上装个试试。我简单的理解了一下,类似 docker-compose.yml 配置一样,配置好,容器启动就跟你想要的一样,是不是 nix 也是类似的?也就是一份配置文件,走到哪里安装好都一样的系统和软件配置?
|
23
ryan4yin OP @xiaokanhongchen 是这样的,我入坑时在一台虚拟机上花了 20 天,把我之前的 EndeavourOS + i3wm 配置完全迁移到了 NixOS 上,然后在 PC 上装了个全新的 NixOS ,改一点硬件相关的配置,再一行命令部署,就得到了跟我虚拟机完全一致的环境。
这份教程最初就来自我那 20 天的入坑学习笔记。 |
24
licolicoli 274 天前
@ryan4yin 我当时是在 Pixelbook 上装的 NixOS, 因为音频有问题,需要为 alsa-ucm-conf 加上特定的配置文件,没记错的话是在 overlay 里通过修改 installPhase 的方式把文件复制进去的,似乎也只有最后一种方法?
配置附上: https://docs.chrultrabook.com/docs/installing/distros.html 另外我感觉 NixOS 是有针对各种不同的机器作优化配置,例如这里的 [nixos-hardware]( https://github.com/NixOS/nixos-hardware),但似乎 Pixelbook 的配置是个空壳。 |
25
ryan4yin OP @licolicoli 听起来你肯定用错方式了,你需要的只是加个配置文件,不是重新编译,因此非常大的概率你可以通过方法一或者方法二搞定这件事。
|
26
ryan4yin OP @licolicoli 你提供的文档我看了,它使用的确实是 overlays ,但这不是最佳方案。
能避免大量编译的写法是这样的,把它文档中的第二部分 overlays 删掉,再把第三部分的代码改成这样: ```nix # configuration.nix { # ... environment = { systemPackages = [ pkgs.alsa-ucm-conf.overrideAttrs (old: { wttsrc = (fetchFromGitHub { owner = "WeirdTreeThing"; repo = "chromebook-ucm-conf"; rev = "484f5c581ac45c4ee6cfaf62bdecedfa44353424"; hash = "sha256-Jal+VfxrPSAPg9ZR+e3QCy4jgSWT4sSShxICKTGJvAI="; }); installPhase = '' runHook preInstall mkdir -p $out/share/alsa cp -r ucm ucm2 $out/share/alsa mkdir -p $out/share/alsa/ucm2/conf.d cp -r $wttsrc/{hdmi,dmic}-common $wttsrc/GENERATION/* $out/share/alsa/ucm2/conf.d runHook postInstall ''; }) ]; sessionVariables = { ALSA_CONFIG_UCM2 = "${pkgs.alsa-ucm-conf}/share/alsa/ucm2"; }; }; } ``` |
27
ryan4yin OP @licolicoli V2EX 的代码渲染有点糟糕,你 copy 过去自己格式化一下吧...
|
28
ryan4yin OP 测了没问题的话,可以提个 PR 给他们优化一下,它这示例里还有多余的反斜线啊。
|
29
licolicoli 274 天前
@ryan4yin 多谢老哥!开学这几天比较忙,我过几天试一下。看来还是要多学习啊。
|
30
tywtyw2002 273 天前
nix-darwin 目前有工具可以把 macos 上当前的配置导出成 nix-darwin 配置吗?
还是说 nix-darwin 目前要从 0 开始配? |
31
ryan4yin OP @tywtyw2002 目前 NixOS 都没有这种工具,更别说 nix-darwin 了。
你需要自己研究清楚系统里到底装了啥,再手动编写对应的 nix 配置。 如果你用的是 homebrew 的话,它能导出 brewfile 供参考。 |
32
tywtyw2002 272 天前 via iPhone
@ryan4yin linux 好说 系统没什么设置,主要设置还是 wm 那些,用 dot 就行了。
mac 的话用个 3-4 年,你连设置了什么都不知道了。 |
33
ryan4yin OP @tywtyw2002 所以才需要 nix-darwin 这种工具
|
34
Sliverburger 230 天前
最近被同事种草了 Nix ,我看了下 Nix 主要还是包管理和配置管理吧?理论讲应该可以使用 Archlinux 搭配 Nix 做包和配置管理 而不用 NixOS 是不是?
|
35
ryan4yin OP @Sliverburger Nix 社区这么用的人挺多的,除 NixOS 外用户最大的群体应该是 nix-darwin ,也就是在 macOS 上用 Nix 包管理器。
排名第三的应该就是想在非 NixOS 上用 Nix 的群体。 |
36
ryan4yin OP @Sliverburger 不过我得说 NixOS 才是完全体,在其他 OS 上用 Nix 还是差了点意思。
所以从来没在别的 Linux 发行版上用过 Nix ,入坑后就一直 All in NixOS 了. |