aboutsummaryrefslogtreecommitdiff
path: root/src/org/euandre/packages.scm
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-03-09 18:32:14 -0300
committerEuAndreh <eu@euandre.org>2025-03-09 18:32:14 -0300
commit92cc4c2997a50f970068af8e08a4410b86a25886 (patch)
tree6f6504b9748d456eadba4f680bfa2bcdfbae762c /src/org/euandre/packages.scm
parent{papo,queue}.scm: Remove (extra-mappings ...) fields from everywhere (diff)
downloadpackages-92cc4c2997a50f970068af8e08a4410b86a25886.tar.gz
packages-92cc4c2997a50f970068af8e08a4410b86a25886.tar.xz
packages.scm: Add cicd-service-type
Diffstat (limited to 'src/org/euandre/packages.scm')
-rw-r--r--src/org/euandre/packages.scm79
1 files changed, 75 insertions, 4 deletions
diff --git a/src/org/euandre/packages.scm b/src/org/euandre/packages.scm
index bbcd27b..795a846 100644
--- a/src/org/euandre/packages.scm
+++ b/src/org/euandre/packages.scm
@@ -116,6 +116,20 @@
wscat-configuration-listen-socket
wscat-configuration-upstream-socket
+ <cicd-configuration>
+ cicd-configuration
+ make-cicd-configuration
+ cicd-configuration?
+ cicd-configuration-name
+ cicd-configuration-package
+ cicd-configuration-user
+ cicd-configuration-group
+ cicd-configuration-log-file
+ cicd-configuration-data-directory
+ cicd-configuration-run-directory
+ cicd-configuration-run-in-container?
+ cicd-configuration-container-name
+
fmt
str
service-type-for))
@@ -553,9 +567,7 @@
backupit
eut
nicely
- package
- q
- cicd))))
+ package))))
(define (syskeep-rotations config)
(match-record config <syskeep-configuration>
@@ -1010,7 +1022,7 @@ The default configuration should provide sane values for all of these."
(service-type-for 'glaze <glaze-configuration> (glaze-configuration) '()))
(define-public hsts-service-type
- (service-type-for 'hsts <hsts-configuration> (hsts-configuration) '()))
+ (service-type-for 'hsts <hsts-configuration> (hsts-configuration) '()))
(define-public untls-service-type
(service-type-for 'untls <untls-configuration> (untls-configuration) '()))
@@ -1020,6 +1032,65 @@ The default configuration should provide sane values for all of these."
+(define-record-type* <cicd-configuration>
+ cicd-configuration
+ make-cicd-configuration
+ cicd-configuration?
+ (name cicd-configuration-name (default "cicd"))
+ (package cicd-configuration-package (default cicd))
+ (user cicd-configuration-user (default "cicd"))
+ (group cicd-configuration-group (default "cicd"))
+ (log-file cicd-configuration-log-file (default "/var/log/cicd/cicd.log"))
+ (data-directory cicd-configuration-data-directory (default "/var/lib/cicd"))
+ (run-directory cicd-configuration-run-directory (default "/var/run/cicd"))
+ (run-in-container? cicd-configuration-run-in-container? (default #f))
+ (container-name cicd-configuration-container-name (default "cicd")))
+
+(define (cicd-profile config)
+ (match-record config <cicd-configuration>
+ (package)
+ (list
+ q
+ package)))
+
+(define (cicd-shepherd-services config)
+ (match-record config <cicd-configuration>
+ (user group log-file data-directory)
+ (list
+ (shepherd-service
+ (provision '(cicd))
+ (requirement '())
+ (start
+ #~(make-forkexec-constructor
+ (list
+ (cmd-for <cicd-configuration> config)
+ "daemon")
+ #:user #$user
+ #:group #$group
+ #:log-file #$log-file
+ #:directory #$data-directory))
+ (documentation "The background daemon service that powers the CI.")))))
+
+(define-public cicd-service-type
+ (service-type
+ (name 'cicd)
+ (extensions
+ (list
+ (service-extension shepherd-root-service-type
+ cicd-shepherd-services)
+ (service-extension profile-service-type
+ cicd-profile)
+ (service-extension activation-service-type
+ (activation-for <cicd-configuration>))
+ (service-extension account-service-type
+ (accounts-for <cicd-configuration>))
+ (service-extension log-rotation-service-type
+ (rotations-for <cicd-configuration>))))
+ (default-value (cicd-configuration))
+ (description (fmt "The CI agent service that backs a Git server."))))
+
+
+
(list
remembering
eut