标签 NixOS 下的文章

Nix 软件包管理器可以安装在任何 Linux 发行版上。具体方法如下。

人们喜欢使用不可变的 NixOS 的原因之一是它的 Nix 包管理器。

它有超过 80,000 个软件包,这可能与 Debian 软件包的数量相差比较大,但仍然令人印象深刻。

好处是你不必仅仅为了包管理器而 安装 NixOS。与 Homebrew 和 Rust 的 Cargo 包管理器 一样,你可以在当前发行版中使用 Nix 包管理器。

为什么要这么做?因为有时,你可能会发现仅以 Nix 打包格式提供的新应用。这种情况很少见,但有可能。

在本教程中,我将引导你完成以下内容:

  • 安装 Nix 包管理器
  • 搜索并安装包
  • 尝试/测试软件包而不安装它们
  • 更新包
  • 删除包

在其他 Linux 发行版上安装 Nix 包管理器

Nix 包管理器有两种安装方式:全局安装和本地安装。

? 全局安装意味着系统上的每个可用用户都可以访问 nix 包管理器,而本地安装仅适用于当前用户。Nix 官方文档 建议你使用全局安装。

全局安装

如果你想全局安装 Nix 包管理器,那么,你需要执行以下命令:

sh <(curl -L https://nixos.org/nix/install) --daemon

执行上述命令后,需要输入 y 键并按回车键:

完成后,关闭当前终端,因为它不会在当前终端会话上运行。

本地安装

如果你更喜欢本地安装并且不想每次都使用 sudo,则执行以下命令:

sh <(curl -L https://nixos.org/nix/install) --no-daemon

输入 y 并在要求确认时按回车键。

完成后,关闭当前终端会话并启动一个新终端会话以使用 Nix 包管理器。

搜索并安装包

安装 Nix 包管理器后,下一步是搜索包。

首先,访问 Nix 搜索的官方页面 并输入你要安装的软件包的名称。

从给定的描述中,你可以找到所需的软件包,然后选择 nix-env 进行永久安装。

在这里,你可以添加一些额外的关键字以获得更好的搜索结果。例如,在这里,我搜索 “Firefox browser”:

我上面提到的最后一步(“复制命令”)什么也不做,只是为你提供了一个用于安装的命令。

现在,你所要做的就是在终端中执行该命令。

就我而言,它给了我以下命令来安装 Firefox:

nix-env -iA nixpkgs.firefox

完成后,你可以使用以下命令列出已安装的软件包:

nix-env -q

使用包而不安装它们

到目前为止,这是 Nix 包管理器的最佳功能,因为你可以使用/测试包甚至不用安装它!

为此,你可以使用 Nix Shell,它允许你将交互式 Shell 与指定的包一起使用,关闭后,你将无法再访问该包。

很酷,对吧?

要使用 nix-shell 访问你喜欢的软件包,请使用以下命令语法:

nix-shell -p <package_name>

例如,我想使用一次 neofetch,所以我使用了以下命令:

nix-shell -p neofetch

要退出 Shell,你所要做的就是执行 exit 命令:

exit

使用 Nix 包管理器更新包

使用 Nix 包管理器更新包非常简单。

要更新软件包,首先,你需要使用以下命令更新频道:

nix-channel --update

接下来,你可以通过试运行更新命令来列出过时的软件包:

nix-env --upgrade --dry-run

就我而言,Firefox 浏览器已经过时,需要更新!

要更新单个包,请使用以下命令:

nix-env -u <Package_name>

如果你想一次更新所有软件包,请使用以下命令:

nix-env -u

使用 Nix 包管理器删除包

要删除软件包,你只需按以下方式执行 nix-env 命令即可:

nix-env --uninstall [package_name]

例如,如果我想删除 Firefox 浏览器,那么,我将使用以下命令:

nix-env --uninstall firefox

通过 NixOS 释放其全部潜力

如果你喜欢 Nix 包管理器背后的想法,请相信我,你一定会喜欢 NixOS

仅使用一个配置文件来复制整个系统就足以说服我切换到 NixOS,但还有更多原因:

我喜欢 NixOS。以至于我写了整个系列,这样你就不必阅读文档(基础知识):

NixOS 系列

我希望你能像我一样喜欢使用它。

(题图:MJ/da586165-eadb-4ed7-9a0b-9c92903344d5)


via: https://itsfoss.com/ubuntu-install-nix-package-manager/

作者:Sagar Sharma 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在发表这篇文章之前,我解释了如何为一个单用户系统 在 NixOS 中安装和删除软件包

但是,如果你正在供多个用户使用,有一个很好的方法来分别满足每个用户的需求。

在本指南中,我将指导你如何在 NixOS 上设置一个 主目录管理器 Home Manager ,以及如何使用它来安装软件包。

如果你是新读者,本系列中讨论的一些资源包括:

在 NixOS 上设置主目录管理器

在本指南中,我将指导你通过 2 种方式来设置主目录管理器:

  • 独立的主目录管理器(使用单独的配置文件)
  • 作为一个 NixOS 模块(在 configuration.nix 文件中使用它)

那么,让我们从独立方式开始。

独立安装的主目录管理器

如果你使用的是 NixOS 的稳定频道,你可以使用以下命令来配置主目录管理器:

nix-channel --add https://github.com/nix-community/home-manager/archive/release-22.11.tar.gz home-manager

在编写本指南时,稳定版是 22.11

如果你在一个不稳定的频道上,请使用以下命令:

nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager

无论你使用稳定版还是不稳定版,下面的步骤都是一样的。

一旦完成,更新频道:

nix-channel --update

最后,使用下面的命令来安装主目录管理器:

nix-shell '<home-manager>' -A install

?️ 在安装时,可能会出现以下错误:

安装主目录管理器时出现构建错误

重新启动你的系统并再次使用安装命令,它将开始安装。

一旦完成,它将显示独立安装的主目录管理器的位置:

主目录管理器在NixOS中的位置

将主目录管理器安装为 NixOS 模块

⚠️ 如果你选择将主目录管理器作为 NixOS 模块使用,你将需要 sudo 权限。

如果你在一个稳定的频道上(在写本文的时候,是 22.11),你可以使用下面的命令来添加主目录管理器的稳定频道:

sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-22.11.tar.gz home-manager

如果你使用的是不稳定通道或主通道,则使用以下命令:

sudo nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager

一旦你使用上面的任何一条命令完成了添加频道的工作,就用下面的方法更新频道:

sudo nix-channel --update

接下来,用以下方法打开 configuration.nix 文件:

sudo nano /etc/nixos/configuration.nix

并在 imports [] 中添加以下一行:

<home-manager/nixos>

将主目录管理器安装为 NixOS 模块

现在,跳到该行的末尾,在 } 前添加以下内容:

home-manager.users.{username} = { pkgs, ... }: {
  home.packages = [ ] ;
  };

NixOS 配置文件中的主目录管理器模块的格式

上面这一行是为了方便安装和删除软件包而添加的,我接下来会告诉你。

现在,保存修改并退出 Nano 文本编辑器。

接下来,重建配置,并做一个切换:

sudo nixos-rebuild switch

但如果你使用的是稳定版,并使用上述命令,就会出现以下错误:

?️ 错误: 选项 home-manager.users.user.home.stateVersion 被使用但没有定义:

错误: 选项  已被使用但未被定义。

要解决这个问题,你必须在你的主目录管理器块中添加 home.stateVersion

在写这篇文章时,我正在运行 22.11,所以整个主目录管理器块看起来像这样:

home-manager.users.{username} = { pkgs, ... }: {
  home.stateVersion = "22.11";  
  home.packages = [ ] ;
  };

如何解决  选项被使用但没有定义。

保存修改,按 Ctrl+O,按回车键和 Ctrl+X 退出 Nano 文本编辑器。

现在,试着重建配置并再次进行切换,应该可以解决问题。

如何在 NixOS 上使用主目录管理器安装软件包

现在你已经安装了主目录管理器,如何用它来安装软件包:

使用独立安装的主目录管理器

首先,用下面的方法打开配置文件:

nano /home/$USER/.config/nixpkgs/home.nix

跳到行末,在 } 前添加以下代码块:

