nixos-config/2configs/nginx/rompr.nix
2018-09-02 22:12:33 +02:00

77 lines
2 KiB
Nix

{ config, lib, pkgs, ... }:
with import <stockholm/lib>;
let
user = config.services.nginx.user;
group = config.services.nginx.group;
src = pkgs.fetchFromGitHub {
owner = "fatg3erman";
repo = "RompR";
rev = "1.21";
sha256 = "00gk2c610qgpsb6y296h9pz2aaa6gfq4cqhn15l7fdrk3lkvh01q";
};
fpm-socket = "/var/run/php5-rompr-fpm.sock";
mpd-src = "/var/lib/rompr";
in {
services.phpfpm = {
# phpfpm does not have an enable option
poolConfigs = {
mpd = ''
user = ${user}
group = ${group}
listen = ${fpm-socket}
listen.owner = ${user}
listen.group = ${group}
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
php_admin_value[error_log] = 'stderr'
php_admin_flag[log_errors] = on
catch_workers_output = yes
'';
};
};
# TODO: Pre-job
# TODO: prefs.var could be templated (serialized php ...) then we would not
# need to have a state dir at all
system.activationScripts.rompr = ''
mkdir -p ${mpd-src}
cp -r ${src}/. ${mpd-src}
chown -R ${user}:${group} ${mpd-src}
chmod 770 ${mpd-src}
'';
services.nginx = {
enable = mkDefault true;
virtualHosts = {
"localhost" = {
root = mpd-src;
locations."/".index = "index.php";
locations."~ \.php$" = {
root = mpd-src;
extraConfig = ''
client_max_body_size 200M;
fastcgi_pass unix:${fpm-socket};
include ${pkgs.nginx}/conf/fastcgi_params;
include ${pkgs.nginx}/conf/fastcgi.conf;
fastcgi_index index.php;
try_files $uri =404;
'';
};
};
};
};
services.mysql = {
enable = true;
package = pkgs.mariadb;
ensureDatabases = [ "romprdb" ];
ensureUsers = [
{ ensurePermissions = { "romprdb.*" = "ALL PRIVILEGES"; };
name = user; }
];
};
}