V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Rorysky
V2EX  ›  Linux

当前最性感的发行版是否是 NixOS

  •  
  •   Rorysky · 238 天前 · 5934 次点击
    这是一个创建于 238 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时候搜索问题会检索到 nix 的社区,印象很活跃

    有了解下,nixos 似乎承诺了更多的自由度 和 构建能力

    33 条回复    2024-04-22 10:45:30 +08:00
    huangmingyou
        1
    huangmingyou  
       238 天前
    看用来做什么用,自己使用随便用,做服务器还是要看厂商或者社区支持力度。
    bearice
        2
    bearice  
       238 天前   ❤️ 3
    我现在的公司就是从开发到 CI 到生产一水儿 nixos
    我家用的笔记本服务器软路由也都是 nixos
    大部分时间都挺好用,但是少部分时候也挺折磨,比如处理一些旧的依赖或者二进制分发的软件
    Rorysky
        3
    Rorysky  
    OP
       238 天前
    @bearice 你也非常 sexy ,我很是羡慕,平时用 debian 系,还没有出轨体验过墙外红杏
    libook
        4
    libook  
       238 天前
    看到自由度和构建能力我想到的是 Gentoo……
    Donaldo
        5
    Donaldo  
       238 天前
    请问这个发行版的特点是什么?一直用 Arch ,没机会体验这个。
    Merrkry
        6
    Merrkry  
       238 天前   ❤️ 3
    @Donaldo

    声明式配置,用 nix 语言统一管理整个系统(比如你要装哪些包,比如 /etc 下各种各样的配置文件),理论上只需要一个 configuration.nix 文件就能重建你的系统
    whenov
        7
    whenov  
       238 天前
    声明式的管理起来很方便,回滚也容易,但感觉 NixOS 抽象程度太高了不太敢用,怕出问题不好解决
    Donaldo
        8
    Donaldo  
       238 天前
    @Merrkry #6 看上去,别的发行版也可以用这个系统?
    ztmzzz
        9
    ztmzzz  
       238 天前 via iPhone
    nixpkg 的更新速度不算快,unstable 是真的不稳定,打包的自己也不测测。用了几个月,jetbrain 系列的构建出错遇到 2 次了。开发中不是大部分人用的软件基本上靠自己打包。
    ryan4yin
        10
    ryan4yin  
       238 天前
    @bearice 6 啊,All in NixOS 的公司感觉像大熊猫一样罕见。
    ryan4yin
        11
    ryan4yin  
       238 天前   ❤️ 5
    我个人 Homelab 与桌面电脑目前是 All in NixOS ,macOS 也都 All in nix-darwin ,门槛比较高,但入门后体验绝佳。感兴趣的话可以看看我的配置仓库:

    https://github.com/ryan4yin/nix-config
    Vy68n0dq58N7crH6
        12
    Vy68n0dq58N7crH6  
       238 天前
    @ryan4yin #11 都是看你博客安利的哈哈,二花
    xxb
        13
    xxb  
       238 天前
    有个问题没搞懂
    如果有多台机,根据 hostName 加载不同的配置,并且使用 Git 管理配置文件。
    那么多台机的整套文件就一模一样,而 hostName 是配置文件里设置的,那么如何个性化每台机器的 hostName ?
    james122333
        14
    james122333  
       238 天前 via Android   ❤️ 1
    个人不觉得是 以配置生成配置是一个很糟糕的行为
    还保留 systemd
    james122333
        15
    james122333  
       238 天前 via Android
    糟糕的点在于很可能会有配置的配置的配置...无止尽下去
    ck65
        16
    ck65  
       238 天前
    nix 镜像是真的小,甚至 linux 根目录下的一堆文件夹都消除了,很美
    secondwtq
        17
    secondwtq  
       237 天前   ❤️ 2
    不同 distro 方向不同不能比较
    比如对我更有吸引力的可能是 CachyOS 和 Clear Linux 这种

    Nix 的问题我觉得是 UNIX 生态下很多程序是依赖于这套文件系统的,强行变成另一种模式让人觉得这玩意是一个巨大的 hack ,反而不 cool 了,所以我试了两天就不再用了。
    ltkun
        18
    ltkun  
       237 天前 via Android
    服务器用 Debian+pve
    桌面用 Arch 和 Debian
    虽然很喜欢追求新事物但是这个 nix 感觉有点超前或者说和传统 Linux 完全不是一个东西
    ryan4yin
        19
    ryan4yin  
       237 天前
    @james122333 #14 不敢苟同,抽象与模块化是计算机进步的阶梯,最古老的计算机是打孔纸带,再进化到把程序本身当成数据存储在计算机里面,再从机器代码进化到 C 语言,又进一步出现带 GC 的编程语言。
    本质上说,计算机领域前进的每一步都是在「以配置生成配置」,如果认为这很糟糕的话,那就否定了所有现代编程语言 以及 GCC LLVM 等为现代编程语言服务的工具。

    人能掌控的复杂度是有限的,你不愿意把事情交给机器干的话,那你就得自己干所有的事,结果就是你能处理的事情规模上限就固定死了。
    ryan4yin
        20
    ryan4yin  
       237 天前
    @v2pd #12 欢迎入坑~
    ryan4yin
        21
    ryan4yin  
       237 天前   ❤️ 1
    @xxb #13 你可以把 NixOS 的配置理解为一个巨大的 json ,比如

    {host-a: config-a, host-b: config-b}

    部署的时候 NixOS 默认根据 hostname 从这个 json 中查找对应的配置,所以不同机器之间不同的内容,加在自己对应的 config 里就行了。

    每个 config 也可以看成一个 json ,只是 nix 语言提供了一些便利的功能使我们能在各机器的 config 里复用一些配置。

    python/java/c 等许多语言都能通过类似 `import xxx` `#include xxx` `use xxx` 等指令导入其他的代码文件或依赖库,
    nix 的配置复用也是使用的同样的设计,不同的 host 能通过导入不同的 nix 配置文件,以及自定义某些参数,获得不同的功能。
    大概这样,想了解更细节的建议自己去学一学。
    zuiwu
        22
    zuiwu  
       237 天前
    请问 nix 是可以通过配置列表的形式管理系统么。
    比如我在 a 电脑有 1 ,2 ,3 ,4 个软件,每个软件有不同的配置。
    能否通过 nix 的配置列表将 1 ,2 ,3 ,4 软件同步到 b 电脑,同时保留 1 ,2 ,3 ,4 软件的配置和 a 电脑相同。
    ityspace
        23
    ityspace  
       237 天前 via Android
    可以
    james122333
        24
    james122333  
       237 天前 via Android
    @ryan4yin

    这是很不同的 配置与语言在现在流行的体系是很不同的 配置只是个资料供程序取用而已 当你使用过多层这样的程序 配置的一个小细节会坑你程序的运作限制也会坑你 并且你难以对其除错 通常你也必需花很多时间找原因 与程序语言这种本身也可以写配置的是很不同的 外部设置的资料并不在抽象化的一环 程序肯定是抽象化但你只是个使用者不会了解这么多 更别说某些语言模糊了程序与资料的界线如 lisp 以及很多现代的动态语言 更适合干这种事(包含 shell 在内) 造 nix 轮子我不知道意义在哪 因为其貌似统整了所有配置?
    moonjourney
        25
    moonjourney  
       237 天前
    @secondwtq 桌面包是有点 hack ,即使这样 nixpkgs 的包数量也已经超越所有发行版了。
    而且随着 flatpak 流行,fedora 不可变发行版推广,需要额外 hack 的包只会越来越少。
    james122333
        26
    james122333  
       237 天前 via Android
    @ryan4yin

    纯为配置而生的 dsl 不如一些已存在的 dsl 写 java 的就知道了 maven 不坑你吗 spring 设置不坑你吗 springboot 假程序配置不坑你吗
    secondwtq
        27
    secondwtq  
       237 天前
    @moonjourney 我不是说个别包里的个别 hack ,而是 nix 的整个 approach 像个 hack
    ecloud
        28
    ecloud  
       237 天前
    奇技淫巧,只能自己玩自己,随便装个商业软件就抓瞎。就算不是商业软件,一些特殊领域的软件也装不上,比如生物,光学,EDA 什么的
    snylonue
        29
    snylonue  
       237 天前
    倒是很期待 nix 什么时候支持 windows

    (最近好像已经有一些进展了)
    SaltyKitkat
        30
    SaltyKitkat  
       236 天前
    NixOS 已经用了挺长时间了,总体而言上手之后还是挺香的。只要是用的人稍微多一点的东西,一定会有一个现成的模块可以方便进行各种配置。进可无状态,退可 fhs 、nix-ld ;整个系统配置好了之后非常方便、顺手,配合各种工具,几乎不会遇到什么奇怪的问题。
    配置开发环境也方便,而且不用担心开发环境的东西漏到外面影响日常使用和其他项目的开发环境。
    哦对,顺带一提,nixpkgs 前一阵子还有空投来着( x
    缺点就是官方文档一坨,而且短期内貌似没有变好的倾向,导致新人很难上手;基本就是开局一个 configuration.nix ,升级全靠抄。最近貌似有人写过一系列东西,大家都说写的很不错而且初学者友好,但我暂时还没看过
    Greendays
        31
    Greendays  
       235 天前
    刚在虚拟机上安装了试一下,结果装完了一直看不到桌面环境。。。
    sunzhenyucn
        32
    sunzhenyucn  
       234 天前
    虽然 Nix 的理念是好的,但是还是脱离了主流发行版的固定模式了,表面看起来的优雅带来的是无尽的兼容性的痛苦,Nix 的想法太超前了,以至于发展这么长时间也没有大面积的流行起来,受众面积还是太小了,适合实验和学习,真正投入生产还是需要观望
    EyebrowsWhite
        33
    EyebrowsWhite  
       233 天前   ❤️ 1
    Google 的 Project IDX 使用了 nix ,https://idx.dev/blog/article/nix-on-idx
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   864 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:15 · PVG 06:15 · LAX 14:15 · JFK 17:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.