89 lines
3.1 KiB
Nix
89 lines
3.1 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
let
|
|
joplin-data = "/srv/joplin/data";
|
|
joplin-db-data = "/srv/joplin/postgres";
|
|
joplin-uid = "1001";
|
|
backend = config.virtualisation.oci-containers.backend;
|
|
in {
|
|
secrets.joplin-env = { };
|
|
secrets.joplin-db-env = { };
|
|
|
|
virtualisation.oci-containers.containers = {
|
|
joplin = {
|
|
autoStart = true;
|
|
dependsOn = [ "joplin-db" ];
|
|
environmentFiles = [ config.secrets.joplin-env.decrypted ];
|
|
extraOptions = [
|
|
"--pod=joplin"
|
|
# "--network=joplin"
|
|
];
|
|
# ports = [ "127.0.0.1:22300:22300" ];
|
|
image = "docker.io/library/ataraxiadev/joplin-server:2.9.17";
|
|
volumes = [ "${joplin-data}:/home/joplin/data" ];
|
|
};
|
|
joplin-db = {
|
|
autoStart = true;
|
|
environmentFiles = [ config.secrets.joplin-db-env.decrypted ];
|
|
extraOptions = [
|
|
"--pod=joplin"
|
|
# "--network=joplin"
|
|
];
|
|
image = "docker.io/library/postgres:13";
|
|
volumes = [ "${joplin-db-data}:/var/lib/postgresql/data" ];
|
|
};
|
|
};
|
|
systemd.services.podman-create-pod-joplin = let
|
|
podman = config.virtualisation.podman.package;
|
|
# start-script = pkgs.writeShellScript "start" ''
|
|
# '';
|
|
in {
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = "yes";
|
|
ExecStart = ''
|
|
mkdir -p ${joplin-data} && chown ${joplin-uid} ${joplin-data}
|
|
mkdir -p ${joplin-db-data}
|
|
${podman}/bin/podman pod exists joplin ||
|
|
${podman}/bin/podman pod create -n joplin -p "127.0.0.1:22300:22300"
|
|
'';
|
|
ExecStop = "${podman}/bin/podman pod rm -i -f joplin";
|
|
};
|
|
wantedBy = [ "${backend}-joplin.service" "${backend}-joplin-db.service" ];
|
|
# script = ''
|
|
# mkdir -p ${joplin-data} && chown ${joplin-uid} ${joplin-data} || true
|
|
# mkdir -p ${joplin-db-data} || true
|
|
# ${config.virtualisation.podman.package}/bin/podman pod exists joplin ||
|
|
# ${config.virtualisation.podman.package}/bin/podman pod create -n joplin -p "127.0.0.1:22300:22300"
|
|
# '';
|
|
};
|
|
# systemd.services.create-joplin-network = with config.virtualisation.oci-containers; {
|
|
# serviceConfig.Type = "oneshot";
|
|
# wantedBy = [
|
|
# "${backend}-joplin.service"
|
|
# "${backend}-joplin-db.service"
|
|
# ];
|
|
# script = ''
|
|
# ${pkgs.podman}/bin/podman network inspect joplin || \
|
|
# ${pkgs.podman}/bin/podman network create -d bridge joplin || true
|
|
# '';
|
|
# };
|
|
# systemd.services.podman-joplin = {
|
|
# # path = [ "/run/wrappers" ];
|
|
# # serviceConfig.User = config.mainuser;
|
|
# preStart = "podman network create -d bridge joplin || true";
|
|
# postStop = "podman network rm joplin || true";
|
|
# };
|
|
# systemd.services.podman-joplin-db = {
|
|
# # path = [ "/run/wrappers" ];
|
|
# # serviceConfig.User = config.mainuser;
|
|
# preStart = "podman network create -d bridge joplin || true";
|
|
# postStop = "podman network rm joplin || true";
|
|
# };
|
|
# systemd.services.create-joplin-folder = {
|
|
# serviceConfig.Type = "oneshot";
|
|
# wantedBy = [ "${backend}-joplin.service" ];
|
|
# script = ''
|
|
# mkdir -p ${joplin-data} && chown ${joplin-uid} ${joplin-data}
|
|
# '';
|
|
# };
|
|
} |