Hello! I am struggling to set up my Brother MFC-L3770CDW printer for NixOS. Below is my config:
{ pkgs, ... }:
{
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
services.printing = {
enable = true;
drivers = with pkgs; [
cups-filters
cups-browsed
mfcl3770cdwlpr
mfcl3770cdwcupswrapper
brgenml1lpr
brgenml1cupswrapper
];
};
hardware.printers = {
ensurePrinters = [
{
name = "Brother_MFC_L3770CDW";
location = "Home";
deviceUri = "ipp://BRW8CC84B717AEC.local/ipp/print";
model = "everywhere";
# model = "brother_mfcl3770cdw_printer_en.ppd";
# model = "brother-BrGenML1-cups-en.ppd";
}
];
ensureDefaultPrinter = "Brother_MFC_L3770CDW";
};
}
Relying entirely on CUPS discovery (before I chose to manually set up my printer) allowed rebuild switch to finish, but nothing can be printed– Firefox’s print option for the automatically detected printer was greyed out and LibreOffice lets you press print but it fails with a generic error message after idling for a while. Then, I attempted manually setting it up with the IP Everywhere protocol which was suggested in a lot of other posts like this, but then the rebuild-switch wouldn’t even compile.
Using IP Everywhere hangs at “starting the following units: ensure-printers.service” for a while then it gives an error message as shown below:
starting the following units: ensure-printers.service
Failed to start ensure-printers.service
warning: the following units failed: ensure-printers.service
× ensure-printers.service - Ensure NixOS-configured CUPS printers
Loaded: loaded (/etc/systemd/system/ensure-printers.service; enabled; preset: ignored)
Active: failed (Result: exit-code) since Wed 2026-07-08 13:35:03 EDT; 268ms ago
Duration: 22min 5.470s
Invocation: 8f04cca3cc874222a1864b39bf24f474
Process: 27010 ExecStart=/nix/store/s34z5xcjv5i3rmapc9ynd4y70g9haxcg-unit-script-ensure-printers-start/bin/ensure-printers-start (code=exited, status
=1/FAILURE)
Main PID: 27010 (code=exited, status=1/FAILURE)
IP: 0B in, 0B out
IO: 0B read, 40K written
Mem peak: 2.4M
CPU: 16ms
Jul 08 13:34:03 tpt14g5 systemd[1]: Starting Ensure NixOS-configured CUPS printers...
Jul 08 13:35:03 tpt14g5 ensure-printers-start[27013]: lpadmin: Connection timed out
Jul 08 13:35:03 tpt14g5 systemd[1]: ensure-printers.service: Main process exited, code=exited, status=1/FAILURE
Jul 08 13:35:03 tpt14g5 systemd[1]: ensure-printers.service: Failed with result 'exit-code'.
Jul 08 13:35:03 tpt14g5 systemd[1]: Failed to start Ensure NixOS-configured CUPS printers.
Command 'systemd-run -E LOCALE_ARCHIVE -E NIXOS_INSTALL_BOOTLOADER -E NIXOS_NO_CHECK --collect --no-ask-password --pipe --quiet --service-type=exec --uni
t=nixos-rebuild-switch-to-configuration /nix/store/ldmxxhsj833nnk2d6dd3d490qakyijk7-nixos-system-tpt14g5-26.11.20260705.d407951/bin/switch-to-configurati
on switch' returned non-zero exit status 4.
Finally, I individually attempted to use the two driver sets that are commented out. Rebuilding the system works without any issues. When I try to print something, there are no errors but the printer doesn’t print the documents. For now though, I am mainly interested in getting IP Everywhere to work so I don’t need drivers. If it helps, below is the output of the command avahi-browse -rt _ipp._tcp.
+ wlp0s20f3 IPv6 Brother MFC-L3770CDW series _ipp._tcp local
+ wlp0s20f3 IPv4 Brother MFC-L3770CDW series _ipp._tcp local
= wlp0s20f3 IPv6 Brother MFC-L3770CDW series _ipp._tcp local
hostname = [BRW8CC84B717AEC.local]
address = [192.168.1.116]
port = [631]
txt = ["mopria-certified=1.3" "print_wfds=T" "UUID=e3248000-80ce-11db-8000-b42200021ef4" "PaperMax=legal-A4" "kind=document,envelope,label,postcard" "URF=SRGB24,W8,CP1,IS19-1,MT1-3-4-5-8-11,OB10,PQ4,RS600,V1.4,DM1" "rfo=ipp/faxout" "TBCP=F" "Transparent=T" "Binary=T" "PaperCustom=T" "Scan=T" "Fax=T" "Duplex=T" "Copies=T" "Color=T" "usb_CMD=PJL,PCL,PCLXL,URF" "usb_MDL=MFC-L3770CDW series" "usb_MFG=Brother" "priority=25" "adminurl=http://BRW8CC84B717AEC.local./net/net/airprint.html" "product=(Brother MFC-L3770CDW series)" "ty=Brother MFC-L3770CDW series" "note=" "rp=ipp/print" "pdl=application/octet-stream,image/urf,image/jpeg,image/pwg-raster" "qtotal=1" "txtvers=1"]
= wlp0s20f3 IPv4 Brother MFC-L3770CDW series _ipp._tcp local
hostname = [BRW8CC84B717AEC.local]
address = [192.168.1.116]
port = [631]
txt = ["mopria-certified=1.3" "print_wfds=T" "UUID=e3248000-80ce-11db-8000-b42200021ef4" "PaperMax=legal-A4" "kind=document,envelope,label,postcard" "URF=SRGB24,W8,CP1,IS19-1,MT1-3-4-5-8-11,OB10,PQ4,RS600,V1.4,DM1" "rfo=ipp/faxout" "TBCP=F" "Transparent=T" "Binary=T" "PaperCustom=T" "Scan=T" "Fax=T" "Duplex=T" "Copies=T" "Color=T" "usb_CMD=PJL,PCL,PCLXL,URF" "usb_MDL=MFC-L3770CDW series" "usb_MFG=Brother" "priority=25" "adminurl=http://BRW8CC84B717AEC.local./net/net/airprint.html" "product=(Brother MFC-L3770CDW series)" "ty=Brother MFC-L3770CDW series" "note=" "rp=ipp/print" "pdl=application/octet-stream,image/urf,image/jpeg,image/pwg-raster" "qtotal=1" "txtvers=1"]
Any pointers to resolve this would be appreciated!