home.packages = [];

现在,你所要做的就是在这两个大括号之间写上软件包的名称。

例如,如果我想安装 htop,我将得输入以下内容:

home.packages = [pkgs.htop];

是的,你通常要在软件包的名称后面加上 pkgs.

但是,如果你想在每次安装新包时不使用 pkgs.,可以改变代码块的语法,如图所示:

home.packages = with pkgs; [];

而现在,你不再需要在每次安装时使用 pkgs.

home.packages = with pkgs; [htop];

例如,在这里,我想安装 htopfirefoxlibreoffice,所以我的 home 块会看起来像这样:

在 NixOS 上使用主目录管理器安装多个软件包

一旦你完成了添加你喜欢的软件包,保存配置文件并使用以下命令来安装软件包:

home-manager switch

使用 NixOS 模块方式

首先,用以下命令打开 configuration.nix 文件:

sudo nano /etc/nixos/configuration.nix

在配置部分,我已经添加了主目录管理器块,所以剩下的就是在 home.packages = [ ]; 里面添加软件包的名称,格式如图所示:

home.packages = [ pkgs.package_name ] ;
?我已经在上节提到软件包名称前你可以使用 pkgs.

例如,如果我想 安装 htop、Firefox 和 LibreOffice,那么我将添加:

pkgs.htop pkgs.firefox pkgs.libreoffice

