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