1
0
mirror of https://github.com/kmein/niveum synced 2026-03-18 19:11:08 +01:00

1025 Commits

Author SHA1 Message Date
416d3ab277 feat(i3status-rust): show moon fullness percentage 2021-11-20 09:40:32 +01:00
82b9bb2a4c feat(sa): add possibility of devanagari output 2021-11-20 09:39:57 +01:00
82b650bdbf fix: book reading script cannot be named "read" 2021-11-20 09:39:27 +01:00
06125303b8 feat: add some scripts for reading pdfs 2021-11-19 13:40:32 +01:00
c0efacd6ce chore: update 2021-11-19 13:40:19 +01:00
2aff28c6ed feat: astrological info script 2021-11-19 08:09:08 +01:00
e27db27fd8 chore: update 2021-11-15 18:43:47 +01:00
683bd2f3be feat: closest word script 2021-11-15 18:43:34 +01:00
01e3cef34f feat(i3): add moon phase to status bar 2021-11-13 23:39:01 +01:00
f921d3d3b6 fix(monitoring): grafana link 2021-11-13 19:17:35 +01:00
ffa3f820ce feat(pls): more insults 2021-11-12 20:22:51 +01:00
8738cb4a58 feat: kirčiuoklis script 2021-11-12 20:06:08 +01:00
a2b706e787 feat(direnv): simplify shell.nix template 2021-11-12 20:06:08 +01:00
22247715a3 feat(fonts): alegreya{,-sans} 2021-11-12 20:06:08 +01:00
bdd4bda339 fix(hedgedoc): serve ssl correctly 2021-11-12 20:06:08 +01:00
1002fd8b43 fix(NetworkManager): use constant addresses for home wifi 2021-11-12 20:06:08 +01:00
1f48644558 feat(haskell): install monad-memo, edit-distance 2021-11-12 16:03:43 +01:00
da95622df1 chore: update 2021-11-08 17:55:06 +01:00
e275c81257 fix(monitoring): display host name in reboot message 2021-11-08 10:06:29 +01:00
bf7d0165b1 feat: add more sanskrit dictionaries 2021-11-07 13:12:11 +01:00
cb10b423dc feat(mpv): reenable osc 2021-11-06 08:15:07 +01:00
a93a34e546 feat(mpv): sane screenshot template 2021-11-06 07:45:02 +01:00
c7603af4d0 fix(matterbridge): dont strip markdown 2021-11-06 07:45:02 +01:00
dd685afb7c feat(mpv): dont generate thumbnails, it is eating up my cpu 2021-11-04 07:25:40 +01:00
055b4016e6 feat(moodle-dl): two more 2021-10-28 15:16:16 +02:00
f361d2b877 feat: add russian keyboard 2021-10-28 15:06:33 +02:00
8b00faf762 feat(vdirsyncer): fix birthday calendar issue, add fysi 2021-10-26 20:43:56 +02:00
f7d72e00b6 feat(neomutt): add macros to limit messages 2021-10-24 19:16:37 +02:00
087c138906 fix(beets): remove buggy lyrics plugin 2021-10-24 19:16:37 +02:00
bf8f6d8d52 feat(i3status-rust): rewrite sun timer to work offline 2021-10-24 18:22:55 +02:00
fcf2aa4cca chore: update 2021-10-24 08:38:43 +02:00
48484514bc feat(moodle-dl): add one more course 2021-10-24 08:25:35 +02:00
aa359ad986 fix(menstruation): update to fix timezone 2021-10-21 13:29:17 +02:00
2432b0bbaa feat(moodle-dl): add one more course 2021-10-21 12:18:07 +02:00
2b754d4a5b feat(moodle-dl): add one more course 2021-10-21 12:18:07 +02:00
f38e5c3295 feat(moodle-dl): add one more course 2021-10-20 09:11:56 +02:00
f6b4740b73 chore: update 2021-10-19 22:53:56 +02:00
c06fb3f50c feat(pls): use ircaids 2021-10-19 22:42:29 +02:00
4ae2fa4a6a feat: unify/update stockholm pkgs 2021-10-19 22:42:00 +02:00
6809db5ccc feat(moodle-dl): add one more course 2021-10-19 19:41:04 +02:00
c9fb802c55 feat: install menstruation 2021-10-19 18:59:29 +02:00
2f4505d29b feat(i3status-rust): remove keyboard indicator 2021-10-19 18:55:46 +02:00
b43de46611 feat(i3status-rust): add sun timer 2021-10-19 18:02:42 +02:00
3545c37084 chore(menstruation): update 2021-10-19 17:10:18 +02:00
043fe3b67b feat(moodle-dl): one more course 2021-10-19 14:51:43 +02:00
f0779c45c3 feat(moodle-dl): two more courses 2021-10-19 14:35:12 +02:00
b7a6fda046 chore(menstruation): update 2021-10-19 10:54:30 +02:00
e431e0bf03 fix(urlwatch): make tatort more readable 2021-10-19 09:20:30 +02:00
ac54cd5eaf feat(makanek): run mensa bot 2021-10-18 21:14:52 +02:00
4bd5965915 fix(monitoring): clearly say when stuff is resolved 2021-10-18 20:56:42 +02:00
f21112465b feat(menstruation): add as submodules 2021-10-18 18:19:47 +02:00
b989684f12 feat(vdirsyncer): restart after failure 2021-10-18 07:24:43 +02:00
beef73daab feat(moodle-dl): one more course 2021-10-18 07:24:32 +02:00
de3fbfd356 feat(moodle-dl): add first WS21 courses 2021-10-17 20:18:59 +02:00
a1e88e30a7 feat(makanek): add onomastics service 2021-10-12 23:25:11 +02:00
c50698f275 feat: manage retiolum addresses globally, declaratively share moodle 2021-10-12 11:51:55 +02:00
6119c0dbcc feat: bye bye keybase 2021-10-12 11:51:14 +02:00
7dd5a9e269 feat(neomutt): dont ask about ~/Mail 2021-10-11 20:03:03 +02:00
2384a4eef5 feat: add serveHtml helper 2021-10-11 20:02:41 +02:00
f6ffd477d1 feat(zaatar): run bvg info dashboard 2021-10-11 20:02:41 +02:00
77fc7e4832 feat(i3status-rust): show current keyboard layout 2021-10-11 20:02:41 +02:00
76d75048fa feat(neomutt): add old uni account, add alias 2021-10-11 20:02:41 +02:00
71e65461cf feat: simplify use of krebs pkgs 2021-10-11 20:02:41 +02:00
6545b016c5 feat: remove traces of old mail setup 2021-10-08 22:17:05 +02:00
6eff3d831c feat(nextcloud): update 2021-10-08 20:25:54 +02:00
80abae0daa feat: spotify-tui -> ncspot 2021-10-08 20:04:05 +02:00
bbdef3a8ed feat(neomutt): add mua alias 2021-10-08 20:03:52 +02:00
1f28eb000d feat(monitoring): add uptime alert 2021-10-08 20:03:44 +02:00
fb7a295310 chore: update 2021-10-08 20:03:28 +02:00
ad84e0445d feat(neomutt): style and simplify 2021-10-08 16:00:20 +02:00
faac180148 feat: bye bye notmuch, hello neomutt 2021-10-07 08:59:54 +02:00
2691608f8c feat: LB 2021-10-07 08:59:54 +02:00
9678ba7b28 chore: update 2021-10-03 23:41:55 +02:00
dc90c4c6ab feat: qrpaste 2021-09-23 21:25:50 +02:00
4c2a4df663 feat(networkmanager): declarative 2021-09-22 08:03:47 +02:00
c60e90f001 fix(monitoring): telegram alerts grafana link 2021-09-22 07:56:17 +02:00
d0f1287c68 feat(radio): rip antenne-asb.ga 2021-09-22 07:56:17 +02:00
f91004fff6 feat(monitoring): add more rules, run grafana in retiolum 2021-09-19 12:03:52 +02:00
adca14865c feat(tuna): run on radio.kmein.r 2021-09-19 11:41:36 +02:00
4cdf954732 feat: wilde -> kabsa 2021-09-19 11:41:16 +02:00
e2bd211d4b feat: monitoring 2021-09-18 23:54:12 +02:00
d04c652f61 feat(moodle-dl): share via nfs 2021-09-18 15:53:21 +02:00
f036e50210 feat(moodle-dl): run in containers 2021-09-18 14:42:57 +02:00
8b8fbeb511 feat(moodle-dl): run on zaatar for meinhark 2021-09-18 14:36:25 +02:00
04b40f15e2 feat: install speedtest-cli when on NM 2021-09-18 09:15:14 +02:00
70755b3cec feat: install firefox, remove unused stuff 2021-09-17 21:03:28 +02:00
3ebd71971d feat(networkmanager): use prison-break from NUR 2021-09-17 20:49:39 +02:00
ca51f06e2a feat(i3): add scratchpad keys 2021-09-17 20:49:19 +02:00
0e9051aaaa feat(shell.nix): add --force for deploying dirt 2021-09-17 15:26:55 +02:00
d1079fe413 feat(wifi): networkmanager for wilde, wpa_supplicant for others 2021-09-17 15:26:40 +02:00
6418b03548 feat(weechat): autojoin #autowifi 2021-09-17 15:15:35 +02:00
ecdfd7953d feat: disable tor 2021-09-17 11:12:09 +02:00
08ab96c0db feat: add wifi@db systemd network 2021-09-17 09:45:24 +02:00
5939219f8c feat: disable kleiter 2021-09-17 09:04:25 +02:00
e2f82c3da8 fix(vim): dont showbreak with an emoji 2021-09-16 16:41:39 +02:00
0dc43c2eff feat(scripts): new-mac 2021-09-16 16:41:39 +02:00
136b04cb3f fix(docker): go around ICE wifi 2021-09-16 15:23:02 +02:00
8af855585b chore: update 2021-09-14 15:21:45 +02:00
4136e7bf3f feat(newsboat): add watch later script 2021-09-14 15:00:58 +02:00
c365f5f8b2 feat(urlwatch): watch tatort 2021-09-14 15:00:58 +02:00
d37393b1ca feat: libib script 2021-09-14 15:00:58 +02:00
b484f424af feat(weechat): filter brockman notices 2021-09-14 15:00:58 +02:00
15e2cd7e4f feat(fonts): use joypixels for monospace emoji 2021-09-11 20:41:44 +02:00
a88a0f57c2 fix(worldradio): use fork 2021-09-11 07:57:08 +02:00
4d81f0b0ac feat(spotify): use unstable 2021-09-11 07:52:17 +02:00
0971a2c575 chore: update 2021-09-11 07:47:26 +02:00
18c829f224 chore: update 2021-09-07 16:33:55 +02:00
865b0b736c fix(streams): radio record 2021-09-07 16:28:52 +02:00
84613b8d51 feat(zaatar): sync music via syncthing 2021-09-05 17:12:08 +02:00
7fcf265ffd feat(urlwatch): add lammla 2021-09-05 15:51:39 +02:00
5892702841 feat: coronabeschränkungen ausweiten 2021-09-01 15:29:41 +02:00
233fa97da5 chore: update 2021-08-31 20:37:42 +02:00
aeda9e63e6 feat: add krebs cyberlocker tools 2021-08-31 20:07:57 +02:00
80d9a1b41c feat(weechat): add oftc 2021-08-26 18:58:36 +02:00
40fd40453f chore: update 2021-08-26 15:29:41 +02:00
8beb632b1e feat(streams): comment more 2021-08-26 15:29:31 +02:00
83c9b0e30c feat(wifi): add iamateapot 2021-08-12 11:48:17 +02:00
8471f7e1e2 feat(weechat): dont log news 2021-08-11 14:49:26 +02:00
8ff3cab263 feat: add chatlog search 2021-08-11 14:49:26 +02:00
321eb82116 fix(mpv): dont always watch the highest resolution 2021-08-10 23:01:20 +02:00
9d0dc4397c chore(stockholm): update 2021-08-10 20:00:48 +02:00
6ab4332965 feat: add literate programming script 2021-08-08 09:56:15 +02:00
f00d903043 chore: update 2021-08-08 09:16:44 +02:00
cb1f3ce4f1 feat(zaatar): enable mpdscribble 2021-08-08 08:16:50 +02:00
d3e3bf92eb feat(vim): don't "fix" elm.json indentation 2021-08-08 08:12:51 +02:00
60e44ae4eb feat(urlwatch): report to telegram 2021-08-02 08:44:33 +02:00
9bc3279f52 feat: beets 2021-07-30 13:19:44 +02:00
2f75f4c3b3 chore: update retiolum 2021-07-30 13:19:44 +02:00
f8a3bfe21e feat(weechat): bye #hsmr 2021-07-26 10:15:21 +02:00
56fe6b3f00 feat(dropbox): disable 2021-07-25 09:48:43 +02:00
8746b4522a feat(weechat): improve filtering out triggers 2021-07-25 09:42:27 +02:00
e8f46cd497 chore: update 2021-07-25 09:42:27 +02:00
10a4afd59d feat(tuna): update 2021-07-25 09:42:27 +02:00
27499d6a7a feat(urlwatch): remove IG nekrolog as it was spamming 2021-07-21 08:19:07 +02:00
c20acb75f8 feat(mpv-tv): add postFetch 2021-07-19 13:46:47 +02:00
4dd00e1063 feat: replace evince by foxit 2021-07-16 12:42:26 +02:00
20df63014d Revert "feat: use fzfmenu"
This reverts commit 27a6c5833e.
2021-07-15 10:08:00 +02:00
27a6c5833e feat: use fzfmenu 2021-07-15 09:54:23 +02:00
2201b192fd feat(mpv): add youtube (auto) subtitles 2021-07-15 07:34:12 +02:00
cf2c0c7a37 feat(mpv): add thumbnail and youtube quality script 2021-07-14 22:39:18 +02:00
3a48c9860b feat(.bin): proxies scripts 2021-07-13 21:00:33 +02:00
9c44e03215 feat(streams): add more 2021-07-13 21:00:23 +02:00
d6c4899dc1 feat: mpv-tv, more readio streams in comments 2021-07-12 12:25:32 +02:00
94092fbfeb feat(streams): more in notes 2021-07-11 18:00:54 +02:00
a1e96d67b7 feat(klem): add curl script 2021-07-11 18:00:54 +02:00
a2290fd6f7 chore(urlwatch): move to makanek 2021-07-11 18:00:53 +02:00
bc2d4fb005 feat: mpc for controlling zaatar 2021-07-08 12:47:17 +02:00
a0096a771d feat(streams): add rockabilly 2021-07-08 12:45:46 +02:00
eb2f7ea275 feat(streams): bhaktiworld is not 2b! 2021-07-08 12:45:46 +02:00
c2b567664c chore: update 2021-07-08 12:45:46 +02:00
900839b9b3 feat(newsboat): move home 2021-07-08 12:45:46 +02:00
6498e5a1da feat(mpd-fm): rebrand 2021-07-08 12:45:44 +02:00
1f971b2a74 chore(urlwatch): move to makanek 2021-07-08 07:52:03 +02:00
be178dffc6 feat(zaatar): allow unfree 2021-07-06 22:55:48 +02:00
934a5840df fix(printing): remove dependency on main user 2021-07-06 22:54:18 +02:00
199ccf7537 feat(zaatar): +traadfri +printer -spotifyd 2021-07-06 22:51:20 +02:00
e479ea36ec feat(weechat): add binaergewitter 2021-06-26 20:49:10 +02:00
b8f8e97df1 feat(streams): fix malayalam 2021-06-26 10:14:03 +02:00
5e6baef3d2 feat(streams): add more 2021-06-26 09:50:11 +02:00
008db3167d feat(cage): open spotify 2021-06-26 09:01:07 +02:00
2cbf412f27 feat(streams): remove broken radio streams 2021-06-26 09:00:53 +02:00
f1021be262 feat(nextcloud): enable client 2021-06-22 14:10:34 +02:00
bed819219c fix: remove krebspaste, bepasty-client-cli 2021-06-22 11:38:31 +02:00
0a21d0434c chore: update 2021-06-22 10:33:58 +02:00
5e34212f5b fix(engiadina): move to a directory that is not deleted on startup 2021-06-17 21:10:44 +02:00
01925ed0ff feat(traadfri): update 2021-06-17 21:10:20 +02:00
1311b64824 feat(mpd-fm): update 2021-06-17 07:37:19 +02:00
2b85e37fb6 fix(wifi): only use wlp3s0 on machines where it applies 2021-06-16 22:00:20 +02:00
6fb75ace21 feat(weechat): run oper when connecting to irc.r 2021-06-16 13:41:22 +02:00
72135addb0 chore: update 2021-06-16 13:06:24 +02:00
1ebf7d6cec feat(traadfri): update 2021-06-16 13:04:55 +02:00
27442da13d feat(matterbridge): bye bye freenode 2021-06-16 13:04:55 +02:00
5f0b0beb94 fix(i3status-rust): limit vax percentage length 2021-06-14 12:45:24 +02:00
52fd14c4fb feat: print diff before deploying 2021-06-13 09:31:32 +02:00
b33a64796c feat(unicodmenu): update symbols 2021-06-13 09:20:58 +02:00
2a761efc90 feat(telegram bots): get proverb bot from telebots 2021-06-12 17:09:10 +02:00
f320afd838 fix(telegram bots): update nachtischsatan to use new bot library version 2021-06-12 15:11:56 +02:00
345fd8159c feat(python): install poetry 2021-06-12 14:59:53 +02:00
daef8b79d4 feat(telegram bots): update 2021-06-12 14:59:53 +02:00
6cdfdaf703 feat(wifi): add interfaces 2021-06-10 20:32:58 +02:00
eca981e5c9 Revert "fix(fetchWallpaper)"
This reverts commit d23d443cc5.
2021-06-10 20:13:32 +02:00
2fee6ae34b chore: update 2021-06-10 20:06:00 +02:00
6c96c792f0 feat(i3status-rust): add vaccination quota indicator 2021-06-10 20:02:45 +02:00
70414128e5 feat(radio): add index html 2021-06-09 12:14:43 +02:00
d480eff8cd fix(spotifyd): hand-craft spotifyd module 2021-06-09 11:49:15 +02:00
d23d443cc5 fix(fetchWallpaper) 2021-06-09 01:25:00 +02:00
1131da55ce fix(flameshot): configurate with nix 2021-06-07 15:34:26 +02:00
f5882d1577 fix(spotifyd): config type 2021-06-07 11:04:39 +02:00
39917e0bf6 feat(moodle-dl): reintegrate module in niveum 2021-06-06 13:15:01 +02:00
6727673dcf chore: update 2021-06-06 12:57:23 +02:00
2b2290841b fix: replace flameshot-once by regular flameshot 2021-06-06 08:08:40 +02:00
179b526214 chore: update much 2021-06-06 00:01:53 +02:00
8894fb2a27 fix: take stockholm from krebsco.de 2021-06-05 18:13:08 +02:00
ed97c13314 fix: flameshot-once 2021-06-05 17:45:18 +02:00
cd0874f093 chore: update 2021-06-05 17:44:54 +02:00
d67f501452 fix(libcoap): re-enable traadfri 2021-06-03 09:44:01 +02:00
118dcf3046 feat: add nixpkgs-mozilla via krops 2021-06-02 18:14:28 +02:00
7154c84cdc feat(pls): simplify info output 2021-06-02 18:14:28 +02:00
94f0299a75 chore: upgrade to 21.05 2021-06-02 08:57:18 +02:00
69354bbd3a feat: add nur via krops 2021-06-02 08:57:18 +02:00
e6b761da34 fix(devanagari): use nodejs version 2021-06-01 22:42:09 +02:00
724ac3aa99 fix(pls) 2021-06-01 22:12:45 +02:00
8880e6814c fix(meteo): curl -L 2021-06-01 19:43:29 +02:00
bee54c5f0b feat(wallpaper): set berlin 2021-06-01 19:05:53 +02:00
a5e1ef0a77 feat(weechat): ignore nick changes 2021-06-01 19:04:16 +02:00
8b1dc82eae feat: stream links 2021-05-31 21:54:57 +02:00
e830c87763 chore: update 2021-05-31 06:43:10 +02:00
6079c109f9 fix(makanek): use sqlite json to simplify dump script 2021-05-30 17:30:13 +02:00
d74b261897 fix(hedgedoc): use shortid for backup file name 2021-05-30 14:49:54 +02:00
fa192a3977 feat(hedgedoc): add backup script 2021-05-30 13:11:13 +02:00
fd38db79c0 fix(hedgedoc): reset state 2021-05-30 12:11:13 +02:00
06eda7cb6f feat(weechat): sasl for hackint and libera 2021-05-30 00:16:22 +02:00
543ea247ed feat(weechat): enable mouse 2021-05-30 00:16:22 +02:00
742018dab0 feat: latexrun 2021-05-27 10:06:04 +02:00
8a8a4aae67 feat(weechat): bye bye freenode @realrasengan 2021-05-25 21:20:23 +02:00
e521a82246 feat(scripts): remove IRC client from pls :( 2021-05-25 21:18:51 +02:00
78f490cdfb chore: update 2021-05-25 12:44:03 +02:00
b5905f886a feat(weechat): move #nixos-de to hacking #nixos 2021-05-23 08:57:38 +02:00
f1ce023eca feat(weechat): move #flipdot to libera 2021-05-22 22:50:23 +02:00
13793d3263 feat(wallpaper): dont center on berlin 2021-05-21 13:41:14 +02:00
99a8ecf876 fix(telegram-bots): set TLG bot time to 9:30
the server is set to PST/PDT (Irvine, California) so the new day begins at 9:00 CET/CEST
2021-05-21 10:01:13 +02:00
6a3add22ed feat(mpv-radio): use dmenu 2021-05-21 08:41:04 +02:00
83fb13d541 feat(telegram-bots): add bot for ancient greek word of the day 2021-05-21 08:25:03 +02:00
e34aecaa66 feat(weechat,matterbridge): add #krebs on hackint 2021-05-20 20:04:43 +02:00
000091f910 chore: update 2021-05-20 13:26:27 +02:00
c68895cbb8 feat(weechat): add libera and #fysi to it 2021-05-20 12:58:15 +02:00
295dfad33e feat(i3status-rust): add netdevice indicator 2021-05-18 21:02:45 +02:00
0f6d9bdc66 feat(makanek): install python that sshuttle can run 2021-05-18 20:16:58 +02:00
dcd7a9a4f6 feat(wifi): add AA 2021-05-18 18:45:12 +02:00
51ca66c383 feat: install recht 2021-05-17 07:09:24 +02:00
574fded6e2 fix(traadfri): living room id 2021-05-17 07:08:02 +02:00
bdb9220df6 feat: scanned script 2021-05-13 21:57:03 +02:00
aac96c00bf feat(pulseaudio): add bluetooth module 2021-05-10 09:23:09 +02:00
97e61f6eb1 feat(i3status-rust): remove incidence block 2021-05-10 06:01:47 +02:00
3cb211c682 feat(wifi): add fritzbox 2021-05-07 19:30:33 +02:00
a133f2bb3d feat: install pdfpc 2021-05-05 14:39:00 +02:00
7b617aecd8 feat(i3status-rust): update incidence rate hourly to not lag behind 2021-05-05 10:57:16 +02:00
9f38cc3850 fix(engiadina): dont delete CDN on boot 2021-05-05 09:25:48 +02:00
e62e28ffb1 fix: import nixpkgs-unstable correctly 2021-05-04 17:30:16 +02:00
d3b2ce8277 feat(version): simplify code 2021-05-04 12:20:02 +02:00
30b4c6354f feat(weechat): ##myengadin -> #fysi 2021-05-04 12:19:49 +02:00
7c88a16a32 feat(wallpaper): use berlin-centered wallpaper map 2021-05-04 10:29:25 +02:00
60dc5a9629 feat: provide a unified parallel interface to niveum- scripts 2021-05-04 09:55:10 +02:00
29da1f50cf fix(weechat): use correct nixpkgs-unstable 2021-05-04 09:30:49 +02:00
14cc0ac6aa chore: update 2021-05-04 07:41:21 +02:00
80e91d1685 chore: add nixpkgs-unstable as krops source 2021-05-03 15:06:29 +02:00
c17b611af5 chore(nixpkgs-unstable): update 2021-05-03 14:13:20 +02:00
c85b73a874 feat(i3status-rust): round down incidence since thats what counts 2021-05-03 06:40:06 +02:00
ff49bb95a7 feat(i3status-rust): incidence with region name 2021-05-03 06:08:22 +02:00
3a21680812 feat: 256color + countdown + pdf-ocr.sh 2021-05-02 18:56:41 +02:00
4f962778b7 feat(worldradio): comment 2021-05-02 18:55:54 +02:00
4006c36f9b feat(wallpaper): add stars 2021-05-02 18:55:29 +02:00
eb521b2e0e fix(candyman): allow multiple arguments 2021-05-02 18:50:32 +02:00
f178daaffd feat(i3status-rust): incidence 2021-05-02 18:50:10 +02:00
f23e644417 feat(moodle-dl): dont send errors 2021-05-02 18:49:24 +02:00
0f432025ad feat(niveum-deploy): only deploy clean working directories
this makes niveum-version always display accurate information
2021-04-28 16:10:50 +02:00
7f009cfd08 feat: menu-calc (also for i3), nix-index 2021-04-27 21:56:44 +02:00
94cdfa3ea3 chore: update 2021-04-26 12:03:37 +02:00
e75348e1cb feat(scripts): depend on iconv package 2021-04-26 11:20:34 +02:00
e13e421b75 feat(ssh): add fysi machines 2021-04-21 11:56:59 +02:00
a3fa195089 feat(weechat): filter sars-cov 2021-04-21 11:51:52 +02:00
35192198a7 feat(wifi): readd o2-WLAN66 2021-04-21 11:51:38 +02:00
b93f4a49e0 fix(engiadina): dont delete cdn directory 2021-04-19 20:02:10 +02:00
9a4b9946cb chore: update 2021-04-17 10:07:51 +02:00
9955d05152 feat(manakish): prompt color green, automatically set xrandr and pulseaudio profiles 2021-04-17 10:07:42 +02:00
141d5db610 fix(khal): fix date/time formats 2021-04-17 09:26:48 +02:00
a4edbfd29d feat(seafile): no onw need seafile-shared 2021-04-13 15:09:19 +02:00
6f7d5eadbf feat(moodle-dl): more courses 2021-04-13 15:09:05 +02:00
1d6d8f8249 feat(khal): add todoman, standardize datetime formats 2021-04-12 18:18:28 +02:00
901ab8d6b0 feat(moodle-dl): more courses 2021-04-12 18:17:45 +02:00
5249d6ab0d feat(moodle-dl): more courses 2021-04-12 11:10:31 +02:00
9a00809a2d feat(mail): run muchsync even when mbsync fails 2021-04-12 11:01:34 +02:00
376a2e115c fix(seafile): start in bg 2021-04-12 08:03:29 +02:00
aac1a2e813 feat(moodle-dl): more courses 2021-04-10 21:32:29 +02:00
28ef523c82 feat(streams): comment 2021-04-10 14:33:17 +02:00
c672260930 feat(moodle-dl): init for borsfaye 2021-04-10 14:33:06 +02:00
5cc34626e1 feat(moodle-dl): more courses 2021-04-10 13:37:53 +02:00
9f1f73ad21 chore: update 2021-04-09 20:49:13 +02:00
5fdb612033 feat(moodle-dl): add first ss21 courses 2021-04-09 15:45:50 +02:00
508bc908ce fix(hu-berlin): make cifs mounts depend on openvpn instead of fortinet 2021-04-09 08:21:47 +02:00
4cba5a0b8a feat: friendship ended with todo.txt 2021-04-08 20:00:54 +02:00
71b5a8cb24 feat: ncmpcpp-zaatar 2021-04-08 19:52:37 +02:00
200bff8386 feat: ncpamixer 2021-04-08 19:49:57 +02:00
79fd340f82 feat(mpd-fm): remove http streaming, not using it since mpv-radio 2021-04-08 19:25:37 +02:00
69ed97a4ab feat(mpd-fm): open mpd port to local network, removing the need for a password 2021-04-08 19:25:05 +02:00
ebbbb537c3 feat(streams): comment 2021-04-08 12:01:30 +02:00
556255ac8b feat(mpd-fm): add streams as playlist for use with MPD clients 2021-04-08 11:59:53 +02:00
6516c5c9b7 feat(mpd-fm): allow network access with password 2021-04-08 11:59:30 +02:00
b5d32d3962 feat(khard): sync all calendars, dont deduce calendar from birthdays 2021-04-08 11:58:25 +02:00
766874a226 feat: khard, vdirsyncer service 2021-04-07 22:55:42 +02:00
2e9386a6c2 fix(hu-berlin): disable fortinet vpn
it was messing up my dns every time i woke up from suspend
2021-04-07 22:38:45 +02:00
9af10ecf46 feat: calcurse -> khal 2021-04-07 20:43:19 +02:00
bd200b655d feat(scripts): meteo 2021-04-07 09:45:36 +02:00
4adf8fea0a feat: use pkgs.formats for everything 2021-04-07 09:37:57 +02:00
0f0b5658be feat(seafile): declaratively configure 2021-04-07 09:19:00 +02:00
4f8f3751f4 feat(weechat): add ##fysitech 2021-04-06 16:56:31 +02:00
5b76c1439f feat(i3status-rust): autolocate weather block 2021-04-05 10:08:01 +02:00
3e684ae24a fix(moodle-dl): match syncthing with new moodle-dl user 2021-04-05 09:55:05 +02:00
83afa6174a chore: update 2021-04-05 09:54:53 +02:00
0d483bfc0c feat: enable xdg 2021-04-05 08:33:11 +02:00
dea9c3f0ed feat: glow 2021-04-05 08:32:31 +02:00
f8b452901f feat: openweathermap tool and i3status block 2021-04-05 08:32:14 +02:00
80143fee87 feat(mpd-fm): run on pulseaudio 2021-04-03 15:02:01 +02:00
834e5d9ef3 chore(moodle-dl): update module 2021-04-03 15:02:01 +02:00
121d5e242f feat(matterbridge): strip markdown from messages to IRC 2021-04-01 20:15:07 +02:00
b9748964d0 feat(weechat): add flix 2021-04-01 20:14:48 +02:00
4ab7d0d92e feat(scripts): mpv-radio 2021-04-01 11:00:28 +02:00
08ada6b818 feat: add engiadina development server 2021-03-30 23:20:21 +02:00
a128813990 feat(moodle-dl): use module and package from nixpkgs fork 2021-03-30 23:20:02 +02:00
5eaee95ba1 feat: update krops and ease toum deployment 2021-03-30 23:18:56 +02:00
5eba5b84f1 feat(urlwatch): indogermanistik 2021-03-30 12:25:12 +02:00
2a8495a92c chore: update 2021-03-28 19:51:36 +02:00
5e62f0363d fix(scripts): +x rfc 2021-03-24 20:26:38 +01:00
1c8c210f06 feat(weechat): less colors 2021-03-24 20:26:23 +01:00
48ce381be0 fix(spotifyd): run correctly with systemWide pulseaudio 2021-03-24 20:26:05 +01:00
777f24e37e feat(pulseaudio): use nixos module for network sink, publish via zeroconf 2021-03-24 20:25:48 +01:00
78a50e9ae3 feat(weechat): more colors 2021-03-23 21:00:48 +01:00
b8967c8e5c feat: tmpfiles.d helper function 2021-03-23 21:00:30 +01:00
e3f3e4045a feat(pulseaudio): sink zaatar 2021-03-23 20:28:08 +01:00
08ce7749b5 fix(i3status-rust): use correct week number (week number of year) 2021-03-23 19:39:08 +01:00
d7adefc289 feat(wifi): add OF 2021-03-23 19:38:48 +01:00
7472eb5028 fix(weechat): only use kmein as nick 2021-03-23 19:38:37 +01:00
f85a8d2737 feat(streams): add more candidates 2021-03-23 19:38:21 +01:00
9724cdda54 feat: install more utils 2021-03-23 19:38:21 +01:00
6727df461d chore: update 2021-03-19 16:57:49 +01:00
0f11a9398f feat(i3): sans serif, cyan for focus 2021-03-17 17:22:14 +01:00
db07d68a60 feat(chromium): goodbye lastpass, hello bitwarden 2021-03-17 09:55:46 +01:00
f4c8094ad8 fix(praesenzlehre): dont get stuck on digit separators like 1,200 2021-03-16 11:27:31 +01:00
04247c6ca1 chore(nextcloud): update to 21 2021-03-16 11:27:05 +01:00
d99399009c feat(.bin): brockman cli 2021-03-15 08:45:00 +01:00
19c1f7c50d feat(streams): add more radio stations 2021-03-12 13:52:18 +01:00
a983ce13f8 feat(streams): add more radio stations 2021-03-11 19:10:01 +01:00
b6fa1fc274 chore: update 2021-03-11 19:09:48 +01:00
68e60b93ff feat(scripts): pimp rfc script 2021-03-11 10:26:19 +01:00
3aabeea2c3 chore: import lieferando script 2021-03-11 09:37:38 +01:00
74c6fcd3a5 feat: add worldradio script to manakish and wilde 2021-03-11 09:35:22 +01:00
392ef95c4f feat(wallpaper): use krebs wallpaper 2021-03-11 09:35:02 +01:00
5869807936 feat(scripts): unicodmenu 2021-03-06 22:24:02 +01:00
e2a0ba3eed feat(fonts): change to roboto to support more characters 2021-03-05 10:42:48 +01:00
25c6f97693 chore: update 2021-03-05 10:42:48 +01:00
12698d9f48 feat(scripts): mail-reply, much-current-query 2021-03-03 19:03:59 +01:00
5dccdfee83 chore: add .bin scripts 2021-03-03 17:23:53 +01:00
8420a2435d feat(scripts): enhance pls script 2021-03-03 17:22:26 +01:00
ed732b3a65 feat(matterbridge): disable for ##myengadin 2021-03-03 12:02:01 +01:00
cbb676bf00 chore: organize battery, steam and praesenzlehre into imports 2021-02-28 08:01:51 +01:00
74b102e55e chore: update 2021-02-27 21:31:52 +01:00
c14f5925e2 feat(manakish): steam 2021-02-27 21:31:46 +01:00
9a7b6b020a fix(makanek): run praesenzlehre daily 2021-02-27 17:51:59 +01:00
68338c2791 feat(urlwatch): watch hu semester to notify when new catalogue comes out 2021-02-24 17:58:01 +01:00
e74f9b6bd0 fix(praesenzlehre): run less frequently 2021-02-23 20:53:01 +01:00
a17201c28d fix(mail): run muchsync from master, sync to wilde and manakish 2021-02-23 20:52:39 +01:00
2a94899db5 chore: update 2021-02-23 20:51:02 +01:00
bae1cb485c chore: update 2021-02-20 19:01:47 +01:00
7f6e00a309 fix(wilde): dont disable docker 2021-02-20 18:18:16 +01:00
2a5ea9700b feat(makanek): upgrade praesenzlehre to timer 2021-02-20 18:18:16 +01:00
8b5bfd236d feat(makanek): run praesenzlehre-berlin.de liveticker 2021-02-18 13:50:13 +01:00
8302b1d9fb feat(weechat): new channels 2021-02-18 13:49:00 +01:00
8f66163c39 fix(urlwatch): move from makanek to zaatar because tellonym is blocked there 2021-02-16 12:57:21 +01:00
7ad02f75a9 feat(weechat): oper on news.r, filter experts more expertly 2021-02-15 21:47:43 +01:00
2f3d4fb3b1 feat(urlwatch): tellonym 2021-02-15 21:47:43 +01:00
005da63416 feat(weechat): ignore more greek variant spellings 2021-02-14 22:47:00 +01:00
beaf6c81e4 feat(weechat): ignore infections 2021-02-14 20:31:06 +01:00
7c67d3f88a feat(radio): handle POST for skipping meddl 2021-02-14 18:49:20 +01:00
0d20cded25 feat(weechat): never listen to "experts" 2021-02-14 11:22:30 +01:00
6c1e8368a1 fix(radio): dont fail when cropping playlist non possible pre-start 2021-02-14 11:21:56 +01:00
ac1a7ac37e feat(scripts): infschmv 2021-02-14 11:21:30 +01:00
85a6001b53 fix(matterbridge): change nick delimiter
this prevents mumble from interpreting the nick as an html tag
2021-02-14 11:21:14 +01:00
4e107f3df7 chore: update 2021-02-14 11:20:32 +01:00
37880ae746 feat(weechat): enable relay for android, improve covid filter 2021-02-09 20:56:32 +01:00
155722a8cd fix(matterbridge): ping nick 2021-02-09 10:06:03 +01:00
73d71498c7 fix(matterbridge): change nick delimiter
this enables weechat colorize_nicks support
2021-02-08 13:07:54 +01:00
e9b5c2623d fix(mpv): dont force window, change swallowing alias to smpv 2021-02-08 13:06:42 +01:00
ddc4ca0db4 feat(weechat): add channels, freenode via ssl 2021-02-08 08:16:52 +01:00
8fbaed35f8 feat(scripts): add google translate script 2021-02-08 08:16:04 +01:00
87042f5409 feat(mpd-fm): rename config file 2021-02-07 22:04:41 +01:00
a9b1a03af1 feat(weechat): install colorize_nicks and autosort scripts 2021-02-07 22:03:24 +01:00
010d620b76 feat(mail): server settings in variables 2021-02-07 22:00:32 +01:00
18033c0e54 chore: home-manager from nix-community 2021-02-07 18:45:01 +01:00
5cdf3637a5 feat(weechat): add flipdot to freenode 2021-02-07 18:22:22 +01:00
9192fa458b feat(mail): split into fetcher and client machines 2021-02-07 16:08:11 +01:00
40472e2ff8 feat(flix): add simpsons script 2021-02-06 14:24:50 +01:00
a592947bbf fix(weechat): move bouncer from toum to makanek and make stateless 2021-02-06 14:24:50 +01:00
444336cd19 fix(telegram-bots): move from toum to makanek 2021-02-06 11:54:06 +01:00
6ef578d644 feat(hu-berlin): update vpn certs and make vpns contradict each other 2021-02-06 11:17:13 +01:00
8e19069d4c chore: move kierán.de streams 2021-02-04 18:40:22 +01:00
42df0dc7df feat: add dictionary scripts 2021-02-04 18:40:11 +01:00
d6c10df13e feat(radio): add status page for lyrik 2021-02-04 15:19:16 +01:00
8cbbb4b50d feat(radio): serve html of current song 2021-02-03 11:13:31 +01:00
bc23d7ac24 feat: clean up radio streams 2021-02-02 09:23:42 +01:00
40f31fa316 feat: add more radio streams 2021-02-02 09:08:49 +01:00
f73d8725c4 feat(power-action): suspend <= 7 % 2021-02-02 09:08:29 +01:00
97fc0f82bf feat: add more radio streams 2021-02-01 23:22:41 +01:00
ef3d6c4eaf fix(toum): disable hass 2021-02-01 14:44:26 +01:00
c6d7dbe787 chore: update 2021-02-01 14:44:13 +01:00
b9149c8d9a chore: meddl -> radio 2021-01-31 13:55:41 +01:00
36502ecfd8 feat: lyrikline and lyrik (from youtube) stream 2021-01-31 13:54:52 +01:00
43fd4bbf19 feat: stream meddl to radio.kierán.de 2021-01-31 10:08:09 +01:00
37e851cc50 feat(zaatar): add wake news 2021-01-30 20:25:57 +01:00
018f79f88d feat(makanek): host drachenlord radio and stream from zaatar
the streaming links from antenne-asb.ga serve OGG but they say they
serve MP3. so mpd gets confused.
therefore regularly fetches song urls from antenne-asb.ga, queues, and
broadcasts them.
2021-01-30 20:24:43 +01:00
6843ac90b5 feat(pls): notify in irc channel 2021-01-27 09:56:46 +01:00
afb69bf334 feat(zaatar): add kiosk for controlling the radio 2021-01-27 09:19:21 +01:00
ea57f539b0 feat(zaatar): stream mpd via http, proxy control panel and stream via nginx 2021-01-27 09:13:29 +01:00
3d10ac09ab fix(streams): orthography 2021-01-27 08:21:12 +01:00
38f088d9e5 feat(zaatar): clean up mpd 2021-01-27 00:03:32 +01:00
422f2b8676 feat(zaatar): mpd.fm 2021-01-26 23:05:19 +01:00
7c1ca72a29 feat(zaatar): no need for ncmpcpp when using mpd-fm 2021-01-26 23:04:22 +01:00
f171284b71 feat: script for handling lassulus radio 2021-01-26 23:01:31 +01:00
ca50ba931a fix: use stable nix to avoid ETag error 2021-01-26 23:00:16 +01:00
63ad607d46 feat: power-action to suspend on low battery 2021-01-26 22:59:57 +01:00
e553f1bcda feat(zaatar): remove kiosk, use windows instead of panes on music tmux 2021-01-25 18:39:06 +01:00
8923f7a2c9 chore: update 2021-01-25 18:38:29 +01:00
07024df1c9 feat(zaatar): add worldradio 2021-01-23 17:12:08 +01:00
cb9bcf2d1d feat(playlists): caster-fm shortcut 2021-01-23 17:11:33 +01:00
7aeda72026 feat(playlists): add antenne asb 2021-01-23 14:05:58 +01:00
95c93cc565 feat(traadfri): add desk 2021-01-21 09:58:51 +01:00
c9979de250 feat(zaatar): run audio control tmux session 2021-01-20 07:53:46 +01:00
7889d56b99 feat(i3): add @lassulus kaomoji to emoji menu 2021-01-20 07:53:46 +01:00
03be9636ad fix: disable dpms and blanking 2021-01-20 07:53:46 +01:00
5d36ed4cd6 fix: disable nextcloud client 2021-01-20 07:53:46 +01:00
c33446aee3 chore: update 2021-01-20 07:53:46 +01:00
fe7744bedb feat: pup 2021-01-20 07:53:46 +01:00
9673e9d3e8 feat(haskell): ormolu 2021-01-15 18:37:37 +01:00
5175f3f819 feat: use newest zoom-us 2021-01-15 14:09:06 +01:00
5923f3341a fix(nextcloud): force ssl, otherwise the acme challenge wont work 2021-01-15 14:08:45 +01:00
901cf6f711 fix: codimd -> hedgedoc 2021-01-15 10:05:12 +01:00
859e536159 chore: update (remove firefox temporarily) 2021-01-13 10:07:14 +01:00
4ea18d0152 feat(wifi): update filli 2021-01-06 22:09:39 +01:00
c7c7017070 fix(much): arrow keys 2021-01-06 22:09:29 +01:00
7c80f160db fix(retiolum): dont reload on change 2021-01-01 11:58:16 +01:00
6fce803c70 chore: update 2021-01-01 11:55:05 +01:00
a6bff424b0 feat(nix): enable flakes 2021-01-01 02:48:37 +01:00
d61b17c656 Revert "feat(matterbridge): add nixos-rc3 bridge"
This reverts commit 9c1bf37d50c481ffbbe252da7ee1cf2ed3620628.
2021-01-01 02:46:30 +01:00
cbdf8ef038 feat(wifi): add vodafone-8012 2021-01-01 02:46:30 +01:00
876dbe785b feat(mime): set pcmanfm as file manager, and libreoffice as office 2021-01-01 02:46:30 +01:00
fb4a14a6bf feat(matterbridge): add nixos-rc3 bridge 2021-01-01 02:46:30 +01:00
02977ea936 feat: replace xournal by &++ 2021-01-01 02:46:30 +01:00
dcca34d5c1 feat(hu-berlin): hu-ip script 2021-01-01 02:46:30 +01:00
8bd8ec611f fix(htop): dont show threads 2020-12-22 09:29:13 +01:00
96a67a937e feat(retiolum): update tinc module to add hosts declaratively 2020-12-21 14:49:45 +01:00
fb85c29651 fix(retiolum): depend on palos retiolum again 2020-12-20 19:45:36 +01:00
3344af5339 feat: pcmanfm instead of nautilus 2020-12-20 19:22:15 +01:00
fdfd8a687f feat(neovim): add vim as wrapper, so that ghci can find it 2020-12-20 19:21:44 +01:00
e804da180d chore: update 2020-12-20 19:21:18 +01:00
2af8e1aa86 fix(spotifyd): always restart 2020-12-20 19:21:09 +01:00
10224de58a feat(hu-berlin): add network filesystems 2020-12-18 10:27:34 +01:00
2bf095c553 feat(tinc): reaload if changed (stolen from @Mic92) 2020-12-16 22:25:27 +01:00
a7d994abe7 feat: devanagari script 2020-12-16 22:25:04 +01:00
680997fb12 feat(i3): change klem to Meta+F12 2020-12-16 22:24:50 +01:00
a2d1ab6f53 feat(wallpaper): use lassulus worldmap with astronomy 2020-12-16 22:24:32 +01:00
52761a13e2 feat(wallpaper): use lassulus worldmap 2020-12-15 17:28:41 +01:00
98f7de9680 fix(mpv): only watch best quality 2020-12-14 07:45:08 +01:00
72f04f9391 feat: disable xautolock, lock only manually 2020-12-13 20:08:26 +01:00
10ad21a39c chore: update 2020-12-13 09:40:58 +01:00
5c9e25f27a fix(todo.txt): dont respect git repos 2020-12-12 17:36:19 +01:00
4b563ddf00 feat(vim): add nim.vim 2020-12-12 17:35:28 +01:00
d041e6fa52 feat(mail): meinhaki 2020-12-11 18:43:54 +01:00
8749646101 fix: aliases 2020-12-11 18:43:41 +01:00
960311c65f feat(matterbridge): rename irc bot to ponte 2020-12-03 10:09:44 +01:00
a70f05239a feat(moodle-dl): download descriptions 2020-12-03 10:09:01 +01:00
d716e5716f feat: hc 2020-12-03 10:08:47 +01:00
2781930ecf feat: access ympd via nginx with password auth 2020-11-25 10:07:26 +01:00
f34a938968 feat(git): auto stash on merge and rebase 2020-11-24 08:49:21 +01:00
080439604b feat(playlists): add youtube lo-fi 2020-11-24 08:45:59 +01:00
72df03fbf6 chore: format 2020-11-24 08:45:41 +01:00
b799e7c26f feat: remove exa
sometimes, seldomly, it failed. but an `ls` should never(!) fail
2020-11-24 08:45:41 +01:00
2a450e2f36 feat(moodle-dl): sync via syncthing instead of sshfs 2020-11-23 15:29:39 +01:00
485e07ec9e feat(i3): move windows around quicker 2020-11-23 11:59:10 +01:00
dcf3452353 feat(playlists): reactivate di.fm 2020-11-23 11:58:36 +01:00
edc8e83594 feat(moodle-dl): sync via syncthing instead of sshfs 2020-11-23 11:58:24 +01:00
01bc8178ad chore: update 2020-11-23 11:57:35 +01:00
eff303a854 feat(urlwatch): give up tellonym 2020-11-20 07:48:31 +01:00
bc992a170c feat(moodle): watch FSR, improve format 2020-11-20 07:47:49 +01:00
78e9bedcb4 feat(moodle-dl): change telegram formatting 2020-11-18 00:08:54 +01:00
d5cdbf3795 feat(matterbridge): bridge mumble and move to makanek 2020-11-18 00:07:30 +01:00
bcb5949e15 fix(toum): use 1G swapfile 2020-11-17 22:17:41 +01:00
dd61883648 feat: use starry wallpapers 2020-11-17 17:39:42 +01:00
1d7a432bec feat(urlwatch): no footer, tellonym 2020-11-17 14:06:13 +01:00
0e7652ff46 chore: resize fonts 2020-11-17 14:05:52 +01:00
a96c0d9ab3 feat(urlwatch): only watch dlf article 2020-11-16 21:02:23 +01:00
82bb2d9f17 feat(chrome): remove youtube recommendations 2020-11-14 13:46:20 +01:00
4fa0256095 feat: install pulsemixer pass-otp 2020-11-14 13:24:25 +01:00
2915594238 feat(urlwatch): move to makanek, watch dlf 2020-11-14 13:23:25 +01:00
cf48d89ea6 chore: update 2020-11-14 13:23:25 +01:00
37f570a979 fix(playlists): remove laut.fm lofi because its quality was killing my speakers 2020-11-12 21:26:58 +01:00
f8af039913 chore(gitea): move into own config 2020-11-11 10:18:04 +01:00
46882af11e feat: run gitea on makanek 2020-11-11 08:51:52 +01:00
2c5d2f4add chore: get stockholm from my mirror 2020-11-11 08:51:22 +01:00
bd089bd408 chore: update keys 2020-11-11 07:31:22 +01:00
fce8d15356 fix(i3, alacritty): make fonts bigger 2020-11-11 07:30:50 +01:00
acec2505e4 feat: add zramfs as swap 2020-11-10 22:17:47 +01:00
218c251d31 feat(retiolum): generate hosts from stockholm, finally add zaatar 2020-11-10 22:17:33 +01:00
8cda7861f9 feat(i3-status-rust): remove newsboat as it was blocking, change separator 2020-11-10 21:03:10 +01:00
a35c883eca feat(wifi): add o2wlan66 2020-11-10 21:01:45 +01:00
db61bc4b91 chore: RIP homeros 2020-11-09 09:40:03 +01:00
43fc9ebba2 feat(manakish): add to retiolum 2020-11-06 10:52:35 +01:00
23d60233a0 fix(zaatar): add new retiolum config 2020-11-06 10:52:35 +01:00
f2fcc3be9a chore: move tuner over from toum to zaatar 2020-11-06 10:38:43 +01:00
30e3baa335 feat(mpd): install ncmpcpp and mpc 2020-11-06 10:38:33 +01:00
616a530c64 fix(playlists): comment out di.fm, add more stations
di.fm returned 404
2020-11-06 10:38:12 +01:00
e5d437949b feat: take dropbox module from dropbox 2020-11-05 21:29:47 +01:00
80c3b143ca feat: write own urlwatch config 2020-11-05 21:29:20 +01:00
263a732580 feat(toum): add tuner website 2020-11-05 21:29:09 +01:00
c638ef93f5 feat: add manakish 2020-11-05 21:28:23 +01:00
69c2f506ae feat(moodle): open for manakish 2020-11-05 20:24:39 +01:00
db4857c86d feat(mpd): group into playlists by style 2020-11-04 08:51:55 +01:00
6668542d53 chore: clean up zigbee2mqtt config 2020-11-04 08:51:19 +01:00
561faed161 feat: add makanek to retiolum 2020-11-03 20:18:57 +01:00
36ed681e99 feat: move some non-packageworthy scripts to packages/scripts/ 2020-11-02 21:49:49 +01:00
be84688b63 feat: install dnsutils 2020-11-02 21:43:54 +01:00
de296c4e62 feat: package much-secripts and dns-sledgehammer 2020-11-02 21:43:38 +01:00
d7807ba1b9 fix(zaatar): make kiosk have german keyboard layout 2020-11-02 21:05:17 +01:00
51fba9baa6 chore(shell.nix): remove histfile setting 2020-11-02 15:44:33 +01:00
a0fb2bd819 feat(moodle): add more courses 2020-11-02 15:43:20 +01:00
a0830070f3 feat(wilde): add swapfile 2020-11-02 15:42:52 +01:00
c860529161 feat(moodle): add more courses 2020-11-02 15:42:41 +01:00
03461dcaaa fix(hu-berlin): fix sshfs mount on homeros 2020-11-01 22:05:59 +01:00
1cd7039759 feat(moodle): add homeros to sshfs share 2020-11-01 21:10:52 +01:00
af0806b766 feat(moodle-dl): add more courses 2020-11-01 21:09:07 +01:00
bd8960fd44 fix(wilde): only build on one core 2020-11-01 15:12:22 +01:00
1bc90b2e84 fix: replace libreoffice by abiword 2020-11-01 15:12:08 +01:00
d2939795ac chore: move hass to configs 2020-11-01 09:45:15 +01:00
4a4d5a148d chore: move matterbridge to configs 2020-11-01 09:44:50 +01:00
f30cfbf142 chore: simplify zigbee2mqtt config 2020-11-01 09:23:27 +01:00
15bda4721d chore: update ssh keys to add termux 2020-11-01 08:27:32 +01:00
4d610461b8 feat(toum): remove kfm user, enable login as weechat 2020-11-01 08:26:30 +01:00
eed54d1593 fix(sshfs): depend on tinc and wpa_supplicant 2020-11-01 08:25:11 +01:00
ddec0551e8 feat(zaatar): allow vt switching from cage 2020-11-01 08:22:20 +01:00
b0f2a74372 chore: update 2020-11-01 08:21:43 +01:00
65584ec52f feat(zaatar): add kiosk to audio group and remove ssh keys 2020-10-31 20:52:53 +01:00
96f5d750ef feat: run moodle-dl on toum, sshfs from wilde 2020-10-31 20:52:10 +01:00
77e97e84a9 feat(makanek): host codimd, nextcloud 2020-10-31 20:51:25 +01:00
96cb298584 feat: make fonts smaller 2020-10-31 20:50:17 +01:00
5dc561da83 chore: move module/constants.nix to lib/default.nix 2020-10-30 11:05:26 +01:00
b8c79fd21c fix(wilde): only build on two cores to still be able to use the computer while building 2020-10-30 08:09:40 +01:00
a98333a6b8 chore: reformat 2020-10-30 08:09:18 +01:00
fa5fe37610 feat(mpd): refine playlist generation 2020-10-30 08:09:00 +01:00
0be0356005 feat(git): dont automatically merge on pull 2020-10-30 08:08:20 +01:00
394615168d feat(mpd): generate streaming links 2020-10-29 08:19:52 +01:00
b6e77f77af feat(mpd): split playlists 2020-10-29 07:54:57 +01:00
d7727433fd feat(zaatar): use ublock for kiosk 2020-10-29 07:54:26 +01:00
3f02559da2 chore: curate radio stations 2020-10-28 22:39:33 +01:00
e7c801b6c4 feat(zaatar): restart kiosk browser if closed 2020-10-28 22:26:04 +01:00
3092fcda85 fix(wilde): dont generate mandb cache 2020-10-28 22:25:45 +01:00
43a1ecedac chore: clean up by removing .todo 2020-10-28 22:25:45 +01:00
da55a342e3 chore: dot -> lib 2020-10-28 22:25:45 +01:00
48fcb08427 chore: scardanelli -> zaatar 2020-10-28 22:25:24 +01:00
a0855f8bbb chore: organize
use read-made spotifyd module
move sshPort to niveum lib (used also from deploy.nix)
factor out sshd config, use from toum
factor out urlwatch
access scardanelli locally
mpd: configure webradio playlist
scardanelli: use cage for kiosk
toum: use wifi config
toum: use spacetime, dont redeclare
toum: use ssh config
2020-10-28 22:25:18 +01:00
3efb4682f2 feat(scardanelli): host media server 2020-10-28 20:29:41 +01:00
048429f593 feat: split spotify config into spotifyd 2020-10-28 20:29:01 +01:00
59cacae72e feat: interdimensional-cable 2020-10-28 20:27:36 +01:00
420245231a feat: factor out wifi config 2020-10-28 20:26:47 +01:00
2911972900 feat: factor out spacetime config 2020-10-28 20:26:47 +01:00
5efcb813f0 chore: remove nixpkgs-unstable 2020-10-28 20:25:26 +01:00
fd8f5d3a5c fix(wilde): only have 2 nix jobs as more will fill up RAM 2020-10-28 11:37:06 +01:00
3508575ebe chore: make 20.09 work 2020-10-28 11:36:46 +01:00
3741304284 feat(toum): run irc bouncer 2020-10-28 11:35:09 +01:00
6bfaf551d2 feat: generate mandb cache to use apropos and whatis 2020-10-28 11:34:36 +01:00
423cb074a0 fix(much): pin nixpkgs so much compiles with email-header 2020-10-27 21:27:12 +01:00
9174337290 chore: update notmuch 2020-10-27 20:47:54 +01:00
5ba0e9bfce fix: remove pointfree 2020-10-27 20:45:47 +01:00
14685a758d chore: upgrade to 20.09 2020-10-27 19:09:49 +01:00
29385fdfac feat(toum): add irc-bouncer 2020-10-27 19:06:58 +01:00
2fbf1f8ee6 feat: tor 2020-10-27 12:03:56 +01:00
675eb4db27 feat: use most current pandoc by not overwriting it with haskellPackages.pandoc 2020-10-27 12:03:47 +01:00
3ed6aa4b05 feat(wilde): use most current minecraft launcher 2020-10-27 12:03:18 +01:00
0cf4bdddf0 feat: showkeys-toggle to enable/disable screenkey 2020-10-27 12:02:47 +01:00
6c42159df0 feat(seafile): move notes over from dropbox 2020-10-27 12:02:31 +01:00
51d09c68a7 chore: update 2020-10-24 18:50:01 +02:00
71c24dd1a5 fix(zigbee2mqtt): turn off annoying green LED 2020-10-24 18:49:48 +02:00
c089f89eaa feat(traadfri): add traadfri-party script 2020-10-24 13:30:51 +02:00
c40fb2f097 feat(toum): host nextcloud 2020-10-24 13:30:30 +02:00
4fc7d8dd2a chore: nixos-unstable -> nixpkgs-unstable 2020-10-24 13:29:18 +02:00
240b97dce9 feat(lib): add localAddresses 2020-10-24 13:29:18 +02:00
177977160f feat: nextcloud-client service 2020-10-24 13:26:39 +02:00
8a887226e7 feat(hass): init 2020-10-21 00:36:10 +02:00
b49bedb9bc chore: fully transition from catullus to toum 2020-10-21 00:35:59 +02:00
83662f48d1 fix(mail): muchsync the important tags 2020-10-21 00:35:13 +02:00
3ae7b4d67d fix(krops): correctly configure system-secrets 2020-10-20 21:59:29 +02:00
8e3691d775 feat: watson time tracker 2020-10-19 18:57:29 +02:00
30ad4816f7 feat: install skype 2020-10-19 18:57:19 +02:00
fc1a794455 fix(mail): msmtp passwordeval 2020-10-19 18:57:07 +02:00
8ee09997a4 chore: update nixpkgs, stockholm 2020-10-18 17:30:02 +02:00
435bf6888b fix(toum): does not boot with new kernel 2020-10-18 17:29:26 +02:00
2cbc6daac5 chore: syntax 2020-10-18 17:29:26 +02:00
da436bfafc feat(retiolum): add via krops 2020-10-18 17:29:26 +02:00
125379fb18 feat(ssh): get authorized_keys from github 2020-10-18 17:28:10 +02:00
7794464b36 feat: enable ntfs support 2020-10-18 17:26:19 +02:00
Kierán Meinhardt
2106247cf5 chore: catullus -> toum 2020-10-18 14:02:26 +02:00
Kierán Meinhardt
0ff450138f feat: get rid of google drive 2020-10-18 14:01:57 +02:00
Kierán Meinhardt
de761d60c1 feat(catullus): remove wtf 2020-10-18 12:20:25 +02:00
Kierán Meinhardt
40e1b9fdbc feat: remove daybook, superseded by vimwiki 2020-10-18 08:28:22 +02:00
Kierán Meinhardt
51d620058c feat(mail): remove afew 2020-10-17 22:27:42 +02:00
Kierán Meinhardt
d8ed9a41ed feat(mail): muchsync 2020-10-17 22:27:22 +02:00
Kierán Meinhardt
32f84a0aff chore: set email to posteo 2020-10-17 22:27:05 +02:00
Kierán Meinhardt
838efd4093 feat: depend less on nixpkgs-unstable 2020-10-16 08:23:27 +02:00
Kierán Meinhardt
d6a2e05590 feat(i3status-rust): only display battery percentage 2020-10-16 08:22:47 +02:00
Kierán Meinhardt
36b2f38234 feat: add vim-mail and mail-send commands 2020-10-14 20:13:29 +02:00
Kierán Meinhardt
689b6d6898 chore: update much 2020-10-14 20:13:04 +02:00
Kierán Meinhardt
96301914a9 feat(writing): adapt csl dirs to new pandoc 2020-10-14 20:12:53 +02:00
Kierán Meinhardt
14b0ef9dc6 feat(neovim): add mail; dont archive sent 2020-10-14 20:12:10 +02:00
Kierán Meinhardt
4b3f685a0c feat(wifi): add wannseeforum 2020-10-14 20:12:00 +02:00
Kierán Meinhardt
2073c517ca feat(wifi): add krebs 2020-10-07 08:57:08 +02:00
Kierán Meinhardt
7cfb61c5e8 chore: update much 2020-10-06 23:21:33 +02:00
Kierán Meinhardt
f072262354 feat: ignore .history 2020-10-06 23:21:24 +02:00
Kierán Meinhardt
8098cdc842 fix(catullus): use system-secrets 2020-10-06 23:21:04 +02:00
Kierán Meinhardt
717355a2cd chore: update 2020-10-05 21:27:20 +02:00
Kierán Meinhardt
c14e490d93 chore: update much 2020-10-02 09:21:51 +02:00
Kierán Meinhardt
1711dda150 feat(wifi): add factory 2020-10-01 21:01:37 +02:00
Kierán Meinhardt
9c7c1d35e6 chore: update much 2020-10-01 21:01:25 +02:00
Kierán Meinhardt
bc0ffde90e chore: update much 2020-09-30 11:40:56 +02:00
Kierán Meinhardt
f32cd1e4bc feat: default applications 2020-09-30 11:40:49 +02:00
Kierán Meinhardt
5ec3713ad3 chore(much): update 2020-09-29 22:59:37 +02:00
Kierán Meinhardt
d15225ca1f fix(i3status-rust): notmuch query 2020-09-29 22:59:02 +02:00
Kierán Meinhardt
956efaf350 feat(mail): use afew as initial tagging script 2020-09-27 19:31:29 +02:00
Kierán Meinhardt
232689dc10 feat(vim): add newsboat urls file 2020-09-26 21:08:22 +02:00
Kierán Meinhardt
01370d5d0b feat(mail): add notmuch-addrlookup 2020-09-26 21:08:05 +02:00
Kierán Meinhardt
5a787fd0bb feat(calcurse): regularly fetch caldav 2020-09-25 11:36:43 +02:00
Kierán Meinhardt
2152ea5e9d chore: update 2020-09-24 23:07:03 +02:00
Kierán Meinhardt
7132aeac86 chore: reorganize secrets 2020-09-24 19:25:47 +02:00
Kierán Meinhardt
676a76ea16 feat(i3status-rust): move mail setup to notmuch 2020-09-24 19:16:51 +02:00
Kierán Meinhardt
bf4defbc29 feat(mail): add mail-sync service 2020-09-24 19:16:36 +02:00
Kierán Meinhardt
15d87f6a8d feat(mail): improve mua to use all of argv 2020-09-24 11:20:37 +02:00
Kierán Meinhardt
904cbdbc76 feat(overlays): deduplicate 2020-09-24 11:13:21 +02:00
Kierán Meinhardt
4c9d55727c feat(mail): add much via submodule 2020-09-24 11:12:52 +02:00
Kierán Meinhardt
699796d06e feat(mail): configure notmuch 2020-09-24 10:35:53 +02:00
Kierán Meinhardt
16205c3655 fix(vim): disable brittany for haskell 2020-09-23 00:50:33 +02:00
Kierán Meinhardt
95a75db394 feat(git): ignore direnv files 2020-09-23 00:33:46 +02:00
Kierán Meinhardt
0a999a9ac7 feat(mail): add notmuch 2020-09-23 00:33:30 +02:00
Kierán Meinhardt
e427aa912e feat: make overlays available from everywhere 2020-09-23 00:33:23 +02:00
Kierán Meinhardt
854610384e feat: add calcurse 2020-09-21 14:48:36 +02:00
Kierán Meinhardt
60f920f3f0 feat(mail): add posteo 2020-09-21 14:48:21 +02:00
Kierán Meinhardt
7a9dd4c83e feat: move google-drive over to google-drive-ocamlfuse because grive2 is broken 2020-09-20 23:30:03 +02:00
Kierán Meinhardt
13bee034fa feat(neovim): add icalendar.vim 2020-09-20 23:29:27 +02:00
Kierán Meinhardt
c2dd2f97ef feat(mail): add amroplay 2020-09-16 16:27:18 +02:00
Kierán Meinhardt
07079de224 feat(catullus): disable urlwatch for MK 2020-09-16 09:34:01 +02:00
Kierán Meinhardt
49900967e2 feat(flix): update flix-index service and flixmenu 2020-09-15 23:04:44 +02:00
Kierán Meinhardt
d85c7caca7 feat(packages): improve dmenubluetooth 2020-09-15 20:33:08 +02:00
Kierán Meinhardt
46cf80a54c feat(dmenurandr): make only screen the primary screen 2020-09-15 16:21:52 +02:00
Kierán Meinhardt
404d8a81b4 feat(i3-status-rust): update time each second 2020-09-15 16:21:38 +02:00
Kierán Meinhardt
7e22e8f72a feat(i3): dont open terminal if no note was selected 2020-09-15 16:21:23 +02:00
Kierán Meinhardt
9ee2786315 feat: dmenubluetooth 2020-09-14 18:25:51 +02:00
Kierán Meinhardt
824dafb93c feat: gaslight 2020-09-14 08:33:39 +02:00
Kierán Meinhardt
2dbe03835c fix(homeros, scardanelli): remove hardcoded xrandrHeads settings 2020-09-10 16:36:05 +02:00
Kierán Meinhardt
e9faa01e1b fix(homeros): backlight device section 2020-09-10 16:35:48 +02:00
Kierán Meinhardt
90fe107176 fix: dmenurandr 2020-09-10 16:29:14 +02:00
Kierán Meinhardt
237c733c1d fix: overlay syntax 2020-09-10 13:07:07 +02:00
Kierán Meinhardt
5e768e932f fix: remove obsolete restart-vpn service 2020-09-10 12:14:48 +02:00
Kierán Meinhardt
4d153ebc5d feat(shell.nix): add release version as arg 2020-09-10 09:05:41 +02:00
Kierán Meinhardt
09fd7b5d8d feat(catullus): reenable urlwatch 2020-09-10 08:40:23 +02:00
Kierán Meinhardt
f97e7bd85e chore: move toml helpers into overlay 2020-09-10 08:39:50 +02:00
Kierán Meinhardt
c8bbbb6055 feat: add dmenurandr script 2020-09-09 09:35:50 +02:00
Kierán Meinhardt
1c52649be8 chore: clean networking.hosts, remove burner config 2020-09-08 23:33:01 +02:00
Kierán Meinhardt
58fc4c1ce6 chore(style): shell.nix 2020-09-08 22:21:51 +02:00
Kierán Meinhardt
02452abfa1 feat(packages): use unstable alacritty 2020-09-08 22:21:43 +02:00
Kierán Meinhardt
2e33c708d3 feat(git): add git-trim 2020-09-08 21:31:31 +02:00
Kierán Meinhardt
56b366d8fe chore: gitignore 2020-09-08 21:31:16 +02:00
Kierán Meinhardt
04a9f83bc8 feat: add krops to .versions 2020-09-08 21:30:30 +02:00
Kierán Meinhardt
a32eee9cad feat(wilde): enable tlp 2020-09-08 21:29:21 +02:00
Kierán Meinhardt
ecabce3025 feat: replace scripts by shell.nix 2020-09-08 21:28:58 +02:00
Kierán Meinhardt
f24269c83d feat(alacritty): remove flipped alacritty 2020-09-06 09:47:56 +02:00
Kierán Meinhardt
2112e4e34f feat(i3status-rust): add separators 2020-09-03 19:16:49 +02:00
Kierán Meinhardt
949bae5540 feat(hu-berlin): add alternate vpn 2020-09-03 19:16:27 +02:00
Kierán Meinhardt
ce502a9a23 feat(i3): i3bar on bottom 2020-09-03 10:19:46 +02:00
Kierán Meinhardt
9e8ee5d0e0 feat(vim): install undotree 2020-09-03 09:28:08 +02:00
Kierán Meinhardt
cdddcf11de feat(wifi): add born11 2020-09-03 09:27:50 +02:00
Kierán Meinhardt
f610ed83c5 feat(i3): autohide i3bar 2020-09-03 09:27:40 +02:00
Kierán Meinhardt
ed960eff06 chore: update voidrice 2020-08-28 15:21:34 +02:00
Kierán Meinhardt
32808989c1 fix(i3status-rust): change icons 2020-08-26 11:33:16 +02:00
Kierán Meinhardt
a07d7ed1e4 feat(wifi): add hotel_krone, install gateway-script 2020-08-26 11:32:53 +02:00
Kierán Meinhardt
fc96c4981f feat: install nextcloud client 2020-08-26 11:32:33 +02:00
Kierán Meinhardt
a678d47149 feat(matterbridge): bridge ##myengadin 2020-08-20 17:19:26 +02:00
Kierán Meinhardt
6dc3052fc0 feat(i3status-rust): remove corona block 2020-08-17 16:03:21 +02:00
Kierán Meinhardt
8d6411dc9a chore: update retiolum hosts 2020-08-17 16:01:39 +02:00
Kierán Meinhardt
d7a1b5d744 chore(retiolum): update hosts 2020-08-13 14:16:22 +02:00
Kierán Meinhardt
f4e3047abd feat(networkd): add kleiter 2020-08-13 14:16:05 +02:00
Kierán Meinhardt
652a5dfdb6 chore: update 2020-08-13 14:15:41 +02:00
Kierán Meinhardt
a7e831abff feat(wifi): add kleiter 2020-08-11 10:54:14 +02:00
Kierán Meinhardt
df63bed013 fix(i3status-rust): remove setsid wrappers 2020-08-11 10:53:59 +02:00
Kierán Meinhardt
e90b287db8 fix(i3status-rust): remove corona increase 2020-08-11 10:53:47 +02:00
Kierán Meinhardt
1ed55fcb59 feat(i3status-rust): show increase in corona cases 2020-07-27 22:38:41 +02:00
Kierán Meinhardt
d5d6da02e6 feat(newsboat): shortcut to queue and download youtube videos 2020-07-27 22:38:35 +02:00
Kierán Meinhardt
a2fd2d96ff feat(ssh): add github.com 2020-07-27 13:38:24 +02:00
Kierán Meinhardt
b2e32a4692 feat(mail): add work email 2020-07-25 09:04:12 +02:00
Kierán Meinhardt
456cc7b80c fix(chromium): remove cvim, add ublock 2020-07-25 09:04:01 +02:00
Kierán Meinhardt
05e7e84392 feat: add atd 2020-07-19 16:18:07 +02:00
Kierán Meinhardt
ac2c7b7036 fix(mingetty): minimalize text output 2020-07-19 07:57:44 +02:00
Kierán Meinhardt
b35dda6997 feat(neovim): force transparent background 2020-07-14 23:51:32 +02:00
Kierán Meinhardt
28f00240bb fix(mail): use STARTTLS for cock.li and hu-berlin.de 2020-07-14 23:51:07 +02:00
Kierán Meinhardt
c4574909de fix(mpv): get youtube in 720p 2020-07-11 20:45:57 +02:00
Kierán Meinhardt
43c008bcbf chore(i3): smaller gaps 2020-07-11 20:44:51 +02:00
Kierán Meinhardt
eadf80e8e4 fix(flix): handle correctly with systemd so it doesnt prolong shutting down 2020-07-11 20:44:20 +02:00
Kierán Meinhardt
b3caee106e feat(newsboat): shortcuts for opening with mpv and copying 2020-07-11 20:43:31 +02:00
Kierán Meinhardt
39c9a2533a feat: booksplit script 2020-07-11 20:43:19 +02:00
Kierán Meinhardt
5b0c915023 feat: revive traadfri 2020-07-11 20:42:04 +02:00
Kierán Meinhardt
875333962c chore: update 2020-07-11 20:41:26 +02:00
Kierán Meinhardt
08385b15e7 wilde: switch to SSD, add LUKS 2020-06-24 11:52:02 +02:00
Kierán Meinhardt
81551aa478 feat(newsboat): make headers yellow and empty feeds black 2020-06-22 15:34:55 +02:00
Kierán Meinhardt
871370e7a8 feat
- fix tmux config
- add window swallowing script
- make scripts an overlay
- setup disc burning
2020-06-22 08:44:09 +02:00
Kierán Meinhardt
e380f96f4c feat(i3status-rust): add week number and day 2020-06-16 20:29:36 +02:00
Kierán Meinhardt
dfdb9d0bdb fix(klem): make dmenu override more customizable 2020-06-16 19:50:34 +02:00
Kierán Meinhardt
90eed5cb3b fix(klem): rename clipboardSelection to selection 2020-06-16 19:20:28 +02:00
Kierán Meinhardt
4443d065ed feat(klem): make dmenu overridable 2020-06-16 19:14:57 +02:00
Kierán Meinhardt
5b189d6f17 fix(todo): remove backup 2020-06-16 19:01:16 +02:00
Kierán Meinhardt
d8a4d4eedf chore: nixfmt 2020-06-10 17:37:25 +02:00
Kierán Meinhardt
2c3957735b fix(i3): remove superfluous rot13 scripts from klem 2020-06-10 17:27:26 +02:00
Kierán Meinhardt
ddd9a96cec chore: update 2020-06-10 16:37:00 +02:00
Kierán Meinhardt
01c6dccc9c feat(i3): configure klem 2020-06-10 16:36:52 +02:00
Kierán Meinhardt
8e636461bd feat: add zoom-us and nixfmt 2020-06-09 21:38:16 +02:00
Kierán Meinhardt
dcb1e7cf1d feat(mpv): add mpris script 2020-06-09 21:38:04 +02:00
Kierán Meinhardt
82efad8ee8 fix(i3): redshift fix 2020-06-09 21:36:49 +02:00
Kierán Meinhardt
70cc121237 feat: klem - clipboard filter 2020-06-09 21:31:58 +02:00
Kierán Meinhardt
8b835c1252 feat(scripts): add initial version of klemmbrett 2020-06-04 13:29:45 +02:00
Kierán Meinhardt
489386992e feat(i3status-rust): show only used (and not cached) memory 2020-06-04 13:29:29 +02:00
Kierán Meinhardt
ac90b48268 feat(ipa): make into filter 2020-06-04 13:29:01 +02:00
Kierán Meinhardt
c725ed62b5 chore: reformat 2020-06-04 13:28:49 +02:00
Kierán Meinhardt
078cbb8830 fix(mailcap) 2020-06-02 23:05:01 +02:00
Kierán Meinhardt
7b0d5977cc feat(i3): shortcuts for redshift and flameshot
redshift now doesnt run as a daemon anymore since it interferes with
screen inversion due to xcalib
2020-06-02 23:02:40 +02:00
Kierán Meinhardt
749fba4c7d feat: get flameshot-once working 2020-06-02 23:02:21 +02:00
Kierán Meinhardt
884e50b8cd fix(vim): disable hard wrap in email 2020-05-31 18:25:57 +02:00
Kierán Meinhardt
405d6d8407 feat(i3): status bar separator 2020-05-31 18:25:39 +02:00
Kierán Meinhardt
a3163e6260 feat(mutt): add archive wrapper 2020-05-31 18:25:22 +02:00
Kierán Meinhardt
b379f09c20 feat: improve held key rate 2020-05-31 18:25:00 +02:00
Kierán Meinhardt
4658252570 feat(i3): key for flipped alacritty 2020-05-31 18:23:45 +02:00
Kierán Meinhardt
2e6ac15443 fix: no kdeconnect on other devices than homeros 2020-05-31 18:23:25 +02:00
Kierán Meinhardt
eca7ee17cb feat(alacritty): add flipped variant 2020-05-31 18:23:08 +02:00
Kierán Meinhardt
bbdf762c5c fix(vim): write mail in german 2020-05-27 10:40:23 +02:00
Kierán Meinhardt
046424b399 feat(i3): show *active* covid cases 2020-05-27 10:40:23 +02:00
Kierán Meinhardt
a20ad8cc7e feat(i3): remove music from status bar 2020-05-27 10:40:23 +02:00
Kierán Meinhardt
4b25ff0b27 feat: add flameshot-once 2020-05-27 10:40:23 +02:00
Kierán Meinhardt
729b43237b fix(mail): sort by date, archive from pager 2020-05-27 10:40:23 +02:00
Kierán Meinhardt
26e7d546c1 fix: spotifyd notification format 2020-05-24 10:08:23 +02:00
Kierán Meinhardt
fd36d5279c feat: add scrot-dmenu script 2020-05-24 10:08:13 +02:00
Kierán Meinhardt
9a33c1a106 chore: update, spotify, notify 2020-05-20 20:45:00 +02:00
Kierán Meinhardt
a59be3f398 feat: spotifyd, spotify-tui 2020-05-20 00:06:26 +02:00
Kierán Meinhardt
39bc899d44 feat(i3): remove pomodoro timer 2020-05-19 16:33:56 +02:00
Kierán Meinhardt
e34ee8399b fix(wallpaper): dont fetch unused wallpaper repos 2020-05-19 16:32:58 +02:00
Kierán Meinhardt
a842d2a691 fix(mail): mailcap lynx 2020-05-19 16:32:58 +02:00
Kierán Meinhardt
a77f630681 feat(ipa): add second doc source 2020-05-19 14:59:47 +02:00
Kierán Meinhardt
b93c4e9c9c feat(vim): ignorecase, toggle background 2020-05-19 14:59:25 +02:00
Kierán Meinhardt
ba03c19a74 feat(i3): improve mail status 2020-05-19 14:58:50 +02:00
Kierán Meinhardt
796f73ef5f fix(mail): unset neomutt read envelope 2020-05-19 14:58:08 +02:00
Kierán Meinhardt
0e016dee48 fix(ipa.py): sort 2020-05-17 10:22:05 +02:00
Kierán Meinhardt
e143020e20 feat(vim): completion 2020-05-17 10:21:40 +02:00
Kierán Meinhardt
b343bb971d fix(i3): resize mode, pomodoro, notemenu, scrot 2020-05-17 10:21:04 +02:00
Kierán Meinhardt
33afa0cf36 feat(notemenu): show without leading ./, show all levels deep 2020-05-15 08:08:01 +02:00
Kierán Meinhardt
fa22ee2a16 feat(i3): add pomodoro to status bar
i3-nagbar doesnt work yet
2020-05-15 08:07:11 +02:00
Kierán Meinhardt
e4139569d5 feat(newsboat): tweaks from tallguyjenks 2020-05-15 08:06:51 +02:00
Kierán Meinhardt
b7881ac9af feat(fonts): use source * pro 2020-05-15 08:06:28 +02:00
Kierán Meinhardt
07dbe2477f feat: switch from memo to vimwiki 2020-05-15 08:06:14 +02:00
Kierán Meinhardt
0285299f22 feat(packages): remove xsampa-to-ipa.js 2020-05-15 08:05:01 +02:00
Kierán Meinhardt
afed1b91b2 feat(packages): write xsampa to ipa converter 2020-05-15 08:04:18 +02:00
Kierán Meinhardt
6a03e93450 feat(wallpapers): use saudade 2020-05-14 10:32:09 +02:00
Kierán Meinhardt
8030dd6371 feat: add trash-cli 2020-05-14 10:31:58 +02:00
Kierán Meinhardt
36e8c579ba feat: add my NUR packages 2020-05-14 10:31:42 +02:00
Kierán Meinhardt
2ae0b24b6e feat(vim): install vimwiki 2020-05-14 10:31:18 +02:00
Kierán Meinhardt
56c494024a feat(git): add gh 2020-05-14 10:31:04 +02:00
Kierán Meinhardt
279ba28afa feat(wallpaper): use my repo 2020-05-12 18:44:13 +02:00
Kierán Meinhardt
9680174b39 feat(wifi): add one network 2020-05-12 18:43:59 +02:00
Kierán Meinhardt
8d6aa32e4b feat(i3status-rust): run fetching tasks in background 2020-05-08 11:51:22 +02:00
Kierán Meinhardt
eff6f65a71 feat(cloud): symlink mahlzeit directory 2020-05-08 11:47:48 +02:00
Kierán Meinhardt
c272396c89 feat(vim): add vim-css-color 2020-05-08 11:47:34 +02:00
Kierán Meinhardt
131026381b feat(packages): dragon 2020-05-03 00:17:28 +02:00
Kierán Meinhardt
338ce8d0aa fix(newsboat): style 2020-05-03 00:17:20 +02:00
Kierán Meinhardt
4ba5a08a26 feat(i3): add mail to bar, make into dock 2020-05-03 00:17:09 +02:00
Kierán Meinhardt
89b176b251 fix(theme): use adwaita 2020-05-03 00:16:39 +02:00
Kierán Meinhardt
e3ec4f560c feat(i3): add pomodoro to emoji icon pack 2020-04-28 20:08:59 +02:00
Kierán Meinhardt
68792c4256 feat(i3): improve task in bar 2020-04-27 12:06:37 +02:00
Kierán Meinhardt
c7101d432c chore: update todo 2020-04-27 12:06:10 +02:00
Kierán Meinhardt
22370a6e14 fix(fzf): Ctrl+T, Alt+C commands 2020-04-27 09:56:22 +02:00
Kierán Meinhardt
9b25fbf753 feat: enable gnupg agent 2020-04-26 20:21:39 +02:00
Kierán Meinhardt
fea816416f fix(i3): sort notes in notemenu by access date 2020-04-26 20:21:13 +02:00
Kierán Meinhardt
d74d4ff2ad feat(mail): add cock.li 2020-04-25 21:34:27 +02:00
Kierán Meinhardt
a629925124 feat(neomutt): configure 2020-04-23 13:15:48 +02:00
Kierán Meinhardt
49cd307026 feat(todo.txt): reactivate and add to status bar 2020-04-23 13:15:34 +02:00
Kierán Meinhardt
e21eb7887c feat: big upgrade to 20.03
use emojis for i3status-rust
remove overlays
configure mail via home-manager
adapt to 20.03 config options
automatically symlink cloud directories into home
2020-04-22 17:44:42 +02:00
Kierán Meinhardt
49c3ab78d1 fix(i3): only show top level in note menu 2020-04-19 19:00:13 +02:00
Kierán Meinhardt
c2d1a80875 feat: sxiv, notemenu, stardict, neomutt
feat(sxiv): add (broken) key-handlers
feat(i3): add notemenu
feat(stardict): add (broken) folder
feat(neomutt): add kieran.meinhardt@gmail.com
2020-04-19 13:02:27 +02:00
Kierán Meinhardt
674709eae0 feat(mail): prepare for 20.03 but deactivate 2020-04-19 13:02:27 +02:00
Kierán Meinhardt
792766fd37 feat(i3): add floating calculator 2020-04-19 13:02:27 +02:00
Kierán Meinhardt
07f72f3ba8 chore: update 2020-04-19 13:02:27 +02:00
Kierán Meinhardt
5ca0742586 chore(niveum-update) 2020-04-19 13:02:27 +02:00
Kierán Meinhardt
866575feee fix(i3status-rust): dont add corona changes 2020-04-19 12:22:06 +02:00
Kierán Meinhardt
5e9f95a9ef chore(mail): update 2020-04-18 08:46:42 +02:00
Kierán Meinhardt
62d0023358 fix(vim): ^L for :Rg 2020-04-16 19:28:17 +02:00
Kierán Meinhardt
5eda4ce94c feat(niveum-update): modularize 2020-04-16 19:27:25 +02:00
Kierán Meinhardt
6c528d6a0f fix(newsboat): set $NEWSBOAT_HOME correctly, add to i3status-rust 2020-04-16 19:27:09 +02:00
Kierán Meinhardt
54a9762dfb fix(flix): only index sorted files 2020-04-16 10:37:27 +02:00
Kierán Meinhardt
64666ba42e fix(flix): use global cache location 2020-04-16 10:35:20 +02:00
Kierán Meinhardt
72fd9982e4 fix: dont restrict $PATH in wrapped scripts
otherwise running $BROWSER etc won't work
2020-04-15 20:41:16 +02:00
Kierán Meinhardt
104c173549 feat: scripts from luke smith 2020-04-15 20:39:37 +02:00
Kierán Meinhardt
e3f1557099 feat: add mansplain 2020-04-15 20:36:50 +02:00
Kierán Meinhardt
b15d88710e feat(newsboat): open with linkhandler 2020-04-15 20:36:10 +02:00
Kierán Meinhardt
a7577d9ae9 feat(newsboat): add save directory 2020-04-15 16:04:43 +02:00
Kierán Meinhardt
8bdbd242dd feat: add scrot 2020-04-15 16:02:51 +02:00
Kierán Meinhardt
c743b8bfe0 feat(vim): add goyo 2020-04-15 16:01:32 +02:00
Kierán Meinhardt
d14dae097e fix(i3): disable arrow keys 2020-04-15 16:01:01 +02:00
Kierán Meinhardt
84e3f21c4c fix(flix): flixmenu now takes options 2020-04-15 16:00:07 +02:00
Kierán Meinhardt
9020ae67c8 fix(fzfmenu): include bash and handle options 2020-04-15 14:58:23 +02:00
Kierán Meinhardt
7010bbb0e8 feat(flix): move to own config, add indexing and menu script 2020-04-15 14:57:41 +02:00
Kierán Meinhardt
8235b6aa81 feat(i3): reorder shortcuts, use dmenu_run 2020-04-15 14:56:57 +02:00
Kierán Meinhardt
3ca9c87396 feat(dunst): sans serif font 2020-04-15 14:56:22 +02:00
Kierán Meinhardt
752a80fc60 fix(retiolum): update hosts 2020-04-15 00:10:58 +02:00
Kierán Meinhardt
99d11d94b9 feat(script): wrapper function 2020-04-15 00:10:58 +02:00
Kierán Meinhardt
4b5f5442f7 feat(i3status-rust): corona block 2020-04-15 00:10:58 +02:00
Kierán Meinhardt
ade69c281b fix(fzf): --preview= 2020-04-15 00:10:58 +02:00
Kierán Meinhardt
70a3885e6d fix(wallpaper): use spacescapes 2020-04-14 22:03:42 +02:00
Kierán Meinhardt
e9dfe86550 fix(brave): dont add web archive addon since brave does that by default 2020-04-14 15:40:59 +02:00
Kierán Meinhardt
b5fdf77cee feat(homeros): activate kdeconnect 2020-04-14 15:40:38 +02:00
Kierán Meinhardt
a4a69fed1c feat(aliases): add systemctl --user alias 2020-04-14 10:28:56 +02:00
Kierán Meinhardt
e7c78938a0 fix(fzf): FZF_DEFAULT_OPTS was broken 2020-04-14 10:28:32 +02:00
Kierán Meinhardt
9ba7acd05e fix(vim): change colourscheme, dont conceal pandoc, check german and english 2020-04-13 20:11:29 +02:00
Kierán Meinhardt
93f759b672 fix(newsboat): article colour 2020-04-13 12:53:44 +02:00
Kierán Meinhardt
8173bd1c45 fix(newsboat) 2020-04-13 12:48:09 +02:00
Kierán Meinhardt
931f668cf2 feat(i3): float all mpvs, sticky shortcut 2020-04-13 11:58:56 +02:00
Kierán Meinhardt
13bb0a7906 feat(newsboat): revive 2020-04-13 11:55:47 +02:00
Kierán Meinhardt
c90b2259ef feat(fonts): use IBM flex, add emoji font 2020-04-13 11:05:21 +02:00
Kierán Meinhardt
8f9b8b631c fix(i3status-rust): dont use awesome theme 2020-04-13 11:02:37 +02:00
Kierán Meinhardt
ee731c8a92 fix(retiolum): rename flix 2020-04-13 11:01:39 +02:00
Kierán Meinhardt
30cd8e00b9 feat(scripts): dmenu-emoji 2020-04-13 11:00:20 +02:00
Kierán Meinhardt
5cb8da0bf1 fix(git): use g alias 2020-04-13 10:56:44 +02:00
Kierán Meinhardt
82f87161bd fix(gtk): use dark theme 2020-04-13 10:55:20 +02:00
Kierán Meinhardt
cc96633900 feat: install brave and make default browser 2020-04-13 10:54:54 +02:00
Kierán Meinhardt
8714caa93c fix(alacritty): make transparent 2020-04-13 10:53:47 +02:00
Kierán Meinhardt
980f4571bd fix(wallpapers): rename config, use Luke Smith's, update hourly 2020-04-13 10:53:26 +02:00
Kierán Meinhardt
76354e605b feat(fzf): configure and integrate into shells 2020-04-13 10:52:17 +02:00
Kierán Meinhardt
eb0771c233 fix: fzfmenu 2020-04-10 16:18:20 +02:00
Kierán Meinhardt
7a1a092f6b feat(i3): improve fzfmenu 2020-04-10 15:06:15 +02:00
Kierán Meinhardt
8a7fd14968 feat(i3): use fzfmenu 2020-04-10 14:53:16 +02:00
Kierán Meinhardt
b284b2aabb feat(i3): larger font on homeros, more monospace 2020-04-10 14:52:54 +02:00
Kierán Meinhardt
73d9e92cf9 feat(i3): add gaps 2020-04-10 14:52:28 +02:00
Kierán Meinhardt
2116bdb62d chore: rename scripts overlay, deactivate NUR packages 2020-04-09 20:41:27 +02:00
Kierán Meinhardt
a0ddfff751 feat(packages): notetags script 2020-04-09 19:30:35 +02:00
Kierán Meinhardt
cf339a930b fix(scripts): bash shebang 2020-04-09 19:30:25 +02:00
Kierán Meinhardt
d118ce65b7 fix(packages): reorganize nix-git 2020-04-09 18:15:41 +02:00
Kierán Meinhardt
8890b30e5f chore: move more to NUR 2020-04-09 18:15:25 +02:00
Kierán Meinhardt
ebaff40268 feat: move to NUR 2020-04-09 17:51:16 +02:00
Kierán Meinhardt
015f0ac438 feat(vim): add FZF shortcuts 2020-04-09 16:59:00 +02:00
Kierán Meinhardt
72c3f63b02 fix(packages): reorganize 2020-04-09 16:58:21 +02:00
Kierán Meinhardt
c5cec7d44c chore(catullus): split up telegram-bots 2020-04-09 16:57:24 +02:00
Kierán Meinhardt
c6c621baf1 chore(packages): reorganize scripts 2020-04-09 16:56:47 +02:00
Kierán Meinhardt
4abc0f4221 chore(init.vim): remove comments 2020-04-09 11:39:43 +02:00
Kierán Meinhardt
d710ef3b66 fix: use stable pandoc 2020-04-09 11:39:29 +02:00
Kierán Meinhardt
b5b18e46dc feat(packages): add ix.io client 2020-04-09 11:39:14 +02:00
Kierán Meinhardt
70f0cb6bf2 chore: update 2020-04-09 11:38:57 +02:00
Kierán Meinhardt
af66ff8692 fix: move prog/git to projects 2020-04-09 11:38:36 +02:00
Kierán Meinhardt
d3b58a3053 feat(syncthing): add heym 2020-04-08 18:27:27 +02:00
Kierán Meinhardt
1167fb9feb fix(vim): colorscheme 2020-03-23 08:24:21 +01:00
Kierán Meinhardt
54d102c932 fix(matterbridge): charset 2020-03-15 16:44:28 +01:00
Kierán Meinhardt
fa3eace6c3 feat: git flow alias, jetbrains mono 2020-03-03 12:22:42 +01:00
Kierán Meinhardt
2cdaa5c6e2 chore: update nodePackages 2020-03-01 12:55:12 +01:00
Kierán Meinhardt
457b995f1c feat(vim): add reason support 2020-03-01 12:55:01 +01:00
Kierán Meinhardt
bc85925037 chore: update 2020-03-01 12:18:33 +01:00
Kierán Meinhardt
524efb5ea5 fix: more minimal vim 2020-03-01 12:18:19 +01:00
Kierán Meinhardt
ebb075cdfb feat(i3): add qutebrowser shortcut 2020-02-09 18:33:22 +01:00
Kierán Meinhardt
bc58b830eb fix(hledger): work with all.journal and current.journal 2020-02-03 21:22:16 +01:00
Kierán Meinhardt
b06a89f5f0 fix(nachtischsatan-bot): sleep for up to 4 seconds 2020-01-30 19:09:58 +01:00
Kierán Meinhardt
8548ba5b49 feat: nachtischsatan-bot 2020-01-29 17:23:32 +01:00
Kierán Meinhardt
99883608bd feat: install qutebrowser 2020-01-26 12:43:44 +01:00
Kierán Meinhardt
de67da0f85 fix(literature-quote): pimp output format 2020-01-26 12:39:08 +01:00
Kierán Meinhardt
571e7fa804 fix(wilde): duplicate settings 2020-01-26 12:38:54 +01:00
Kierán Meinhardt
82ea9c608c fix(seafile): service is not forking 2020-01-25 18:26:42 +01:00
Kierán Meinhardt
4985017bcd fix(todo.sh): remove git error message 2020-01-25 18:26:25 +01:00
Kierán Meinhardt
d7aca4feb6 feat(i3 status rust) 2020-01-24 10:09:04 +01:00
Kierán Meinhardt
10874028f3 chore: be diplomatic with scardanelli shas 2020-01-24 10:08:15 +01:00
Kierán Meinhardt
dac90e7ec4 Revert "Revert "chore: update hashes for resources""
This reverts commit 7b4403ada3.
2020-01-24 09:20:20 +01:00
Kierán Meinhardt
723f00c8ab fix(wilde): group the settings 2020-01-24 08:59:40 +01:00
Kierán Meinhardt
692df84f28 fix(ssh): clean up 2020-01-24 08:58:10 +01:00
Kierán Meinhardt
28959b5884 fix(retiolum): move to system configs 2020-01-24 08:57:39 +01:00
Kierán Meinhardt
08303c4635 fix(homeros): intel graphics 2020-01-22 16:40:05 +01:00
Kierán Meinhardt
09370e800a fix: traadfri 2020-01-22 16:39:49 +01:00
Kierán Meinhardt
7fc9a76633 fix(homeros): nvidia 2020-01-21 23:40:49 +01:00
Kierán Meinhardt
df0d5caa70 feat: add sane 2020-01-21 08:40:10 +01:00
Kierán Meinhardt
7a7f296c43 fix(homeros): xrandr heads 2020-01-21 08:20:32 +01:00
Kierán Meinhardt
233a0a3b4c chore(deploy.nix): syntax 2020-01-18 17:10:47 +01:00
Kierán Meinhardt
c3fea51536 fix(catullus): disable wireless 2020-01-18 17:10:33 +01:00
Kierán Meinhardt
2b2bffcfc2 fix: autorenkalender 2020-01-18 17:09:57 +01:00
Kierán Meinhardt
e603f7027c fix: dont use unstable telegram, it takes too long to build 2020-01-18 12:41:42 +01:00
Kierán Meinhardt
7839ca7657 feat(syncthing): add music directory 2020-01-18 12:41:19 +01:00
Kierán Meinhardt
7b4403ada3 Revert "chore: update hashes for resources"
This reverts commit dde21aa97b.
2020-01-18 11:25:53 +01:00
Kierán Meinhardt
d615669c20 chore: update sources 2020-01-18 09:36:57 +01:00
Kierán Meinhardt
dde21aa97b chore: update hashes for resources 2020-01-18 09:36:38 +01:00
Kierán Meinhardt
3dcad1caca fix: openvpn 2020-01-18 08:54:31 +01:00
Kierán Meinhardt
92b506a601 fix(git): remove supertab 2020-01-14 22:28:48 +01:00
Kierán Meinhardt
800dd22fad chore: disable kdeconnect indicator 2020-01-07 19:28:28 +01:00
Kierán Meinhardt
66f78ccf38 fix: reorder monitors 2020-01-06 22:20:35 +01:00
Kierán Meinhardt
f31e0f31c2 fix(xautolock): dont suspend ever 2020-01-03 12:01:46 +01:00
Kierán Meinhardt
c56652fd61 fix(todo.txt): correctly set TODO_DIR 2020-01-03 12:01:32 +01:00
Kierán Meinhardt
7d5a39db6f chore: _versions -> .versions 2019-12-27 23:57:12 +01:00
Kierán Meinhardt
9c1cfecb13 fix(networks): I cannot use sed :c 2019-12-27 23:43:29 +01:00
Kierán Meinhardt
7b0a3cf884 chore: remove lib, sway 2019-12-27 23:43:06 +01:00
Kierán Meinhardt
c9c6b66f69 fix(networks): use sed for CCC 2019-12-27 21:59:49 +01:00
Kierán Meinhardt
1be35491e2 chore: clean up 2019-12-27 21:59:26 +01:00
Kierán Meinhardt
e2e816394f fix(todo.sh): move to .todo subdirectory 2019-12-27 19:28:29 +01:00
Kierán Meinhardt
3fb1941e59 fix(packages): pin rust nightly 2019-12-27 12:56:42 +01:00
Kierán Meinhardt
b5041fb44b feat(networking): add 36C3 2019-12-27 11:42:58 +01:00
Kierán Meinhardt
a4257aac68 feat(packages): add jsonschema 2019-12-24 15:44:05 +01:00
Kierán Meinhardt
782a4d7fa5 fix(seafile): dont always restart 2019-12-09 16:37:57 +01:00
Kierán Meinhardt
6d39e33059 fix(cloud) 2019-12-09 08:05:14 +01:00
Kierán Meinhardt
0d394f319f fix(NIX_PATH): remove stupid defaults 2019-12-09 07:46:55 +01:00
Kierán Meinhardt
22b5b2f8f4 feat: add citation style directory 2019-12-09 07:46:11 +01:00
Kierán Meinhardt
e8e83873e7 fix(constants): extract browser to $BROWSER 2019-12-08 22:38:19 +01:00
Kierán Meinhardt
309318c4b6 fix(constants): extract terminal to $TERMINAL 2019-12-08 22:38:05 +01:00
Kierán Meinhardt
5664786ab4 fix(seafile, dropbox): move to user service 2019-12-08 22:37:16 +01:00
Kierán Meinhardt
d64c349fe3 fix(keyboard): remove russian 2019-12-08 22:02:25 +01:00
Kierán Meinhardt
afa7fbe6bd feat(wifi): add H.K. 2019-12-08 19:26:53 +01:00
Kierán Meinhardt
b89ba23236 fix(rofi): cool drun 2019-12-03 23:18:31 +01:00
Kierán Meinhardt
80176887f5 fix(openvpn): route only HU traffic 2019-12-03 23:18:14 +01:00
Kierán Meinhardt
175f16e168 fix: improve update and deploy 2019-12-03 23:17:47 +01:00
Kierán Meinhardt
f96c218a9b fix: add niveum to PATH 2019-12-03 23:17:22 +01:00
Kierán Meinhardt
5b824354ec chore: remove todoist 2019-12-03 20:12:39 +01:00
Kierán Meinhardt
0a9ba892a2 feat: add niveum-scripts 2019-11-30 19:34:08 +01:00
Kierán Meinhardt
12e4ba3de8 fix(catullus): add state version, disable urlwatch 2019-11-30 18:49:39 +01:00
Kierán Meinhardt
9cc6eac782 fix(catullus) 2019-11-30 15:30:25 +01:00
Kierán Meinhardt
3d8d577df4 fix(scardanelli): add battery block 2019-11-30 13:45:51 +01:00
Kierán Meinhardt
ab465804c5 fix(update-channels, versions): update 2019-11-30 13:44:25 +01:00
Kierán Meinhardt
66d0c03dc7 fix(version): file name 2019-11-30 13:43:34 +01:00
Kierán Meinhardt
88c0b3c629 feat: niveum version 2019-11-30 13:38:56 +01:00
Kierán Meinhardt
5a5fb062f9 fix(deploy): helper 2019-11-26 20:16:57 +01:00
Kierán Meinhardt
27608c1f2d feat: text2pdf 2019-11-24 10:40:52 +01:00
Kierán Meinhardt
a8c99be137 feat(overlays): rust 2019-11-24 10:40:32 +01:00
Kierán Meinhardt
f85bcbe023 fix: minimize + optimize packages and services 2019-11-19 08:43:23 +01:00
Kierán Meinhardt
d7b145f64b fix(toml): output name 2019-11-19 07:47:50 +01:00
Kierán Meinhardt
834c35e670 feat(zathura): side by side mode on left 2019-11-19 07:47:50 +01:00
Kierán Meinhardt
21a1c12c52 fix(random-background): only output jpg files 2019-11-12 19:37:02 +01:00
Kierán Meinhardt
d6dd9f82c4 fix(packages): move to overlays 2019-11-09 16:33:59 +01:00
Kierán Meinhardt
e296de9ed1 feat: add overlays, write TOML 2019-11-05 21:59:51 +01:00
Kierán Meinhardt
ff99bfcb5a fix(kmein.depp): add final newline in help 2019-11-05 21:59:07 +01:00
Kierán Meinhardt
d8a0862430 fix(systems): stateVersion 2019-11-05 21:58:49 +01:00
Kierán Meinhardt
ce100eacbb fix: readd latex, take pandoc from unstable 2019-11-05 08:38:48 +01:00
Kierán Meinhardt
edc6ba42bd feat(deploy): manage versions in json 2019-10-30 22:09:49 +01:00
Kierán Meinhardt
ab9e9c0d47 chore: upgrade 2019-10-26 19:44:32 +02:00
Kierán Meinhardt
f9e2fd596f feat(fonts): GFS fonts 2019-10-26 19:44:22 +02:00
Kierán Meinhardt
394ec9309f fix(scripts): niveum-update, where, wcd 2019-10-26 19:43:29 +02:00
Kierán Meinhardt
6591a39532 chore: move to <niveum/*> 2019-10-26 13:43:30 +02:00
Kierán Meinhardt
15cddf337e feat(printing): try to add OfficeJet 2019-10-26 13:30:12 +02:00
Kierán Meinhardt
ee96da36ca feat: add /var/src to NIX_PATH 2019-10-26 13:29:56 +02:00
Kierán Meinhardt
a0661ef34b fix(syncthing): use new declarative options 2019-10-24 09:08:19 +02:00
Kierán Meinhardt
6471e43d60 feat(git): add gitflow 2019-10-24 09:08:19 +02:00
Kierán Meinhardt
e70ca97656 feat(git): use diff-so-fancy 2019-10-24 09:08:19 +02:00
Kierán Meinhardt
9c497f24d4 fix: catullus deploy expression 2019-10-13 12:48:51 +02:00
Kierán Meinhardt
fc2f25c907 feat: upgrade wilde 2019-10-13 12:48:39 +02:00
Kierán Meinhardt
249532b0e3 fix: revive brittany 2019-10-12 12:23:24 +02:00
Kierán Meinhardt
36d51e5a60 chore: upgrade to 19.09 2019-10-11 21:12:32 +02:00
Kierán Meinhardt
922b3cdabd chore: update <nixpkgs-unstable> 2019-10-09 18:59:24 +02:00
Kierán Meinhardt
5ca680eb06 feat: add nautilus 2019-10-09 18:58:35 +02:00
Kierán Meinhardt
45fe60cdfe feat(aliases): add pbcopy and pbpaste 2019-10-09 18:57:42 +02:00
Kierán Meinhardt
65b5afacf8 feat: replace backgrounds by elementary wallpapers 2019-10-04 16:15:58 +02:00
Kierán Meinhardt
c9e90ca2c1 feat(wilde): add sd card to fileSystems 2019-10-02 21:29:40 +02:00
Kierán Meinhardt
a36decd409 feat: add favicon script 2019-09-27 23:53:16 +02:00
Kierán Meinhardt
7fe20551f5 fix: use unstable tdesktop 2019-09-27 23:52:54 +02:00
Kierán Meinhardt
d5b387b04d fix(xautolock): remove lightning because it is annoying 2019-09-25 19:37:24 +02:00
Kierán Meinhardt
52c1ee51aa fix(hledger): add balance sheet on entry 2019-09-25 19:14:09 +02:00
Kierán Meinhardt
d88763f18a fix(i3): configure i3status-rust by battery block device 2019-09-25 19:12:12 +02:00
Kierán Meinhardt
3134bbc747 fix(openvpn): option for only-hu-traffic 2019-09-25 18:38:03 +02:00
Kierán Meinhardt
ee22f13f22 fix(i3): use theme colours for i3status-rust 2019-09-25 18:37:37 +02:00
Kierán Meinhardt
f93a0e04a2 fix(sncli): use toINI 2019-09-25 18:37:08 +02:00
Kierán Meinhardt
7b8e0c47a4 fix(wifi): add priorities, BVG 2019-09-25 18:36:57 +02:00
Kierán Meinhardt
bfe3ba925f feat(i3): add key to invert display 2019-09-25 10:12:39 +02:00
Kierán Meinhardt
7343206622 feat(i3): use i3-status-rust 2019-09-25 10:12:01 +02:00
Kierán Meinhardt
6e41f78863 feat: the font revolution 2019-09-25 10:11:18 +02:00
Kierán Meinhardt
93c87be579 fix: update alacritty 2019-09-25 10:10:36 +02:00
Kierán Meinhardt
f9a6140ad7 fix(i3): XF86 keys 2019-09-24 23:32:06 +02:00
Kierán Meinhardt
25dbc57b11 feat(zsh): directory in title bar 2019-09-24 23:31:41 +02:00
Kierán Meinhardt
a03fe53dd5 fix(fonts): use Inconsolata 2019-09-24 23:31:22 +02:00
Kierán Meinhardt
56f52ffe7f feat(aliases): chromium-incognito 2019-09-24 23:17:03 +02:00
Kierán Meinhardt
c99d1f33a1 feat: move to alacritty 2019-09-24 23:16:08 +02:00
Kierán Meinhardt
81f53a25b6 feat(wifi): add Mayflower 2019-09-24 16:47:53 +02:00
Kierán Meinhardt
a146155524 fix: style 2019-09-24 16:47:37 +02:00
Kierán Meinhardt
9ae7c58266 feat(ghci): set OverloadedStrings 2019-09-24 16:47:18 +02:00
Kierán Meinhardt
0b2274122d feat(systemd-boot): only display last 5 generations 2019-09-24 16:46:43 +02:00
Kierán Meinhardt
24726e02f0 feat(aliases): use weechat as ssh prism.r 2019-09-24 16:46:04 +02:00
Kierán Meinhardt
f78a5d9002 improvement(niveum scripts): calculate NIVEUM_DIR 2019-09-24 16:45:12 +02:00
Kierán Meinhardt
088d5092dc feat: add newsboat 2019-09-24 16:44:15 +02:00
Kierán Meinhardt
f3d2f9bb2c feat(mr): manage with nix 2019-09-24 16:43:53 +02:00
Kierán Meinhardt
e542a1197f feat(aliases): add ix.io 2019-09-21 18:23:26 +02:00
Kierán Meinhardt
637172dbcb fix(exa): sort by file type 2019-09-14 20:26:07 +02:00
Kierán Meinhardt
fb157bbe2d feat: update nixpkgs 2019-09-14 18:44:03 +02:00
Kierán Meinhardt
34a7f98de8 feat(i3): open python3 console with calculator button 2019-09-14 18:43:48 +02:00
Kierán Meinhardt
10c5bb621d fix: syntax 2019-09-14 18:43:23 +02:00
Kierán Meinhardt
0e63a16128 feat: switch to macOS colorscheme 2019-09-14 18:43:11 +02:00
Kierán Meinhardt
c31a4e2ba5 fix(niveum scripts): reference needed packages 2019-09-14 18:42:49 +02:00
Kierán Meinhardt
5653b5578d feat(aliases): use makeBinPath 2019-09-14 18:42:18 +02:00
Kierán Meinhardt
f4cae1278e improvement: use more nix library functions 2019-09-11 07:34:38 +02:00
Kierán Meinhardt
4d28abff2a improvement: use builtins.toJSON wherever possible 2019-09-11 07:34:18 +02:00
Kierán Meinhardt
ddb465367e improvement: use lib.strings.fileContents wherever possible 2019-09-11 07:33:27 +02:00
Kierán Meinhardt
890da6c00d fix(todo.txt): dont error if not in git repository 2019-09-09 17:41:15 +02:00
Kierán Meinhardt
87365b6585 feat(catullus): remove cool-village 2019-09-05 07:18:59 +02:00
Kierán Meinhardt
88ab354e79 feat(packages): add mahlzeit 2019-09-05 07:18:08 +02:00
Kierán Meinhardt
4176a6b7cf fix(chromium): remove asciidoctor plugin 2019-09-04 14:49:34 +02:00
Kierán Meinhardt
a653057414 feat(ssh): add gitlab.gchq.icu 2019-09-03 21:11:21 +02:00
Kierán Meinhardt
0959e9ff43 feat(haskell packages): add pretty and prettyprinter 2019-09-03 14:46:23 +02:00
Kierán Meinhardt
5ed1eeacbc fix(direnv): correctly setup history file, use shell.nix 2019-09-01 10:34:52 +02:00
Kierán Meinhardt
bc8140125d feat: package gourmet (WIP) 2019-08-27 17:28:31 +02:00
Kierán Meinhardt
cc02d5af08 feat(mail): add password command (broken) 2019-08-27 17:28:31 +02:00
Kierán Meinhardt
04dbd783c2 docs: add @users 2019-08-27 17:28:31 +02:00
Kierán Meinhardt
a143b803bd fix(user): use isNormalUser 2019-08-27 17:27:36 +02:00
Kierán Meinhardt
e73c3d16f6 feat(shell): add aliases 2019-08-27 17:27:26 +02:00
Kierán Meinhardt
6878535724 docs: add todo 2019-08-27 12:31:22 +02:00
Kierán Meinhardt
a1bfd2a9ec feat(todo.sh): use project local todo.txt file 2019-08-26 16:51:58 +02:00
Kierán Meinhardt
5478672eaa feat(catullus): urlwatch HU klassphil page 2019-08-26 16:42:39 +02:00
Kierán Meinhardt
ed0c6cc0bd feat(neovim): add ddate abbreviation 2019-08-26 16:41:10 +02:00
Kierán Meinhardt
55041ff122 feat(packages): package tolino-screensaver, fzf-wrappers, dirmir 2019-08-26 16:40:52 +02:00
Kierán Meinhardt
aaf4b54c04 docs: move to todo.txt 2019-08-26 15:30:44 +02:00
Kierán Meinhardt
5adb60742b docs: add packaging todos 2019-08-26 10:46:14 +02:00
Kierán Meinhardt
4085a0a431 todo: guest user 2019-08-26 10:13:18 +02:00
Kierán Meinhardt
9b9a6ddccc todo: man-pdf 2019-08-25 22:52:17 +02:00
Kierán Meinhardt
b8c81dae19 + man-pdf 2019-08-25 22:41:36 +02:00
Kierán Meinhardt
b3f2d62def zsh: add final newline to dummy .zshrc 2019-08-25 22:41:26 +02:00
Kierán Meinhardt
61bb7670d5 add tolino-screensaver (wip) 2019-08-25 17:44:48 +02:00
Kierán Meinhardt
161d2e64f3 update nixpkgs.json 2019-08-25 15:40:09 +02:00
Kierán Meinhardt
39129fe306 add dirmir script 2019-08-25 15:39:59 +02:00
Kierán Meinhardt
8381d1708d add TODO.md 2019-08-25 15:39:50 +02:00
Kierán Meinhardt
cda90cb04b direnv: add nixify 2019-08-25 15:39:41 +02:00
Kierán Meinhardt
6b592d45e7 add direnv 2019-08-24 12:02:38 +02:00
Kierán Meinhardt
b8cb900ec1 make "take" available to every shell 2019-08-23 18:27:06 +02:00
Kierán Meinhardt
4697098e38 chromium: add herp derp youtube comment addon 2019-08-23 18:25:37 +02:00
Kierán Meinhardt
870d8a69e9 nvim: reorganize plugins 2019-08-23 10:27:28 +02:00
Kierán Meinhardt
57c0187386 add restart-vpn service 2019-08-22 09:44:21 +02:00
Kierán Meinhardt
9550f1b1a0 add wcd and where scripts 2019-08-22 09:44:11 +02:00
Kierán Meinhardt
2f63ff75f0 add tentative minecraft module 2019-08-21 09:13:00 +02:00
Kierán Meinhardt
f9b332bde3 vim: fix typescript filetype 2019-08-21 09:12:41 +02:00
Kierán Meinhardt
838653c27c hledger: add edit command 2019-08-20 20:08:11 +02:00
Kierán Meinhardt
070a746a2a python: remove broken packages spacy* 2019-08-20 20:07:56 +02:00
Kierán Meinhardt
b64ec51224 move more to config/packages 2019-08-18 19:41:52 +02:00
Kierán Meinhardt
7df07fc745 vimrc -> init.vim 2019-08-18 19:41:11 +02:00
314 changed files with 12656 additions and 2620 deletions

38
.bin/256color Executable file
View File

@@ -0,0 +1,38 @@
#! /bin/sh
set -euf
pl() {
for i in $(seq $1 $(expr $2 - 1)); do
printf '\e[38;5;%sm%03i\e[m ' $i $i
done
printf '\e[38;5;%sm%03i\e[m\n' $2 $2
}
p() {
printf '\e[38;5;%sm%03i\e[m ' $1 $1
}
pn() {
printf '\e[38;5;%sm%03i\e[m\n' $1 $1
}
p6x6() {
for i in $(seq 0 5); do
for j in $(seq 0 5); do
p $(expr $1 + $i + $j \* 6)
done
echo
done
}
pl 0 7
pl 8 15
p6x6 16
p6x6 52
p6x6 88
p6x6 124
p6x6 160
p6x6 196
pl 232 243
pl 244 255

24
.bin/browser Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/sh -e
#
# Usage: browser
# pipe html to a browser
# e.g.
# $ echo '<h1>hi mom!</h1>' | browser
# $ ron -5 man/rip.5.ron | browser
if [ -t 0 ]; then
if [ -n "$1" ]; then
open $1
else
cat <<usage
Usage: browser
pipe html to a browser
$ echo '<h1>hi mom!</h1>' | browser
$ ron -5 man/rip.5.ron | browser
usage
fi
else
f="/tmp/browser.$RANDOM.html"
cat /dev/stdin > $f
xdg-open $f
fi

25
.bin/candyman Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/sh
set -efu
usage() {
echo >&2 "$0 add-{reddit,telegram,youtube,twitch,twitter} NAME"
exit 1
}
candyman() {
curl -fsSv http://news.r/api -H content-type:application/json -d "$(jq -n "
{
command: \"PRIVMSG\",
params: [\"#all\", \"candyman: $1 $2\"]
}
")"
}
[ $# -ge 2 ] || usage
case "$1" in
add-reddit|add-telegram|add-youtube|add-twitter|add-twitch)
candyman "$@"
;;
*) usage;;
esac

13
.bin/countdown Executable file
View File

@@ -0,0 +1,13 @@
#!/usr/bin/env -S awk -f
function z() {
getline < "/proc/uptime"
close("/proc/uptime")
return $0
}
BEGIN {
x = z()
while (1) {
y = z()
printf "%02d:%05.2f\r", (y - x) / 60, (y - x) % 60
}
}

34
.bin/horoscope.sh Normal file
View File

@@ -0,0 +1,34 @@
#!/bin/sh
set -efu
# Berlin: -d lodeg=13 -d lomin=22 -d losec=41 -d lodir=E -d ladeg=52 -d lamin=27 -d lasec=42 -d ladir=N -d usecoords=1 \
# Kassel: -d lodeg=9 -d lomin=32 -d losec=5 -d lodir=E -d ladeg=51 -d lamin=18 -d lasec=17 -d ladir=N -d usecoords=1 \
[ $# -eq 1 ] || {
echo >&2 Usage: "$0" TIMESTAMP
exit 1
}
export TZ=UTC
chart_path="$(mktemp /tmp/chart_XXX.pdf)"
timestamp="$1"
year="$(date -d "@$timestamp" +%Y)"
month="$(date -d "@$timestamp" +%m)"
day="$(date -d "@$timestamp" +%d)"
hour="$(date -d "@$timestamp" +%H)"
minute="$(date -d "@$timestamp" +%M)"
curl -sSL 'https://edifyingfellowship.org/astro/' \
-d lodeg=9 -d lomin=32 -d losec=5 -d lodir=E -d ladeg=51 -d lamin=18 -d lasec=17 -d ladir=N -d usecoords=1 \
-d ybyr="$year" -d ybmo="$month" -d ybdy="$day" -d ybhr="$hour" -d ybmi="$minute" -d ybsc=0 -d ybtz="$TZ" \
-d currenttime=0 \
-d title="$timestamp" \
-d options[]=VancouverWheel -d options[]=Arrow -d options[]=XBold -d options[]=HouseLabels -d options[]=Placidus \
-d options[]=Sun -d options[]=Moon -d options[]=Mercury -d options[]=Venus -d options[]=Mars -d options[]=Jupiter -d options[]=Saturn -d options[]=Uranus -d options[]=Neptune -d options[]=Pluto -d options[]=Ascendant -d options[]=MC -d options[]=Lilith -d options[]=MeanNode -d options[]=TrueNode \
-d aspectpct=100 -d format=PDF -d Submit= -o "$chart_path"
zathura "$chart_path"

15
.bin/libib.sh Executable file
View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
session_id=7b638c194d9bda74f80043045018cc9e
declare -A libraries
libraries["Literatur"]=344428
libraries["Sprache"]=344160
libraries["Miscellanea"]=344427
libraries["Wissenschaft"]=344429
libraries["Relicta"]=565920
for library in ${!libraries[@]}
do
curl -sSL 'https://www.libib.com/library/functions/csv-export.php' -H "Cookie: PHPSESSID=$session_id" -d export="${libraries[$library]}" > "$library.csv"
done

81
.bin/lieferando.sh Normal file
View File

@@ -0,0 +1,81 @@
#!/bin/sh
set -efu
if echo "$1" | grep -Eq '[[:digit:]]{5}'; then
PLZ="$1"
else
echo >&2 "Usage: $0 PLZ"
exit 1
fi
lieferando_dir=/tmp/lieferando
mkdir -p "$lieferando_dir/$PLZ"
fetch_restaurants() {
cache_path="$lieferando_dir/$PLZ.json"
if [ -r "$cache_path" ]; then
cat "$cache_path"
else
w3m -dump_source "http://www.lieferando.de/$PLZ" \
| gunzip \
| sed -n '/var restaurants/,/];$/p' \
| sed 's/var restaurants =//;$s/;$//' \
| prettier --parser=json \
| jq '
map({
name: .[30] | .name,
category: .[30] |.categories | split(", "),
url: "http://lieferando.de\(.[30] | .url)",
minutes: .[19],
minimum: .[10],
delivery: .[14]
})' \
| tee "$cache_path"
fi
}
fetch_menu() {
[ $# -eq 1 ] || exit 1
slug="$(echo "$1" | sed 's!.*/!!')"
cache_path="$lieferando_dir/$PLZ/$slug.json"
if [ -r "$cache_path" ]; then
cat "$cache_path"
else
w3m -dump_source "$1" \
| gunzip \
| sed -n '/var MenucardProducts/,/\];/p' \
| sed 's/var MenucardProducts =//;s/;$//' \
| jq -r '
unique_by(.productId)
| group_by(.categoryId)
| flatten
' \
| tee "$cache_path"
fi
}
data="$(fetch_restaurants)"
# echo "$data" | jq -c '.[]' | while read -r restaurant; do
# fetch_menu "$(echo "$restaurant" | jq -r .url)"
# done
selected_categories="$(echo "$data" | jq -r 'map(.category) | flatten | unique | .[]' | fzf -m)"
selected_restaurant_url="$(echo "$selected_categories" | jq --argjson restaurants "$data" -sRr '
split("\n")[:-1] as $categories
| $restaurants[]
| select(.category - $categories != .category)
| "\(.name) [🚴\(.minutes)min 💰\(.minimum)€ + \(.delivery)€] (\(.url))"
' \
| fzf \
| sed 's/.*(//;s/)$//'
)"
fetch_menu "$selected_restaurant_url" \
| jq -r '.[] | "\(.price)\t\(.name)"' \
| fzf -m \
| awk '{print $0; sum += $1} END {print "-----"; print sum}'