然后我的主目录管理器块会看起来像这样:

作为 NixOS 模块在主目录管理器中安装多个软件包

现在,保存修改并退出文本编辑器。

接下来,重建配置并使用以下命令进行切换:

sudo nixos-rebuild switch

这是这样!软件包将很快被安装。

这就结束了

我认为你应该选择独立安装,因为你不需要使用超级用户的权限。另外,如果你运行一个有多个用户的系统,为不同的用户拥有不同的配置文件是相当方便的。

因此,除非你想用一个文件来实现各种目的,否则我认为没有其他理由使用模块选项。

就这样,我结束了 NixOS 的初学者系列。我希望它能给你一个足够好的平台来熟悉这个独特的 Linux 发行版。

? 你喜欢 NixOS 系列文章吗?对于 NixOS 的初学者,我们还有什么要介绍的吗?请提供你的宝贵意见。


via: https://itsfoss.com/home-manager-nixos/

作者:Sagar Sharma 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

安装之后,你会发现 NixOS 与通用的 Linux 发行版有很大的不同。

当然,作为 高级 Linux 发行版之一,大多数新用户对它并不熟悉。

如果你不知道 为什么你应该使用 NixOS,并且出于好奇而尝试它,那么在继续进行之前,知道它是为谁准备的至关重要。

虽然我假设你已经安装了这个发行版,但如果你是第一次使用,我建议先 在虚拟机上安装 NixOS

1、更新软件包

即使你使用最新的 ISO 进行安装,也总是会有更新的。那么为什么不从更新软件包开始呢?

要升级软件包,首先,你必须在添加的频道中检查是否有更新:

nix-channel --update

然后,使用下面的命令来安装这些更新(如果有的话):

sudo nixos-rebuild switch --upgrade

这就行了!它将处理其余的事情。

2、在 NixOS 中改变主机名

如果你尝试用传统的方法 改变主机名(使用 hostnamectl 命令),会出现以下错误:

在 NixOS 中改变主机名的错误

在 NixOS 中,你可以用它的主配置文件轻松地改变主机名。使用如下命令:

sudo nano /etc/nixos/configuration.nix

在这个配置文件中,寻找以下一行:

networking.hostName = "nixos";

然后把它改成:

networking.hostName = "Your_Hostname";

例如,我把我的主机名改为 itsFOSS

networking.hostName = "itsFOSS";

在 NixOS 中改变主机名

现在,保存更改并退出 nano 文本编辑器。

为了使你对主机名的修改生效,执行以下命令:

sudo nixos-rebuild switch

最后,重新打开终端,主机名的变化应该反映出来。

3、设置 Flatpak

我知道你可能在想什么。Nix 软件包管理器已经提供了大量的软件包。那么,为什么你需要 Flatpak 呢?

安装你所需要的东西对于第一次使用的人来说可能有点费时。所以,Flatpak 应该能给你带来方便。

设置 Flatpak 与你在 Ubuntu 上做的不一样。

要设置 Flatpak,你必须对 configuration.nix 文件进行修改,可以通过以下方式访问该文件:

sudo nano /etc/nixos/configuration.nix

在 nano 中移动到最后一行,在 } 前添加以下一行:

services.flatpak.enable = true;

在 NixOS 上设置 Flatpak

Ctrl + O 保存更改,按回车键,按 Ctrl + X 退出。

接下来,使用以下命令重建并切换到新的配置文件:

