aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2019-05-07 15:02:33 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2019-05-07 15:02:33 +0200
commit86663f1789aecdb62e44a4be46e0ed111b795a09 (patch)
tree80789e781d261ba800ee99b2525a106449d4755b
parentfffbbb5623649ca7c7b32b74558a26ec5cf11abb (diff)
downloadNix-86663f1789aecdb62e44a4be46e0ed111b795a09.tar.gz
Nix-86663f1789aecdb62e44a4be46e0ed111b795a09.tar.zst
Nix-86663f1789aecdb62e44a4be46e0ed111b795a09.zip
Move ttrss to pkgs
-rw-r--r--nixops/modules/websites/tools/tools/default.nix2
-rw-r--r--nixops/modules/websites/tools/tools/ttrss.nix304
-rw-r--r--pkgs/webapps/default.nix13
-rw-r--r--pkgs/webapps/ttrss/default.nix30
-rw-r--r--pkgs/webapps/ttrss/plugins/af_feedmod/af_feedmod.json (renamed from nixops/modules/websites/tools/tools/ttrss-af_feedmod.json)0
-rw-r--r--pkgs/webapps/ttrss/plugins/af_feedmod/default.nix9
-rw-r--r--pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch (renamed from nixops/modules/websites/tools/tools/ttrss-af-feedmod_type_replace.patch)0
-rw-r--r--pkgs/webapps/ttrss/plugins/auth_ldap/auth-ldap.json (renamed from nixops/modules/websites/tools/tools/ttrss-auth-ldap.json)0
-rw-r--r--pkgs/webapps/ttrss/plugins/auth_ldap/default.nix8
-rw-r--r--pkgs/webapps/ttrss/plugins/feediron/default.nix9
-rw-r--r--pkgs/webapps/ttrss/plugins/feediron/feediron.json (renamed from nixops/modules/websites/tools/tools/ttrss-feediron.json)0
-rw-r--r--pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch (renamed from nixops/modules/websites/tools/tools/ttrss-feediron_json_reformat.patch)0
-rw-r--r--pkgs/webapps/ttrss/plugins/ff_instagram/default.nix8
-rw-r--r--pkgs/webapps/ttrss/plugins/ff_instagram/ff_instagram.json (renamed from nixops/modules/websites/tools/tools/ttrss-ff_instagram.json)0
-rw-r--r--pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix8
-rw-r--r--pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/tumblr_gdpr_ua.json (renamed from nixops/modules/websites/tools/tools/ttrss-tumblr_gdpr_ua.json)0
-rw-r--r--pkgs/webapps/ttrss/tt-rss.json (renamed from nixops/modules/websites/tools/tools/tt-rss.json)0
17 files changed, 213 insertions, 178 deletions
diff --git a/nixops/modules/websites/tools/tools/default.nix b/nixops/modules/websites/tools/tools/default.nix
index 433927e..22588fb 100644
--- a/nixops/modules/websites/tools/tools/default.nix
+++ b/nixops/modules/websites/tools/tools/default.nix
@@ -5,7 +5,7 @@ let
5 env = myconfig.env.tools.ympd; 5 env = myconfig.env.tools.ympd;
6 }; 6 };
7 ttrss = pkgs.callPackage ./ttrss.nix { 7 ttrss = pkgs.callPackage ./ttrss.nix {
8 inherit (mylibs) fetchedGithub fetchedGit; 8 inherit (pkgs.webapps) ttrss ttrss-plugins;
9 env = myconfig.env.tools.ttrss; 9 env = myconfig.env.tools.ttrss;
10 }; 10 };
11 roundcubemail = pkgs.callPackage ./roundcubemail.nix { 11 roundcubemail = pkgs.callPackage ./roundcubemail.nix {
diff --git a/nixops/modules/websites/tools/tools/ttrss.nix b/nixops/modules/websites/tools/tools/ttrss.nix
index e6cad56..05c8cab 100644
--- a/nixops/modules/websites/tools/tools/ttrss.nix
+++ b/nixops/modules/websites/tools/tools/ttrss.nix
@@ -1,181 +1,131 @@
1{ lib, php, env, writeText, stdenv, fetchedGit, fetchedGithub }: 1{ php, env, ttrss, ttrss-plugins }:
2let 2rec {
3 ttrss = let 3 varDir = "/var/lib/ttrss";
4 plugins = { 4 activationScript = {
5 auth_ldap = stdenv.mkDerivation (fetchedGithub ./ttrss-auth-ldap.json // rec { 5 deps = [ "wrappers" ];
6 installPhase = '' 6 text = ''
7 mkdir $out 7 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
8 cp plugins/auth_ldap/init.php $out 8 ${varDir}/lock ${varDir}/cache ${varDir}/feed-icons
9 ''; 9 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/cache/export/ \
10 }); 10 ${varDir}/cache/feeds/ \
11 af_feedmod = stdenv.mkDerivation (fetchedGithub ./ttrss-af_feedmod.json // rec { 11 ${varDir}/cache/images/ \
12 patches = [ ./ttrss-af-feedmod_type_replace.patch ]; 12 ${varDir}/cache/js/ \
13 installPhase = '' 13 ${varDir}/cache/simplepie/ \
14 mkdir $out 14 ${varDir}/cache/upload/
15 cp init.php $out 15 touch ${varDir}/feed-icons/index.html
16 ''; 16 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
17 }); 17 '';
18 feediron = stdenv.mkDerivation (fetchedGithub ./ttrss-feediron.json // rec { 18 };
19 patches = [ ./ttrss-feediron_json_reformat.patch ]; 19 keys = [{
20 installPhase = '' 20 dest = "webapps/tools-ttrss";
21 mkdir $out 21 user = apache.user;
22 cp -a . $out 22 group = apache.group;
23 ''; 23 permissions = "0400";
24 }); 24 text = ''
25 ff_instagram = stdenv.mkDerivation (fetchedGithub ./ttrss-ff_instagram.json // rec { 25 <?php
26 installPhase = '' 26
27 mkdir $out 27 define('PHP_EXECUTABLE', '${php}/bin/php');
28 cp -a . $out 28
29 ''; 29 define('LOCK_DIRECTORY', 'lock');
30 }); 30 define('CACHE_DIR', 'cache');
31 tumblr_gdpr_ua = stdenv.mkDerivation (fetchedGithub ./ttrss-tumblr_gdpr_ua.json // rec { 31 define('ICONS_DIR', 'feed-icons');
32 installPhase = '' 32 define('ICONS_URL', 'feed-icons');
33 mkdir $out 33 define('SELF_URL_PATH', 'https://tools.immae.eu/ttrss/');
34 cp -a . $out 34
35 ''; 35 define('MYSQL_CHARSET', 'UTF8');
36 }); 36
37 }; 37 define('DB_TYPE', 'pgsql');
38 in rec { 38 define('DB_HOST', '${env.postgresql.socket}');
39 varDir = "/var/lib/ttrss"; 39 define('DB_USER', '${env.postgresql.user}');
40 activationScript = { 40 define('DB_NAME', '${env.postgresql.database}');
41 deps = [ "wrappers" ]; 41 define('DB_PASS', '${env.postgresql.password}');
42 text = '' 42 define('DB_PORT', '${env.postgresql.port}');
43 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \ 43
44 ${varDir}/lock ${varDir}/cache ${varDir}/feed-icons 44 define('AUTH_AUTO_CREATE', true);
45 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/cache/export/ \ 45 define('AUTH_AUTO_LOGIN', true);
46 ${varDir}/cache/feeds/ \ 46
47 ${varDir}/cache/images/ \ 47 define('SINGLE_USER_MODE', false);
48 ${varDir}/cache/js/ \ 48
49 ${varDir}/cache/simplepie/ \ 49 define('SIMPLE_UPDATE_MODE', false);
50 ${varDir}/cache/upload/ 50 define('CHECK_FOR_UPDATES', true);
51 touch ${varDir}/feed-icons/index.html 51
52 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions 52 define('FORCE_ARTICLE_PURGE', 0);
53 define('SESSION_COOKIE_LIFETIME', 60*60*24*120);
54 define('ENABLE_GZIP_OUTPUT', false);
55
56 define('PLUGINS', 'auth_ldap, note, instances');
57
58 define('LOG_DESTINATION', ''');
59 define('CONFIG_VERSION', 26);
60
61
62 define('SPHINX_SERVER', 'localhost:9312');
63 define('SPHINX_INDEX', 'ttrss, delta');
64
65 define('ENABLE_REGISTRATION', false);
66 define('REG_NOTIFY_ADDRESS', 'ttrss@tools.immae.eu');
67 define('REG_MAX_USERS', 10);
68
69 define('SMTP_FROM_NAME', 'Tiny Tiny RSS');
70 define('SMTP_FROM_ADDRESS', 'ttrss@tools.immae.eu');
71 define('DIGEST_SUBJECT', '[tt-rss] New headlines for last 24 hours');
72
73 define('LDAP_AUTH_SERVER_URI', 'ldap://ldap.immae.eu:389/');
74 define('LDAP_AUTH_USETLS', TRUE);
75 define('LDAP_AUTH_ALLOW_UNTRUSTED_CERT', TRUE);
76 define('LDAP_AUTH_BASEDN', 'dc=immae,dc=eu');
77 define('LDAP_AUTH_ANONYMOUSBEFOREBIND', FALSE);
78 define('LDAP_AUTH_SEARCHFILTER', '(&(memberOf=cn=users,cn=ttrss,ou=services,dc=immae,dc=eu)(|(cn=???)(uid=???)(&(uid:dn:=???)(ou=ttrss))))');
79
80 define('LDAP_AUTH_BINDDN', 'cn=ttrss,ou=services,dc=immae,dc=eu');
81 define('LDAP_AUTH_BINDPW', '${env.ldap.password}');
82 define('LDAP_AUTH_LOGIN_ATTRIB', 'immaeTtrssLogin');
83
84 define('LDAP_AUTH_LOG_ATTEMPTS', FALSE);
85 define('LDAP_AUTH_DEBUG', FALSE);
53 ''; 86 '';
54 }; 87 }];
55 keys = [{ 88 webRoot = (ttrss.override { ttrss_config = "/var/secrets/webapps/tools-ttrss"; }).withPlugins (builtins.attrValues ttrss-plugins);
56 dest = "webapps/tools-ttrss"; 89 apache = rec {
57 user = apache.user; 90 user = "wwwrun";
58 group = apache.group; 91 group = "wwwrun";
59 permissions = "0400"; 92 modules = [ "proxy_fcgi" ];
60 text = '' 93 webappName = "tools_ttrss";
61 <?php 94 root = "/run/current-system/webapps/${webappName}";
62 95 vhostConf = ''
63 define('PHP_EXECUTABLE', '${php}/bin/php'); 96 Alias /ttrss "${root}"
64 97 <Directory "${root}">
65 define('LOCK_DIRECTORY', 'lock'); 98 DirectoryIndex index.php
66 define('CACHE_DIR', 'cache'); 99 <FilesMatch "\.php$">
67 define('ICONS_DIR', 'feed-icons'); 100 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
68 define('ICONS_URL', 'feed-icons'); 101 </FilesMatch>
69 define('SELF_URL_PATH', 'https://tools.immae.eu/ttrss/'); 102
70 103 AllowOverride All
71 define('MYSQL_CHARSET', 'UTF8'); 104 Options FollowSymlinks
72 105 Require all granted
73 define('DB_TYPE', 'pgsql'); 106 </Directory>
74 define('DB_HOST', '${env.postgresql.socket}');
75 define('DB_USER', '${env.postgresql.user}');
76 define('DB_NAME', '${env.postgresql.database}');
77 define('DB_PASS', '${env.postgresql.password}');
78 define('DB_PORT', '${env.postgresql.port}');
79
80 define('AUTH_AUTO_CREATE', true);
81 define('AUTH_AUTO_LOGIN', true);
82
83 define('SINGLE_USER_MODE', false);
84
85 define('SIMPLE_UPDATE_MODE', false);
86 define('CHECK_FOR_UPDATES', true);
87
88 define('FORCE_ARTICLE_PURGE', 0);
89 define('SESSION_COOKIE_LIFETIME', 60*60*24*120);
90 define('ENABLE_GZIP_OUTPUT', false);
91
92 define('PLUGINS', 'auth_ldap, note, instances');
93
94 define('LOG_DESTINATION', ''');
95 define('CONFIG_VERSION', 26);
96
97
98 define('SPHINX_SERVER', 'localhost:9312');
99 define('SPHINX_INDEX', 'ttrss, delta');
100
101 define('ENABLE_REGISTRATION', false);
102 define('REG_NOTIFY_ADDRESS', 'ttrss@tools.immae.eu');
103 define('REG_MAX_USERS', 10);
104
105 define('SMTP_FROM_NAME', 'Tiny Tiny RSS');
106 define('SMTP_FROM_ADDRESS', 'ttrss@tools.immae.eu');
107 define('DIGEST_SUBJECT', '[tt-rss] New headlines for last 24 hours');
108
109 define('LDAP_AUTH_SERVER_URI', 'ldap://ldap.immae.eu:389/');
110 define('LDAP_AUTH_USETLS', TRUE);
111 define('LDAP_AUTH_ALLOW_UNTRUSTED_CERT', TRUE);
112 define('LDAP_AUTH_BASEDN', 'dc=immae,dc=eu');
113 define('LDAP_AUTH_ANONYMOUSBEFOREBIND', FALSE);
114 define('LDAP_AUTH_SEARCHFILTER', '(&(memberOf=cn=users,cn=ttrss,ou=services,dc=immae,dc=eu)(|(cn=???)(uid=???)(&(uid:dn:=???)(ou=ttrss))))');
115
116 define('LDAP_AUTH_BINDDN', 'cn=ttrss,ou=services,dc=immae,dc=eu');
117 define('LDAP_AUTH_BINDPW', '${env.ldap.password}');
118 define('LDAP_AUTH_LOGIN_ATTRIB', 'immaeTtrssLogin');
119
120 define('LDAP_AUTH_LOG_ATTEMPTS', FALSE);
121 define('LDAP_AUTH_DEBUG', FALSE);
122 '';
123 }];
124 webRoot = stdenv.mkDerivation (fetchedGit ./tt-rss.json // rec {
125 buildPhase = ''
126 rm -rf lock feed-icons cache
127 ln -sf ${varDir}/{lock,feed-icons,cache} .
128 ''; 107 '';
129 installPhase = '' 108 };
130 cp -a . $out 109 phpFpm = rec {
131 ln -s /var/secrets/webapps/tools-ttrss $out/config.php 110 serviceDeps = [ "postgresql.service" "openldap.service" ];
132 ${builtins.concatStringsSep "\n" ( 111 basedir = builtins.concatStringsSep ":" (
133 lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/plugins/${name}") plugins 112 [ webRoot "/var/secrets/webapps/tools-ttrss" varDir ]
134 )} 113 ++ webRoot.plugins);
114 socket = "/var/run/phpfpm/ttrss.sock";
115 pool = ''
116 listen = ${socket}
117 user = ${apache.user}
118 group = ${apache.group}
119 listen.owner = ${apache.user}
120 listen.group = ${apache.group}
121 pm = ondemand
122 pm.max_children = 60
123 pm.process_idle_timeout = 60
124
125 ; Needed to avoid clashes in browser cookies (same domain)
126 php_value[session.name] = TtrssPHPSESSID
127 php_admin_value[open_basedir] = "${basedir}:/tmp"
128 php_admin_value[session.save_path] = "${varDir}/phpSessions"
135 ''; 129 '';
136 });
137 apache = rec {
138 user = "wwwrun";
139 group = "wwwrun";
140 modules = [ "proxy_fcgi" ];
141 webappName = "tools_ttrss";
142 root = "/run/current-system/webapps/${webappName}";
143 vhostConf = ''
144 Alias /ttrss "${root}"
145 <Directory "${root}">
146 DirectoryIndex index.php
147 <FilesMatch "\.php$">
148 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
149 </FilesMatch>
150
151 AllowOverride All
152 Options FollowSymlinks
153 Require all granted
154 </Directory>
155 '';
156 };
157 phpFpm = rec {
158 serviceDeps = [ "postgresql.service" "openldap.service" ];
159 basedir = builtins.concatStringsSep ":" (
160 [ webRoot "/var/secrets/webapps/tools-ttrss" varDir ]
161 ++ lib.attrsets.mapAttrsToList (name: value: value) plugins);
162 socket = "/var/run/phpfpm/ttrss.sock";
163 pool = ''
164 listen = ${socket}
165 user = ${apache.user}
166 group = ${apache.group}
167 listen.owner = ${apache.user}
168 listen.group = ${apache.group}
169 pm = ondemand
170 pm.max_children = 60
171 pm.process_idle_timeout = 60
172
173 ; Needed to avoid clashes in browser cookies (same domain)
174 php_value[session.name] = TtrssPHPSESSID
175 php_admin_value[open_basedir] = "${basedir}:/tmp"
176 php_admin_value[session.save_path] = "${varDir}/phpSessions"
177 '';
178 };
179 }; 130 };
180in 131}
181 ttrss
diff --git a/pkgs/webapps/default.nix b/pkgs/webapps/default.nix
index 073905c..a4e4f87 100644
--- a/pkgs/webapps/default.nix
+++ b/pkgs/webapps/default.nix
@@ -67,6 +67,19 @@ rec {
67 lib.attrsets.genAttrs names 67 lib.attrsets.genAttrs names
68 (name: callPackage (./roundcubemail/plugins + "/${name}") { buildPlugin = roundcubemail.buildPlugin; }); 68 (name: callPackage (./roundcubemail/plugins + "/${name}") { buildPlugin = roundcubemail.buildPlugin; });
69 69
70 ttrss = callPackage ./ttrss { inherit mylibs; };
71 ttrss-with-plugins = ttrss.withPlugins (builtins.attrValues ttrss-plugins);
72 ttrss-plugins = let
73 names = [ "auth_ldap" "af_feedmod" "feediron" "ff_instagram" "tumblr_gdpr_ua" ];
74 patched = [ "af_feedmod" "feediron" ];
75 in
76 lib.attrsets.genAttrs names
77 (name: callPackage (./ttrss/plugins + "/${name}") (
78 { inherit mylibs; } //
79 (if builtins.elem name patched then { patched = true; } else {})
80 )
81 );
82
70 yourls = callPackage ./yourls { inherit mylibs; }; 83 yourls = callPackage ./yourls { inherit mylibs; };
71 yourls-with-plugins = yourls.withPlugins (builtins.attrValues yourls-plugins); 84 yourls-with-plugins = yourls.withPlugins (builtins.attrValues yourls-plugins);
72 yourls-plugins = let 85 yourls-plugins = let
diff --git a/pkgs/webapps/ttrss/default.nix b/pkgs/webapps/ttrss/default.nix
new file mode 100644
index 0000000..0ce2f94
--- /dev/null
+++ b/pkgs/webapps/ttrss/default.nix
@@ -0,0 +1,30 @@
1{ ttrss_config ? "/etc/ttrss/config.php"
2, varDir ? "/var/lib/ttrss"
3, stdenv, mylibs }:
4let
5 withPlugins = plugins: package.overrideAttrs(old: rec {
6 name = "${old.name}-with-plugins";
7 installPhase = old.installPhase +
8 builtins.concatStringsSep "\n" (
9 map (value: "ln -s ${value} $out/plugins/${value.pluginName}") plugins
10 );
11 passthru = old.passthru // {
12 inherit plugins;
13 withPlugins = morePlugins: old.withPlugins (morePlugins ++ plugins);
14 };
15 });
16 package = stdenv.mkDerivation (mylibs.fetchedGit ./tt-rss.json // rec {
17 buildPhase = ''
18 rm -rf lock feed-icons cache
19 ln -sf ${varDir}/{lock,feed-icons,cache} .
20 '';
21 installPhase = ''
22 cp -a . $out
23 ln -s ${ttrss_config} $out/config.php
24 '';
25 passthru = {
26 plugins = [];
27 inherit withPlugins;
28 };
29 });
30in package
diff --git a/nixops/modules/websites/tools/tools/ttrss-af_feedmod.json b/pkgs/webapps/ttrss/plugins/af_feedmod/af_feedmod.json
index e57fcce..e57fcce 100644
--- a/nixops/modules/websites/tools/tools/ttrss-af_feedmod.json
+++ b/pkgs/webapps/ttrss/plugins/af_feedmod/af_feedmod.json
diff --git a/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix b/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix
new file mode 100644
index 0000000..8512be3
--- /dev/null
+++ b/pkgs/webapps/ttrss/plugins/af_feedmod/default.nix
@@ -0,0 +1,9 @@
1{ patched ? false, stdenv, mylibs, lib }:
2stdenv.mkDerivation (mylibs.fetchedGithub ./af_feedmod.json // {
3 patches = lib.optionals patched [ ./type_replace.patch ];
4 installPhase = ''
5 mkdir $out
6 cp init.php $out
7 '';
8 passthru.pluginName = "af_feedmod";
9})
diff --git a/nixops/modules/websites/tools/tools/ttrss-af-feedmod_type_replace.patch b/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch
index d622577..d622577 100644
--- a/nixops/modules/websites/tools/tools/ttrss-af-feedmod_type_replace.patch
+++ b/pkgs/webapps/ttrss/plugins/af_feedmod/type_replace.patch
diff --git a/nixops/modules/websites/tools/tools/ttrss-auth-ldap.json b/pkgs/webapps/ttrss/plugins/auth_ldap/auth-ldap.json
index c8aaab5..c8aaab5 100644
--- a/nixops/modules/websites/tools/tools/ttrss-auth-ldap.json
+++ b/pkgs/webapps/ttrss/plugins/auth_ldap/auth-ldap.json
diff --git a/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix b/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix
new file mode 100644
index 0000000..424a9f7
--- /dev/null
+++ b/pkgs/webapps/ttrss/plugins/auth_ldap/default.nix
@@ -0,0 +1,8 @@
1{ stdenv, mylibs }:
2stdenv.mkDerivation (mylibs.fetchedGithub ./auth-ldap.json // {
3 installPhase = ''
4 mkdir $out
5 cp plugins/auth_ldap/init.php $out
6 '';
7 passthru.pluginName = "auth_ldap";
8})
diff --git a/pkgs/webapps/ttrss/plugins/feediron/default.nix b/pkgs/webapps/ttrss/plugins/feediron/default.nix
new file mode 100644
index 0000000..80bfda4
--- /dev/null
+++ b/pkgs/webapps/ttrss/plugins/feediron/default.nix
@@ -0,0 +1,9 @@
1{ patched ? false, stdenv, mylibs, lib }:
2stdenv.mkDerivation (mylibs.fetchedGithub ./feediron.json // {
3 patches = lib.optionals patched [ ./json_reformat.patch ];
4 installPhase = ''
5 mkdir $out
6 cp -a . $out
7 '';
8 passthru.pluginName = "feediron";
9})
diff --git a/nixops/modules/websites/tools/tools/ttrss-feediron.json b/pkgs/webapps/ttrss/plugins/feediron/feediron.json
index 5dbec92..5dbec92 100644
--- a/nixops/modules/websites/tools/tools/ttrss-feediron.json
+++ b/pkgs/webapps/ttrss/plugins/feediron/feediron.json
diff --git a/nixops/modules/websites/tools/tools/ttrss-feediron_json_reformat.patch b/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch
index e1c44d9..e1c44d9 100644
--- a/nixops/modules/websites/tools/tools/ttrss-feediron_json_reformat.patch
+++ b/pkgs/webapps/ttrss/plugins/feediron/json_reformat.patch
diff --git a/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix b/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix
new file mode 100644
index 0000000..3540f73
--- /dev/null
+++ b/pkgs/webapps/ttrss/plugins/ff_instagram/default.nix
@@ -0,0 +1,8 @@
1{ stdenv, mylibs }:
2stdenv.mkDerivation (mylibs.fetchedGithub ./ff_instagram.json // {
3 installPhase = ''
4 mkdir $out
5 cp -a . $out
6 '';
7 passthru.pluginName = "ff_instagram";
8})
diff --git a/nixops/modules/websites/tools/tools/ttrss-ff_instagram.json b/pkgs/webapps/ttrss/plugins/ff_instagram/ff_instagram.json
index 1f241b9..1f241b9 100644
--- a/nixops/modules/websites/tools/tools/ttrss-ff_instagram.json
+++ b/pkgs/webapps/ttrss/plugins/ff_instagram/ff_instagram.json
diff --git a/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix b/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix
new file mode 100644
index 0000000..2cf3e05
--- /dev/null
+++ b/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/default.nix
@@ -0,0 +1,8 @@
1{ stdenv, mylibs }:
2stdenv.mkDerivation (mylibs.fetchedGithub ./tumblr_gdpr_ua.json // {
3 installPhase = ''
4 mkdir $out
5 cp -a . $out
6 '';
7 passthru.pluginName = "tumblr_gdpr_ua";
8})
diff --git a/nixops/modules/websites/tools/tools/ttrss-tumblr_gdpr_ua.json b/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/tumblr_gdpr_ua.json
index eafbcfe..eafbcfe 100644
--- a/nixops/modules/websites/tools/tools/ttrss-tumblr_gdpr_ua.json
+++ b/pkgs/webapps/ttrss/plugins/tumblr_gdpr_ua/tumblr_gdpr_ua.json
diff --git a/nixops/modules/websites/tools/tools/tt-rss.json b/pkgs/webapps/ttrss/tt-rss.json
index e2731b0..e2731b0 100644
--- a/nixops/modules/websites/tools/tools/tt-rss.json
+++ b/pkgs/webapps/ttrss/tt-rss.json