17
.bin/lit.awk Normal file
View File

@@ -0,0 +1,17 @@
BEGIN {
if (!comment) comment = "--";
if (!begin) begin = "\\begin{code}";
if (!end) end = "\\end{code}";
}
{
if ($0 == begin) {
code = 1;
print comment, $0;
} else if ($0 == end) {
code = 0;
print comment, $0;
} else {
if (code) print $0;
else print comment, $0;
}
}

3
.bin/mail-current-part Executable file
View File

@@ -0,0 +1,3 @@
#! /bin/sh
set -efu
exec curl -fSs --unix-socket /tmp/much.api.sock http://localhost/current/part

View File

@@ -0,0 +1,27 @@
#! /bin/sh
# usage: mail-current-query-find-part-by-name NAME
set -efu
name=$1
query=$(mail-current-query)
result=$(notmuch show --entire-thread=false --format=json "$query")
part_id=$(printf %s "$result" | jq --arg name "$name" '
[
recurse |
select(type == "object") |
{ id, name: .filename } |
select(.id != null and .name != null)
] |
map(select(.name == $name))[0].id
')
if test "$part_id" = null; then
printf 'error: could not find part with name %s\n' \
"$name" \
>&2
exit 1
fi
exec notmuch show --part="$part_id" "$query"

View File

@@ -0,0 +1,39 @@
#! /bin/sh
# usage: mail-current-query-find-part-by-type TYPE
set -efu
type=$1
query=$(mail-current-query)
result=$(notmuch show --entire-thread=false --format=json "$query")
part_id=$(printf %s "$result" | jq --arg type "$type" '
#flatten|map(select(.!=null))[0].body[0] |
#
#if .["content-type"] == $type then
# .id
#elif .["content-type"] | test("^multipart/") then
# .content|map(select(.["content-type"]==$type))[0].id
#else
# null
#end
[
recurse |
select(type == "object") |
{ id, type: .["content-type"] } |
select(.id != null and .type != null)
] |
map(select(.type == $type))[0].id
')
if test "$part_id" = null; then
printf 'error: could not find part with type %s\n' \
"$type" \
>&2
exit 1
fi
exec notmuch show --part="$part_id" "$query"

23
.bin/pdf-ocr.sh Executable file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p poppler_utils tesseract4
set -eu
pdf_path="$(realpath "$1")"
[ -f "$pdf_path" ] || {
echo "Usage: $0 FILE.pdf" >&2
exit 1
}
tmpdir="$(mktemp -d)"
trap 'rm -rf $tmpdir' EXIT
cd "$tmpdir"
pdftoppm -png "$pdf_path" pdf-ocr
for png in pdf-ocr*.png; do
tesseract "$png" "$png.txt" 2>/dev/null
done
cat pdf-ocr-*.txt

2
.bin/playlist_entries.sh Executable file
View File

@@ -0,0 +1,2 @@
#!/bin/sh
youtube-dl -ij "$*" | jq -sr '.[] | .webpage_url'

17
.bin/proxies.sh Normal file
View File

@@ -0,0 +1,17 @@
#!/bin/sh
curl -sSL https://www.netzwelt.de/proxy/index.html \
| pup ".tblc" \
| xml-to-json /dev/stdin \
| jq '
.div.table.tbody.tr
| map(
.td
| {
ip: .[0].a.value,
port: .[1],
country: .[2] | (if type == "string" then . else .a.value end),
security: .[3],
protocol: .[4]
}
)
'

4
.bin/readme Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
curl -sSL "https://raw.githubusercontent.com/$*/master/README.md" \
| pandoc -f gfm -t man -s \
| man -l -

6
.bin/sample-pdf.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/sh
filepath="$(shuf --head-count=1)"
pages="$(pdfinfo "$filepath" | awk '/^Pages:/{print $2}')"
random_page="$(shuf --input-range="1-$pages" --head-count=1)"
zathura --page="$random_page" "$filepath"

6
.gitignore vendored
View File

@@ -1,2 +1,6 @@
secrets.nix
result result
.direnv
.envrc
.history
.todo
node_modules

6
.gitmodules vendored Normal file
View File

@@ -0,0 +1,6 @@
[submodule "submodules/menstruation-telegram"]
path = submodules/menstruation-telegram
url = https://github.com/kmein/menstruation-telegram
[submodule "submodules/menstruation-backend"]
path = submodules/menstruation-backend
url = https://github.com/kmein/menstruation.rs

View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/nix-community/home-manager.git",
"rev": "bcf03fa16a1f06b8a0abb27bf49afa8d6fffe8f1",
"date": "2021-11-15T23:33:21+00:00",
"path": "/nix/store/6yb649xh4pm8n49azlg769imarkk2xpw-home-manager",
"sha256": "0nznlb2xgkvdav6d4qls2w81m3p3h4hdbwbp2nwqkiszkp7j1bln",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

10
.versions/krops.json Normal file
View File

@@ -0,0 +1,10 @@
{
"url": "https://cgit.krebsco.de/krops",
"rev": "cccebf3ff7a53336b3f106cb96dddd5892d427ed",
"date": "2021-03-23T22:47:37+01:00",
"path": "/nix/store/mz13xxnil35lwsf90hwnrm2agir7hb51-krops",
"sha256": "07mg3iaqjf1w49vmwfchi7b1w55bh7rvsbgicp2m47gnj9alwdb6",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/mozilla/nixpkgs-mozilla",
"rev": "764ed9c9721f66c945d77d7b09fb8c1879ec67c6",
"date": "2021-11-16T09:46:48-05:00",
"path": "/nix/store/p75z3ihhdy7zxhnfqdj4mhzg9k0rfz7f-nixpkgs-mozilla",
"sha256": "0lkhaz4hciisvfhq8v2wlp019v6gg5vd4sf5vx3cj4d5b2zf0h4v",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/NixOS/nixpkgs.git",
"rev": "8df865561fbc53922f1e801c3deeb53c12ce8c4f",
"date": "2021-11-18T22:15:39-08:00",
"path": "/nix/store/a4n904v45pl3zi8q59l77dha47v1mwl0-nixpkgs",
"sha256": "092ivyacs2iz2zb572jki2kdi6nylrm10caa0kv2hdfr5yjzs5w7",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

10
.versions/nixpkgs.json Normal file
View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/NixOS/nixpkgs.git",
"rev": "46251a79f752ae1d46ef733e8e9760b6d3429da4",
"date": "2021-11-14T21:40:46-05:00",
"path": "/nix/store/4j2xxc8kqvnif4nhsd0f58dymj3ckryd-nixpkgs",
"sha256": "1xsp0xyrf8arjkf4wi09n96kbg0r8igsmzx8bhc1nj4nr078p0pg",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

10
.versions/nur.json Normal file
View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/nix-community/NUR",
"rev": "69746e0eb8efba6ed7776dd910c4ebc3bc85f6b6",
"date": "2021-11-19T05:31:00+00:00",
"path": "/nix/store/1lxn1j1dg20q5kh47jnq56a8yd1570xg-NUR",
"sha256": "03scqq7j7lywxzcy2qsyxiynms3jmiadvz825pwfwg5kg5p75m9c",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

10
.versions/retiolum.json Normal file
View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/krebs/retiolum",
"rev": "3fc3147ef4c644b4008f1425fae701f2d371db52",
"date": "2021-10-30T16:02:13+02:00",
"path": "/nix/store/ybc3zn2ql3ml9mfxdlvya71pz5hjvkh2-retiolum",
"sha256": "1vh8s0dknnsy9c68l807difjnar2m6xbbwj51f308bl8wyjyq4y5",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

10
.versions/stockholm.json Normal file
View File

@@ -0,0 +1,10 @@
{
"url": "https://cgit.krebsco.de/stockholm",
"rev": "c979f7009f5ff1b2d25158aff1bca0f5be2dba54",
"date": "2021-11-08T05:14:49+01:00",
"path": "/nix/store/shz2yw0p30ibmw3lgr11ckzz0y4kmz4y-stockholm",
"sha256": "13yds6hwh6ah4mks8jrg7syigfmp17ylr7706jpvdzfy9ihj81wh",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 512 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 653 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 325 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

45
configs/alacritty.nix Normal file
View File

@@ -0,0 +1,45 @@
{ pkgs, lib, config, ... }:
{
environment.variables.TERMINAL = "alacritty";
environment.systemPackages = [
pkgs.alacritty
];
home-manager.users.me.xdg.configFile =
let
inherit (import <niveum/lib>) colours;
colourNames = [ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
colourPairs = lib.getAttrs colourNames colours;
in {
"alacritty/alacritty.yml".source = (pkgs.formats.yaml {}).generate "alacritty.yml" {
background_opacity = 0.9;
colors = {
primary = { inherit (colours) background foreground; };
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
};
font = {
normal.family = "Monospace";
size = 6;
};
key_bindings = [
{
key = "Plus";
mods = "Control";
action = "IncreaseFontSize";
}
{
key = "Minus";
mods = "Control";
action = "DecreaseFontSize";
}
{
key = "Key0";
mods = "Control";
action = "ResetFontSize";
}
];
};
};
}

View File

@@ -1,6 +1,7 @@
{ {
programs.bash = { programs.bash = {
promptInit = ''PS1="$(tput bold)\w \$([[ \$? == 0 ]] && echo \"\[\033[1;32m\]\" || echo \"\[\033[1;31m\]\")\$$(tput sgr0) "''; promptInit = ''
PS1="$(tput bold)\w \$([[ \$? == 0 ]] && echo \"\[\033[1;32m\]\" || echo \"\[\033[1;31m\]\")\$$(tput sgr0) "'';
interactiveShellInit = '' interactiveShellInit = ''
set -o vi set -o vi
''; '';

17
configs/battery.nix Normal file
View File

@@ -0,0 +1,17 @@
{ config, pkgs, ... }:
{
boot.extraModulePackages = with config.boot.kernelPackages; [
tp_smapi
acpi_call
];
boot.kernelModules = [ "tp_smapi" "acpi_call" ];
environment.systemPackages = [ pkgs.tpacpi-bat ];
services.tlp = {
enable = true;
settings = {
START_CHARGE_THRESH_BAT0 = 80;
STOP_CHARGE_THRESH_BAT0 = 95;
};
};
}

11
configs/beets.nix Normal file
View File

@@ -0,0 +1,11 @@
{ lib, pkgs, ... }:
{
environment.systemPackages = [ pkgs.beets ];
home-manager.users.me.xdg.configFile = {
"beets/config.yaml".source = (pkgs.formats.yaml {}).generate "config.yaml" {
directory = "~/cloud/syncthing/music";
library = "~/cloud/syncthing/common/music.db";
plugins = toString [ "fetchart" "lastgenre" ];
};
};
}

View File

@@ -1,16 +1,11 @@
{ pkgs, ... }: { pkgs, lib, ... }: {
{
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;
extraConfig = '' settings.General.Enable =
[General] lib.concatStringsSep "," [ "Source" "Sink" "Media" "Socket" ];
Enable=Source,Sink,Media,Socket
'';
}; };
environment.systemPackages = [ pkgs.blueman ]; environment.systemPackages = [ pkgs.blueman ];
home-manager.users.me = { home-manager.users.me = { services.blueman-applet.enable = false; };
services.blueman-applet.enable = true;
};
} }

57
configs/bvg.nix Normal file
View File

@@ -0,0 +1,57 @@
{ pkgs, lib, ... }:
let
inherit (import <niveum/lib>) serveHtml;
stations = [
900068204 # A/M
900068302 # KAS
900068203 # B-P
];
fahrplan = pkgs.writeText "fahrplan.html" ''
<!DOCTYPE html>
<title>Fahrplan</title>
<link
rel="icon"
type="image/x-icon"
href="https://mobil.bvg.de/Fahrinfo/img/ua_xhtml/logo.gif"
/>
<style>
body {
margin: 0;
--bvg-yellow: #f0d722;
}
#fahrplan {
display: flex;
height: 100vh;
width: 100%;
flex-direction: row;
}
#fahrplan iframe {
flex-grow: 1;
border: none;
}
#fahrplan iframe + iframe {
border-left: 2px solid var(--bvg-yellow);
}
</style>
<body>
<div id="fahrplan">
${lib.concatMapStrings (station: ''
<iframe scrolling="no" src="https://mobil.bvg.de/Fahrinfo/bin/stboard.bin/dox?ld=0.1&input=${toString station}&boardType=depRT&start=yes"></iframe>
'') stations}
</div>
</body>
'';
in
{
services.nginx = {
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
};
services.nginx.virtualHosts."bvg.kmein.r" = {
locations."/".extraConfig = serveHtml fahrplan pkgs;
};
}

28
configs/ccc.nix Normal file
View File

@@ -0,0 +1,28 @@
{ pkgs, ... }:
# https://paste.sr.ht/~erictapen/11716989e489b600f237041b6d657fdf0ee17b34
let
certificate = pkgs.stdenv.mkDerivation rec {
name = "dst-root-ca-x3.pem";
src = builtins.toFile "${name}.sed" ''
1,/DST Root CA X3/d
1,/-----END CERTIFICATE-----/p
'';
nativeBuildInputs = with pkgs; [ cacert gnused ];
phases = "installPhase";
installPhase = ''
${pkgs.gnused}/bin/sed -n -f $src ${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt > $out
'';
};
in {
networking.wireless.networks."36C3" = {
auth = ''
key_mgmt=WPA-EAP
eap=TTLS
identity="kmein"
password=" "
ca_cert="${certificate}"
altsubject_match="DNS:radius.c3noc.net"
phase2="auth=PAP"
'';
};
}

View File

@@ -1,17 +1,16 @@
{ pkgs, ... }: { pkgs, ... }: {
{
programs.chromium = { programs.chromium = {
enable = true; enable = true;
extensions = [ extensions = [
"hdokiejnpimakedhajhdlcegeplioahd" # LastPass "nngceckbapebfimnlniiiahkandclblb" # BitWarden
"ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim # "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
"fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine # "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin "cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
"iaalpfgpbocpdfblpnhhgllgbdbchmia" # asciidoctor "khncfooichmfjbepaaaebmommgaepoid" # Remove YouTube Recommended Videos
]; ];
}; };
environment.systemPackages = [ pkgs.chromium ]; environment.systemPackages = [ pkgs.chromium pkgs.brave ];
niveum.applications.browser = "chromium"; environment.variables.BROWSER = "brave";
} }

View File

@@ -1,26 +1,41 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }: {
{
imports = [ imports = [
<modules/seafile.nix> <niveum/modules/dropbox.nix>
<modules/google-drive.nix>
<modules/dropbox.nix>
<stockholm/krebs/3modules/syncthing.nix>
]; ];
niveum.dropbox = { niveum = {
enable = true; dropbox.enable = false;
user = config.users.users.me;
}; };
niveum.seafile = { system.activationScripts.home-symlinks = ''
enable = true; ln -sfn ${config.users.users.me.home}/cloud/syncthing/common/mahlzeit ${config.users.users.me.home}/mahlzeit
user = config.users.users.me; ln -sfn ${config.users.users.me.home}/cloud/Seafile/Wiki ${config.users.users.me.home}/notes
ln -sfn ${config.users.users.me.home}/cloud/Seafile/Uni ${config.users.users.me.home}/uni
'';
home-manager.users.me = {
services.nextcloud-client.enable = true;
}; };
niveum.google-drive = rec { environment.systemPackages = [
enable = true; (pkgs.writers.writeDashBin "book" ''
directory = "${user.home}/cloud/gdrive"; set -efu
user = config.users.users.me; book="$({
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/syncthing/library -type f
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/Seafile/Books -type f
} | ${pkgs.fzf}/bin/fzf)"
${pkgs.zathura}/bin/zathura "$book"
'')
];
fileSystems."/media/moodle" = {
device = "zaatar.r:/moodle";
fsType = "nfs";
options = [
"x-systemd.idle-timeout=600"
"noauto"
"x-systemd.automount"
];
}; };
services.syncthing = rec { services.syncthing = rec {
@@ -29,20 +44,21 @@
openDefaultPorts = true; openDefaultPorts = true;
configDir = "/home/kfm/.config/syncthing"; configDir = "/home/kfm/.config/syncthing";
dataDir = "/home/kfm/.config/syncthing"; dataDir = "/home/kfm/.config/syncthing";
}; declarative = rec {
cert = toString <system-secrets/syncthing/cert.pem>;
krebs.syncthing = rec { key = toString <system-secrets/syncthing/key.pem>;
enable = true; inherit ((import <niveum/lib>).syncthing) devices;
key = toString <secrets/syncthing/key.pem>; folders =
cert = toString <secrets/syncthing/cert.pem>; let cloud-dir = "${config.users.users.me.home}/cloud";
peers = { in {
homeros.id = "HSOL72W-MMN346W-C3WCWCH-OTRKJYG-MY2WWV6-P7JUHN7-5WYYYRV-ZMH4KAA"; "${cloud-dir}/syncthing/common".devices = [ "kabsa" "manakish" ];
scardanelli.id = "7CZYHEX-3CSFDQU-PEEMYHG-6XGQ2ZD-KGVUWH5-GFRB2XK-FP57ERX-7APZUQU"; "${cloud-dir}/syncthing/library".devices = [ "kabsa" "manakish" "heym" ];
rilke.id = "NYNNHXP-7JMSTXG-SVNOPWD-RWXCCCL-CBOVBEI-X4QPLF4-NJA5G2P-RSGYRQQ"; "${cloud-dir}/syncthing/mundoiu".devices = [ "kabsa" "manakish" "heym" ];
wilde.id = "R6DEBD7-G5RYDKN-VFA3HPO-WX4DNVI-373F7OQ-AW5MZTT-3L4BDVW-Y6ROEAF"; "${cloud-dir}/syncthing/music" = {
devices = [ "kabsa" "manakish" "heym" "zaatar" ];
id = "music";
};
};
}; };
folders."${config.users.users.me.home}/cloud/syncthing/common".peers = [ "homeros" "scardanelli" "wilde" ];
folders."${config.users.users.me.home}/cloud/syncthing/library".peers = lib.attrNames peers;
folders."${config.users.users.me.home}/cloud/syncthing/mundoiu".peers = lib.attrNames peers;
}; };
} }

View File

@@ -2,7 +2,7 @@
services.compton = { services.compton = {
enable = true; enable = true;
shadow = true; shadow = true;
menuOpacity = "0.9"; menuOpacity = 0.9;
shadowOpacity = "0.3"; shadowOpacity = 0.3;
}; };
} }

