{
pkgs,
lib,
config,
...
}:
{
imports = [
./avahi.nix
];
services.printing = {
enable = true;
drivers = [
pkgs.canon-cups-ufr2
pkgs.cups-filters
pkgs.gutenprint
pkgs.hplip
];
};
hardware.sane.enable = true;
hardware.sane.extraBackends = [
pkgs.hplipWithPlugin
pkgs.sane-airscan
];
services.colord.enable = true;
# ExplanationNote: cups-browsed only supports avahi, not systemd-resolved
services.avahi.enable = lib.mkDefault true;
services.resolved.extraConfig = ''
MulticastDNS=false
'';
networking.nftables.ruleset =
''
table inet filter {
chain output-lan {
tcp dport { ipp, ipps } counter accept comment "printing: IPP"
tcp dport sane-port counter accept comment "sane-net: control port"
tcp dport {40000 - 40100} counter accept comment "saned: data ports"
}
}
''
+ lib.optionalString config.hardware.sane.openFirewall ''
table inet filter {
chain input-lan {
udp canon-bjnp2 counter accept comment "sane: discovery of scanners on the local network"
}
}
'';
}