mirror of
https://github.com/ItsDrike/nixdots
synced 2024-11-10 02:19:41 +00:00
ItsDrike
00016063fe
Originally, I was including all role configurations for all hosts, and controlling which get applied in the role configs with a check in each file. This is a very repetetive and annoying approach. Instead, now the role directory is included manually from the hosts config for devices which meet that role, removing the role options.
46 lines
1.1 KiB
Nix
46 lines
1.1 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}: let
|
|
inherit (lib) mkIf optional;
|
|
|
|
cfg = config.myOptions.workstation.printing;
|
|
cfgUser = config.myOptions.system.username;
|
|
in {
|
|
config = mkIf cfg.enable {
|
|
# enable cups and add some drivers for common printers
|
|
services = {
|
|
printing = {
|
|
enable = true;
|
|
drivers = with pkgs; [
|
|
gutenprint
|
|
hplip
|
|
];
|
|
};
|
|
|
|
# required for network discovery of printers
|
|
avahi = {
|
|
enable = true;
|
|
# resolve .local domains for printers
|
|
nssmdns4 = true;
|
|
# open the avahi port(s) in the firewall
|
|
openFirewall = true;
|
|
};
|
|
};
|
|
|
|
environment.systemPackages = optional cfg.hplip.enable pkgs.hplip;
|
|
myOptions.system.impermanence.home.extraDirectories = optional cfg.hplip.enable ".hplip";
|
|
|
|
# Support for SANE (Scanner Access Now Easy) scanners
|
|
hardware.sane = {
|
|
enable = true;
|
|
extraBackends = optional cfg.hplip.enable pkgs.hplipWithPlugin;
|
|
};
|
|
|
|
users.extraGroups.scanner.members = ["${cfgUser}"];
|
|
users.extraGroups.lp.members = ["${cfgUser}"];
|
|
};
|
|
}
|