nix-packages/packages/bookwyrm/nixos-module.nix

94 lines
1.9 KiB
Nix
Raw Permalink Normal View History

2025-03-04 13:21:29 +01:00
{ pkgs , ... } :
2025-03-04 16:02:02 +01:00
with pkgs ;
with pkgs . kernelmaft ;
{
systemd = {
units = {
"bookwyrm.service" = {
text = ''
[Unit]
2025-03-04 16:09:58 +01:00
After=network.target
[Service]
2025-03-04 16:09:58 +01:00
# 'initdb' fails harmlessly if it has been run on the database before
ExecStartPre=${coreutils-full}/bin/ln -sf ${bookwyrm}/var/lib/bookwyrm/VERSION /var/lib/bookwyrm/
ExecStartPre=${coreutils-full}/bin/mkdir -p /var/lib/bookwyrm/images
ExecStartPre=${bookwyrm}/bin/bookwyrm-env ${python311}/bin/python ${bookwyrm}/lib/python3.11/manage.py migrate
ExecStartPre=-${bookwyrm}/bin/bookwyrm-env ${python311}/bin/python ${bookwyrm}/lib/python3.11/manage.py initdb
2025-03-09 12:55:12 +01:00
ExecStart=${bookwyrm}/bin/bookwyrm-env ${bookwyrm}/bin/bookwyrm
2025-03-04 16:09:58 +01:00
WorkingDirectory=/var/lib/bookwyrm
2025-03-04 16:09:58 +01:00
# Creates /var/lib/bookwyrm directory
StateDirectory=bookwyrm
# Creates /run/bookwyrm directory
RuntimeDirectory=bookwyrm
User=bookwyrm
Group=bookwyrm
ProtectSystem=strict
ProtectHome=tmpfs
PrivateTmp=true
PrivateDevices=true
PrivateIPC=true
ProtectHostname=true
ProtectClock=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictNamespaces=true
LockPersonality=true
RestrictRealtime=true
RestrictSUIDSGID=true
'' ;
} ;
} ;
} ;
2025-03-04 17:23:07 +01:00
users = {
groups = {
bookwyrm = {} ;
} ;
users = {
bookwyrm = {
group = "bookwyrm" ;
home = "/var/lib/bookwyrm" ;
isSystemUser = true ;
} ;
} ;
} ;
services = {
postgresql = {
ensureUsers = [
{
name = "bookwyrm" ;
ensureDBOwnership = true ;
}
] ;
ensureDatabases = [ "bookwyrm" ] ;
} ;
redis = {
servers = {
bookwyrm-activity = {
enable = true ;
user = "bookwyrm" ;
group = "bookwyrm" ;
} ;
bookwyrm-broker = {
enable = true ;
user = "bookwyrm" ;
group = "bookwyrm" ;
} ;
} ;
} ;
} ;
}