{ config, lib, pkgs, ... }: with lib; let cfg = config.fuckingprint; fixPlatforms = p: p.overrideAttrs (super: super // { meta = super.meta // { platforms = super.meta.platforms ++ ["x86_64-linux"]; }; }); in { options.fuckingprint.enable = mkEnableOption "Make my fucking printer work"; config = mkIf cfg.enable { # Enable CUPS and SANE for printing and scanning services.printing = { enable = true; drivers = with pkgs; [ gutenprint gutenprintBin hplip samsung-unified-linux-driver splix brlaser brgenml1lpr brgenml1cupswrapper carps-cups epson-201106w epson-alc1100 epson-escpr epson-escpr2 epson-workforce-635-nx625-series epson_201207w fxlinuxprint canon-cups-ufr2 cups-bjnp cups-brother-hl1110 cups-brother-hl1210w cups-brother-hl3140cw cups-brother-hll2340dw cups-drv-rastertosag-gdi cups-dymo # cups-kyocera # mirror is down cups-kyocera-ecosys-m552x-p502x # cups-kyodialog3 # Mirror is down cups-toshiba-estudio cups-zj-58 mfc9140cdncupswrapper mfc9140cdnlpr mfcj470dw-cupswrapper mfcj470dwlpr mfcj6510dw-cupswrapper mfcj6510dwlpr mfcl2700dncupswrapper mfcl2700dnlpr mfcl2720dwcupswrapper mfcl2720dwlpr mfcl2740dwcupswrapper mfcl2740dwlpr mfcl3770cdwcupswrapper mfcl3770cdwlpr # Maybe this isn't a good idea? (mfcl8690cdwcupswrapper.override { mfcl8690cdwlpr = fixPlatforms mfcl8690cdwlpr; }) (fixPlatforms mfcl8690cdwlpr) ]; }; hardware.sane = { enable = true; brscan4.enable = true; brscan5.enable = true; dsseries.enable = true; drivers.scanSnap.enable = true; extraBackends = with pkgs; [ epkowa hplipWithPlugin ]; }; services.udev.packages = [pkgs.utsushi]; }; }