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:2.0.0-rc.4"; 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 TRUST_PROXY = "true"; 23 DEFAULT_LANGUAGE = "en-US"; 24 }; 25 environmentFiles = [ config.age.secrets.planka-env.path ]; 26 volumes = [ 27 "${dataDir}/user-avatars:/app/public/user-avatars" 28 "${dataDir}/project-background-images:/app/public/project-background-images" 29 "${dataDir}/attachments:/app/private/attachments" 30 "${dataDir}/favicons:/app/public/favicons" 31 "${dataDir}/background-images:/app/public/background-images" 32 ]; 33 extraOptions = [ "--network=planka" ]; 34 }; 35 planka-db = { 36 image = "postgres:16-alpine"; 37 volumes = [ "${dataDir}/db:/var/lib/postgresql/data" ]; 38 environment = { 39 POSTGRES_USER = "planka"; 40 POSTGRES_DB = "planka"; 41 POSTGRES_HOST_AUTH_METHOD = "trust"; 42 }; 43 extraOptions = [ "--network=planka" ]; 44 }; 45 }; 46 age.secrets.planka-env = { 47 file = ./secrets/planka-env.age; 48 owner = "thehedgehog"; 49 group = "misc"; 50 }; 51 services.anubis.instances.planka = { 52 settings = { 53 COOKIE_DOMAIN = ".cs2a.club"; 54 BIND = ":${toString d.anubis}"; 55 POLICY_FNAME = "${self'.packages.anubis-files}/policies/planka.yaml"; 56 TARGET = "http://localhost:${toString d.port}"; 57 }; 58 }; 59}