about summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
authorThomas Tuegel <ttuegel@mailbox.org>2020-02-10 10:53:57 -0600
committerGitHub <noreply@github.com>2020-02-10 10:53:57 -0600
commitb78092a5511bfedb9b344543d30acb176d2b840d (patch)
tree22a2d3b6e6f3706485546428467dcbe4302f705e /pkgs/applications
parent079622ef2d6018de1676f39590c3784c2f1296d0 (diff)
parent4979541cadc8977c5e98b28ce245be5720422eb5 (diff)
Merge pull request #78773 from layus/sane-override
sane module: support overriding config files
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/graphics/sane/config.nix14
1 files changed, 11 insertions, 3 deletions
diff --git a/pkgs/applications/graphics/sane/config.nix b/pkgs/applications/graphics/sane/config.nix
index c0a0206ddd1f1..2ef1e26f5ac6b 100644
--- a/pkgs/applications/graphics/sane/config.nix
+++ b/pkgs/applications/graphics/sane/config.nix
@@ -6,7 +6,7 @@ with stdenv.lib;
 let installSanePath = path: ''
       if [ -e "${path}/lib/sane" ]; then
         find "${path}/lib/sane" -maxdepth 1 -not -type d | while read backend; do
-          ln -s "$backend" "$out/lib/sane/$(basename "$backend")"
+          symlink "$backend" "$out/lib/sane/$(basename "$backend")"
         done
       fi
 
@@ -16,14 +16,14 @@ let installSanePath = path: ''
           if [ "$name" = "dll.conf" ] || [ "$name" = "saned.conf" ] || [ "$name" = "net.conf" ]; then
             cat "$conf" >> "$out/etc/sane.d/$name"
           else
-            ln -s "$conf" "$out/etc/sane.d/$name"
+            symlink "$conf" "$out/etc/sane.d/$name"
           fi
         done
       fi
 
       if [ -e "${path}/etc/sane.d/dll.d" ]; then
         find "${path}/etc/sane.d/dll.d" -maxdepth 1 -not -type d | while read conf; do
-          ln -s "$conf" "$out/etc/sane.d/dll.d/$(basename $conf)"
+          symlink "$conf" "$out/etc/sane.d/dll.d/$(basename $conf)"
         done
       fi
     '';
@@ -33,6 +33,14 @@ stdenv.mkDerivation {
   phases = "installPhase";
 
   installPhase = ''
+    function symlink () {
+      local target=$1 linkname=$2
+      if [ -e "$linkname" ]; then
+        echo "warning: conflict for $linkname. Overriding $(readlink $linkname) with $target."
+      fi
+      ln -sfn "$target" "$linkname"
+    }
+
     mkdir -p $out/etc/sane.d $out/etc/sane.d/dll.d $out/lib/sane
   '' + concatMapStrings installSanePath paths;
 }