diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-10-12 16:36:19 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-10-12 16:36:19 +0000 |
commit | e91d882a946fc736f62235296e77c139cee7d9b3 (patch) | |
tree | e220488319f0cc28aafb01ca26809429eeaf7f82 /modules/services/printing/cupsd.nix | |
parent | 4a78ef25e73da292d060a2afde0c00980a22b2ac (diff) | |
download | nixpkgs-e91d882a946fc736f62235296e77c139cee7d9b3.tar nixpkgs-e91d882a946fc736f62235296e77c139cee7d9b3.tar.gz nixpkgs-e91d882a946fc736f62235296e77c139cee7d9b3.tar.bz2 nixpkgs-e91d882a946fc736f62235296e77c139cee7d9b3.tar.lz nixpkgs-e91d882a946fc736f62235296e77c139cee7d9b3.tar.xz nixpkgs-e91d882a946fc736f62235296e77c139cee7d9b3.tar.zst nixpkgs-e91d882a946fc736f62235296e77c139cee7d9b3.zip |
* Converted modules that were still using the old (concrete syntax)
style of declaring Upstart jobs. While at it, converted them to the current NixOS module style and improved some option descriptions. Hopefully I didn't break too much :-) svn path=/nixos/trunk/; revision=17761
Diffstat (limited to 'modules/services/printing/cupsd.nix')
-rw-r--r-- | modules/services/printing/cupsd.nix | 264 |
1 files changed, 132 insertions, 132 deletions
diff --git a/modules/services/printing/cupsd.nix b/modules/services/printing/cupsd.nix index 63c4d3b1df4..f6c65250162 100644 --- a/modules/services/printing/cupsd.nix +++ b/modules/services/printing/cupsd.nix @@ -1,41 +1,13 @@ -{pkgs, config, ...}: +{ config, pkgs, ... }: -###### interface -let - inherit (pkgs.lib) mkOption mkIf; - - options = { - services = { - printing = { - - enable = mkOption { - default = false; - description = " - Whether to enable printing support through the CUPS daemon. - "; - }; - - bindirCmds = mkOption { - default = ""; - description = " - add commands adding additional symlinks to the bindir such as bjnp - "; - }; - - }; - }; - }; -in - -###### implementation +with pkgs.lib; let - logDir = "/var/log/cups"; - - inherit (pkgs) cups; + logDir = "/var/log/cups"; + modprobe = config.system.sbin.modprobe; cfg = config.services.printing; @@ -45,135 +17,163 @@ let # we can't update ${cups}/lib/cups itself, we create a symlink tree # here and add the additional programs. The ServerBin directive in # cupsd.conf tells cupsd to use this tree. - bindir = pkgs.runCommand "cups-progs" {} '' - ensureDir $out/lib/cups - ln -s ${cups}/lib/cups/* $out/lib/cups/ - - # Provide support for printing via SMB. - rm $out/lib/cups/backend - ensureDir $out/lib/cups/backend - ln -s ${cups}/lib/cups/backend/* $out/lib/cups/backend/ - ln -s ${pkgs.samba}/bin/smbspool $out/lib/cups/backend/smb - - # Provide support for printing via HTTPS. - ln -s ipp $out/lib/cups/backend/https - - # Provide Ghostscript rasterisation, necessary for non-Postscript - # printers. - rm $out/lib/cups/filter - ensureDir $out/lib/cups/filter - ln -s ${cups}/lib/cups/filter/* $out/lib/cups/filter/ - ln -s ${pkgs.ghostscript}/lib/cups/filter/* $out/lib/cups/filter/ - ${cfg.bindirCmds} - ''; # */ + bindir = pkgs.runCommand "cups-progs" {} + '' + ensureDir $out/lib/cups + ln -s ${cups}/lib/cups/* $out/lib/cups/ + + # Provide support for printing via SMB. + rm $out/lib/cups/backend + ensureDir $out/lib/cups/backend + ln -s ${cups}/lib/cups/backend/* $out/lib/cups/backend/ + ln -s ${pkgs.samba}/bin/smbspool $out/lib/cups/backend/smb + + # Provide support for printing via HTTPS. + ln -s ipp $out/lib/cups/backend/https + + # Provide Ghostscript rasterisation, necessary for non-Postscript + # printers. + rm $out/lib/cups/filter + ensureDir $out/lib/cups/filter + ln -s ${cups}/lib/cups/filter/* $out/lib/cups/filter/ + ln -s ${pkgs.ghostscript}/lib/cups/filter/* $out/lib/cups/filter/ + ${cfg.bindirCmds} + ''; # */ - cupsdConfig = pkgs.writeText "cupsd.conf" '' - LogLevel debug + cupsdConfig = pkgs.writeText "cupsd.conf" + '' + LogLevel debug - SystemGroup root + SystemGroup root - Listen localhost:631 - Listen /var/run/cups/cups.sock + Listen localhost:631 + Listen /var/run/cups/cups.sock - # Note: we can't use ${cups}/etc/cups as the ServerRoot, since - # CUPS will write in the ServerRoot when e.g. adding new printers - # through the web interface. - ServerRoot /etc/cups + # Note: we can't use ${cups}/etc/cups as the ServerRoot, since + # CUPS will write in the ServerRoot when e.g. adding new printers + # through the web interface. + ServerRoot /etc/cups - ServerBin ${bindir}/lib/cups + ServerBin ${bindir}/lib/cups - AccessLog ${logDir}/access_log - ErrorLog ${logDir}/access_log - PageLog ${logDir}/page_log + AccessLog ${logDir}/access_log + ErrorLog ${logDir}/access_log + PageLog ${logDir}/page_log - TempDir /tmp + TempDir /tmp - Browsing On - BrowseOrder allow,deny - BrowseAllow @LOCAL + Browsing On + BrowseOrder allow,deny + BrowseAllow @LOCAL - DefaultAuthType Basic + DefaultAuthType Basic - <Location /> - Order allow,deny - Allow localhost - </Location> - - <Location /admin> - Order allow,deny - Allow localhost - </Location> - - <Location /admin/conf> - AuthType Basic - Require user @SYSTEM - Order allow,deny - Allow localhost - </Location> - - <Policy default> - <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job> - Require user @OWNER @SYSTEM - Order deny,allow - </Limit> - - <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default> + <Location /> + Order allow,deny + Allow localhost + </Location> + + <Location /admin> + Order allow,deny + Allow localhost + </Location> + + <Location /admin/conf> AuthType Basic Require user @SYSTEM - Order deny,allow - </Limit> + Order allow,deny + Allow localhost + </Location> + + <Policy default> + <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job> + Require user @OWNER @SYSTEM + Order deny,allow + </Limit> + + <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default> + AuthType Basic + Require user @SYSTEM + Order deny,allow + </Limit> + + <Limit Cancel-Job CUPS-Authenticate-Job> + Require user @OWNER @SYSTEM + Order deny,allow + </Limit> + + <Limit All> + Order deny,allow + </Limit> + </Policy> + ''; - <Limit Cancel-Job CUPS-Authenticate-Job> - Require user @OWNER @SYSTEM - Order deny,allow - </Limit> +in - <Limit All> - Order deny,allow - </Limit> - </Policy> - ''; +{ -in + ###### interface + + options = { + + services.printing = { + + enable = mkOption { + default = false; + description = '' + Whether to enable printing support through the CUPS daemon. + ''; + }; + + bindirCmds = mkOption { + default = ""; + description = '' + Additional commands executed while creating the directory + containing the CUPS server binaries. + ''; + }; + }; -mkIf config.services.printing.enable { - require = [ - options - ]; + }; - environment.systemPackages = [cups]; + + ###### implementation - environment.etc = - [ # CUPS expects the following files in its ServerRoot. - { source = "${cups}/etc/cups/mime.convs"; - target = "cups/mime.convs"; - } - { source = "${cups}/etc/cups/mime.types"; - target = "cups/mime.types"; - } - ]; + config = mkIf config.services.printing.enable { - services.extraJobs = pkgs.lib.singleton - { name = "cupsd"; + environment.systemPackages = [cups]; - job = '' - description "CUPS printing daemon" + environment.etc = + [ # CUPS expects the following files in its ServerRoot. + { source = "${cups}/etc/cups/mime.convs"; + target = "cups/mime.convs"; + } + { source = "${cups}/etc/cups/mime.types"; + target = "cups/mime.types"; + } + ]; - start on network-interfaces/started - stop on network-interfaces/stop + jobAttrs.cupsd = + { description = "CUPS printing daemon"; - start script + startOn = "network-interfaces/started"; + stopOn = "network-interfaces/stop"; + + preStart = + '' mkdir -m 0755 -p ${logDir} mkdir -m 0700 -p /var/cache/cups mkdir -m 0700 -p /var/spool/cups # Make USB printers show up. ${modprobe}/sbin/modprobe usblp || true - end script + ''; - respawn ${cups}/sbin/cupsd -c ${cupsdConfig} -F - ''; - }; + exec = "${cups}/sbin/cupsd -c ${cupsdConfig} -F"; + }; + + }; + } |