omg, i cant type chinese because of nixos

nix魔怔人的两天
是这样的,这几天没往blog里面倒垃圾是因为我在备份做错的情况下rf -rm /home了
这下不得不跟arch linux说再见了
于是就趁这个机会,安装了我一直心心念念的nixos
现在要入坑nixos,感觉必须了解flakes和home manager了,尤其是前者
我搞了两天,只能说没怎么理解,但是用是能用起来了,先用起来,之后再去看看官方文档,就差不多能理解了我猜
但是现在也已经有template可以抄了,我觉得nix-config-starter就是一个很好的选择,非常modular
该推荐别人用nixos吗,我的答案是否
首先是难度问题
nixos的受众必须具有一定Linux基础,一个没怎么用过Linux的人,会无从下手
我之前只用过arch。都说arch很难,我表示怀疑,我同学也在用,我们应该都觉得arch对新手,非常友好。只要你肯照着arch wiki做
但nixos wiki并不会告诉你,你想定义环境变量要在shellAlias里面搞,出来的东西会在.profile
在我看来,一个是照着做就行,一个是得查+试
有一个问题,我觉得是关于nix哲学的,那就是为了purity,你必须克制
当然你也可以选择impure,部分pure我觉得也完全没有问题,但是只要你用了nixos,你就逃不开这个问题,逃不开purity对你环境的限制
写一点我踩过的坑吧:
nix的option有些在home manager里面不能使用,建议查home manager的options来对照
原始字符串需要这么写:''hello''
更新channel
sudo nix-channel --add https://channels.nixos.org/nixos-unstable nixos
sudo nix-channel --update使用 --impure 选项执行 nixos-rebuild 命令会引入一些潜在的不可逆影响。--impure 选项允许在系统配置中引入一些不纯的元素,例如从全局状态中读取信息或者执行命令。这可能导致配置不再是纯函数,并可能导致一些问题,例如不确定性、依赖于系统状态的行为和难以复现的问题。
我有一次用了绝对路径,所以得到了impure的警告
我们至少需要一个 nixpkgs 实例(每个系统)。问题是谁来持有它。
如果你的 flake 除了 nixpkgs 没有其他依赖,使用其中之一并没有区别。问题出现在当 flake A 依赖于 flake B,并且两者都创建自己的 nixpkgs 实例时。规模扩大后,这将成为一个问题。
如果你的所有 flakes 使用 nixpkgs.legacyPackages,并且它们都“跟随”同一个 nixpkgs flake,那么这是确保只使用一个 nixpkgs 实例的好方法
系统的回滚也变得非常简单,只需要切换到上一个 commit 即可:
git checkout HEAD^1NixOS 不遵循 FHS (File Hierachy System)标准,因此你从网上下载的二进制程序在 NixOS 上大概率是跑不了的。 为了在 NixOS 上跑这些非 NixOS 的二进制程序,需要做一些骚操作