View File

@@ -1,258 +1,162 @@
{ pkgs, lib, config, ... }: { pkgs, lib, config, options, ... }:
{ let
inherit (lib.strings) makeBinPath;
inherit (import <niveum/lib>) localAddresses kieran;
in {
imports = [ imports = [
<modules/constants.nix>
{
services.dbus.packages = [ pkgs.gnome3.dconf ];
}
<home-manager/nixos> <home-manager/nixos>
# <configs/mopidy.nix> <niveum/modules/system-dependent.nix>
<configs/bash.nix>
<configs/bluetooth.nix>
<configs/chromium.nix>
<configs/cloud.nix>
<configs/compton.nix>
<configs/default.nix>
# <configs/home-assistant.nix>
<configs/distrobump.nix>
<configs/docker.nix>
<configs/dunst.nix>
<configs/fonts.nix>
<configs/git.nix>
<configs/haskell>
<configs/hledger.nix>
<configs/htop.nix>
<configs/hu-berlin.nix>
<configs/i3.nix>
<configs/kdeconnect.nix>
<configs/keybase.nix>
<configs/keyboard.nix>
<configs/mail.nix>
<configs/mpv.nix>
<configs/nano.nix>
<configs/neovim.nix>
<configs/nixpkgs-unstable.nix>
<configs/packages>
<configs/printing.nix>
<configs/python.nix>
<configs/random-background.nix>
<configs/redshift.nix>
<configs/retiolum.nix>
<configs/rofi.nix>
<configs/sncli.nix>
<configs/ssh.nix>
<configs/sudo.nix>
<configs/themes/owickstrom-dark.nix>
<configs/theming.nix>
<configs/tmux.nix>
<configs/todo-txt.nix>
<configs/traadfri.nix>
<configs/unclutter.nix>
<configs/urxvt.nix>
<configs/vscode.nix>
<configs/xautolock.nix>
<configs/xresources.nix>
<configs/zsh.nix>
{ {
niveum.user = { boot.supportedFilesystems = [ "ntfs" ];
github = "kmein";
email = "kieran.meinhardt@gmail.com";
name = "Kierán Meinhardt";
};
niveum.applications = rec {
fileManager = "${config.niveum.applications.terminal} -e ${pkgs.ranger}/bin/ranger";
};
niveum.theme = {
gtk = { name = "Arc"; package = pkgs.arc-theme; };
icon = { name = "Arc"; package = pkgs.arc-icon-theme; };
cursor = { name = "capitaine-cursors"; package = pkgs.capitaine-cursors; };
};
} }
{ {
nixpkgs.config = { nix.nixPath = [
allowUnfree = true; "/var/src"
packageOverrides = pkgs: { "nixpkgs-overlays=${toString ../overlays}"
python3Packages = pkgs.python3Packages.override { ];
overrides = new: old: { }
spotify-cli-linux = new.callPackage <packages/spotify-cli-linux.nix> {}; { services.dbus.packages = [ pkgs.gnome3.dconf ]; }
instaloader = new.callPackage <packages/instaloader.nix> {}; {
sncli = new.callPackage <packages/sncli.nix> {}; nixpkgs = {
}; config = {
}; allowUnfree = true;
haskellPackages = pkgs.haskellPackages.override { packageOverrides = pkgs: {
overrides = new: old: { nur = import <nur> { inherit pkgs; };
blessings = new.callPackage <packages/blessings.nix> {}; writeDashBin = pkgs.writers.writeDashBin;
scanner = new.callPackage <stockholm/krebs/5pkgs/haskell/scanner.nix> {}; writeDash = pkgs.writers.writeDash;
}; gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {};
}; iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> { };
git-quick-stats = pkgs.callPackage <packages/git-quick-stats.nix> {}; ix = pkgs.callPackage <niveum/packages/ix.nix> { };
writeDash = pkgs.writers.writeDash;
writeDashBin = pkgs.writers.writeDashBin;
iolanguage = pkgs.callPackage <packages/iolanguage.nix> {};
nix-git = pkgs.callPackage <packages/nix-git.nix> {};
kmein = {
autorenkalender = pkgs.callPackage <packages/autorenkalender.nix> {};
bvg = pkgs.callPackage <packages/bvg.nix> {};
daybook = pkgs.callPackage <packages/daybook.nix> {};
font-size = pkgs.callPackage <packages/font-size.nix> { font = config.niveum.fonts.terminal; };
genius = pkgs.callPackage <packages/genius.nix> {};
instaget = pkgs.callPackage <packages/instaget.nix> {};
literature-quote = pkgs.callPackage <packages/literature-quote.nix> {};
n = pkgs.callPackage <packages/n.nix> {};
depp = pkgs.callPackage <packages/depp.nix> {};
odyssey = pkgs.callPackage <packages/odyssey.nix> {};
wttr = pkgs.callPackage <packages/wttr.nix> {};
nav = pkgs.callPackage <packages/nav.nix> {};
slide =
let slide-package = pkgs.fetchFromGitHub {
owner = "kmein";
repo = "slide";
rev = "0470583d22212745eab4f46076267addf4d2346c";
sha256 = "0skcp3va9v4hmxy5ramghpz53gnyxv10wsacgmc2jr0v1wrqlzbh";
};
in pkgs.callPackage slide-package {};
haskellPackages.mnemosyne =
let mnemosyne-package = pkgs.fetchFromGitHub {
repo = "mnemosyne";
owner = "kmein";
rev = "6bfa13c88db176af80be90840ff03573d67d679f";
sha256 = "1rimv5c5q9602y501hbkgkfbimqnmdkcr5hp1434q06gcazhjhca";
};
in pkgs.haskellPackages.callPackage mnemosyne-package {};
}; };
}; };
overlays = [
(import <stockholm/krebs/5pkgs>)
(self: super: {
scripts = import <niveum/packages/scripts> { pkgs = super; lib = super.lib; };
})
];
}; };
} }
{ {
boot.cleanTmpDir = true; boot.cleanTmpDir = true;
boot.loader.timeout = 1; boot.loader.timeout = 1;
boot.extraModulePackages = [ config.boot.kernelPackages.exfat-nofuse ];
}
{
time.timeZone = "Europe/Berlin";
} }
{ {
home-manager.users.me = { home-manager.users.me = {
programs.zathura = { programs.zathura = {
enable = true; enable = true;
options.selection-clipboard = "clipboard"; options = {
selection-clipboard = "clipboard";
# first-page-column = "1:1"; # makes side-by-side mode start on the left side
};
}; };
}; };
} }
{ {
users.mutableUsers = false; users.mutableUsers = false;
users.defaultUserShell = pkgs.zsh;
users.users.me = { users.users.me = {
name = "kfm"; name = "kfm";
description = config.niveum.user.name; description = kieran.name;
home = "/home/kfm"; hashedPassword =
createHome = true; "$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
group = "users"; isNormalUser = true;
hashedPassword = "$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/"; uid = 1000;
shell = pkgs.zsh;
}; };
home-manager.users.me.xdg.enable = true;
} }
{ {
sound.enable = true; sound.enable = true;
hardware.pulseaudio = { hardware.pulseaudio = {
enable = true; enable = true;
package = pkgs.pulseaudioFull; # for bluetooth sound output package = pkgs.pulseaudioFull;
extraModules = [ pkgs.pulseaudio-modules-bt ];
# copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine
zeroconf.discovery.enable = true;
extraConfig = ''
load-module ${toString [
"module-tunnel-sink-new"
"server=zaatar.r"
"sink_name=zaatar"
"channels=2"
"rate=44100"
]}
'';
}; };
users.users.me.extraGroups = [ "audio" ]; users.users.me.extraGroups = [ "audio" ];
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer ]; environment.systemPackages = [ pkgs.pavucontrol pkgs.ncpamixer pkgs.pamixer pkgs.pulsemixer ];
} }
{ {
environment.systemPackages = [ environment.interactiveShellInit =
(pkgs.writers.writeDashBin "niveum-deploy" '' "export PATH=$PATH:$HOME/projects/niveum";
NIVEUM_DIR=/home/kfm/prog/git/niveum environment.shellAliases = let
wcd = pkgs.writers.writeDash "wcd" ''
[ $# -eq 1 ] || echo >&2 "Usage: niveum-deploy SYSTEM" cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.."
'';
eval $(nix-build --no-out-link "$NIVEUM_DIR/deploy.nix" -A "$1") where = pkgs.writers.writeDash "where" ''
'') readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname
(pkgs.writers.writeDashBin "niveum-update" '' '';
NIVEUM_DIR=/home/kfm/prog/git/niveum take = pkgs.writers.writeDash "take" ''
mkdir "$1" && cd "$1"
nix-prefetch-git --url https://github.com/NixOS/nixpkgs-channels --rev refs/heads/nixos-${config.system.stateVersion} > "$NIVEUM_DIR/nixpkgs.json" '';
'') swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
]; in {
} "ß" = "${pkgs.utillinux}/bin/setsid";
{ cat = "${pkgs.bat}/bin/bat --style=plain";
environment.interactiveShellInit = "export PATH=$PATH:$HOME/.cargo/bin"; chromium-incognito =
environment.shellAliases = { "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
clipboard = "${pkgs.xclip}/bin/xclip -se c"; cp = "cp --interactive";
o = "${pkgs.xdg_utils}/bin/xdg-open";
tmux = "${pkgs.tmux}/bin/tmux -2";
ip = "${pkgs.iproute}/bin/ip -c"; ip = "${pkgs.iproute}/bin/ip -c";
l = "ls --color=auto --time-style=long-iso --almost-all";
ls = "ls --color=auto --time-style=long-iso";
ll = "ls --color=auto --time-style=long-iso -l";
la = "ls --color=auto --time-style=long-iso --almost-all -l";
mv = "mv --interactive";
nixi = "nix repl '<nixpkgs>'";
ns = "nix-shell --run zsh"; ns = "nix-shell --run zsh";
nixi = ''nix repl "<nixpkgs>"''; o = "${pkgs.xdg_utils}/bin/xdg-open";
rm = "rm -i"; pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in";
cp = "cp -i"; pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out";
mv = "mv -i"; rm = "rm --interactive";
l = "${pkgs.exa}/bin/exa -a"; s = "${pkgs.systemd}/bin/systemctl";
ls = "${pkgs.exa}/bin/exa"; take = "source ${take}";
ll = "${pkgs.exa}/bin/exa -l"; tmux = "${pkgs.tmux}/bin/tmux -2";
la = "${pkgs.exa}/bin/exa -la"; sxiv = swallow "${pkgs.sxiv}/bin/sxiv";
dig = "dig +short"; zathura = swallow "${pkgs.zathura}/bin/zathura";
us = "${pkgs.systemd}/bin/systemctl --user";
wcd = "source ${wcd}";
im = "${pkgs.openssh}/bin/ssh weechat@makanek -t tmux attach-session -t IM";
where = "source ${where}";
yt =
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
yta =
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
}; };
} }
{ { i18n.defaultLocale = "en_GB.UTF-8"; }
networking.wireless = { { services.illum.enable = true; }
enable = true;
userControlled.enable = true;
networks = {
"Aether".pskRaw = "e1b18af54036c5c9a747fe681c6a694636d60a5f8450f7dec0d76bc93e2ec85a";
"Asoziales Netzwerk".pskRaw = "8e234041ec5f0cd1b6a14e9adeee9840ed51b2f18856a52137485523e46b0cb6";
"EasyBox-927376".pskRaw = "dbd490ab69b39bd67cfa06daf70fc3ef3ee90f482972a668ed758f90f5577c22";
"FlixBus Wi-Fi" = {};
"FlixBus" = {};
"FlixTrain" = {};
"Libertarian WiFi".pskRaw = "e9beaae6ffa55d10e80b8a2e7d997411d676a3cc6f1f29d0b080391f04555050";
"Ni/Schukajlow".pskRaw = "ffc47f6829da59c48aea878a32252223303f5c47a3859edc90971ffc63346781";
"WIFIonICE" = {};
"WLAN-914742".psk = "67647139648174545446";
"WLAN-XVMU6T".pskRaw = "46ea807283255a3d7029233bd79c18837df582666c007c86a8d591f65fae17cc";
"c-base-public" = {};
"discord".psk = "baraustrinken";
"security-by-obscurity".psk = "44629828256481964386";
};
};
environment.systemPackages = [ pkgs.wpa_supplicant_gui ];
}
{
networking.hosts = {
"192.168.178.1" = [ "fritz.box" ];
"192.168.178.21" = [ "scardanelli" ];
"192.168.178.22" = [ "homeros" ];
"192.168.178.24" = [ "catullus" ];
};
}
{
i18n.defaultLocale = "en_GB.UTF-8";
}
{
services.illum.enable = true;
}
{ {
services.xserver = { services.xserver = {
enable = true; enable = true;
displayManager.lightdm = { displayManager = {
enable = true; autoLogin = {
autoLogin.enable = true;
autoLogin.user = config.users.users.me.name;
greeters.gtk = {
enable = true; enable = true;
indicators = [ "~spacer" "~host" "~spacer" "~session" "~power" ]; user = config.users.users.me.name;
};
lightdm = {
enable = true;
greeters.gtk = {
enable = true;
indicators = [ "~spacer" "~host" "~spacer" "~session" "~power" ];
};
}; };
}; };
desktopManager.default = "none";
}; };
} }
{ {
@@ -261,14 +165,86 @@
pumount.source = "${pkgs.pmount}/bin/pumount"; pumount.source = "${pkgs.pmount}/bin/pumount";
}; };
} }
{ programs.command-not-found.enable = true; }
{ {
programs.command-not-found.enable = true; programs.gnupg.agent.enable = true;
environment.systemPackages = [
pkgs.gnupg
(pkgs.pass.withExtensions (e: [e.pass-otp]))
];
} }
{ {
programs.java = { services.atd.enable = true;
enable = true; }
package = pkgs.openjdk; {
services.getty = {
greetingLine = lib.mkForce "";
helpLine = lib.mkForce "";
}; };
} }
{
networking.hosts = lib.mapAttrs' (name: address: {
name = address;
value = [ "${name}.local" ];
}) localAddresses;
}
./alacritty.nix
./bash.nix
./beets.nix
./bluetooth.nix
./ccc.nix
# ./kleiter.nix
./khal.nix
./engiadina.nix
./chromium.nix
./cloud.nix
./compton.nix
./direnv.nix
./distrobump.nix
./docker.nix
./dunst.nix
./flix.nix
./fonts.nix
./fzf.nix
./gaslight.nix
./git.nix
./hledger.nix
./htop.nix
./hu-berlin.nix
./i3.nix
./keyboard.nix
./lb.nix
./mpv.nix
./mime.nix
./nano.nix
./neovim.nix
./neomutt.nix
./nix.nix
./newsboat.nix
./flameshot-once.nix
./packages
./power-action.nix
./printing.nix
./openweathermap.nix
./wallpaper.nix
./redshift.nix
./retiolum.nix
./rofi.nix
./spacetime.nix
./seafile.nix
./ssh.nix
./sshd.nix
./sudo.nix
./sxiv.nix
./theming.nix
./tmux.nix
# ./tor.nix
./traadfri.nix
./unclutter.nix
./version.nix
./vscode.nix
./watson.nix
./zsh.nix
]; ];
} }