sudo nixos-rebuild switch

最后,使用下面的命令将 Flathub 软件库添加到系统中:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

想知道到底什么是 Flatpak 包吗?你可以参考我们关于它的文章:

什么是 Flatpak?你需要知道的关于这个通用包装系统的一切重要信息

4、启用垃圾收集

NixOS 以其不可改变性而闻名,这是有充分理由的。

每当你升级一个软件包时,旧的软件包不会被删除。只是指向旧包的符号链接将被指向最新的版本。

而这样做,你的系统中会积累下不必要的垃圾。

但是,删除每一个旧世代将违背 NixOS 的初衷。

所以,在这种情况下,你可以将你的系统配置为每周删除垃圾包。

要做到这一点,首先,打开 NixOS 配置文件:

sudo nano /etc/nixos/configuration.nix

并在配置文件末尾的 } 前添加以下一行:

# Automatic Garbage Collection
nix.gc = {
                automatic = true;
                dates = "weekly";
                options = "--delete-older-than 7d";
        };

在 NixOS 中启用自动垃圾收集

保存修改并退出 nano 文本编辑器。

为了激活垃圾收集,重建并切换到新的配置文件:

sudo nixos-rebuild switch

如果你不确定垃圾收集器是否在后台正常运行,你可以用以下命令列出活动的计时器:

systemctl list-timers

正如你所看到的,Nix 垃圾收集器正在如期运行,并显示距离下次清理还有 5 天。

5、安装你喜欢的软件

我是说这是我们使用电脑的唯一原因 —— “为了使用我们最喜欢的软件”,如果还不是,我们就把它变成现实!

寻找软件包的最好地方是 Nix 软件包搜索,可以使用你喜欢的任何浏览器访问。

  • 搜索软件包
  • 选择软件包
  • 点击 “nix-env” 并复制给定的 NixOS 的命令
  • 执行该命令,就可以了

你可以查看我们的 NixOS 软件包管理 指南,了解所有的细节。

让我在这里给你一个简单的回顾。例如,在这里,我想安装 Librewolf,所以我采用了以下方法:

搜索 NixOS 的软件包

但如果你想安装 SSH 或 Plex 等服务,上述方法就不能用了

为此,你得查看位于页面顶部的 “ NixOS 选项 NixOS options ”。

因此,假设我想安装 OpenSSH,那么我必须按照给定的步骤进行:

  • 进入 “NixOS 选项”。
  • 搜索服务的名称
  • 获取服务的名称并将其粘贴到 configuration.nix 中,将其值改为 true

搜索 NixOS 的服务

services.openssh.enable = true

在 NixOS 上启用 OpenSSH

在配置文件中加入这一行后,重建服务:

sudo nixos-rebuild switch

6、在 NixOS 中启用自动更新(可选)

一些用户喜欢启用自动更新功能,而另一些用户则可以在他们方便的时候更新软件包。

所以这完全取决于你。

要启用自动更新,首先打开 configuration.nix 文件:

sudo nano /etc/nixos/configuration.nix

接下来,在配置文件的末尾,在 } 之前添加以下一行:

# Auto system update
system.autoUpgrade = {
      enable = true;
};

在 NixOS 中启用自动系统更新

保存修改并退出 nano。

要启用自动更新,你必须用以下方法重建并切换到该文件:

sudo nixos-rebuild switch

你也可以用下面的命令检查 NixOS 的升级定时器:

systemctl list-timers

NixOS 的自动升级定时器

正如你所看到的,nixos-upgrade.service 正在后台如期运行!

7、减少交换度

如果你正在利用交换分区,你可能想减少交换度。

交换度只不过是你想要多积极地使用交换分区(或内存)的数值,其范围从 0 到 100。

交换度越小,你的系统就会越多地使用物理内存(RAM),而交换分区只不过是你的存储驱动器的一部分而已。

另外,存储驱动器的速度相对比内存慢,所以如果可能的话,你应该减少交换度。

要检查你的系统的默认交换度,请使用以下方法:

cat /proc/sys/vm/swappiness

检查 Linux 系统的交换度

而对于大多数 Linux 发行版,它被设置为 60

我建议你把这个值降低到 10

要做到这一点,首先,用以下命令打开配置文件:

sudo nano /etc/nixos/hardware-configuration.nix

并在 } 之前的行末添加以下一行:

