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