ryan4yin / thiscute.world

Ryan4Yin's Space
https://thiscute.world
17 stars 3 forks source link

posts/nixos-and-flake-basics/ #27

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

NixOS 与 Nix Flakes 新手入门 - This Cute World

https://thiscute.world/posts/nixos-and-flake-basics/

CyrusYip commented 1 year ago

本文有些地方的 Nix 写成小写了。例如:

nix 的缺点

ryan4yin commented 1 year ago

@CyrusYip 嗯嗯我改了一波,大小写应该统一许多了

eval-exec commented 1 year ago

六-7 更新系统 那一节里:

# 更新 flake.lock
nix flake update
# 部署系统
sudo nixos-rebuild switch   (想确认下这里得加上 --flake 吧)

使用了 nix flake 之后,更新系统是不是得在 switch 后面加上 --flake 参数呢? 我看wiki 是这么写的: https://nixos.wiki/wiki/Flakes

ryan4yin commented 1 year ago

@eval-exec 不需要的,六-3 有解释过:「在启用了 Nix Flakes 特性后,sudo nixos-rebuild switch 命令会优先读取 /etc/nixos/flake.nix 文件,如果找不到再尝试使用 /etc/nixos/configuration.nix。」

至于你说的 --flake 参数,是在使用自定义路径的 flakes 配置时才需要添加,之前确实没说清楚,我刚在 六-3 的代码示例中补充了如下注释说明:

# 名为 nixosConfigurations 的 outputs 会在执行 `nixos-rebuild switch` 时被使用
# 默认情况下上述命令会使用与主机 hostname 同名的 nixosConfigurations,但是也可以通过 `--flake /path/to/flake/direcotry#nixos-test` 来指定
# 在 flakes 配置文件夹中执行 `sudo nixos-rebuild switch --flake .#nixos-test` 即可部署此 nixos 配置
#     其中 `.` 表示使用当前文件夹的 Flakes 配置,`#` 后面的内容则是 nixosConfigurations 的名称
ethinx commented 1 year ago

关于 overlay/overrides 可以看看这个视频,我看了后感觉清晰了不少 https://www.youtube.com/watch?v=6VepnulTfu8&ab_channel=NixCon

fbewivpjsbsby commented 1 year ago

文章中 有另外一种方法退回软件包版本 nixpkgs.overlay = [(final: prev: { nixpkgs-stable = nixpkgs-stable.legacyPackages.${prev.system};})]; 根据 overlays 的讨论 说明 overlay 构建性能有影响,这个可以在 overlays 章节说明

ryan4yin commented 1 year ago

@fbewivpjsbsby 感谢反馈!我确实没考虑到性能问题,我会在后续的 overlays 一章中补充说明。

ryan4yin commented 1 year ago

@ethinx 感谢推荐,视频我看了,不过我有疑问的其实不是 overlay 功能本身,我的问题是不知道如何在 nix flakes 中使用它,今天查了下文档把疑问解决了,也更新了下文章内容。

后面应该会把 overrides/overlays 拆到第二篇文章里,并且丰富下内容。

ferstar commented 1 year ago

我选择躺平无脑btrfs+timeshift+grub-btrfs: 每次改动都可以自动快照,不担心挂的问题; 系统迁移也贼简单,btrfs send & receive,然后改下磁盘uuid即可😏

ryan4yin commented 1 year ago

@ferstar 一千个人心中就有一千个哈姆雷特,btrfs 也不寒碜哈哈

Thrimbda commented 11 months ago

Ryan,我的超人! 我是去年 11 月接触了 Nix,主要是因为我用 doomemacs 然后它的作者 Henrik 有维护一个 nix 配置文件的 repo,我被那个 README 深深吸引了:

If the words "declarative", "generational", and "immutable" don't make you fully erect, you're considering NixOS for the wrong reasons.

因为我年轻时候是写 Scala 的嘛,那时候确实是函数式发烧友,写个 python 都强迫自己不用 for 循环的那种病态发烧友,虽然后来退烧了哈哈哈哈,但这些特性真的很吸引我,而且我和你一样也很喜欢折腾系统 & 折腾小众的新鲜玩意,最开始用 vim 的时候是这样,在知道 nix 之前用 Arch 的时候也是这样,后来因为 notion 数据不归我而怒切到 emacs (在 emacs 里面用 vim 哈哈哈哈)上的 org-mode 的时候也是这样。

但是学 Nix 真的太痛苦了,尤其是我是直接 fork 了 Henrik 那个超酷的配置,他还给里面做了各种抽象,我 nix 的概念都不咋懂的时候想尝试改他的配置的下场可想而知(尤其我还有 mac,想要通过 nix-darwin 装同一份配置)

痛并快乐着,虽然到现在对于 Nix 的很多东西都还一知半解,但是基本能存活了哈哈哈 然后刚刚看完了这个文档,感觉很棒很棒,特地写下这篇评论向你道谢!

ryan4yin commented 11 months ago

@Thrimbda 哈哈,很高兴能帮助到你!

ryan4yin commented 11 months ago

@Thrimbda Henrik 的这个配置我也看过,README 相当诙谐幽默哈哈,他末尾还贴了个 Youtube 视频,承包我一整天的笑点 🤣