aubergine: nftables: fix DHCP renewal
[julm/julm-nix.git] / nixos / profiles / printing.nix
index e09cac842a45054e59c5b4f1adfaee9ea6c7544b..a19c69d07ed50368e02bca753ed719d2ef01f0c1 100644 (file)
@@ -1,8 +1,13 @@
-{ pkgs, ... }:
+{ 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"
+      }
+    }
+  '';
 }