boot.kernel.sysctl = { "vm.swappiness" = 10;};

减少 NixOS 中的交换度

保存修改并退出文本编辑器。

现在,重建配置并使用下面的方法切换到它:

sudo nixos-rebuild switch

现在,你可以再次检查交换度,它应该反映出变化:

cat /proc/sys/vm/swappiness

减少 NixOS 中的交换度

就这些了。

总结

如果你在第一次安装 NixOS 后马上遵循这些要点,你应该得到一个良好的用户体验。

当然,根据你的要求,还可以有一些其他的东西。但是,我认为上面提到的事情是最基本或最常见的事情。

在本系列的下一部分,我将讨论在 NixOS 上设置家庭管理器,这对有多个用户的系统应该是有帮助的。

? 安装NixOS后,你首先做什么?让我知道你的想法。


via: https://itsfoss.com/things-to-do-after-installing-nixos/

作者:Sagar Sharma 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

NixOS 中的打包系统是它最强大的地方。Nix 软件包管理器使用的语法与 aptdnf 和其他软件包管理器大不相同。

这也是 人们应该尝试使用 NixOS 的原因之一

在本指南中,我将分享两种在 NixOS 上安装和删除软件包的方法:

  • 使用 Nix 软件包管理器
  • 使用 configuration.nix 配置文件
⚠️ 使用 Nix 软件包管理器,你只能安装软件包,而不能安装 OpenSSH 或 Plex 服务器等服务。对于服务的安装,你必须使用 Nix 配置文件。

要安装任何软件包,必须知道它的确切名称,为此,我将从如何在 NixOS 中搜索软件包开始。

搜索软件包

要寻找软件包,你可以使用它的 网页搜索

你可以使用如下步骤:

  • 在搜索栏中输入软件包的名称
  • 选择适当的软件包(从给出的描述中决定)
  • 点击 “nix-env” 标签页
  • 复制 NixOS 命令(第一条)

例如,如果我想要 librewolf 包,我将执行以下操作:

使用 Nix 软件包管理器的网络搜索寻找软件包

你也可以通过终端做同样的事情。

要使用终端搜索软件包,你可以按照给定的命令语法进行:

nix-env -qaP --description [软件包名称]

例如,在这里,我搜索了 librewolf

使用终端搜索 NixOS 中的软件包

你必须复制输出的第一行,因为那是你需要安装的软件包的名称。

在这里它是 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 服务。

搜索 NixOS 中的 OpenSSH 服务

一旦你找到了这个名字,用下面的命令打开 configuration.nix 文件:

sudo nano /etc/nixos/configuration.nix

并在行末添加服务的名称(在 } 之前),如下:

[service_name] = true;

由于 我想启用 OpenSSH,我将添加以下内容:

services.openssh.enable = true;

在 NixOS 上启用 OpenSSH

一旦你在配置文件中添加了服务,保存修改并退出 Nano 文本编辑器。

要启用该服务,请重建配置文件,并使用以下命令切换到所做的更改:

sudo nixos-rebuild switch

这就行了,你已经启用了该服务。

从 NixOS 卸载服务

要卸载一个服务,你所要做的就是在 configuration.nix 文件中删除或注释该服务的一行。

因此,首先,用以下命令打开配置文件:

sudo nano /etc/nixos/configuration.nix

寻找服务,并删除这一行或用 # 注释掉:

从 NixOS 删除服务

通过添加注释 #,我忽略了 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,那么我将添加它的名字,如下所示:

使用 Nix 配置文件在 NixOS 中安装一个包

你必须在方括号内添加所有的软件包名称,不要用逗号。它必须像截图中描述的那样一个软件一个新的行。

但是如果你想在整个系统中安装这个包,那么你必须在 environment.systemPackages 下添加包的名字,比如:

environment.systemPackages = with pkgs; [
  软件包名称
];

使用 Nix 配置文件在 NixOS 中全系统安装软件包

一旦你完成了在系统配置文件或用户配置文件,甚至两者中添加所需软件包的名称,你将需要按照同样的命令来完成安装:

sudo nixos-rebuild switch

这样就可以了!

使用 Nix 配置文件删除软件包

要删除软件包,你所要做的就是按照给定的简单步骤进行:

  • 打开 Nix 配置文件
  • 删除或注释掉软件包的名称
  • 重新构建配置并进行切换

所以,让我们从第一步开始(打开配置文件):

sudo nano /etc/nixos/configuration.nix

接下来,注释掉用户配置文件或系统配置文件中的包的名称:

在 NixOS 上使用 Nix 配置文件删除包

保存更改并退出配置文件。

最后,重建配置文件,并做一个切换来删除包:

sudo nixos-rebuild switch

这是这样!

? 目前,还没有官方的 GUI 工具来帮助你安装/删除软件包。你可能会发现一些由社区开发的项目,如 nix-guinix42b,但它们不再被维护或仅仅处于早期开发阶段。

接下来...

我希望你喜欢阅读 NixOS 系列,就像我写它一样。

在下一篇中,我将强调一些在你安装 NixOS 后需要马上做的重要事情。

如果你认为我遗漏了什么或有其他建议,请在评论中告诉我。


via: https://itsfoss.com/nixos-package-management/

作者:Sagar Sharma 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你可以在任何 Linux 发行版上使用 Nix 包管理器,为什么还要安装 NixOS?

在使用 NixOS 几天之前,我经常想知道同样的事情。

当我意识到这些好处后,我就写了这篇文章来帮助你了解 为什么你要考虑使用 NixOS。如果你已经阅读了本系列的第一篇文章,那么你已经知道自己想要什么了。

那么,如何开始呢?考虑到它对许多人来说可能是一种新体验,你应该用它替换日常使用的系统还是将其安装为虚拟机?

我建议在你想要将其替换为你的主要操作系统之前在虚拟机上使用 NixOS。这适用于你想尝试的任何新事物,特别是 先进的 Linux 发行版,例如 NixOS。

使用 VirtualBox 在 VM 中安装 NixOS

在本教程中,我将使用 VirtualBox。

如果你使用的是 Ubuntu 并且不关心是否拥有最新版本,那么可以使用一个命令安装 VirtualBox:

sudo apt install virtualbox

想要安装最新版本?你可以参考下面的指南:

如何在 Ubuntu 上安装 VirtualBox(初学者教程)

如果你使用 Ubuntu 以外的任何发行版,你可以 按照其官方下载页面的下载说明进行操作

成功安装 VirtualBox 后,让我们从第一步开始。

步骤 1:获 取NixOS 的 ISO 镜像

你需要前往 NixOS 官方下载页面

在 “NixOS: the Linux distribution” 部分,你会找到带有 GNOME 和 KDE 桌面的 ISO。

当然,也有最小化 ISO,但我建议使用两者之一(GNOME 和 KDE):

下载 NixOS ISO 文件

对于本教程,我将使用 GNOME。

请记住,你可以选择 GNOME 和 KDE 两种 立付桌面环境 Live Desktop

而在安装过程中,你可以选择自己喜欢的桌面环境,包括 Xfce、Pantheon、Cinnamon、MATE 等等!

步骤 2:在 VirtualBox 中创建虚拟机

打开 VirtualBox 并单击 “ 新建 New ” 按钮添加新的虚拟机:

截图显示了如何点击新建按钮来添加新的虚拟机

它将打开一个提示,要求你添加有关要添加的虚拟机的信息。

你可以先命名虚拟机:

  • 为你的虚拟机命名,以便你可以识别它是 NixOS 系统。所以我将其命名为 “NixOS”。
  • 选择你刚刚下载的 ISO 镜像。
  • 选择 “Linux” ISO 类型。
  • 并在版本选择 “ 其它 Linux(64 位) Other Linux (64-bit) ”。

选择所有内容后,单击 “ 下一步 Next ” 按钮。

接下来,系统会要求你选择基本内存(RAM)、要分配给此虚拟机的处理器以及存储空间。

虽然 NixOS 没有提到官方要求,但我建议你为此安装至少拥有 4GB RAM2-4 个处理器内核30GB 空间

选择 NixOS 虚拟机的硬件

最后,它会显示你为此虚拟机所做选择的摘要:

NixOS 虚拟机 安装摘要

如果一切正常,请单击 “ 完成 Finish ” 按钮,它将为你创建一个 NixOS 虚拟机。

步骤 3:安装 NixOS

创建完虚拟机后,你为 NixOS 虚拟机指定的名称应该显示在 VirtualBox 的虚拟机列表中。

选择 “NixOS” 虚拟机并单击“开始”按钮:

开始 NixOS 虚拟机

