131 lines
No EOL
3.7 KiB
Nix
131 lines
No EOL
3.7 KiB
Nix
{ inputs, ... }:
|
|
{
|
|
flake.modules.nixos.invidious =
|
|
{ lib, config, pkgs, ... }:
|
|
{
|
|
|
|
imports = with inputs.self.modules.nixos; [
|
|
podman
|
|
];
|
|
|
|
age.secrets = {
|
|
invidiouscomp.file = ../../../secrets/invidiouscomp.age;
|
|
invidiousdb.file = ../../../secrets/invidiousdb.age;
|
|
};
|
|
|
|
virtualisation.oci-containers.containers =
|
|
{
|
|
"invidiouscompanion" = {
|
|
image = "quay.io/invidious/invidious-companion:latest";
|
|
volumes = [
|
|
"companioncache:/var/tmp/youtubei.js:rw"
|
|
];
|
|
labels = {
|
|
"io.containers.autoupdate" = "registry";
|
|
};
|
|
environmentFiles = [
|
|
"${config.age.secrets.invidiouscomp.path}"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--pod=invidious"
|
|
];
|
|
};
|
|
|
|
"invidious-db" = {
|
|
image = "docker.io/library/postgres:14";
|
|
volumes = [
|
|
"/DockerData/configs/invidious/postgresdata:/var/lib/postgresql/data"
|
|
"/DockerData/configs/invidious/sql:/config/sql"
|
|
"/DockerData/configs/invidious/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh"
|
|
];
|
|
labels = {
|
|
"io.containers.autoupdate" = "registry";
|
|
};
|
|
environmentFiles = [
|
|
"${config.age.secrets.invidiousdb.path}"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--pod=invidious"
|
|
];
|
|
};
|
|
|
|
"invidious" = {
|
|
image = "quay.io/invidious/invidious:master";
|
|
extraOptions = [
|
|
"--pod=invidious"
|
|
];
|
|
labels = {
|
|
"io.containers.autoupdate" = "registry";
|
|
};
|
|
volumes = [
|
|
"/DockerData/configs/invidious/config.yml:/invidious/config/config.yml"
|
|
];
|
|
log-driver = "journald";
|
|
dependsOn = [
|
|
"invidious-db"
|
|
];
|
|
};
|
|
};
|
|
|
|
|
|
systemd = {
|
|
services = {
|
|
"podman-invidious-db" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-invidious-root.target" ];
|
|
wantedBy = [ "podman-compose-invidious-root.target" ];
|
|
after = [ "podman-pod-invidious.service" ];
|
|
wants = [ "podman-pod-invidious.service" ];
|
|
};
|
|
|
|
"podman-invidiouscompanion" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-invidious-root.target" ];
|
|
wantedBy = [ "podman-compose-invidious-root.target" ];
|
|
after = [ "podman-pod-invidious.service" ];
|
|
wants = [ "podman-pod-invidious.service" ];
|
|
};
|
|
|
|
"podman-invidious" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-invidious-root.target" ];
|
|
wantedBy = [ "podman-compose-invidious-root.target" ];
|
|
after = [ "podman-pod-invidious.service" "podman-invidious-db.service" ];
|
|
wants = [ "podman-pod-invidious.service" "podman-invidious-db.service" ];
|
|
};
|
|
|
|
|
|
"podman-pod-invidious" = {
|
|
path = [ pkgs.podman ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
ExecStop = "podman pod rm -f invidious";
|
|
};
|
|
#Invidious pod with port 5464=server
|
|
script = ''
|
|
podman pod inspect invidious || podman pod create --name invidious -p 5464:3000 -p 8282:8282
|
|
'';
|
|
partOf = [ "podman-compose-invidious-root.target" ];
|
|
wantedBy = [ "podman-compose-invidious-root.target" ];
|
|
};
|
|
|
|
};
|
|
|
|
targets = {
|
|
"podman-compose-invidious-root" = {
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
};
|
|
} |