😎

nix-darwinのnix-daemonに環境変数を追加する

2023/04/20に公開

背景

fetchFromGitHubでprivateリポジトリを取得するには環境変数 NIX_GITHUB_PRIVATE_USERNAAMENIX_GITHUB_PRIVATE_PASSWORDを設定している必要がある。
nix-daemonが有効な場合、nix-daemonによってfetchされるので環境変数を設定したい。

nix-darwin環境での具体例

nix-dawrinのnix-daemon.enableで起動している場合は、darwin-configuration.nixnix.envVarsに記述すればよい。

  services.nix-daemon.enable = true;
  nix.envVars = {
    NIX_GITHUB_PRIVATE_USERNAME = "xxxx";
    NIX_GITHUB_PRIVATE_PASSWORD = "xxxxxxxxx";
  };

lauchd経由でdaemonを起動し、起動するときに渡す環境変数は config.nix.envVarsを参照しているからである。
https://github.com/LnL7/nix-darwin/blob/025912529dd0b31dead95519e944ea05f1ad56f2/modules/services/nix-daemon.nix#L64-L71

また、nix.envVarsの定義はこちら。
https://github.com/LnL7/nix-darwin/blob/025912529dd0b31dead95519e944ea05f1ad56f2/modules/nix/default.nix#L339-L344

nix-darwinを利用していない場合

/Library/LaunchDaemons/org.nixos.nix-daemon.plistにdaemonの設定ファイルがあるので、ここに書き加えたらたぶんいいはず。
upgradeした際に上書きされたりする可能性はあるかもしれない。

参考 https://nixos.org/manual/nix/stable/installation/installing-binary.html

Discussion