NixOS 系列 #5:如何在 NixOS 上設置主目錄管理器
在發表這篇文章之前,我解釋了如何為一個單用戶系統 在 NixOS 中安裝和刪除軟體包。
但是,如果你正在供多個用戶使用,有一個很好的方法來分別滿足每個用戶的需求。
在本指南中,我將指導你如何在 NixOS 上設置一個 主目錄管理器 ,以及如何使用它來安裝軟體包。
如果你是新讀者,本系列中討論的一些資源包括:
在 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 模塊使用,你將需要 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>
現在,跳到該行的末尾,在 }
前添加以下內容:
home-manager.users.{username} = { pkgs, ... }: {
home.packages = [ ] ;
};
上面這一行是為了方便安裝和刪除軟體包而添加的,我接下來會告訴你。
現在,保存修改並退出 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];
例如,在這裡,我想安裝 htop
、firefox
和 libreoffice
,所以我的 home
塊會看起來像這樣:
一旦你完成了添加你喜歡的軟體包,保存配置文件並使用以下命令來安裝軟體包:
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
然後我的主目錄管理器塊會看起來像這樣:
現在,保存修改並退出文本編輯器。
接下來,重建配置並使用以下命令進行切換:
sudo nixos-rebuild switch
這是這樣!軟體包將很快被安裝。
這就結束了
我認為你應該選擇獨立安裝,因為你不需要使用超級用戶的許可權。另外,如果你運行一個有多個用戶的系統,為不同的用戶擁有不同的配置文件是相當方便的。
因此,除非你想用一個文件來實現各種目的,否則我認為沒有其他理由使用模塊選項。
就這樣,我結束了 NixOS 的初學者系列。我希望它能給你一個足夠好的平台來熟悉這個獨特的 Linux 發行版。
? 你喜歡 NixOS 系列文章嗎?對於 NixOS 的初學者,我們還有什麼要介紹的嗎?請提供你的寶貴意見。
via: https://itsfoss.com/home-manager-nixos/
作者:Sagar Sharma 選題:lkxed 譯者:wxy 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive