summary refs log tree commit diff
path: root/modules/services/printing/cupsd.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2009-10-12 16:36:19 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2009-10-12 16:36:19 +0000
commite91d882a946fc736f62235296e77c139cee7d9b3 (patch)
treee220488319f0cc28aafb01ca26809429eeaf7f82 /modules/services/printing/cupsd.nix
parent4a78ef25e73da292d060a2afde0c00980a22b2ac (diff)
downloadnixpkgs-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.nix264
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";
+      };
+
+  };
+  
 }