mirror of
https://github.com/moons-14/dotfiles.git
synced 2026-10-06 01:58:12 +09:00
2.9 KiB
2.9 KiB
AGENTS.md
NixOS + Home Manager flake。v2 リセット中 — flake-parts 導入済み、outputs はまだスケルトンのみ。
Commands
# flake の更新
nix flake update
# フォーマット
nix fmt
Conventions
- User:
moons, locale:ja_JP.UTF-8, timezone:Asia/Tokyo - Commits: conventional commits (
feat:,chore:,fix:, etc.) - リモート:
[email protected]:moons-14/dotfiles.git modules/system/やmodules/applications/に新しいファイルを追加した際は、必ず同ディレクトリのdefault.nixのimportsに追加するenvironment.systemPackagesにパッケージを追加する際は、パッケージ名の横に簡単な説明をコメントで追加する
Module Structure
modules/system/
システムレベル(NixOS)の設定。OS 全体に影響する設定を配置する。
- 例: boot, hardware, network, user, locale, fonts, power, secure-boot, caches, gc, version
modules/applications/
アプリケーション固有の設定。ユーザーが個別に有効/無効を切り替えたいアプリケーションを配置する。
- 例: niri, noctalia, greetd, fcitx5, kde, wayland
Module Pattern
modules/system/ と modules/applications/ のモジュールは、デフォルトで config.my.* namespace で有効/無効を切り替えられる仕組みにする。
Simple Module (NixOS のみ)
home-manager の設定を含まないモジュール:
{
lib,
config,
...
}:
let
cfg = config.my.<category>.<name>;
in
{
options.my.<category>.<name> = {
enable = lib.mkEnableOption "<description>";
};
config = lib.mkIf cfg.enable {
# configuration here
};
}
my.system.*— system モジュール用my.applications.*— applications モジュール用
Complex Module (NixOS + Home Manager)
home-manager の設定も含むモジュールは3つのフラグを設定する:
modules/applications/<app>/
├── default.nix # my.applications.<app>.enable (マスター)
├── system.nix # my.applications.<app>.system.enable
├── home.nix # my.applications.<app>.homeManager.enable
└── (other files) # 設定ファイル等
default.nix:
{
lib,
config,
...
}:
let
cfg = config.my.applications.<name>;
in
{
options.my.applications.<name> = {
enable = lib.mkEnableOption "<description>";
system.enable = lib.mkEnableOption "<description> system configuration";
homeManager.enable = lib.mkEnableOption "<description> home-manager configuration";
};
imports = [
./system.nix
./home.nix
];
config = lib.mkIf cfg.enable {
my.applications.<name>.system.enable = lib.mkDefault true;
my.applications.<name>.homeManager.enable = lib.mkDefault true;
};
}
マスターの enable を有効にすると、lib.mkDefault で system と homeManager の両方が有効化される。個別に無効化も可能。