1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00

667 Commits

Author SHA1 Message Date
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
266 changed files with 10882 additions and 2505 deletions

5
.gitignore vendored
View File

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

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "submodules/much"]
path = submodules/much
url = git@github.com:kmein/much

View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/nix-community/home-manager.git",
"rev": "209566c752c4428c7692c134731971193f06b37c",
"date": "2021-02-09T15:29:47-05:00",
"path": "/nix/store/fslcg7lcxr87ca3ccqd1jcahjlq3ak44-home-manager",
"sha256": "1canlfkm09ssbgm3hq0kb9d86bdh84jhidxv75g98zq5wgadk7jm",
"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": "55aa2c77ce8183f3d2b24f54efa33ab6a42e1e02",
"date": "2020-04-19T01:06:20+02:00",
"path": "/nix/store/08wg2yrcgkr6iwipjd6g0fbwb7gacqax-krops",
"sha256": "00rvx9h596ync8wgic6xc9srzajzm28wlp9q7mv4z0jsb27l5bj8",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

View File

@@ -0,0 +1,7 @@
{
"url": "https://github.com/NixOS/nixpkgs.git",
"rev": "0ead6f8cfd461c3a366c8bc9893037afd89f798d",
"date": "2020-10-27T18:30:26+01:00",
"sha256": "170kziw7bxfm4mwi8q5c2vdpayml0mini4zyxagbvbivivdj5hla",
"fetchSubmodules": false
}

10
.versions/nixpkgs.json Normal file
View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/NixOS/nixpkgs.git",
"rev": "2118cf551b9944cfdb929b8ea03556f097dd0381",
"date": "2021-02-13T10:35:51+01:00",
"path": "/nix/store/mk9v88y4dn54i22h5n6g7kmqyc998rf9-nixpkgs",
"sha256": "0ajsxh1clbf3q643gi8v6b0i0nn358hak0f265j7c1lrsbxyw457",
"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": "0afb48d07db8840076a96e62fff954d068c0e3b6",
"date": "2021-02-13T20:32:12+01:00",
"path": "/nix/store/0gif6j27nxdjyhgd0pqq31a3ni3pmixp-retiolum",
"sha256": "1s68jk6wi4l6sqv0p83w2gg6p9z8v9i02kmnyjbj3gzhmf0c06na",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}

10
.versions/stockholm.json Normal file
View File

@@ -0,0 +1,10 @@
{
"url": "https://github.com/kmein/stockholm",
"rev": "f0325bef7954cb946674050847c6d52112cb658f",
"date": "2020-11-11T07:45:58+01:00",
"path": "/nix/store/lka6fhjfbwdx9bc7lk1bz4gizdv7nrbm-stockholm",
"sha256": "0gbw6n5yq36ysc30afa5d2dbsl2d46f73ms6f0rprdbr4nhdw8l2",
"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

46
configs/alacritty.nix Normal file
View File

@@ -0,0 +1,46 @@
{ pkgs, lib, config, ... }:
let
inherit (import <niveum/lib>) colours;
colourNames =
[ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
colourPairs = lib.getAttrs colourNames colours;
alacrittyConfig = {
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 = "Add";
mods = "Control";
action = "IncreaseFontSize";
}
{
key = "Minus";
mods = "Control";
action = "DecreaseFontSize";
}
{
key = "Key0";
mods = "Control";
action = "ResetFontSize";
}
];
};
in {
environment.variables.TERMINAL = "alacritty";
environment.systemPackages = [
pkgs.alacritty
];
home-manager.users.me.xdg.configFile = {
"alacritty/alacritty.yml".text = builtins.toJSON alacrittyConfig;
};
}

View File