38
configs/direnv.nix Normal file
View File

@@ -0,0 +1,38 @@
{ pkgs, ... }:
let
nixify = pkgs.writers.writeDashBin "nixify" ''
set -efuC
if [ ! -e ./.envrc ]; then
echo use_nix > .envrc
direnv allow
fi
if [ ! -e shell.nix ]; then
cat > shell.nix <<'EOF'
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = [];
}
EOF
''${EDITOR:-vim} shell.nix
fi
'';
in {
environment.systemPackages = [ pkgs.direnv nixify ];
home-manager.users.me.programs.direnv = {
enable = true;
stdlib = builtins.readFile ("${
pkgs.fetchFromGitHub {
owner = "Mic92";
repo = "dotfiles";
rev = "a0a9b7e358fa70a85cd468f8ca1fbb02ae0a91df";
sha256 = "1y9h5s1lf59sczsm0ksq2x1yhl98ba9lwk5yil3q53rg7n4574pg";
}
}/home/.direnvrc");
};
programs.zsh.interactiveShellInit = ''
eval "$(${pkgs.direnv}/bin/direnv hook zsh)"
'';
}

View File

@@ -1,13 +1,10 @@
{ lib, config, pkgs, ... }: { lib, config, pkgs, ... }: {
{
imports = [ imports = [
(import <stockholm/makefu/3modules/bump-distrowatch.nix> { (import <stockholm/makefu/3modules/bump-distrowatch.nix> {
inherit lib config; inherit lib config;
pkgs = pkgs // { pkgs = pkgs // { writeDash = pkgs.writers.writeDash; };
writeDash = pkgs.writers.writeDash;
};
}) })
]; ];
makefu.distrobump.enable = true; makefu.distrobump.enable = false;
} }

