{ privateFiles }: { config, pkgs, lib, ... }: let serverSpecificConfig = config.myEnv.serverSpecific.quatresaisons; yarnModules = pkgs.yarn2nix-moretea.mkYarnModules rec { name = "landing"; pname = name; version = "v1.0.0"; packageJSON = "${pkgs.sources.webapps-landing}/package.json"; yarnLock = "${pkgs.sources.webapps-landing}/yarn.lock"; yarnNix = ../websites/tools/tools/landing/yarn-packages.nix; }; toLanding = landingConfig: pkgs.stdenv.mkDerivation rec { pname = "landing"; version = "v1.0.0"; src = pkgs.sources.webapps-landing; buildInputs = [ yarnModules pkgs.yarn2nix-moretea.yarn ]; configurePhase = '' ln -s ${yarnModules}/node_modules . ''; buildPhase = '' yarn build ''; installPhase = '' cp -a dist $out cp -f ${landingConfig} $out/config.yml ln -s service-worker.js $out/worker.js ''; }; normalUsers = serverSpecificConfig.users; sponsoredUser = pkgs.writeScriptBin "sponsored_user" '' #!/usr/bin/env bash set -euo pipefail [ -z "''${SUDO_USER+x}" ] && echo "Must be run with sudo" && exit 1 mygroup=$(id -ng $SUDO_USER) sponsored=$(getent group $mygroup | cut -d':' -f4) echo "Sponsored users: ''${sponsored:-}" log () { touch /var/log/sponsored_users chmod go-rwx /var/log/sponsored_users echo "`date` $mygroup $1" | LANG=C cat -v | tr '\012' ' ' | sed 's:$:\x0a:' >> /var/log/sponsored_users } create_user () { log "creates $1: $2" useradd -m -G users,$mygroup -g $mygroup -p '!' "$1" touch /var/lib/nixos/sponsored_users chmod go-rwx /var/lib/nixos/sponsored_users echo "$mygroup $1 $2" >> /var/lib/nixos/sponsored_users (${pkgs.openldap}/bin/ldapadd -c -D cn=root,dc=salle-s,dc=org \ -y /var/secrets/ldap/sync_password 2>/dev/null >/dev/null || true) </dev/null >/dev/null || true # Remove obsolete users ${pkgs.openldap}/bin/ldapsearch -LLL ${com} -s one -b "ou=users,dc=salle-s,dc=org" "uid" |\ grep "^uid" | ${pkgs.gnused}/bin/sed -e "s/uid: //" | while read ldapuser; do for user in ${builtins.concatStringsSep " " (builtins.attrNames normalUsers)}; do if [ "$user" = "$ldapuser" ]; then continue 2 fi done ${pkgs.openldap}/bin/ldapdelete -r ${com} uid=$ldapuser,ou=users,dc=salle-s,dc=org done # Subusers if [ -f /var/lib/nixos/sponsored_users ]; then cat /var/lib/nixos/sponsored_users | while read mainUser subUser name; do (${pkgs.openldap}/bin/ldapadd -c ${com} 2>/dev/null >/dev/null || true) <s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedVhost Protocols h2 http/1.1 AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript '' ]; ips = let ips = config.hostEnv.ips.main; in [ips.ip4] ++ (ips.ip6 or []); fallbackVhost = { certName = "quatresaisons"; hosts = [ "quatresaisons.immae.eu" ]; root = pkgs.runCommand "empty" {} "mkdir $out && touch $out/index.html"; extraConfig = [ "DirectoryIndex index.html" ]; }; vhostConfs.salle-s = { certName = "quatresaisons"; addToCerts = true; hosts = [ "salle-s.org" ]; root = toLanding ./quatresaisons/landing.yml; extraConfig = [ '' AllowOverride None Require all granted DirectoryIndex index.html '' ]; }; vhostConfs.tools = { certName = "quatresaisons"; addToCerts = true; hosts = [ "4c.salle-s.org" "quatresaisons.salle-s.org" "quatre-saisons.salle-s.org" ]; root = toLanding ./quatresaisons/landing_4c.yml; extraConfig = [ '' Alias /charte ${serverSpecificConfig.charte_path} AllowOverride None Require all granted DirectoryIndex index.html index.txt AllowOverride None Require all granted DirectoryIndex index.html '' ]; }; }; system.activationScripts.httpd = '' install -d -m 0750 -o wwwrun -g wwwrun /var/lib/php install -d -m 0750 -o wwwrun -g wwwrun /var/lib/php/sessions ''; services.phpfpm = { phpOptions = '' session.save_path = "/var/lib/php/sessions" post_max_size = 20M ; 15 days (seconds) session.gc_maxlifetime = 1296000 ; 30 days (minutes) session.cache_expire = 43200 ''; settings = { log_level = "notice"; }; }; }