From a99ab1fbc16dfdbe4922aa30357886fd5e09e7a0 Mon Sep 17 00:00:00 2001 From: matthewcroughan Date: Mon, 17 Oct 2022 22:59:24 +0100 Subject: [PATCH] nixos/printing: add services.printing.stateless option This will remove all state directories related to CUPS on startup, which is particularly useful for guaranteeing that printer discovery works more reliably on some networks, since CUPS will no longer be able to store state that effects the next run of the service, such as old printer names and mDNS information. Co-authored-by: Sandro --- nixos/modules/services/printing/cupsd.nix | 14 ++++++++++++-- nixos/tests/printing.nix | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/printing/cupsd.nix b/nixos/modules/services/printing/cupsd.nix index fea7ffb673ca..ae59dcc226de 100644 --- a/nixos/modules/services/printing/cupsd.nix +++ b/nixos/modules/services/printing/cupsd.nix @@ -134,6 +134,15 @@ in ''; }; + stateless = mkOption { + type = types.bool; + default = false; + description = lib.mdDoc '' + If set, all state directories relating to CUPS will be removed on + startup of the service. + ''; + }; + startWhenNeeded = mkOption { type = types.bool; default = true; @@ -343,8 +352,9 @@ in path = [ cups.out ]; - preStart = - '' + preStart = lib.optionalString cfg.stateless '' + rm -rf /var/cache/cups /var/lib/cups /var/spool/cups + '' + '' mkdir -m 0700 -p /var/cache/cups mkdir -m 0700 -p /var/spool/cups mkdir -m 0755 -p ${cfg.tempDir} diff --git a/nixos/tests/printing.nix b/nixos/tests/printing.nix index 6338fd8d8ac1..cfebe232d92a 100644 --- a/nixos/tests/printing.nix +++ b/nixos/tests/printing.nix @@ -4,6 +4,7 @@ import ./make-test-python.nix ({pkgs, ... }: let printingServer = startWhenNeeded: { services.printing.enable = true; + services.printing.stateless = true; services.printing.startWhenNeeded = startWhenNeeded; services.printing.listenAddresses = [ "*:631" ]; services.printing.defaultShared = true;