{ config, lib, pkgs, ... }: with import ; 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; } ]; }; }