about summary refs log tree commit diff
path: root/pkgs/misc/drivers
diff options
context:
space:
mode:
authorBryan Gardiner <bog@khumba.net>2021-01-08 20:20:00 -0800
committerBryan Gardiner <bog@khumba.net>2021-01-09 17:07:30 -0800
commit60df55c9fba36891b2c76eda50d5e2c9a0731e4e (patch)
treed870abf8ada4aabd5d8cf365fd6038692485251f /pkgs/misc/drivers
parent58ce91234f2e5ebdfc6023bab64115926cf37f38 (diff)
downloadnixlib-60df55c9fba36891b2c76eda50d5e2c9a0731e4e.tar
nixlib-60df55c9fba36891b2c76eda50d5e2c9a0731e4e.tar.gz
nixlib-60df55c9fba36891b2c76eda50d5e2c9a0731e4e.tar.bz2
nixlib-60df55c9fba36891b2c76eda50d5e2c9a0731e4e.tar.lz
nixlib-60df55c9fba36891b2c76eda50d5e2c9a0731e4e.tar.xz
nixlib-60df55c9fba36891b2c76eda50d5e2c9a0731e4e.tar.zst
nixlib-60df55c9fba36891b2c76eda50d5e2c9a0731e4e.zip
hplip: fix hp-setup crash by adding proper NixOS PPD search path
HPLIP's getSystemPPDs() function relies on searching for PPDs below common FHS
paths.  None of these exist on NixOS, but the code assumes that at least one of
the directories will be found, and crashes when it doesn't (cups_ppd_path is
None and the code passes that to os.path.join).

A usable PPD search path for the running system on NixOS is
/var/lib/cups/path/share, so this patches the source to check this path as well.
This should fix the NixOS case and keep non-NixOS cases working too.
Diffstat (limited to 'pkgs/misc/drivers')
-rw-r--r--pkgs/misc/drivers/hplip/default.nix6
-rw-r--r--pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch24
2 files changed, 30 insertions, 0 deletions
diff --git a/pkgs/misc/drivers/hplip/default.nix b/pkgs/misc/drivers/hplip/default.nix
index b29463d61ddf..f1688a1b56fc 100644
--- a/pkgs/misc/drivers/hplip/default.nix
+++ b/pkgs/misc/drivers/hplip/default.nix
@@ -93,6 +93,12 @@ python3Packages.buildPythonApplication {
     # https://bugs.launchpad.net/hplip/+bug/1788706
     # https://bugs.launchpad.net/hplip/+bug/1787289
     ./image-processor.patch
+
+    # HPLIP's getSystemPPDs() function relies on searching for PPDs below common FHS
+    # paths, and hp-setup crashes if none of these paths actually exist (which they
+    # don't on NixOS).  Add the equivalent NixOS path, /var/lib/cups/path/share.
+    # See: https://github.com/NixOS/nixpkgs/issues/21796
+    ./hplip-3.20.11-nixos-cups-ppd-search-path.patch
   ];
 
   prePatch = ''
diff --git a/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch b/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch
new file mode 100644
index 000000000000..d26e13dd2d63
--- /dev/null
+++ b/pkgs/misc/drivers/hplip/hplip-3.20.11-nixos-cups-ppd-search-path.patch
@@ -0,0 +1,24 @@
+From: Bryan Gardiner <bog@khumba.net>
+Date: Sat, 9 Jan 2021 16:51:20 -0800
+Subject: [PATCH] Add NixOS CUPS PPD search path.
+
+---
+ base/g.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/base/g.py b/base/g.py
+index f73e23f..758f339 100644
+--- a/base/g.py
++++ b/base/g.py
+@@ -283,7 +283,7 @@ prop.max_message_len = 8192
+ prop.max_message_read = 65536
+ prop.read_timeout = 90
+ 
+-prop.ppd_search_path = '/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64'
++prop.ppd_search_path = '/var/lib/cups/path/share;/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64'
+ prop.ppd_search_pattern = 'HP-*.ppd.*'
+ prop.ppd_download_url = 'http://www.linuxprinting.org/ppd-o-matic.cgi'
+ prop.ppd_file_suffix = '-hpijs.ppd'
+-- 
+2.29.2
+