NixOS 中的打包系统是它最强大的地方。Nix 软件包管理器使用的语法与 apt
、dnf
和其他软件包管理器大不相同。
这也是 人们应该尝试使用 NixOS 的原因之一。
在本指南中,我将分享两种在 NixOS 上安装和删除软件包的方法:
- 使用 Nix 软件包管理器
- 使用
configuration.nix
配置文件
⚠️ 使用 Nix 软件包管理器,你只能安装软件包,而不能安装 OpenSSH 或 Plex 服务器等服务。对于服务的安装,你必须使用 Nix 配置文件。
要安装任何软件包,必须知道它的确切名称,为此,我将从如何在 NixOS 中搜索软件包开始。
搜索软件包
要寻找软件包,你可以使用它的 网页搜索。
你可以使用如下步骤:
- 在搜索栏中输入软件包的名称
- 选择适当的软件包(从给出的描述中决定)
- 点击 “nix-env” 标签页
- 复制 NixOS 命令(第一条)
例如,如果我想要 librewolf
包,我将执行以下操作:
你也可以通过终端做同样的事情。
要使用终端搜索软件包,你可以按照给定的命令语法进行:
nix-env -qaP --description [软件包名称]
例如,在这里,我搜索了 librewolf
:
你必须复制输出的第一行,因为那是你需要安装的软件包的名称。
在这里它是 nixos.librewolf
。
是的,它听起来可能没有像使用 APT或 DNF 时软件包名字那么方便。但是,我认为这并不是大问题。
一些妥协或许会换来一些好处?
在 NixOS 中安装一个软件包
要安装一个软件包,你所要做的就是使用以下命令语法:
nix-env -iA [软件包名称]
而且,如果你使用网络搜索来寻找软件包,你就已经有了安装所需的确切命令。
所以,假设我想安装 `librewolf’,我将使用以下命令:
nix-env -iA nixos.librewolf
如果你想进行全系统的安装(让每个用户都能使用这个包),用 sudo
执行安装命令:
sudo nix-env -iA nixos.librewolf
就是这样!你将很快安装好你喜欢的软件包。
在 NixOS 中卸载一个软件包
要删除一个软件包,你可以参考下面的命令语法:
nix-env --uninstall [软件包名称]
因此,如果我必须删除 librewolf
包,我必须使用以下命令:
nix-env --uninstall librewolf
如果你仔细注意,我使用了 librewolf
而不是nixos.librewolf
来安装。
这意味着你在删除软件包时要跳过 nixos
部分,这使事情变得简单而快速。
在 NixOS 中安装服务
正如我前面提到的,你不能使用 Nix 软件包管理器来安装像 OpenSSH、Plex 服务器、Flatpak等服务。
从搜索服务到安装过程,都与你上面看到的不同。
所以让我先说说如何 搜索服务。
- 要搜索服务,请前往 Nix 软件包搜索 网页
- 选择 “NixOS 选项NixOS options”(页面顶部菜单行的第三个选项)
- 输入你要找的服务的名称
- 复制服务的名称
例如,在这里,我正在搜索 OpenSSH 服务。
一旦你找到了这个名字,用下面的命令打开 configuration.nix
文件:
sudo nano /etc/nixos/configuration.nix
并在行末添加服务的名称(在 }
之前),如下:
[service_name] = true;
由于 我想启用 OpenSSH,我将添加以下内容:
services.openssh.enable = true;
一旦你在配置文件中添加了服务,保存修改并退出 Nano文本编辑器。
要启用该服务,请重建配置文件,并使用以下命令切换到所做的更改:
sudo nixos-rebuild switch
这就行了,你已经启用了该服务。
从 NixOS 卸载服务
要卸载一个服务,你所要做的就是在 configuration.nix
文件中删除或注释该服务的一行。
因此,首先,用以下命令打开配置文件:
sudo nano /etc/nixos/configuration.nix
寻找服务,并删除这一行或用 #
注释掉:
通过添加注释 #
,我忽略了 OpenSSH 服务的加载,因为我不再需要它在我的系统上。
保存修改并退出文本编辑器。
最后,重建配置文件并进行切换:
sudo nixos-rebuild switch
使用 Nix 配置文件安装软件包
配置文件可以让你 方便地一次性管理软件包。
要使用 Nix 配置文件安装软件包,你必须在配置文件中输入软件包的名称、重建,然后切换到配置文件,就可以了。
首先,打开 configuration.nix
文件。
sudo nano /etc/nixos/configuration.nix
如果你想 为一个特定的登录用户安装软件包,将软件包的名称添加到用户的配置文件中。
用户配置文件看起来像这样:
users.users.sagar = {
isNormalUser = true;
description = "Sagar";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
firefox
];
};
当然,它将显示你的用户名而不是 sagar
。
你应该使用如下语法来添加软件包的名称:
packages = with pkgs; [
软件包名称
];
所以我们假设我也想安装 Thunderbird
,那么我将添加它的名字,如下所示:
你必须在方括号内添加所有的软件包名称,不要用逗号。它必须像截图中描述的那样一个软件一个新的行。
但是如果你想在整个系统中安装这个包,那么你必须在
下添加包的名字,比如:
environment.systemPackages
environment.systemPackages = with pkgs; [
软件包名称
];
一旦你完成了在系统配置文件或用户配置文件,甚至两者中添加所需软件包的名称,你将需要按照同样的命令来完成安装:
sudo nixos-rebuild switch
这样就可以了!
使用 Nix 配置文件删除软件包
要删除软件包,你所要做的就是按照给定的简单步骤进行:
- 打开 Nix 配置文件
- 删除或注释掉软件包的名称
- 重新构建配置并进行切换
所以,让我们从第一步开始(打开配置文件):
sudo nano /etc/nixos/configuration.nix
接下来,注释掉用户配置文件或系统配置文件中的包的名称:
保存更改并退出配置文件。
最后,重建配置文件,并做一个切换来删除包:
sudo nixos-rebuild switch
这是这样!
📋 目前,还没有官方的 GUI 工具来帮助你安装/删除软件包。你可能会发现一些由社区开发的项目,如 nix-gui和nix42b,但它们不再被维护或仅仅处于早期开发阶段。