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 <sandro.jaeckel@gmail.com>
This commit is contained in:
parent
3bcc8e1ac7
commit
a99ab1fbc1
@ -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 {
|
startWhenNeeded = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
@ -343,8 +352,9 @@ in
|
|||||||
|
|
||||||
path = [ cups.out ];
|
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/cache/cups
|
||||||
mkdir -m 0700 -p /var/spool/cups
|
mkdir -m 0700 -p /var/spool/cups
|
||||||
mkdir -m 0755 -p ${cfg.tempDir}
|
mkdir -m 0755 -p ${cfg.tempDir}
|
||||||
|
@ -4,6 +4,7 @@ import ./make-test-python.nix ({pkgs, ... }:
|
|||||||
let
|
let
|
||||||
printingServer = startWhenNeeded: {
|
printingServer = startWhenNeeded: {
|
||||||
services.printing.enable = true;
|
services.printing.enable = true;
|
||||||
|
services.printing.stateless = true;
|
||||||
services.printing.startWhenNeeded = startWhenNeeded;
|
services.printing.startWhenNeeded = startWhenNeeded;
|
||||||
services.printing.listenAddresses = [ "*:631" ];
|
services.printing.listenAddresses = [ "*:631" ];
|
||||||
services.printing.defaultShared = true;
|
services.printing.defaultShared = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user