fruitbasket/modules/kanboard.nix

51 lines
1.2 KiB
Nix
Raw Normal View History

2024-05-19 11:16:49 +02:00
{ config, pkgs, ... }:
2023-10-15 13:38:48 +02:00
let
2023-10-16 11:59:06 +02:00
domain = "kanboard.${config.networking.domain}";
domain_short = "kb.${config.networking.domain}";
2023-10-15 13:38:48 +02:00
in
{
2024-05-19 11:16:49 +02:00
sops.secrets."kanboard_env" = { };
# Podman
virtualisation.containers.enable = true;
virtualisation = {
podman = {
enable = true;
# Create a `docker` alias for podman, to use it as a drop-in replacement
dockerCompat = true;
2023-10-15 13:38:48 +02:00
2024-05-19 11:16:49 +02:00
# Required for containers under podman-compose to be able to talk to each other.
defaultNetwork.settings.dns_enabled = true;
2023-10-15 13:38:48 +02:00
};
};
2024-05-19 11:16:49 +02:00
virtualisation.oci-containers.backend = "podman";
2023-10-15 13:38:48 +02:00
2024-05-19 11:16:49 +02:00
virtualisation.oci-containers = {
containers.kanboard = {
image = "ghcr.io/kanboard/kanboard:v1.2.35";
volumes = [
"kanboard_data:/var/www/app/data"
"kanboard_plugins:/var/www/app/plugins"
];
ports = [ "127.0.0.1:8045:80" ];
environmentFiles = [
config.sops.secrets."kanboard_env".path
];
};
};
2023-10-15 13:38:48 +02:00
2023-10-16 11:59:06 +02:00
services.nginx = {
virtualHosts."${domain_short}" = {
locations."/".return = "301 $scheme://${domain}$request_uri";
};
2023-10-15 13:38:48 +02:00
2023-10-16 11:59:06 +02:00
virtualHosts."${domain}" = {
2024-05-19 11:16:49 +02:00
locations."/" = {
proxyPass = "http://127.0.0.1:8045";
2023-10-15 13:38:48 +02:00
};
};
};
}