NOTE: Nix home-manager 基本設定
home-manager 會讀取 .config/nixpkgs/home.nix
並套用裡面的設定(config),所以我們可以用一個 git repository 管理並用
ln -s $(pwd)/home.nix ${HOME}/.config/nixpkgs/home.nix
把設定掛到 home-manager 讀取的位置。一個基本的設定檔內容如下:
{ config, pkgs, ... }:
{
programs.home-manager.enable = true;
home.username = "$username";
home.homeDirectory = "/home/$username";
home.stateVersion = "21.03";
home.packages = with pkgs;
[
// 你想安裝的套件,以下為示範
tig
curl
silver-searcher
];
}
當然,不是任意字串都可以寫進去,套件是否存在可以到 nixos search packages 頁面裡搜尋確認。
某些常見的程式已經被寫死進 home-manager 中,因此可以得到更仔細的設定,如 =zsh=:
{ config, pkgs, ... }:
{
// ...
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" "dotenv" "osx" ];
theme = "robbyrussell";
};
shellAliases = {
ls = "ls -GFh";
ll = "ls -l";
la = "ll -a";
vi = "nvim";
vim = "nvim";
};
}
// ...
}
還可以用 home.file."$filename".text 控制 home 目錄下的檔案內容,例如
agda 就需要設定 ~/.agda/defaults 跟 =~/.agda/libraries=,如下:
{ config, pkgs, ... }:
{
// ...
home.file.".agda/libraries".text = builtins.readFile ./agda/libraries;
home.file.".agda/defaults".text = builtins.readFile ./agda/defaults;
// ...
}
builtins.readFile 後面接的檔案位置是相對於當前 home.nix 的位置。