它将启动 NixOS 立付桌面环境 Live Desktop ,以便你可以试用 Linux 发行版。

选择安装语言

启动进入 NixOS 后,安装程序将启动并要求你设置安装程序的首选语言:

选择安装时的首选语言

选择地区和时区

接下来,选择你所在的地区和区域。如果你不知道这一点,你可以从地图上选择你的国家,它会为你设置。

选择区域和区域后,它还会选择系统的首选语言、数字和日期区域设置。

当然,你可以根据需要进行更改,但对于大多数用户而言,选定的选项就可以正常工作:

选择地区和时区

选择键盘布局

接下来,你将必须设置键盘布局。对于大多数用户来说,默认设置的 “English (US)” 应该可以正常工作。

如果你要进行其他操作,则可以在继续之前测试你的键盘配置。

选择键盘格式

之后,系统会要求你创建一个用户并为该用户设置密码。

你可以选择为虚拟机保留一个强密码或任何随机密码。

创建用户

选择你喜欢的桌面环境

使用 NixOS,你可以选择以下桌面环境:

  • GNOME
  • KDE(定制的最佳选择)
  • Xfce
  • Pantheon(ElementaryOS 附带的桌面环境)
  • Cinnamon
  • Enlightenment
  • LXQt

选择桌面环境

在 NixOS 上使用非自由软件

NixOS 遵循与 Fedora 类似的方法,你必须选择是否需要非自由软件。

我建议你启用非自由包:

启用非自由软件包

分区部分

由于这是一个虚拟机指南,我建议你使用自动对磁盘进行分区的 “ 擦除磁盘 Erase disk ” 选项!

自动分区

完成后,它将为你提供你所做选择的摘要:

安装选择摘要

如果一切正常,请单击 “ 安装 Install ” 按钮,它将开始安装。

不要重启而是关闭虚拟机

安装完成后,你可以选择重新启动虚拟机。

如果你这样做,它将再次加载安装程序

要解决此问题,你必须更改引导顺序。

为此,请在安装完成后关闭虚拟机。

要关闭虚拟机,请从“ 文件 File ”菜单中选择 “ 关闭 Close ” 选项,然后选择 “ 关闭虚拟机电源 Power off the machine ” 选项:

更改 VirtualBox 中的启动顺序

要更改 NixOS 虚拟机 中的启动顺序,请打开该虚拟机的设置:

在设置中,选择 “ 系统 System ”,你将找到启动顺序。

在这里,选择 “ 硬盘 Hard Disk ” 并使用选项旁边的向上箭头图标并将其设为启动的第一个选项:

改变启动顺序

按下 “ 确定 OK ”,它将保存你所做的更改。

或者,你可以移除我们添加的用于启动安装的光盘(ISO 镜像)。

步骤 4:从 NixOS 安装启动

现在,启动你的 NixOS 虚拟机,你将看到一个 GRUB 屏幕:

NixOS grub

选择默认选项,它将带你进入带有 GNOME 桌面的全新 NixOS 安装。

运行 NixOS

就是这些了!请继续探索 NixOS!

总结

这是关于如何在 VirtualBox 上安装 NixOS 的快速指南。

对于 NixOS 教程系列的下一部分,我将分享有关安装和删除包的建议。

? 敬请期待本系列的下一部分。在那之前,请随时分享你对 NixOS 的看法或在遵循指南时遇到任何问题!


via: https://itsfoss.com/install-nixos-vm/

作者:Sagar Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

NixOS……又一个使用不同软件包管理器的发行版??

好吧,NixOS 是 高级 Linux 发行版 之一。

所以如果我写这个,我一定有一个充分的理由,对吗?嗯,有很多!

我已经使用它 3 个月了,它是如此之好,以至于我正在考虑从我一直以来最喜欢的 Pop!\_OS 切换到 NixOS

在本指南中,我将分享 NixOS 在众多 Linux 发行版中脱颖而出的主要特点。

别担心,在我们继续之前,让我告诉你什么是 NixOS:

它是一个以 Nix 包管理器为核心的 Linux 发行版,为你省去了在其它的 Linux 发行版上设置 Nix 的麻烦,可以让你充分利用它的优势。由开发 Nix 的同一个团队构建。

使用 NixOS 的 6 个理由

NixOS 是一个有趣的从零开始构建的 独立 Linux 发行版

