I'm trying to get a epson v39 scanner running under NixOS.

I followed the instructions on this page, which basically tells you to add the following to the configuration.nix :

hardware.sane.enable = true;
# nixpkgs.config.sane.snapscanFirmware = /firmware/esfw41.bin;
nixpkgs.config.packageOverrides = pkgs: {
  xsaneGimp = xsane.override { gimpSupport = true; };

I commented out the firmware section, since I would not know where to get a "blob" like this for my scanner.

anyways. The rebuilding works. When trying sane-find-scanner in the command line, it looks like the scanner is detected:

found USB scanner (vendor=0x04b8 [EPSON], product=0x013d [Epson Perfection V39]) at libusb:003:005

However, when trying to use scanimage as root, I get this for example:

bash-4.3# scanimage -L
[bjnp] create_broadcast_socket: ERROR - bind socket to local address failed - Cannot assign requested address

Note: During none of the steps I see any activity on the device (lights, etc).

1 Answer 1


I managed Epson Perfection 1270 to work like this:

  1. import module mentioned in https://github.com/NixOS/nixpkgs/issues/17411
  2. replace line cat ${builtins.toFile "" (c.value + "\n")} >>"$f" in that module with cat ${builtins.toFile "" (c.value + "\n")} >"$f"
  3. add hardware.sane.enable = true; hardware.sane.extraConfig.snapscan = '' # Epson Perfection 1270 firmware /path/to/firmware/ESFW3E.bin # in your case # usb 0x04b8 0x013d usb 0x04b8 0x0120 ''; hardware.sane.snapshot = true;

and that's it . Firmware is a must and was downloaded somewhere from internet.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .