X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=nixops%2Fmodules%2Fwebsites%2Faten%2Faten.nix;h=04876a1a2afc95b3c2bc58338b87abe06dfd51bb;hb=1bd8b03eeaafa9345282d8aaf6499bc80adf062f;hp=46a7361b583899613190e4d0e336e61138b79724;hpb=1b3154e40a568a296c74759d68827366b5f26da9;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/nixops/modules/websites/aten/aten.nix b/nixops/modules/websites/aten/aten.nix index 46a7361..04876a1 100644 --- a/nixops/modules/websites/aten/aten.nix +++ b/nixops/modules/websites/aten/aten.nix @@ -1,154 +1,104 @@ -{ lib, writeText, fetchedGitPrivate, stdenv, runCommand, composerEnv, fetchurl, fetchgit, jq, python, nodejs, libsass, yarn2nixPackage }: -let - aten = { config }: rec { - environment = config.environment; - varDir = "/var/lib/aten_${environment}"; - phpFpm = rec { - preStart = '' - if [ ! -f "${varDir}/currentWebappDir" -o \ - ! -f "${varDir}/currentKey" -o \ - "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ] \ - || ! sha512sum -c --status ${varDir}/currentKey; then - pushd ${webappDir} > /dev/null - /run/wrappers/bin/sudo -u wwwrun APP_ENV=${environment} ./bin/console --env=${environment} cache:clear --no-warmup - popd > /dev/null - echo -n "${webappDir}" > ${varDir}/currentWebappDir - sha512sum /var/secrets/webapps/${environment}-aten > ${varDir}/currentKey - fi - ''; - serviceDeps = [ "postgresql.service" ]; - socket = "/var/run/phpfpm/aten-${environment}.sock"; - pool = '' - listen = ${socket} - user = ${apache.user} - group = ${apache.group} - listen.owner = ${apache.user} - listen.group = ${apache.group} - php_admin_value[upload_max_filesize] = 20M - php_admin_value[post_max_size] = 20M - ;php_admin_flag[log_errors] = on - php_admin_value[open_basedir] = "${webappDir}:${varDir}:/tmp" - php_admin_value[session.save_path] = "${varDir}/phpSessions" - ${if environment == "dev" then '' - pm = ondemand - pm.max_children = 5 - pm.process_idle_timeout = 60 - env[SYMFONY_DEBUG_MODE] = "yes" - '' else '' - pm = dynamic - pm.max_children = 20 - pm.start_servers = 2 - pm.min_spare_servers = 1 - pm.max_spare_servers = 3 - ''}''; - }; - keys = [{ - dest = "webapps/${environment}-aten"; - user = apache.user; - group = apache.group; - permissions = "0400"; - text = '' - SetEnv APP_ENV "${environment}" - SetEnv APP_SECRET "${config.secret}" - SetEnv DATABASE_URL "${config.psql_url}" - ''; - }]; - apache = rec { - user = "wwwrun"; - group = "wwwrun"; - modules = [ "proxy_fcgi" ]; - webappName = "aten_${environment}"; - root = "/run/current-system/webapps/${webappName}"; - vhostConf = '' - - SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" - +{ aten, lib, config }: rec { + app = aten.override { inherit (config) environment; }; + phpFpm = rec { + preStart = '' + if [ ! -f "${app.varDir}/currentWebappDir" -o \ + ! -f "${app.varDir}/currentKey" -o \ + "${app}" != "$(cat ${app.varDir}/currentWebappDir 2>/dev/null)" ] \ + || ! sha512sum -c --status ${app.varDir}/currentKey; then + pushd ${app} > /dev/null + /run/wrappers/bin/sudo -u wwwrun APP_ENV=${app.environment} ./bin/console --env=${app.environment} cache:clear --no-warmup + popd > /dev/null + echo -n "${app}" > ${app.varDir}/currentWebappDir + sha512sum /var/secrets/webapps/${app.environment}-aten > ${app.varDir}/currentKey + fi + ''; + serviceDeps = [ "postgresql.service" ]; + socket = "/var/run/phpfpm/aten-${app.environment}.sock"; + pool = '' + listen = ${socket} + user = ${apache.user} + group = ${apache.group} + listen.owner = ${apache.user} + listen.group = ${apache.group} + php_admin_value[upload_max_filesize] = 20M + php_admin_value[post_max_size] = 20M + ;php_admin_flag[log_errors] = on + php_admin_value[open_basedir] = "${app}:${app.varDir}:/tmp" + php_admin_value[session.save_path] = "${app.varDir}/phpSessions" + ${if app.environment == "dev" then '' + pm = ondemand + pm.max_children = 5 + pm.process_idle_timeout = 60 + env[SYMFONY_DEBUG_MODE] = "yes" + '' else '' + pm = dynamic + pm.max_children = 20 + pm.start_servers = 2 + pm.min_spare_servers = 1 + pm.max_spare_servers = 3 + ''}''; + }; + keys = [{ + dest = "webapps/${app.environment}-aten"; + user = apache.user; + group = apache.group; + permissions = "0400"; + text = '' + SetEnv APP_ENV "${app.environment}" + SetEnv APP_SECRET "${config.secret}" + SetEnv DATABASE_URL "${config.psql_url}" + ''; + }]; + apache = rec { + user = "wwwrun"; + group = "wwwrun"; + modules = [ "proxy_fcgi" ]; + webappName = "aten_${app.environment}"; + root = "/run/current-system/webapps/${webappName}"; + vhostConf = '' + + SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" + - Include /var/secrets/webapps/${environment}-aten + Include /var/secrets/webapps/${app.environment}-aten - ${if environment == "dev" then '' - - Use LDAPConnect - Require ldap-group cn=dev.aten.pro,cn=httpd,ou=services,dc=immae,dc=eu - ErrorDocument 401 "" - + ${if app.environment == "dev" then '' + + Use LDAPConnect + Require ldap-group cn=dev.aten.pro,cn=httpd,ou=services,dc=immae,dc=eu + ErrorDocument 401 "" + - - Use LDAPConnect - Require ldap-group cn=dev.aten.pro,cn=httpd,ou=services,dc=immae,dc=eu - ErrorDocument 401 "" - - '' else '' - Use Stats aten.pro + + Use LDAPConnect + Require ldap-group cn=dev.aten.pro,cn=httpd,ou=services,dc=immae,dc=eu + ErrorDocument 401 "" + + '' else '' + Use Stats aten.pro - - Use LDAPConnect - Require ldap-group cn=aten.pro,cn=httpd,ou=services,dc=immae,dc=eu - ErrorDocument 401 "" - - ''} + + Use LDAPConnect + Require ldap-group cn=aten.pro,cn=httpd,ou=services,dc=immae,dc=eu + ErrorDocument 401 "" + + ''} - - Options Indexes FollowSymLinks MultiViews Includes - AllowOverride All - Require all granted - DirectoryIndex index.php - FallbackResource /index.php - - ''; - }; - activationScript = { - deps = [ "wrappers" ]; - text = '' - install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} - install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions - ''; - }; - yarnModules = let - info = fetchedGitPrivate ./aten.json; - packagejson = runCommand "package.json" { buildInputs = [ jq ]; } '' - cat ${info.src}/package.json | jq -r '.version = "v1.0.0"|.name="aten"' > $out - ''; - in - yarn2nixPackage.mkYarnModules rec { - name = "aten-yarn"; - pname = name; - version = "v1.0.0"; - packageJSON = packagejson; - yarnLock = "${info.src}/yarn.lock"; - pkgConfig = { - node-sass = { - buildInputs = [ libsass python ]; - postInstall = let - nodeHeaders = fetchurl { - url = "https://nodejs.org/download/release/v${nodejs.version}/node-v${nodejs.version}-headers.tar.gz"; - sha256 = "16f20ya3ys6w5w6y6l4536f7jrgk4gz46bf71w1r1xxb26a54m32"; - }; - in - '' - node scripts/build.js --tarball=${nodeHeaders} - ''; - }; - }; - }; - webappDir = composerEnv.buildPackage ( - import ./php-packages.nix { inherit composerEnv fetchurl fetchgit; } // - fetchedGitPrivate ./aten.json // - rec { - noDev = (environment == "prod"); - preInstall = '' - export SYMFONY_ENV="${environment}" - export APP_ENV="${environment}" - ''; - postInstall = '' - ln -sf ${yarnModules}/node_modules . - yarn run --offline encore production - rm -rf var/{log,cache} - ln -sf ${varDir}/{log,cache} var/ - ''; - buildInputs = [ yarnModules yarn2nixPackage.yarn ]; - }); - webRoot = "${webappDir}/public"; + + Options Indexes FollowSymLinks MultiViews Includes + AllowOverride All + Require all granted + DirectoryIndex index.php + FallbackResource /index.php + + ''; + }; + activationScript = { + deps = [ "wrappers" ]; + text = '' + install -m 0755 -o ${apache.user} -g ${apache.group} -d ${app.varDir} + install -m 0750 -o ${apache.user} -g ${apache.group} -d ${app.varDir}/phpSessions + ''; }; -in - aten +}