每个人都可以通过使用 NixOS 学到很多东西,但在我看来,如果你是一个开发人员或计算机科学的学生,NixOS 应该非常合适。

nix os screenshot with gnome

让我告诉你为什么。

1、不易损坏/易于恢复

就其核心而言,NixOS 是为长期使用而构建的。

这并不意味着它像 Debian 那样用多年前的软件包来保证稳定性,而是遵循一种不同的方法。

为了理解 NixOS 为何如此稳定,让我们谈谈用户一般是如何破坏他们的系统的,即“依赖性问题或软件包冲突

在更新系统或安装一个新的软件包时,你一般会面临系统崩溃的风险。主要是因为你的软件包管理器无法满足依赖性,或者安装的软件包与现有系统冲突导致的。

而 NixOS 有一个非常聪明的方法来处理这个问题。

你看,每当你升级你的系统或安装一个软件包时,系统的状态就会被重建,被称为超过当前的“ 新世代 new generation ”。

nix os listing generations via terminal

因此,如果你在使用新的软件包或更新时遇到任何麻烦,你可以随时回滚到“ 旧世代 old generation ”,在那里你会找到系统以前的状态

即使系统无法访问,你也能在启动时找到以前几代。

2、可重复性

通过一个配置文件,你可以为其他物理系统创建一个你当前环境的副本。

这个功能给你带来的好处是,你可以使用 Nix 配置文件进行安装和配置。

当你有了适合你的用途的配置文件,将该文件发送到新的系统中,用你的配置文件替换默认的配置文件。就是这么简单!

重建配置,升级系统,并通过给定的命令进行切换:

sudo nixos-rebuild switch --upgrade

你将在几分钟内拥有与你的主机上完全相同的开发环境,并进行复制。

3、轻松回滚

虽然你可能已经从 NixOS 的 “ 世代 generation ” 特性中得到了灵感。

但还有更多的内容。?️

NixOS 在很大程度上依赖于符号链接。如果这对你来说是一个新概念,请参考下面的指南:

如何在 Linux 中创建符号链接(完整指南)

一般来说,在其他 Linux 发行版中,当你升级一个软件包时,新的软件包会取代旧的。

但 NixOS 不是这样的。

在 NixOS 中,软件包被隔离并存储在一个单独的目录中,这就是使用符号链接的原因。

每当你升级一个软件包时,NixOS 会调整符号链接来定位新的软件包,但不会删除旧的

因此,如果你面临与新包的冲突,只需切换到旧世代,符号链接有助于定位旧版本的包。?

4、Nix 包管理器

Nix 包管理器允许你访问超过 80,000 个软件包!不仅仅局限于 Linux,它还可以在 macOS、WSL2、Docker 等平台上使用。

而且,软件包的可用性与 AUR 相似,甚至比 AUR 更好,因为你应该在 Nix 包管理器上找到几乎所有的东西(我是认真的)。

例如,我想安装 Librewolf 浏览器,这在大多数 Linux 发行版的默认仓库中是不可用的。

但是,Nix 有它!这意味着你可以依靠 Nix 包管理器来安装几乎所有的软件包。

如果你有先前的 Linux 经验,它也相对容易理解。总而言之,Nix 包管理器令人印象深刻

5、使用同一软件包的多个版本

这对开发者来说可能是至关重要的,有些应用需要特定依赖的旧版本,而有些则需要最新的版本。

而且,正如我前面提到的,Nix 将包安装到一个特定的子目录中,每个包都是隔离的,所以一个包不会干扰另一个包!

在使用 Nix 之前,我使用虚拟机和容器来满足同一软件包的不同依赖性,尤其是 PHP,但 NixOS 为我的工作流程带来了奇迹。

6、无需安装就能测试软件包的能力

你可以使用 nix-shell,它通过临时修改 $PATH 环境变量来测试一个包。

而且没有任何限制。你能够测试每一个可供安装的软件包!

NixOS 系列:让我们探索更多!

这是我们 Nix 系列的第一部分,我介绍了使用 NixOS 的原因。我相信更多的 Linux 用户应该去了解它,如果他们还没有了解的话。

在下一部分,我将解释如何在你的虚拟机中安装 NixOS。

? 欢迎在下面的评论中分享关于 NixOS 的其他内容的建议。


via: https://itsfoss.com/why-use-nixos/

作者:Sagar Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出