nixos-config/profiles/servers/joplin-server.nix

51 lines
1.7 KiB
Nix
Raw Normal View History

2022-12-07 02:38:16 +03:00
{ config, lib, pkgs, ... }:
let
joplin-data = "/srv/joplin/data";
2023-01-13 04:03:15 +03:00
joplin-db-data = "/srv/joplin/postgres";
2022-12-07 02:38:16 +03:00
joplin-uid = "1001";
backend = config.virtualisation.oci-containers.backend;
2023-01-26 00:43:11 +03:00
pod-name = "joplin-pod";
open-ports = [ "127.0.0.1:22300:22300/tcp" ];
2022-12-07 02:38:16 +03:00
in {
2022-10-09 00:39:52 +03:00
secrets.joplin-env = { };
secrets.joplin-db-env = { };
2023-01-26 00:43:11 +03:00
# FIXMEL mailer
2022-10-08 04:45:07 +03:00
virtualisation.oci-containers.containers = {
joplin = {
autoStart = true;
dependsOn = [ "joplin-db" ];
2023-01-26 00:43:11 +03:00
environment = { MAX_TIME_DRIFT = "4000"; };
2022-10-09 00:39:52 +03:00
environmentFiles = [ config.secrets.joplin-env.decrypted ];
2023-01-26 00:43:11 +03:00
extraOptions = [ "--pod=${pod-name}" ];
image = "docker.io/ataraxiadev/joplin-server:2.9.17";
2022-12-07 02:38:16 +03:00
volumes = [ "${joplin-data}:/home/joplin/data" ];
2022-10-08 04:45:07 +03:00
};
joplin-db = {
autoStart = true;
2022-10-09 00:39:52 +03:00
environmentFiles = [ config.secrets.joplin-db-env.decrypted ];
2023-01-26 00:43:11 +03:00
extraOptions = [ "--pod=${pod-name}" ];
image = "docker.io/postgres:13";
2023-01-13 04:03:15 +03:00
volumes = [ "${joplin-db-data}:/var/lib/postgresql/data" ];
2022-10-08 04:45:07 +03:00
};
};
2023-01-26 00:43:11 +03:00
systemd.services."podman-create-${pod-name}" = let
portsMapping = lib.concatMapStrings (port: " -p " + port) open-ports;
start = pkgs.writeShellScript "create-pod" ''
mkdir -p ${joplin-data} && chown ${joplin-uid} ${joplin-data}
mkdir -p ${joplin-db-data}
podman pod exists ${pod-name} || podman pod create -n ${pod-name} ${portsMapping}
'';
stop = "podman pod rm -i -f ${pod-name}";
in rec {
path = [ pkgs.coreutils config.virtualisation.podman.package ];
before = [ "${backend}-joplin.service" "${backend}-joplin-db.service" ];
wantedBy = before;
2023-01-13 04:03:15 +03:00
serviceConfig = {
Type = "oneshot";
RemainAfterExit = "yes";
2023-01-26 00:43:11 +03:00
ExecStart = start;
ExecStop = stop;
2023-01-13 04:03:15 +03:00
};
};
2022-10-08 04:45:07 +03:00
}