]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - virtual/packages.nix
Put adminer configuration in its package
[perso/Immae/Config/Nix.git] / virtual / packages.nix
index 6c552f6b45a30bb7a6715713055c37953d7b4868..2e16a0da89a2963d6a50786338dab2fb6f77b87b 100644 (file)
@@ -6,19 +6,57 @@ with import (builtins.fetchTarball {
   sha256 = "0qbycg7wkb71v20rchlkafrjfpbk2fnlvvbh3ai9pyfisci5wxvq";
 }) {};
 let
-adminer = pkgs.stdenv.mkDerivation rec {
-  name = "adminer-4.7.0";
-  src = pkgs.fetchurl {
-    url = "https://www.adminer.org/static/download/4.7.0/${name}.php";
-    sha256 = "1qq2g7rbfh2vrqfm3g0bz0qs057b049n0mhabnsbd1sgnpvnc5z7";
+  adminer = rec {
+    webRoot = pkgs.stdenv.mkDerivation rec {
+      name = "adminer-4.7.0";
+      src = pkgs.fetchurl {
+        url = "https://www.adminer.org/static/download/4.7.0/${name}.php";
+        sha256 = "1qq2g7rbfh2vrqfm3g0bz0qs057b049n0mhabnsbd1sgnpvnc5z7";
+      };
+      phases = "installPhase";
+      installPhase = ''
+        mkdir -p $out
+        cp $src $out/index.php
+      '';
+    };
+    phpFpm = rec {
+      socket = "/var/run/phpfpm/adminer.sock";
+      pool = ''
+        listen = ${socket}
+        user = wwwrun
+        group = wwwrun
+        listen.owner = wwwrun
+        listen.group = wwwrun
+        pm = ondemand
+        pm.max_children = 5
+        pm.process_idle_timeout = 60
+        ;php_admin_flag[log_errors] = on
+        php_admin_value[open_basedir] = "${webRoot}:/tmp"
+        '';
+    };
+    apacheConf = ''
+      Alias /adminer ${webRoot}
+      <Directory ${webRoot}>
+        DirectoryIndex = index.php
+        <FilesMatch "\.php$">
+          SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
+        </FilesMatch>
+      </Directory>
+      '';
+    nginxConf = {
+      alias = webRoot;
+      index = "index.php";
+      extraConfig = ''
+        include ${pkgs.nginx}/conf/fastcgi.conf;
+        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+        fastcgi_param HTTP_PROXY "";
+        fastcgi_param SCRIPT_FILENAME ${webRoot}/index.php;
+        fastcgi_pass unix:${phpFpm.socket};
+        fastcgi_index index.php;
+        fastcgi_intercept_errors on;
+        '';
+    };
   };
-  phases = "installPhase";
-  installPhase = ''
-    mkdir -p $out
-    cp $src $out/index.php
-  '';
-};
-
 in
   {
     inherit adminer;