diff options
| author | Yarl Baudig <yarl-baudig@mailoo.org> | 2026-03-14 13:22:58 +0100 |
|---|---|---|
| committer | Ian Eure <ian@retrospec.tv> | 2026-03-21 19:01:26 -0700 |
| commit | e931cab87fef3159511a6f425e5cddbeb8b06c96 (patch) | |
| tree | aa60487c2bc75e94b5baa874f8efb1ccc8b349e2 /gnu | |
| parent | 61849b667726dd30d623b517380f5b12655b115a (diff) | |
gnu: home: services: Add home-git-annex-assistant-service-type
* gnu/home/services/git-annex-assistant.scm: New file.
* gnu/local/mk (GNU_SYSTEM_MODULES): Register it.
* doc/guix.texi (Miscellaneous Services): Document it.
Change-Id: I9ca75210dfe7f6d2d81b9eb8919d6eb34c7bb002
Signed-off-by: Ian Eure <ian@retrospec.tv>
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/home/services/git-annex-assistant.scm | 83 | ||||
| -rw-r--r-- | gnu/local.mk | 1 |
2 files changed, 84 insertions, 0 deletions
diff --git a/gnu/home/services/git-annex-assistant.scm b/gnu/home/services/git-annex-assistant.scm new file mode 100644 index 00000000000..e8885b8cda7 --- /dev/null +++ b/gnu/home/services/git-annex-assistant.scm @@ -0,0 +1,83 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2026 Yarl Baudig <yarl-baudig@mailoo.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 home services git-annex-assistant) + #:use-module (guix gexp) + #:use-module ((guix packages) #:select (package?)) + #:use-module (guix records) + #:use-module (gnu services configuration) + #:use-module (gnu home services) + #:use-module (gnu home services shepherd) + #:use-module (gnu packages haskell-apps) + #:use-module (srfi srfi-1) + #:export (home-git-annex-assistant-configuration + home-git-annex-assistant-service-type)) + +(define-configuration/no-serialization home-git-annex-assistant-configuration + (package + (package git-annex) + "Package that provides @code{git-annex}.") + (directories + (list-of-strings '()) + "List of directories.")) + +(define (home-git-annex-assistant-shepherd-services config) + (match-record config + <home-git-annex-assistant-configuration> (package directories) + (let ((gaa-command + #~(list (string-append #$package "/bin/git-annex") "assistant"))) + (map + (lambda (dir) + (let ((pid-file (in-vicinity dir ".git/annex/daemon.pid"))) + (shepherd-service + (documentation + (string-append "Run git-annex assistant against " dir ".")) + (provision + (list + (symbol-append 'home-git-annex-assistant- + (string->symbol dir)))) + (start #~(lambda _ + (and (zero? (spawn-command #$gaa-command + #:directory #$dir)) + (read-pid-file #$pid-file)))) + (stop #~(lambda _ + (unless (zero? (spawn-command + (append #$gaa-command '("--stop")) + #:directory #$dir)) + (error "failed to stop git-annex assistant")) + #f))))) + directories)))) + +(define home-git-annex-assistant-service-type + (service-type + (name 'git-annex-assistant) + (extensions + (list (service-extension home-shepherd-service-type + home-git-annex-assistant-shepherd-services))) + (compose concatenate) + (extend (lambda (config directories) + (home-git-annex-assistant-configuration + (inherit config) + (directories + (append + (home-git-annex-assistant-configuration-directories config) + directories))))) + (description + "Run the git-annex assistant daemon on a list of directories."))) + diff --git a/gnu/local.mk b/gnu/local.mk index 25ac77b706b..6455e9feb3d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -113,6 +113,7 @@ GNU_SYSTEM_MODULES = \ %D%/home/services/dotfiles.scm \ %D%/home/services/symlink-manager.scm \ %D%/home/services/fontutils.scm \ + %D%/home/services/git-annex-assistant.scm \ %D%/home/services/gnome.scm \ %D%/home/services/gnupg.scm \ %D%/home/services/guix.scm \ |
