65 lines
2.7 KiB
Scheme
65 lines
2.7 KiB
Scheme
(define-module (rekahsoft guix-config vms cloud0-home-rekahsoft-ca)
|
|
#:use-module (gnu)
|
|
#:use-module (gnu system)
|
|
#:use-module (gnu packages docker)
|
|
#:use-module (gnu packages shells)
|
|
#:use-module (gnu packages storage)
|
|
#:use-module (gnu services docker)
|
|
#:use-module (gnu services shepherd)
|
|
#:use-module (rekahsoft guix-config proxmox-vm-lvm-minimal)
|
|
#:export (system))
|
|
|
|
(define base-system (proxmox-vm-lvm-minimal "cloud0"))
|
|
|
|
(define cephfs-service
|
|
(simple-service 'cephfs shepherd-root-service-type
|
|
(list (shepherd-service
|
|
(provision '(cephfs))
|
|
(requirement '(networking file-system-/mnt/cephfs))
|
|
(start #~(make-system-constructor "/run/setuid-programs/mount /mnt/cephfs"))
|
|
(stop #~(make-system-constructor "/run/setuid-programs/umount /mnt/cephfs"))
|
|
(respawn? #f)))))
|
|
|
|
;; TODO: run nextcloud docker container as shepherd service
|
|
;; TODO: Manually setup basic nextcloud cron on guix host; this should be replaced with configuration as code - THIS DOESN'T ACTUALLY WORK. The manually created crontab is not exected.
|
|
;; TODO: add mcron job for nextcloud cron: 'docker exec -t -u www-data nextcloud php --define apc.enable_cli=1 -f /var/www/html/cron.php'
|
|
;; TODO: add mcron job for nextcloud preview generation: 'docker exec -t -u www-data nextcloud php occ preview:pre-generate'
|
|
|
|
(define system
|
|
(operating-system
|
|
(inherit base-system)
|
|
(users (cons*
|
|
(user-account
|
|
(name "collin")
|
|
(comment "Master User")
|
|
(group "users")
|
|
(shell #~(string-append #$zsh "/bin/zsh"))
|
|
(supplementary-groups
|
|
'("wheel" "netdev" "audio" "video" "docker"))
|
|
(home-directory "/home/collin"))
|
|
(operating-system-users base-system)))
|
|
|
|
(file-systems
|
|
(append
|
|
(list (file-system
|
|
(device "172.16.0.20,172.16.0.21,172.16.0.22:/file-vault/nextcloud")
|
|
(options "rw,relatime,name=file-vault-nextcloud,secretfile=/etc/ceph/ceph.client.file-vault-nextcloud.key,acl")
|
|
;; Filesystem cannot be mounted as its not a real device; instead a shepherd service is used to mount the file-system
|
|
(mount? #f)
|
|
(create-mount-point? #t)
|
|
(mount-point "/mnt/cephfs")
|
|
(type "ceph")))
|
|
(operating-system-file-systems base-system)))
|
|
|
|
(packages
|
|
(append
|
|
(map specification->package
|
|
'("ceph"))
|
|
(operating-system-packages base-system)))
|
|
|
|
(services
|
|
(append
|
|
(list (service docker-service-type)
|
|
cephfs-service)
|
|
%proxmox-vm-lvm-minimal-services))))
|