summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorYarl Baudig <yarl-baudig@mailoo.org>2026-03-14 13:22:58 +0100
committerIan Eure <ian@retrospec.tv>2026-03-21 19:01:26 -0700
commite931cab87fef3159511a6f425e5cddbeb8b06c96 (patch)
treeaa60487c2bc75e94b5baa874f8efb1ccc8b349e2 /gnu
parent61849b667726dd30d623b517380f5b12655b115a (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.scm83
-rw-r--r--gnu/local.mk1
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 \