Compare commits
4 commits
cc9a267ed4
...
95cf3caa0b
Author | SHA1 | Date | |
---|---|---|---|
TakeV | 95cf3caa0b | ||
TakeV | 2c6c4cf981 | ||
TakeV | 6acb925611 | ||
TakeV | ed17f9df1e |
|
@ -1,4 +1,4 @@
|
|||
(authorizations
|
||||
(version 0)
|
||||
(("1086 326D E207 068C 1C02 5129 A64F 4134 5C74 00AF"
|
||||
(name "TakeV"))))
|
||||
(name "TakeV"))
|
||||
|
|
22
README.org
Normal file
22
README.org
Normal file
|
@ -0,0 +1,22 @@
|
|||
* About
|
||||
kulupu mi is a guix channel which packages various federated servers.
|
||||
|
||||
To use this channel, add the following entry to your default-channels:
|
||||
|
||||
#+begin_src scheme
|
||||
(channel
|
||||
(name 'kulupu-mi)
|
||||
(url "https://git.solarpunk.moe/TakeV/kulupu-mi.git")
|
||||
(branch "main")
|
||||
(introduction
|
||||
(make-channel-introduction
|
||||
"cc9a267ed48680f3cb7319f6c1fa5d6f6800b4b7"
|
||||
(openpgp-fingerprint
|
||||
"1086 326D E207 068C 1C02 5129 A64F 4134 5C74 00AF"))))
|
||||
#+end_src
|
||||
|
||||
* Packages
|
||||
** [[https://docs.gotosocial.org/en/latest/][GoToSocial]]
|
||||
Lightweight ActivityPub server, intended to be used with third party ActivityPub client.
|
||||
|
||||
*Only includes backend server. No front end files at the moment.*
|
62
kulupu/packages/gotosocial.scm
Normal file
62
kulupu/packages/gotosocial.scm
Normal file
|
@ -0,0 +1,62 @@
|
|||
(define-module (kulupu packages gotosocial)
|
||||
#:use-module ((guix licenses)
|
||||
#:prefix license:)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages golang)
|
||||
#:use-module (gnu packages shells)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix build-system go))
|
||||
|
||||
(define-public gotosocial
|
||||
(let* ((import-path "github.com/superseriousbusiness/gotosocial")
|
||||
(working-path (string-append "src/" import-path)))
|
||||
(package
|
||||
(name "gotosocial")
|
||||
(version "0.8.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url
|
||||
"https://github.com/superseriousbusiness/gotosocial")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1cxdk59r57hbg5pwpg5vhhdzwcgpa6jdwhhblhhyk7pq1ym386n1"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
(list #:go go-1.20
|
||||
#:import-path import-path
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(add-before 'build 'chdir
|
||||
(lambda _
|
||||
(setenv "ORIG_DIR"
|
||||
(getcwd))
|
||||
(chdir #$working-path)))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(setenv "VERSION"
|
||||
#$version)
|
||||
(invoke "sh"
|
||||
(string-append (getcwd)
|
||||
"/scripts/build.sh"))))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(invoke "sh" "test/envparsing.sh")))
|
||||
(add-after 'install 'install-binary
|
||||
(lambda _
|
||||
(install-file "gotosocial"
|
||||
(string-append #$output "/bin"))))
|
||||
(add-before 'install-license-files 'chdir-back
|
||||
(lambda _
|
||||
(chdir (getenv "ORIG_DIR")))))))
|
||||
(propagated-inputs (list python-minimal-wrapper zsh))
|
||||
(home-page "https://github.com/superseriousbusiness/gotosocial")
|
||||
(synopsis "GoToSocial")
|
||||
(description
|
||||
"GoToSocial is an @@url{https://activitypub.rocks/,ActivityPub} social network server, written in Golang.")
|
||||
(license license:agpl3))))
|
73
kulupu/services/activity-pub.scm
Normal file
73
kulupu/services/activity-pub.scm
Normal file
|
@ -0,0 +1,73 @@
|
|||
(define-module (kulupu services activity-pub)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix records)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services base)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (gnu system shadow)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (kulupu packages gotosocial)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (gotosocial-shepherd-service
|
||||
gotosocial-service-type
|
||||
gts-config
|
||||
gts-config?))
|
||||
|
||||
(define-record-type* <gts-config> gts-config
|
||||
make-gts-config
|
||||
gts-config?
|
||||
(pkg gotosocial-configuration-package (default gotosocial))
|
||||
(config-file gotosocial-configuration-config (default #f)) ; file-like
|
||||
(port gotosocial-port (default #f))
|
||||
(cert-dir gotosocial-letsencrypt-cert-dir (default #f))
|
||||
(storage-dir gotosocial-storage-local-base-path (default #f))
|
||||
(web-asset-dir gotosocial-web-asset-dir (default #f))
|
||||
(host gotosocial-host (default #f))
|
||||
(db-type gotosocial-db-type (default #f))
|
||||
(db-address gotosocial-db-address (default #f)))
|
||||
|
||||
(define gotosocial-shepherd-service
|
||||
(match-lambda (($ <gts-config> pkg config-file port cert-dir storage-dir web-asset-dir host db-type db-address)
|
||||
(let* ((gotosocial (file-append pkg "/bin/gotosocial"))
|
||||
(command `(,gotosocial
|
||||
"server" "start"
|
||||
,@(if port `(,(string-append "--port=" (number->string port))) '())
|
||||
,@(if db-type `(,(string-append "--db-type=" db-type)) '())
|
||||
,@(if db-address `(,(string-append "--db-address=" db-address)) '())
|
||||
,@(if cert-dir `(,(string-append "--letsencrypt-cert-dir=" cert-dir)) '())
|
||||
,@(if storage-dir `(,(string-append "--storage-local-base-path=" storage-dir)) '())
|
||||
,@(if web-asset-dir `(,(string-append "--letsencrypt-cert-dir=" web-asset-dir)) '())
|
||||
,@(if config-file `(,(string-append "--config-path=" config-file)) '())
|
||||
,@(if host `(,(string-append "--host=" host)) '())
|
||||
)))
|
||||
(list (shepherd-service
|
||||
(documentation "Run GoToSocial")
|
||||
(requirement '(networking))
|
||||
(provision '(gotosocial-server))
|
||||
(start #~(make-forkexec-constructor '#$command
|
||||
#:user "gotosocial"
|
||||
#:group "gotosocial"))
|
||||
(stop #~(make-kill-destructor))))))))
|
||||
|
||||
(define %gotosocial-server-account
|
||||
(list (user-group
|
||||
(name "gotosocial")
|
||||
(system? #t))
|
||||
(user-account
|
||||
(name "gotosocial")
|
||||
(system? #t)
|
||||
(group "gotosocial")
|
||||
(comment "GoToSocial server user")
|
||||
(home-directory "/var/empty/")
|
||||
(shell (file-append shadow "/sbin/nologin")))))
|
||||
|
||||
(define gotosocial-service-type
|
||||
(service-type
|
||||
(name 'gotosocial)
|
||||
(extensions
|
||||
(list (service-extension shepherd-root-service-type
|
||||
gotosocial-shepherd-service)
|
||||
(service-extension account-service-type
|
||||
(const %gotosocial-server-account))))
|
||||
(description "Runs GoToSocial")
|
||||
(default-value (gts-config))))
|
50
kulupu/services/container-operating-system.scm
Normal file
50
kulupu/services/container-operating-system.scm
Normal file
|
@ -0,0 +1,50 @@
|
|||
(use-modules (gnu)
|
||||
(guix packages)
|
||||
(guix build-system trivial)
|
||||
(guix licenses)
|
||||
(gnu system nss))
|
||||
|
||||
(include "activity-pub.scm")
|
||||
|
||||
(define dummy-package
|
||||
(package
|
||||
(name "dummy")
|
||||
(version "0")
|
||||
(source #f)
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:target #f
|
||||
#:builder (begin
|
||||
(use-modules (guix build utils))
|
||||
(let* ((out (assoc-ref %outputs "out"))
|
||||
(dummy (string-append out "/dummy")))
|
||||
(mkdir-p out)
|
||||
(call-with-output-file dummy
|
||||
(const #t))))))
|
||||
(home-page #f)
|
||||
(synopsis #f)
|
||||
(description #f)
|
||||
(license (fsdg-compatible "dummy"))))
|
||||
|
||||
(define dummy-bootloader
|
||||
(bootloader
|
||||
(name 'dummy-bootloader)
|
||||
(package dummy-package)
|
||||
(configuration-file "/dev/null")
|
||||
(configuration-file-generator
|
||||
(lambda (. _rest)
|
||||
(plain-file "dummy-bootloader" "")))
|
||||
(installer #~(const #t))))
|
||||
|
||||
(define dummy-kernel dummy-package)
|
||||
|
||||
(define generate-container-os
|
||||
(lambda (hostname)
|
||||
(operating-system
|
||||
(host-name hostname)
|
||||
(bootloader (bootloader-configuration (bootloader dummy-bootloader)))
|
||||
(file-systems '())
|
||||
(services (cons* (gotosocial-service-type) %base-services)))))
|
||||
|
||||
(generate-container-os "test")
|
Loading…
Reference in a new issue