Skip to content
Snippets Groups Projects
guix.texi 764 KiB
Newer Older
  • Learn to ignore specific revisions
  •     (plain-file "hosts"
                    (string-append (local-host-aliases host-name)
                                   %facebook-host-aliases))))
    
    @end example
    
    This mechanism can prevent programs running locally, such as Web
    browsers, from accessing Facebook.
    @end defvr
    
    
    The @code{(gnu services avahi)} provides the following definition.
    
    
    @deffn {Scheme Procedure} avahi-service [#:avahi @var{avahi}] @
    
              [#:host-name #f] [#:publish? #t] [#:ipv4? #t] @
              [#:ipv6? #t] [#:wide-area? #f] @
    
              [#:domains-to-browse '()] [#:debug? #f]
    
    Return a service that runs @command{avahi-daemon}, a system-wide
    mDNS/DNS-SD responder that allows for service discovery and
    
    "zero-configuration" host name lookups (see @uref{http://avahi.org/}), and
    extends the name service cache daemon (nscd) so that it can resolve
    @code{.local} host names using
    
    @uref{http://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}.  Additionally,
    add the @var{avahi} package to the system profile so that commands such as
    @command{avahi-browse} are directly usable.
    
    
    If @var{host-name} is different from @code{#f}, use that as the host name to
    publish for this machine; otherwise, use the machine's actual host name.
    
    When @var{publish?} is true, publishing of host names and services is allowed;
    in particular, avahi-daemon will publish the machine's host name and IP
    address via mDNS on the local network.
    
    When @var{wide-area?} is true, DNS-SD over unicast DNS is enabled.
    
    Boolean values @var{ipv4?} and @var{ipv6?} determine whether to use IPv4/IPv6
    sockets.
    @end deffn
    
    
    @deffn {Scheme Variable} openvswitch-service-type
    This is the type of the @uref{http://www.openvswitch.org, Open vSwitch}
    service, whose value should be an @code{openvswitch-configuration}
    object.
    @end deffn
    
    @deftp {Data Type} openvswitch-configuration
    Data type representing the configuration of Open vSwitch, a multilayer
    virtual switch which is designed to enable massive network automation
    through programmatic extension.
    
    @table @asis
    @item @code{package} (default: @var{openvswitch})
    Package object of the Open vSwitch.
    
    @end table
    @end deftp
    
    @node X Window
    @subsubsection X Window
    
    @cindex X11
    @cindex X Window System
    
    Support for the X Window graphical display system---specifically
    Xorg---is provided by the @code{(gnu services xorg)} module.  Note that
    there is no @code{xorg-service} procedure.  Instead, the X server is
    
    started by the @dfn{login manager}, by default SLiM.
    
    @cindex window manager
    To use X11, you must install at least one @dfn{window manager}---for
    example the @code{windowmaker} or @code{openbox} packages---preferably
    by adding it to the @code{packages} field of your operating system
    definition (@pxref{operating-system Reference, system-wide packages}).
    
    @defvr {Scheme Variable} slim-service-type
    This is the type for the SLiM graphical login manager for X11.
    
    @cindex session types (X11)
    @cindex X11 session types
    SLiM looks for @dfn{session types} described by the @file{.desktop} files in
    @file{/run/current-system/profile/share/xsessions} and allows users to
    choose a session from the log-in screen using @kbd{F1}.  Packages such
    as @code{xfce}, @code{sawfish}, and @code{ratpoison} provide
    @file{.desktop} files; adding them to the system-wide set of packages
    automatically makes them available at the log-in screen.
    
    In addition, @file{~/.xsession} files are honored.  When available,
    @file{~/.xsession} must be an executable that starts a window manager
    and/or other X clients.
    @end defvr
    
    @deftp {Data Type} slim-configuration
    Data type representing the configuration of @code{slim-service-type}.
    
    @table @asis
    @item @code{allow-empty-passwords?} (default: @code{#t})
    Whether to allow logins with empty passwords.
    
    @item @code{auto-login?} (default: @code{#f})
    @itemx @code{default-user} (default: @code{""})
    When @code{auto-login?} is false, SLiM presents a log-in screen.
    
    When @code{auto-login?} is true, SLiM logs in directly as
    @code{default-user}.
    
    @item @code{theme} (default: @code{%default-slim-theme})
    @itemx @code{theme-name} (default: @code{%default-slim-theme-name})
    The graphical theme to use and its name.
    
    
    @item @code{auto-login-session} (default: @code{#f})
    If true, this must be the name of the executable to start as the default
    session---e.g., @code{(file-append windowmaker "/bin/windowmaker")}.
    
    If false, a session described by one of the available @file{.desktop}
    files in @code{/run/current-system/profile} and @code{~/.guix-profile}
    will be used.
    
    @quotation Note
    You must install at least one window manager in the system profile or in
    your user profile.  Failing to do that, if @code{auto-login-session} is
    false, you will be unable to log in.
    @end quotation
    
    
    @item @code{startx} (default: @code{(xorg-start-command)})
    The command used to start the X11 graphical server.
    
    @item @code{xauth} (default: @code{xauth})
    The XAuth package to use.
    
    @item @code{shepherd} (default: @code{shepherd})
    The Shepherd package used when invoking @command{halt} and
    @command{reboot}.
    
    @item @code{slim} (default: @code{slim})
    The SLiM package to use.
    @end table
    @end deftp
    
    @defvr {Scheme Variable} %default-theme
    @defvrx {Scheme Variable} %default-theme-name
    The default SLiM theme and its name.
    @end defvr
    
    
    
    @deftp {Data Type} sddm-configuration
    This is the data type representing the sddm service configuration.
    
    @table @asis
    @item @code{display-server} (default: "x11")
    Select display server to use for the greeter. Valid values are "x11"
    or "wayland".
    
    @item @code{numlock} (default: "on")
    Valid values are "on", "off" or "none".
    
    @item @code{halt-command} (default @code{#~(string-apppend #$shepherd "/sbin/halt")})
    Command to run when halting.
    
    @item @code{reboot-command} (default @code{#~(string-append #$shepherd "/sbin/reboot")})
    Command to run when rebooting.
    
    @item @code{theme} (default "maldives")
    Theme to use. Default themes provided by SDDM are "elarun" or "maldives".
    
    @item @code{themes-directory} (default "/run/current-system/profile/share/sddm/themes")
    Directory to look for themes.
    
    @item @code{faces-directory} (default "/run/current-system/profile/share/sddm/faces")
    Directory to look for faces.
    
    @item @code{default-path} (default "/run/current-system/profile/bin")
    Default PATH to use.
    
    @item @code{minimum-uid} (default 1000)
    Minimum UID to display in SDDM.
    
    @item @code{maximum-uid} (default 2000)
    Maximum UID to display in SDDM
    
    @item @code{remember-last-user?} (default #t)
    Remember last user.
    
    @item @code{remember-last-session?} (default #t)
    Remember last session.
    
    @item @code{hide-users} (default "")
    Usernames to hide from SDDM greeter.
    
    @item @code{hide-shells} (default @code{#~(string-append #$shadow "/sbin/nologin")})
    Users with shells listed will be hidden from the SDDM greeter.
    
    @item @code{session-command} (default @code{#~(string-append #$sddm "/share/sddm/scripts/wayland-session")})
    Script to run before starting a wayland session.
    
    @item @code{sessions-directory} (default "/run/current-system/profile/share/wayland-sessions")
    Directory to look for desktop files starting wayland sessions.
    
    @item @code{xorg-server-path} (default @code{xorg-start-command})
    Path to xorg-server.
    
    @item @code{xauth-path} (default @code{#~(string-append #$xauth "/bin/xauth")})
    Path to xauth.
    
    @item @code{xephyr-path} (default @code{#~(string-append #$xorg-server "/bin/Xephyr")})
    Path to Xephyr.
    
    @item @code{xdisplay-start} (default @code{#~(string-append #$sddm "/share/sddm/scripts/Xsetup")})
    Script to run after starting xorg-server.
    
    @item @code{xdisplay-stop} (default @code{#~(string-append #$sddm "/share/sddm/scripts/Xstop")})
    Script to run before stopping xorg-server.
    
    @item @code{xsession-command} (default: @code{xinitr })
    Script to run before starting a X session.
    
    @item @code{xsessions-directory} (default: "/run/current-system/profile/share/xsessions")
    Directory to look for desktop files starting X sessions.
    
    @item @code{minimum-vt} (default: 7)
    Minimum VT to use.
    
    @item @code{xserver-arguments} (default "-nolisten tcp")
    Arguments to pass to xorg-server.
    
    @item @code{auto-login-user} (default "")
    User to use for auto-login.
    
    @item @code{auto-login-session} (default "")
    Desktop file to use for auto-login.
    
    @item @code{relogin?} (default #f)
    Relogin after logout.
    
    @end table
    @end deftp
    
    
    @cindex login manager
    
    @deffn {Scheme Procedure} sddm-service config
    Return a service that spawns the SDDM graphical login manager for config of
    type @code{<sddm-configuration>}.
    
    @example
      (sddm-service (sddm-configuration
                     (auto-login-user "Alice")
                     (auto-login-session "xfce.desktop")))
    @end example
    @end deffn
    
    
    @deffn {Scheme Procedure} xorg-start-command [#:guile] @
    
      [#:modules %default-xorg-modules] @
      [#:fonts %default-xorg-fonts] @
      [#:configuration-file (xorg-configuration-file @dots{})] @
      [#:xorg-server @var{xorg-server}]
    Return a @code{startx} script in which @var{modules}, a list of X module
    packages, and @var{fonts}, a list of X font directories, are available.  See
    @code{xorg-wrapper} for more details on the arguments.  The result should be
    used in place of @code{startx}.
    
    
    Usually the X server is started by a login manager.
    @end deffn
    
    
    @deffn {Scheme Procedure} xorg-configuration-file @
    
      [#:modules %default-xorg-modules] @
      [#:fonts %default-xorg-fonts] @
    
      [#:drivers '()] [#:resolutions '()] [#:extra-config '()]
    
    Return a configuration file for the Xorg server containing search paths for
    all the common drivers.
    
    @var{modules} must be a list of @dfn{module packages} loaded by the Xorg
    server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on.
    @var{fonts} must be a list of font directories to add to the server's
    @dfn{font path}.
    
    
    @var{drivers} must be either the empty list, in which case Xorg chooses a
    graphics driver automatically, or a list of driver names that will be tried in
    
    this order---e.g., @code{("modesetting" "vesa")}.
    
    
    Likewise, when @var{resolutions} is the empty list, Xorg chooses an
    appropriate screen resolution; otherwise, it must be a list of
    resolutions---e.g., @code{((1024 768) (640 480))}.
    
    
    Last, @var{extra-config} is a list of strings or objects appended to the
    
    configuration file.  It is used to pass extra text to be
    added verbatim to the configuration file.
    
    @deffn {Scheme Procedure} screen-locker-service @var{package} [@var{name}]
    Add @var{package}, a package for a screen-locker or screen-saver whose
    command is @var{program}, to the set of setuid programs and add a PAM entry
    for it.  For example:
    
    @lisp
    (screen-locker-service xlockmore "xlock")
    @end lisp
    
    makes the good ol' XlockMore usable.
    @end deffn
    
    
    
    Andy Wingo's avatar
    Andy Wingo committed
    @node Printing Services
    @subsubsection Printing Services
    
    
    @cindex printer support with CUPS
    
    Andy Wingo's avatar
    Andy Wingo committed
    The @code{(gnu services cups)} module provides a Guix service definition
    for the CUPS printing service.  To add printer support to a GuixSD
    system, add a @code{cups-service} to the operating system definition:
    
    @deffn {Scheme Variable} cups-service-type
    The service type for the CUPS print server.  Its value should be a valid
    
    CUPS configuration (see below).  To use the default settings, simply
    write:
    
    Andy Wingo's avatar
    Andy Wingo committed
    @example
    
    Andy Wingo's avatar
    Andy Wingo committed
    @end example
    @end deffn
    
    The CUPS configuration controls the basic things about your CUPS
    installation: what interfaces it listens on, what to do if a print job
    fails, how much logging to do, and so on.  To actually add a printer,
    you have to visit the @url{http://localhost:631} URL, or use a tool such
    as GNOME's printer configuration services.  By default, configuring a
    CUPS service will generate a self-signed certificate if needed, for
    secure connections to the print server.
    
    
    Suppose you want to enable the Web interface of CUPS and also add
    
    support for Epson printers @i{via} the @code{escpr} package and for HP
    printers @i{via} the @code{hplip} package.  You can do that directly,
    like this (you need to use the @code{(gnu packages cups)} module):
    
    Andy Wingo's avatar
    Andy Wingo committed
    
    @example
    (service cups-service-type
             (cups-configuration
    
               (web-interface? #t)
               (extensions
    
                 (list cups-filters escpr hplip))))
    
    Andy Wingo's avatar
    Andy Wingo committed
    11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000
    @end example
    
    The available configuration parameters follow.  Each parameter
    definition is preceded by its type; for example, @samp{string-list foo}
    indicates that the @code{foo} parameter should be specified as a list of
    strings.  There is also a way to specify the configuration as a string,
    if you have an old @code{cupsd.conf} file that you want to port over
    from some other system; see the end for more details.
    
    @c The following documentation was initially generated by
    @c (generate-documentation) in (gnu services cups).  Manually maintained
    @c documentation is better, so we shouldn't hesitate to edit below as
    @c needed.  However if the change you want to make to this documentation
    @c can be done in an automated way, it's probably easier to change
    @c (generate-documentation) than to make it below and have to deal with
    @c the churn as CUPS updates.
    
    
    Available @code{cups-configuration} fields are:
    
    @deftypevr {@code{cups-configuration} parameter} package cups
    The CUPS package.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} package-list extensions
    Drivers and other extensions to the CUPS package.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} files-configuration files-configuration
    Configuration of where to write logs, what directories to use for print
    spools, and related privileged configuration parameters.
    
    Available @code{files-configuration} fields are:
    
    @deftypevr {@code{files-configuration} parameter} log-location access-log
    Defines the access log filename.  Specifying a blank filename disables
    access log generation.  The value @code{stderr} causes log entries to be
    sent to the standard error file when the scheduler is running in the
    foreground, or to the system log daemon when run in the background.  The
    value @code{syslog} causes log entries to be sent to the system log
    daemon.  The server name may be included in filenames using the string
    @code{%s}, as in @code{/var/log/cups/%s-access_log}.
    
    Defaults to @samp{"/var/log/cups/access_log"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} file-name cache-dir
    Where CUPS should cache data.
    
    Defaults to @samp{"/var/cache/cups"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} string config-file-perm
    Specifies the permissions for all configuration files that the scheduler
    writes.
    
    Note that the permissions for the printers.conf file are currently
    masked to only allow access from the scheduler user (typically root).
    This is done because printer device URIs sometimes contain sensitive
    authentication information that should not be generally known on the
    system.  There is no way to disable this security feature.
    
    Defaults to @samp{"0640"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} log-location error-log
    Defines the error log filename.  Specifying a blank filename disables
    access log generation.  The value @code{stderr} causes log entries to be
    sent to the standard error file when the scheduler is running in the
    foreground, or to the system log daemon when run in the background.  The
    value @code{syslog} causes log entries to be sent to the system log
    daemon.  The server name may be included in filenames using the string
    @code{%s}, as in @code{/var/log/cups/%s-error_log}.
    
    Defaults to @samp{"/var/log/cups/error_log"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} string fatal-errors
    Specifies which errors are fatal, causing the scheduler to exit.  The
    kind strings are:
    
    @table @code
    @item none
    No errors are fatal.
    
    @item all
    All of the errors below are fatal.
    
    @item browse
    Browsing initialization errors are fatal, for example failed connections
    to the DNS-SD daemon.
    
    @item config
    Configuration file syntax errors are fatal.
    
    @item listen
    Listen or Port errors are fatal, except for IPv6 failures on the
    loopback or @code{any} addresses.
    
    @item log
    Log file creation or write errors are fatal.
    
    @item permissions
    Bad startup file permissions are fatal, for example shared TLS
    certificate and key files with world-read permissions.
    @end table
    
    Defaults to @samp{"all -browse"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} boolean file-device?
    Specifies whether the file pseudo-device can be used for new printer
    queues.  The URI @uref{file:///dev/null} is always allowed.
    
    Defaults to @samp{#f}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} string group
    Specifies the group name or ID that will be used when executing external
    programs.
    
    Defaults to @samp{"lp"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} string log-file-perm
    Specifies the permissions for all log files that the scheduler writes.
    
    Defaults to @samp{"0644"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} log-location page-log
    Defines the page log filename.  Specifying a blank filename disables
    access log generation.  The value @code{stderr} causes log entries to be
    sent to the standard error file when the scheduler is running in the
    foreground, or to the system log daemon when run in the background.  The
    value @code{syslog} causes log entries to be sent to the system log
    daemon.  The server name may be included in filenames using the string
    @code{%s}, as in @code{/var/log/cups/%s-page_log}.
    
    Defaults to @samp{"/var/log/cups/page_log"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} string remote-root
    Specifies the username that is associated with unauthenticated accesses
    by clients claiming to be the root user.  The default is @code{remroot}.
    
    Defaults to @samp{"remroot"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} file-name request-root
    Specifies the directory that contains print jobs and other HTTP request
    data.
    
    Defaults to @samp{"/var/spool/cups"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} sandboxing sandboxing
    Specifies the level of security sandboxing that is applied to print
    filters, backends, and other child processes of the scheduler; either
    @code{relaxed} or @code{strict}.  This directive is currently only
    used/supported on macOS.
    
    Defaults to @samp{strict}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} file-name server-keychain
    Specifies the location of TLS certificates and private keys.  CUPS will
    look for public and private keys in this directory: a @code{.crt} files
    for PEM-encoded certificates and corresponding @code{.key} files for
    PEM-encoded private keys.
    
    Defaults to @samp{"/etc/cups/ssl"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} file-name server-root
    Specifies the directory containing the server configuration files.
    
    Defaults to @samp{"/etc/cups"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} boolean sync-on-close?
    Specifies whether the scheduler calls fsync(2) after writing
    configuration or state files.
    
    Defaults to @samp{#f}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} space-separated-string-list system-group
    Specifies the group(s) to use for @code{@@SYSTEM} group authentication.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} file-name temp-dir
    Specifies the directory where temporary files are stored.
    
    Defaults to @samp{"/var/spool/cups/tmp"}.
    @end deftypevr
    
    @deftypevr {@code{files-configuration} parameter} string user
    Specifies the user name or ID that is used when running external
    programs.
    
    Defaults to @samp{"lp"}.
    @end deftypevr
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} access-log-level access-log-level
    Specifies the logging level for the AccessLog file.  The @code{config}
    level logs when printers and classes are added, deleted, or modified and
    when configuration files are accessed or updated.  The @code{actions}
    level logs when print jobs are submitted, held, released, modified, or
    canceled, and any of the conditions for @code{config}.  The @code{all}
    level logs all requests.
    
    Defaults to @samp{actions}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} boolean auto-purge-jobs?
    Specifies whether to purge job history data automatically when it is no
    longer required for quotas.
    
    Defaults to @samp{#f}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} browse-local-protocols browse-local-protocols
    Specifies which protocols to use for local printer sharing.
    
    Defaults to @samp{dnssd}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} boolean browse-web-if?
    Specifies whether the CUPS web interface is advertised.
    
    Defaults to @samp{#f}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} boolean browsing?
    Specifies whether shared printers are advertised.
    
    Defaults to @samp{#f}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} string classification
    Specifies the security classification of the server.  Any valid banner
    name can be used, including "classified", "confidential", "secret",
    "topsecret", and "unclassified", or the banner can be omitted to disable
    secure printing functions.
    
    Defaults to @samp{""}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} boolean classify-override?
    Specifies whether users may override the classification (cover page) of
    individual print jobs using the @code{job-sheets} option.
    
    Defaults to @samp{#f}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} default-auth-type default-auth-type
    Specifies the default type of authentication to use.
    
    Defaults to @samp{Basic}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} default-encryption default-encryption
    Specifies whether encryption will be used for authenticated requests.
    
    Defaults to @samp{Required}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} string default-language
    Specifies the default language to use for text and web content.
    
    Defaults to @samp{"en"}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} string default-paper-size
    Specifies the default paper size for new print queues.  @samp{"Auto"}
    uses a locale-specific default, while @samp{"None"} specifies there is
    no default paper size.  Specific size names are typically
    @samp{"Letter"} or @samp{"A4"}.
    
    Defaults to @samp{"Auto"}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} string default-policy
    Specifies the default access policy to use.
    
    Defaults to @samp{"default"}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} boolean default-shared?
    Specifies whether local printers are shared by default.
    
    Defaults to @samp{#t}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer dirty-clean-interval
    Specifies the delay for updating of configuration and state files, in
    seconds.  A value of 0 causes the update to happen as soon as possible,
    typically within a few milliseconds.
    
    Defaults to @samp{30}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} error-policy error-policy
    Specifies what to do when an error occurs.  Possible values are
    @code{abort-job}, which will discard the failed print job;
    @code{retry-job}, which will retry the job at a later time;
    @code{retry-this-job}, which retries the failed job immediately; and
    @code{stop-printer}, which stops the printer.
    
    Defaults to @samp{stop-printer}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer filter-limit
    Specifies the maximum cost of filters that are run concurrently, which
    can be used to minimize disk, memory, and CPU resource problems.  A
    limit of 0 disables filter limiting.  An average print to a
    non-PostScript printer needs a filter limit of about 200.  A PostScript
    printer needs about half that (100).  Setting the limit below these
    thresholds will effectively limit the scheduler to printing a single job
    at any time.
    
    Defaults to @samp{0}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer filter-nice
    Specifies the scheduling priority of filters that are run to print a
    job.  The nice value ranges from 0, the highest priority, to 19, the
    lowest priority.
    
    Defaults to @samp{0}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} host-name-lookups host-name-lookups
    Specifies whether to do reverse lookups on connecting clients.  The
    @code{double} setting causes @code{cupsd} to verify that the hostname
    resolved from the address matches one of the addresses returned for that
    hostname.  Double lookups also prevent clients with unregistered
    addresses from connecting to your server.  Only set this option to
    @code{#t} or @code{double} if absolutely required.
    
    Defaults to @samp{#f}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer job-kill-delay
    Specifies the number of seconds to wait before killing the filters and
    backend associated with a canceled or held job.
    
    Defaults to @samp{30}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer job-retry-interval
    Specifies the interval between retries of jobs in seconds.  This is
    typically used for fax queues but can also be used with normal print
    queues whose error policy is @code{retry-job} or
    @code{retry-current-job}.
    
    Defaults to @samp{30}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer job-retry-limit
    Specifies the number of retries that are done for jobs.  This is
    typically used for fax queues but can also be used with normal print
    queues whose error policy is @code{retry-job} or
    @code{retry-current-job}.
    
    Defaults to @samp{5}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} boolean keep-alive?
    Specifies whether to support HTTP keep-alive connections.
    
    Defaults to @samp{#t}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer keep-alive-timeout
    Specifies how long an idle client connection remains open, in seconds.
    
    Defaults to @samp{30}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer limit-request-body
    Specifies the maximum size of print files, IPP requests, and HTML form
    data.  A limit of 0 disables the limit check.
    
    Defaults to @samp{0}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} multiline-string-list listen
    Listens on the specified interfaces for connections.  Valid values are
    of the form @var{address}:@var{port}, where @var{address} is either an
    IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to
    indicate all addresses.  Values can also be file names of local UNIX
    domain sockets.  The Listen directive is similar to the Port directive
    but allows you to restrict access to specific interfaces or networks.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer listen-back-log
    Specifies the number of pending connections that will be allowed.  This
    normally only affects very busy servers that have reached the MaxClients
    limit, but can also be triggered by large numbers of simultaneous
    connections.  When the limit is reached, the operating system will
    refuse additional connections until the scheduler can accept the pending
    ones.
    
    Defaults to @samp{128}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} location-access-control-list location-access-controls
    Specifies a set of additional access controls.
    
    Available @code{location-access-controls} fields are:
    
    @deftypevr {@code{location-access-controls} parameter} file-name path
    Specifies the URI path to which the access control applies.
    @end deftypevr
    
    @deftypevr {@code{location-access-controls} parameter} access-control-list access-controls
    Access controls for all access to this path, in the same format as the
    @code{access-controls} of @code{operation-access-control}.
    
    Defaults to @samp{()}.
    @end deftypevr
    
    @deftypevr {@code{location-access-controls} parameter} method-access-control-list method-access-controls
    Access controls for method-specific access to this path.
    
    Defaults to @samp{()}.
    
    Available @code{method-access-controls} fields are:
    
    @deftypevr {@code{method-access-controls} parameter} boolean reverse?
    If @code{#t}, apply access controls to all methods except the listed
    methods.  Otherwise apply to only the listed methods.
    
    Defaults to @samp{#f}.
    @end deftypevr
    
    @deftypevr {@code{method-access-controls} parameter} method-list methods
    Methods to which this access control applies.
    
    Defaults to @samp{()}.
    @end deftypevr
    
    @deftypevr {@code{method-access-controls} parameter} access-control-list access-controls
    Access control directives, as a list of strings.  Each string should be
    one directive, such as "Order allow,deny".
    
    Defaults to @samp{()}.
    @end deftypevr
    @end deftypevr
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer log-debug-history
    Specifies the number of debugging messages that are retained for logging
    if an error occurs in a print job.  Debug messages are logged regardless
    of the LogLevel setting.
    
    Defaults to @samp{100}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} log-level log-level
    Specifies the level of logging for the ErrorLog file.  The value
    @code{none} stops all logging while @code{debug2} logs everything.
    
    Defaults to @samp{info}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} log-time-format log-time-format
    Specifies the format of the date and time in the log files.  The value
    @code{standard} logs whole seconds while @code{usecs} logs microseconds.
    
    Defaults to @samp{standard}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-clients
    Specifies the maximum number of simultaneous clients that are allowed by
    the scheduler.
    
    Defaults to @samp{100}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-clients-per-host
    Specifies the maximum number of simultaneous clients that are allowed
    from a single address.
    
    Defaults to @samp{100}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-copies
    Specifies the maximum number of copies that a user can print of each
    job.
    
    Defaults to @samp{9999}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-hold-time
    Specifies the maximum time a job may remain in the @code{indefinite}
    hold state before it is canceled.  A value of 0 disables cancellation of
    held jobs.
    
    Defaults to @samp{0}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-jobs
    Specifies the maximum number of simultaneous jobs that are allowed.  Set
    to 0 to allow an unlimited number of jobs.
    
    Defaults to @samp{500}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-jobs-per-printer
    Specifies the maximum number of simultaneous jobs that are allowed per
    printer.  A value of 0 allows up to MaxJobs jobs per printer.
    
    Defaults to @samp{0}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-jobs-per-user
    Specifies the maximum number of simultaneous jobs that are allowed per
    user.  A value of 0 allows up to MaxJobs jobs per user.
    
    Defaults to @samp{0}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-job-time
    Specifies the maximum time a job may take to print before it is
    canceled, in seconds.  Set to 0 to disable cancellation of "stuck" jobs.
    
    Defaults to @samp{10800}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-log-size
    Specifies the maximum size of the log files before they are rotated, in
    bytes.  The value 0 disables log rotation.
    
    Defaults to @samp{1048576}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} non-negative-integer multiple-operation-timeout
    Specifies the maximum amount of time to allow between files in a
    multiple file print job, in seconds.
    
    Defaults to @samp{300}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} string page-log-format
    Specifies the format of PageLog lines.  Sequences beginning with percent
    (@samp{%}) characters are replaced with the corresponding information,
    while all other characters are copied literally.  The following percent
    sequences are recognized:
    
    @table @samp
    @item %%
    insert a single percent character
    
    @item %@{name@}
    insert the value of the specified IPP attribute
    
    @item %C
    insert the number of copies for the current page
    
    @item %P
    insert the current page number
    
    @item %T
    insert the current date and time in common log format
    
    @item %j
    insert the job ID
    
    @item %p
    insert the printer name
    
    @item %u
    insert the username
    @end table
    
    A value of the empty string disables page logging.  The string @code{%p
    %u %j %T %P %C %@{job-billing@} %@{job-originating-host-name@}
    %@{job-name@} %@{media@} %@{sides@}} creates a page log with the
    standard items.
    
    Defaults to @samp{""}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} environment-variables environment-variables
    Passes the specified environment variable(s) to child processes; a list
    of strings.
    
    Defaults to @samp{()}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} policy-configuration-list policies
    Specifies named access control policies.
    
    Available @code{policy-configuration} fields are:
    
    @deftypevr {@code{policy-configuration} parameter} string name
    Name of the policy.
    @end deftypevr
    
    @deftypevr {@code{policy-configuration} parameter} string job-private-access
    Specifies an access list for a job's private values.  @code{@@ACL} maps
    to the printer's requesting-user-name-allowed or
    requesting-user-name-denied values.  @code{@@OWNER} maps to the job's
    owner.  @code{@@SYSTEM} maps to the groups listed for the
    @code{system-group} field of the @code{files-config} configuration,
    which is reified into the @code{cups-files.conf(5)} file.  Other
    possible elements of the access list include specific user names, and
    @code{@@@var{group}} to indicate members of a specific group.  The
    access list may also be simply @code{all} or @code{default}.
    
    Defaults to @samp{"@@OWNER @@SYSTEM"}.
    @end deftypevr
    
    @deftypevr {@code{policy-configuration} parameter} string job-private-values
    Specifies the list of job values to make private, or @code{all},
    @code{default}, or @code{none}.
    
    Defaults to @samp{"job-name job-originating-host-name
    job-originating-user-name phone"}.
    @end deftypevr
    
    @deftypevr {@code{policy-configuration} parameter} string subscription-private-access
    Specifies an access list for a subscription's private values.
    @code{@@ACL} maps to the printer's requesting-user-name-allowed or
    requesting-user-name-denied values.  @code{@@OWNER} maps to the job's
    owner.  @code{@@SYSTEM} maps to the groups listed for the
    @code{system-group} field of the @code{files-config} configuration,
    which is reified into the @code{cups-files.conf(5)} file.  Other
    possible elements of the access list include specific user names, and
    @code{@@@var{group}} to indicate members of a specific group.  The
    access list may also be simply @code{all} or @code{default}.
    
    Defaults to @samp{"@@OWNER @@SYSTEM"}.
    @end deftypevr
    
    @deftypevr {@code{policy-configuration} parameter} string subscription-private-values
    Specifies the list of job values to make private, or @code{all},
    @code{default}, or @code{none}.
    
    Defaults to @samp{"notify-events notify-pull-method notify-recipient-uri
    notify-subscriber-user-name notify-user-data"}.
    @end deftypevr
    
    @deftypevr {@code{policy-configuration} parameter} operation-access-control-list access-controls
    Access control by IPP operation.
    
    Defaults to @samp{()}.
    @end deftypevr
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-files
    Specifies whether job files (documents) are preserved after a job is
    printed.  If a numeric value is specified, job files are preserved for
    the indicated number of seconds after printing.  Otherwise a boolean
    value applies indefinitely.
    
    Defaults to @samp{86400}.
    @end deftypevr
    
    @deftypevr {@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-history
    Specifies whether the job history is preserved after a job is printed.
    If a numeric value is specified, the job history is preserved for the