summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2018-07-15 21:39:07 +0000
committerGitHub <noreply@github.com>2018-07-15 21:39:07 +0000
commit8bda93f0b2cb32d3002a0f4cc26326abc44697de (patch)
tree44107c6ba5dc058448ff2e5b27d00c40f399089d /nixos
parenta2eb1703e15bb809fb2ecffeaba8ff532447c4b7 (diff)
parentd81f819db35fe833d935486439d085bd5c3e85da (diff)
downloadnixlib-8bda93f0b2cb32d3002a0f4cc26326abc44697de.tar
nixlib-8bda93f0b2cb32d3002a0f4cc26326abc44697de.tar.gz
nixlib-8bda93f0b2cb32d3002a0f4cc26326abc44697de.tar.bz2
nixlib-8bda93f0b2cb32d3002a0f4cc26326abc44697de.tar.lz
nixlib-8bda93f0b2cb32d3002a0f4cc26326abc44697de.tar.xz
nixlib-8bda93f0b2cb32d3002a0f4cc26326abc44697de.tar.zst
nixlib-8bda93f0b2cb32d3002a0f4cc26326abc44697de.zip
Merge pull request #37096 from jfrankenau/feat-cups-socket
nixos/cupsd: Add option to start when needed
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/printing/cupsd.nix17
1 files changed, 16 insertions, 1 deletions
diff --git a/nixos/modules/services/printing/cupsd.nix b/nixos/modules/services/printing/cupsd.nix
index b074d15cbec1..dbf18ec1d114 100644
--- a/nixos/modules/services/printing/cupsd.nix
+++ b/nixos/modules/services/printing/cupsd.nix
@@ -124,6 +124,16 @@ in
         '';
       };
 
+      startWhenNeeded = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          If set, CUPS is socket-activated; that is,
+          instead of having it permanently running as a daemon,
+          systemd will start it on the first incoming connection.
+        '';
+      };
+
       listenAddresses = mkOption {
         type = types.listOf types.str;
         default = [ "localhost:631" ];
@@ -287,8 +297,13 @@ in
 
     systemd.packages = [ cups.out ];
 
+    systemd.sockets.cups = mkIf cfg.startWhenNeeded {
+      wantedBy = [ "sockets.target" ];
+      listenStreams = map (x: replaceStrings ["localhost"] ["127.0.0.1"] (removePrefix "*:" x)) cfg.listenAddresses;
+    };
+
     systemd.services.cups =
-      { wantedBy = [ "multi-user.target" ];
+      { wantedBy = optionals (!cfg.startWhenNeeded) [ "multi-user.target" ];
         wants = [ "network.target" ];
         after = [ "network.target" ];