View File

@@ -1,6 +1,12 @@
{ pkgs, ... }: { lib, pkgs, ... }: {
{ virtualisation.docker = {
virtualisation.docker.enable = true; enable = true;
# for ICE wifi, ref https://gist.github.com/sunsided/7840e89ff4e11b64a2d7503fafa0290c
extraOptions = lib.concatStringsSep " " [
"--bip=172.39.1.5/24"
"--fixed-cidr=172.39.1.0/25"
];
};
users.users.me.extraGroups = [ "docker" ]; users.users.me.extraGroups = [ "docker" ];
environment.systemPackages = [ pkgs.docker pkgs.docker_compose ]; environment.systemPackages = [ pkgs.docker pkgs.docker_compose ];
} }

View File

@@ -1,12 +1,14 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
with config.niveum; { let
inherit (import <niveum/lib>) defaultApplications colours theme;
in {
home-manager.users.me.services.dunst = { home-manager.users.me.services.dunst = {
enable = true; enable = true;
iconTheme = theme.icon; iconTheme = (theme pkgs).icon;
settings = { settings = {
global = { global = {
transparency = 10; transparency = 10;
font = "${fonts.terminal.name} ${toString fonts.terminal.size}"; font = "Monospace 8";
geometry = "200x5-30+20"; geometry = "200x5-30+20";
frame_color = colours.foreground; frame_color = colours.foreground;
follow = "mouse"; follow = "mouse";
@@ -18,7 +20,7 @@ with config.niveum; {
separator_color = "auto"; separator_color = "auto";
sort = true; sort = true;
markup = "full"; markup = "full";
format = ''%a\n<b>%s</b>\n%b''; format = "%a\\n<b>%s</b>\\n%b";
alignment = "left"; alignment = "left";
show_age_threshold = 60; show_age_threshold = 60;
bounce_freq = 0; bounce_freq = 0;
@@ -31,7 +33,7 @@ with config.niveum; {
sticky_history = true; sticky_history = true;
history_length = 20; history_length = 20;
dmenu = "${pkgs.rofi}/bin/rofi -display-run dunst -show run"; dmenu = "${pkgs.rofi}/bin/rofi -display-run dunst -show run";
browser = applications.browser; browser = (defaultApplications pkgs).browser;
verbosity = "mesg"; verbosity = "mesg";
corner_radius = 0; corner_radius = 0;
mouse_left_click = "do_action"; mouse_left_click = "do_action";

30
configs/engiadina.nix Normal file
View File

@@ -0,0 +1,30 @@
{ config, pkgs, ... }:
let
inherit (import <niveum/lib>) tmpfilesConfig;
cdnRoot = "/var/lib/engiadina";
in
{
imports = [ <stockholm/krebs/3modules/permown.nix> ];
krebs.permown.${cdnRoot} = {
owner = config.users.users.me.name;
group = "users";
umask = "0002";
};
services.nginx = {
enable = true;
virtualHosts.default = {
root = cdnRoot;
listen = [{
addr = "0.0.0.0";
port = 3333;
}];
};
};
environment.shellAliases = {
engiadina-watch = "${pkgs.findutils}/bin/find extra-src src | ${pkgs.entr}/bin/entr -s 'build-component && ${pkgs.rsync}/bin/rsync -avu dist/*.js ${cdnRoot}/'";
engiadina-edit = "$EDITOR ${cdnRoot}/index.html";
};
}

View File

@@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
{
home-manager.users.me = {
services.flameshot.enable = true;
xdg.configFile."flameshot/flameshot.ini".source = (pkgs.formats.ini {}).generate "flameshot.ini" {
General = {
disabledTrayIcon = true;
checkForUpdates = false;
contrastOpacity = 188;
savePath = "/tmp";
savePathFixed = true;
drawThickness = 0;
showStartupLaunchMessage = false;
filenamePattern = "shot_%F_%T";
};
};
systemd.user.services.flameshot.Unit.Requires = lib.mkForce [];
systemd.user.services.flameshot.Environment = {
# IMGUR_CREATE_URL = "https://p.krebsco.de/image";
# IMGUR_DELETE_URL = "https://p.krebsco.de/image/delete/%1";
PATH = "${config.home-manager.users.me.home.profileDirectory}/bin";
};
};
}

79
configs/flix.nix Normal file
View File

@@ -0,0 +1,79 @@
{ config, pkgs, ... }:
let
flixLocation = "/media/flix";
cacheLocation = "/var/cache/flix";
indexFilename = "index";
flixUser = "flix";
flixGroup = "users";
inherit (import <niveum/lib>) tmpfilesConfig;
in {
fileSystems.${flixLocation} = {
device = "prism.r:/export";
fsType = "nfs";
options = [
"noauto"
"noatime"
"nodiratime"
"x-systemd.automount"
"x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min"
"x-systemd.requires=tinc.retiolum.service"
"x-systemd.requires=wpa_supplicant.service"
"user"
"_netdev"
];
};
systemd.tmpfiles.rules = [
(tmpfilesConfig {
type = "d";
path = cacheLocation;
mode = "0750";
user = flixUser;
group = flixGroup;
})
];
systemd.services.flix-index = {
description = "Flix indexing service";
wants = [ "network-online.target" ];
script = "cp ${flixLocation}/download/index ./${indexFilename}";
startAt = "hourly";
serviceConfig = {
Type = "oneshot";
User = flixUser;
Group = flixGroup;
WorkingDirectory = cacheLocation;
};
};
users.extraUsers.${flixUser} = {
isSystemUser = true;
createHome = true;
home = cacheLocation;
extraGroups = [ flixGroup ];
};
environment.systemPackages = [
(pkgs.writers.writeDashBin "mpv-simpsons" ''
set -efu
cd "${flixLocation}/download"
[ -f "${cacheLocation}/${indexFilename}" ] || exit 1
cat "${cacheLocation}/${indexFilename}" \
| ${pkgs.gnugrep}/bin/grep -i 'simpsons.*mkv' \
| shuf \
| ${pkgs.findutils}/bin/xargs -d '\n' ${pkgs.mpv}/bin/mpv
'')
(pkgs.writers.writeDashBin "flixmenu" ''
set -efu
cd "${flixLocation}/download"
[ -f "${cacheLocation}/${indexFilename}" ] || exit 1
${pkgs.dmenu}/bin/dmenu -i -p flix -l 5 "$@" < ${cacheLocation}/${indexFilename} \
| ${pkgs.findutils}/bin/xargs -I '{}' ${pkgs.utillinux}/bin/setsid ${pkgs.xdg_utils}/bin/xdg-open '{}'
'')
];
}

View File

@@ -1,19 +1,41 @@
{ pkgs, ... }: { pkgs, ... }: {
{ nixpkgs.config.joypixels.acceptLicense = true;
niveum.fonts = {
ui = {
name = "Sans";
size = 9;
};
terminal = {
name = "Monospace";
size = 9;
};
};
fonts = { fonts = {
enableDefaultFonts = true; enableDefaultFonts = true;
enableFontDir = true; fontDir.enable = true;
fonts = with pkgs; [ corefonts eb-garamond fira libertine lmodern noto-fonts roboto ubuntu_font_family ]; fonts = with pkgs; [
alegreya
alegreya-sans
corefonts
eb-garamond
fira
font-awesome-ttf
ibm-plex
inconsolata
iosevka
libertine
lmodern
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
roboto
roboto-mono
roboto-slab
source-code-pro
source-serif-pro
source-sans-pro
ubuntu_font_family
gfs-fonts
jetbrains-mono
twemoji-color-font
joypixels
];
fontconfig.defaultFonts = {
monospace = [ "JetBrains Mono" "JoyPixels" ];
serif = [ "Roboto Slab" ];
sansSerif = [ "Roboto" "Noto Sans" ];
emoji = [ "JoyPixels" ];
};
}; };
} }

32
configs/fzf.nix Normal file
View File

@@ -0,0 +1,32 @@
{ pkgs, lib, ... }: {
environment = {
systemPackages = [ pkgs.fzf ];
variables = {
FZF_DEFAULT_OPTS =
lib.escapeShellArgs [ "--height=40%" "--layout=reverse" ];
FZF_ALT_C_COMMAND = "${pkgs.fd}/bin/fd --type d";
FZF_ALT_C_OPTS = lib.escapeShellArgs [
"--preview='${pkgs.tree}/bin/tree -L 1 \"{}\"'"
"--bind=space:toggle-preview"
"--preview-window=hidden"
];
FZF_CTRL_T_COMMAND = "${pkgs.fd}/bin/fd --type f";
FZF_CTRL_T_OPTS =
lib.escapeShellArgs [ "--preview='${pkgs.bat}/bin/bat \"{}\"'" ];
};
};
programs.zsh.interactiveShellInit = ''
if [[ $options[zle] = on ]]; then
. ${pkgs.fzf}/share/fzf/completion.zsh
. ${pkgs.fzf}/share/fzf/key-bindings.zsh
fi
'';
programs.bash.interactiveShellInit = ''
if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then
. ${pkgs.fzf}/share/fzf/completion.bash
. ${pkgs.fzf}/share/fzf/key-bindings.bash
fi
'';
}

25
configs/gaslight.nix Normal file
View File

@@ -0,0 +1,25 @@
{ pkgs, ... }:
{
environment.systemPackages = [
(pkgs.writers.writeDashBin "gaslight-stream" ''
${pkgs.ffmpeg}/bin/ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f alsa -i default -c:v libx264 -preset ultrafast -c:a aac -f avi -
'')
(pkgs.writers.writeDashBin "gaslight-say" ''
voices="de
de+whisper"
echo "$@" | ${pkgs.espeak}/bin/espeak -v "$(echo "$voices" | ${pkgs.coreutils}/bin/shuf -n1)"
'')
(pkgs.writers.writeDashBin "gaslight-play" ''
set -o noglob
${pkgs.mpv}/bin/mpv --no-video "$1"
'')
];
}
/*
ssh machine gaslight-stream | mpv -
ssh machine gaslight-say "blablabla"
*/

View File

@@ -1,25 +1,64 @@
{ pkgs, config, ... }: { pkgs, config, lib, ... }:
let
inherit (import <niveum/lib>) kieran ignorePaths;
in
{ {
environment.systemPackages = [ environment.systemPackages = [
pkgs.mr pkgs.mr
pkgs.git pkgs.git
pkgs.gitAndTools.gitflow
pkgs.gitAndTools.hub pkgs.gitAndTools.hub
pkgs.gitAndTools.gh
pkgs.gitAndTools.git-extras pkgs.gitAndTools.git-extras
pkgs.gitAndTools.git-trim
pkgs.gitstats pkgs.gitstats
pkgs.patch pkgs.patch
pkgs.patchutils pkgs.patchutils
pkgs.git-quick-stats
pkgs.git-preview pkgs.git-preview
]; ];
environment.shellAliases = {
gf = "git-flow";
g = "git";
};
home-manager.users.me = { home-manager.users.me = {
home.file.".mrconfig".text = builtins.readFile <dot/mrconfig.ini>; home.file.".mrconfig".text = let
prependPath = prefix:
lib.attrsets.mapAttrs'
(path: lib.attrsets.nameValuePair "${prefix}/${path}");
git = url: { checkout = "git clone ${url}"; };
github = owner: repo: git "git@github.com:${owner}/${repo}";
keybase = owner: repo: git "keybase://private/${owner}/${repo}";
in lib.generators.toINI { } ({
DEFAULT = { git_gc = ''git gc "$@"''; };
} // prependPath "projects" {
"menstruation.rs" = github "kmein" "menstruation.rs";
brockman = github "kmein" "brockman";
challenges = github "kmein" "challenges";
conlangs = github "kmein" "conlangs";
ledger = keybase "kmein" "ledger";
mahlzeit = github "kmein" "mahlzeit";
menstruation-telegram = github "kmein" "menstruation-telegram";
meteora = github "kmein" "meteora";
modernizr = github "kmein" "modernizr";
niveum = github "kmein" "niveum";
nixpkgs = github "NixOS" "nixpkgs";
poetry = github "kmein" "poetry";
quotes = github "kmein" "quotes";
sphinx = github "kmein" "sphinx";
stockholm = git "https://cgit.krebsco.de/stockholm";
telebots = github "kmein" "telebots";
traadfri = github "kmein" "traadfri";
wissen = github "kmein" "wissen";
zen = github "kmein" "zen";
});
programs.git = { programs.git = {
enable = true; enable = true;
package = pkgs.gitAndTools.gitFull; package = pkgs.gitAndTools.gitFull;
userName = config.niveum.user.name; userName = kieran.name;
userEmail = config.niveum.user.email; userEmail = kieran.email;
aliases = { aliases = {
br = "branch"; br = "branch";
co = "checkout"; co = "checkout";
@@ -31,9 +70,34 @@
diffs = "diff --staged"; diffs = "diff --staged";
last = "log -1 HEAD"; last = "log -1 HEAD";
logs = "log --pretty=oneline"; logs = "log --pretty=oneline";
graph = "log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"; graph =
"log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
};
ignores = ignorePaths;
extraConfig = {
pull.ff = "only";
rebase.autoStash = true;
merge.autoStash = true;
core.pager =
"${pkgs.gitAndTools.diff-so-fancy}/bin/diff-so-fancy | ${pkgs.less}/bin/less --tabs=4 -RFX";
color = {
ui = true;
diff = {
meta = "11";
frag = "magenta bold";
commit = "yellow bold";
old = "red bold";
new = "green bold";
whitespace = "red reverse";
};
diff-highlight = {
oldNormal = "red bold";
oldHighlight = "red bold 52";
newNormal = "green bold";
newHighlight = "green bold 22";
};
};
}; };
ignores = config.niveum.ignore;
}; };
}; };
} }

13
configs/gitea.nix Normal file
View File

@@ -0,0 +1,13 @@
{
services.gitea = {
enable = true;
disableRegistration = true;
rootUrl = "https://code.xn--kiern-0qa.de";
appName = "code.kierán.de";
};
services.nginx.virtualHosts."code.xn--kiern-0qa.de" = {
forceSSL = true;
enableACME = true;
locations."/".extraConfig = "proxy_pass http://localhost:3000;";
};
}

View File

@@ -1,5 +0,0 @@
{
services.gollum = {
enable = true;
};
}

View File

@@ -1,46 +0,0 @@
{ config, pkgs, ... }:
{
home-manager.users.me.home.file = {
".ghc/ghci.conf".text = ''
:set editor vim
:def hoogle \s -> return $ ":!${pkgs.haskellPackages.hoogle}/bin/hoogle search --color -l --count=15 \"" ++ s ++ "\""
:def doc \s -> return $ ":!${pkgs.haskellPackages.hoogle}/bin/hoogle search --color -l --info \"" ++ s ++ "\""
:def pl \x -> return $ ":!${pkgs.haskellPackages.pointfree}/bin/pointfree -v \"" ++ x ++ "\""
:set prompt "\o033[1m%s\o033[1;34m λ\o033[0m "
:set -Wall
'';
# :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\""
".stack/config.yaml".text = let user = config.niveum.user; in ''
templates:
params:
author-name: ${user.name}
author-email: ${user.email}
copyright: 'Copyright: (c) 2019 ${user.name}'
github-username: ${user.github}
'';
};
services.hoogle = {
enable = true;
packages = import ./packages.nix;
port = 8091;
};
environment.systemPackages = with pkgs; [
cabal2nix
stack2nix
cabal-install
hlint
# haskellPackages.brittany
(haskellPackages.ghcWithHoogle (import ./packages.nix))
] ++ map haskell.lib.justStaticExecutables [
haskellPackages.ghcid
haskellPackages.hakyll
# haskellPackages.hfmt
haskellPackages.hasktags
haskellPackages.hindent
haskellPackages.pointfree
# haskellPackages.pointful
haskellPackages.hpack
];
}

61
configs/hass/default.nix Normal file
View File

@@ -0,0 +1,61 @@
{ config, pkgs, lib, ... }:
let
inherit (import ./lib.nix) triggers;
inherit (import <niveum/lib>) localAddresses;
in
{
imports = [
./zigbee.nix
./frontend.nix
];
services.home-assistant = {
enable = true;
configWritable = true;
lovelaceConfigWritable = true;
openFirewall = true;
config = {
homeassistant = {
name = "Toum";
latitude = config.location.latitude;
longitude = config.location.longitude;
elevation = 90; # TODO find out how high I live
unit_system = "metric";
time_zone = config.time.timeZone;
};
config = {};
discovery = {};
system_health = {};
history = {};
# tradfri.host = localAddresses.tradfri; # dont use until python3Packages.pytradfri is packaged
sun = {};
mobile_app = {};
shopping_list = {};
sensor = [
{
platform = "dwd_weather_warnings";
region_name = "Berlin";
}
];
mqtt = {
broker = "localhost";
port = 1883;
client_id = "home-assistant";
username = "albrecht";
password = lib.strings.fileContents <system-secrets/mosquitto>;
keepalive = 60;
protocol = "3.1";
discovery = true;
birth_message = {
topic = "/hass/status";
payload = "online";
};
will_message = {
topic = "/hass/status";
payload = "offline";
};
};
};
};
}

37
configs/hass/frontend.nix Normal file
View File

@@ -0,0 +1,37 @@
let
inherit (import ./lib.nix) triggers;
in
{
services.home-assistant.config = {
frontend = {
themes = {
day_theme = import ./themes/clear.nix;
night_theme = import ./themes/clear-dark.nix;
};
};
automation = [
{
alias = "Night Theme";
hide_entity = true;
trigger = triggers.night;
action = [
{
service = "frontend.set_theme";
data.name = "night_theme";
}
];
}
{
alias = "Day Theme";
hide_entity = true;
trigger = triggers.day;
action = [
{
service = "frontend.set_theme";
data.name = "day_theme";
}
];
}
];
};
}

16
configs/hass/lib.nix Normal file
View File

@@ -0,0 +1,16 @@
{
triggers = {
night = {
platform = "numeric_state";
entity_id = "sun.sun";
value_template = "{{ state.attributes.elevation }}";
below = -4.0;
};
day = {
platform = "numeric_state";
entity_id = "sun.sun";
value_template = "{{ state.attributes.elevation }}";
above = 0;
};
};
}

View File

@@ -0,0 +1,72 @@
rec {
# Colors
text-color = "#DADADB"; # Grey text
text-medium-light-color = "#A0A2A8"; # Medium-light grey text
text-medium-color = "#80828A"; # Medium grey text
text-dark-color = "#6A6B74"; # Dark grey text
accent-color = "#008bef"; # Blue
accent-medium-color = "#2484C9"; # Decent blue
background-color = "#3b4049"; # Dark grey background
background-color-2 = "#484E59"; # Light grey background
background-card-color = "#434952"; # Grey background
border-color = "#383C46"; # Grey border
# Header
app-header-background-color = "#363941"; # Background color
# Text
primary-color = text-color;
text-primary-color = text-color;
# Left Menu
paper-listbox-background-color = background-color; # Background
sidebar-icon-color = text-medium-color; # icons
sidebar-selected-icon-color = text-medium-light-color; # Selected row icon and background (15%)
sidebar-selected-text-color = text-color; # Selected row label
# UI
paper-card-header-color = text-color; # Title in settings
primary-background-color = background-color; # Background (also title background in left menu)
mdc-theme-primary = accent-medium-color; # Action Buttons (save, restart etc.)
card-background-color = background-card-color; # Entity Registry Background
# Card
paper-card-background-color = background-card-color; # Background
dark-primary-color = text-color;
primary-text-color = text-color;
paper-listbox-color = text-color;
light-primary-color = text-dark-color;
secondary-text-color = text-medium-color;
disabled-text-color = text-dark-color;
paper-dialog-button-color = text-color;
secondary-background-color = background-color-2; # Background more info title
# Icons
paper-item-icon-color = text-dark-color; # Off
paper-item-icon-active-color = accent-color; # On
# Switches
switch-checked-button-color = text-medium-light-color; # Knob On
switch-unchecked-button-color = text-medium-light-color; # Knob Off
switch-checked-track-color = "#009FFF"; # Background On
switch-unchecked-track-color = "#767682"; # Background Off
# Slider
paper-slider-active-color = accent-color; # Line On
paper-slider-knob-color = text-medium-light-color; # Knob On
paper-slider-container-color = text-dark-color; # Line Off
paper-slider-knob-start-color = text-medium-light-color; # Knob Off
# Badges
label-badge-text-color = text-color;
label-badge-background-color = "rgba(54, 57, 65, 0.6)";
# Shadows
ha-card-box-shadow = "inset 0px 0px 0px 1px var(--border-color)";
# HACS
hacs-badge-color = accent-color; # New Badge
hacs-status-installed = text-color; # Installed Icon
hacs-status-pending-restart = text-dark-color; # Restart Icon
hacs-status-pending-update = accent-color;
}

View File

@@ -0,0 +1,52 @@
rec {
text-color = "#636B75"; # Grey text
text-medium-color = "#8c96a5"; # Medium grey text
text-light-color = "#BAC0C6"; # Light grey text
accent-color = "#00a1ff"; # Blue
background-color = "#F7F8F9"; # Light grey background
background-color-2 = "#F4F5F6"; # Light grey background
background-card-color = "rgba(255,255,255,1.0)"; # White background
border-color = "#E8E8E8"; # Light grey border
# Header
primary-color = text-color; # Background
text-primary-color = "#FFF"; # Text
# Left Menu
paper-listbox-background-color = background-color; # Background
# TODO = Text and Icons
# UI
paper-card-header-color = text-color; # Title in settings
primary-background-color = background-color; # Background color (also title background in left menu)
# Card
paper-card-background-color = background-card-color; # Background
dark-primary-color = text-color;
primary-text-color = text-color;
paper-listbox-color = text-color;
light-primary-color = text-light-color;
secondary-text-color = text-medium-color;
disabled-text-color = text-light-color;
paper-dialog-button-color = text-color;
secondary-background-color = background-color-2; # Background more info title
# Icons
paper-item-icon-color = text-light-color; # Off
paper-item-icon-active-color = accent-color; # On
# Switches
switch-checked-button-color = "#FFF"; # Knob On
switch-unchecked-button-color = "#FFF"; # Knob Off
switch-checked-track-color = "#0077FF"; # Background On
switch-unchecked-track-color = disabled-text-color; # Background Off
# Slider
paper-slider-active-color = accent-color; # Line On
paper-slider-container-color = "#e5e7ea"; # Line Off
paper-slider-knob-color = text-light-color; # Knob On
paper-slider-knob-start-color = text-light-color; # Knob Off
# Shadows
ha-card-box-shadow = "inset 0px 0px 0px 1px var(--border-color)";
}

102
configs/hass/zigbee.nix Normal file
View File

@@ -0,0 +1,102 @@
{ config, pkgs, lib, ... }:
let
inherit (import <niveum/lib>) localAddresses;
in
{
services.zigbee2mqtt = {
enable = true;
config = {
permit_join = false;
homeassistant = true;
serial = {
port = "/dev/ttyACM0";
disable_led = true;
};
mqtt = {
discovery = true;
base_topic = "zigbee";
server = "mqtt://${localAddresses.toum}";
user = "albrecht";
password = lib.strings.fileContents <system-secrets/mosquitto>;
};
};
};
services.mosquitto = {
enable = true;
host = "0.0.0.0";
allowAnonymous = false;
checkPasswords = true;
users."albrecht" = {
password = lib.strings.fileContents <system-secrets/mosquitto>;
acl = [ "topic readwrite #" ];
};
};
networking.firewall.allowedTCPPorts = [ 1883 ];
environment.systemPackages = [ pkgs.mosquitto ];
services.home-assistant = {
config = {
switch = [
{
platform = "mqtt";
name = "zigbee2mqtt_join";
state_topic = "/zigbee2mqtt/bridge/config/permit_join";
command_topic = "/zigbee2mqtt/bridge/config/permit_join";
payload_on = "true";
payload_off = "false";
}
];
timer.zigbee_permit_join = {
name = "Zigbee Time remaining";
duration = 120;
};
automation = [
# Automation to start timer when enable join is turned on
{
id = "zigbee_join_enabled";
alias = "";
hide_entity = "true";
trigger = {
platform = "state";
entity_id = "switch.zigbee2mqtt_join";
to = "on";
};
action = {
service = "timer.start";
entity_id = "timer.zigbee_permit_join";
};
}
# Automation to stop timer when switch turned off and turn off switch when timer finished
{
id = "zigbee_join_disabled";
hide_entity = "true";
trigger = [
{
platform = "event";
event_type = "timer.finished";
event_data.entity_id = "timer.zigbee_permit_join";
}
{
platform = "state";
entity_id = "switch.zigbee2mqtt_join";
to = "off";
}
];
action = [
{
service = "timer.cancel";
data.entity_id = "timer.zigbee_permit_join";
}
{
service = "switch.turn_off";
entity_id = "switch.zigbee2mqtt_join";
}
];
}
];
};
};
}

81
configs/hedgedoc.nix Normal file
View File

@@ -0,0 +1,81 @@
{ config, pkgs, ... }:
let
backupLocation = "/var/lib/codimd-backup";
stateLocation = "/var/lib/codimd/state.sqlite";
nixpkgs-unstable = import <nixpkgs-unstable> {};
domain = "pad.xn--kiern-0qa.de";
in
{
imports = [ <stockholm/krebs/3modules/permown.nix> ];
services.nginx.virtualHosts.${domain} = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "https://localhost:3091";
proxyWebsockets = true;
};
};
security.acme.certs.${domain}.group = "hedgecert";
users.groups.hedgecert.members = [ "codimd" "nginx" ];
security.dhparams = {
enable = true;
params.hedgedoc = {};
};
services.hedgedoc = {
enable = true;
configuration = {
allowOrigin = [ domain ];
allowAnonymous = true;
allowGravatar = false;
allowFreeURL = true;
db = {
dialect = "sqlite";
storage = stateLocation;
};
port = 3091;
domain = domain;
useSSL = true;
protocolUseSSL = true;
sslCAPath = [ "/etc/ssl/certs/ca-certificates.crt" ];
sslCertPath = "/var/lib/acme/${domain}/cert.pem";
sslKeyPath = "/var/lib/acme/${domain}/key.pem";
dhParamPath = config.security.dhparams.params.hedgedoc.path;
};
};
krebs.permown.${backupLocation} = { owner = "codimd"; group = "codimd"; umask = "0002"; };
systemd.services.hedgedoc-backup = {
description = "Hedgedoc backup service";
script = ''
${nixpkgs-unstable.sqlite}/bin/sqlite3 -json ${stateLocation} "select shortid, alias, ownerId, content from Notes" \
| ${pkgs.writers.writePython3 "hedgedoc-json-to-fs.py" {} ''
import json
import pathlib
import sys
for note in json.load(sys.stdin):
user_directory = pathlib.Path()
if note["ownerId"]:
user_directory = pathlib.Path(note["ownerId"])
user_directory.mkdir(exist_ok=True)
file_path = user_directory / (
(note["alias"] if note["alias"] else note["shortid"]) + ".md"
)
file_path.write_text(note["content"])
print(f" {file_path}", file=sys.stderr)
''}
'';
startAt = "hourly";
serviceConfig = {
Type = "oneshot";
User = "codimd";
Group = "codimd";
WorkingDirectory = backupLocation;
};
};
}

View File

@@ -1,15 +1,14 @@
{ config, pkgs, ... }: { config, pkgs, ... }: {
{ imports = [ <niveum/modules/hledger.nix> ];
imports = [ <modules/hledger.nix> ];
niveum.hledger = { niveum.hledger = {
enable = true; enable = true;
ledgerFile = "$HOME/prog/git/ledger/current.journal"; ledgerFile = "$HOME/projects/ledger/all.journal";
server = { server = {
enable = false; enable = false;
user = config.users.users.me; user = config.users.users.me;
package = pkgs.unstable.hledger-web; package = pkgs.hledger-web;
}; };
package = pkgs.unstable.hledger; package = pkgs.hledger;
}; };
} }

View File

@@ -1,7 +0,0 @@
{
services.home-assistant = {
enable = true;
configWritable = true;
lovelaceConfigWritable = true;
};
}

View File

@@ -2,33 +2,28 @@
home-manager.users.me = { home-manager.users.me = {
programs.htop = { programs.htop = {
enable = true; enable = true;
colorScheme = 0; settings = {
accountGuestInCpuMeter = true; color_scheme = 0;
cpuCountFromZero = false; account_guest_in_cpu_meter = true;
delay = 15; cpu_count_from_zero = false;
detailedCpuTime = false; delay = 15;
headerMargin = true; detailed_cpu_time = false;
hideKernelThreads = true; header_margin = true;
hideThreads = false; hide_kernel_threads = true;
hideUserlandThreads = false; hide_threads = true;
highlightBaseName = true; hide_userland_threads = true;
highlightMegabytes = true; highlight_base_name = true;
highlightThreads = true; highlight_megabytes = true;
shadowOtherUsers = true; highlight_threads = true;
showProgramPath = false; shadow_other_users = true;
showThreadNames = true; show_program_path = false;
sortDescending = true; show_thread_names = false;
sortKey = "PERCENT_CPU"; sort_descending = true;
treeView = true; sort_key = "PERCENT_CPU";
updateProcessNames = false; tree_view = true;
meters = { update_process_names = false;
left = [ right_meters = [ "Uptime" "Tasks" "LoadAverage" "Battery" ];
{ kind = "LeftCPUs2"; mode = 1; } left_meters = [ "LeftCPUs2" "RightCPUs2" "Memory" "Swap" ];
{ kind = "RightCPUs2"; mode = 1; }
{ kind = "Memory"; mode = 1; }
{ kind = "Swap"; mode = 1; }
];
right = [ "Uptime" "Tasks" "LoadAverage" "Battery" ];
}; };
}; };
}; };

View File

@@ -1,43 +1,80 @@
{ pkgs, lib, ... }: { config, pkgs, lib, ... }:
let let
inherit (lib.strings) fileContents;
inherit (import <niveum/lib>) sshPort;
eduroam = { eduroam = {
identity = lib.strings.removeSuffix "\n" (builtins.readFile <shared-secrets/eduroam/identity>); identity = fileContents <secrets/eduroam/identity>;
password = lib.strings.removeSuffix "\n" (builtins.readFile <shared-secrets/eduroam/password>); password = fileContents <secrets/eduroam/password>;
}; };
eduroamAuth = '' hu-berlin-cifs-options = [
key_mgmt=WPA-EAP "uid=${toString config.users.users.me.uid}"
eap=TTLS "gid=${toString config.users.groups.users.gid}"
proto=RSN "sec=ntlmv2"
identity="${eduroam.identity}" "workgroup=german"
anonymous_identity="anonymous@wlan.hu-berlin.de" "username=meinhaki"
altsubject_match="DNS:srv1-radius.cms.hu-berlin.de;DNS:srv2-radius.cms.hu-berlin.de" "password=${lib.strings.fileContents <secrets/mail/meinhaki>}"
password="${eduroam.password}" "noauto"
ca_cert="${pkgs.fetchurl { "x-systemd.requires=openvpn-hu-berlin.service"
url = https://www.cms.hu-berlin.de/de/dl/netze/wlan/config/eduroam/t-telesec_globalroot_class_2.pem; "x-systemd.automount"
sha256 = "0if8aqd06sid7a0vw009zpa087wxcgdd2x6z2zs4pis5kvyqj2dk"; "x-systemd.device-timeout=1"
}}" "x-systemd.idle-timeout=1min"
phase2="auth=PAP" ];
'';
in { in {
networking.wireless.networks = { fileSystems."/media/hu-berlin/germpro2" = {
eduroam_5GHz.auth = eduroamAuth; device = "//hugerm31c.user.hu-berlin.de/germpro2/ling";
eduroam.auth = eduroamAuth; fsType = "cifs";
options = hu-berlin-cifs-options;
}; };
services.openvpn.servers = { fileSystems."/media/hu-berlin/germhome" = {
hu-berlin = { device = "//hugerm31c.user.hu-berlin.de/germhome/ling/meinhaki";
config = '' fsType = "cifs";
config ${pkgs.fetchurl { options = hu-berlin-cifs-options;
url = https://www.cms.hu-berlin.de/de/dl/netze/vpn/openvpn/hu-berlin.ovpn; };
sha256 = "15b55aibik5460svjq2gwxrcyh6ay4k8savd6cd5lncgndmd8p8h";
}} environment.systemPackages = [
# route-nopull (pkgs.writers.writeDashBin "hu-ip" ''
# route 141.20.0.0 255.255.0.0 ${pkgs.w3m}/bin/w3m -dump meineip.hu-berlin.de | head --lines=-4 | tail --lines=+3
''; '')
authUserPass = { (pkgs.writers.writePython3Bin "hu-eduroam-install"
username = eduroam.identity; {
password = eduroam.password; libraries = with pkgs.python3Packages; [ distro pyopenssl dbus-python ];
}; flakeIgnore = [ "E501" "E123" "W504" "E722" "F821" "E226" "E126" "E265" "W291" ];
}
(builtins.readFile (builtins.fetchurl {
url = "https://www.cms.hu-berlin.de/de/dl/netze/wlan/config/eduroam/linux-installer/eduroam-linux-hub.py";
sha256 = "19x2kvwxx13265b2hj5fjf53g0liw6dw7xf9j9cav67cswmz60kf";
}))
)
];
systemd.services.hu-vpn = {
enable = false;
wants = [ "network-online.target" ];
conflicts = [ "openvpn-hu-berlin.service" ];
script = ''
${pkgs.openfortivpn}/bin/openfortivpn -c ${pkgs.writeText "hu-berlin.config" ''
host = forti-ssl.vpn.hu-berlin.de
port = 443
trusted-cert = 42193a913d276d9eb86217612956e1e6464d6f07bed5393a4787c87adc4bd359
username = ${eduroam.identity}
password = ${eduroam.password}
''}
'';
};
systemd.services.openvpn-hu-berlin.conflicts = [ "hu-vpn.service" ];
services.openvpn.servers.hu-berlin = {
autoStart = false;
authUserPass = {
username = eduroam.identity;
password = eduroam.password;
}; };
config = fileContents (pkgs.fetchurl {
url =
"https://www.cms.hu-berlin.de/de/dl/netze/vpn/openvpn/hu-berlin.ovpn";
sha256 = "15b55aibik5460svjq2gwxrcyh6ay4k8savd6cd5lncgndmd8p8h";
});
}; };
} }

View File

@@ -1,56 +1,140 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let let
new-workspace = pkgs.unstable.writers.writeDash "new-workspace" '' inherit (import <niveum/lib>) defaultApplications colours;
klem = import <niveum/packages/scripts/klem.nix> {
inherit pkgs lib;
config.scripts = {
"p.r" = pkgs.writers.writeDash "p.r" ''
${pkgs.curl}/bin/curl -fSs http://p.r --data-binary @- \
| ${pkgs.coreutils}/bin/tail --lines=1 \
| ${pkgs.gnused}/bin/sed 's/\\<r\\>/krebsco.de/'
'';
"ix.io" = pkgs.writers.writeDash "ix.io" ''
${pkgs.curl}/bin/curl -fSs -F 'f:1=<-' ix.io
'';
"go.r" = pkgs.writers.writeDash "go.r" ''
${pkgs.curl}/bin/curl -fSs http://go.r -F "uri=$(${pkgs.coreutils}/bin/cat)"
'';
"0x0.st" = pkgs.writers.writeDash "0x0.st" ''
${pkgs.curl}/bin/curl -fSs https://0x0.st -F "shorten=$(${pkgs.coreutils}/bin/cat)"
'';
"rot13" = pkgs.writers.writeDash "rot13" ''
${pkgs.coreutils}/bin/tr '[A-Za-z]' '[N-ZA-Mn-za-m]'
'';
"ipa" = pkgs.writers.writeDash "ipa" ''
${pkgs.scripts.ipa}/bin/ipa
'';
"betacode" = pkgs.writers.writeDash "betacode" ''
${pkgs.scripts.betacode}/bin/betacode
'';
"devanagari" = pkgs.writers.writeDash "devanagari" ''
${pkgs.scripts.devanagari}/bin/devanagari
'';
"curl" = pkgs.writers.writeDash "curl" ''
${pkgs.curl}/bin/curl -fSs "$(${pkgs.coreutils}/bin/cat)"
'';
};
};
new-workspace = pkgs.writers.writeDash "new-workspace" ''
i3-msg workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1)) i3-msg workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
''; '';
move-to-new-workspace = pkgs.unstable.writers.writeDash "new-workspace" '' move-to-new-workspace = pkgs.writers.writeDash "new-workspace" ''
i3-msg move container to workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1)) i3-msg move container to workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
''; '';
in with config.niveum; {
in {
services.xserver = { services.xserver = {
windowManager.default = "i3"; displayManager.defaultSession = "none+i3";
windowManager.i3.enable = true; windowManager.i3 = {
enable = true;
package = pkgs.i3-gaps;
};
};
services.xserver = {
monitorSection = ''Option "DPMS" "false"'';
serverFlagsSection = ''
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
'';
extraConfig = ''
Section "Extensions"
Option "DPMS" "Disable"
EndSection
'';
}; };
home-manager.users.me.xsession.windowManager.i3 = { home-manager.users.me.xsession.windowManager.i3 = {
enable = true; enable = true;
config = rec { config = rec {
fonts = [ "${config.niveum.fonts.ui.name} ${toString config.niveum.fonts.ui.size}" ]; fonts = {names = ["Sans"]; size = 10.0;};
modifier = "Mod4"; modifier = "Mod4";
window = { window = {
titlebar = false; titlebar = false;
border = 1; border = 1;
hideEdgeBorders = "smart"; hideEdgeBorders = "smart";
commands = [
{
criteria = { class = "floating"; };
command = "floating enable";
}
{
criteria = { class = "fzfmenu"; };
command = "floating enable";
}
{
criteria = { class = "mpv"; };
command = lib.strings.concatStringsSep ", " [
"floating enable"
"sticky enable"
"fullscreen disable"
"resize set 640 480"
"move position mouse"
];
}
];
}; };
gaps.inner = 4;
floating = { floating = {
titlebar = false; titlebar = false;
border = 1; border = 1;
}; };
colors = colors = let
let scheme = { background = colours.background; text = colours.foreground; }; scheme = {
in rec { background = colours.background;
focused = scheme // { text = colours.foreground;
border = colours.background;
indicator = colours.background;
childBorder = colours.background;
};
focusedInactive = focused;
unfocused = focused;
urgent = scheme // {
border = colours.red.bright;
indicator = colours.red.bright;
childBorder = colours.red.bright;
};
placeholder = scheme // {
border = colours.green.bright;
indicator = colours.green.bright;
childBorder = colours.green.bright;
};
}; };
in rec {
focused = scheme // {
border = colours.cyan.bright;
indicator = colours.cyan.bright;
childBorder = colours.cyan.bright;
};
unfocused = scheme // {
border = colours.background;
indicator = colours.background;
childBorder = colours.background;
};
focusedInactive = unfocused;
urgent = scheme // {
border = colours.red.bright;
indicator = colours.red.bright;
childBorder = colours.red.bright;
};
placeholder = scheme // {
border = colours.green.bright;
indicator = colours.green.bright;
childBorder = colours.green.bright;
};
};
bars = [{ bars = [{
workspaceButtons = false; workspaceButtons = false;
fonts = [ "${config.niveum.fonts.terminal.name} ${toString config.niveum.fonts.terminal.size}" ]; fonts = {names = ["Sans"]; size = 8.0;};
mode = "hide"; mode = "hide"; # "dock"
position = "bottom";
colors = rec { colors = rec {
background = colours.background; background = colours.background;
separator = background; separator = background;
@@ -61,108 +145,118 @@ in with config.niveum; {
text = colours.foreground; text = colours.foreground;
}; };
}; };
statusCommand = "${pkgs.i3status}/bin/i3status -c ${pkgs.writeText "i3status.conf" '' statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${
general { (pkgs.formats.toml {}).generate "i3status-rust.toml" (import <niveum/lib/i3status-rust.nix> {
colors = true inherit (config.niveum) batteryName wirelessInterface;
color_good = "${colours.green.dark}" inherit colours;
color_bad = "${colours.red.dark}" inherit pkgs;
color_degraded = "${colours.white.dark}" })
interval = 5 }";
separator = " "
}
# order += "run_watch retiolum"
order += "path_exists openvpn"
order += "wireless ${networkInterfaces.wireless}"
order += "battery all"
order += "volume master"
order += "load"
order += "tztime local"
wireless ${networkInterfaces.wireless} {
format_up = "%essid"
format_down = "offline"
}
# run_watch retiolum {
# pidfile = "/var/run/tinc.retiolum.pid"
# format = "%title"
# }
path_exists openvpn {
path = "/proc/sys/net/ipv4/conf/tun0"
format = "%title"
}
battery all {
format = "%status%percentage"
format_down = "No battery"
status_chr = ""
status_bat = ""
status_unk = ""
status_full = ""
path = "/sys/class/power_supply/BAT%d/uevent"
low_threshold = 15
threshold_type = "percentage"
integer_battery_capacity = true
}
volume master {
format = "%volume"
format_muted = "%volume"
device = "default"
mixer = "Master"
mixer_idx = 0
}
tztime local {
format = "%Y-%m-%d %H:%M"
}
load {
format = "%1min"
}''}";
}]; }];
modes.resize = {
"Escape" = ''mode "default"'';
"Return" = ''mode "default"'';
"h" = "resize shrink width 10 px or 5 ppt";
"j" = "resize grow height 10 px or 5 ppt";
"k" = "resize shrink height 10 px or 5 ppt";
"l" = "resize grow width 10 px or 5 ppt";
};
keybindings = { keybindings = {
"${modifier}+Down" = "focus down"; "${modifier}+Shift+h" = "move left 25 px";
"${modifier}+Left" = "focus left"; "${modifier}+Shift+j" = "move down 25 px";
"${modifier}+Return" = "exec ${applications.terminal}"; "${modifier}+Shift+k" = "move up 25 px";
"${modifier}+Right" = "focus right"; "${modifier}+Shift+l" = "move right 25 px";
"${modifier}+Shift+Down" = "move down";
"${modifier}+Shift+Left" = "move left";
"${modifier}+Shift+Right" = "move right";
"${modifier}+Shift+Up" = "move up";
"${modifier}+Shift+b" = "move window to workspace prev";
"${modifier}+Shift+c" = "reload";
"${modifier}+Shift+n" = "move window to workspace next";
"${modifier}+Shift+q" = "kill";
"${modifier}+Shift+r" = "restart";
"${modifier}+Shift+w" = "exec ${pkgs.xautolock}/bin/xautolock -locknow";
"${modifier}+Shift+x" = "exec --no-startup-id ${move-to-new-workspace}";
"${modifier}+Shift+z" = "floating toggle";
"${modifier}+Up" = "focus up";
"${modifier}+a" = "exec ${pkgs.rofi}/bin/rofi -display-window -show window";
"${modifier}+b" = "workspace prev";
"${modifier}+c" = "split h";
"${modifier}+d" = "exec ${pkgs.rofi}/bin/rofi -display-run -show run";
"${modifier}+e" = "layout toggle split";
"${modifier}+f" = "fullscreen toggle";
"${modifier}+h" = "focus left"; "${modifier}+h" = "focus left";
"${modifier}+j" = "focus down"; "${modifier}+j" = "focus down";
"${modifier}+k" = "focus up"; "${modifier}+k" = "focus up";
"${modifier}+l" = "focus right"; "${modifier}+l" = "focus right";
"${modifier}+Shift+b" = "move window to workspace prev";
"${modifier}+Shift+n" = "move window to workspace next";
"${modifier}+Shift+x" = "exec --no-startup-id ${move-to-new-workspace}";
"${modifier}+b" = "workspace prev";
"${modifier}+n" = "workspace next"; "${modifier}+n" = "workspace next";
"${modifier}+p" = "exec ${pkgs.rofi-pass}/bin/rofi-pass"; "${modifier}+x" = "exec --no-startup-id ${new-workspace}";
"${modifier}+Shift+c" = "reload";
"${modifier}+Shift+q" = "kill";
"${modifier}+Shift+r" = "restart";
"${modifier}+z" = "sticky toggle";
"${modifier}+Shift+z" = "floating toggle";
"${modifier}+s" = "scratchpad show";
"${modifier}+Shift+s" = "move scratchpad";
"${modifier}+c" = "split h";
"${modifier}+e" = "layout toggle split";
"${modifier}+f" = "fullscreen toggle";
"${modifier}+r" = "mode resize"; "${modifier}+r" = "mode resize";
"${modifier}+s" = "layout stacking";
"${modifier}+t" = "exec ${applications.fileManager}";
"${modifier}+v" = "split v"; "${modifier}+v" = "split v";
"${modifier}+w" = "layout tabbed"; "${modifier}+w" = "layout tabbed";
"${modifier}+x" = "exec --no-startup-id ${new-workspace}";
"${modifier}+y" = "exec ${applications.browser}"; # "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser";
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
"${modifier}+0" = "exec ${pkgs.scripts.menu-calc}/bin/=";
"${modifier}+Shift+w" = "exec ${pkgs.scripts.k-lock}/bin/k-lock";
"${modifier}+a" =
"exec --no-startup-id ${pkgs.rofi}/bin/rofi -display-window -show window";
"${modifier}+d" = "exec --no-startup-id ${pkgs.dmenu}/bin/dmenu_run";
"${modifier}+Shift+d" = "exec ${
pkgs.writers.writeDash "notemenu" ''
set -efu
PATH=$PATH:${
lib.makeBinPath [ pkgs.dmenu pkgs.findutils pkgs.coreutils ]
}
cd ~/notes
note_file=$(find . -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2 | dmenu -i)
if test "$note_file"
then
i3-sensible-terminal -e "$EDITOR" "$note_file"
fi
''
}";
"${modifier}+p" = "exec --no-startup-id ${pkgs.pass}/bin/passmenu -l 5";
"${modifier}+u" = "exec ${pkgs.scripts.unicodmenu}/bin/unicodmenu";
"${modifier}+F7" = "exec ${pkgs.scripts.showkeys-toggle}/bin/showkeys-toggle";
"${modifier}+F8" = "exec ${pkgs.xorg.xkill}/bin/xkill";
"${modifier}+F9" = "exec ${pkgs.redshift}/bin/redshift -O 4000 -b 0.85";
"${modifier}+F10" = "exec ${pkgs.redshift}/bin/redshift -x";
"${modifier}+F11" = "exec ${pkgs.xcalib}/bin/xcalib -invert -alter";
"${modifier}+F12" = "exec ${klem}/bin/klem";
"Print" = "exec flameshot gui -p /tmp";
"XF86AudioLowerVolume" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -d 5"; "XF86AudioLowerVolume" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -d 5";
"XF86AudioMute" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -t"; "XF86AudioMute" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -t";
"XF86AudioRaiseVolume" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -i 5"; "XF86AudioRaiseVolume" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -i 5";
"XF86Calculator" = "exec ${pkgs.st}/bin/st -c floating -e ${pkgs.bc}/bin/bc";
"XF86AudioPause" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl pause";
"XF86AudioPlay" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl play-pause";
"XF86AudioNext" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl next";
"XF86AudioPrev" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl previous";
"XF86AudioStop" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl stop";
"XF86ScreenSaver" = "exec ${pkgs.scripts.k-lock}/bin/k-lock";
"XF86Display" = "exec ${pkgs.scripts.dmenurandr}/bin/dmenurandr";
# key names detected with xorg.xev:
# XF86WakeUp (fn twice)
# XF86Battery (fn f3)
# XF86Sleep (fn f4) - actually suspends
# XF86WLAN
# XF86WebCam (fn f6)
# XF86TouchpadToggle (fn f8)
# XF86Suspend (fn f12) - actually suspends to disk
# Num_Lock (fn Roll) - numlocks
# XF86Audio{Prev,Next,Mute,Play,Stop}
# XF86Forward
# XF86Back
# XF86Launch1 (thinkvantage)
}; };
}; };
}; };

