一周的NixOS

2020-11-08 19:37:48

阅读时间:3分钟。正如你可能已经在Mastodon上看到的,我测试NixOS已经一个多星期了,下面是关于这个发行版如何工作以及哪些不适合我的一些评论。

首先,所有东西都是NixOS在一个配置文件中声明的,该配置文件位于/etc/nixos/Configuration.nix,您可以在其中声明要安装的包、要启动的服务、udev规则等。

这是第一件非常奇怪的事情,因为您并不是真正使用cli直接安装包(即使可以),而是使用nixos-rebuild开关修改配置文件并重新构建系统。

NixOS的制作方式是一切都以可重现为目标。举个例子:如果你想得到和我完全一样的设置,你只需要获取我的配置repo,在你的NixOS安装上克隆它,运行nixos-rebuild开关,然后瞧,你就会以同样的方式安装和我完全相同的程序,用相同的版本(大致)。

{config,pkgs,...}:{用户。群组。Plugdev={};用户。用户。JAE={isNormalUser=true;ExtraGroups=[";车轮";";码头";";adbusers";";plugdev";];外壳=包。Zsh;Packages=with pkgs;[#Games minetest step mania lutris-free pcsx2#Misc Audio/Video/Image PulseEffects ffmpeg-Full obs-studio Inkscape krita#Usful Software Mumble qbittorrent LibreOffice Ledger-live-Desktop#Dev JetBrains。Idea-社区懒鬼侏儒3。Zenity失眠JetBrains。骑手msbuild dotnet-sdk_3 ganttproject-bin kubectx#sdr rtl-sdr gqrx grecast NOAA-apt Welle-io];};用户。Extra Groups。Vbox用户。会员=[";jae";];}。

创建一个名为plugdev的组,不要注意它,它只是对Ledger Live应用程序的测试。

告诉OS当前用户是普通用户。它将创建一个主文件夹并设置默认外壳。

正如您可能已经猜到的那样,我们将默认用户外壳设置为ZSH。

Packages=with pkgs;[#Games minetest step mania lutris-free pcsx2#Misc Audio/Video/Image PulseEffects ffmpeg-Full obs-studio Inkscape krita#Usful Software Mumble qbittorrent LibreOffice Ledger-live-Desktop#Dev JetBrains。Idea-社区懒鬼侏儒3。Zenity失眠JetBrains。骑手msbuild dotnet-sdk_3 ganttproject-bin kubectx#sdr rtl-sdr gqrx grecast NOAA-apt Welle-io];

在那里,我们正在安装每个用户的包,因为是的,NixOS支持这一点,任何用户都可以拥有其他用户无法访问的自己的包。

在只有某些组/用户需要包的专业设置中,这可能很有用。您可以对每个人使用相同的配置,但只有合适的人才能访问合适的软件。

最后,将NixOS配置为日常使用非常容易(尽管我在让Ledger Live工作时遇到了一些麻烦,这是我到目前为止遇到的最大问题)。

现在,让我们来谈谈我遇到麻烦的地方。正如你可能知道的,我是一名开发人员,每天我都需要编译、测试、运行等等。NixOS给我带来了一些麻烦,因为在构建系统的时候,我只能从Element Desktop或TeDomum img等源代码运行一些程序,很多目录都是只读的,不能通过NPM或PIP全局安装程序。我最终使用Docker来构建应用程序(尽管这需要更多的时间)。

不用说,几乎所有其他项目都能正常运行。例如,如果您想让NodeJS启动一个项目,只需执行nix-Shell-p NodeJS,然后就可以了,一个安装了NodeJS的Shell,随时可以做您想做的事情。

最后,NixOS带来了非常有趣的概念,比如非常好的重现性,但新用户可能会感到迷失,因为它的工作方式与传统的Linux发行版非常不同。我会给NixOS更多的时间,并在一段时间内写一篇后续文章,看看一切都进行得如何。

今天到此为止,下次见!如果你喜欢我的内容,别忘了通过RSS订阅!

在黑客新闻上谈论这件事吧!