# Source https://github.com/NixOS/nixpkgs/issues/113384 { config , lib , pkgs , ... }: let cfg = config.dadada.kanboard; in { options = { dadada.kanboard.enable = lib.mkEnableOption "Enable Kanboard"; }; config = lib.mkIf cfg.enable { services.phpfpm.pools.kanboard = { user = "kanboard"; group = "kanboard"; settings = { "listen.group" = "nginx"; "pm" = "static"; "pm.max_children" = 4; }; }; users.users.kanboard.isSystemUser = true; users.users.kanboard.group = "kanboard"; users.groups.kanboard.members = [ "kanboard" ]; systemd.tmpfiles.rules = [ "d /var/lib/kanboard/data 0750 kanboard nginx - -" ]; services.nginx = { enable = true; virtualHosts."kanboard.dadada.li" = { root = pkgs.buildEnv { name = "kanboard-configured"; paths = [ (pkgs.runCommand "kanboard-over" { meta.priority = 0; } '' mkdir -p $out for f in index.php jsonrpc.php ; do echo " $out/$f tail -n+2 ${pkgs.kanboard}/share/kanboard/$f \ | sed 's^__DIR__^"${pkgs.kanboard}/share/kanboard"^' >> $out/$f done ln -s /var/lib/kanboard $out/data ln -s ${./kanboard-config.php} $out/config.php '') { outPath = "${pkgs.kanboard}/share/kanboard"; meta.priority = 10; } ]; }; locations = { "/".index = "index.php"; "~ \\.php$" = { tryFiles = "$uri =404"; extraConfig = '' fastcgi_pass unix:${config.services.phpfpm.pools.kanboard.socket}; ''; }; }; }; }; }; }