Linux中國

NixOS 系列 #5:如何在 NixOS 上設置主目錄管理器

在發表這篇文章之前,我解釋了如何為一個單用戶系統 在 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 &apos;<home-manager>&apos; -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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國