nix-config/nixos/modules/kanboard/default.nix

66 lines
1.8 KiB
Nix

# 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 "<?php require('$out/config.php');" > $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};
'';
};
};
};
};
};
}