79 lines
1.6 KiB
Nix
79 lines
1.6 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
let
|
|
allowManageGroups = [
|
|
"root"
|
|
"wheel"
|
|
"lpadmin"
|
|
];
|
|
polkitAllowGroups = builtins.concatStringsSep "||" (
|
|
builtins.map (group: ''subject.isInGroup("${group}")'') allowManageGroups
|
|
);
|
|
|
|
printerMember = lib.map (user: user.name) (
|
|
lib.attrsets.attrsToList (
|
|
lib.attrsets.filterAttrs (name: value: value.isNormalUser) config.users.users
|
|
)
|
|
);
|
|
|
|
in
|
|
{
|
|
environment.systemPackages = [ pkgs.simple-scan ];
|
|
nixpkgs.config.allowUnfreePredicate =
|
|
pkg:
|
|
builtins.elem (lib.getName pkg) [
|
|
"brgenml1lpr"
|
|
"cups-brother-dcpt310"
|
|
"cups-brother-dcpt720dw"
|
|
"cups-brother-dcpt725dw"
|
|
];
|
|
# nixpkgs.config.allowUnfree = true;
|
|
services.ipp-usb.enable = true;
|
|
services.printing = {
|
|
enable = true;
|
|
drivers = [
|
|
pkgs.brlaser
|
|
pkgs.gutenprint
|
|
pkgs.brgenml1lpr
|
|
pkgs.brgenml1cupswrapper
|
|
pkgs.cups-brother-dcpt310
|
|
pkgs.cups-brother-dcpt720dw
|
|
pkgs.cups-brother-dcpt725dw
|
|
];
|
|
|
|
extraFilesConf = ''
|
|
SystemGroup ${builtins.concatStringsSep " " allowManageGroups}
|
|
'';
|
|
};
|
|
|
|
security.polkit = {
|
|
enable = true;
|
|
|
|
extraConfig = ''
|
|
polkit.addRule(function(action, subject) {
|
|
var actionMatchs = (
|
|
action.id.indexOf('org.opensuse.cupspkhelper.mechanism.') === 0
|
|
);
|
|
if (actionMatchs) {
|
|
if (${polkitAllowGroups}) {
|
|
return polkit.Result.YES
|
|
}
|
|
}
|
|
});
|
|
'';
|
|
};
|
|
|
|
hardware.sane = {
|
|
enable = true;
|
|
};
|
|
|
|
users.groups.lpadmin.members = printerMember;
|
|
users.groups.lp.members = printerMember;
|
|
users.groups.scanner.members = printerMember;
|
|
|
|
}
|