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