From b44b42a15197813060bf9405d5a07b8b2c699af5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Tue, 7 May 2019 09:06:29 +0200 Subject: [PATCH] Move yourls to pkgs --- .../modules/websites/tools/tools/default.nix | 2 +- .../modules/websites/tools/tools/yourls.nix | 191 ++++++++---------- pkgs/webapps/default.nix | 8 + pkgs/webapps/yourls/default.nix | 24 +++ pkgs/webapps/yourls/plugins/ldap/default.nix | 8 + .../webapps/yourls/plugins/ldap/ldap.json | 0 .../tools => pkgs/webapps/yourls}/yourls.json | 0 7 files changed, 126 insertions(+), 107 deletions(-) create mode 100644 pkgs/webapps/yourls/default.nix create mode 100644 pkgs/webapps/yourls/plugins/ldap/default.nix rename nixops/modules/websites/tools/tools/yourls-ldap-plugin.json => pkgs/webapps/yourls/plugins/ldap/ldap.json (100%) rename {nixops/modules/websites/tools/tools => pkgs/webapps/yourls}/yourls.json (100%) diff --git a/nixops/modules/websites/tools/tools/default.nix b/nixops/modules/websites/tools/tools/default.nix index 262e558..746119b 100644 --- a/nixops/modules/websites/tools/tools/default.nix +++ b/nixops/modules/websites/tools/tools/default.nix @@ -18,7 +18,7 @@ let }; wallabag = pkgs.callPackage ./wallabag.nix { env = myconfig.env.tools.wallabag; }; yourls = pkgs.callPackage ./yourls.nix { - inherit (mylibs) fetchedGithub; + inherit (pkgs.webapps) yourls yourls-plugins; env = myconfig.env.tools.yourls; }; rompr = pkgs.callPackage ./rompr.nix { diff --git a/nixops/modules/websites/tools/tools/yourls.nix b/nixops/modules/websites/tools/tools/yourls.nix index 470fb7b..df1b3a2 100644 --- a/nixops/modules/websites/tools/tools/yourls.nix +++ b/nixops/modules/websites/tools/tools/yourls.nix @@ -1,111 +1,90 @@ -{ lib, env, writeText, stdenv, fetchedGithub }: -let - yourls = let - plugins = { - ldap = stdenv.mkDerivation (fetchedGithub ./yourls-ldap-plugin.json // rec { - installPhase = '' - mkdir -p $out - cp plugin.php $out/ - ''; - }); - }; - in rec { - activationScript = '' - install -m 0755 -o ${apache.user} -g ${apache.group} -d /var/lib/php/sessions/yourls - ''; - keys = [{ - dest = "webapps/tools-yourls"; - user = apache.user; - group = apache.group; - permissions = "0400"; - text = '' - - - SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" - + define( 'LDAPAUTH_USERCACHE_TYPE', 0); + ''; + }]; + webRoot = (yourls.override { yourls_config = "/var/secrets/webapps/tools-yourls"; }).withPlugins + (builtins.attrValues yourls-plugins); + apache = rec { + user = "wwwrun"; + group = "wwwrun"; + modules = [ "proxy_fcgi" ]; + webappName = "tools_yourls"; + root = "/run/current-system/webapps/${webappName}"; + vhostConf = '' + Alias /url "${root}" + + + SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" + - AllowOverride None - Require all granted - - RewriteEngine On - RewriteBase /url/ - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^.*$ /url/yourls-loader.php [L] - - DirectoryIndex index.php - - ''; - }; - phpFpm = rec { - serviceDeps = [ "mysql.service" "openldap.service" ]; - basedir = builtins.concatStringsSep ":" ( - [ webRoot "/var/secrets/webapps/tools-yourls" ] - ++ lib.attrsets.mapAttrsToList (name: value: value) plugins); - socket = "/var/run/phpfpm/yourls.sock"; - pool = '' - listen = ${socket} - user = ${apache.user} - group = ${apache.group} - listen.owner = ${apache.user} - listen.group = ${apache.group} - pm = ondemand - pm.max_children = 60 - pm.process_idle_timeout = 60 + AllowOverride None + Require all granted + + RewriteEngine On + RewriteBase /url/ + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^.*$ /url/yourls-loader.php [L] + + DirectoryIndex index.php + + ''; + }; + phpFpm = rec { + serviceDeps = [ "mysql.service" "openldap.service" ]; + basedir = builtins.concatStringsSep ":" ( + [ webRoot "/var/secrets/webapps/tools-yourls" ] + ++ webRoot.plugins); + socket = "/var/run/phpfpm/yourls.sock"; + pool = '' + listen = ${socket} + user = ${apache.user} + group = ${apache.group} + listen.owner = ${apache.user} + listen.group = ${apache.group} + pm = ondemand + pm.max_children = 60 + pm.process_idle_timeout = 60 - ; Needed to avoid clashes in browser cookies (same domain) - php_value[session.name] = YourlsPHPSESSID - php_admin_value[open_basedir] = "${basedir}:/tmp:/var/lib/php/sessions/yourls" - php_admin_value[session.save_path] = "/var/lib/php/sessions/yourls" - ''; - }; + ; Needed to avoid clashes in browser cookies (same domain) + php_value[session.name] = YourlsPHPSESSID + php_admin_value[open_basedir] = "${basedir}:/tmp:/var/lib/php/sessions/yourls" + php_admin_value[session.save_path] = "/var/lib/php/sessions/yourls" + ''; }; -in - yourls +} diff --git a/pkgs/webapps/default.nix b/pkgs/webapps/default.nix index 1dde9ca..f9ecd4f 100644 --- a/pkgs/webapps/default.nix +++ b/pkgs/webapps/default.nix @@ -49,4 +49,12 @@ rec { phpldapadmin = callPackage ./phpldapadmin {}; rompr = callPackage ./rompr { inherit mylibs; }; + + yourls = callPackage ./yourls { inherit mylibs; }; + yourls-with-plugins = yourls.withPlugins (builtins.attrValues yourls-plugins); + yourls-plugins = let + names = [ "ldap" ]; + in + lib.attrsets.genAttrs names + (name: callPackage (./yourls/plugins + "/${name}") { inherit mylibs; }); } diff --git a/pkgs/webapps/yourls/default.nix b/pkgs/webapps/yourls/default.nix new file mode 100644 index 0000000..cc880cd --- /dev/null +++ b/pkgs/webapps/yourls/default.nix @@ -0,0 +1,24 @@ +{ yourls_config ? "/etc/yourls/config.php", mylibs, stdenv }: +let + withPlugins = plugins: package.overrideAttrs(old: { + name = "${old.name}-with-plugins"; + installPhase = old.installPhase + + builtins.concatStringsSep "\n" ( + map (value: "ln -s ${value} $out/user/plugins/${value.pluginName}") plugins + ); + passthru.plugins = plugins; + passthru.withPlugins = morePlugins: old.withPlugins (morePlugins ++ plugins); + }); + package = stdenv.mkDerivation (mylibs.fetchedGithub ./yourls.json // rec { + installPhase = '' + mkdir -p $out + cp -a */ *.php $out/ + cp sample-robots.txt $out/robots.txt + ln -sf ${yourls_config} $out/includes/config.php + ''; + passthru = { + plugins = []; + inherit withPlugins; + }; + }); +in package diff --git a/pkgs/webapps/yourls/plugins/ldap/default.nix b/pkgs/webapps/yourls/plugins/ldap/default.nix new file mode 100644 index 0000000..01dc6fb --- /dev/null +++ b/pkgs/webapps/yourls/plugins/ldap/default.nix @@ -0,0 +1,8 @@ +{ stdenv, mylibs }: +stdenv.mkDerivation (mylibs.fetchedGithub ./ldap.json // rec { + installPhase = '' + mkdir -p $out + cp plugin.php $out + ''; + passthru.pluginName = "ldap"; +}) diff --git a/nixops/modules/websites/tools/tools/yourls-ldap-plugin.json b/pkgs/webapps/yourls/plugins/ldap/ldap.json similarity index 100% rename from nixops/modules/websites/tools/tools/yourls-ldap-plugin.json rename to pkgs/webapps/yourls/plugins/ldap/ldap.json diff --git a/nixops/modules/websites/tools/tools/yourls.json b/pkgs/webapps/yourls/yourls.json similarity index 100% rename from nixops/modules/websites/tools/tools/yourls.json rename to pkgs/webapps/yourls/yourls.json -- 2.41.0