anchor.diff:          exec = "cupsd -c ${pkgs.writeText "cupsd.conf" cfg.cupsdConf} -F";
         };
   
  -    services.printing.drivers = [ pkgs.cups pkgs.cups_pdf_filter pkgs.ghostscript additionalBackends ];
  +    services.printing.drivers =
  +      [ pkgs.cups pkgs.cups_pdf_filter pkgs.ghostscript additionalBackends pkgs.perl pkgs.coreutils pkgs.gnused ];
   
       services.printing.cupsdConf =
         ''
  
positive.code: 
    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
        if [ ! -e ${pkgs.cups}/lib/cups/backend/smb ]; then
          mkdir -pv $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
          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
  
negative.code:   bindir = pkgs.buildEnv {
      name = "cups-progs";
      paths = cfg.drivers;
      pathsToLink = [ "/lib/cups" "/share/cups" "/bin" ];
      postBuild = cfg.bindirCmds;
    };
  
  