刚刚知道了有个发行版:NixOS, 这里有人用吗?

我觉得你跟我对「成熟包管理器」这个词的理解有些不同,如果你写过 python,那 python 从 pip conda pipenv poetry 一路搞到现在新出的 pdm,你真觉得它们有哪个能算得上成熟算得上好用?如果成熟了那新包管理器怎么层出不穷呢?

同理,我们看看 vim 社区的 pathogen vundle vim-plug dein 到现在最流行的 lazyvim,一直有新包管理器取代老的,这你也觉得是成熟吗?

我理解的「成熟包管理器」是 rust 的 cargo, go 的 gomod 这种社区统一、官方支持的包管理器,尤其是 cargo 做得体验也非常好,那 Nix 就没啥可插足的。

所以为什么会有人想用 Nix 做 vim/emacs/lisp/r/haskell 的包管理呢? 我的理解是,因为这些社区没有统一的方案,已有的这些包管理器都不具有绝对优势,而 Nix 相比这些社区中已经存在的包管理器,有它自己吸引人的地方。

1 个赞

以下回复无关 nixos 和 nix 包管理器。crates.io 上包不能重名这事儿其实也受人诟病,没有东西是完美的。

1 个赞

是的,任何东西都有缺点,但目前来说 cargo 在 rust 社区具有绝对优势,没有第三方包管理器的生存空间。

1 个赞

我就反过来讲讲什么样的情况不需要用 nix 吧:

  • 全局只需要装一个版本的编译器,一般是最新 release
  • 最新 release 不会有 breaking change,如果有则在 beta 版本就让社区里重要的库处理好了,常用的包都能用安装的版本运行
  • 安装的包不会互相冲突/包管理器以项目为单位做了隔离。

主要是三,scala, go, python, java, clojure, rust, nodejs 等等都能做到,实在不行还有 docker。

看我顺藤摸瓜把你抓嘿!

我自己从2012年开始是ubuntu重度用户,一直不折腾那种。 但是今年换nixos了。 换了以后感觉,其实挺好的,不折腾。 就是有时候要打包就会比较麻烦,但是因为telegram群活跃度极高可以问,而且我自我克制比较强不做超过自己能力的事儿。所以就是说,我的需求其实是完全满足的。以后再也不用折腾各种版本的包的兼容问题以及对环境的洁癖问题了。

1 个赞

nixos出了问题更折腾, 因为他对用户的要求很高

1 个赞

我还没有遇到nixos出问题折腾,我都是自己给自己提问题折腾。举个例子,我做的这个benchmark用flake防止污染我本地的环境。 折腾么?当然折腾,但是很明显在nixos的能力范围之内,在Ubuntu下面我不会去折腾这个事儿的。因为ubuntu没这个能力。

有人用,我就在用。 Nix 致力于统一解决长久以来存在的软件分发的问题。 NixOS 基于 Nix, 需要懂 Nix 语言才能配置好系统。