X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=nixops%2Fmodules%2Fwebsites%2Ftools%2Ftools%2Fshaarli.nix;fp=nixops%2Fmodules%2Fwebsites%2Ftools%2Ftools%2Fshaarli.nix;h=9f3779f56e68c2aaa5e76601adf138f37146e401;hb=95b20e17b97de1f05392d0c394a5efdc590311a9;hp=0000000000000000000000000000000000000000;hpb=609c29615905e2bc5628a164cea2c28ec70d5d35;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/nixops/modules/websites/tools/tools/shaarli.nix b/nixops/modules/websites/tools/tools/shaarli.nix new file mode 100644 index 0000000..9f3779f --- /dev/null +++ b/nixops/modules/websites/tools/tools/shaarli.nix @@ -0,0 +1,86 @@ +{ lib, env, stdenv, fetchurl }: + +let + varDir = "/var/lib/shaarli"; + shaarli = stdenv.mkDerivation rec { + name = "shaarli-${version}"; + version = "0.10.2"; + + src = fetchurl { + url = "https://github.com/shaarli/Shaarli/releases/download/v${version}/shaarli-v${version}-full.tar.gz"; + sha256 = "0h8sspj7siy3vgpi2i3gdrjcr5935fr4dfwq2zwd70sjx2sh9s78"; + }; + + outputs = [ "out" "doc" ]; + + patches = [ ./shaarli_ldap.patch ]; + + installPhase = '' + rm -r {cache,pagecache,tmp,data}/ + ln -sf ../../../..${varDir}/{cache,pagecache,tmp,data} . + mkdir -p $doc/share/doc + mv doc/ $doc/share/doc/shaarli + mkdir $out/ + cp -R ./* $out + cp .htaccess $out/ + ''; + + meta = with stdenv.lib; { + description = "The personal, minimalist, super-fast, database free, bookmarking service"; + license = licenses.gpl3Plus; + homepage = https://github.com/shaarli/Shaarli; + maintainers = with maintainers; [ schneefux ]; + platforms = platforms.all; + }; + }; +in rec { + activationScript = '' + install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \ + ${varDir}/cache ${varDir}/pagecache ${varDir}/tmp ${varDir}/data \ + ${varDir}/phpSessions + ''; + webRoot = shaarli; + apache = { + user = "wwwrun"; + group = "wwwrun"; + modules = [ "proxy_fcgi" "rewrite" "env" ]; + vhostConf = '' + Alias /Shaarli "${webRoot}" + + + SetEnv SHAARLI_LDAP_PASSWORD "${env.ldap.password}" + SetEnv SHAARLI_LDAP_DN "${env.ldap.dn}" + SetEnv SHAARLI_LDAP_HOST "ldaps://${env.ldap.host}" + SetEnv SHAARLI_LDAP_BASE "${env.ldap.base}" + SetEnv SHAARLI_LDAP_FILTER "${env.ldap.search}" + + DirectoryIndex index.php index.htm index.html + Options Indexes FollowSymLinks MultiViews Includes + AllowOverride All + Require all granted + + SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" + + + ''; + }; + phpFpm = rec { + basedir = builtins.concatStringsSep ":" [ webRoot varDir ]; + socket = "/var/run/phpfpm/shaarli.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] = ShaarliPHPSESSID + php_admin_value[open_basedir] = "${basedir}:/tmp" + php_admin_value[session.save_path] = "${varDir}/phpSessions" + ''; + }; +}