Go to file
Attila Lendvai 3fde186103
shepherd: Add --log-level command line argument.
2024-02-04 23:12:03 +01:00
.guix guix: Build Shepherd with Fibers using the libevent backend. 2024-01-06 15:12:46 +01:00
build-aux maint: Move Guix files to '.guix'. 2023-06-05 11:30:53 +02:00
doc doc: Add init system config for another distro. 2024-01-02 23:37:36 +01:00
etc bash completion: Complete the ‘doc’ and ‘help’ actions. 2023-11-19 18:20:37 +01:00
modules shepherd: Add --log-level command line argument. 2024-02-04 23:12:03 +01:00
po nls: Update de, ro, sr, sv, and uk translations. 2024-01-07 11:46:22 +01:00
tests shepherd: Add --log-level command line argument. 2024-02-04 23:12:03 +01:00
.dir-locals.el support: Add 'let-loop' and use it in 'service-controller'. 2023-03-18 23:32:28 +01:00
.gitignore .gitignore: adjust for tests/, m4/, po/ 2024-02-04 23:12:00 +01:00
.guix-authorizations KLUDGE Added my key to .guix-authorizations, and set to attila-keyring. 2024-01-19 00:16:08 +01:00
.guix-channel KLUDGE Added my key to .guix-authorizations, and set to attila-keyring. 2024-01-19 00:16:08 +01:00
ANNOUNCE--0.5 dmd -0.5 announcment 2012-07-10 08:47:24 +02:00
ANNOUNCE--0.6 dmd -0.6 announcment 2012-07-10 08:47:31 +02:00
ANNOUNCE--0.7 dmd -0.7 announcment 2012-07-10 08:47:38 +02:00
AUTHORS Update 'AUTHORS'. 2016-01-24 22:13:15 +01:00
COPYING Upgrade to GPLv3+. 2013-11-03 22:09:14 +01:00
ChangeLog ChangeLog: Rename git repository. 2016-01-26 12:36:47 +03:00
ChangeLog-2003 Change Alfred's address. 2013-12-03 14:38:36 +01:00
Makefile.am shepherd: Add tests/startup-error.sh 2024-02-04 23:12:00 +01:00
NEWS Update NEWS. 2024-01-07 11:48:32 +01:00
README README: Add hint to configure log line coloring in Emacs. 2024-02-04 23:12:01 +01:00
THANKS Change Alfred's address. 2013-12-03 14:38:36 +01:00
configure.ac build: Bump to version 0.10.3. 2024-01-07 11:51:38 +01:00
guix.scm maint: Move Guix files to '.guix'. 2023-06-05 11:30:53 +02:00
halt.in Move commands to (shepherd scripts xyz). 2016-01-27 10:37:48 +01:00
herd.in build: Capture the source and object directories of Fibers. 2022-03-30 14:25:30 +02:00
reboot.in Move commands to (shepherd scripts xyz). 2016-01-27 10:37:48 +01:00
shepherd.in KLUDGE: don't disable deprecation warning 2024-02-04 23:12:03 +01:00

README

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

* An -*- outline -*- of the GNU Daemon Shepherd.

** What is the Shepherd?

The GNU Daemon Shepherd or GNU Shepherd is a service manager written in
Guile that looks after the herd of system services, providing a
replacement for the service-managing capabilities of SysV-init (or any
other init) with a dependency-based system with a convenient interface.
It is intended for use on GNU/Linux and GNU/Hurd, but it is supposed to work
on every POSIX-like system where Guile is available.

In a previous life, the GNU Shepherd was known as GNU dmd, the
daemon-managing daemon.

** Requirements

The GNU Shepherd depends on the following pieces of software:

  - GNU Guile 3.0.x or 2.2.x, https://gnu.org/software/guile
  - Fibers 1.1.0 or later, https://github.com/wingo/fibers

** Getting started

Like all GNU packages, this program can be installed using familiar
incantations such as:

  ./configure --prefix=/some/where
  make
  make check
  make install

Actually setting up the Shepherd currently requires some work.  You
should read the Texinfo manual for details:

  info -f shepherd.info

** Installing development snapshots with Guix

The Shepherd repository can be used as a Guix “channel”.  To do that, change
~/.config/guix/channels.scm along these lines:

  (append (list (channel
		 (name 'shepherd)
		 (url "https://git.savannah.gnu.org/git/shepherd.git")
		 (introduction
		  (make-channel-introduction
		   "788a6d6f1d5c170db68aa4bbfb77024fdc468ed3"
		   (openpgp-fingerprint
		    "3CE464558A84FDC69DB40CFB090B11993D9AEBB5")))))
	  %default-channels)

Once that is done, run guix pull.  This will give you additional shepherd
packages with higher version numbers:

  guix package -A shepherd

You can then install it with guix install shepherd, or e.g. use it in an
operating-system configuration:

  (operating-system
    ...
    (essential-services
     (modify-services (operating-system-default-essential-services
                       this-operating-system)
       (shepherd-root-service-type
        config =>
        (shepherd-configuration
         (inherit config)
         (shepherd (@ (shepherd-package) shepherd)))))))

** Configuring Emacs

You may want to add this to your Emacs config to make log lines gray,
i.e. blend into the background to avoid adding cognitive load while reading
the code.

  (defface font-lock-logger-expression-face
     '((((class color) (background light)) (:foreground "#aaa")))
    "Face for the (foo-bar.debug ...) log statements.")

  (defun logger-lisp-mode-hook ()
    (font-lock-add-keywords
     'lisp-mode
     `(("(\\(\\w+\\.\\(dribble\\|debug\\|info\\|warn\\|error\\|fatal\\) .*\\))" 1 'font-lock-logger-expression-face t))))

  (add-hook 'lisp-mode-hook 'logger-lisp-mode-hook)

** More information

Detailed instructions on installing the GNU Shepherd are available in
the file `INSTALL'.  A list of user-visible changes between releases can
be found in the file `NEWS'.

See the Git version control history and the `AUTHORS' file for a list of
people who contributed to this software:

  https://git.savannah.gnu.org/cgit/shepherd.git/

A list of people who have been helpful in improving the Shepherd can be
found in `THANKS'.

This program can be distributed under the terms of the GNU General
Public License, version 3 or any later version, see the file `COPYING'
for details.  The Texinfo manual can be distributed under the terms of
the GNU Free Documentation License, version 1.3 or any later version,
see the manual for details.  Note that for any copyright year range
specified as YYYY-ZZZZ in this package, the range specifies every single
year in that closed interval.


The GNU Shepherd home page is at:

  http://www.gnu.org/software/shepherd/

The GNU Shepherd is developed jointly with the GNU Guix project.  Both
are essential components in putting the pieces together to build the GNU
system.  Join us now!

** Hacking

Using GNU Guix, you can enter a development environment by running:

  guix shell -D -f guix.scm

or simply:

  guix shell

You can authenticate the code in this repository by running:

  guix git authenticate				\
      788a6d6f1d5c170db68aa4bbfb77024fdc468ed3	\
      3CE464558A84FDC69DB40CFB090B11993D9AEBB5

The command silently exits with zero on success, and errors out
otherwise.  We recommend invoking it from .git/hooks/pre-push.

** Reporting bugs

Send bug reports to <bug-guix@gnu.org>, with "Shepherd" and the version
number in the Subject line.