diff --git a/options/podman.nix b/options/podman.nix index 58a53eb..d3e962f 100644 --- a/options/podman.nix +++ b/options/podman.nix @@ -6,5 +6,7 @@ pihole.enable = lib.mkEnableOption "pihole podman"; suwayomi.enable = lib.mkEnableOption "suwayomi podman"; ytptube.enable = lib.mkEnableOption "metube podman"; + redmage.enable = lib.mkEnableOption "redmage podman"; + redmage-demo.enable = lib.mkEnableOption "redmage-demo podman"; }; } diff --git a/profiles/homeserver.nix b/profiles/homeserver.nix index 13663cc..226cc40 100644 --- a/profiles/homeserver.nix +++ b/profiles/homeserver.nix @@ -28,6 +28,8 @@ pihole.enable = true; suwayomi.enable = true; ytptube.enable = true; + redmage.enable = true; + redmage-demo.enable = true; }; docker = { diff --git a/system/podman/default.nix b/system/podman/default.nix index 743a388..15f9cb3 100644 --- a/system/podman/default.nix +++ b/system/podman/default.nix @@ -34,14 +34,18 @@ in # Taken IP-Range Subnets # - # 10.1.1.0-4 -> Pihole - # 10.1.1.4-8 -> ytptube - # 10.1.1.8-12 -> Suwayomi - # 10.1.1.12-16 -> Suwayomi + # 10.1.1.0-3 -> Pihole + # 10.1.1.4-7 -> ytptube + # 10.1.1.8-11 -> Suwayomi + # 10.1.1.12-15 -> Suwayomi + # 10.1.1.16-19 -> Redmage + # 10.1.1.20-23 -> Redmage Demo imports = [ ./caddy.nix ./pihole.nix ./suwayomi.nix ./ytptube.nix + ./redmage.nix + ./redmage-demo.nix ]; } diff --git a/system/podman/redmage-demo.nix b/system/podman/redmage-demo.nix new file mode 100644 index 0000000..b95419e --- /dev/null +++ b/system/podman/redmage-demo.nix @@ -0,0 +1,44 @@ +{ config, lib, ... }: +let + name = "redmage-demo"; + podman = config.profile.podman; + inherit (lib) mkIf; + ip = "10.88.0.3"; + image = "git.tigor.web.id/tigor/redmage:latest"; + rootVolume = "/nas/redmage-demo"; + domain = "${name}.tigor.web.id"; + user = config.profile.user; + uid = toString user.uid; + gid = toString user.gid; +in +{ + config = mkIf (podman.enable && podman.${name}.enable) { + services.caddy.virtualHosts.${domain}.extraConfig = '' + reverse_proxy ${ip}:8080 + ''; + + system.activationScripts."podman-${name}" = '' + mkdir -p ${rootVolume}/db + mkdir -p ${rootVolume}/images + chown ${uid}:${gid} ${rootVolume} ${rootVolume}/db ${rootVolume}/images + ''; + + virtualisation.oci-containers.containers.${name} = { + inherit image; + autoStart = true; + user = "${uid}:${gid}"; + environment = { + TZ = "Asia/Jakarta"; + }; + volumes = [ + "${rootVolume}/db:/app/db" + "${rootVolume}/images:/app/downloads" + ]; + extraOptions = [ + "--network=podman" + "--ip=${ip}" + ]; + }; + }; + +} diff --git a/system/podman/redmage.nix b/system/podman/redmage.nix new file mode 100644 index 0000000..5fa6c57 --- /dev/null +++ b/system/podman/redmage.nix @@ -0,0 +1,44 @@ +{ config, lib, ... }: +let + name = "redmage"; + podman = config.profile.podman; + inherit (lib) mkIf; + ip = "10.88.0.2"; + image = "git.tigor.web.id/tigor/redmage:latest"; + rootVolume = "/nas/redmage"; + domain = "${name}.tigor.web.id"; + user = config.profile.user; + uid = toString user.uid; + gid = toString user.gid; +in +{ + config = mkIf (podman.enable && podman.${name}.enable) { + services.caddy.virtualHosts.${domain}.extraConfig = '' + reverse_proxy ${ip}:8080 + ''; + + system.activationScripts."podman-${name}" = '' + mkdir -p ${rootVolume}/db + mkdir -p ${rootVolume}/images + chown ${uid}:${gid} ${rootVolume} ${rootVolume}/db ${rootVolume}/images + ''; + + virtualisation.oci-containers.containers.${name} = { + inherit image; + autoStart = true; + user = "${uid}:${gid}"; + environment = { + TZ = "Asia/Jakarta"; + }; + volumes = [ + "${rootVolume}/db:/app/db" + "${rootVolume}/images:/app/downloads" + ]; + extraOptions = [ + "--network=podman" + "--ip=${ip}" + ]; + }; + }; + +}