nix-config/modules/plume.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

94 lines
2.2 KiB
Nix
Raw Normal View History

2021-12-24 03:18:20 +01:00
{ config, lib, pkgs, ... }:
let
cfg = config.services.plume;
in
{
options.services.plume = with lib; {
enable = mkEnableOption "Plume";
2021-12-29 21:32:20 +01:00
envFile = mkOption {
type = types.path;
description = "Path to .env file";
};
2021-12-24 03:18:20 +01:00
user = mkOption {
type = types.str;
default = "plume";
description = "System user to run Plume";
};
group = mkOption {
type = types.str;
default = "plume";
description = "System group to run Plume";
};
};
config = lib.mkIf cfg.enable {
systemd.tmpfiles.rules = [
"d ${config.users.users.${cfg.user}.home} 0700 ${cfg.user} ${cfg.group} -"
];
ids.uids.plume = 499;
users.users.${cfg.user} = {
uid = config.ids.uids.plume;
2022-12-04 08:53:28 +01:00
inherit (cfg) group;
2021-12-24 03:18:20 +01:00
home = "/var/lib/plume";
};
users.groups.${cfg.group} = {};
services.postgresql = {
enable = true;
initialScript = pkgs.writeText "plume-initScript" ''
CREATE ROLE plume WITH LOGIN PASSWORD 'plume' CREATEDB;
CREATE DATABASE plume;
GRANT ALL PRIVILEGES ON DATABASE plume TO plume;
'';
2023-06-07 21:55:54 +02:00
# TODO: update to postgresql 15
2021-12-24 03:18:20 +01:00
};
systemd.services.plume = {
description = "Plume";
after = [ "postgresql.service" ];
requires = [ "postgresql.service" ];
wantedBy = [ "multi-user.target" ];
2022-12-04 08:53:28 +01:00
path = [ pkgs.plume ];
2021-12-24 03:18:20 +01:00
script = ''
2021-12-29 21:32:20 +01:00
ln -sf ${cfg.envFile} .env
mkdir -p static/media
2022-12-04 08:53:28 +01:00
for f in ${pkgs.plume}/share/plume/static/*; do
2021-12-29 21:32:20 +01:00
n=$(basename "$f")
if [ "$n" != media ]; then
rm -f "static/$n"
ln -s "$f" "static/$n"
fi
done
2021-12-24 03:18:20 +01:00
plm migration run
plm search init
exec plume
'';
serviceConfig = {
User = cfg.user;
Group = cfg.group;
2024-01-20 22:13:34 +01:00
Restart = "on-failure";
2021-12-24 03:18:20 +01:00
WorkingDirectory = config.users.users.${cfg.user}.home;
};
};
environment.systemPackages = [ (pkgs.writeScriptBin "plume-setup" ''
#! ${pkgs.runtimeShell} -e
plm() {
2022-12-04 08:53:28 +01:00
sudo -u ${config.services.plume.user} -- ${pkgs.plume}/bin/plm $@
2021-12-24 03:18:20 +01:00
}
plm migration run
plm instance new
plm users new --admin
systemctl start plume.service
'') ];
};
}