{ pkgs, config, ... }: { nixpkgs.config.allowUnfree = true; services.avahi.enable = true; services.avahi.publish.enable = true; services.avahi.publish.userServices = true; services.avahi.interfaces = [ config.makefu.server.primary-itf ]; services.avahi.ipv6 = false; services.avahi.nssmdns = true; # via https://github.com/tjfontaine/airprint-generate/ # environment.etc."avahi/services/samsung_scx2300.service".text nixpkgs.config.packageOverrides = pkgs: rec { avahi = pkgs.stdenv.lib.overrideDerivation pkgs.avahi (oldAttrs: { postFixup = let cfg = pkgs.writeText "airprint-scx3200.service" ''AirPrint Samsung_SCX-3200_Series @ %h_ipp._tcp_universal._sub._ipp._tcp631txtvers=1qtotal=1Transparent=TURF=nonerp=printers/Samsung_SCX-3200_Seriesnote=Samsung SCX-3200 Seriesproduct=(GPL Ghostscript)printer-state=3printer-type=0x801044pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/vnd.adobe-reader-postscript,application/vnd.cups-command''; in '' cp ${cfg} $out/etc/avahi/services/airprint-scx3200.service ''; }); }; # only allowed in local network services.printing = { enable = true; browsing = true; #avahiEnabled = true; defaultShared = true; listenAddresses = [ "*:631" ]; drivers = [ pkgs.samsungUnifiedLinuxDriver ]; }; # scanners are printers just in reverse anyway hardware.sane.enable = true; hardware.sane.extraBackends = [ pkgs.samsungUnifiedLinuxDriver ]; }