commit 937b2f739d42ebb8665593268f24f91278a54659
parent cecfc280575ec014d6bf3967f1331ac896df061f
Author: Luke Willis <lukejw@loquat.dev>
Date: Thu, 11 Dec 2025 23:08:03 -0500
Add basic quark service
Diffstat:
2 files changed, 64 insertions(+), 17 deletions(-)
diff --git a/mt/services/web.scm b/mt/services/web.scm
@@ -0,0 +1,48 @@
+(define-module (mt services web)
+ #:use-module (gnu services)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages web)
+ #:use-module (gnu system shadow)
+ #:use-module (guix gexp)
+ #:export (quark-service-type))
+
+;; TODO: Make a fleshed out certbot + quark + hitch service
+
+(define %quark-accounts
+ (list (user-account
+ (name "quark")
+ (group "quark")
+ (system? #t)
+ (comment "quark user")
+ (home-directory "/var/empty")
+ (shell (file-append shadow "/sbin/nologin")))
+ (user-group
+ (name "quark")
+ (system? #t))))
+
+(define (quark-shepherd-service path)
+ (list (shepherd-service
+ (provision '(quark))
+ (documentation "Run quark.")
+ (requirement '(user-processes))
+ (start #~(make-forkexec-constructor
+ (list #$(file-append quark "/bin/quark")
+ "-p" "80"
+ "-h" "0.0.0.0"
+ "-u" "quark"
+ "-g" "quark"
+ "-d" #$path)
+ #:log-file "/var/log/quark.log"))
+ (stop #~(make-kill-destructor)))))
+
+(define quark-service-type
+ (service-type (name 'quark)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ quark-shepherd-service)
+ (service-extension account-service-type
+ (const %quark-accounts))))
+ (description
+ "Serve a specified path's contents over http using quark.")))
+
diff --git a/mt/system/andrew.scm b/mt/system/andrew.scm
@@ -4,28 +4,17 @@
#:use-module (guix git)
#:use-module (gnu bootloader)
#:use-module (gnu bootloader grub)
- #:use-module (gnu packages admin)
- #:use-module (gnu packages bash)
- #:use-module (gnu packages freedesktop)
- #:use-module (gnu packages games)
- #:use-module (gnu packages version-control)
- #:use-module (gnu packages wm)
#:use-module (gnu services)
- #:use-module (gnu services avahi)
- #:use-module (gnu services base)
- #:use-module (gnu services desktop)
- #:use-module (gnu services guix)
- #:use-module (gnu services networking)
+ #:use-module (gnu services version-control)
#:use-module (gnu system)
- #:use-module (gnu system file-systems)
#:use-module (gnu system keyboard)
- #:use-module (gnu system linux-initrd)
- #:use-module (gnu system nss)
#:use-module (gnu system shadow)
+ #:use-module (gnu packages rsync)
+ #:use-module (gnu packages version-control)
#:use-module (nongnu packages linux)
#:use-module (nongnu system linux-initrd)
- #:use-module (mt channels)
#:use-module (mt services)
+ #:use-module (mt services web)
#:use-module (mt system)
#:export (andrew-os))
@@ -71,17 +60,27 @@ Welcome to \"andrew\" the, first MonasTech server.
(shell (file-append git-minimal "/bin/git-shell")))
%base-user-accounts))
+ ;; TODO: Move git setup to service
(groups
(cons*
(user-group (name "git"))
%base-groups))
- (packages %mt-base-packages)
+ (packages
+ (cons*
+ rsync
+ %mt-base-packages))
;; TODO: Add git home environment with custom commands
;; TODO: Create special service that creates git user, group and environment
;; TODO: Figure out how to glue certbot, quark and hitch together
- (services %mt-bishop-services)))
+ (services
+ (append
+ (list (service quark-service-type "/var/www/monastech.xyz/")
+ (service git-daemon-service-type
+ (git-daemon-configuration
+ (base-path "/home/git/repo"))))
+ %mt-bishop-services))))
andrew-os