diff options
Diffstat (limited to 'modules/darwin/custom/determinate.nix')
| -rw-r--r-- | modules/darwin/custom/determinate.nix | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/modules/darwin/custom/determinate.nix b/modules/darwin/custom/determinate.nix new file mode 100644 index 0000000..2e4e968 --- /dev/null +++ b/modules/darwin/custom/determinate.nix @@ -0,0 +1,119 @@ +{ + config, + lib, + inputs', + ... +}: + +let + cfg = config.borealis.determinate; + + package = inputs'.determinate.packages.default; +in + +{ + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + (lib.mkIf cfg.determinate-nixd.enable { + assertions = [ + { + assertion = config.nix.daemon; + message = "`nix.daemon` must be `true` when using `traits.determinate`"; + } + + { + assertion = !config.services.nix-daemon.enable; + message = "`services.nix-daemon` and `traits.determinate` conflict"; + } + ]; + + launchd.daemons = { + determinate-nixd-store.serviceConfig = { + Label = "systems.determinate.nix-store"; + RunAtLoad = true; + + StandardErrorPath = lib.mkForce "/var/log/determinate-nix-init.log"; + StandardOutPath = lib.mkForce "/var/log/determinate-nix-init.log"; + + ProgramArguments = lib.mkForce [ + "/usr/local/bin/determinate-nixd" + "--nix-bin" + "${config.nix.package}/bin" + "init" + ]; + }; + + determinate-nixd.serviceConfig = { + Label = "systems.determinate.nix-daemon"; + + StandardErrorPath = lib.mkForce "/var/log/determinate-nix-daemon.log"; + StandardOutPath = lib.mkForce "/var/log/determinate-nix-daemon.log"; + + ProgramArguments = lib.mkForce [ + "/usr/local/bin/determinate-nixd" + "--nix-bin" + "${config.nix.package}/bin" + "daemon" + ]; + + Sockets = { + "determinate-nixd.socket" = { + # We'd set `SockFamily = "Unix";`, but nix-darwin automatically sets it with SockPathName + SockPassive = true; + SockPathName = "/var/run/determinate-nixd.socket"; + }; + + "nix-daemon.socket" = { + # We'd set `SockFamily = "Unix";`, but nix-darwin automatically sets it with SockPathName + SockPassive = true; + SockPathName = "/var/run/nix-daemon.socket"; + }; + }; + + SoftResourceLimits = { + NumberOfFiles = lib.mkDefault 1048576; + NumberOfProcesses = lib.mkDefault 1048576; + Stack = lib.mkDefault 67108864; + }; + + HardResourceLimits = { + NumberOfFiles = lib.mkDefault 1048576; + NumberOfProcesses = lib.mkDefault 1048576; + Stack = lib.mkDefault 67108864; + }; + }; + }; + + nix.useDaemon = true; + + services.nix-daemon.enable = false; + + system.activationScripts = { + launchd.text = lib.mkBefore '' + if test -e /Library/LaunchDaemons/org.nixos.nix-daemon.plist; then + echo "Unloading org.nixos.nix-daemon" + launchctl bootout system /Library/LaunchDaemons/org.nixos.nix-daemon.plist || true + mv /Library/LaunchDaemons/org.nixos.nix-daemon.plist /Library/LaunchDaemons/.before-determinate-nixd.org.nixos.nix-daemon.plist.skip + fi + + if test -e /Library/LaunchDaemons/org.nixos.darwin-store.plist; then + echo "Unloading org.nixos.darwin-store" + launchctl bootout system /Library/LaunchDaemons/org.nixos.darwin-store.plist || true + mv /Library/LaunchDaemons/org.nixos.darwin-store.plist /Library/LaunchDaemons/.before-determinate-nixd.org.nixos.darwin-store.plist.skip + fi + + install -d -m 755 -o root -g wheel /usr/local/bin + cp ${lib.getExe package "determinate-nixd"} /usr/local/bin/.determinate-nixd.next + chmod +x /usr/local/bin/.determinate-nixd.next + mv /usr/local/bin/.determinate-nixd.next /usr/local/bin/determinate-nixd + ''; + + nix-daemon = lib.mkForce { + enable = false; + text = ""; + }; + }; + }) + ] + ); +} |
