anchor.diff:  
     cfg = config.services.printing;
   
  -  additionalBackends = pkgs.stdenv.mkDerivation {
  -    name = "additional-cups-backends";
  -    builder = pkgs.writeScript "additional-backends-builder.sh" ''
  -      PATH=${pkgs.coreutils}/bin
  -      mkdir -pv $out
  +  additionalBackends = pkgs.runCommand "additional-cups-backends" { }
  +    ''
  +      mkdir -p $out
         if [ ! -e ${pkgs.cups}/lib/cups/backend/smb ]; then
  -        mkdir -pv $out/lib/cups/backend
  +        mkdir -p $out/lib/cups/backend
           ln -sv ${pkgs.samba}/bin/smbspool $out/lib/cups/backend/smb
         fi
   
         # Provide support for printing via HTTPS.
         if [ ! -e ${pkgs.cups}/lib/cups/backend/https ]; then
  -        mkdir -pv $out/lib/cups/backend
  +        mkdir -p $out/lib/cups/backend
           ln -sv ${pkgs.cups}/lib/cups/backend/ipp $out/lib/cups/backend/https
         fi
  -
  -      # Awful hack to get programs needed by some PPDs in CUPS'
  -      # hard-coded $PATH.
  -      mkdir -p $out/lib/cups/filter
  -      ln -s ${pkgs.coreutils}/bin/date ${pkgs.coreutils}/bin/cat ${pkgs.gnused}/bin/sed $out/lib/cups/filter/
   
         # Import filter configuration from Ghostscript.
         mkdir -p $out/share/cups/mime/
         ln -v -s "${pkgs.ghostscript}/etc/cups/"* $out/share/cups/mime/
       '';
  -  };
   
     # 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
  
positive.code:         exec = "cupsd -c ${pkgs.writeText "cupsd.conf" cfg.cupsdConf} -F";
        };
  
      services.printing.drivers = [ pkgs.cups pkgs.cups_pdf_filter pkgs.ghostscript additionalBackends ];
  
      services.printing.cupsdConf =
        ''
  
negative.code:   bindir = pkgs.buildEnv {
      name = "cups-progs";
      paths = cfg.drivers;
      pathsToLink = [ "/lib/cups" "/share/cups" "/bin" ];
      postBuild = cfg.bindirCmds;
    };
  
  