From a008d6b391b92ec0960fee076395d33dc8d3aa3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Mon, 19 Apr 2010 10:54:39 +0000 Subject: [PATCH] Fixing the cups-progs build problems, for the cupsd module. It wrote over other store paths. svn path=/nixos/trunk/; revision=21161 --- modules/services/printing/cupsd.nix | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/services/printing/cupsd.nix b/modules/services/printing/cupsd.nix index de1da1bc3e5..e2107b61cf9 100644 --- a/modules/services/printing/cupsd.nix +++ b/modules/services/printing/cupsd.nix @@ -12,6 +12,17 @@ let cfg = config.services.printing; + additionalBackends = pkgs.stdenv.mkDerivation { + name = "additional-cups-backends"; + builder = pkgs.writeScript "additional-backends-builder.sh" '' + ${pkgs.coreutils}/bin/mkdir -p $out/lib/cups/backend + ${pkgs.coreutils}/bin/ln -s ${pkgs.samba}/bin/smbspool $out/lib/cups/backend/smb + + # Provide support for printing via HTTPS. + ${pkgs.coreutils}/bin/ln -s ipp $out/lib/cups/backend/https + ''; + }; + # Here we can enable additional backends, filters, etc. that are not # part of CUPS itself, e.g. the SMB backend is part of Samba. Since # we can't update ${cups}/lib/cups itself, we create a symlink tree @@ -19,15 +30,9 @@ let # cupsd.conf tells cupsd to use this tree. bindir = pkgs.buildEnv { name = "cups-progs"; - paths = cfg.drivers; + paths = cfg.drivers; pathsToLink = [ "/lib/cups" "/share/cups" ]; postBuild = '' - ${pkgs.coreutils}/bin/mkdir -p $out/lib/cups/backend - ${pkgs.coreutils}/bin/ln -s ${pkgs.samba}/bin/smbspool $out/lib/cups/backend/smb - - # Provide support for printing via HTTPS. - ${pkgs.coreutils}/bin/ln -s ipp $out/lib/cups/backend/https - ${cfg.bindirCmds} ''; }; @@ -119,7 +124,7 @@ in exec = "${cups}/sbin/cupsd -c ${pkgs.writeText "cupsd.conf" cfg.cupsdConf} -F"; }; - services.printing.drivers = [ pkgs.cups pkgs.ghostscript ]; + services.printing.drivers = [ pkgs.cups pkgs.ghostscript additionalBackends ]; services.printing.cupsdConf = '' LogLevel info