@@ -1,6 +1,7 @@
{
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 = ''
set -o vi
'';

View File

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

44
configs/calcurse.nix Normal file
View File

@@ -0,0 +1,44 @@
{ pkgs, lib, ... }:
{
environment.systemPackages = [ pkgs.calcurse ];
systemd.services.caldav-sync = {
enable = true;
wants = [ "network-online.target" ];
startAt = "*:0/15";
serviceConfig.User = "kfm";
script = "${pkgs.calcurse}/bin/calcurse-caldav";
};
home-manager.users.me = {
home.file = {
".calcurse/conf".text = ''
appearance.calendarview=monthly
appearance.layout=1
daemon.enable=no
daemon.log=no
format.inputdate=4
format.outputdate=%F
general.confirmquit=no
general.confirmdelete=yes
general.firstdayofweek=monday
appearance.theme=default on default
'';
".calcurse/caldav/config".text = lib.generators.toINI {} {
General = {
Binary = "${pkgs.calcurse}/bin/calcurse";
Hostname = "posteo.de:8443";
Path = "/calendars/kieran.meinhardt/default/";
InsecureSSL = "No";
DryRun = "No";
Verbose = "Yes";
};
Auth = {
Username = "kieran.meinhardt@posteo.net";
Password = lib.strings.fileContents <secrets/mail/posteo>;
};
};
};
};
}

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 = {
enable = true;
extensions = [
"hdokiejnpimakedhajhdlcegeplioahd" # LastPass
"ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
"fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
# "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
# "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
"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,22 @@
{ config, lib, pkgs, ... }:
{
{ config, lib, pkgs, ... }: {
imports = [
<modules/seafile.nix>
<modules/google-drive.nix>
<modules/dropbox.nix>
<stockholm/krebs/3modules/syncthing.nix>
<niveum/modules/seafile.nix>
<niveum/modules/dropbox.nix>
];
niveum.dropbox = {
enable = true;
user = config.users.users.me;
niveum = {
dropbox.enable = true;
seafile.enable = true;
};
niveum.seafile = {
enable = true;
user = config.users.users.me;
};
system.activationScripts.home-symlinks = ''
ln -sfn ${config.users.users.me.home}/cloud/syncthing/common/mahlzeit ${config.users.users.me.home}/mahlzeit
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
'';
niveum.google-drive = rec {
enable = true;
directory = "${user.home}/cloud/gdrive";
user = config.users.users.me;
home-manager.users.me = {
services.nextcloud-client.enable = false;
};
services.syncthing = rec {
@@ -29,20 +25,22 @@
openDefaultPorts = true;
configDir = "/home/kfm/.config/syncthing";
dataDir = "/home/kfm/.config/syncthing";
};
krebs.syncthing = rec {
enable = true;
key = toString <secrets/syncthing/key.pem>;
cert = toString <secrets/syncthing/cert.pem>;
peers = {
homeros.id = "HSOL72W-MMN346W-C3WCWCH-OTRKJYG-MY2WWV6-P7JUHN7-5WYYYRV-ZMH4KAA";
scardanelli.id = "7CZYHEX-3CSFDQU-PEEMYHG-6XGQ2ZD-KGVUWH5-GFRB2XK-FP57ERX-7APZUQU";
rilke.id = "NYNNHXP-7JMSTXG-SVNOPWD-RWXCCCL-CBOVBEI-X4QPLF4-NJA5G2P-RSGYRQQ";
wilde.id = "R6DEBD7-G5RYDKN-VFA3HPO-WX4DNVI-373F7OQ-AW5MZTT-3L4BDVW-Y6ROEAF";
declarative = rec {
cert = toString <system-secrets/syncthing/cert.pem>;
key = toString <system-secrets/syncthing/key.pem>;
inherit ((import <niveum/lib>).syncthing) devices;
folders =
let cloud-dir = "${config.users.users.me.home}/cloud";
in {
"${cloud-dir}/syncthing/common".devices = [ "wilde" "manakish" ];
"${cloud-dir}/syncthing/library".devices = [ "wilde" "manakish" "heym" ];
"${cloud-dir}/syncthing/mundoiu".devices = [ "wilde" "manakish" "heym" ];
"${cloud-dir}/syncthing/music".devices = [ "wilde" "manakish" "heym" ];
"${cloud-dir}/moodle" = {
devices = [ "wilde" "toum" "manakish" ];
id = "moodle-dl";
};
};
};
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 = {
enable = true;
shadow = true;
menuOpacity = "0.9";
shadowOpacity = "0.3";
menuOpacity = 0.9;
shadowOpacity = 0.3;
};
}

View File

@@ -1,129 +1,46 @@
{ pkgs, lib, config, ... }:
{
{ pkgs, lib, config, options, ... }:
let
inherit (lib.strings) makeBinPath;
inherit (import <niveum/lib>) localAddresses kieran;
in {
imports = [
<modules/constants.nix>
{
services.dbus.packages = [ pkgs.gnome3.dconf ];
}
<home-manager/nixos>
# <configs/mopidy.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/modules/system-dependent.nix>
{
niveum.user = {
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; };
};
boot.supportedFilesystems = [ "ntfs" ];
}
{
nixpkgs.config = {
allowUnfree = true;
packageOverrides = pkgs: {
python3Packages = pkgs.python3Packages.override {
overrides = new: old: {
spotify-cli-linux = new.callPackage <packages/spotify-cli-linux.nix> {};
instaloader = new.callPackage <packages/instaloader.nix> {};
sncli = new.callPackage <packages/sncli.nix> {};
};
};
haskellPackages = pkgs.haskellPackages.override {
overrides = new: old: {
blessings = new.callPackage <packages/blessings.nix> {};
scanner = new.callPackage <stockholm/krebs/5pkgs/haskell/scanner.nix> {};
};
};
git-quick-stats = pkgs.callPackage <packages/git-quick-stats.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";
nix.nixPath = [
"/var/src"
"nixpkgs-overlays=${toString ../overlays}"
];
}
{ services.dbus.packages = [ pkgs.gnome3.dconf ]; }
{
nixpkgs = {
config = {
allowUnfree = true;
packageOverrides = pkgs: {
nur = import (builtins.fetchTarball
"https://github.com/nix-community/NUR/archive/222ea29ec4afb09c5565a7e5dda14bfd65a4a9f6.tar.gz") {
inherit pkgs;
};
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 {};
writeDashBin = pkgs.writers.writeDashBin;
writeDash = pkgs.writers.writeDash;
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {};
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> { };
ix = pkgs.callPackage <niveum/packages/ix.nix> { };
};
};
overlays = [
(self: super: {
scripts = import <niveum/packages/scripts> { pkgs = super; lib = super.lib; };
})
(import <niveum/overlays/toml.nix>)
(import <stockholm/krebs/5pkgs/haskell>)
(import <stockholm/submodules/nix-writers/pkgs>)
(import <stockholm/krebs/5pkgs/override>)
];
};
}
{
@@ -131,28 +48,29 @@
boot.loader.timeout = 1;
boot.extraModulePackages = [ config.boot.kernelPackages.exfat-nofuse ];
}
{
time.timeZone = "Europe/Berlin";
}
{
home-manager.users.me = {
programs.zathura = {
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.defaultUserShell = pkgs.zsh;
users.users.me = {
name = "kfm";
description = config.niveum.user.name;
home = "/home/kfm";
createHome = true;
group = "users";
hashedPassword = "$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
shell = pkgs.zsh;
description = kieran.name;
hashedPassword =
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
isNormalUser = true;
uid = 1000;
};
}
{
@@ -165,94 +83,73 @@
users.users.me.extraGroups = [ "audio" ];
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer ];
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer pkgs.pulsemixer ];
}
{
environment.systemPackages = [
(pkgs.writers.writeDashBin "niveum-deploy" ''
NIVEUM_DIR=/home/kfm/prog/git/niveum
[ $# -eq 1 ] || echo >&2 "Usage: niveum-deploy SYSTEM"
eval $(nix-build --no-out-link "$NIVEUM_DIR/deploy.nix" -A "$1")
'')
(pkgs.writers.writeDashBin "niveum-update" ''
NIVEUM_DIR=/home/kfm/prog/git/niveum
nix-prefetch-git --url https://github.com/NixOS/nixpkgs-channels --rev refs/heads/nixos-${config.system.stateVersion} > "$NIVEUM_DIR/nixpkgs.json"
'')
];
}
{
environment.interactiveShellInit = "export PATH=$PATH:$HOME/.cargo/bin";
environment.shellAliases = {
clipboard = "${pkgs.xclip}/bin/xclip -se c";
o = "${pkgs.xdg_utils}/bin/xdg-open";
tmux = "${pkgs.tmux}/bin/tmux -2";
environment.interactiveShellInit =
"export PATH=$PATH:$HOME/projects/niveum";
environment.shellAliases = let
wcd = pkgs.writers.writeDash "wcd" ''
cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.."
'';
where = pkgs.writers.writeDash "where" ''
readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname
'';
take = pkgs.writers.writeDash "take" ''
mkdir "$1" && cd "$1"
'';
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
in {
"ß" = "${pkgs.utillinux}/bin/setsid";
cat = "${pkgs.bat}/bin/bat --style=plain";
chromium-incognito =
"chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
cp = "cp --interactive";
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";
nixi = ''nix repl "<nixpkgs>"'';
rm = "rm -i";
cp = "cp -i";
mv = "mv -i";
l = "${pkgs.exa}/bin/exa -a";
ls = "${pkgs.exa}/bin/exa";
ll = "${pkgs.exa}/bin/exa -l";
la = "${pkgs.exa}/bin/exa -la";
dig = "dig +short";
o = "${pkgs.xdg_utils}/bin/xdg-open";
pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in";
pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out";
rm = "rm --interactive";
s = "${pkgs.systemd}/bin/systemctl";
take = "source ${take}";
tmux = "${pkgs.tmux}/bin/tmux -2";
sxiv = swallow "${pkgs.sxiv}/bin/sxiv";
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
};
}
{
networking.wireless = {
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;
}
{ i18n.defaultLocale = "en_GB.UTF-8"; }
{ services.illum.enable = true; }
{
services.xserver = {
enable = true;
displayManager.lightdm = {
enable = true;
autoLogin.enable = true;
autoLogin.user = config.users.users.me.name;
greeters.gtk = {
displayManager = {
autoLogin = {
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 +158,84 @@
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 = {
enable = true;
package = pkgs.openjdk;
services.atd.enable = true;
}
{
services.mingetty = {
greetingLine = lib.mkForce "";
helpLine = lib.mkForce "";
};
}
{
networking.hosts = lib.mapAttrs' (name: address: {
name = address;
value = [ "${name}.local" ];
}) localAddresses;
}
./alacritty.nix
./bash.nix
./bluetooth.nix
./ccc.nix
./kleiter.nix
./calcurse.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
./keybase.nix
./keyboard.nix
./mail/client.nix
./mpv.nix
./mime.nix
./nano.nix
./neovim.nix
./nix.nix
./newsboat.nix
./flameshot-once.nix
./packages
./power-action.nix
./printing.nix
./wallpaper.nix
./redshift.nix
./retiolum.nix
./rofi.nix
./spacetime.nix
./ssh.nix
./sshd.nix
./sudo.nix
./sxiv.nix
./theming.nix
./tmux.nix
./tor.nix
./todo-txt.nix
./traadfri.nix
./unclutter.nix
./version.nix
./vscode.nix
./watson.nix
./wifi.nix
./zsh.nix
];
}

39
configs/direnv.nix Normal file
View File

@@ -0,0 +1,39 @@
{ 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 = with pkgs; [];
shellHook = "export HISTFILE=''${toString ./.history}";
}
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 = [
(import <stockholm/makefu/3modules/bump-distrowatch.nix> {
inherit lib config;
pkgs = pkgs // {
writeDash = pkgs.writers.writeDash;
};
pkgs = pkgs // { writeDash = pkgs.writers.writeDash; };
})
];
makefu.distrobump.enable = true;
makefu.distrobump.enable = false;
}

View File

@@ -1,5 +1,4 @@
{ pkgs, ... }:
{
{ pkgs, ... }: {
virtualisation.docker.enable = true;
users.users.me.extraGroups = [ "docker" ];
environment.systemPackages = [ pkgs.docker pkgs.docker_compose ];

View File

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

View File

@@ -0,0 +1,25 @@
{ lib, pkgs, ... }:
let
inherit (import <niveum/lib>) defaultApplications;
flameshot-once =
pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
in {
nixpkgs.overlays = [
(self: super: {
xwaitforwindow =
super.callPackage <stockholm/krebs/5pkgs/simple/xwaitforwindow.nix> { };
})
];
environment.systemPackages = [
(flameshot-once.override {
config.imgur = {
enable = true;
createUrl = "http://p.r/image";
deleteUrl = "http://p.r/image/delete/%1";
xdg-open.browser = (defaultApplications pkgs).browser;
};
config.timeout = 200;
})
];
}

72
configs/flix.nix Normal file
View File

@@ -0,0 +1,72 @@
{ config, pkgs, ... }:
let
flixLocation = "/media/flix";
cacheLocation = "/var/cache/flix";
indexFilename = "index";
flixUser = "flix";
flixGroup = "users";
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 = [
"d '${cacheLocation}' 0750 ${flixUser} ${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.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.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,35 @@
{ pkgs, ... }:
{
niveum.fonts = {
ui = {
name = "Sans";
size = 9;
};
terminal = {
name = "Monospace";
size = 9;
};
};
{ pkgs, ... }: {
fonts = {
enableDefaultFonts = true;
enableFontDir = true;
fonts = with pkgs; [ corefonts eb-garamond fira libertine lmodern noto-fonts roboto ubuntu_font_family ];
fonts = with pkgs; [
corefonts
eb-garamond
fira
font-awesome-ttf
ibm-plex
inconsolata
iosevka
libertine
lmodern
noto-fonts
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" ];
serif = [ "Source Serif Pro" ];
sansSerif = [ "Source Sans Pro" ];
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 = [
pkgs.mr
pkgs.git
pkgs.gitAndTools.gitflow
pkgs.gitAndTools.hub
pkgs.gitAndTools.gh
pkgs.gitAndTools.git-extras
pkgs.gitAndTools.git-trim
pkgs.gitstats
pkgs.patch
pkgs.patchutils
pkgs.git-quick-stats
pkgs.git-preview
];
environment.shellAliases = {
gf = "git-flow";
g = "git";
};
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 = {
enable = true;
package = pkgs.gitAndTools.gitFull;
userName = config.niveum.user.name;
userEmail = config.niveum.user.email;
userName = kieran.name;
userEmail = kieran.email;
aliases = {
br = "branch";
co = "checkout";
@@ -31,9 +70,34 @@
diffs = "diff --staged";
last = "log -1 HEAD";
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";
}
];
}
];
};
};
}

25
configs/hedgedoc.nix Normal file
View File

@@ -0,0 +1,25 @@
{
services.nginx.virtualHosts."pad.xn--kiern-0qa.de" = {
enableACME = true;
addSSL = true;
locations."/".extraConfig = ''
client_max_body_size 4G;
proxy_set_header Host $host;
proxy_pass http://localhost:3091;
'';
};
services.hedgedoc = {
enable = true;
configuration = {
allowAnonymous = false;
allowGravatar = false;
db = {
dialect = "sqlite";
storage = "/var/lib/codimd/db.codimd.sqlite";
useCDN = false;
};
port = 3091;
};
};
}

View File

@@ -1,15 +1,14 @@
{ config, pkgs, ... }:
{
imports = [ <modules/hledger.nix> ];
{ config, pkgs, ... }: {
imports = [ <niveum/modules/hledger.nix> ];
niveum.hledger = {
enable = true;
ledgerFile = "$HOME/prog/git/ledger/current.journal";
ledgerFile = "$HOME/projects/ledger/all.journal";
server = {
enable = false;
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

@@ -9,24 +9,36 @@
detailedCpuTime = false;
headerMargin = true;
hideKernelThreads = true;
hideThreads = false;
hideUserlandThreads = false;
hideThreads = true;
hideUserlandThreads = true;
highlightBaseName = true;
highlightMegabytes = true;
highlightThreads = true;
shadowOtherUsers = true;
showProgramPath = false;
showThreadNames = true;
showThreadNames = false;
sortDescending = true;
sortKey = "PERCENT_CPU";
treeView = true;
updateProcessNames = false;
meters = {
left = [
{ kind = "LeftCPUs2"; mode = 1; }
{ kind = "RightCPUs2"; mode = 1; }
{ kind = "Memory"; mode = 1; }
{ kind = "Swap"; mode = 1; }
{
kind = "LeftCPUs2";
mode = 1;
}
{
kind = "RightCPUs2";
mode = 1;
}
{
kind = "Memory";
mode = 1;
}
{
kind = "Swap";
mode = 1;
}
];
right = [ "Uptime" "Tasks" "LoadAverage" "Battery" ];
};

View File

@@ -1,8 +1,10 @@
{ pkgs, lib, ... }:
{ config, pkgs, lib, ... }:
let
inherit (lib.strings) fileContents;
inherit (import <niveum/lib>) sshPort;
eduroam = {
identity = lib.strings.removeSuffix "\n" (builtins.readFile <shared-secrets/eduroam/identity>);
password = lib.strings.removeSuffix "\n" (builtins.readFile <shared-secrets/eduroam/password>);
identity = fileContents <secrets/eduroam/identity>;
password = fileContents <secrets/eduroam/password>;
};
eduroamAuth = ''
key_mgmt=WPA-EAP
@@ -12,32 +14,79 @@ let
anonymous_identity="anonymous@wlan.hu-berlin.de"
altsubject_match="DNS:srv1-radius.cms.hu-berlin.de;DNS:srv2-radius.cms.hu-berlin.de"
password="${eduroam.password}"
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";
}}"
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";
}
}"
phase2="auth=PAP"
'';
hu-berlin-cifs-options = [
"uid=${toString config.users.users.me.uid}"
"gid=${toString config.users.groups.users.gid}"
"sec=ntlmv2"
"workgroup=german"
"username=meinhaki"
"password=${lib.strings.fileContents <secrets/mail/meinhaki>}"
"noauto"
"x-systemd.requires=hu-vpn.service"
"x-systemd.automount"
"x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min"
];
in {
networking.wireless.networks = {
eduroam_5GHz.auth = eduroamAuth;
eduroam.auth = eduroamAuth;
};
services.openvpn.servers = {
hu-berlin = {
config = ''
config ${pkgs.fetchurl {
url = https://www.cms.hu-berlin.de/de/dl/netze/vpn/openvpn/hu-berlin.ovpn;
sha256 = "15b55aibik5460svjq2gwxrcyh6ay4k8savd6cd5lncgndmd8p8h";
}}
# route-nopull
# route 141.20.0.0 255.255.0.0
'';
authUserPass = {
username = eduroam.identity;
password = eduroam.password;
};
fileSystems."/media/hu-berlin/germpro2" = {
device = "//hugerm31c.user.hu-berlin.de/germpro2/ling";
fsType = "cifs";
options = hu-berlin-cifs-options;
};
fileSystems."/media/hu-berlin/germhome" = {
device = "//hugerm31c.user.hu-berlin.de/germhome/ling/meinhaki";
fsType = "cifs";
options = hu-berlin-cifs-options;
};
environment.systemPackages = [
(pkgs.writers.writeDashBin "hu-ip" ''
${pkgs.w3m}/bin/w3m -dump meineip.hu-berlin.de | head --lines=-4 | tail --lines=+3
'')
];
systemd.services.hu-vpn = {
enable = true;
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,180 @@
{ config, pkgs, lib, ... }:
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
'';
};
};
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))
'';
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))
'';
in with config.niveum; {
# https://github.com/LukeSmithxyz/voidrice/blob/9fe6802122f6e0392c7fe20eefd30437771d7f8e/.local/bin/dmenuunicode
emoji-menu = let
emoji-file = pkgs.fetchurl {
url =
"https://raw.githubusercontent.com/LukeSmithxyz/voidrice/master/.local/share/larbs/emoji";
sha256 = "03fv69ah8msh2j6i3lm4sdkckqq8jwn1kj43j98dh0xjpzazsy46";
};
kaomoji-file = pkgs.writeText "kaomoji.txt" ''
¯\(°_o)/¯ dunno lol shrug dlol
¯\_()_/¯ dunno lol shrug dlol
( ͡° ͜ʖ ͡°) lenny
¯\_( ͡° ͜ʖ ͡°)_/¯ lenny shrug dlol
( д) aaah sad noo
(^o^)丿 hi yay hello
(^o^: ups hehe
(^^) yay
(´) angry argh
(^_^) byebye!! bye
<(^.^<) <(^.^)> (>^.^)> (7^.^)7 (>^.^<) dance
(-.-)Zzz... sleep
() oh noes woot
(°°  table flip
() why woot
(___) gloom I see you
    sad
(\/) (°,,,,°) (\/) krebs
'';
in with pkgs;
writers.writeDashBin "emoji-menu" ''
PATH=${lib.makeBinPath [ coreutils dmenu gnused libnotify xclip xdotool ]}
chosen=$(cat ${emoji-file} ${kaomoji-file} | cut -d ';' -f1 | dmenu -i -l 10 | sed "s/ .*//")
[ "$chosen" != "" ] || exit
echo "$chosen" | tr -d '\n' | xclip -selection clipboard
if [ -n "$1" ]; then
xdotool key Shift+Insert
else
notify-send --app-name="emoji-menu" "'$chosen' copied to clipboard." &
fi
'';
in {
services.xserver = {
windowManager.default = "i3";
windowManager.i3.enable = true;
displayManager.defaultSession = "none+i3";
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 = {
enable = true;
config = rec {
fonts = [ "${config.niveum.fonts.ui.name} ${toString config.niveum.fonts.ui.size}" ];
fonts = [ "Monospace 10" ];
modifier = "Mod4";
window = {
titlebar = false;
border = 1;
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 = {
titlebar = false;
border = 1;
};
colors =
let scheme = { background = colours.background; text = colours.foreground; };
in rec {
focused = scheme // {
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;
};
colors = let
scheme = {
background = colours.background;
text = colours.foreground;
};
in rec {
focused = scheme // {
border = colours.foreground;
indicator = colours.foreground;
childBorder = colours.foreground;
};
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 = [{
workspaceButtons = false;
fonts = [ "${config.niveum.fonts.terminal.name} ${toString config.niveum.fonts.terminal.size}" ];
mode = "hide";
fonts = [ "Monospace 8" ];
mode = "hide"; # "dock"
position = "bottom";
colors = rec {
background = colours.background;
separator = background;
@@ -61,108 +185,120 @@ in with config.niveum; {
text = colours.foreground;
};
};
statusCommand = "${pkgs.i3status}/bin/i3status -c ${pkgs.writeText "i3status.conf" ''
general {
colors = true
color_good = "${colours.green.dark}"
color_bad = "${colours.red.dark}"
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"
}''}";
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${
pkgs.writeTOML (import <niveum/lib/i3status-rust.nix> {
inherit (config.niveum) batteryName wirelessInterface;
inherit colours;
inherit pkgs;
})
}";
}];
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 = {
"${modifier}+Down" = "focus down";
"${modifier}+Left" = "focus left";
"${modifier}+Return" = "exec ${applications.terminal}";
"${modifier}+Right" = "focus right";
"${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}+Shift+h" = "move left 25 px";
"${modifier}+Shift+j" = "move down 25 px";
"${modifier}+Shift+k" = "move up 25 px";
"${modifier}+Shift+l" = "move right 25 px";
"${modifier}+h" = "focus left";
"${modifier}+j" = "focus down";
"${modifier}+k" = "focus up";
"${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}+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}+Shift+s" = "sticky toggle";
"${modifier}+Shift+z" = "floating toggle";
"${modifier}+c" = "split h";
"${modifier}+e" = "layout toggle split";
"${modifier}+f" = "fullscreen toggle";
"${modifier}+r" = "mode resize";
"${modifier}+s" = "layout stacking";
"${modifier}+t" = "exec ${applications.fileManager}";
"${modifier}+v" = "split v";
"${modifier}+w" = "layout tabbed";
"${modifier}+x" = "exec --no-startup-id ${new-workspace}";
"${modifier}+y" = "exec ${applications.browser}";
"XF86AudioLowerVolume" = "exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -d 5";
# "${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}+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 ${emoji-menu}/bin/emoji-menu";
"${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-once";
"XF86AudioLowerVolume" =
"exec --no-startup-id ${pkgs.pamixer}/bin/pamixer -d 5";
"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";
"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 = {
allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
allowedUDPPortRanges = [ { from = 1714; to = 1764; } ];
allowedTCPPortRanges = [{
from = 1714;
to = 1764;
}];
allowedUDPPortRanges = [{
from = 1714;
to = 1764;
}];
};
home-manager.users.me = {

View File

@@ -1,5 +1,4 @@
{ config, ... }:
{
{ config, ... }: {
services.keybase.enable = true;
services.kbfs = {

View File

@@ -1,11 +1,17 @@
with import <lib>;
{
{ pkgs, lib, ... }:
let commaSep = builtins.concatStringsSep ",";
in {
services.xserver = {
layout = commaSep [ "de" "gr" "ru" ];
xkbVariant = commaSep [ "T3" "polytonic" "phonetic_winkeys" ];
xkbOptions = commaSep [ "compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle" ];
layout = commaSep [ "de" "gr" ];
xkbVariant = commaSep [ "T3" "polytonic" ];
xkbOptions =
commaSep [ "compose:caps" "terminate:ctrl_alt_bksp" "grp:ctrls_toggle" ];
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";
}

13
configs/kleiter.nix Normal file
View File

@@ -0,0 +1,13 @@
{ ... }:
let ssid = "Kleiter Gast";
in {
networking.wireless.networks.${ssid}.psk = "Kleiter-Gast";
# fix dns
systemd.network.networks.kleiter = {
dns = [ "8.8.8.8" "8.8.4.4" ];
networkConfig.DHCP = "yes";
matchConfig.Name = "wlp3s0";
matchConfig.SSID = ssid;
};
}

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;
};
}

145
configs/mail/accounts.nix Normal file
View File

@@ -0,0 +1,145 @@
{ lib, ... }:
let
inherit (import <niveum/lib>) kieran;
enableDefaults = lib.recursiveUpdate {
mbsync = {
enable = true;
create = "both";
expunge = "both";
};
msmtp.enable = true;
notmuch.enable = true;
};
settings = {
fastmail = {
smtp = {
host = "smtp.fastmail.com";
port = 465;
tls.enable = true;
};
imap = {
host = "imap.fastmail.com";
port = 993;
tls.enable = true;
};
};
cock = {
smtp = {
host = "mail.cock.li";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
imap = {
host = "mail.cock.li";
port = 993;
tls.enable = true;
};
};
posteo = {
smtp = {
host = "posteo.de";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
imap = {
host = "posteo.de";
port = 993;
tls.enable = true;
};
};
hu-berlin = {
smtp = {
host = "mailhost.cms.hu-berlin.de";
port = 25;
tls = {
enable = true;
useStartTls = true;
};
};
imap = {
host = "mailbox.cms.hu-berlin.de";
port = 993;
tls.enable = true;
};
};
};
# turns out we have to escape $ because, if the password contains a $, it will get interpolated as a variable by the msmtp `passwordeval` which does: `bash -c "COMMAND; echo"`
pass_ = file: "echo ${lib.escape ["$"] (lib.escapeShellArg (lib.strings.fileContents file))}";
in
{
fysi = enableDefaults {
primary = false;
userName = "kieran@fysi.tech";
address = "kieran@fysi.tech";
realName = kieran.name;
passwordCommand = pass_ <secrets/mail/fastmail>;
inherit (settings.fastmail) imap smtp;
};
cock = enableDefaults {
primary = false;
userName = "2210@cock.li";
address = "2210@cock.li";
realName = "2210";
passwordCommand = pass_ <secrets/mail/cock>;
inherit (settings.cock) imap smtp;
};
kieran-gmail = enableDefaults {
primary = false;
flavor = "gmail.com";
address = "kieran.meinhardt@gmail.com";
realName = kieran.name;
userName = "kieran.meinhardt";
passwordCommand = pass_ <secrets/mail/gmail/kieran.meinhardt>;
folders = {
drafts = "[Gmail]/Entw&APw-rfe";
sent = "[Gmail]/Gesendet";
trash = "[Gmail]/Papierkorb";
};
};
amroplay = enableDefaults {
primary = false;
flavor = "gmail.com";
address = "amroplay@gmail.com";
realName = kieran.name;
userName = "amroplay";
passwordCommand = pass_ <secrets/mail/gmail/amroplay>;
folders = {
drafts = "[Gmail]/Drafts";
sent = "[Gmail]/Sent Mail";
trash = "[Gmail]/Bin";
};
};
posteo = enableDefaults {
primary = true;
address = "kieran.meinhardt@posteo.net";
realName = kieran.name;
userName = "kieran.meinhardt@posteo.net";
passwordCommand = pass_ <secrets/mail/posteo>;
inherit (settings.posteo) imap smtp;
};
hu-berlin = enableDefaults {
primary = false;
address = "meinhark@hu-berlin.de";
realName = kieran.name;
userName = "meinhark";
passwordCommand = pass_ <secrets/eduroam/password>;
inherit (settings.hu-berlin) imap smtp;
};
hu-berlin-work = enableDefaults {
primary = false;
address = "meinhaki@hu-berlin.de";
realName = kieran.name;
userName = "meinhaki";
passwordCommand = pass_ <secrets/mail/meinhaki>;
inherit (settings.hu-berlin) imap smtp;
};
}

56
configs/mail/client.nix Normal file
View File

@@ -0,0 +1,56 @@
{ config, pkgs, lib, ... }:
let
much =
let
nixpkgs-much = import (pkgs.fetchFromGitHub {
owner = "NixOS";
repo = "nixpkgs";
rev = "7c2a362b58a1c2ba72d24aa3869da3b1a91d39e1";
sha256 = "0gl4xndyahasa9dv5mi3x9w8s457wl2xh9lcldizcn1irjvkrzs4";
}) {
overlays = [
(import <stockholm/krebs/5pkgs/haskell>)
];
};
much-pkg = nixpkgs-much.haskellPackages.callCabal2nix "much" <niveum/submodules/much> {};
in nixpkgs-much.haskell.lib.dontHaddock much-pkg;
in {
environment.variables.NOTMUCH_CONFIG = config.home-manager.users.me.home.sessionVariables.NOTMUCH_CONFIG;
environment.systemPackages = [
pkgs.notmuch-addrlookup
pkgs.muchsync
(pkgs.writers.writeDashBin "mua" ''
if [ $# -eq 0 ]; then
${much}/bin/much-kmein
else
${much}/bin/much-kmein -q "$*"
fi
'')
(pkgs.writers.writeDashBin "mail-clean" ''
${pkgs.notmuch}/bin/notmuch search --output files --format=text0 tag:deleted | ${pkgs.findutils}/bin/xargs -r0 rm
${pkgs.notmuch}/bin/notmuch new
'')
];
home-manager.users.me = {
services.muchsync.remotes.zaatar = {
frequency = "*:0/10";
remote.host = "email@zaatar";
remote.importNew = false;
};
programs.notmuch = {
enable = true;
search.excludeTags = [ "deleted" "spam" ];
# extraConfig.muchsync.and_tags = "inbox;unread";
};
programs.msmtp.enable = true;
accounts.email.accounts = import ./accounts.nix { inherit lib; };
};
}

68
configs/mail/fetcher.nix Normal file
View File

@@ -0,0 +1,68 @@
{ config, pkgs, lib, ... }:
let
inherit (import <niveum/lib>) kieran;
tagRules = [
{
query = "to:miaengiadina-pwa@noreply.github.com AND subject:\"PR run failed\"";
tags = [ "-new" "+deleted" ];
}
{
query = lib.concatStringsSep " OR " [
"from:noreply-local-guides@google.com"
"from:google-maps-noreply@google.com"
"subject:fd-noti"
"from:nebenan.de"
"to:miaengiadina-pwa@noreply.github.com"
];
tags = [ "-new" ];
}
{
query = "tag:new";
tags = [ "-new" "+inbox" ];
}
];
generateTaggingScript = filters:
let
template = { tags, query, message ? "tagging ${query} -> ${lib.concatStringsSep " " tags}", ... }: ''
echo '${message}'
${pkgs.notmuch}/bin/notmuch tag ${lib.concatStringsSep " " tags} -- "${query}"
'';
in lib.concatStringsSep "\n" (map template filters);
in
{
users.users.email = {
isNormalUser = true;
description = "fetching mails since 2021";
openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
packages = [ pkgs.muchsync ];
};
environment.variables.NOTMUCH_CONFIG = config.home-manager.users.email.home.sessionVariables.NOTMUCH_CONFIG;
systemd.services.mail-sync = {
enable = true;
wants = [ "network-online.target" ];
startAt = "*:0/15";
serviceConfig.User = config.users.users.email.name;
serviceConfig.Type = "oneshot";
environment.NOTMUCH_CONFIG = config.home-manager.users.email.home.sessionVariables.NOTMUCH_CONFIG;
script = ''
${pkgs.isync}/bin/mbsync --all
${pkgs.notmuch}/bin/notmuch new
'';
};
home-manager.users.email = {
programs.mbsync.enable = true;
accounts.email.accounts = import ./accounts.nix { inherit lib; };
programs.notmuch = {
enable = true;
new.tags = [ "new" ];
hooks.postNew = generateTaggingScript tagRules;
};
};
}

72
configs/matterbridge.nix Normal file
View File

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

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";
};
};
};
}

86
configs/moodle-dl.nix Normal file
View File

@@ -0,0 +1,86 @@
{ config, pkgs, lib, ... }:
let
inherit (import <niveum/lib>) kieran;
moodle-dl = pkgs.callPackage <niveum/packages/moodle-dl> {};
moodle-dl-config = {
telegram = {
token = lib.strings.fileContents <system-secrets/telegram/moodle-dl.token>;
chat_id = "18980945";
send_error_msg = true;
};
token = lib.strings.fileContents <system-secrets/moodle.token>;
moodle_domain = "moodle.hu-berlin.de";
moodle_path = "/";
download_course_ids = [
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
];
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;
};
moodle-dl-json = pkgs.writeText "moodle-dl.json" (builtins.toJSON moodle-dl-config);
moodle-dl-directory = "/var/lib/moodle";
in
{
users.extraUsers.moodle = {
isNormalUser = false;
home = moodle-dl-directory;
createHome = true;
openssh.authorizedKeys.keys = [
# for sshfs mount
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDtIFmbspaBHaSkLEx43V0uaVd7l9NUFiwt2VOP++KzLjvRMLkyF2hg2HjmogTjUvTyoDs7RHwEH/cHZlJ5JQkM1jRqQpnYwGfkZEwYvmXAl6LY9+vQMP36gNPfXmKX3y3LelO7oD2uhUs0guTtg0tHUyN5/UY5u+VinyD6djxDkHaCUn3S7CS/odBcs/4flXT654wsvzgYicnSKH9R4W+7C0YsckZ/NoIkA4jnuwtWZYWrUkxd4/290buX6pAc5+zVVZqyy0sI4i8s6pO9RL5W7xvYt+w+U0u0dMxm5ckiRmLVKfIbMN4YtDxsZbZDajlQ1nDbOsEsrSXWz4H4cSNot7J820x1qh5SSxL4GSQlcT+6xCFk9kKyflxoS3oLoPLttx3rmOMkZKJWxF/IKLW47orxV6wkG5mHxdeR3cf6jX4j3nkwFVyC9R+WG4w2Z4vKONVE7uWGYU3y4OpR1e6MGHVShkNKqEvC/Kjcc/6v7I7AKRAuPZB0WEw36tA65/8= root@wilde"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFFPHt+FPQ6gq8Ev65YsBZrafdtpWGpCNnlVvy67S1BK root@manakish"
];
useDefaultShell = true;
};
system.activationScripts.moodle-dl-config = "ln -sfn ${toString moodle-dl-json} ${config.users.extraUsers.moodle.home}/config.json";
services.syncthing = {
enable = true;
user = "moodle"; # config.users.extraUsers.moodle.name;
openDefaultPorts = true;
configDir = "${moodle-dl-directory}/.config/syncthing";
dataDir = "${moodle-dl-directory}/.config/syncthing";
declarative = rec {
cert = toString <system-secrets/syncthing/cert.pem>;
key = toString <system-secrets/syncthing/key.pem>;
devices = {
inherit ((import <niveum/lib>).syncthing.devices) wilde manakish toum;
};
folders.${moodle-dl-directory} = {
devices = [ "toum" "wilde" "manakish" ];
id = "moodle-dl";
};
};
};
systemd.services.moodle-dl = {
enable = true;
startAt = "hourly";
serviceConfig = {
Type = "oneshot";
User = config.users.extraUsers.moodle.name;
WorkingDirectory = config.users.extraUsers.moodle.home;
};
wants = [ "network-online.target" ];
script = "${moodle-dl}/bin/moodle-dl";
};
}

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}
'';
};
}

83
configs/mpd-fm.nix Normal file
View File

@@ -0,0 +1,83 @@
{ config, pkgs, lib, ... }:
let
streams = import <niveum/lib/streams.nix> {
di-fm-key = lib.strings.fileContents <secrets/di.fm/key>;
};
multi-room-audio-port = 8000;
in
{
imports = [
<niveum/modules/mpd-fm.nix>
];
services.mpd = {
enable = true;
extraConfig = ''
log_level "default"
auto_update "yes"
audio_output {
type "alsa"
name "zaatar single room audio system"
}
audio_output {
type "httpd"
name "zaatar multi room audio system"
encoder "vorbis" # optional
port "${toString multi-room-audio-port}"
quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
format "44100:16:2"
always_on "yes" # prevent MPD from disconnecting all listeners when playback is stopped.
tags "yes" # httpd supports sending tags to listening streams.
}
'';
};
environment.systemPackages = [ pkgs.mpc_cli ];
services.mpd-fm = {
enable = true;
# stationsFile = "/etc/mpd-fm/stations.json";
stations = lib.lists.imap0 (id: {desc ? "", logo ? "https://picsum.photos/seed/${builtins.hashString "md5" stream}/300", stream, station}: { inherit id desc logo stream station; }) streams;
webPort = 8080;
};
systemd.services.mpd-fm-stations =
let
stations = lib.lists.imap0 (id: {desc ? "", logo ? "https://picsum.photos/seed/${builtins.hashString "md5" stream}/300", stream, station}: { inherit id desc logo stream station; }) streams;
stationsJson = pkgs.writeText "stations.json" (builtins.toJSON stations);
in {
wantedBy = [ "mpd-fm.service" ];
startAt = "hourly";
script = ''
mkdir -p /etc/mpd-fm
antenne_asb_url=$(
${pkgs.curl}/bin/curl -sS 'https://www.caster.fm/widgets/em_player.php?jsinit=true&uid=529295&t=blue&c=' \
| grep streamUrl \
| sed ${lib.escapeShellArg "s/^.*'\\([^']*\\)'.*/\\1/"}
)
${pkgs.jq}/bin/jq "map(if .station == \"Antenne ASB\" then .stream |= \"$antenne_asb_url\" else . end)" < ${stationsJson} > /etc/mpd-fm/stations.json
'';
};
networking.firewall.allowedTCPPorts = [ 80 ];
services.nginx = {
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
virtualHosts.default = {
basicAuth.dj = lib.strings.fileContents <system-secrets/mpd-web.key>;
locations."= /listen.ogg" = {
proxyPass = "http://127.0.0.1:${toString multi-room-audio-port}";
};
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.mpd-fm.webPort}";
proxyWebsockets = true;
};
};
};
}

View File

@@ -1,17 +1,24 @@
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.mpv pkgs.mpv-poll ];
{ pkgs, ... }: let
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
in {
environment.shellAliases.smpv = swallow "mpv";
home-manager.users.me.xdg.configFile = {
"mpv/input.conf".text = ''
Alt+RIGHT add video-rotate 90
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
'';
home-manager.users.me = {
programs.mpv = {
enable = true;
config = {
ytdl-format = "bestvideo+bestaudio/best";
};
bindings = {
"Alt+RIGHT" = "add video-rotate 90";
"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";
};
};
};
}

View File

@@ -1,109 +1,79 @@
{ pkgs, ... }:
{
{ pkgs, ... }: {
environment.variables.EDITOR = pkgs.lib.mkForce "nvim";
environment.shellAliases.vi = "nvim";
environment.shellAliases.vim = "nvim";
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> { };
todo-txt-vim = pkgs.callPackage <niveum/packages/vimPlugins/todo-txt-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 = [
(pkgs.writers.writeDashBin "vim" ''neovim "$@"'')
(pkgs.neovim.override {
configure = {
customRC = builtins.readFile <dot/vimrc>;
customRC = builtins.readFile <niveum/lib/vim/init.vim>;
packages.nvim = with pkgs.vimPlugins; {
start = with pkgs.vimPlugins; [
start = [
# cheat-sh-vim
# deoplete-nvim
# vim-abolish
ale
deoplete-nvim
fzf-vim
fzfWrapper
goyo
supertab
undotree
tabular
vim-abolish
vimwiki
vim-256noir
vim-colors-paramount
vim-commentary
vim-css-color
vim-eunuch
vim-fetch
vim-fugitive
vim-gitgutter
vim-pandoc vim-pandoc-after vim-pandoc-syntax
vim-pandoc
vim-pandoc-syntax # vim-pandoc-after
vim-repeat
vim-sensible
vim-startify
# vim-startify
vim-surround
(pkgs.vimUtils.buildVimPluginFrom2Nix rec {
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";
};
})
vim-mail
];
opt = [
csv
dhall-vim
elm-vim
emmet-vim
haskell-vim
icalendar-vim
idris-vim
nim-vim
jq-vim
purescript-vim
rust-vim
todo-txt-vim
typescript-vim
vim-fsharp
vim-javascript
vim-ledger
vim-nix
vim-reason-plus
vim-toml
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";
};
})
];
};
};

73
configs/newsboat.nix Normal file
View File

@@ -0,0 +1,73 @@
{ pkgs, config, ... }:
let
ytdl-format = "'bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best'";
newsboat-home =
"${config.users.users.me.home}/cloud/syncthing/common/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 "${pkgs.ts}/bin/ts ${pkgs.youtube-dl}/bin/youtube-dl -f ${ytdl-format} --add-metadata" ; 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 ];
}

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.nextcloud20;
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
# '';
};
}

View File

@@ -1,8 +0,0 @@
{ config, ... }:
{
nixpkgs.config.packageOverrides = pkgs: {
unstable = import <nixos-unstable> {
config = config.nixpkgs.config;
};
};
}

View File

@@ -1,107 +1,157 @@
{ pkgs, ... }:
{
{ pkgs, lib, ... }:
let
hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {};
inherit (import <niveum/lib>) nixpkgs-unstable;
in {
imports = [
./krebs.nix
./programming.nix
./writing.nix
./python.nix
./haskell
{
environment.systemPackages = with pkgs; [
] ++ [ # internet
aria2
firefox
tor-browser-bundle-bin
thunderbird
tdesktop
w3m
wget
httpie
whois
ddgr
python3Packages.instaloader
mtr # my traceroute
] ++ [ # media
ffmpeg
imagemagick
sxiv
] ++ [ # archive
unzip
unrar
p7zip
zip
] ++ [ # monitor
htop
iotop
iftop
lsof
psmisc
] ++ [ # shell
bat
dos2unix
ncdu
du-dust
fd
file
jq # json manipulation
jo # json creation
kmein.nav # json navigation
xsv
xmlstarlet
manpages
posix_man_pages
moreutils
ranger
ripgrep
rlwrap
progress # display progress bars for pipes
up # universal plumber (piping tool)
] ++ [ # hardware
usbutils
pciutils
lshw
] ++ [ # graphical
arandr
libnotify
xclip
xorg.xkill
] ++ [ # programming
nix-prefetch-git
] ++ [ # media
audacity
calibre
inkscape
xpdf
pdfgrep
pdftk
spotify
python3Packages.spotify-cli-linux
youtubeDL
] ++ [ # math
bc
] ++ [ # shell
(pass.withExtensions (ext: [ext.pass-otp]))
fzf
gnupg
kmein.haskellPackages.mnemosyne
kmein.autorenkalender
kmein.bvg
kmein.daybook
kmein.depp
kmein.font-size
kmein.genius
kmein.instaget
kmein.literature-quote
kmein.n
kmein.odyssey
kmein.wttr
kmein.slide
memo
nix-git
par
qrencode
unstable.hugo
unstable.zola
wtf
environment.systemPackages = let
# nightly = pkgs.rustChannelOf {
# date = "2019-12-27";
# channel = "nightly";
# };
in with pkgs; [
htmlTidy
nodePackages.csslint
nodePackages.jsonlint
nodePackages.prettier
nodePackages.typescript
nodePackages.yarn
nodejs
nodePackages.javascript-typescript-langserver
tokei # count lines of code
gnumake
binutils # for strip, ld, ...
# nightly.rust
shellcheck
];
}
];
environment.systemPackages = with pkgs; [
# INTERNET
aria2
# firefox
tdesktop
w3m
wget
httpie
whois
ddgr
ix
nur.repos.kmein.python3Packages.instaloader
dnsutils
# mtr # my traceroute
# FILE MANAGERS
ranger
pcmanfm
# MEDIA
ffmpeg
imagemagick
scrot
# ARCHIVE TOOLS
unzip
unrar
p7zip
zip
# MONITORS
htop
iotop # I/O load monitor
iftop # interface bandwidth monitor
lsof # list open files
psmisc # for killall, pstree
# SHELL
bat # better cat
du-dust # better du
fd # better find
file # determine file type
dos2unix
trash-cli
ncdu # ncurses disk usage
python3Packages.jsonschema # json validation
jq # json toolkit
pup # html toolkit
jo # json creation
xsv # csv toolkit
xmlstarlet # xml toolkit
manpages
posix_man_pages
# moreutils # for parallel, sponge, combine
tree
parallel # for parallel, since moreutils shadows task spooler
ripgrep # better grep
rlwrap
progress # display progress bars for pipes
up # universal plumber (piping tool)
# HARDWARE TOOLS
usbutils # for lsusb
pciutils # for lspci
lshw # for lshw
arandr # xrandr for noobs
libnotify # for notify-send
xclip # clipboard CLI
dragon-drop # drag and drop
xorg.xkill # kill by clicking
audacity
calibre
inkscape
nixpkgs-unstable.zoom-us # video conferencing
pdfgrep # search in pdf
pdftk # pdf toolkit
evince # for viewing pdf annotations
xournalpp # for annotating pdfs
hc # print files as qr codes
youtubeDL
bc # calculator
scripts.infschmv
scripts.default-gateway
scripts.showkeys-toggle
scripts.favicon
scripts.ipa # XSAMPA to IPA converter
scripts.playlist
scripts.devanagari
scripts.betacode # ancient greek betacode to unicode converter
nur.repos.kmein.mahlzeit
# nur.repos.kmein.slide
nur.repos.kmein.vimv
scripts.swallow # window swallowing
scripts.genius
scripts.instaget
scripts.literature-quote
scripts.nav # json navigation
scripts.n
scripts.notetags
scripts.booksplit
scripts.dmenurandr
scripts.interdimensional-cable
scripts.dmenubluetooth
scripts.manual-sort
scripts.much-scripts
scripts.dns-sledgehammer
ts
scripts.vg
scripts.fkill
scripts.wttr
scripts.boetlingk
scripts.trans
scripts.liddel-scott-jones
# kmein.slide
scripts.tolino-screensaver
nix-prefetch-git
scripts.nix-git
nixfmt
par
qrencode
wtf
spotify
spotify-tui
playerctl
];
}

View File

@@ -0,0 +1,45 @@
{ 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 ++ "\""
:set prompt "\o033[1m%s\o033[1;34m λ\o033[0m "
:set -Wall
:set -XOverloadedStrings
'';
# :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\""
# :def pl \x -> return $ ":!${pkgs.haskellPackages.pointfree}/bin/pointfree -v \"" ++ x ++ "\""
".stack/config.yaml".text = let inherit (import <niveum/lib>) kieran;
in builtins.toJSON {
templates.params = {
author-name = kieran.name;
author-email = kieran.email;
copyright = "Copyright: (c) 2020 ${kieran.name}";
github-username = kieran.github;
};
};
};
services.hoogle = {
enable = false;
packages = import ./packages.nix;
port = 8091;
};
environment.systemPackages = with pkgs;
[
cabal2nix
cabal-install
hlint
haskellPackages.ormolu
(haskellPackages.ghcWithHoogle (import ./packages.nix))
] ++ map haskell.lib.justStaticExecutables [
haskellPackages.ghcid
haskellPackages.hasktags
# haskellPackages.hindent
# haskellPackages.pointfree
# haskellPackages.pointful
haskellPackages.hpack
];
}

View File

@@ -1,7 +1,5 @@
haskellPackages:
with haskellPackages; [
blessings
scanner
HTTP
HUnit
MissingH
@@ -59,13 +57,14 @@ with haskellPackages; [
mono-traversable
mtl
network
pandoc
parallel
parsec
persistent
pipes
pointed
pretty
pretty-show
prettyprinter
primitive
process
profunctors
@@ -92,7 +91,6 @@ with haskellPackages; [
unix-time
unordered-containers
vector
vinyl
void
vty
warp

View File

@@ -1,19 +1,24 @@
{ lib, pkgs, ... }:
let krebs-packages = pkgs: {
dic = pkgs.callPackage <stockholm/krebs/5pkgs/simple/dic> {};
yt-next = pkgs.callPackage <stockholm/lass/5pkgs/yt-next> {};
acronym = pkgs.callPackage <stockholm/lass/5pkgs/acronym> {};
urban = pkgs.callPackage <stockholm/lass/5pkgs/urban> {};
mpv-poll = pkgs.callPackage <stockholm/lass/5pkgs/mpv-poll> {};
untilport = pkgs.callPackage <stockholm/krebs/5pkgs/simple/untilport> {};
kpaste = pkgs.callPackage <stockholm/krebs/5pkgs/simple/kpaste> {};
krebspaste = pkgs.callPackage <stockholm/krebs/5pkgs/simple/krebspaste> {};
bepasty-client-cli = pkgs.callPackage <stockholm/krebs/5pkgs/simple/bepasty-client-cli> {};
irc-announce = pkgs.callPackage <stockholm/krebs/5pkgs/simple/irc-announce> {};
git-preview = pkgs.callPackage <stockholm/krebs/5pkgs/simple/git-preview> {};
};
let
krebs-packages = pkgs: {
dic = pkgs.callPackage <stockholm/krebs/5pkgs/simple/dic> { };
yt-next = pkgs.callPackage <stockholm/lass/5pkgs/yt-next> { };
acronym = pkgs.callPackage <stockholm/lass/5pkgs/acronym> { };
urban = pkgs.callPackage <stockholm/lass/5pkgs/urban> { };
mpv-poll = pkgs.callPackage <stockholm/lass/5pkgs/mpv-poll> { };
untilport = pkgs.callPackage <stockholm/krebs/5pkgs/simple/untilport> { };
kpaste = pkgs.callPackage <stockholm/krebs/5pkgs/simple/kpaste> { };
krebspaste = pkgs.callPackage <stockholm/krebs/5pkgs/simple/krebspaste> { };
bepasty-client-cli =
pkgs.callPackage <stockholm/krebs/5pkgs/simple/bepasty-client-cli> { };
irc-announce =
pkgs.callPackage <stockholm/krebs/5pkgs/simple/irc-announce> { };
git-preview =
pkgs.callPackage <stockholm/krebs/5pkgs/simple/git-preview> { };
};
in {
nixpkgs.config.packageOverrides = krebs-packages;
environment.systemPackages = map (name: pkgs.${name}) (lib.attrNames (krebs-packages pkgs));
environment.systemPackages =
map (name: pkgs.${name}) (lib.attrNames (krebs-packages pkgs));
}

View File

@@ -1,28 +0,0 @@
{ pkgs, ... }:
{
imports = [
{
environment.systemPackages = with pkgs; [
htmlTidy
nodePackages_10_x.csslint
nodePackages_10_x.jsonlint
nodePackages_10_x.prettier
nodePackages_10_x.typescript
nodePackages_10_x.yarn
nodejs-10_x
];
}
];
environment.systemPackages = with pkgs; [
tokei # count lines of code
gnumake
gcc
binutils # strip, ld, ...
iolanguage
ruby
rubocop
rustup
shellcheck
];
}

View File

@@ -0,0 +1,23 @@
{ pkgs, ... }: {
environment.systemPackages = [
(pkgs.python3.withPackages (py: [
py.black
py.python-language-server
py.pyls-mypy
py.pyls-black
py.pyls-isort
py.flake8
py.flask
py.pygments
py.docopt
py.schema
py.ansicolors
py.virtualenv
]))
];
home-manager.users.me.xdg.configFile."pycodestyle".text = ''
[pycodestyle]
max-line-length = 110
'';
}

View File

@@ -1,17 +1,77 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
(texlive.combine {
inherit (pkgs.texlive) scheme-full texdoc latex2e-help-texinfo;
pkgFilter = pkg: pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "latex2e-help-texinfo";
{ pkgs, lib, config, ... }:
let
inherit (import <niveum/lib>) nixpkgs-unstable;
zoteroStyle = { name, sha256 }: {
name = "${name}.csl";
path = pkgs.fetchurl {
url = "https://www.zotero.org/styles/${name}";
inherit sha256;
};
};
cslDirectory = pkgs.linkFarm "citation-styles" [
(zoteroStyle {
name = "chicago-author-date-de";
sha256 = "0fz0xn46rkciblr34a7x2v60j0lbq9l3fmzi43iphph27m0czn6s";
})
# haskellPackages.patat
(aspellWithDicts (dict: [dict.de dict.en dict.la dict.en-computers dict.ru]))
(zoteroStyle {
name = "din-1505-2";
sha256 = "1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq";
})
(zoteroStyle {
name = "apa";
sha256 = "1878vxp0y0h05yzaghnd51n981623mxskw3lsdyzmffqhihvv111";
})
];
makeStardictDataDir = dicts:
pkgs.linkFarm "dictionaries" (map ({ name, path }: {
name = "dic/${name}";
inherit path;
}) dicts);
in {
environment.variables.STARDICT_DATA_DIR = toString (makeStardictDataDir [
{
name = "gr-de";
path = pkgs.fetchurl {
url = "http://tovotu.de/data/stardict/pape_gr-de.zip";
sha256 = "1d705y47b40vp0mg79vbwasw4y0i8fmnlwvf4x4ri0dkfqng9sky";
};
}
{
name = "la-de";
path = pkgs.fetchurl {
url = "http://tovotu.de/data/stardict/georges_lat-de.zip";
sha256 = "12n26nzwg28wn4zwv45mv0wkgy1jh1d8p0k6haamz9601cqq7hkj";
};
}
{
name = "de-la";
path = pkgs.fetchurl {
url = "http://tovotu.de/data/stardict/georges_de-lat.zip";
sha256 = "0inm6xn1lcnb851cj329n0v2vbfc1z1bxwhgsd8fnm0zxy3f3ifq";
};
}
]);
home-manager.users.me.home.file = {
".csl".source = cslDirectory;
".local/share/pandoc/csl".source = cslDirectory; # as of pandoc 2.11, it includes citeproc
};
environment.systemPackages = with pkgs; [
texlive.combined.scheme-full
(aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ]))
haskellPackages.pandoc-citeproc
nur.repos.kmein.text2pdf
libreoffice
pandoc
proselint
unstable.asciidoctor
# gnumeric
dia
nixpkgs-unstable.pandoc
# proselint
asciidoctor
wordnet
sdcv # stardict cli
];
}

24
configs/power-action.nix Normal file
View File

@@ -0,0 +1,24 @@
{ pkgs, config, ... }:
let
suspend = pkgs.writers.writeDash "suspend" "${pkgs.systemd}/bin/systemctl suspend";
in
{
imports = [ <stockholm/krebs/3modules/power-action.nix> ];
krebs.power-action = {
enable = true;
plans.suspend = {
upperLimit = 7;
lowerLimit = 0;
charging = false;
action = pkgs.writeDash "suspend-wrapper" ''
/run/wrappers/bin/sudo ${suspend}
'';
};
user = config.users.users.me.name;
};
security.sudo.extraConfig = ''
${config.krebs.power-action.user} ALL= (root) NOPASSWD: ${suspend}
'';
}

View File

@@ -1,9 +1,35 @@
{ pkgs, ... }:
{
let
inherit (import <niveum/lib>) localAddresses;
hp-driver = pkgs.hplipWithPlugin;
in {
services.printing = {
enable = true;
drivers = [ pkgs.hplipWithPlugin ];
drivers = [ hp-driver ];
};
networking.hosts."192.168.178.27" = [ "officejet" ];
hardware.sane = {
enable = true;
extraBackends = [ hp-driver ];
};
users.users.me.extraGroups = [ "scanner" ];
hardware.printers.ensurePrinters = [{
name = "OfficeJet";
location = "Zimmer";
deviceUri = "https://${localAddresses.officejet}";
model = "drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd";
ppdOptions = {
Duplex = "DuplexNoTumble"; # DuplexNoTumble DuplexTumble None
PageSize = "A4"; # A4 A4.FB A4.Duplex
MediaType = "Plain";
OutputMode = "Normal";
ColorModel = "KGray"; # RGB CMYGray KGray
};
}];
}
/* HP/hp-officejet_4650_series.ppd.gz
drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd
*/

View File

@@ -1,28 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = [
(pkgs.python3.withPackages
(py: [
py.black
py.python-language-server
py.pyls-mypy
py.pyls-black
py.pyls-isort
py.flake8
py.flask
py.pygments
py.docopt
py.schema
py.ansicolors
py.virtualenv
py.spacy
py.spacy_models
])
)
];
home-manager.users.me.xdg.configFile."pycodestyle".text = ''
[pycodestyle]
max-line-length = 110
'';
}

295
configs/radio.nix Normal file
View File

@@ -0,0 +1,295 @@
{ lib, pkgs, config, ... }:
let
inherit (import <niveum/lib>) nixpkgs-unstable;
radioStore = "/var/lib/radio";
htgenPort = 8080;
meddl = { streamPort = 8000; mpdPort = 6600; };
lyrikline = { streamPort = 8001; mpdPort = 6601; };
lyrik = { streamPort = 8002; mpdPort = 6602; };
mpd-add-with-tags = pkgs.writers.writeHaskell "mpd-add-with-tags" {
libraries = with pkgs.haskellPackages; [ optparse-generic libmpd ];
} ''
{-# LANGUAGE DeriveGeneric, OverloadedStrings #-}
import Control.Monad (void)
import Data.String
import Network.MPD
import Options.Generic
data Options = Options { url :: String, artist :: Maybe String, title :: Maybe String }
deriving (Generic)
instance ParseRecord Options
main :: IO ()
main = do
options <- getRecord "Add to MPD with tags"
void $ withMPD $ do
songId <- addId (fromString $ url options) Nothing
maybe (pure ()) (addTagId songId Artist . fromString) $ artist options
maybe (pure ()) (addTagId songId Title . fromString) $ title options
'';
mpc-lyrikline = pkgs.writers.writeDashBin "mpc-lyrikline" ''MPD_PORT=${toString lyrikline.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"'';
mpc-meddl = pkgs.writers.writeDashBin "mpc-meddl" ''MPD_PORT=${toString meddl.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"'';
mpc-lyrik = pkgs.writers.writeDashBin "mpc-lyrik" ''MPD_PORT=${toString lyrik.mpdPort} ${pkgs.mpc_cli}/bin/mpc "$@"'';
in
{
imports = [ <stockholm/krebs/3modules/htgen.nix> ];
nixpkgs.overlays = [
(self: super: { htgen = super.callPackage <stockholm/krebs/5pkgs/simple/htgen> {}; })
];
systemd.tmpfiles.rules = [
"d '${radioStore}' 0755 ${config.users.extraUsers.radio.name} - 1d -"
];
users.extraUsers.radio.isSystemUser = true;
containers.lyrik = {
autoStart = true;
config = {config, pkgs, ...}: {
services.mpd = {
enable = true;
network.port = lyrik.mpdPort;
extraConfig = ''
log_level "default"
audio_output {
name "Lyrik-Radio"
type "httpd"
encoder "vorbis"
port "${toString lyrik.streamPort}"
bitrate "128"
format "44100:16:2"
always_on "yes"
tags "yes"
}
'';
};
};
};
krebs.htgen.radio = {
port = htgenPort;
user.name = "radio";
script = ''. ${pkgs.writers.writeDash "meinskript" ''
case "$Method $Request_URI" in
"GET /lyrik/status")
printf 'HTTP/1.1 200 OK\r\n'
printf 'Content-Type: text/html; charset=UTF-8\r\n'
printf 'Connection: close\r\n'
printf '\r\n'
video_id="$(
MPD_PORT=${toString lyrik.mpdPort} ${pkgs.mpc_cli}/bin/mpc status -f %file% \
| head -n1 \
| grep -o 'id=[^&]*' \
| sed 's/^id=//g'
)"
${pkgs.youtube-dl}/bin/youtube-dl -j "https://www.youtube.com/watch?v=$video_id" \
| ${pkgs.jq}/bin/jq -r '"% [\(.title)](\(.webpage_url))\n\n\(.description)"' \
| sed 's/$/ /g' \
| ${nixpkgs-unstable.pandoc}/bin/pandoc -s
exit
;;
"GET /lyrikline/status")
printf 'HTTP/1.1 200 OK\r\n'
printf 'Content-Type: text/html; charset=UTF-8\r\n'
printf 'Connection: close\r\n'
printf '\r\n'
hash="$(
MPD_PORT=${toString lyrikline.mpdPort} ${pkgs.mpc_cli}/bin/mpc status -f '%file%' \
| head -n 1 \
| md5sum \
| cut -d' ' -f 1
)"
url="$(cat ${radioStore}/$hash)"
echo "<html><body style='margin:0'><iframe style='width:100%;height:100%;border:0' src="$url"></iframe></body></html>"
exit
;;
"POST /meddl/skip")
printf 'HTTP/1.1 200 OK\r\n'
printf 'Content-Type: text/html; charset=UTF-8\r\n'
printf 'Connection: close\r\n'
printf '\r\n'
${mpc-meddl}/bin/mpc-meddl next
exit
;;
"GET /meddl/status")
printf 'HTTP/1.1 200 OK\r\n'
printf 'Content-Type: text/html; charset=UTF-8\r\n'
printf 'Connection: close\r\n'
printf '\r\n'
hash="$(
MPD_PORT=${toString meddl.mpdPort} ${pkgs.mpc_cli}/bin/mpc status -f '%file%' \
| head -n 1 \
| md5sum \
| cut -d' ' -f 1
)"
url="$(cat ${radioStore}/$hash)"
echo "<html><body style='margin:0'><iframe style='width:100%;height:100%;border:0' src="$url"></iframe></body></html>"
exit
;;
esac
''}'';
};
containers.meddl = {
autoStart = true;
config = {config, pkgs, ...}: {
services.mpd = {
enable = true;
network.port = meddl.mpdPort;
extraConfig = ''
log_level "default"
volume_normalization "yes"
audio_output {
name "DrachenLord Radio"
type "httpd"
encoder "vorbis"
port "${toString meddl.streamPort}"
bitrate "128"
format "44100:16:2"
always_on "yes"
tags "yes"
}
'';
};
};
};
containers.lyrikline = {
autoStart = true;
config = {config, pkgs, ...}: {
services.mpd = {
enable = true;
network.port = lyrikline.mpdPort;
extraConfig = ''
log_level "default"
audio_output {
name "lyrikline.org Radio"
type "httpd"
encoder "vorbis"
port "${toString lyrikline.streamPort}"
bitrate "128"
format "44100:16:2"
always_on "yes"
tags "yes"
}
'';
};
};
};
systemd.services.lyrikline = {
after = [ "container@lyrikline.service" ];
wantedBy = [ "container@lyrikline.service" ];
startAt = "*:00/5";
serviceConfig.User = config.users.extraUsers.radio.name;
preStart = "${mpc-lyrikline}/bin/mpc-lyrikline crop || :";
script = ''
set -efu
lyrikline=https://www.lyrikline.org
for _ in $(seq 1 10); do
random_route="$(${pkgs.curl}/bin/curl -sSL "$lyrikline/index.php/tools/getrandompoem" --data-raw 'lang=de' --compressed | ${pkgs.jq}/bin/jq -r .link)"
poem_url="$lyrikline$random_route"
poem_file="$(
${pkgs.curl}/bin/curl -sSL "$poem_url" \
| grep -o 'https://.*\.mp3' \
| head -n1
)"
hash="$(echo "$poem_file" | md5sum | cut -d' ' -f 1)"
echo "$poem_file ($hash) -> $poem_url"
echo "$poem_url" > "${radioStore}/$hash"
${mpc-lyrikline}/bin/mpc-lyrikline add "$poem_file"
done
${mpc-lyrikline}/bin/mpc-lyrikline play
'';
};
systemd.services.lyrik = {
after = [ "container@lyrik.service" ];
wantedBy = [ "container@lyrik.service" ];
preStart = "${mpc-lyrik}/bin/mpc-lyrik crop || :";
restartIfChanged = true;
serviceConfig.User = config.users.extraUsers.radio.name;
script =
let
videoIds = import <niveum/lib/hot-rotation/lyrik.nix>;
streams = lib.concatMapStringsSep "\n" (id: "https://au.ytprivate.com/latest_version?id=${id}&itag=251") videoIds;
streamsFile = pkgs.writeText "hotrot" streams;
in ''
set -efu
${mpc-lyrik}/bin/mpc-lyrik add < ${toString streamsFile}
${mpc-lyrik}/bin/mpc-lyrik crossfade 5
${mpc-lyrik}/bin/mpc-lyrik random on
${mpc-lyrik}/bin/mpc-lyrik repeat on
${mpc-lyrik}/bin/mpc-lyrik play
'';
};
systemd.services.meddl = {
after = [ "container@meddl.service" ];
wantedBy = [ "container@meddl.service" ];
startAt = "*:00/10";
serviceConfig.User = config.users.extraUsers.radio.name;
preStart = "${mpc-meddl}/bin/mpc-meddl crop || :";
script = ''
set -efu
host=http://antenne-asb.ga
prepend_host() {
sed "s#^#$host/#"
}
${pkgs.curl}/bin/curl -sSL "$host" \
| ${pkgs.pup}/bin/pup 'li a attr{href}' \
| prepend_host \
| while read -r song; do
song_url="$(${pkgs.curl}/bin/curl -sSL "$song" \
| ${pkgs.pup}/bin/pup 'audio source attr{src}' \
| prepend_host
)"
hash="$(echo "$song_url" | md5sum | cut -d' ' -f 1)"
echo "$song_url ($hash) -> $song"
echo "$song" > "${radioStore}/$hash"
${mpc-meddl}/bin/mpc-meddl add "$song_url"
done
${mpc-meddl}/bin/mpc-meddl play
'';
};
environment.systemPackages = [ mpc-lyrikline mpc-lyrik mpc-meddl ];
services.nginx.virtualHosts."radio.xn--kiern-0qa.de".locations = {
"= /meddl/status".proxyPass = "http://127.0.0.1:${toString htgenPort}";
"= /meddl/listen.ogg".proxyPass = "http://127.0.0.1:${toString meddl.streamPort}";
"= /meddl/skip".proxyPass = "http://127.0.0.1:${toString htgenPort}";
"= /lyrikline/status".proxyPass = "http://127.0.0.1:${toString htgenPort}";
"= /lyrikline/listen.ogg".proxyPass = "http://127.0.0.1:${toString lyrikline.streamPort}";
"= /lyrik/status".proxyPass = "http://127.0.0.1:${toString htgenPort}";
"= /lyrik/listen.ogg".proxyPass = "http://127.0.0.1:${toString lyrik.streamPort}";
"= /lyrik.ogg".return = "301 http://radio.xn--kiern-0qa.de/lyrik/listen.ogg";
"= /meddl.ogg".return = "301 http://radio.xn--kiern-0qa.de/meddl/listen.ogg";
"= /lyrikline.ogg".return = "301 http://radio.xn--kiern-0qa.de/lyrikline/listen.ogg";
};
}

View File

@@ -1,9 +0,0 @@
{
home-manager.users.me = {
services.random-background = {
enable = true;
imageDirectory = toString <art>;
interval = "2h";
};
};
}

View File

@@ -1,7 +1 @@
{
services.redshift = {
enable = true;
latitude = "52";
longitude = "13";
};
}
{ services.redshift.enable = false; }

View File

@@ -1,37 +1,7 @@
{ config, pkgs, ... }:
{
imports = [ <modules/retiolum.nix> ];
{ config, pkgs, ... }: {
imports = [
<niveum/modules/retiolum.nix>
];
fileSystems."/mnt/lassulusflix" = {
device = "prism.r:/export";
fsType = "nfs";
};
networking.hosts = {
"42:0:ca48:f98f:63d7:31ce:922b:245d" = [ "go" ];
};
networking.retiolum = {
scardanelli = {
ipv4 = "10.243.2.2";
ipv6 = "42:0:3c46:4007:5bce:f1bc:606b:2b18";
};
homeros = {
ipv4 = "10.243.2.1";
ipv6 = "42:0:3c46:53e:e63d:e62a:56ea:c705";
};
catullus = {
ipv4 = "10.243.2.3";
ipv6 = "42:0:3c46:3ec0:7aad:d1d5:9842:da4c";
};
wilde = {
ipv4 = "10.243.2.4";
ipv6 = "42:0:3c46:907c:1fb8:b74f:c59b:1ee3";
};
}.${config.networking.hostName};
environment.etc."tinc/retiolum/rsa_key.priv" = {
text = builtins.readFile <secrets/retiolum.key>;
mode = "400";
};
networking.hosts = { "42:0:ca48:f98f:63d7:31ce:922b:245d" = [ "go" ]; };
}

View File

@@ -1,13 +1,14 @@
{ config, ... }:
with config.niveum; {
let
inherit (import <niveum/lib>) colours;
in{
home-manager.users.me.programs.rofi = {
enable = true;
separator = "solid";
scrollbar = false;
terminal = applications.terminal;
borderWidth = 0;
lines = 5;
font = "${fonts.terminal.name} ${toString (fonts.terminal.size + 1)}";
font = "Monospace 10";
colors = rec {
window = rec {
background = colours.foreground;
@@ -19,19 +20,28 @@ with config.niveum; {
background = window.background;
backgroundAlt = window.background;
foreground = colours.background;
highlight = { foreground = colours.cyan.dark; inherit (window) background; };
highlight = {
foreground = colours.cyan.dark;
inherit (window) background;
};
};
active = {
background = window.background;
backgroundAlt = window.background;
foreground = colours.yellow.dark;
highlight = { foreground = colours.green.dark; inherit (window) background; };
highlight = {
foreground = colours.green.dark;
inherit (window) background;
};
};
urgent = {
background = window.background;
backgroundAlt = window.background;
foreground = colours.red.dark;
highlight = { foreground = colours.magenta.dark; inherit (window) background; };
highlight = {
foreground = colours.magenta.dark;
inherit (window) background;
};
};
};
};

View File

@@ -3,6 +3,7 @@
documentation.enable = false;
documentation.info.enable = false;
documentation.man.enable = false;
documentation.man.generateCaches = false;
fonts.fontconfig.enable = false;
nix.gc.automatic = true;
nix.optimise.automatic = true;

View File

@@ -1,13 +0,0 @@
{ pkgs, ... }:
let secrets = import <dot/secrets.nix>;
in {
environment.systemPackages = [ pkgs.python3Packages.sncli ];
home-manager.users.me = {
home.file.".snclirc".text = ''
[sncli]
cfg_sn_username = ${secrets.simplenote.username}
cfg_sn_password = ${secrets.simplenote.password}
'';
};
}

7
configs/spacetime.nix Normal file
View File

@@ -0,0 +1,7 @@
{
time.timeZone = "Europe/Berlin";
location = {
latitude = 52.517;
longitude = 13.3872;
};
}

14
configs/spotifyd.nix Normal file
View File

@@ -0,0 +1,14 @@
{ lib, ... }:
{
services.spotifyd = {
enable = true;
config = lib.generators.toINI { } {
global = {
username = lib.strings.fileContents <secrets/spotify/username>;
password = lib.strings.fileContents <secrets/spotify/password>;
};
};
};
systemd.services.spotifyd.serviceConfig.Restart = "always";
}

View File

@@ -1,52 +1,38 @@
{ pkgs, config, ... }:
{ pkgs, config, lib, ... }:
let
sshPort = 22022;
sshKey = {
homeros = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDn13Y6CznabMvKJPIrr/dj1TX4boe8F98yc3FDElJeprQo2RXlDzjg/po9/lHTHaoC5yQUjlRg/AnI4vizYkn2sqJebAeSPahmpS+l0eFnjZgsqds2cCFqSPB6Qc5YEkGRhN4aq/ABz0jdFJLBYOYGxuuXowYxyNrqrItxDR7tF7upG+kVjYiDoP/qFm8C7zv6Zy8aoehNbzf8HlIJd0ITbMr/vUftNsQ8C84QmbZljReHmchPgE8GUfVLTlCORkhndbvNX3jXo+75y7JOIZZ6193FZHM4seg/VSDWYLJtpnhttD1w6qmiLrlimqbJB9ihoXq2eDmQ+4zo6hxQ6pFH6P0xQClJ0hxVWn6hEM3rkMwoMfbq4v54gKJsYxcGdnwjAX6d9DQv/QVjmVZffKWsGGoC7uz7bdmc0akVKi+GLSPOx8sJwXqvyvFStfqLaweVcuikUqQ72JLK7pZyliA7na6KuQ1PE3LTpfSr0lbBJ73xtS2rU1nF/Oe5zwA4LX5s/QeDVmS86D8acUrSCO62pBB3Yv8go0KR4mEvfxLiUWV6gR2uTeIPXvo4ouYFZqyABAGybjUATlGCXJaeHd/y/VWkpIB8ocqNESlRMCEe4TrYjw91AEmYBL6kWIeop3dyhovm3dTB3fQvC97kbL16wuXBrOcN4lEc+56ShhmvdQ== kieran.meinhardt@gmail.com";
scardanelli = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC19H0FhSNWcfBRPKzbTVSMJikIWZl0CoM8zCm+/3fdMgoaLRpeZWe/AfDK6b4qOjk/sez/J0JUFCGr+JbMwjsduoazsuQowu9L9DLP9Q5UkJje4BD7MHznaeu9/XfVng/MvyaEWArA/VUJeKQesHe76tR511/+n3+bdzlIh8Zw/3wfFxmg1OTNA99/vLkXrQzHDTuV/yj1pxykL4xFtN0OIssW1IKncJeKtkO/OHGT55ypz52Daj6bNKqvxiTuzeEhv5M+5ppyIPcRf1uj/7IaPKttCgZAntEqBTIR9MbyXFeAZVayzaFnLl2okeam5XreeZbj+Y1h2ZjxiIuWoab3MLndSekVfLtfa63gtcWIf8CIvZO2wJoH8v73y0U78JsfWVaTM09ZCfFlHHA/bWqZ6laAjW+mWLO/c77DcYkB3IBzaMVNfc6mfTcGFIC+biWeYpKgA0zC6rByUPbmbIoMueP9zqJwqUaM90Nwd6559inBB107/BK3Ktb3b+37mMCstetIPB9e4EFpGMjhmnL/G81jS53ACWLXJYzt7mKU/fEsiW93MtaB+Le46OEC18y/4G8F7p/nnH7i0kO74ukxbnc4PlpiM7iWT6ra2Cyy+nzEgdXCNXywIxr05TbCQDwX6/NY8k7Hokgdfyz+1Pq3sX0yCcWRPaoB26YF12KYFQ== kieran.meinhardt@gmail.com";
wilde = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyTnGhFq0Q+vghNhrqNrAyY+CsN7nNz8bPfiwIwNpjk kfm@wilde";
};
inherit (import <niveum/lib>) sshPort kieran;
in {
services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add";
programs.ssh.startAgent = true;
services.openssh = {
ports = [ sshPort ];
enable = true;
passwordAuthentication = false;
};
users.motd = "Welcome to ${config.networking.hostName}!";
users.users.root.openssh.authorizedKeys.keys = [
sshKey.homeros
sshKey.scardanelli
sshKey.wilde
];
users.users.me.openssh.authorizedKeys.keys = [
sshKey.homeros
sshKey.scardanelli
sshKey.wilde
];
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
home-manager.users.me.programs.ssh = {
enable = true;
matchBlocks = {
scardanelli = {
hostname = "scardanelli.r";
"github.com" = {
hostname = "ssh.github.com";
port = 443;
};
zaatar = {
hostname = "zaatar.r";
user = "root";
port = sshPort;
};
makanek = {
hostname = "makanek.r";
user = "root";
port = sshPort;
};
manakish = {
hostname = "manakish.r";
user = "kfm";
port = sshPort;
};
homeros = {
hostname = "homeros.r";
user = "kfm";
port = sshPort;
};
catullus = {
hostname = "catullus.r";
user = "kfm";
toum = {
hostname = "toum.r";
user = "root";
port = sshPort;
};
wilde = {
@@ -54,17 +40,6 @@ in {
user = "kfm";
port = sshPort;
};
menstruation-logs = {
user = "root";
hostname = "v22017123717457389.megasrv.de";
port = 49123;
};
irc = {
user = "kmein";
hostname = "prism.r";
extraOptions.RemoteCommand = "tmux a";
};
"gitlab.peixdev.net".port = 999;
};
};
}

16
configs/sshd.nix Normal file
View File

@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
let
inherit (import <niveum/lib>) sshPort kieran;
in
{
users.motd = "Welcome to ${config.networking.hostName}!";
services.openssh = {
enable = true;
ports = [ sshPort ];
passwordAuthentication = false;
forwardX11 = true;
};
users.users.root.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
}

View File

@@ -1,3 +0,0 @@
{
programs.sway.enable = true;
}

64
configs/sxiv.nix Normal file
View File

@@ -0,0 +1,64 @@
{ pkgs, lib, ... }:
let
important-directories = pkgs.writeText "directories" ''
h ~/
d ~/cloud/Dropbox/
g ~/cloud/gdrive/
s ~/cloud/Seafile/
kk ~/cloud/keybase/private/kmein/
kp ~/cloud/keybase/public/kmein/
t /tmp
D ~/Downloads
cf ''${XDG_CONFIG_HOME:-$HOME/.config}
'';
in {
environment.systemPackages = [ pkgs.sxiv ];
# TODO fix
home-manager.users.me.xdg.configFile."sxiv/exec/key-handler".source =
pkgs.writers.writeDash "key-handler" ''
PATH=$PATH:${
lib.makeBinPath [
pkgs.gnused
pkgs.gawk
pkgs.dmenu
pkgs.coreutils
pkgs.libnotify
pkgs.imagemagick
pkgs.xclip
]
}
echo >&2 key "$1" pressed
while read file; do
case "$1" in
"c")
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${important-directories} | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
[ -z "$destdir" ] && exit
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
;;
"m")
[ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${important-directories} | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
[ -z "$destdir" ] && exit
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
;;
"r")
convert -rotate 90 "$file" "$file" ;;
"R")
convert -rotate -90 "$file" "$file" ;;
"f")
convert -flop "$file" "$file" ;;
"y")
echo -n "$file" | xclip -selection clipboard &&
notify-send "$file copied to clipboard" & ;;
"Y")
readlink -f "$file" | xclip -selection clipboard &&
notify-send "$(readlink -f "$file") copied to clipboard" & ;;
"d")
[ "$(printf "No\\nYes" | dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
esac
done
'';
}

View File

@@ -0,0 +1,20 @@
{ pkgs, lib, ... }:
let
autorenkalender-package = pkgs.fetchFromGitHub {
owner = "kmein";
repo = "autorenkalender";
rev = "cf49a7b057301332d980eb47042a626add93db66";
sha256 = "1pa7sjg33vdnjianrqldv445jdzzv3mn231ljk1j58hs0cd505gs";
};
autorenkalender =
pkgs.python3Packages.callPackage autorenkalender-package { };
in {
niveum.telegramBots.autorenkalender = {
enable = true;
time = "07:00";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = [ "@autorenkalender" ];
parseMode = "Markdown";
command = "${autorenkalender}/bin/autorenkalender";
};
}

View File

@@ -0,0 +1,60 @@
{ config, pkgs, lib, ... }:
let
telebots = let
telebots-package = pkgs.fetchFromGitHub {
owner = "kmein";
repo = "telebots";
rev = "b4276155114ee96cd3f320e361e52952ea700db6";
sha256 = "08rp1pcisk4zzhxdlgrlhxa0sbza5qhxa70rjycg4r7fmixkkbz2";
};
in {
reverse =
pkgs.python3Packages.callPackage "${telebots-package}/telegram-reverse"
{ };
odyssey =
pkgs.python3Packages.callPackage "${telebots-package}/telegram-odyssey"
{ };
betacode =
pkgs.python3Packages.callPackage "${telebots-package}/telegram-betacode"
{ };
};
in {
imports = [
./literature-quote.nix
./autorenkalender.nix
./proverb.nix
./nachtischsatan.nix
<niveum/modules/telegram-bot.nix>
];
systemd.services.telegram-odyssey = {
wantedBy = [ "multi-user.target" ];
description = "Telegram bot reciting the Odyssey to you";
environment.TELEGRAM_ODYSSEY_TOKEN =
lib.strings.fileContents <system-secrets/telegram/odyssey.token>;
enable = true;
script = "${telebots.odyssey}/bin/telegram-odyssey";
serviceConfig.Restart = "always";
};
systemd.services.telegram-reverse = {
wantedBy = [ "multi-user.target" ];
description = "Telegram bot for reversing things";
environment.TELEGRAM_REVERSE_TOKEN =
lib.strings.fileContents <system-secrets/telegram/reverse.token>;
enable = true;
script = "${telebots.reverse}/bin/telegram-reverse";
serviceConfig.Restart = "always";
};
systemd.services.telegram-betacode = {
wantedBy = [ "multi-user.target" ];
description =
"Telegram bot for converting Ancient Greek betacode into unicode";
environment.TELEGRAM_BETACODE_TOKEN =
lib.strings.fileContents <system-secrets/telegram/betacode.token>;
enable = true;
script = "${telebots.betacode}/bin/telegram-betacode";
serviceConfig.Restart = "always";
};
}

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