View File

@@ -1,7 +1,13 @@
{ {
networking.firewall = { networking.firewall = {
allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; allowedTCPPortRanges = [{
allowedUDPPortRanges = [ { from = 1714; to = 1764; } ]; from = 1714;
to = 1764;
}];
allowedUDPPortRanges = [{
from = 1714;
to = 1764;
}];
}; };
home-manager.users.me = { home-manager.users.me = {

View File

@@ -1,9 +0,0 @@
{ config, ... }:
{
services.keybase.enable = true;
services.kbfs = {
enable = true;
mountPoint = "%h/cloud/keybase";
};
}

View File

@@ -1,11 +1,17 @@
with import <lib>; { pkgs, lib, ... }:
{ let commaSep = builtins.concatStringsSep ",";
in {
services.xserver = { services.xserver = {
layout = commaSep [ "de" "gr" "ru" ]; layout = commaSep [ "de" "gr" "ru" ];
xkbVariant = commaSep [ "T3" "polytonic" "phonetic_winkeys" ]; xkbVariant = commaSep [ "T3" "polytonic" "phonetic" ];
xkbOptions = commaSep [ "compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle" ]; xkbOptions =
commaSep [ "compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle" ];
libinput.enable = true; libinput.enable = true;
}; };
i18n.consoleKeyMap = "de"; console.keyMap = "de";
# improve held key rate
services.xserver.displayManager.sessionCommands =
"${pkgs.xorg.xset}/bin/xset r rate 300 50";
} }

167
configs/khal.nix Normal file
View File

@@ -0,0 +1,167 @@
{ config, pkgs, lib, ... }:
let
davHome = "~/.local/share/dav";
kmeinCloud = {
davEndpoint = "https://cloud.xn--kiern-0qa.de/remote.php/dav";
username = "kieran";
password = lib.fileContents <secrets/nextcloud/password>;
};
fysiCloud = {
davEndpoint = "https://nextcloud.fysi.dev/remote.php/dav";
username = "kmein";
password = lib.fileContents <secrets/nextcloud-fysi/password>;
};
in
{
environment.systemPackages = [ pkgs.khal pkgs.vdirsyncer pkgs.khard pkgs.todoman ];
systemd.user.services.vdirsyncer = {
enable = true;
wants = [ "network-online.target" ];
wantedBy = [ "default.target" ];
startAt = "*:00/10";
script = ''
${pkgs.vdirsyncer}/bin/vdirsyncer sync
${pkgs.khal}/bin/khal printcalendars # https://lostpackets.de/khal/configure.html#syncing
'';
serviceConfig = {
Type = "oneshot";
Restart = "on-failure";
};
};
home-manager.users.me = {
xdg.configFile = {
"khard/khard.conf".text = ''
[addressbooks]
[[contacts]]
path = ${davHome}/contacts/contacts/
[general]
debug = no
default_action = list
editor = ${config.environment.variables.EDITOR}
merge_editor = ${pkgs.vim}/bin/vimdiff
[contact table]
display = first_name
group_by_addressbook = no
reverse = no
show_nicknames = no
show_uids = no
sort = last_name
localize_dates = yes
preferred_phone_number_type = pref, cell, home
preferred_email_address_type = pref, work, home
[vcard]
search_in_source_files = no
skip_unparsable = no
'';
"todoman/todoman.conf".text = ''
[main]
path = ${davHome}/calendar/*
date_format = %Y-%m-%d
time_format = %H:%M
default_due = 0
default_list = Personal
startable = True
'';
"khal/config".text = ''
[calendars]
[[alew]]
path = ${davHome}/calendar/alew
color = "light gray"
[[personal]]
path = ${davHome}/calendar/personal
color = "light cyan"
[[uni]]
path = ${davHome}/calendar/uni-1
color = "yellow"
[[fysi]]
path = ${davHome}/calendar/fysi-1
color = "light magenta"
[[fysi_team]]
path = ${davHome}/calendar/personal_shared_by_fdf
color = "light red"
[[birthdays]]
path = ${davHome}/contacts/contacts
type = birthdays
color = "light green"
[default]
highlight_event_days = True
timedelta = 5d
[locale]
timeformat = %H:%M
dateformat = %Y-%m-%d
longdateformat = %Y-%m-%d
datetimeformat = %Y-%m-%d %H:%M
longdatetimeformat = %Y-%m-%d %H:%M
local_timezone = ${config.time.timeZone}
default_timezone = ${config.time.timeZone}
weeknumbers = left
'';
"vdirsyncer/config".text = ''
[general]
status_path = "~/.local/share/vdirsyncer/status/"
[pair kontakte]
a = "kontakte_local"
b = "kontakte_cloud"
collections = ["contacts"]
conflict_resolution = "b wins"
[pair kalender]
a = "kalender_local"
b = "kalender_cloud"
collections = ["personal", "alew", "uni-1"]
conflict_resolution = "b wins"
[pair fysi]
a = "kalender_local"
b = "fysi_cloud"
collections = ["fysi-1", "personal_shared_by_fdf"]
conflict_resolution = "b wins"
[storage kontakte_local]
type = "filesystem"
path = "${davHome}/contacts/"
fileext = ".vcf"
[storage kalender_local]
type = "filesystem"
path = "${davHome}/calendar/"
fileext = ".ics"
[storage kontakte_cloud]
type = "carddav"
url = "${kmeinCloud.davEndpoint}/addressbooks/users/${kmeinCloud.username}/"
username = "${kmeinCloud.username}"
password = "${kmeinCloud.password}"
[storage kalender_cloud]
type = "caldav"
url = "${kmeinCloud.davEndpoint}/calendars/${kmeinCloud.username}/"
username = "${kmeinCloud.username}"
password = "${kmeinCloud.password}"
[storage fysi_cloud]
type = "caldav"
url = "${fysiCloud.davEndpoint}/calendars/${fysiCloud.username}/"
username = "${fysiCloud.username}"
password = "${fysiCloud.password}"
'';
};
};
}

27
configs/lb.nix Normal file
View File

@@ -0,0 +1,27 @@
{ lib, pkgs, ... }:
let
nixpkgs-unstable = import <nixpkgs-unstable> {};
in
{
systemd.services.lb-subscription = {
enable = true;
wants = [ "network-online.target" ];
startAt = "weekly";
serviceConfig = {
user = "kfm";
WorkingDirectory = "/home/kfm/cloud/Seafile/Books/Germanistik/LB";
};
script = ''
first_year=2019
for year in $(${pkgs.coreutils}/bin/seq "$first_year" "$(date +%Y)"); do
${pkgs.curl}/bin/curl -sSL "https://www.literarische-blaetter.de/jahrgang-$year/" \
| ${nixpkgs-unstable.htmlq}/bin/htmlq --attribute href 'ul.slides a' \
| while read -r month; do
${pkgs.curl}/bin/curl -sSL "$month" \
| ${nixpkgs-unstable.htmlq}/bin/htmlq --attribute src iframe \
| ${pkgs.gnused}/bin/sed 's/.*?pdf=//;s/?wp-hosted.*//'
done
done | ${pkgs.findutils}/bin/xargs ${pkgs.wget}/bin/wget --no-clobber
'';
};
}

View File

@@ -1,58 +0,0 @@
{ config, pkgs, ... }:
{
environment.systemPackages = [
pkgs.notmuch
pkgs.offlineimap
pkgs.msmtp
pkgs.neomutt
];
home-manager.users.me = {
programs.astroid = {
enable = true;
externalEditor = "urxvt -embed %3 -e nvim %1";
pollScript = "offlineimap";
};
accounts.email.maildirBasePath = "${config.users.users.me.home}/mail";
accounts.email.accounts.amroplay = {
astroid.enable = true;
address = "amroplay@gmail.com";
userName = "amroplay";
flavor = "gmail.com";
realName = config.niveum.user.name;
msmtp.enable = true;
notmuch.enable = true;
offlineimap = {
enable = true;
postSyncHookCommand = "notmuch new";
};
};
accounts.email.accounts.hu-berlin = {
astroid.enable = true;
address = "meinhark@hu-berlin.de";
userName = "meinhark";
realName = config.niveum.user.name;
imap = {
host = "mailbox.cms.hu-berlin.de";
port = 993;
tls.enable = true;
};
smtp = {
host = "mailhost.cms.hu-berlin.de";
port = 25;
tls.enable = true;
};
msmtp.enable = true;
notmuch.enable = true;
offlineimap = {
enable = true;
postSyncHookCommand = "notmuch new";
};
primary = true;
};
programs.offlineimap.enable = true;
};
}

56
configs/matterbridge.nix Normal file
View File

@@ -0,0 +1,56 @@
{ pkgs, lib, ... }:
{
nixpkgs.overlays = [
(self: super: {
matterbridge = (import (super.fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
rev = "e45d91ee65db293a172ec506759d1248e40c35f5";
sha256 = "03cjs5xcx09lw0djyrx2kfakw7gkg4iqmy9w25azai62im39l30k";
}) {}).matterbridge;
})
];
services.matterbridge = {
enable = true;
configPath =
let bridgeBotToken = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
in toString ((pkgs.formats.toml {}).generate "config.toml" {
general = {
RemoteNickFormat = "[{NICK}] ";
Charset = "utf-8";
};
telegram.kmein.Token = bridgeBotToken;
irc =
let Nick = "ponte";
in {
hackint = { Server = "irc.hackint.org:6697"; UseTLS = true; inherit Nick; };
};
mumble.lassulus = {
Server = "lassul.us:64738";
Nick = "krebs_bridge";
SkipTLSVerify = true;
};
gateway = [
{
name = "krebs-bridge";
enable = true;
inout = [
{
account = "irc.hackint";
channel = "#krebs";
}
{
account = "telegram.kmein";
channel = "-330372458";
}
{
account = "mumble.lassulus";
channel = 6; # "nixos"
}
];
}
];
});
};
}

41
configs/menstruation.nix Normal file
View File

@@ -0,0 +1,41 @@
{ pkgs, lib, ... }:
let
backend = pkgs.callPackage <niveum/submodules/menstruation-backend> {};
telegram = pkgs.callPackage <niveum/submodules/menstruation-telegram> {};
backendPort = 8000;
in
{
containers.menstruation.autoStart = true;
containers.menstruation.config = { config, pkgs, ... }: {
services.redis.enable = true;
systemd.services.menstruation-telegram = {
wants = [
"network-online.target"
"menstruation-backend.service"
"redis.service"
];
wantedBy = [ "multi-user.target" ];
environment = {
MENSTRUATION_TOKEN = lib.strings.fileContents <system-secrets/telegram/menstruation.token>;
MENSTRUATION_ENDPOINT = "http://localhost:${toString backendPort}";
MENSTRUATION_MODERATORS = "18980945";
};
serviceConfig = {
Restart = "always";
DynamicUser = true;
ExecStart = "${telegram}/bin/menstruation-telegram";
};
};
systemd.services.menstruation-backend = {
wants = [ "network-online.target" ];
environment.ROCKET_PORT = toString backendPort;
serviceConfig = {
Restart = "always";
DynamicUser = true;
ExecStart = "${backend}/bin/menstruation_server";
};
};
};
}

27
configs/mime.nix Normal file
View File

@@ -0,0 +1,27 @@
{
home-manager.users.me = {
xdg.mimeApps = {
enable = true;
defaultApplications = {
"application/epub+zip" = "org.pwmt.zathura.desktop";
"application/pdf" = "org.pwmt.zathura.desktop";
"application/vnd.oasis.opendocument.text" = "writer.desktop";
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = "writer.desktop";
"image/jpeg" = "sxiv.desktop";
"image/png" = "sxiv.desktop";
"image/vnd.djvu+multipage" = "org.pwmt.zathura.desktop";
"text/html" = "brave-browser.desktop";
"text/markdown" = "nvim.desktop";
"text/plain" = "nvim.desktop";
"x-scheme-handler/about" = "brave-browser.desktop";
"x-scheme-handler/http" = "brave-browser.desktop";
"x-scheme-handler/https" = "brave-browser.desktop";
"x-scheme-handler/mailto" = "brave-browser.desktop";
"x-scheme-handler/unknown" = "brave-browser.desktop";
"x-scheme-handler/webcal" = "brave-browser.desktop";
"inode/directory" = "pcmanfm.desktop";
};
};
};
}

View File

@@ -0,0 +1,60 @@
{
auth_enabled = false;
server = {
http_listen_port = 3100;
grpc_listen_port = 9096;
};
ingester = {
wal = {
enabled = true;
dir = "/tmp/wal";
};
lifecycler = {
address = "127.0.0.1";
ring = {
kvstore.store = "inmemory";
replication_factor = 1;
};
final_sleep = "0s";
};
chunk_idle_period = "1h"; # Any chunk not receiving new logs in this time will be flushed
max_chunk_age = "1h"; # All chunks will be flushed when they hit this age, default is 1h
chunk_target_size = 1048576; # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
chunk_retain_period = "30s"; # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)
max_transfer_retries = 0; # Chunk transfers disabled
};
schema_config.configs = [
{
from = "2020-10-24";
store = "boltdb-shipper";
object_store = "filesystem";
schema = "v11";
index = {
prefix = "index_";
period = "24h";
};
}
];
storage_config = {
boltdb_shipper = {
active_index_directory = "/tmp/loki/boltdb-shipper-active";
cache_location = "/tmp/loki/boltdb-shipper-cache";
cache_ttl = "24h"; # Can be increased for faster performance over longer query periods, uses more disk space
shared_store = "filesystem";
};
filesystem.directory = "/tmp/loki/chunks";
};
compactor = {
working_directory = "/tmp/loki/boltdb-shipper-compactor";
shared_store = "filesystem";
};
limits_config = {
reject_old_samples = true;
reject_old_samples_max_age = "168h";
};
chunk_store_config.max_look_back_period = "0s";
table_manager = {
retention_deletes_enabled = false;
retention_period = "0s";
};
}

177
configs/monitoring/pull.nix Normal file
View File

@@ -0,0 +1,177 @@
{ lib, config, pkgs, ... }:
let
lokiConfig = import ./loki.nix;
in
{
services.grafana = {
enable = true;
domain = "grafana.kmein.r";
port = 9444;
addr = "127.0.0.1";
};
services.nginx.virtualHosts.${config.services.grafana.domain} = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.grafana.port}";
proxyWebsockets = true;
};
};
services.prometheus.rules = let diskFreeThreshold = 10; in [(builtins.toJSON {
groups = [{
name = "niveum";
rules = [
{
alert = "ServiceDown";
expr = ''node_systemd_unit_state{state="failed"} == 1'';
annotations = {
summary = "{{$labels.job}}: Service {{$labels.name}} failed to start.";
};
}
{
alert = "RootPartitionFull";
for = "10m";
expr = ''(node_filesystem_free_bytes{mountpoint="/"} * 100) / node_filesystem_size_bytes{mountpoint="/"} < ${toString diskFreeThreshold}'';
annotations = {
summary = "{{ $labels.job }}: Filesystem is running out of space soon.";
description = ''The root disk of {{ $labels.job }} has {{ $value | printf "%.2f" }}% free disk space (threshold at ${toString diskFreeThreshold}%).'';
};
}
{
alert = "RootPartitionFullWeek";
for = "1h";
expr = ''node_filesystem_free_bytes{mountpoint="/"} ''
+ ''and predict_linear(node_filesystem_free_bytes{mountpoint="/"}[2d], 7*24*3600) <= 0'';
annotations = {
summary = "{{$labels.job}}: Filesystem is running out of space in 7 days.";
};
}
{
alert = "HighLoad";
expr = ''node_load15 / on(job) count(node_cpu_seconds_total{mode="system"}) by (job) >= 1.0'';
for = "10m";
annotations = {
summary = "{{$labels.job}}: Running on high load: {{$value}}";
};
}
{
alert = "HighRAM";
expr = "node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes < node_memory_MemTotal_bytes * 0.1";
for = "1h";
annotations.summary = "{{$labels.job}}: Using lots of RAM.";
}
{
alert = "UptimeMonster";
expr = "time() - node_boot_time_seconds > 2592000";
annotations.summary = "{{$labels.job}}: up for more than 30 days.";
}
{
alert = "HostDown";
expr = ''up == 0'';
for = "5m";
annotations = {
summary = "Host {{ $labels.job }} down for 5 minutes.";
};
}
{
alert = "Reboot";
expr = "time() - node_boot_time_seconds < 300";
annotations.summary = "{{$labels.job}}: Reboot";
}
];
}];
})];
systemd.services.alertmanager-bot-telegram =
let
alertmanager-bot-telegram = pkgs.buildGoModule rec {
pname = "alertmanager-bot";
version = "2020-07-13";
src = pkgs.fetchFromGitHub {
owner = "metalmatze";
repo = "alertmanager-bot";
rev = "5efc0bbbf8023d4324e9da98562f064a714a7206";
sha256 = "09cciml1j8x76jpm2v5v6h2q6j1fkhsz1kswslmx8wl4wk40xgp4";
};
vendorSha256 = "1v0fgin8dn81b559zz4lqmrl7hikr46g4gb18sci4riql5qs1isj";
postInstall = ''
install -D ./default.tmpl $out/templates/default.tmpl
'';
};
in {
wantedBy = [ "multi-user.target" ];
after = [ "ip-up.target" ];
environment.TELEGRAM_ADMIN = "18980945";
environment.TELEGRAM_TOKEN = lib.strings.fileContents <system-secrets/telegram/prometheus.token>;
serviceConfig = {
DynamicUser = true;
StateDirectory = "alertbot";
ExecStart = ''${alertmanager-bot-telegram}/bin/alertmanager-bot \
--alertmanager.url=http://localhost:9093 --log.level=info \
--store=bolt --bolt.path=/var/lib/alertbot/bot.db \
--listen.addr="0.0.0.0:16320" \
--template.paths=${pkgs.writeText "template.tmpl" ''
{{ define "telegram.default" }}
{{range .Alerts -}}
{{ if eq .Status "firing" }}
<b>{{ index .Annotations "summary"}}</b>
{{ index .Annotations "description" }}
See on Grafana: http://${config.services.grafana.domain}/d/alpUteInz/niveum
{{ else -}}
RESOLVED 😌 <del>{{ index .Annotations "summary"}}</del>
{{- end }}
{{end -}}
{{end}}
''}'';
};
};
services.prometheus.alertmanager = {
enable = true;
listenAddress = "localhost";
configuration = {
route = {
group_wait = "30s";
repeat_interval = "4h";
receiver = "me";
};
receivers = [{
name = "me";
webhook_configs = [{
url = "http://localhost:16320";
send_resolved = true;
}];
}];
};
};
services.prometheus.alertmanagers = [{
scheme = "http";
path_prefix = "/";
static_configs = [ { targets = [ "localhost:9093" ]; } ];
}];
services.prometheus.scrapeConfigs = [
{
job_name = "makanek";
static_configs = [ { targets = [
"127.0.0.1:${toString config.services.prometheus.exporters.node.port}"
# "127.0.0.1:${toString config.services.prometheus.exporters.nginx.port}"
]; } ];
}
{
job_name = "zaatar";
static_configs = [ { targets = [ "zaatar.r:${toString config.services.prometheus.exporters.node.port}" ]; } ];
}
];
networking.firewall.allowedTCPPorts = [
lokiConfig.server.http_listen_port
];
services.loki = {
enable = true;
configFile = (pkgs.formats.yaml {}).generate "loki.yaml" lokiConfig;
};
}

View File

@@ -0,0 +1,75 @@
{ config, pkgs, ... }:
{
services.nginx.virtualHosts.default = {
locations."= /stub_status".extraConfig = "stub_status;";
};
services.prometheus = {
enable = true;
port = 9001;
exporters = {
nginx.enable = false;
node = {
enable = true;
enabledCollectors = [
"conntrack"
"diskstats"
"entropy"
"filefd"
"filesystem"
"loadavg"
"mdadm"
"meminfo"
"netdev"
"netstat"
"stat"
"time"
"vmstat"
"systemd"
"logind"
"interrupts"
"ksmd"
];
port = 9002;
};
};
};
networking.firewall.allowedTCPPorts = [ config.services.prometheus.exporters.node.port ];
systemd.services.promtail = {
description = "Promtail service for Loki";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''
${pkgs.grafana-loki}/bin/promtail --config.file ${(pkgs.formats.yaml {}).generate "promtail.yaml" {
server = {
http_listen_port = 28183;
grpc_listen_port = 0;
};
positions.filename = "/tmp/positions.yaml";
clients = [
{ url = "http://${if config.networking.hostName == "makanek" then "127.0.0.1" else "makanek.r"}:3100/loki/api/v1/push"; }
];
scrape_configs = [
{
job_name = "journal";
journal = {
max_age = "12h";
labels.job = "systemd-journal";
labels.host = config.networking.hostName;
};
relabel_configs = [
{
source_labels = [ "__journal__systemd_unit" ];
target_label = "unit";
}
];
}
];
}}
'';
};
};
}

