From 27a5758728d34cc71aa39af0bd8d84ad7ef46db1 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Thu, 21 Jun 2018 15:20:49 +0200 Subject: [PATCH] nix-daemon: add option to make service socket activated This makes the service start on demand when a client connects to the daemon socket, instead of keeping it alive. services.nix-daemon.enableSocketListener = true; --- modules/services/nix-daemon.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/services/nix-daemon.nix b/modules/services/nix-daemon.nix index c19c159..978ad51 100644 --- a/modules/services/nix-daemon.nix +++ b/modules/services/nix-daemon.nix @@ -14,6 +14,12 @@ in description = "Whether to enable the nix-daemon service."; }; + services.nix-daemon.enableSocketListener = mkOption { + type = types.bool; + default = false; + description = "Whether to make the nix-daemon service socket activated."; + }; + services.nix-daemon.logFile = mkOption { type = types.nullOr types.path; default = null; @@ -39,13 +45,19 @@ in launchd.daemons.nix-daemon = { command = "${config.nix.package}/bin/nix-daemon"; - serviceConfig.KeepAlive = true; serviceConfig.ProcessType = "Interactive"; serviceConfig.LowPriorityIO = config.nix.daemonIONice; serviceConfig.Nice = config.nix.daemonNiceLevel; serviceConfig.SoftResourceLimits.NumberOfFiles = 4096; serviceConfig.StandardErrorPath = cfg.logFile; + serviceConfig.KeepAlive = mkIf (!cfg.enableSocketListener) true; + + serviceConfig.Sockets = mkIf cfg.enableSocketListener + { Listeners.SockType = "stream"; + Listeners.SockPathName = "/nix/var/nix/daemon-socket/socket"; + }; + serviceConfig.EnvironmentVariables = mkMerge [ config.nix.envVars { NIX_SSL_CERT_FILE = mkDefault "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";