naming-conventionlisted
Install: claude install-skill ncaq/konoka
# Nix命名規則
[nixpkgsの公式コーディング規約](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md)に基づきます。
## ファイル名・ディレクトリ名
kebab-caseを使用します。
例: `all-packages.nix`, `claude-code.nix`
## 変数名・属性名
| 種類 | スタイル | 例 |
| ----------------------------- | ------------------ | -------------------------------------- |
| 単純な変数・関数・設定値 | lowerCamelCase | `hostName`, `removePrefix` |
| パッケージ・derivation | kebab-case | `github-mcp-server`, `claude-code-bin` |
| Flake input等の外部ソース参照 | 参照先の名前に従う | `nixpkgs-unstable`, `treefmt-nix` |
| システム識別子 | Nixの規定形式 | `x86_64-linux`, `aarch64-linux` |
単純な識別子はlowerCamelCaseを使用します。
パッケージやプログラムを示す変数は、
pnameと同様にkebab-caseを使用します。
2012年以降、
Nix言語では識別子にハイフンを使用できます。
Flake inputなど外部ソースを参照する変数は、
参照先のリポジトリ名やチャンネル名をそのまま使用します。
多くの場合はkebab-caseですが、
参照先の命名に従うのが原則です。
`.emacs.d` -> `dot-emacs`のような例外もあります。
システム識別子は`<arch>-<os>`の形式で、
`x86_64-linux`, `aarch64-linux`, `aarch64-darwin`などNixが規定する文字列をそのまま使用します。
Flake outputの`packages`や`devShells`の属性名として頻出します。
## NixOSオプション
原則camelCaseを使用します。
例:
- `environment.systemPackages`
- `security.tpm2.tctiEnvironment.enable`
例外:
- パッケージ名を参照する場合はkebab-case: `services.nix-serve`
- `nix.settings`など外部設定ファイルをマッピングするオプションは、その設定ファイルの命名規則に従う(nix.confはkebab-case)
### booleanオプションの`enable`プレフィックス
booleanオプションには`enable`プレフィックスを使用します。
`enabled`, `isEnabled`, `useXxx`などは使用しません。
例:
- `services.nginx.enable`