aboutsummaryrefslogtreecommitdiff
path: root/gnu/services/mcron.scm
blob: 5bee02a5872da8e6d76cf8baae435d4feecf65ca (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu services mcron)
  #:use-module (gnu services)
  #:use-module (gnu services base)
  #:use-module (gnu services shepherd)
  #:autoload   (gnu packages guile) (mcron)
  #:use-module (guix records)
  #:use-module (guix gexp)
  #:use-module (srfi srfi-1)
  #:use-module (ice-9 match)
  #:use-module (ice-9 vlist)
  #:export (mcron-configuration
            mcron-configuration?
            mcron-configuration-mcron
            mcron-configuration-jobs

            mcron-service-type
            mcron-service))

;;; Commentary:
;;;
;;; This module implements a service that to run instances of GNU mcron, a
;;; periodic job execution daemon.  Example of a service:
;;
;;  (service mcron-service-type
;;           (mcron-configuration
;;            (jobs (list #~(job next-second-from
;;                               (lambda ()
;;                                 (call-with-output-file "/dev/console"
;;                                   (lambda (port)
;;                                     (display "hello!\n" port)))))))))
;;;
;;; Code:

(define-record-type* <mcron-configuration> mcron-configuration
  make-mcron-configuration
  mcron-configuration?
  (mcron             mcron-configuration-mcron    ;package
                     (default mcron))
  (jobs              mcron-configuration-jobs     ;list of <mcron-job>
                     (default '())))

(define (job-file job)
  (scheme-file "mcron-job" job))

(define mcron-shepherd-services
  (match-lambda
    (($ <mcron-configuration> mcron ())           ;nothing to do!
     '())
    (($ <mcron-configuration> mcron jobs)
     (list (shepherd-service
            (provision '(mcron))
            (requirement '(user-processes))
            (modules `((srfi srfi-1)
                       (srfi srfi-26)
                       ,@%default-modules))
            (start #~(make-forkexec-constructor
                      (list (string-append #$mcron "/bin/mcron")
                            #$@(map job-file jobs))

                      ;; Disable auto-compilation of the job files and set a
                      ;; sane value for 'PATH'.
                      #:environment-variables
                      (cons* "GUILE_AUTO_COMPILE=0"
                             "PATH=/run/current-system/profile/bin"
                             (remove (cut string-prefix? "PATH=" <>)
                                     (environ)))))
            (stop #~(make-kill-destructor)))))))

(define mcron-service-type
  (service-type (name 'mcron)
                (extensions
                 (list (service-extension shepherd-root-service-type
                                          mcron-shepherd-services)
                       (service-extension profile-service-type
                                          (compose list
                                                   mcron-configuration-mcron))))
                (compose concatenate)
                (extend (lambda (config jobs)
                          (mcron-configuration
                           (inherit config)
                           (jobs (append (mcron-configuration-jobs config)
                                         jobs)))))
                (default-value (mcron-configuration)))) ;empty job list

(define* (mcron-service jobs #:optional (mcron mcron))
  "Return an mcron service running @var{mcron} that schedules @var{jobs}, a
list of gexps denoting mcron job specifications.

This is a shorthand for:
@example
  (service mcron-service-type
           (mcron-configuration (mcron mcron) (jobs jobs)))
@end example
"
  (service mcron-service-type
           (mcron-configuration (mcron mcron) (jobs jobs))))

;;; mcron.scm ends here
nfiguration?): New procedure. * doc/guix.texi (Desktop Services): Document this. Co-authored-by: Oleg Pykhalov <go.wigust@gmail.com> Reza Alizadeh Majd 2020-10-01services: %desktop-services: Setuid root NTFS and NFS mount helpers....Fixes <https://issues.guix.info/39670>. Combined with commit def6e2ae46, this allows unprivileged users to mount file systems marked with the "user" option. It adds less than 4 MiB to the closure of the lightweight-desktop.tmpl operating system template. * gnu/services/desktop.scm (%desktop-services): Extend the setuid-program-service-type service with the 'mount.nfs' and 'mount.nfs-3g' programs. Reported-by: Nathan Dehnel <ncdehnel@gmail.com> Maxim Cournoyer 2020-09-28services: Add elogind ‘handle-lid-switch-external-power’....* gnu/services/desktop.scm <elogind-configuration>: Add an handle-lid-switch-external-power field, mapping to the HandleLidSwitchExternalPower logind.conf setting. * doc/guix.texi (Desktop Services): ‘Document’ it. Tobias Geerinckx-Rice 2020-09-23services: Allow (service bluetooth-service-type)....* gnu/services/desktop.scm (bluetooth-service-type) [default-value]: Set to (bluetooth-configuration). Tobias Geerinckx-Rice 2020-08-19services: Allow (service accountsservice-service-type)....* gnu/services/desktop.scm (accountsservice-service-type) [default-value]: Set to accountsservice. Tobias Geerinckx-Rice 2020-05-24gnu: enlightenment: Update to 0.24.0....* gnu/packages/enlightenment.scm (enlightenment): Update to 0.24.0. [arguments]: Change configure-flags to hardcode efl binary locations. Remove custom 'fix-dot-desktop-creation phase. Update 'set-system-actions phase. * gnu/packages/patches/enlightenment-fix-setuid-path.patch: Update for new upstream version. * gnu/services/desktop.scm (enlightenment-setuid-programs): Same. Efraim Flashner 2020-05-13mailmap: Update entries for Nikita....* .mailmap: change email and name for Nikita. * Makefile.am, doc/guix.texi, etc/completion/fish/guix.fish, gnu/packages/accessibility.scm, gnu/packages/admin.scm, gnu/packages/audio.scm, gnu/packages/autotools.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/cinnamon.scm, gnu/packages/compression.scm, gnu/packages/crypto.scm, gnu/packages/databases.scm, gnu/packages/django.scm, gnu/packages/dns.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/emacs.scm, gnu/packages/enlightenment.scm, gnu/packages/erlang.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/forth.scm, gnu/packages/fvwm.scm, gnu/packages/games.scm, gnu/packages/gl.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm, gnu/packages/gtk.scm, gnu/packages/guile-wm.scm, gnu/packages/guile-xyz.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-check.scm, gnu/packages/haskell-crypto.scm, gnu/packages/haskell-xyz.scm, gnu/packages/haskell.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/irc.scm, gnu/packages/language.scm, gnu/packages/libcanberra.scm, gnu/packages/linux.scm, gnu/packages/lisp-xyz.scm, gnu/packages/lisp.scm, gnu/packages/lolcode.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/mate.scm, gnu/packages/maths.scm, gnu/packages/mc.scm, gnu/packages/messaging.scm, gnu/packages/music.scm, gnu/packages/ncurses.scm, gnu/packages/networking.scm, gnu/packages/nickle.scm, gnu/packages/openbox.scm, gnu/packages/pdf.scm, gnu/packages/perl-check.scm, gnu/packages/perl.scm, gnu/packages/python-compression.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/python.scm, gnu/packages/qt.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/ssh.scm, gnu/packages/suckless.scm, gnu/packages/tbb.scm, gnu/packages/telephony.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tls.scm, gnu/packages/tor.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/web.scm, gnu/packages/wm.scm, gnu/packages/xdisorg.scm, gnu/packages/xfce.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, gnu/services/certbot.scm, gnu/services/desktop.scm, gnu/services/version-control.scm, gnu/services/web.scm, guix/import/hackage.scm, guix/licenses.scm: Likewise. Signed-off-by: Efraim Flashner <efraim@flashner.co.il> nikita 2020-04-21services: Don't use the deprecated 'make-forkexec-constructor' call....Passing 'make-forkexec-constructor' a string or several string arguments has been deprecated since dmd 0.1. * gnu/services/base.scm (rngd-service-type): In 'start' method, pass a list as the first argument to 'make-forkexec-constructor'. * gnu/services/desktop.scm (bluetooth-shepherd-service): Likewise. * gnu/services/spice.scm (spice-vdagent-shepherd-service): Likewise. Ludovic Courtès 2020-04-10services: gnome: Fix ‘gnome’ field name....To match its own documentation & other similar services. * gnu/services/desktop.scm (gnome-desktop-configuration)[gnome-package]: Rename to… [gnome]: …this. Tobias Geerinckx-Rice 2020-04-02services: mate: Provide all the polkit actions....* gnu/services/desktop.scm (mate-polkit-extension): New procedure. (mate-desktop-service-type): Use it when extending POLKIT-SERVICE-TYPE. Ludovic Courtès 2020-03-22services: Add fontconfig-file-system-service....* gnu/services/desktop.scm (%fontconfig-file-system, fontconfig-file-system-service): New variables. (%desktop-services): Add fontconfig-file-system-service. Efraim Flashner 2020-02-07services: inputattach: Fix broken baud rate option....* gnu/services/desktop.scm (inputattach-shepherd-service): Use "--baud" for setting the baud-rate. Signed-off-by: 宋文武 <iyzsong@member.fsf.org> Tim Gesthuizen 2020-01-21services: sane: Create the "scanner" account....* gnu/services/desktop.scm (%sane-accounts, sane-service-type): New variables. (%desktop-services): Use SANE-SERVICE-TYPE instead of 'simple-service'. * doc/guix.texi (Desktop Services): Document 'sane-service-type'. Ludovic Courtès 2020-01-20services: Add "sane" service....* gnu/services/desktop.scm (%desktop-services): Add "sane" service. Danny Milosavljevic 2020-01-11services: Add pulseaudio to %desktop-services....Fixes <https://bugs.gnu.org/38172>. Reported by raingloom <raingloom@riseup.net>. * gnu/services/desktop.scm (%desktop-services): Add pulseaudio service. Signed-off-by: Marius Bakke <mbakke@fastmail.com> Leo Prikler 2019-12-04services: Add GNOME Keyring service....* gnu/services/desktop.scm: (<gnome-keyring-configuration>): New record type. (pam-gnome-keyring): New procedure. (gnome-keyring-service-type): New variable. * doc/guix.texi (Desktop Services): Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Leo Prikler 2019-11-30services: Add polkit-wheel-service to %desktop-services....* gnu/services/desktop.scm: (%desktop-services): Add polkit-wheel-service. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Leo Prikler 2019-11-30services: Add polkit-wheel-service....* gnu/services/desktop.scm: (polkit-wheel): New variable. (polkit-wheel-service): New service. * doc/guix.texi: Document polkit-wheel-service. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Leo Prikler 2019-11-01services: colord: Deprecate 'colord-service' procedure....* gnu/services/desktop.scm (colord-service-type)[default-value]: New field. (colord-service): Define with 'define-deprecated'. (%desktop-services): Use 'colord-service-type' instead of 'colord-service'. * doc/guix.texi (Desktop Services): Adjust accordingly. Ludovic Courtès 2019-10-22services: elogind, gnome, mate, xfce: Fix config type predicate identifiers....* gnu/services/desktop.scm (<elogind-configuration>): Add question mark in type predicate identifier. (<gnome-desktop-configuration>): Likewise. (<mate-desktop-configuration>): Likewise. (<xfce-desktop-configuration>): Likewise. Ludovic Courtès 2019-10-21services: inputattach: Add 'baud-rate' parameter....* gnu/services/desktop.scm (inputattach-configuration): Add baud-rate field. (inputattach-shepherd-service): Add baud-rate to parameters when specified. * doc/guix.texi (Miscellaneous Services): [inputattach Service] Document baud-rate parameter. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Tim Gesthuizen 2019-10-20services: xfce: Add xfce4-power-manager to polkit settings....* gnu/services/desktop.scm (xfce-desktop-service-type): Add xfce4-power-manager to polkit-service-type service extension via new procedure 'xfce-polkit-settings'. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> David Wilson