modules: system: printing: move from 'profiles'
All checks were successful
ci/woodpecker/push/check Pipeline was successful
All checks were successful
ci/woodpecker/push/check Pipeline was successful
This isn't really a cross-cutting module, it should be a module rather than a profile.
This commit is contained in:
parent
32ec402ad0
commit
27564cad42
6 changed files with 15 additions and 6 deletions
|
|
@ -10,6 +10,7 @@
|
|||
./nix
|
||||
./packages
|
||||
./podman
|
||||
./printing
|
||||
./users
|
||||
];
|
||||
}
|
||||
|
|
|
|||
69
modules/system/printing/default.nix
Normal file
69
modules/system/printing/default.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
cfg = config.my.system.printing;
|
||||
in
|
||||
{
|
||||
options.my.system.printing = with lib; {
|
||||
enable = mkEnableOption "printing configuration";
|
||||
|
||||
papersize = mkOption {
|
||||
type = with types; either str (enum [
|
||||
"a3"
|
||||
"a4"
|
||||
"a5"
|
||||
"b5"
|
||||
"letter"
|
||||
"legal"
|
||||
"executive"
|
||||
"note"
|
||||
"11x17"
|
||||
]);
|
||||
default = "a4";
|
||||
example = "paper";
|
||||
description = "preferred paper size";
|
||||
};
|
||||
|
||||
usb = {
|
||||
enable = my.mkDisableOption "USB printers";
|
||||
};
|
||||
|
||||
network = {
|
||||
enable = my.mkDisableOption "network printers";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Setup CUPS
|
||||
services.printing = {
|
||||
enable = true;
|
||||
|
||||
# Drivers are deprecated, but just in case
|
||||
drivers = with pkgs; [
|
||||
gutenprint # Base set of drivers
|
||||
brlaser # Brother drivers
|
||||
|
||||
# Brother MFC-L3770CDW
|
||||
mfcl3770cdwlpr
|
||||
mfcl3770cdwcupswrapper
|
||||
];
|
||||
};
|
||||
|
||||
# Setup paper size
|
||||
systemd.services.cups.serviceConfig.Environment = [
|
||||
"PAPERSIZE=${cfg.papersize}"
|
||||
];
|
||||
|
||||
# Allow using USB printers
|
||||
services.ipp-usb = lib.mkIf cfg.usb.enable {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Allow using WiFi printers
|
||||
services.avahi = lib.mkIf cfg.network.enable {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
# Allow resolution of '.local' addresses
|
||||
nssmdns = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue