From 0e851f91d3c9a63db1ec4adbe62a072254b1eb44 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Sun, 2 Sep 2018 22:12:33 +0200
Subject: [PATCH] ma rompr: init (but will never use it)

---
 2configs/nginx/rompr.nix | 76 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)
 create mode 100644 2configs/nginx/rompr.nix

diff --git a/2configs/nginx/rompr.nix b/2configs/nginx/rompr.nix
new file mode 100644
index 0000000..8c1fbc5
--- /dev/null
+++ b/2configs/nginx/rompr.nix
@@ -0,0 +1,76 @@
+{ 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; }
+    ];
+  };
+}