]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Put adminer configuration in its package
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Fri, 28 Dec 2018 16:52:40 +0000 (17:52 +0100)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Fri, 28 Dec 2018 16:52:40 +0000 (17:52 +0100)
virtual/eldiron.nix
virtual/packages.nix

index 38f753c7f1469602aba7846b05c59d5deefab64b..768de84c63e173bfdaea6d12e45c76763d63b306 100644 (file)
         log_level = notice
         '';
       poolConfigs = {
-        adminer = ''
-          listen = /var/run/phpfpm/adminer.sock
-          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] = "${mypkgs.adminer}:/tmp"
-          '';
+        adminer = mypkgs.adminer.phpFpm.pool;
         www = ''
           listen = /var/run/phpfpm/www.sock
           user = wwwrun
           listen = [ { ip = "*"; port = 443; } ];
           hostName = "db-1.immae.eu";
           documentRoot = null;
-          extraConfig = ''
-            Alias /adminer ${mypkgs.adminer}
-            <Directory ${mypkgs.adminer}>
-              DirectoryIndex = index.php
-              <FilesMatch "\.php$">
-                SetHandler "proxy:unix:/var/run/phpfpm/adminer.sock|fcgi://localhost"
-              </FilesMatch>
-            </Directory>
-            '';
+          extraConfig = builtins.concatStringsSep "\n" [
+            mypkgs.adminer.apacheConf
+          ];
         })
         { # Should go last, default fallback
           listen = [ { ip = "*"; port = 80; } ];
     # FIXME: backup
     # FIXME: restart after pam
     # FIXME: pam access doesn’t work (because of php module)
+    # FIXME: ssl
     services.mysql = rec {
       enable = true;
       package = pkgs.mariadb.overrideAttrs(old: rec {
 
     # FIXME: initial sync
     # FIXME: backup
+    # FIXME: ssl
     services.postgresql = rec {
       enable = true;
       package = pkgs.postgresql100.overrideAttrs(old: rec {
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;