My Nix Configuration
1{ 2 config, 3 self', 4 self, 5 ... 6}: 7let 8 dataDir = "/var/lib/planka"; 9 d = self.lib.data.services.planka; 10in 11{ 12 virtualisation.oci-containers.containers = { 13 planka-server = { 14 image = "ghcr.io/plankanban/planka:latest"; 15 ports = [ "${toString d.port}:1337" ]; 16 environment = { 17 BASE_URL = "https://${d.extUrl}"; 18 DATABASE_URL = "postgresql://planka@planka-db/planka"; 19 # Default Admin 20 DEFAULT_ADMIN_EMAIL = "pyrox@pyrox.dev"; 21 DEFAULT_ADMIN_USERNAME = "pyrox"; 22 }; 23 environmentFiles = [ config.age.secrets.planka-env.path ]; 24 volumes = [ 25 "${dataDir}/user-avatars:/app/public/user-avatars" 26 "${dataDir}/project-background-images:/app/public/project-background-images" 27 "${dataDir}/attachments:/app/private/attachments" 28 ]; 29 extraOptions = [ "--network=planka" ]; 30 }; 31 planka-db = { 32 image = "postgres:16-alpine"; 33 volumes = [ "${dataDir}/db:/var/lib/postgresql/data" ]; 34 environment = { 35 POSTGRES_USER = "planka"; 36 POSTGRES_DB = "planka"; 37 POSTGRES_HOST_AUTH_METHOD = "trust"; 38 }; 39 extraOptions = [ "--network=planka" ]; 40 }; 41 }; 42 age.secrets.planka-env = { 43 file = ./secrets/planka-env.age; 44 owner = "thehedgehog"; 45 group = "misc"; 46 }; 47 services.anubis.instances.planka = { 48 settings = { 49 COOKIE_DOMAIN = ".cs2a.club"; 50 BIND = ":${toString d.anubis}"; 51 POLICY_FNAME = "${self'.packages.anubis-files}/policies/planka.yaml"; 52 TARGET = "http://localhost:${toString d.port}"; 53 }; 54 }; 55}