Redian新闻
>
NixOS 系列 #5:如何在 NixOS 上设置主目录管理器 | Linux 中国

NixOS 系列 #5:如何在 NixOS 上设置主目录管理器 | Linux 中国

科技
 
导读:在本指南中,我将指导你如何在 NixOS 上设置一个主目录管理器,以及如何使用它来安装软件包。   
本文字数:3605,阅读时长大约:5分钟

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

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

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

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

◈ 使用 NixOS 的原因
◈ 在虚拟机上安装 NixOS
◈ 安装 NixOS 后要做的事情

在 NixOS 上设置主目录管理器

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

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

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

独立安装的主目录管理器

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

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

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

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

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

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

一旦完成,更新频道:

  1. nix-channel --update

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. sudo nix-channel --update

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

  1. sudo nano /etc/nixos/configuration.nix

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

  1. <home-manager/nixos>

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

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

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

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

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

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

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

  1. sudo nixos-rebuild switch

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. home.packages = [];

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

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

  1. home.packages = [pkgs.htop];

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

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

  1. home.packages = with pkgs; [];

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

  1. home.packages = with pkgs; [htop];

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

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

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

  1. home-manager switch

使用 NixOS 模块方式

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

  1. sudo nano /etc/nixos/configuration.nix

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

  1. home.packages = [ pkgs.package_name ] ;

💡我已经在上节提到软件包名称前你可以使用 pkgs. 。

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

  1. pkgs.htop pkgs.firefox pkgs.libreoffice

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

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

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

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

  1. sudo nixos-rebuild switch

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

这就结束了

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

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

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

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


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

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

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

LCTT 译者 :Xingyu.Wang
💎💎💎
翻译: 986.0 篇
|
贡献: 3177 天
2014-07-25
2023-04-06
https://linux.cn/lctt/wxy
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Pano 剪贴板管理器是你需要的一个很棒的 GNOME 扩展 | Linux 中国NixOS 系列 #1:你为什么要考虑使用 NixOS? | Linux 中国Artipie:可用于 Python 的开源仓库管理器 | Linux 中国如何在 Linux 中使用旧相机作为网络摄像头 | Linux 中国渔歌子(2):频繁起落瞬间离如何在 Linux 中合并 PDF 文件 | Linux 中国世界上只有两个 Linux 发行版:Arch Linux 与其它 | Linux 中国顾月华: 我的朋友木心和陈丹青如何设置自己的保护隐私的 DNS 服务器 | Linux 中国GNOME 2 的 Linux 文件管理器 Caja | Linux 中国Arch Linux 的最佳 GUI 包管理器 | Linux 中国如何在 Ubuntu 和其他 Linux 下安装 IDLE Python IDE | Linux 中国KDE Plasma 6 计划公布:5 种新的令人兴奋的默认设置 | Linux 中国如何在 Linux 系统中使用 Ventoy 创建多重引导的 U 盘 | Linux 中国改变世界的十位天才艺术家如何在 RHEL 9/8 上设置高可用性 Apache(HTTP)集群 | Linux 中国risiOS:一个易于使用的基于 Fedora 的 Linux 发行版 | Linux 中国Agustín Hernández:中美洲建筑背景下的未来主义巨构TUXEDO Stellaris 16(Gen5)是目前所能找到的终极 Linux 笔记本电脑 | Linux 中国blendOS 的目标:取代所有的 Linux 发行版 | Linux 中国重磅!国务院发布机构设置、部委管理的国家局设置如何入门 Linux Shell 脚本编写 | Linux 中国天赋“易昺(bǐng)”,创造历史!5 个适合视力障碍者的 Linux 发行版 | Linux 中国将Paxos和Raft统一为一个协议:Abstract-paxosNixOS 系列 #5:如何在 NixOS 上设置家庭管理员? | Linux 中国NixOS 系列 #4:安装 NixOS 后要做的事 | Linux 中国【安全】关键时刻能救命!澳洲急救专员提醒,只需在Iphone上设置一下,就能更快得救…终端基础:在 Linux 终端中创建目录 | Linux 中国日本老人的木雕拟人传神,治愈了无数网友的心元宵节如何在 Arch Linux 中安装 GNOME 桌面 | Linux 中国如何在 Arch Linux 中安装 MATE 桌面 | Linux 中国如何在 Ubuntu 中安装 DOSBox 玩老游戏 | Linux 中国如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。