71 lines
2.3 KiB
Nix
71 lines
2.3 KiB
Nix
{ pkgs, ... }:
|
|
{
|
|
virtualisation = {
|
|
containers.enable = true;
|
|
podman = {
|
|
enable = true;
|
|
defaultNetwork.settings.dns_enabled = true;
|
|
};
|
|
docker = {
|
|
enable = true;
|
|
storageDriver = "btrfs";
|
|
daemon.settings = {
|
|
dns = [ "1.1.1.1" "8.8.8.8" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
systemd.services = {
|
|
init-docker-networks = {
|
|
description = "Crear redes globales de Docker si no existen";
|
|
after = [ "docker.service" ];
|
|
requires = [ "docker.service" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.docker}/bin/docker network inspect homelab_net >/dev/null 2>&1 || ${pkgs.docker}/bin/docker network create homelab_net'";
|
|
};
|
|
};
|
|
docker-compose-tools = {
|
|
description = "Stack de Docker Compose: Tools";
|
|
after = [ "docker.service" "network-online.target" "tailscaled.service" ];
|
|
wants = [ "docker.service" "network-online.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
WorkingDirectory = "/mnt/containers/tools";
|
|
ExecStart = "${pkgs.docker}/bin/docker compose up -d --remove-orphans";
|
|
ExecStop = "${pkgs.docker}/bin/docker compose down";
|
|
};
|
|
};
|
|
docker-compose-arrs = {
|
|
description = "Stack de Docker Compose: Arrs";
|
|
after = [ "docker.service" "docker-compose-tools.service" "local-fs.target" ];
|
|
wants = [ "docker.service" "docker-compose-tools.service" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
WorkingDirectory = "/mnt/containers/arrs";
|
|
ExecStart = "${pkgs.docker}/bin/docker compose up -d --remove-orphans";
|
|
ExecStop = "${pkgs.docker}/bin/docker compose down";
|
|
};
|
|
};
|
|
docker-compose-gameservers = {
|
|
description = "Stack de Docker Compose: Gameservers";
|
|
after = [ "docker.service" "docker-compose-tools.service" ];
|
|
wants = [ "docker.service" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
WorkingDirectory = "/mnt/containers/gameserver";
|
|
ExecStart = "${pkgs.docker}/bin/docker compose up -d --remove-orphans";
|
|
ExecStop = "${pkgs.docker}/bin/docker compose down";
|
|
};
|
|
};
|
|
};
|
|
}
|