nixOS
Linux operation system based on Nix.
We can use flakes as a configuration management of nixOS.
flake has output type nixosConfigurations. This defines nixOS configurations.
Options for nixos configuration
NixOS Manual
ssh authorized_keys は ~/.ssh/authorized_keys ではないところに鍵を配置することもある。実際の config を確認する。
systemd
NixOS Search - Options - serviceConfig
NixOS Search - Options
Modules
1. A basic module — nix.dev documentation
Writing NixOS Modules
NixOS Manual
NixOS modules - NixOS Wiki
デフォルト?のモジュールはここで定義されている
nixpkgs/nixos/modules at c44e7ddbed3f56365a6b0ac85f9f95c60bf82177 · NixOS/nixpkgs
モジュールの option を検索できるページもある
https://search.nixos.org/flakes?channel=unstable&sort=relevance&type=options&query=bitcoin
options 配下に services を追加するのは慣習らしい
nixos-optionというコマンドがあるみたい
mkPackageOption
module で使うパッケージを指定するオプション
NixOS Manual
configは option で定義されている値を実際に設定する属性
config というスコープ?は省略してもいいらしい?
NixOS modules - NixOS Wiki
あるモジュールで import した他のモジュールの option もここで定義することができる
モジュールの引数には何が、どうやって渡される?
これなのだろうか?
https://nixos.wiki/wiki/NixOS_modules#Function
そうみたい
他の値を渡せる仕組みもある
Appendix A. Configuration Options
2. Module system deep dive — nix.dev documentation
NixOS Manual
https://nixos.org/manual/nixos/stable/options.html#ch-options
submodule
option をネストしたり、同じ option を使いまわしたい時に使える
実例
nixpkgs/nixos/modules/services/networking/bitcoind.nix at nixos-24.11 · NixOS/nixpkgs
Understanding NixOS Modules and Declaring Options
submodule 関数?は config と name を引数に取ることができる
module は関数であることができる
lib を引数に撮ることがあり、それは nixpkgs.lib である
1. A basic module — nix.dev documentation
lib.types が使えるのはこれが理由
Option Types
Options Types — NixOS Manual documentation
specialArgs
Flakes - NixOS Wiki
nixOS configuration をテストするために、ローカルで VM を立ち上げることができる
NixOS virtual machines — nix.dev documentation
https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/virtualisation/qemu-vm.nix
nixOS 環境で使える、任意のコマンドを定義したい
pkgs.runCommand