{ config, lib, ... }: with lib; let cfg = config.roles.printing; in { options.roles.printing = { enable = mkEnableOption "Enable default printing setup"; }; config = mkIf cfg.enable { services.printing.enable = true; services.avahi = { enable = true; nssmdns4 = true; openFirewall = true; }; hardware.printers.ensurePrinters = [{ name = "MFC-L8900CDW_series"; deviceUri = "ipp://brother.oglehome/ipp/print"; model = "everywhere"; }]; hardware.printers.ensureDefaultPrinter = "MFC-L8900CDW_series"; # Fix ensure-printers service to wait for network availability systemd.services.ensure-printers = { after = [ "cups.service" "network-online.target" ]; wants = [ "cups.service" "network-online.target" ]; }; }; }