{ config, lib, ... }: with lib; let cfg = config.local.hardware.printing; in { options.local.hardware.printing = { enable = mkEnableOption "print and scan services"; users = mkOption { type = with types; listOf str; default = [ ]; }; }; config = mkIf cfg.enable { services.avahi = { enable = true; nssmdns4 = true; openFirewall = true; }; hardware.sane.enable = true; services.printing.enable = true; users.users = listToAttrs (map (user: { name = user; value.extraGroups = [ "scanner" "lp" ]; }) cfg.users); }; }