View File

@@ -0,0 +1,31 @@
{ config, pkgs, lib, ... }:
let
moodle-dl-package = pkgs.moodle-dl.overrideAttrs (old: old // {
patches = [ <niveum/packages/moodle-dl/telegram-format.patch> ];
});
in
{
containers.moodle-dl-borsfaye = {
autoStart = true;
config = { lib, pkgs, ...}: {
imports = [ <niveum/modules/moodle-dl.nix> ];
services.moodle-dl = {
enable = true;
startAt = "hourly";
package = moodle-dl-package;
notifyOnly = true;
settings = {
telegram = {
token = lib.strings.fileContents <system-secrets/telegram/moodle-dl.token>;
chat_id = "311425510";
send_error_msg = false;
};
token = lib.strings.fileContents <system-secrets/moodle-dl/faye.token>;
moodle_domain = "moodle.hu-berlin.de";
moodle_path = "/";
};
};
};
};
}

View File

@@ -0,0 +1,92 @@
{ config, pkgs, lib, ... }:
let
moodle-dl-package = pkgs.moodle-dl.overrideAttrs (old: old // {
patches = [ <niveum/packages/moodle-dl/telegram-format.patch> ];
});
in
{
imports = [ <niveum/modules/moodle-dl.nix> ];
services.moodle-dl = {
enable = true;
startAt = "hourly";
package = moodle-dl-package;
settings = {
telegram = {
token = lib.strings.fileContents <system-secrets/telegram/moodle-dl.token>;
chat_id = "18980945";
send_error_msg = false;
};
token = lib.strings.fileContents <system-secrets/moodle.token>;
moodle_domain = "moodle.hu-berlin.de";
moodle_path = "/";
download_course_ids = [
# WS 2020
99881 # Dialektologie
100183 # Onomastik
100353 # Sanskrit I
100692 # Sanskrit Tutorium
99832 # Germanisch
99823 # Gotisch
99813 # Altalbanisch
98681 # Geistliche Lyrik von Luther bis Lehnert
99667 # Antike Mythologie
# 52365 # FSR KlassPhil
# SS 2021
104850 # Metrik
103274 # Marc Aurel
102909 # Sanskrit II
104937 # Altirisch
104925 # Gradierung und Komparation
105264 # Was andere Sprachen anders machen
104991 # Warum klingt Orkisch böse
105074 # Litauisch
103685 # Griechische Sprache und Übersetzung I
105455 # Elegia greca
105335 # Homerische Epen
# WS 2021
108122 # Griechisch
107986 # Altostslavisch
107792 # Elegie in Rom
107369 # Tusculanae Disputationes
108586 # Griechische Religion
107988 # Balkanindogermanisch
108312 # Altnordisch
107281 # NLP
108736 # Grammatiktheorie
109438 # Warum klingt Orkisch böse
108025 # Poetik der Nordgermanen
107280 # Statistik
108350 # Attische Redner
107461 # Argonautika
108283 # Digital Classicist
109211 # Altlitauisch
109185 # Etymologie
];
download_submissions = true;
download_descriptions = true;
download_links_in_descriptions = false;
download_databases = false;
download_forums = false;
download_linked_files = false;
download_also_with_cookie = false;
};
};
fileSystems."/export/moodle" = {
device = config.services.moodle-dl.directory;
options = [ "bind" ];
};
networking.firewall.allowedTCPPorts = [ 2049 ];
services.nfs.server = {
enable = true;
exports = let machines = with (import <niveum/lib>).retiolumAddresses; [kabsa manakish]; in ''
/export ${lib.concatMapStringsSep " " (machine: "${machine.ipv4}(fsid=0)") machines}
/export/moodle ${lib.concatMapStringsSep " " (machine: "${machine.ipv4}(insecure,rw)") machines}
'';
};
}

