dotfiles/shepherd/.config/shepherd/init.scm.org
Tom Willemse 9b7417f6c6 Update GNUmakefile
- Add the ‘dunst’, ‘zsh’, ‘mcron’, and ‘mbsync’ modules.

- Tell Make that any ‘*.el’ files ar “precious”, meaning that when a ‘.elc’ file
  was generated from a ‘.el’ file that was itself generated from a ‘.org’ file,
  the ‘.el’ file isn't just an intermediate file and should not be deleted.

- Change the ‘install’ and ‘clean’ to use the ‘*-stow’ and ‘*-clean’ rules set
  up for each module.

- Add configuration for ‘outline-minor-mode’ and change the headings to adhere
  to that configuration.

- Stop using the ‘build/’ directory, tangle all the files to the same directory
  as the source files, and use stow, not cp, to install them. The only exception
  is the XDG files, which now have their specific ‘xdg-stow’ rule. This is
  necessary because programs using these files will overwrite a symbolic link
  they find and replace it with a new file, overwriting my settings.

- Add some files that were missing, and rename some files to follow the existing
  convention to make them easy to tangle.
2022-01-30 23:12:22 -08:00

797 B

The Shepherd manual suggests that you use a single init.scm, but as is pointed out by this article about GNU Shepherd user services it might be better to have the services in separate files so you can restart them individually if you make any changes to them. So I just put a loading script into init.scm that goes through the init.d directory and loads each service defined in there.

(use-modules (shepherd service)
             ((ice-9 ftw) #:select (scandir)))

(for-each
 (λ (file) (load (string-append "init.d/" file)))
 (scandir (string-append (dirname (current-filename)) "/init.d")
          (λ (file) (string-suffix? ".scm" file))))

(action 'shepherd 'daemonize)