]>
Commit | Line | Data |
---|---|---|
95b20e17 IB |
1 | { lib, env, stdenv, fetchurl }: |
2 | ||
3 | let | |
4 | varDir = "/var/lib/shaarli"; | |
5 | shaarli = stdenv.mkDerivation rec { | |
6 | name = "shaarli-${version}"; | |
7 | version = "0.10.2"; | |
8 | ||
9 | src = fetchurl { | |
10 | url = "https://github.com/shaarli/Shaarli/releases/download/v${version}/shaarli-v${version}-full.tar.gz"; | |
11 | sha256 = "0h8sspj7siy3vgpi2i3gdrjcr5935fr4dfwq2zwd70sjx2sh9s78"; | |
12 | }; | |
13 | ||
14 | outputs = [ "out" "doc" ]; | |
15 | ||
16 | patches = [ ./shaarli_ldap.patch ]; | |
17 | ||
18 | installPhase = '' | |
19 | rm -r {cache,pagecache,tmp,data}/ | |
3c8d7f87 | 20 | ln -sf ${varDir}/{cache,pagecache,tmp,data} . |
95b20e17 IB |
21 | mkdir -p $doc/share/doc |
22 | mv doc/ $doc/share/doc/shaarli | |
23 | mkdir $out/ | |
24 | cp -R ./* $out | |
25 | cp .htaccess $out/ | |
26 | ''; | |
27 | ||
28 | meta = with stdenv.lib; { | |
29 | description = "The personal, minimalist, super-fast, database free, bookmarking service"; | |
30 | license = licenses.gpl3Plus; | |
31 | homepage = https://github.com/shaarli/Shaarli; | |
32 | maintainers = with maintainers; [ schneefux ]; | |
33 | platforms = platforms.all; | |
34 | }; | |
35 | }; | |
36 | in rec { | |
37 | activationScript = '' | |
38 | install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \ | |
39 | ${varDir}/cache ${varDir}/pagecache ${varDir}/tmp ${varDir}/data \ | |
40 | ${varDir}/phpSessions | |
41 | ''; | |
42 | webRoot = shaarli; | |
a95ab089 | 43 | apache = rec { |
95b20e17 IB |
44 | user = "wwwrun"; |
45 | group = "wwwrun"; | |
46 | modules = [ "proxy_fcgi" "rewrite" "env" ]; | |
a95ab089 IB |
47 | webappName = "tools_shaarli"; |
48 | root = "/run/current-system/webapps/${webappName}"; | |
95b20e17 | 49 | vhostConf = '' |
a95ab089 | 50 | Alias /Shaarli "${root}" |
95b20e17 | 51 | |
a95ab089 | 52 | <Directory "${root}"> |
95b20e17 IB |
53 | SetEnv SHAARLI_LDAP_PASSWORD "${env.ldap.password}" |
54 | SetEnv SHAARLI_LDAP_DN "${env.ldap.dn}" | |
55 | SetEnv SHAARLI_LDAP_HOST "ldaps://${env.ldap.host}" | |
56 | SetEnv SHAARLI_LDAP_BASE "${env.ldap.base}" | |
57 | SetEnv SHAARLI_LDAP_FILTER "${env.ldap.search}" | |
58 | ||
59 | DirectoryIndex index.php index.htm index.html | |
60 | Options Indexes FollowSymLinks MultiViews Includes | |
61 | AllowOverride All | |
62 | Require all granted | |
63 | <FilesMatch "\.php$"> | |
64 | SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" | |
65 | </FilesMatch> | |
66 | </Directory> | |
67 | ''; | |
68 | }; | |
69 | phpFpm = rec { | |
70 | basedir = builtins.concatStringsSep ":" [ webRoot varDir ]; | |
71 | socket = "/var/run/phpfpm/shaarli.sock"; | |
72 | pool = '' | |
73 | listen = ${socket} | |
74 | user = ${apache.user} | |
75 | group = ${apache.group} | |
76 | listen.owner = ${apache.user} | |
77 | listen.group = ${apache.group} | |
78 | pm = ondemand | |
79 | pm.max_children = 60 | |
80 | pm.process_idle_timeout = 60 | |
81 | ||
82 | ; Needed to avoid clashes in browser cookies (same domain) | |
83 | php_value[session.name] = ShaarliPHPSESSID | |
84 | php_admin_value[open_basedir] = "${basedir}:/tmp" | |
85 | php_admin_value[session.save_path] = "${varDir}/phpSessions" | |
86 | ''; | |
87 | }; | |
88 | } |