This repository has no description
8.3 kB
287 lines
1{ config, pkgs, ... }:
2let
3
4 weechat-configured = pkgs.weechat-declarative.override {
5 config = {
6 scripts = [
7 pkgs.weechatScripts.weechat-matrix
8 pkgs.weechatScripts.wee-slack
9 ];
10 settings = {
11 irc.server_default.nicks = [
12 "lassulus"
13 "hackulus"
14 ];
15 irc.server.bitlbee = {
16 addresses = "localhost/6666";
17 command = "msg &bitlbee identify \${sec.data.bitlbee}";
18 };
19 irc.server.hackint = {
20 addresses = "irc.hackint.org/6697";
21 autojoin = [
22 "#c3-gsm"
23 "#panthermoderns"
24 "#feldoffice"
25 "#36c3"
26 "#cccac"
27 "#nixos"
28 "#krebs"
29 "#krebstel"
30 "#c-base"
31 "#afra"
32 "#tvl"
33 "#tvix-dev"
34 "#eloop"
35 "#systemdultras"
36 "#rc3"
37 "#krebs-announce"
38 "#the_playlist"
39 "#germany"
40 "#hackint"
41 "#dezentrale"
42 "#hackerfleet \${sec.data.c3-gsm}" # TODO support channel passwords in a cooler way
43 ];
44 ssl = true;
45 sasl_fail = "reconnect";
46 sasl_username = "lassulus";
47 sasl_password = "\${sec.data.hackint_sasl}";
48 };
49 irc.server.r = {
50 addresses = "irc.r";
51 autojoin = [
52 "#xxx"
53 "#autowifi"
54 "#brockman"
55 "#flix"
56 "#kollkoll"
57 "#noise"
58 "#mukke"
59 ];
60 sasl_fail = "reconnect";
61 sasl_username = "lassulus";
62 sasl_password = "\${sec.data.r_sasl}";
63 anti_flood_prio_high = 0;
64 anti_flood_prio_low = 0;
65 };
66 irc.server.libera = {
67 addresses = "irc.libera.chat/6697";
68 autojoin = [
69 "#shackspace"
70 "#nixos"
71 "#krebs"
72 "#dezentrale"
73 "#tinc"
74 "#nixos-de"
75 "#fysi"
76 "#hillhacks"
77 "#nixos-rc3"
78 "#binaergewitter"
79 "#hackerfleet"
80 "#weechat"
81 ];
82 ssl = true;
83 sasl_username = "lassulus";
84 sasl_fail = "reconnect";
85 sasl_password = "\${sec.data.libera_sasl}";
86 };
87 irc.server.news = {
88 addresses = "news.r";
89 autojoin = [
90 "#all"
91 "#aluhut"
92 "#querdenkos"
93 "#news"
94 "#drachengame"
95 ];
96 anti_flood_prio_high = 0;
97 anti_flood_prio_low = 0;
98 };
99 matrix.server.lassulus = {
100 address = "matrix.lassul.us";
101 username = "lassulus";
102 password = "\${sec.data.matrix_lassulus}";
103 device_name = config.networking.hostName;
104 };
105 plugins.var.python.go.short_name = true;
106 plugins.var.python.go.short_name_server = true;
107 plugins.var.python.go.fuzzy_search = true;
108 relay.network.password = "xxx"; # secret?
109 relay.port.weechat = 9998;
110 relay.weechat.commands = "*,!exec,!quit";
111 weechat.look.buffer_time_format = "%m-%d_%H:%M:%S";
112 weechat.look.item_time_format = "%m-%d_%H:%M:%S";
113 irc.look.color_nicks_in_names = true;
114 irc.look.color_nicks_in_nicklist = true;
115 logger.file.mask = "$plugin.$name/%Y-%m-%d.weechatlog";
116 logger.file.path = "/var/state/weechat_logs";
117 logger.look.backlog = 1000;
118 weechat.notify.irc.news."#all" = "highlight";
119
120 # setting logger levels for channels is currently not possible declarativly
121 # because of already defined
122 logger.level.core.weechat = 0;
123 logger.level.irc = 3;
124 logger.level.python = 3;
125 weechat.bar.title.color_bg = 0;
126 weechat.bar.status.color_bg = 0;
127 alias.cmd.reload = "exec -oc cat /etc/weechat.set";
128 script.scripts.download_enabled = true;
129 weechat.look.prefix_align = "left";
130 weechat.look.prefix_align_max = 20;
131 irc.look.server_buffer = "independent";
132 matrix.look.server_buffer = "independent";
133 weechat.bar.buflist.size_max = 20;
134 weechat.color.chat_nick_colors = [
135 1
136 2
137 3
138 4
139 5
140 6
141 9
142 10
143 11
144 12
145 13
146 14
147 28
148 29
149 30
150 31
151 32
152 33
153 34
154 35
155 36
156 37
157 38
158 39
159 70
160 94
161 101
162 102
163 103
164 104
165 105
166 106
167 107
168 130
169 131
170 133
171 134
172 135
173 136
174 137
175 140
176 141
177 142
178 143
179 160
180 161
181 162
182 163
183 165
184 166
185 167
186 168
187 169
188 170
189 171
190 172
191 173
192 174
193 175
194 196
195 197
196 198
197 199
198 200
199 201
200 202
201 203
202 204
203 205
204 206
205 208
206 209
207 209
208 210
209 211
210 212
211 ];
212 };
213 extraCommands = ''
214 /script upgrade
215 /script install go.py
216 /script install nickregain.pl
217 /script install autosort.py
218 /key bind meta-q /go
219 /key bind meta-t /bar toggle nicklist
220 /key bind meta-y /bar toggle buflist
221 /filter addreplace irc_smart * irc_smart_filter *
222 /filter addreplace playlist_topic irc.*.#the_playlist irc_topic *
223 /filter addreplace xxx_joinpart irc.r.#xxx irc_join,irc_part,irc_quit *
224 /set logger.level.irc.news 0
225 /set logger.level.python.server.nixos_dev = 0;
226 /set logger.level.irc.hackint.#the_playlist = 0;
227 /connect bitlbee
228 /connect r
229 /connect news
230 /connect libera
231 /connect hackint
232 /matrix connect nixos_dev
233 /matrix connect lassulus
234 '';
235 files."sec.conf" = toString (
236 pkgs.writeText "sec.conf" ''
237 [crypt]
238 cipher = aes256
239 hash_algo = sha256
240 passphrase_command = "cat $CREDENTIALS_DIRECTORY/WEECHAT_PASSPHRASE"
241 salt = on
242
243 [data]
244 __passphrase__ = on
245 hackint_sasl = "5CA242E92E7A09B180711B50C4AE2E65C42934EB4E584EC82BC1281D8C72CD411D590C16CC435687C0DA13759873CC"
246 libera_sasl = "9500B5AC3B29F9CAA273F1B89DC99550E038AF95C4B47442B1FB4CB9F0D6B86B26015988AD39E642CA9C4A78DED7F42D1F409B268C93E778"
247 r_sasl = "CB6FB1421ED5A9094CD2C05462DB1FA87C4A675628ABD9AEC9928A1A6F3F96C07D9F26472331BAF80B7B73270680EB1BBEFD"
248 c3-gsm = "C49DD845900CFDFA93EEBCE4F1ABF4A963EF6082B7DA6410FA701CC77A04BB6C201FCB864988C4F2B97ED7D44D5A28F162"
249 bitlbee = "814ECAC59D9CF6E8340B566563E5D7E92AB92209B49C1EDE4CAAC32DD0DF1EC511D97C75E840C45D69BB9E3D03E79C"
250 matrix_lassulus = "0CA5C0F70A9F893881370F4A665B4CC40FBB1A41E53BC94916CD92B029103528611EC0B390116BE60FA79AE10F486E96E17B0824BE2DE1C97D87B88F5407330DAD70C044147533C36B09B7030CAD97"
251 ''
252 );
253 };
254 };
255
256in
257{
258 nixpkgs.config.permittedInsecurePackages = [
259 "olm-3.2.16"
260 ];
261 users.users.mainUser.packages = [
262 weechat-configured
263 ];
264 environment.etc."weechat.set".source = "${weechat-configured}/weechat.set";
265 systemd.tmpfiles.rules = [
266 "d /var/state/weechat_logs 0700 lass users -"
267 "d /var/state/weechat 0700 lass users -"
268 "d /var/state/weechat_cfg 0700 lass users -"
269 "L+ /home/lass/.local/share/weechat - - - - ../../../../var/state/weechat"
270 "L+ /home/lass/.config/weechat - - - - ../../../../var/state/weechat_cfg"
271 ];
272
273 systemd.services.weechat = {
274 wantedBy = [ "multi-user.target" ];
275 restartIfChanged = false;
276 serviceConfig = {
277 User = "lass";
278 RemainAfterExit = true;
279 Type = "oneshot";
280 # LoadCredential = [
281 # "WEECHAT_PASSPHRASE:${config.krebs.secret.directory}/weechat_passphrase"
282 # ];
283 ExecStart = "${pkgs.tmux}/bin/tmux -2 new-session -d -s IM ${weechat-configured}/bin/weechat";
284 ExecStop = "${pkgs.tmux}/bin/tmux kill-session -t IM"; # TODO run save in weechat
285 };
286 };
287}