-
ディレクトリ運用
-
config/
- 基本はoptionのみを記述する
- 他のコンフィグをmkDefaultでtrueにすることもOK
- 実装(
services.*,programs.*)は書かない
-
os/
- NixOS固有の設定のみを記述する
services.*programs.*hardware.*boot.*等lib.mkIf <cfg>.enable { ... }以外に設定を記述してはならない- options/host/homeの設定は書かない
-
home/
- ユーザー側の環境設定のみ記述
home.packagesprograms.*等lib.mkIf <cfg>.enable { ... }以外に設定を記述してはならない- options/host/osの設定は書かない
-
hosts/
- マシン固有の設定を書く
my.*.enableの切替はOKnetworking.hostNameusernameなどの設定もOKprograms.*などの設定はダメmy以外の*.enableもダメ
-
-
default.nixの規則
default.nixは他ファイルのインポート専用imports = [];以外のコードは書いてはならない。
ダメなやつ
{
import = [./some.nix];
environment.packages = with pkgs; [hogefuga];
}いいやつ
let cfg = config.ice.os;
in {
options.ice.os = {
enable = lib.mkEnableOption "os config";
xserver ...
};
}