summaryrefslogtreecommitdiff
path: root/modules/darwin/services
diff options
context:
space:
mode:
Diffstat (limited to 'modules/darwin/services')
-rw-r--r--modules/darwin/services/default.nix5
-rw-r--r--modules/darwin/services/determinate.nix119
2 files changed, 124 insertions, 0 deletions
diff --git a/modules/darwin/services/default.nix b/modules/darwin/services/default.nix
new file mode 100644
index 0000000..499a418
--- /dev/null
+++ b/modules/darwin/services/default.nix
@@ -0,0 +1,5 @@
+{
+ imports = [
+ ./determinate.nix
+ ];
+}
diff --git a/modules/darwin/services/determinate.nix b/modules/darwin/services/determinate.nix
new file mode 100644
index 0000000..2716150
--- /dev/null
+++ b/modules/darwin/services/determinate.nix
@@ -0,0 +1,119 @@
+{
+ config,
+ lib,
+ inputs',
+ ...
+}:
+
+let
+ cfg = config.services.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 = "";
+ };
+ };
+ })
+ ]
+ );
+}