View File

@@ -1,30 +0,0 @@
{ pkgs, ... }:
let secrets = import <dot/secrets.nix>;
in {
services.mopidy = {
enable = true;
extensionPackages = [
pkgs.mopidy-gmusic
pkgs.mopidy-iris
pkgs.mopidy-moped
pkgs.mopidy-mopify
pkgs.mopidy-soundcloud
pkgs.mopidy-spotify
pkgs.mopidy-spotify-tunigo
pkgs.mopidy-youtube
];
configuration = ''
[mpd]
hostname = ::
[spotify]
username = ${secrets.spotify.username}
password = ${secrets.spotify.password}
client_id = ${secrets.spotify.clientId}
client_secret = ${secrets.spotify.clientSecret}
[soundcloud]
auth_token = ${secrets.soundcloud.authToken}
'';
};
}

View File

@@ -1,17 +1,29 @@
{ pkgs, ... }: { pkgs, lib, ... }: let
{ swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
environment.systemPackages = [ pkgs.mpv pkgs.mpv-poll ]; nixpkgs-unstable = import <nixpkgs-unstable> { config.allowUnfree = true; };
in {
environment.shellAliases.smpv = swallow "mpv";
home-manager.users.me.xdg.configFile = { home-manager.users.me = {
"mpv/input.conf".text = '' programs.mpv = {
Alt+RIGHT add video-rotate 90 enable = true;
Alt+LEFT add video-rotate -90 config = {
Alt+- add video-zoom -0.25 ytdl-raw-options = lib.concatStringsSep "," [ ''sub-lang="de,en"'' "write-sub=" "write-auto-sub=" ];
Alt+= add video-zoom 0.25 screenshot-template = "%F-%wH%wM%wS-%#04n";
Alt+l add video-pan-x -0.05 };
Alt+h add video-pan-x 0.05 bindings = {
Alt+k add video-pan-y 0.05 "Alt+RIGHT" = "add video-rotate 90";
Alt+j add video-pan-y -0.05 "Alt+LEFT" = "add video-rotate -90";
''; "Alt+-" = "add video-zoom -0.25";
"Alt+=" = "add video-zoom 0.25";
"Alt+l" = "add video-pan-x -0.05";
"Alt+h" = "add video-pan-x 0.05";
"Alt+k" = "add video-pan-y 0.05";
"Alt+j" = "add video-pan-y -0.05";
};
scripts = [
nixpkgs-unstable.mpvScripts.youtube-quality
];
};
}; };
} }

38
configs/names.nix Normal file
View File

@@ -0,0 +1,38 @@
{ pkgs, lib, ... }:
let
port = 5703;
geogen = (pkgs.fetchFromGitHub {
owner = "kmein";
repo = "scripts";
rev = "c553c212efb04c300edf675c39a87fffd32d4def";
sha256 = "0b5xjr7qqgvwc76pqr84p81svzk6nqr5pdvc6daw94rcgdy02mva";
}) + "/onomastics";
inherit (pkgs.callPackage geogen {}) dependencyEnv;
in
{
systemd.services.names = {
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
description = "Better clone of geogen.stoepel.net";
serviceConfig = {
DynamicUser = true;
};
script = ''
cd $(mktemp -d)
ln -s "${geogen}/wsgi.py" wsgi.py
${dependencyEnv}/bin/gunicorn wsgi:app -b :${toString port}
'';
};
services.nginx = {
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
};
services.nginx.virtualHosts."names.kmein.r" = {
locations."/".proxyPass = "http://127.0.0.1:${toString port}";
};
}

248
configs/neomutt.nix Normal file
View File

@@ -0,0 +1,248 @@
{ pkgs, lib, ... }:
let
mainMailbox = "posteo";
accounts.uni = {
user = "meinhark";
password = lib.strings.fileContents <secrets/eduroam/password>;
address = "kieran.felix.meinhardt@hu-berlin.de";
imap = "mailbox.cms.hu-berlin.de";
smtp = "mailhost.cms.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.uni-old = {
user = "meinhark";
password = lib.strings.fileContents <secrets/eduroam/password>;
address = "meinhark@informatik.hu-berlin.de";
imap = "mailbox.informatik.hu-berlin.de";
smtp = "mailhost.informatik.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.work-uni = {
user = "meinhaki";
password = lib.strings.fileContents <secrets/mail/meinhaki>;
address = "kieran.meinhardt@hu-berlin.de";
imap = "mailbox.cms.hu-berlin.de";
smtp = "mailhost.cms.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.work-fysi = rec {
user = "kieran@fysi.tech";
address = user;
password = lib.strings.fileContents <secrets/mail/fastmail>;
imap = "imap.fastmail.com";
smtp = "smtp.fastmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.cock = rec {
user = "2210@cock.li";
address = user;
password = lib.strings.fileContents <secrets/mail/cock>;
imap = "mail.cock.li";
smtp = imap;
smtpSettings = smtp: "smtp://${smtp}:587";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts."${mainMailbox}" = rec {
user = "kieran.meinhardt@posteo.net";
address = user;
password = lib.strings.fileContents <secrets/mail/posteo>;
imap = "posteo.de";
smtp = imap;
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
accounts.google-amro = rec {
user = "amroplay@gmail.com";
address = user;
password = lib.strings.fileContents <secrets/mail/gmail/amroplay>;
imap = "imap.gmail.com";
smtp = "smtp.gmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "[Gmail]/Drafts";
sent = "[Gmail]/Sent Mail";
trash = "[Gmail]/Bin";
};
};
accounts.google-kieran = rec {
user = "kieran.meinhardt@gmail.com";
address = user;
password = lib.strings.fileContents <secrets/mail/gmail/kieran.meinhardt>;
imap = "imap.gmail.com";
smtp = "smtp.gmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "[Gmail]/Entwürfe";
sent = "[Gmail]/Gesendet";
trash = "[Gmail]/Papierkorb";
};
};
in
{
environment.systemPackages = [ pkgs.neomutt ];
environment.shellAliases.mua = "${pkgs.neomutt}/bin/neomutt -f ${mainMailbox}";
home-manager.users.me.xdg.configFile."neomutt/neomuttrc".text = ''
set mailcap_path = ${pkgs.writeText "mailcap" ''
text/plain; $EDITOR %s ;
text/html; ${pkgs.lynx}/bin/lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput;
image/*; ${pkgs.sxiv}/bin/sxiv %s ;
video/*; ${pkgs.utillinux}/bin/setsid ${pkgs.mpv}/bin/mpv --quiet %s &; copiousoutput
audio/*; ${pkgs.mpv}/bin/mpv %s ;
application/pdf; ${pkgs.zathura}/bin/zathura %s ;
application/pgp-encrypted; ${pkgs.gnupg}/bin/gpg -d '%s'; copiousoutput;
application/pgp-keys; ${pkgs.gnupg}/bin/gpg --import '%s'; copiousoutput;
''}:$mailcap_path
set sidebar_visible
set sidebar_format = "%D%?F? [%F]?%* %?N?%N/?%S"
set sidebar_width = 25 # Plenty of space
set sidebar_divider_char = '' # Pretty line-drawing character
set mail_check_stats
set index_format="%2C %Z %D %-15.15L %s"
set date_format="%F %R"
set sort = 'reverse-date'
set sleep_time = 0 # Pause 0 seconds for informational messages
set markers = no # Disables the `+` displayed at line wraps
set mark_old = no # Unread mail stay unread until read
set wait_key = no # mutt won't ask "press key to continue"
set fast_reply # skip to compose when replying
set forward_format = "Fwd: %s" # format of subject when forwarding
set reverse_name # reply as whomever it was to
set include=ask-no # don't include message in replies
auto_view text/html # automatically show html (mailcap uses lynx)
auto_view application/pgp-encrypted
alternative_order text/plain text/enriched text/html
set abort_noattach abort_noattach_regex="\<(attach|attached|attachments?|anbei|Anhang|angehängt)\>"
set attach_save_dir=/tmp
set fast_reply
set narrow_tree # narrow threads for more depth
bind index,pager B sidebar-toggle-visible # Use 'B' to switch the Sidebar on and off
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new
macro index * <limit>~F\r
macro index + <limit>all\r
set query_command = "khard email --parsable %s"
bind editor <Tab> complete-query
bind editor ^T complete
set mail_check = 90
set timeout = 15
# set imap_check_subscribed
set use_from
set header_cache="~/.cache/mutt" message_cachedir="~/.cache/mutt"
source ${pkgs.writeText "accounts.neomuttrc" ''
set realname = "Kierán Meinhardt"
account-hook . 'unset imap_user imap_pass smtp_user smtp_pass'
# set accordingly: postponed trash record
${lib.concatStringsSep "\n\n" (lib.mapAttrsToList (name: account: let imapRoot = "imaps://${account.user}@${account.imap}"; in ''
account-hook ${account.user}@${account.imap} 'set imap_user="${account.user}" imap_pass="${account.password}"'
account-hook ${account.user}@${account.smtp} 'set smtp_user="${account.user}" smtp_pass="${account.password}"'
folder-hook ${account.user}@${account.imap} 'set smtp_url="${account.smtpSettings "${account.user}@${account.smtp}"}" from="${account.address}" record="${imapRoot}/${account.folders.sent}" postponed="${imapRoot}/${account.folders.drafts}" trash="${imapRoot}/${account.folders.trash}"'
named-mailboxes "${name}" "${imapRoot}" "${name}" "${imapRoot}/${account.folders.sent}"
'') accounts)}
''}
set spoolfile="${mainMailbox}"
source ${pkgs.writeText "colors.neomuttrc" ''
# Default index colors:
color index_number blue default
color index red default '.*'
color index_flags lightcyan default '.*'
color index_author yellow default '.*'
color index_subject lightblack default '.*'
# New mail is boldened:
color index_author lightyellow black "~N"
color index_subject lightwhite black "~N"
# Flagged mail is highlighted:
color index_flags lightmagenta default '~F'
# Other colors and aesthetic settings:
mono bold bold
mono underline underline
mono error bold
mono indicator reverse
# color sidebar_flagged red black
mono sidebar_new bold
color error red default
color message cyan default
color search brightmagenta default
color hdrdefault lightblack default
color quoted green default
color quoted1 blue default
color quoted2 cyan default
color quoted3 yellow default
color quoted4 red default
color quoted5 brightred default
color signature lightblack default
color tree color235 default
# Regex highlighting:
color header red default "^(Date)"
color header yellow default "^(From)"
color header white default "^(B?CC)"
color header brightwhite default "^(Subject)"
color body cyan default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
color body red default "(BAD signature)|^gpg: BAD signature from.*"
color body brightgreen default "(Good signature)|^gpg: Good signature .*"
color body brightyellow default "^gpg: "
mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*"
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
''}
'';
}

View File

@@ -1,109 +1,77 @@
{ pkgs, ... }: { pkgs, ... }: {
{
environment.variables.EDITOR = pkgs.lib.mkForce "nvim"; environment.variables.EDITOR = pkgs.lib.mkForce "nvim";
environment.shellAliases.vi = "nvim"; environment.shellAliases.vi = "nvim";
environment.shellAliases.vim = "nvim"; environment.shellAliases.vim = "nvim";
environment.shellAliases.view = "nvim -R"; environment.shellAliases.view = "nvim -R";
nixpkgs.config.packageOverrides = pkgs: {
vimPlugins = pkgs.vimPlugins // {
cheat-sh-vim = pkgs.callPackage <niveum/packages/vimPlugins/cheat-sh.nix> { };
vim-fetch = pkgs.callPackage <niveum/packages/vimPlugins/vim-fetch.nix> { };
vim-colors-paramount = pkgs.callPackage <niveum/packages/vimPlugins/vim-colors-paramount.nix> { };
vim-256noir = pkgs.callPackage <niveum/packages/vimPlugins/vim-256noir.nix> { };
icalendar-vim = pkgs.callPackage <niveum/packages/vimPlugins/icalendar-vim.nix> { };
jq-vim = pkgs.callPackage <niveum/packages/vimPlugins/jq-vim.nix> { };
vim-fsharp = pkgs.callPackage <niveum/packages/vimPlugins/vim-fsharp.nix> { };
vim-reason-plus = pkgs.callPackage <niveum/packages/vimPlugins/vim-reason-plus.nix> { };
vim-mail = pkgs.callPackage <niveum/packages/vimPlugins/vim-mail.nix> { };
};
};
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writers.writeDashBin "vim" ''neovim "$@"'')
(pkgs.neovim.override { (pkgs.neovim.override {
configure = { configure = {
customRC = builtins.readFile <dot/vimrc>; customRC = builtins.readFile <niveum/lib/vim/init.vim>;
packages.nvim = with pkgs.vimPlugins; { packages.nvim = with pkgs.vimPlugins; {
start = with pkgs.vimPlugins; [ start = [
# cheat-sh-vim
# deoplete-nvim
# vim-abolish
ale ale
deoplete-nvim
fzf-vim fzf-vim
fzfWrapper fzfWrapper
goyo
supertab supertab
undotree
tabular tabular
vim-abolish vimwiki
vim-256noir
vim-colors-paramount
vim-commentary vim-commentary
vim-css-color
vim-eunuch vim-eunuch
vim-fetch
vim-fugitive vim-fugitive
vim-gitgutter vim-gitgutter
vim-pandoc vim-pandoc-after vim-pandoc-syntax vim-pandoc
vim-pandoc-syntax # vim-pandoc-after
vim-repeat vim-repeat
vim-sensible vim-sensible
vim-startify # vim-startify
vim-surround vim-surround
(pkgs.vimUtils.buildVimPluginFrom2Nix rec { vim-mail
name = "vim-fetch";
src = pkgs.fetchFromGitHub {
owner = "wsdjeg";
repo = "vim-fetch";
rev = "76c08586e15e42055c9c21321d9fca0677442ecc";
sha256 = "0avcqjcqvxgj00r477ps54rjrwvmk5ygqm3qrzghbj9m1gpyp2kz";
};
})
(pkgs.vimUtils.buildVimPluginFrom2Nix rec {
name = "vim-colors-paramount";
src = pkgs.fetchFromGitHub {
owner = "owickstrom";
repo = "vim-colors-paramount";
rev = "a5601d36fb6932e8d1a6f8b37b179a99b1456798";
sha256 = "0rjn9vjb0xrxbiqyfclda2ridcbl3nfn4svs32mvmv8als6crncg";
};
})
(pkgs.vimUtils.buildVimPluginFrom2Nix {
name = "vim-256noir";
src = pkgs.fetchFromGitHub {
owner = "andreasvc";
repo = "vim-256noir";
rev = "e8668a18a4a90272c1cae87e655f8bddc5ac3665";
sha256 = "1kpn379f5dgbsgb73g6d1nlmz9vz0j3ihi500mcdx4yg56fvkr0x";
};
})
]; ];
opt = [ opt = [
csv csv
dhall-vim dhall-vim
elm-vim elm-vim
emmet-vim
haskell-vim haskell-vim
icalendar-vim
idris-vim idris-vim
nim-vim
jq-vim
purescript-vim
rust-vim rust-vim
typescript-vim typescript-vim
vim-fsharp
vim-javascript vim-javascript
vim-ledger
vim-nix vim-nix
vim-reason-plus
vim-toml vim-toml
vimtex vimtex
vim-ledger
(pkgs.vimUtils.buildVimPluginFrom2Nix {
name = "todo.txt-vim";
src = pkgs.fetchFromGitHub {
owner = "freitass";
repo = "todo.txt-vim";
rev = "6845221d45bd62e604c2024bc511a56e79d1118b";
sha256 = "08m9q5f2pz6gjp0vkmm7glfsrbnldxi1j59dm5d7any6y96xxd6v";
};
})
(pkgs.vimUtils.buildVimPluginFrom2Nix {
name = "jq.vim";
src = pkgs.fetchFromGitHub {
owner = "vito-c";
repo = "jq.vim";
rev = "5baf8ed192cf267d30b84e3243d9aab3d4912e60";
sha256 = "1ykaxlli7b9wmhr8lpdalqxh7l4940jwhwm9pwlraga425h4r6z4";
};
})
(pkgs.vimUtils.buildVimPluginFrom2Nix {
name = "vim-fsharp";
src = pkgs.fetchFromGitHub {
owner = "fsharp";
repo = "vim-fsharp";
rev = "627db7d701747e8fd7924b6505c61e16a369fb72";
sha256 = "00hhgn2p54faysx1ddccyhl9jnvddgxsczhv0np3mgzza6ls4838";
};
})
(pkgs.vimUtils.buildVimPluginFrom2Nix {
name = "emmet-vim";
src = pkgs.fetchFromGitHub {
owner = "mattn";
repo = "emmet-vim";
rev = "d698f1658770ca5fa58c87e80421c8d65bbe9065";
sha256 = "0vl4267hh8g1vkvc3awlqyypgz4m1r43d47sldl80yamiafiviaj";
};
})
]; ];
}; };
}; };

104
configs/networkmanager.nix Normal file
View File

@@ -0,0 +1,104 @@
{ lib, pkgs, ... }:
let
autowifi = pkgs.writers.writePython3Bin "autowifi" { flakeIgnore = [ "E501" ]; } <stockholm/lass/5pkgs/autowifi/autowifi.py>;
profile = name: custom: lib.recursiveUpdate {
connection.id = name;
connection.type = "wifi";
connection.interface-name = "wlp3s0";
connection.permissions = "";
wifi.mac-address-blacklist = "";
wifi.ssid = name;
wifi.mode = "infrastructure";
ipv4.dns-search = "";
ipv4.method = "auto";
ipv6.addr-gen-mode = "stable-privacy";
ipv6.dns-search = "";
ipv6.method = "auto";
proxy = {};
} custom;
eduroamProfile = {
connection.uuid = "eae9fee6-a7d2-4120-a609-440b457d6fcf";
wifi-security = {
group = "ccmp;tkip;";
key-mgmt = "wpa-eap";
pairwise = "ccmp;";
proto = "rsn;";
};
"802-1x" = {
altsubject-matches = "DNS:srv1-radius.cms.hu-berlin.de;DNS:srv2-radius.cms.hu-berlin.de;";
anonymous-identity = "anonymous@wlan.hu-berlin.de";
ca-cert = pkgs.fetchurl {
url = "https://www.cms.hu-berlin.de/de/dl/netze/wlan/config/eduroam/t-telesec_globalroot_class_2.pem";
sha256 = "0if8aqd06sid7a0vw009zpa087wxcgdd2x6z2zs4pis5kvyqj2dk";
};
eap = "ttls;";
identity = lib.strings.fileContents <secrets/eduroam/identity>;
password = lib.strings.fileContents <secrets/eduroam/password>;
phase2-auth = "pap";
};
};
in
{
imports = [ <niveum/modules/networkmanager-declarative.nix> ];
networking.networkmanager = {
enable = true;
wifi.macAddress = "random";
ethernet.macAddress = "random";
unmanaged = [ "docker*" ];
profiles = lib.mapAttrs profile {
Aether = {
connection.uuid = "7138bb0f-1aeb-4905-890e-a6628427aa21";
ipv6.addr-gen-mode = "stable";
wifi.cloned-mac-address = "stable";
wifi-security = {
psk = lib.strings.fileContents <secrets/wifi/Aether.psk>;
auth-alg = "open";
key-mgmt = "wpa-psk";
};
};
FactoryCommunityGuest = {
connection.uuid = "fb1f2e52-651e-48b5-a72c-1accddf31afb";
connection.timestamp = "1631885129";
wifi.seen-bssids = "54:EC:2F:19:30:DC;54:EC:2F:19:5C:9C;54:EC:2F:58:E4:3C;";
wifi-security = {
psk = "Factory4ever";
auth-alg = "open";
key-mgmt = "wpa-psk";
};
};
o2-WLAN66 = {
connection.uuid = "c563aec3-f344-4ffb-8d1c-60a6cdac8fe0";
wifi-security = {
psk = "PK3468KV488T934U";
auth-alg = "open";
key-mgmt = "wpa-psk";
};
};
"WIFI@DB".connection.uuid = "4eff4e94-8850-4e9f-a338-1787d0d90479";
eduroam = eduroamProfile;
eduroam_5GHz = eduroamProfile;
};
};
users.users.me.extraGroups = [ "networkmanager" ];
systemd.services.autowifi = {
enable = false;
description = "Automatic wifi connector";
wantedBy = [ "multi-user.target" ];
path = [ pkgs.networkmanager ];
serviceConfig = {
Type = "simple";
Restart = "always";
RestartSec = "10s";
ExecStart = "${autowifi}/bin/autowifi";
};
};
networking.networkmanager.dispatcherScripts = [
{ source = "${pkgs.nur.repos.makefu.prison-break}/bin/prison-break"; }
];
environment.systemPackages = [ pkgs.speedtest-cli ];
}

81
configs/newsboat.nix Normal file
View File

@@ -0,0 +1,81 @@
{ pkgs, config, ... }:
let
ytdl-format = "'bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best'";
youtube-download = "${pkgs.ts}/bin/ts ${pkgs.youtube-dl}/bin/youtube-dl -f ${ytdl-format} --add-metadata";
newsboat-home =
"${config.users.users.me.home}/cloud/Seafile/Documents/newsboat";
linkhandler-bin = "${pkgs.scripts.linkhandler}/bin/linkhandler";
newsboat-config = pkgs.writeText "config" ''
auto-reload no
prepopulate-query-feeds yes
# dont keep a search history
history-limit 0
datetime-format %F
text-width 85
external-url-viewer "${pkgs.urlscan}/bin/urlscan -dc -r '${linkhandler-bin} {}'"
browser ${linkhandler-bin}
macro , open-in-browser
macro c set browser "${pkgs.xsel}/bin/xsel -b <<<" ; open-in-browser ; set browser ${linkhandler-bin}
macro v set browser "${pkgs.utillinux}/bin/setsid -f ${pkgs.mpv}/bin/mpv" ; open-in-browser ; set browser ${linkhandler-bin}
macro y set browser "${youtube-download}" ; open-in-browser ; set browser ${linkhandler-bin}
bind-key j down
bind-key k up
bind-key j next articlelist
bind-key k prev articlelist
bind-key J next-feed articlelist
bind-key K prev-feed articlelist
bind-key G end
bind-key g home
bind-key d pagedown
bind-key u pageup
bind-key l open
bind-key h quit
bind-key a toggle-article-read
bind-key n next-unread
bind-key N prev-unread
bind-key D pb-download
bind-key U show-urls
bind-key x pb-delete
save-path ${newsboat-home}/saved/
highlight all "---.*---" yellow default
highlight feedlist ".*(0/0))" black default
highlight article "^Title:.*" yellow default bold
highlight article "^Author:.*" yellow default
highlight article "^Flags:.*" red default
highlight article "\\[[0-9][0-9]*\\]" color66 default bold
highlight article "\\[image [0-9][0-9]*\\]" color109 default bold
highlight article "\\[embedded flash: [0-9][0-9]*\\]" color66 default bold
color background white default
color listnormal white default
color listnormal_unread white default bold
color listfocus blue default
color listfocus_unread blue default bold
color info red default bold
color article white default
'';
in {
nixpkgs.config.packageOverrides = pkgs: {
newsboat = pkgs.writers.writeDashBin "newsboat" ''
${pkgs.newsboat}/bin/newsboat -C ${newsboat-config} -c ${newsboat-home}/cache.db -u ${newsboat-home}/urls "$@"
'';
};
environment.systemPackages = [
pkgs.newsboat
(pkgs.writers.writeDashBin "mpv-watch-later" ''
${pkgs.sqlite}/bin/sqlite3 ${newsboat-home}/cache.db "SELECT url FROM rss_item WHERE flags='e' AND deleted=0 ORDER BY pubDate DESC" \
| ${pkgs.findutils}/bin/xargs ${pkgs.mpv}/bin/mpv
'')
];
}

55
configs/nextcloud.nix Normal file
View File

@@ -0,0 +1,55 @@
{ pkgs, lib, ... }:
let
inherit (import <niveum/lib>) localAddresses;
in
{
services.nextcloud = {
enable = true;
package = pkgs.nextcloud22;
https = true;
autoUpdateApps = {
enable = true;
startAt = "05:00:00";
};
hostName = "cloud.xn--kiern-0qa.de";
config = {
overwriteProtocol = "https";
dbtype = "pgsql";
dbuser = "nextcloud";
dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself
dbname = "nextcloud";
dbpass = lib.strings.fileContents <system-secrets/nextcloud/database>;
adminpass = lib.strings.fileContents <system-secrets/nextcloud/admin>;
adminuser = "admin";
# extraTrustedDomains = [ "toum.r" ];
};
};
services.postgresql = {
enable = true;
ensureDatabases = [ "nextcloud" ];
ensureUsers = [
{
name = "nextcloud";
ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES";
}
];
};
services.nginx.virtualHosts."cloud.xn--kiern-0qa.de" = {
enableACME = true;
forceSSL = true;
};
# Ensure that postgres is running before running the setup
systemd.services."nextcloud-setup" = {
requires = ["postgresql.service"];
after = ["postgresql.service"];
};
}

10
configs/nix.nix Normal file
View File

@@ -0,0 +1,10 @@
{ pkgs, ... }:
{
# enable `nix flake`
nix = {
package = pkgs.nix;
# extraOptions = ''
# experimental-features = nix-command
# '';
};
}

Some files were not shown because too many files have changed in this diff Show More