{ lib, pkgs, ... }: let inherit (lib.options) mkEnableOption; in { options.modules.services.cups.enable = mkEnableOption "CUPS, the Common UNIX printing system"; config = { services = { # enable CUPS, the Common UNIX printing system. printing = { enable = true; # Move CUPSd's temporary directory. # By default, it resides in /tmp. tempDir = "/tmp/cups"; # Do not advertise shared printers. browsing = true; # browsedConf = '' # BrowseDNSSDSubTypes _cups,_print # BrowseLocalProtocols all # BrowseRemoteProtocols all # CreateIPPPrinterQueues All # BrowseProtocols all # ''; # Enable the CUPS webinterface, accessible at localhost:631. webInterface = true; logLevel = "debug"; # Some local or network printers might need additional drivers. # These can be added into here. drivers = with pkgs; [ gutenprint cups-kyocera-ecosys-m552x-p502x cups-filters ]; }; # Add and autodiscover printers on the network via the IPP everywhere[1] protocol. # [1] https://www.pwg.org/ipp/everywhere.html avahi = { enable = true; nssmdns4 = true; nssmdns6 = true; openFirewall = true; }; }; }; }