channel

The Guix channel used by MonasTech systems
Log | Files | Refs | README

commit 937b2f739d42ebb8665593268f24f91278a54659
parent cecfc280575ec014d6bf3967f1331ac896df061f
Author: Luke Willis <lukejw@loquat.dev>
Date:   Thu, 11 Dec 2025 23:08:03 -0500

Add basic quark service

Diffstat:
Amt/services/web.scm | 48++++++++++++++++++++++++++++++++++++++++++++++++
Mmt/system/andrew.scm | 33++++++++++++++++-----------------
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