summaryrefslogtreecommitdiffstats
path: root/nixos/modules/services/printing
diff options
context:
space:
mode:
authorJohannes Frankenau <johannes@frankenau.net>2018-03-15 12:55:03 +0100
committerJohannes Frankenau <johannes@frankenau.net>2018-07-14 23:39:43 +0200
commitd81f819db35fe833d935486439d085bd5c3e85da (patch)
tree60bb0c843562e81247a3cafc50fff9b0169593b7 /nixos/modules/services/printing
parent23f5fe768dec00bead44badd077467ac4bbd64d7 (diff)
nixos/cupsd: add option to start when needed
Diffstat (limited to 'nixos/modules/services/printing')
-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" ];