1
0
mirror of https://github.com/kmein/niveum synced 2026-03-28 23:31:07 +01:00

201 Commits

Author SHA1 Message Date
708e2ab1f4 feat: neomutt -> aerc 2023-02-21 12:07:06 +01:00
2e482d3fec feat(urlwatch): tatort 2023-02-19 15:05:16 +01:00
4fae6d1ed0 fix(mpv): support only pulse 2023-02-19 11:52:00 +01:00
9a80eb84d4 chore: update 2023-02-16 14:43:08 +01:00
f7cb9b8957 feat(weechat): join #hsmr-moin 2023-02-16 14:39:03 +01:00
e7c050c1c4 feat(moinbot): move to #hsmr-moin 2023-02-16 14:32:42 +01:00
c6ab8b4eb7 feat(ssh): add one more fysiweb host 2023-02-16 12:10:52 +01:00
7d0a802d30 feat(zaatar): allow ful to backup 2023-02-16 08:52:54 +01:00
eec6cf1bf9 feat(zaatar): tuna -> mpd, disable tuna 2023-02-16 08:52:44 +01:00
0698624eb8 feat(ful): add matomo and backup 2023-02-16 08:46:23 +01:00
d0eb69229d feat(picom): make animations faster, rename module 2023-02-13 23:19:44 +01:00
0f88954989 fix(ci): add grafana secret to makanek 2023-02-09 09:48:36 +01:00
7c349f1383 feat(grafana): provision 2023-02-08 09:26:36 +01:00
0eadbf08df feat: nemo with correct terminal setting 2023-02-07 22:30:42 +01:00
72100329b1 feat(compton): fade + inactiveOpacity 2023-02-07 22:30:16 +01:00
bf7b490372 feat: udiskie 2023-02-07 22:26:59 +01:00
dd4083aec5 fix(fonts): update hash, reject woff 2023-02-06 21:39:38 +01:00
6edd1c0439 feat: reenable flameshot-once 2023-02-06 21:23:33 +01:00
467c80a239 feat(streams): add more todo 2023-02-05 11:43:10 +01:00
b100ea7b28 chore: update and comment flameshot-once 2023-02-03 13:36:40 +01:00
3cdc468e31 feat(streams): add more todo 2023-02-03 11:05:26 +01:00
2d19ba7249 feat: build laptops from stable 2023-01-31 11:03:37 +01:00
7af32a0ad3 fix(ci): tt-rss -> miniflux 2023-01-31 10:24:25 +01:00
0e75118416 feat(streams): remove unicode from playlist names 2023-01-30 10:03:07 +01:00
139fcae7a0 Merge branch 'update_flake_lock_action' 2023-01-29 19:21:00 +01:00
bcfd5d73be feat: calendar add more planets 2023-01-29 19:20:51 +01:00
bcf057e871 fix(miniflux): rename password on server 2023-01-29 19:04:01 +01:00
fad2d0629d feat(mastodon-bot): disable 2023-01-29 18:51:05 +01:00
27cc5766ee fix(miniflux): rename password 2023-01-29 18:43:03 +01:00
813072e47c fix(miniflux): rename password 2023-01-29 17:51:32 +01:00
github-actions[bot]
bcc355f822 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/9e565f0d9d41c19a94f55af205c328ec5177fc0a' (2023-01-07)
  → 'github:nix-community/home-manager/08a778d80308353f4f65c9dcd3790b5da02d6306' (2023-01-28)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/2dea8991d89b9f1e78d874945f78ca15f6954289' (2023-01-06)
  → 'github:NixOS/nixpkgs/ce20e9ebe1903ea2ba1ab006ec63093020c761cb' (2023-01-28)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/a518c77148585023ff56022f09c4b2c418a51ef5' (2023-01-05)
  → 'github:NixOS/nixpkgs/9b97ad7b4330aacda9b2343396eb3df8a853b4fc' (2023-01-25)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs%2fheads%2fmaster&rev=33ac7efb37d36e1939b62a93494570bce1be4dac' (2023-01-07)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs%2fheads%2fmaster&rev=a396ad8139cb934e36f0bf0bde84786b2704c6bd' (2023-01-26)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=895440aab0d360bd805338fa41874282a3209df0' (2023-01-07)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=e01e296e5d34aa74a4d6edf8203b3dd015a94112' (2023-01-28)
2023-01-29 17:51:13 +01:00
d8b931af7c feat: miniflux 2023-01-29 17:46:31 +01:00
4c8d2a051d feat(backup): also backup notes 2023-01-17 15:50:12 +01:00
2906848f92 feat(backup): also backup sd card directories 2023-01-17 15:37:56 +01:00
c2a78a88bd feat: git-crypt 2023-01-12 10:20:07 +01:00
63bf7ddeb0 feat(firefox): declarative 2023-01-12 10:19:56 +01:00
github-actions[bot]
19e4e76e6f flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/dd99675ee81fef051809bc87d67eb07f5ba022e8' (2022-12-29)
  → 'github:nix-community/home-manager/9e565f0d9d41c19a94f55af205c328ec5177fc0a' (2023-01-07)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/913a47cd064cc06440ea84e5e0452039a85781f0' (2022-12-29)
  → 'github:NixOS/nixpkgs/2dea8991d89b9f1e78d874945f78ca15f6954289' (2023-01-06)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/677ed08a50931e38382dbef01cba08a8f7eac8f6' (2022-12-29)
  → 'github:NixOS/nixpkgs/a518c77148585023ff56022f09c4b2c418a51ef5' (2023-01-05)
• Updated input 'scripts':
    'github:kmein/scripts/84ad80348294e9423996b52a4b112700ae5d3176' (2022-11-23)
  → 'github:kmein/scripts/2670c7eed566f195f833a25e6ccc6b368fe18af5' (2023-01-07)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=de0226995d553e4a70170ce59483a6d71f41932d' (2022-12-30)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=895440aab0d360bd805338fa41874282a3209df0' (2023-01-07)
2023-01-09 10:29:24 +01:00
79e9ab38a8 fix: use retiolum keys from password store 2023-01-08 00:16:30 +01:00
318687f5cf fix(radio): radio-news.r has moved so we have to update the retiolum hosts 2023-01-08 00:06:16 +01:00
c5a297cd7d feat: rusty alarm 2023-01-07 09:58:35 +01:00
6f6100d752 feat: return to pulseaudio 2023-01-07 08:30:57 +01:00
049dadd704 fix(nix): do not use flaky prism.r cache 2023-01-06 17:02:02 +01:00
0a4fa2d16f feat: pipewire 2023-01-06 15:32:23 +01:00
f25c59178c manakish: new sd card 2023-01-06 12:28:12 +01:00
88b6802dae fix(ci): add missing secret 2023-01-06 12:27:47 +01:00
5f88e7287b fix: pandoc man hash 2023-01-06 09:47:12 +01:00
abb0be6a17 feat: bye brave, hello firefox 2023-01-06 09:08:42 +01:00
fec8479e90 fix(tahina): install git for krops to work 2023-01-04 20:43:48 +01:00
190a46abcd feat(nixify): use packages instead of buildInputs 2023-01-04 20:43:38 +01:00
0a4fccd582 feat(mail): add klassphil email 2023-01-04 20:43:26 +01:00
232b6059df fix(mastodon-bot): restart on failure 2023-01-02 09:10:49 +01:00
eb17c7fdd9 fix: post on mastodon from both laptops 2023-01-01 14:53:47 +01:00
1aa7b78b4a fix: use my keys for @Mic92 retiolum module 2022-12-31 18:54:46 +01:00
de6408f28f feat: use @Mic92 retiolum module
the old one did this:

building '/nix/store/gqvr8gl8ayj9kgjnfr23ax0xpc3rnc34-unit-tinc.retiolum.service.drv'...
error: executing '/nix/store/4xw8n979xpivdc46a9ndcvyhwgif00hz-bash-5.1-p16/bin/bash': Argument list too long
error: builder for '/nix/store/gqvr8gl8ayj9kgjnfr23ax0xpc3rnc34-unit-tinc.retiolum.service.drv' failed with exit code 1
error: 1 dependencies of derivation '/nix/store/v2ld4847xyb49v7wjb3fvf6lkg2j755b-system-units.drv' failed to build
error: 1 dependencies of derivation '/nix/store/bbl9qidw9z0gz56z7yrhfkxsawk5qi7x-etc.drv' failed to build
2022-12-31 10:40:41 +01:00
aeed540089 feat: no proprietary pdf readers please, also no goldendict
they both want me to build qtwebkit
2022-12-31 08:10:08 +01:00
d769b79ac3 feat: add mastodon poster 2022-12-31 07:23:34 +01:00
126dfada4b feat(atuin): restart on failure 2022-12-31 07:23:01 +01:00
github-actions[bot]
2793d2ca0e flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/eb3598cf44aa10f2a16fe38488a102c0f474d766' (2022-12-03)
  → 'github:nix-community/home-manager/d7eee202e597bc7789498a8664082cf0ffedaa8f' (2022-12-23)
• Updated input 'nix-writers':
    'git+https://cgit.krebsco.de/nix-writers?ref=refs%2fheads%2fmaster&rev=f65c77bdcc58be2081a0ffbda849289c5191b5e8' (2022-11-29)
  → 'git+https://cgit.krebsco.de/nix-writers?ref=refs%2fheads%2fmaster&rev=0c8de150426476b5287cf2787bbd85263691a802' (2022-12-12)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/660e7737851506374da39c0fa550c202c824a17c' (2022-12-02)
  → 'github:NixOS/nixpkgs/9898811c658d39b2692d0ab744377e02fd85d08b' (2022-12-22)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/b72b8b94cf0c012b0252a9100a636cad69696666' (2022-12-02)
  → 'github:NixOS/nixpkgs/652e92b8064949a11bc193b90b74cb727f2a1405' (2022-12-22)
• Updated input 'retiolum':
    'github:krebs/retiolum/cada994815864d4cc1edb9d76df74beafc496481' (2022-12-01)
  → 'github:krebs/retiolum/20ad3544d80690791bed8a639d08848924a7aaa9' (2022-12-19)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=3884243448869bdf09f6434b385e532c7c26ae88' (2022-12-12)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=6e13334579f16940edb1182662d9ac58e57aba0e' (2022-12-25)
2022-12-29 23:43:06 +01:00
b536f2af34 feat(hu-vpn): remove openvpn, do not split tunnel 2022-12-29 23:37:29 +01:00
41d2a32585 feat: rink, deno 2022-12-29 23:37:13 +01:00
94f2c18432 feat(autocutsel): disable because i dont want to paste everything i select 2022-12-18 13:51:22 +01:00
a2e98794cb feat(alacritty): visual bell 2022-12-17 10:03:15 +01:00
547d59ee2c feat: reenable ssh agent, gpg did not work 2022-12-17 10:03:00 +01:00
bc8a035451 feat(gpg): use for ssh, increase ttl 2022-12-13 14:38:14 +01:00
36ce5143b4 fix(radio-news): only give one hour of stockholm history 2022-12-13 14:26:37 +01:00
e4514389f1 feat(color): use papercolor 2022-12-13 14:12:40 +01:00
99bc72eb29 feat(tarot): use scriptFile option 2022-12-13 09:36:59 +01:00
7aee4b566c feat(manakish): welcome docking station 2022-12-07 21:05:21 +01:00
42cff2dc92 chore: poetry is broken 2022-12-05 10:35:07 +01:00
2576637960 Merge branch 'update_flake_lock_action' 2022-12-05 10:20:43 +01:00
github-actions[bot]
d83f43a141 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/478610aa37c8339eacabfa03f07dacf5574edd47' (2022-11-30)
  → 'github:nix-community/home-manager/eb3598cf44aa10f2a16fe38488a102c0f474d766' (2022-12-03)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/596a8e828c5dfa504f91918d0fa4152db3ab5502' (2022-11-30)
  → 'github:NixOS/nixpkgs/660e7737851506374da39c0fa550c202c824a17c' (2022-12-02)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/a115bb9bd56831941be3776c8a94005867f316a7' (2022-11-27)
  → 'github:NixOS/nixpkgs/b72b8b94cf0c012b0252a9100a636cad69696666' (2022-12-02)
• Updated input 'retiolum':
    'github:krebs/retiolum/4679cdd5f0851f22518e7011144f22431e6551c0' (2022-12-01)
  → 'github:krebs/retiolum/cada994815864d4cc1edb9d76df74beafc496481' (2022-12-01)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=81b5682c5ff1e36613f844a874e09b897ee13d3e' (2022-11-29)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=645c3564f75589531abcf17fd3c3f920d93a394a' (2022-12-02)
2022-12-05 10:07:08 +01:00
218195a781 fix(notemenu) 2022-12-05 10:06:40 +01:00
bb8940c9e5 feat(nix): auto gc for saving space 2022-12-03 11:34:40 +01:00
e6623e8b4d feat(zaatar): backup sql backups 2022-12-03 08:51:11 +01:00
b5514150ab Revert "feat(alertmanager): send text email as well"
This reverts commit 3b1af791c9.
2022-12-03 08:45:40 +01:00
2b2514b2eb feat(nextcloud): i do not use server side encryption 2022-12-03 08:36:29 +01:00
3b1af791c9 feat(alertmanager): send text email as well 2022-12-03 08:31:45 +01:00
f3e14ffc9e feat(alertmanager): send telegram and email notifications 2022-12-03 08:31:45 +01:00
f04ca9d1de feat(postgresql): enable backup 2022-12-03 08:31:45 +01:00
72b48e90aa fix(notemenu): open notes correctly 2022-12-03 07:15:03 +01:00
bd065e7888 feat(alertmanager): send telegram and email with more info 2022-12-02 17:32:40 +01:00
45644518bb feat(urlwatch): remove arnshaugk due to spam 2022-12-01 20:52:37 +01:00
77ddd1d02f feat(urlwatch): remove tatort due to spam 2022-12-01 20:52:15 +01:00
0f5e0e8d6f chore: update retiolum 2022-12-01 20:00:05 +01:00
de066361b7 feat(prometheus): make reachable via http 2022-12-01 19:58:59 +01:00
ba3a139f8e feat(tt-rss): disable registration 2022-12-01 18:25:43 +01:00
91fa6faeaf feat(nextcloud): set email via module 2022-12-01 18:25:33 +01:00
e95546ef8a feat(nextcloud): upgrade 2022-12-01 18:25:16 +01:00
b9623e3d57 feat(alertmanager): access via http 2022-12-01 18:25:03 +01:00
73929c1963 feat(newsboat): star flag s 2022-12-01 18:24:19 +01:00
3197a5a232 feat(prometheus): use node exporter firewall option 2022-12-01 18:24:05 +01:00
6a605633ae chore: update retiolum 2022-12-01 17:07:44 +01:00
52376128a5 feat(alertmanager): report via email like a professional, allow http access 2022-12-01 17:07:06 +01:00
4a5bc2d89d feat: update to 22.11 2022-12-01 17:07:06 +01:00
3ec22d6ef0 feat(journald): save space on journal 2022-12-01 17:04:12 +01:00
3c86532a5d feat(nextcloud): try to log stuff 2022-12-01 13:37:46 +01:00
a34b4a8262 feat: use owickstrom colours 2022-11-30 12:39:45 +01:00
3102d6f56c fix(alacritty): use correct config path 2022-11-30 11:44:39 +01:00
a2b65034bf fix(nextcloud): do not sync paychecks anymore 2022-11-30 11:23:07 +01:00
90550dc18b feat: atuin 2022-11-30 11:21:38 +01:00
03d40a488b chore: permit insecure qtwebkit 2022-11-30 09:19:30 +01:00
74191a27ee Merge remote-tracking branch 'origin/update_flake_lock_action' 2022-11-30 07:42:47 +01:00
a33db562c4 feat(alacritty): make faster 2022-11-29 22:51:09 +01:00
93cc209e52 feat: clipmenu 2022-11-29 22:50:49 +01:00
d1b5b0c25c feat(newsboat): starred tt-rss 2022-11-29 13:58:42 +01:00
ff5bc035c0 feat(tt-rss): correct name, add secret to ci 2022-11-29 13:55:56 +01:00
e06e7bbe0d feat(i3): more github stuff is important 2022-11-29 12:00:35 +01:00
8786bfad24 feat(moodle-dl): borsfaye 2022-11-28 12:54:30 +01:00
github-actions[bot]
10949f7746 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817' (2022-10-29)
  → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
• Updated input 'home-manager':
    'github:nix-community/home-manager/722e8d65d3aba6f527100cc2d1539e4ca04d066f' (2022-10-31)
  → 'github:nix-community/home-manager/e999dfe7cba2e1fd59ab135e7496545bd4f82b76' (2022-11-27)
• Updated input 'home-manager/utils':
    'github:numtide/flake-utils/6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817' (2022-10-29)
  → 'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/26eb67abc9a7370a51fcb86ece18eaf19ae9207f' (2022-10-30)
  → 'github:NixOS/nixpkgs/695b3515251873e0a7e2021add4bba643c56cde3' (2022-11-25)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/412b9917cea092f3d39f9cd5dead4effd5bc4053' (2022-10-30)
  → 'github:NixOS/nixpkgs/5dc7114b7b256d217fe7752f1614be2514e61bb8' (2022-11-25)
• Updated input 'scripts':
    'github:kmein/scripts/66b2068d548d3418c81dd093bba3f80248c68196' (2022-10-12)
  → 'github:kmein/scripts/84ad80348294e9423996b52a4b112700ae5d3176' (2022-11-23)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=a83dec755ca2753705254f90346e4441d2f25c7c' (2022-10-31)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=dae12b6893a1d28e8bcb1fe3fb9ee8757bbfbed4' (2022-11-24)
2022-11-27 00:55:59 +00:00
12e3529df8 fix(celan): send at random time 2022-11-26 11:35:58 +01:00
4b954a7e83 fix(tabula): networking, sound 2022-11-25 11:27:43 +01:00
ce99920054 feat: celan telegram bot 2022-11-25 11:27:16 +01:00
c3c0792d50 feat: init tabula 2022-11-25 09:16:02 +01:00
851a9edc4d chore: update retiolum 2022-11-25 09:15:42 +01:00
e69668606e feat(streams): rename радио русский берлин 2022-11-22 19:31:21 +01:00
52d73abe06 feat: fq 2022-11-22 11:48:15 +01:00
bf899d0bde feat(i3): envs.sh 2022-11-22 11:48:09 +01:00
dcf2fa523b feat(tt-rss): replace freshrss 2022-11-16 11:21:22 +01:00
cae4423fb3 feat(freshrss): run from unstable, use with newsboat 2022-11-16 10:03:55 +01:00
25b37c2b01 feat(freshrss): host on makanek 2022-11-14 23:07:19 +01:00
a4e0e25465 feat: add termdown 2022-11-09 11:07:58 +01:00
4fa3a3e5fc feat(xkb): add hebrew 2022-11-09 11:07:44 +01:00
4950442f8b feat(i3): highlight borders blue 2022-11-08 20:31:16 +01:00
7252826719 feat(i3): no gaps 2022-11-08 20:31:04 +01:00
a22acd2073 feat(i3): no no startup id 2022-11-08 20:30:53 +01:00
9e85a12084 fix(i3): remove title bars 2022-11-08 20:30:28 +01:00
600d8a5f7d fix: temporarily disable trådfri 2022-11-08 06:41:27 +01:00
857518578a feat(fzf): do not ignore vcs and follow links 2022-11-07 15:44:18 +01:00
b1fcbcaa96 feat(xkb): add coptic, avestan, devanagari 2022-11-07 15:42:40 +01:00
005e193f56 fix(menstruation): update 2022-11-07 11:29:10 +01:00
6e5ff9214e chore: update 2022-11-01 09:45:06 +01:00
85f3722ba5 feat(nextcloud): sync fysi documents 2022-11-01 07:55:06 +01:00
797d091643 fix(tlg-wotd) 2022-10-28 07:45:40 +02:00
b1544906aa feat(moodle-dl): WS22 course 2022-10-25 07:39:19 +02:00
c886511c99 feat: json2csv script 2022-10-19 08:56:47 +02:00
7388395908 feat(graph.r): update to show pois on map 2022-10-19 08:56:39 +02:00
bf42e37daa Merge pull request #27 from kmein/update_flake_lock_action
flake.lock: Update
2022-10-18 20:42:11 +02:00
035fa9e29d chore: update scripts 2022-10-18 10:11:18 +02:00
cc28b894d1 fix(menstruation): update 2022-10-18 10:10:57 +02:00
c1c1665e50 feat(moinbot): randomize greeting 2022-10-18 10:10:57 +02:00
2dca2596cd feat(onomap): allow multiple names 2022-10-18 10:10:56 +02:00
github-actions[bot]
bede997e7d flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/a7f0cc2d7b271b4a5df9b9e351d556c172f7e903' (2022-09-30)
  → 'github:nix-community/home-manager/2ecb3ea990cf737cfb42d8cd805fa86347c1afaf' (2022-10-15)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/9cac45850280978a21a3eb67b15a18f34cbffa2d' (2022-10-01)
  → 'github:NixOS/nixpkgs/e06bd4b64bbfda91d74f13cb5eca89485d47528f' (2022-10-12)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/ae1dc133ea5f1538d035af41e5ddbc2ebcb67b90' (2022-09-22)
  → 'github:NixOS/nixpkgs/4428e23312933a196724da2df7ab78eb5e67a88e' (2022-10-14)
• Updated input 'retiolum':
    'github:krebs/retiolum/86208b5a747d7aa661240b2d5c2f229f2ed76959' (2022-09-28)
  → 'github:krebs/retiolum/289712a3becfec77dab8963d450b2afe616569e0' (2022-10-12)
• Updated input 'scripts':
    'github:kmein/scripts/86c71080945e5b637d9dde5c3d944d600035e2eb' (2022-10-09)
  → 'github:kmein/scripts/66b2068d548d3418c81dd093bba3f80248c68196' (2022-10-12)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=8f929b04b3de012a9c72306786f076b78aa9f98c' (2022-09-27)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=0d32cceb996dc3b91342ce9d0aa2df1b234522fa' (2022-10-12)
2022-10-16 01:15:33 +00:00
0082602131 feat(smyth): only once per day 2022-10-14 15:20:19 +02:00
8ffeddb46b chore(onomap): remove unused variable 2022-10-09 07:14:36 +02:00
c06e37f40a feat(onomap): allow multiple names 2022-10-07 02:23:54 +02:00
8d36a77405 fix: downgrade unstable because i dont want to damage my display
https://lore.kernel.org/all/YzwooNdMECzuI5+h@intel.com/
2022-10-06 11:07:20 +02:00
1219517d62 fix(vimPlugins): name -> pname 2022-10-06 11:07:20 +02:00
786d1df781 fix: pkgconfig -> pkg-config 2022-10-06 10:53:11 +02:00
c49859900a fix: utillinux -> util-linux 2022-10-06 10:37:21 +02:00
f9ce538975 fix: posix_man_pages -> man-pages-posix 2022-10-06 10:32:31 +02:00
7d6e7ae1a2 fix: xdg_utils -> xdg-utils 2022-10-06 10:32:30 +02:00
176958cd75 fix: iproute -> iproute2 2022-10-06 10:31:26 +02:00
816c21d7de fix: gnome3 -> gnome 2022-10-06 09:41:25 +02:00
3b1f4799e0 fix(hesychius): update scripts 2022-10-06 08:17:14 +02:00
c52df45b4f fix(ful): disable systemd-networkd-wait-online 2022-10-06 07:17:48 +02:00
84f83cb6ac Merge pull request #26 from kmein/update_flake_lock_action
flake.lock: Update
2022-10-05 22:49:37 +02:00
652b7d4852 fix(rofi-pass): generate passwords, correct default user 2022-10-05 17:09:34 +02:00
e73c139d69 feat(rofi-pass): allow insertion 2022-10-05 17:08:58 +02:00
549282140f fix(rofi-pass): include via home-manager
also fix https://github.com/carnager/rofi-pass/issues/226
2022-10-05 16:50:27 +02:00
f3bb52e820 feat: we may want to eat fast food on tuesdays 2022-10-04 10:59:17 +02:00
717672e86e feat: calendars script 2022-10-03 19:14:21 +02:00
1cee1c06f7 feat(moodle-dl): WS22 course 2022-10-03 19:14:11 +02:00
4d5989aa5b feat(neomutt): alias for faster access of single accounts 2022-10-03 19:13:57 +02:00
01bdeb05b7 kabsa: new SD card 2022-10-02 09:59:10 +02:00
5c422e74e8 feat: new DR streams, playlist for Record 2022-10-02 09:58:59 +02:00
github-actions[bot]
be3795e957 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/de3758e31a3a1bc79d569f5deb5dac39791bf9b6' (2022-09-23)
  → 'github:nix-community/home-manager/a7f0cc2d7b271b4a5df9b9e351d556c172f7e903' (2022-09-30)
• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/7e27b838cd7ac90fed03d0d5a8487848c4b0b6d2' (2022-09-23)
  → 'github:NixOS/nixpkgs/9cac45850280978a21a3eb67b15a18f34cbffa2d' (2022-10-01)
• Updated input 'nixos-unstable':
    'github:NixOS/nixpkgs/ae1dc133ea5f1538d035af41e5ddbc2ebcb67b90' (2022-09-22)
  → 'github:NixOS/nixpkgs/10ecda252ce1b3b1d6403caeadbcc8f30d5ab796' (2022-09-30)
• Updated input 'recht':
    'github:kmein/recht/d551afed23122bb3106e59eb2274394ec5555048' (2021-04-28)
  → 'github:kmein/recht/dc2cb407052a53965e6678fd84f0d887f887c11c' (2022-09-28)
• Updated input 'retiolum':
    'github:krebs/retiolum/8d9b86a0ce503588bb34ae8676fdbcb0e4014119' (2022-09-24)
  → 'github:krebs/retiolum/86208b5a747d7aa661240b2d5c2f229f2ed76959' (2022-09-28)
• Updated input 'stockholm':
    'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=55957c6d6adb51d2079c117c1e7309c60ee0fe0f' (2022-09-19)
  → 'git+https://cgit.lassul.us/stockholm?ref=refs%2fheads%2fmaster&rev=8f929b04b3de012a9c72306786f076b78aa9f98c' (2022-09-27)
2022-10-02 01:16:36 +00:00
6063f4c90b feat(ssh): use fysiweb identity for ip login on dev1 2022-09-28 15:54:42 +02:00
7c4557331f feat(newsboat): hooktube is no more 2022-09-28 15:54:21 +02:00
8a7e4386fb fix(newsboat): call link handler 2022-09-28 14:15:39 +02:00
61ab528d56 feat: screencap script 2022-09-28 09:34:17 +02:00
032810109c fix(ci): add mega password 2022-09-27 22:28:58 +02:00
6b0bb6a806 feat(cloud): add script for browsing mega 2022-09-27 22:07:03 +02:00
7ce64d461c fix(notemenu): do not show hidden files 2022-09-27 20:40:24 +02:00
51afd41254 fix(notement): correctly handle files with spaces 2022-09-27 19:36:22 +02:00
eb4fa1b9bd feat(nextcloud): disable gui client 2022-09-27 19:19:14 +02:00
ac7a4b2aa5 feat(nextcloud): sync nextcloud notes periodically 2022-09-27 19:18:42 +02:00
89a4b13b2d feat: bye ncdu, hi gdu 2022-09-27 19:17:30 +02:00
f5da2dffd8 feat(newsboat): add odysee to linkhandler 2022-09-27 09:47:50 +02:00
cdf42df7c1 feat(bin): add tuesday script 2022-09-26 09:40:12 +02:00
3ccf0cfe9a feat(bin): add prospekte script 2022-09-26 09:39:59 +02:00
83632cbd9c feat(ful): monitoring 2022-09-26 09:30:28 +02:00
github-actions[bot]
092879a425 flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-stable':
    'github:NixOS/nixpkgs/bcc68429a50c4ac051920c72c60e417202c19d79' (2022-09-22)
  → 'github:NixOS/nixpkgs/7e27b838cd7ac90fed03d0d5a8487848c4b0b6d2' (2022-09-23)
• Updated input 'retiolum':
    'github:krebs/retiolum/c4d6b07be29b3b9267027ed25792a2cb350459d5' (2022-08-16)
  → 'github:krebs/retiolum/8d9b86a0ce503588bb34ae8676fdbcb0e4014119' (2022-09-24)
2022-09-25 01:04:02 +00:00
c6a45b421b feat: update 2022-09-23 23:31:27 +02:00
b5addef848 fix: dont get scripts from overlay 2022-09-23 23:31:14 +02:00
e2cf761aea feat: more transits 2022-09-23 09:54:58 +02:00
868dc8a4aa feat(moodle-dl): disable for borsfaye 2022-09-23 09:32:29 +02:00
dfd4bb0ca8 chore: get also otf from fonts 2022-09-23 09:32:29 +02:00
3e03688c81 feat: reenable transits 2022-09-23 09:32:21 +02:00
3136002449 feat: wrap jsesh 2022-09-19 22:04:52 +02:00
4cbd2fee7d WIP(fonts): install egyptological fonts 2022-09-19 22:04:37 +02:00
565c73bd05 feat(fonts): add emojifont to terminal 2022-09-19 07:29:47 +02:00
e5f933977c feat(unicodmenu): update to unicode 15 2022-09-19 07:29:12 +02:00
736b289643 feat(rofi): light theme 2022-09-19 07:28:57 +02:00
e0e0dd9e34 feat(fonts): cardo 2022-09-16 09:27:47 +02:00
1e2613b838 feat(newsboat): reload in parallel 2022-09-15 12:22:38 +02:00
f41ddb654a we dont need no procrastination 2022-09-13 21:01:32 +02:00
41ecca8411 feat(weechat): authenticate @ news.r 2022-09-13 21:01:16 +02:00
a80f4d866a chore: update 2022-09-13 20:30:07 +02:00
f56e9aa37b feat(todo): add procrastination 2022-09-12 12:36:14 +02:00
822b0df4b8 feat(i3): dock i3bar 2022-09-10 21:51:16 +02:00
c16123dc8d feat: automate entering ssh passphrase 2022-09-08 12:46:44 +02:00
110 changed files with 3048 additions and 916 deletions

19
.bin/calendars.sh Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/sh
directory="$(mktemp -d)"
trap clean EXIT
clean() {
rm -rf "$directory"
}
year=$(date +%Y)
output=/tmp/$year.pdf
for month in $(seq 1 12); do
printf "\r%d" "$month" 1>&2
astrolog -zN Berlin -qm "$month" "$year" -X -K -XA -Xr -Xm -Xb -Xo "$(printf "%s/%02d.bmp" "$directory" "$month")" -Xw 1080 720 2>/dev/null
done
printf "\r"
convert "$directory/*.bmp" "$output"
echo "$output"

43
.bin/dummy-alert Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
name=$RANDOM
url='http://localhost:9093/api/v1/alerts'
echo "firing up alert $name"
# change url o
curl -XPOST $url -d "[{
\"status\": \"firing\",
\"labels\": {
\"alertname\": \"$name\",
\"service\": \"my-service\",
\"severity\":\"warning\",
\"instance\": \"$name.example.net\"
},
\"annotations\": {
\"summary\": \"High latency is high!\"
},
\"generatorURL\": \"http://prometheus.int.example.net/<generating_expression>\"
}]"
echo ""
echo "press enter to resolve alert"
read
echo "sending resolve"
curl -XPOST $url -d "[{
\"status\": \"resolved\",
\"labels\": {
\"alertname\": \"$name\",
\"service\": \"my-service\",
\"severity\":\"warning\",
\"instance\": \"$name.example.net\"
},
\"annotations\": {
\"summary\": \"High latency is high!\"
},
\"generatorURL\": \"http://prometheus.int.example.net/<generating_expression>\"
}]"
echo ""

5
.bin/json2csv.jq Executable file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/env -S jq -r -f
(map(keys) | add | unique) as $cols
| map(. as $row | $cols | map($row[.])) as $rows
| $cols, $rows[]
| @csv

65
.bin/prospekte.sh Executable file
View File

@@ -0,0 +1,65 @@
#!/bin/sh
lidl() {
echo LIDL
curl -sSL 'https://endpoints.lidl-flyer.com/v3/region-overview/lidl/de-DE/0.json' \
| jq -r '
.categories
| map(select(.name == "Filial-Angebote") | .subcategories | map(.flyers))
| flatten
| flatten
| .[]
| .pdfUrl
'
}
aldi_nord() {
echo ALDI nord
echo 'https://magazine.aldi-nord.de/aldi-nord/aldi-aktuell/GetPDF.ashx'
echo 'https://magazine.aldi-nord.de/aldi-nord/aldi-vorschau/GetPDF.ashx'
}
rewe_berlin() {(
store_id=662366923
publisher_id=1062
echo REWE
curl -sSL 'https://www.bonialserviceswidget.de/de/stores/'$store_id'/brochures?storeId='$store_id'&publisherId='$publisher_id | while read -r brochure_id; do
curl -sSL 'https://www.bonialserviceswidget.de/de/v5/brochureDetails/'"$brochure_id"'?publisherId='$publisher_id | jq -r .pdfUrl
done
)}
kaufland() {(
region_code=8920
echo KAUFLAND
curl -sSL https://filiale.kaufland.de/prospekte.html | htmlq --attribute href '.flyer a' | grep -Eo 'DE_de_KDZ[^/]*' | sed "s/_3000_/_${region_code}_/" | while read -r flyer_id; do
curl -sSL "https://endpoints.leaflets.kaufland.com/v3/$flyer_id/flyer.json?regionCode=$region_code" | jq -r .flyer.pdfUrl
done
)}
netto_schwarz() {
echo 'NETTO (schwarz)'
curl -sSL 'https://squid-api.tjek.com/v2/catalogs?dealer_ids=90f2VL&order_by=created' \
| jq -r '.[] | .id' \
| while read -r flyer_id; do
curl -sSL "https://squid-api.tjek.com/v2/catalogs/$flyer_id/download" \
| jq -r .pdf_url
done
}
dir="$(mktemp -d)"
trap clean EXIT
clean() {
rm -rf "$dir"
}
prospekt_url="$( (
lidl
aldi_nord
rewe_berlin
kaufland
netto_schwarz
) | fzf)"
curl -sSL "$prospekt_url" -o "$dir/prospekt.pdf"
zathura "$dir/prospekt.pdf"

16
.bin/screencap.sh Executable file
View File

@@ -0,0 +1,16 @@
#! /usr/bin/env nix-shell
#! nix-shell -i sh -p coreutils byzanz xorg.xwininfo gnused
# shellcheck shell=sh
# ref https://gist.github.com/aforemny/0994cb7f06ea30d56c8b9681ff5d2054
set -eux
eval "$(xwininfo | \
sed -n -e 's/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p' \
-e 's/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p' \
-e 's/^ \+Width: \+\([0-9]\+\).*/w=\1/p' \
-e 's/^ \+Height: \+\([0-9]\+\).*/h=\1/p')"
trap "pkill -f 'sleep 360d'" INT
byzanz-record -e "sleep 360d" -c -x $x -y $y -w $w -h $h "$@"

50
.bin/toposort.nix Normal file
View File

@@ -0,0 +1,50 @@
let
lib = import <nixpkgs/lib>;
in rec {
inherit lib;
input = [
{
x = ["pool" "zfs"];
y = ["mdadm" "raid1"];
}
{
x = ["pool" "zfs"];
y = ["disk" "sda"];
}
{
x = ["mdadm" "raid1"];
y = ["disk" "sdb"];
}
{
x = ["mdadm" "raid1"];
y = ["disk" "sdc"];
}
];
outNodes = node: graph:
lib.unique
(builtins.map (e: e.y)
(builtins.filter (v: v.x == node) graph));
vertices = graph:
lib.unique
(builtins.map (x: x.y) graph ++ builtins.map (x: x.x) graph);
deleteVertex = node: graph: (builtins.filter (v: v.x != node && v.y != node) graph);
findSink = graph:
lib.findFirst
(v: outNodes v graph == [])
(lib.trace graph (builtins.abort "No sink found"))
(vertices graph);
topSort = graph:
if graph == []
then []
else if builtins.length graph == 1
then let only = builtins.head graph; in [only.y only.x]
else let sink = findSink graph; in [sink] ++ topSort (deleteVertex sink graph);
output = topSort input;
}

18
.bin/ttrss-unread Executable file
View File

@@ -0,0 +1,18 @@
#/usr/bin/env -S deno run -A:q
set -x
session_cache="$HOME/.cache/tt-rss.session"
ttrss_endpoint=https://feed.kmein.de/api/
ttrss_user=k
ttrss_password=$(pass shared/tt-rss/password)
login() {
if [ -f "$session_cache" ]; then
session_id="$(cat "$session_cache")"
else
session_id="$(curl -d '{"op":"login","user":"'"$ttrss_user"'","password":"'"$ttrss_password"'"}' "$ttrss_endpoint" | jq -r .content.session_id)"
echo "$session_id" > "$session_cache"
fi
}
login
curl -d '{"sid":"'"$session_id"'","op":"getUnread"}' "$ttrss_endpoint" | jq .content

16
.bin/tuesday-1800 Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/sh
set -efux
expected_max_results=1024 # the upper bound on the number of restaurants
radius=250
echo '[out:json];node(id:260050809)->.cbase;
(
node(around.cbase:'$radius')[amenity=fast_food];
node(around.cbase:'$radius')[amenity=restaurant];
);out;' \
| curl -sSL -d @- -X POST http://overpass-api.de/api/interpreter \
| jq --argjson random "$(shuf -i 0-$expected_max_results -n 1)" '
.elements
| length as $length
| .[$random % $length]
'

7
ci.nix
View File

@@ -45,26 +45,31 @@
"mail/gmail/kieran.meinhardt"
"mail/meinhaki"
"mail/dslalewa"
"mail/fsklassp"
"mail/posteo"
"mega/password"
"nextcloud-fysi/password"
"nextcloud/password"
"openweathermap.key"
"restic/password"
"traadfri.key"
"miniflux/password"
"wifi/Aether.psk"
"spotify/username"
"spotify/password"
];
systemSecrets = let
basic = ["retiolum.ed25519" "retiolum.key" "syncthing/cert.pem" "syncthing/key.pem"];
basic = ["retiolum.ed25519" "retiolum.key" "syncthing/cert.pem" "syncthing/key.pem" "ssh/passphrase"];
in
{
zaatar = ensureFiles (["moodle.token" "telegram/moodle-dl.token" "mpd-web.key"] ++ basic);
kabsa = ensureFiles basic;
manakish = ensureFiles basic;
tahina = ensureFiles basic;
tabula = ensureFiles basic;
ful = ensureFiles (["root.password"] ++ basic);
makanek = ensureFiles ([
"grafana/admin"
"irc/retiolum"
"irc/hackint"
"irc/libera"

320
configs/aerc.nix Normal file
View File

@@ -0,0 +1,320 @@
{
pkgs,
config,
lib,
...
}: let
defaults = {
aerc.enable = true;
realName = "Kierán Meinhardt";
folders.inbox = "INBOX";
};
hu-defaults = {
imap.host = "mailbox.cms.hu-berlin.de";
smtp.host = "mailhost.cms.hu-berlin.de";
};
passwordCommandFrom = path: toString (pkgs.writers.writeDash "email-credentials" "echo ${lib.escapeShellArg (lib.strings.fileContents path)}");
in {
home-manager.users.me = {
accounts.email.accounts = rec {
hu-student =
defaults
// hu-defaults
// rec {
userName = "meinhark";
address = "kieran.felix.meinhardt@hu-berlin.de";
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = passwordCommandFrom <secrets/eduroam/password>;
};
hu-student-cs =
defaults
// hu-defaults
// rec {
userName = "meinhark";
address = "kieran.felix.meinhardt@informatik.hu-berlin.de";
aliases = ["${userName}@informatik.hu-berlin.de"];
imap.host = "mailbox.informatik.hu-berlin.de";
smtp.host = "mailhost.informatik.hu-berlin.de";
passwordCommand = passwordCommandFrom <secrets/eduroam/password>;
};
hu-employee =
defaults
// hu-defaults
// rec {
userName = "meinhaki";
address = "kieran.meinhardt@hu-berlin.de";
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = passwordCommandFrom <secrets/mail/meinhaki>;
signature = {
showSignature = "append";
text = ''
${defaults.realName}
Studentische Hilfskraft / Administrator ALEW
Humboldt-Universität zu Berlin
Telefon: +49 (0)30 2093 9634
Raum 3.212, Dorotheenstraße 24, 10117 Berlin-Mitte
https://alew.hu-berlin.de
'';
};
};
hu-admin =
defaults
// hu-defaults
// rec {
userName = "dslalewa";
address = "admin.alew.vglsprwi@hu-berlin.de";
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = passwordCommandFrom <secrets/mail/dslalewa>;
inherit (hu-employee) signature;
};
hu-fsi =
defaults
// hu-defaults
// rec {
userName = "fsklassp";
passwordCommand = passwordCommandFrom <secrets/mail/fsklassp>;
address = "${userName}@hu-berlin.de";
realName = "FSI Klassische Philologie";
signature = {
showSignature = "append";
text = ''
Fachschafts-Initiative
Humboldt-Universität zu Berlin
Sprach- und literaturwissenschaftliche Fakultät
Institut für klassische Philologie
Unter den Linden 6
10099 Berlin
'';
};
};
fysi =
defaults
// rec {
address = "kieran@fysi.tech";
userName = address;
passwordCommand = passwordCommandFrom <secrets/mail/fastmail>;
flavor = "fastmail.com";
};
cock =
defaults
// rec {
address = "2210@cock.li";
userName = address;
passwordCommand = passwordCommandFrom <secrets/mail/cock>;
realName = "";
imap.host = "mail.cock.li";
smtp.host = imap.host;
};
google-amro =
defaults
// rec {
address = "amroplay@gmail.com";
userName = address;
passwordCommand = passwordCommandFrom <secrets/mail/gmail/amroplay>;
flavor = "gmail.com";
aerc.enable = false;
};
google-kieran =
defaults
// rec {
address = "kieran.meinhardt@gmail.com";
userName = address;
passwordCommand = passwordCommandFrom <secrets/mail/gmail/kieran.meinhardt>;
flavor = "gmail.com";
aerc.enable = false;
folders = {
drafts = "[Gmail]/Entwürfe";
sent = "[Gmail]/Gesendet";
trash = "[Gmail]/Papierkorb";
};
};
posteo =
defaults
// rec {
address = "kieran.meinhardt@posteo.net";
aliases = ["kmein@posteo.de"];
userName = address;
imap.host = "posteo.de";
smtp.host = imap.host;
primary = true;
passwordCommand = passwordCommandFrom <secrets/mail/posteo>;
# himalaya = { enable = true; backend = "imap"; sender = "smtp"; };
};
};
# programs.himalaya.enable = true;
programs.aerc = {
enable = true;
extraBinds = {
# Binds are of the form <key sequence> = <command to run>
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
global = {
"<C-p>" = ":prev-tab<Enter>";
"<C-n>" = ":next-tab <Enter>";
"<C-t>" = ":term<Enter>";
"?" = ":help keys<Enter>";
};
messages = {
q = ":quit<Enter>";
j = ":next <Enter>";
"<Down>" = ":next<Enter>";
"<C-d>" = ":next 50%<Enter>";
"<C-f>" = ":next 100%<Enter>";
"<PgDn>" = ":next 100%<Enter>";
k = ":prev <Enter>";
"<Up>" = ":prev<Enter>";
"<C-u>" = ":prev 50%<Enter>";
"<C-b>" = ":prev 100%<Enter>";
"<PgUp>" = ":prev 100%<Enter>";
g = ":select 0 <Enter>";
G = ":select -1<Enter>";
J = ":next-folder <Enter>";
K = ":prev-folder<Enter>";
H = ":collapse-folder<Enter>";
L = ":expand-folder<Enter>";
"<space>" = ":read -t<Enter>";
v = ":mark -t<Enter>";
V = ":mark -v<Enter>";
F = ":flag -t<Enter>";
T = ":toggle-threads<Enter>";
"<Enter>" = ":view<Enter>";
d = ":prompt 'Delete? ' 'delete-message'<Enter>";
D = ":move Trash<Enter>";
A = ":archive flat<Enter>";
C = ":compose<Enter>";
rr = ":reply -a<Enter>";
rq = ":reply -aq<Enter>";
Rr = ":reply<Enter>";
Rq = ":reply -q<Enter>";
c = ":cf<space>";
"$" = ":term<space>";
"!" = ":term<space>";
"|" = ":pipe<space>";
"/" = ":search<space>";
"\\" = ":filter <space>";
n = ":next-result<Enter>";
N = ":prev-result<Enter>";
"<Esc>" = ":clear<Enter>";
"*" = ":filter -x Flagged<Enter>";
};
view = {
"/" = ":toggle-key-passthrough <Enter> /";
q = ":close<Enter>";
O = ":open<Enter>";
S = ":save<space>";
"|" = ":pipe<space>";
D = ":move Trash<Enter>";
A = ":archive flat<Enter>";
"<C-l>" = ":open-link <space>";
f = ":forward <Enter>";
rr = ":reply -a<Enter>";
rq = ":reply -aq<Enter>";
Rr = ":reply<Enter>";
Rq = ":reply -q<Enter>";
H = ":toggle-headers<Enter>";
"<C-k>" = ":prev-part<Enter>";
"<C-j>" = ":next-part<Enter>";
J = ":next <Enter>";
K = ":prev<Enter>";
};
"view::passthrough" = {
"$noinherit" = "true";
"$ex" = "<C-x>";
"<Esc>" = ":toggle-key-passthrough<Enter>";
};
compose = {
# Keybindings used when the embedded terminal is not selected in the compose
# view
"$noinherit" = "true";
"$ex" = "<C-x>";
"<C-k>" = ":prev-field<Enter>";
"<C-j>" = ":next-field<Enter>";
"<tab>" = ":next-field<Enter>";
"<C-p>" = ":prev-tab<Enter>";
"<C-n>" = ":next-tab<Enter>";
};
"compose::editor" = {
# Keybindings used when the embedded terminal is selected in the compose view
"$noinherit" = "true";
"$ex" = "<C-x>";
"<C-k>" = ":prev-field<Enter>";
"<C-j>" = ":next-field<Enter>";
"<C-p>" = ":prev-tab<Enter>";
"<C-n>" = ":next-tab<Enter>";
};
"compose::review" = {
# Keybindings used when reviewing a message to be sent
y = ":send <Enter>";
n = ":abort<Enter>";
p = ":postpone<Enter>";
q = ":choose -o d discard abort -o p postpone postpone<Enter>";
e = ":edit<Enter>";
a = ":attach<space>";
d = ":detach<space>";
};
terminal = {
"$noinherit" = "true";
"$ex" = "<C-x>";
"<C-p>" = ":prev-tab<Enter>";
"<C-n>" = ":next-tab<Enter>";
};
};
extraConfig = {
ui.sort = "-r date";
ui.timestamp-format = "2006-01-02 15:04";
ui.mouse-enabled = true;
ui.spinner = ". , .";
general.unsafe-accounts-conf = true;
general.pgp-provider = "gpg";
viewer = {pager = "${pkgs.less}/bin/less -R";};
compose = {
address-book-cmd = "khard email --parsable '%s'";
no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt)";
};
filters = {
"text/plain" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/calendar";
"text/html" = "${pkgs.aerc}/share/aerc/filters/html"; # Requires w3m, dante
# "text/html" =
# "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize";
# "text/*" =
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
"message/delivery-status" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
"message/rfc822" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize";
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
};
openers = let
as-pdf = pkgs.writers.writeDash "as-pdf" ''
d=$(mktemp -d)
trap clean EXIT
clean() {
rm -rf "$d"
}
${pkgs.libreoffice}/bin/libreoffice --headless --convert-to pdf "$1" --outdir "$d"
${pkgs.zathura}/bin/zathura "$d"/*.pdf
'';
in {
"image/*" = "${pkgs.nsxiv}/bin/nsxiv";
"application/pdf" = "${pkgs.zathura}/bin/zathura";
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" = toString as-pdf;
"application/vnd.oasis.opendocument.text" = toString as-pdf;
"video/*" = "${pkgs.mpv}/bin/mpv";
"audio/*" = "${pkgs.mpv}/bin/mpv";
};
};
templates = {
# new_message = "hello!";
};
};
};
}

View File

@@ -6,7 +6,12 @@
}: let
alacritty-cfg = theme:
(pkgs.formats.yaml {}).generate "alacritty.yml" {
window.opacity = 0.95;
window.opacity = 0.99;
bell = {
animation = "EaseOut";
duration = 100;
color = "#ffffff";
};
font = {
normal.family = "Monospace";
size = 6;
@@ -43,6 +48,7 @@
name = "alacritty";
paths = [
(pkgs.writeDashBin "alacritty" ''
${pkgs.alacritty}/bin/alacritty --config-file /var/theme/config/alacritty.yml msg create-window "$@" ||
${pkgs.alacritty}/bin/alacritty --config-file /var/theme/config/alacritty.yml "$@"
'')
pkgs.alacritty
@@ -56,7 +62,7 @@ in {
];
environment.etc = {
"themes/dark/alacritty.yml".source = alacritty-cfg (import <niveum/lib/colours/ayu-dark.nix>);
"themes/light/alacritty.yml".source = alacritty-cfg (import <niveum/lib/colours/ayu-light.nix>);
"themes/dark/alacritty.yml".source = alacritty-cfg (import <niveum/lib/colours/papercolor-dark.nix>);
"themes/light/alacritty.yml".source = alacritty-cfg (import <niveum/lib/colours/papercolor-light.nix>);
};
}

View File

@@ -20,9 +20,12 @@ in {
paths = [
"/home/kfm/work"
"/home/kfm/projects"
"/home/kfm/notes"
"/home/kfm/cloud"
"/home/kfm/.gnupg"
"/home/kfm/.ssh"
"/mnt/sd-card/music"
"/mnt/sd-card/Books"
];
};

View File

@@ -1,4 +1,8 @@
{pkgs, ...}: {
{
pkgs,
config,
...
}: {
programs.chromium = {
enable = true;
extensions = [
@@ -11,6 +15,82 @@
];
};
home-manager.users.me = {
programs.firefox = {
enable = true;
package = pkgs.firefox.override {
cfg = {
enableTridactylNative = true;
};
};
profiles = let
defaultSettings = {
"beacon.enabled" = false;
"browser.bookmarks.showMobileBookmarks" = true;
"browser.newtab.preload" = false;
"browser.search.isUS" = false;
"browser.search.region" = "DE";
"browser.send_pings" = false;
"browser.shell.checkDefaultBrowser" = false;
"browser.startup.homepage" = "chrome://browser/content/blanktab.html";
"browser.uidensity" = 1;
"browser.urlbar.placeholderName" = "Search";
"datareporting.healthreport.service.enabled" = false;
"datareporting.healthreport.uploadEnabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.sessions.current.clean" = true;
"distribution.searchplugins.defaultLocale" = "de-DE";
"general.smoothScroll" = true;
"identity.fxaccounts.account.device.name" = config.networking.hostName;
"network.cookie.cookieBehavior" = 1;
"privacy.donottrackheader.enabled" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.trackingprotection.pbmode.enabled" = true;
"privacy.trackingprotection.socialtracking.enabled" = true;
"services.sync.declinedEngines" = "passwords";
"services.sync.engine.passwords" = false;
"signon.autofillForms" = false;
"signon.rememberSignons" = false;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.bhrPing.enabled" = false;
"toolkit.telemetry.cachedClientID" = "";
"toolkit.telemetry.enabled" = false;
"toolkit.telemetry.firstShutdownPing.enabled" = false;
"toolkit.telemetry.hybridContent.enabled" = false;
"toolkit.telemetry.newProfilePing.enabled" = false;
"toolkit.telemetry.prompted" = 2;
"toolkit.telemetry.rejected" = true;
"toolkit.telemetry.server" = "";
"toolkit.telemetry.shutdownPingSender.enabled" = false;
"toolkit.telemetry.unified" = false;
"toolkit.telemetry.unifiedIsOptIn" = false;
"toolkit.telemetry.updatePing.enabled" = false;
"ui.prefersReducedMotion" = 1;
};
in {
default = {
id = 0;
isDefault = true;
settings = defaultSettings;
# extensions = with pkgs.nur.repos.rycee.firefox-addons; [
# ublock-origin
# darkreader
# sponsorblock
# consent-o-matic
# i-dont-care-about-cookies
# # auto-tab-discard TODO what is this
# ];
userChrome = ''
#TabsToolbar {
visibility: collapse !important;
}
'';
};
};
};
};
environment.systemPackages = [pkgs.brave];
environment.variables.BROWSER = "brave";

7
configs/clipboard.nix Normal file
View File

@@ -0,0 +1,7 @@
{
config,
pkgs,
...
}: {
services.clipmenu.enable = true;
}

View File

@@ -15,14 +15,6 @@ in {
};
systemd.tmpfiles.rules = map tmpfilesConfig [
{
type = "L+";
user = config.users.users.me.name;
group = "users";
mode = "0755";
argument = "${config.users.users.me.home}/cloud/Seafile/Wiki";
path = "${config.users.users.me.home}/notes";
}
{
type = "L+";
user = config.users.users.me.name;
@@ -42,9 +34,9 @@ in {
];
home-manager.users.me = {
services.gnome-keyring.enable = true;
services.gnome-keyring.enable = false;
services.nextcloud-client = {
enable = true;
enable = false;
startInBackground = true;
};
systemd.user.services.nextcloud-client = {
@@ -55,6 +47,28 @@ in {
};
};
systemd.user.services.nextcloud-syncer = {
enable = true;
wants = ["network-online.target"];
wantedBy = ["default.target"];
startAt = "*:00/10";
script = let
kieran = {
user = "kieran";
password = lib.fileContents <secrets/nextcloud/password>;
endpoint = "https://cloud.xn--kiern-0qa.de";
target = "${config.users.users.me.home}/notes";
};
in ''
mkdir -p ${lib.escapeShellArg kieran.target}
${pkgs.nextcloud-client}/bin/nextcloudcmd --non-interactive --user ${kieran.user} --password ${lib.escapeShellArg kieran.password} --path /Notes ${lib.escapeShellArg kieran.target} ${kieran.endpoint}
'';
serviceConfig = {
Type = "oneshot";
Restart = "on-failure";
};
};
environment.systemPackages = [
(pkgs.writers.writeDashBin "book" ''
set -efu
@@ -62,8 +76,32 @@ in {
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/syncthing/library -type f
${pkgs.findutils}/bin/find ${config.users.users.me.home}/cloud/Seafile/Books -type f
} | ${pkgs.fzf}/bin/fzf)"
${pkgs.zathura}/bin/zathura "$book"
exec ${pkgs.zathura}/bin/zathura "$book"
'')
(let
kieran = {
user = "kieran.meinhardt@gmail.com";
password = lib.fileContents <secrets/mega/password>;
};
megatools = command: "${pkgs.megatools}/bin/megatools ${command} --username ${lib.escapeShellArg kieran.user} --password ${lib.escapeShellArg kieran.password}";
in
pkgs.writers.writeDashBin "book-mega" ''
set -efu
selection="$(${megatools "ls"} | ${pkgs.fzf}/bin/fzf)"
test -n "$selection" || exit 1
tmpdir="$(mktemp -d)"
trap clean EXIT
clean() {
rm -rf "$tmpdir"
}
(
cd "$tmpdir"
${megatools "get"} "$selection"
exec ${pkgs.zathura}/bin/zathura "$(basename "$selection")"
)
'')
];
fileSystems."/media/moodle" = {

View File

@@ -1,8 +0,0 @@
{
services.compton = {
enable = true;
shadow = true;
menuOpacity = 0.9;
shadowOpacity = 0.3;
};
}

View File

@@ -1,40 +0,0 @@
{
config,
pkgs,
...
}: let
copyqConfig = pkgs.writers.writeDash "copyq-config" ''
${pkgs.copyq}/bin/copyq config check_clipboard true
${pkgs.copyq}/bin/copyq config check_selection false
${pkgs.copyq}/bin/copyq config copy_clipboard true
${pkgs.copyq}/bin/copyq config copy_selection false
${pkgs.copyq}/bin/copyq config activate_closes true
${pkgs.copyq}/bin/copyq config clipboard_notification_lines 0
${pkgs.copyq}/bin/copyq config clipboard_tab \&clipboard
${pkgs.copyq}/bin/copyq config disable_tray false
${pkgs.copyq}/bin/copyq config hide_tabs false
${pkgs.copyq}/bin/copyq config hide_toolbar false
${pkgs.copyq}/bin/copyq config item_popup_interval true
${pkgs.copyq}/bin/copyq config maxitems 1000
${pkgs.copyq}/bin/copyq config move true
${pkgs.copyq}/bin/copyq config text_wrap true
'';
in {
environment.systemPackages = [pkgs.copyq];
systemd.user.services.copyq = {
wantedBy = ["graphical-session.target"];
environment = {
DISPLAY = ":${toString config.services.xserver.display}";
};
serviceConfig = {
SyslogIdentifier = "copyq";
ExecStart = "${pkgs.copyq}/bin/copyq";
ExecStartPost = copyqConfig;
Restart = "always";
RestartSec = "15s";
StartLimitBurst = 0;
};
};
}

View File

@@ -7,6 +7,8 @@
}: let
inherit (lib.strings) makeBinPath;
inherit (import <niveum/lib>) localAddresses kieran;
scripts = import <niveum/packages/scripts> {inherit pkgs lib;};
defaultApplications = (import <niveum/lib>).defaultApplications {inherit pkgs;};
in {
imports = [
<home-manager/nixos>
@@ -30,22 +32,11 @@ in {
tocharian-font = pkgs.callPackage <niveum/packages/tocharian-font.nix> {};
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> {};
ix = pkgs.callPackage <niveum/packages/ix.nix> {};
rofi-pass = pkgs.rofi-pass.overrideAttrs (final: previous: {
patches = [
# password store androi
<niveum/packages/rofi-pass.patch>
];
});
};
permittedInsecurePackages = [
"qtwebkit-5.212.0-alpha4"
];
};
overlays = [
(self: super: {
scripts = import <niveum/packages/scripts> {
pkgs = super;
lib = super.lib;
};
})
];
};
}
{
@@ -78,32 +69,6 @@ in {
};
home-manager.users.me.xdg.enable = true;
home-manager.users.me.dconf.enable = false;
}
{
sound.enable = true;
hardware.pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
# copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine
zeroconf.discovery.enable = true;
extraConfig = ''
load-module ${
toString [
"module-tunnel-sink-new"
"server=zaatar.r"
"sink_name=zaatar"
"channels=2"
"rate=44100"
]
}
'';
};
users.users.me.extraGroups = ["audio"];
environment.systemPackages = [pkgs.pavucontrol pkgs.ncpamixer pkgs.pamixer pkgs.pulsemixer];
}
{
environment.interactiveShellInit = "export PATH=$PATH:$HOME/projects/niveum";
@@ -121,13 +86,13 @@ in {
cd "$(mktemp -d)"
pwd
'';
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
swallow = command: "${scripts.swallow}/bin/swallow ${command}";
in {
"ß" = "${pkgs.utillinux}/bin/setsid";
"ß" = "${pkgs.util-linux}/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";
ip = "${pkgs.iproute2}/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";
@@ -135,7 +100,7 @@ in {
mv = "mv --interactive";
nixi = "nix repl '<nixpkgs>'";
ns = "nix-shell --run zsh";
o = "${pkgs.xdg_utils}/bin/xdg-open";
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";
@@ -196,7 +161,14 @@ in {
}
{programs.command-not-found.enable = true;}
{
programs.gnupg.agent.enable = true;
home-manager.users.me = {
services.gpg-agent = rec {
enable = true;
enableZshIntegration = true;
defaultCacheTtl = 2 * 60 * 60;
maxCacheTtl = 4 * defaultCacheTtl;
};
};
environment.systemPackages = [
pkgs.gnupg
@@ -223,17 +195,36 @@ in {
{
home-manager.users.me.home.stateVersion = "22.05";
}
{
systemd.user.services.udiskie = {
after = ["udisks2.service"];
wants = ["udisks2.service"];
wantedBy = ["graphical-session.target"];
serviceConfig = {
ExecStart = "${pkgs.udiskie}/bin/udiskie --verbose --no-config --notify";
};
};
services.udisks2.enable = true;
programs.dconf.enable = true;
home-manager.users.me = {
dconf.enable = true;
dconf.settings = {
# Change the default terminal for Nemo
"org/cinnamon/desktop/applications/terminal".exec = defaultApplications.terminal;
};
};
}
./alacritty.nix
./backup.nix
./bash.nix
./beets.nix
./bluetooth.nix
./aerc.nix
./ccc.nix
./khal.nix
./chromium.nix
./clipboard.nix
./cloud.nix
./copyq.nix
./compton.nix
./direnv.nix
./distrobump.nix
./docker.nix
@@ -251,11 +242,11 @@ in {
./mpv.nix
./mime.nix
./neovim.nix
./neomutt.nix
./nix.nix
./newsboat.nix
./flameshot-once.nix
./packages.nix
./picom.nix
./stardict.nix
./polkit.nix
./power-action.nix
@@ -269,15 +260,17 @@ in {
./seafile.nix
./ssh.nix
./sshd.nix
./sound.nix
./sudo.nix
./nsxiv.nix
./themes.nix
./tmux.nix
./traadfri.nix
# ./traadfri.nix
./unclutter.nix
./vscode.nix
./watson.nix
./zsh.nix
./tor.nix
./mastodon-bot.nix
];
}

View File

@@ -10,7 +10,7 @@
cat > shell.nix <<'EOF'
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = [];
packages = [];
}
EOF
''${EDITOR:-vim} shell.nix

View File

@@ -4,11 +4,11 @@
...
}: let
inherit (import <niveum/lib>) defaultApplications;
flameshot-once =
pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
flameshot-once = pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
in {
environment.systemPackages = [
(flameshot-once.override {
name = "flameshot-once-kmein";
config = {
imgur = {
enable = true;
@@ -16,29 +16,36 @@ in {
deleteUrl = "http://p.r/image/delete/%1";
xdg-open.browser = (defaultApplications pkgs).browser;
};
timeout = 1000;
drawColor = "#ff0000";
drawThickness = 2;
showDesktopNotification = true;
buttons = [
"ARROW"
"BLUR"
"CIRCLE"
"CIRCLECOUNT"
"COPY"
"DRAWER"
"EXIT"
"IMAGEUPLOADER"
"MARKER"
"MOVESELECTION"
"PENCIL"
"RECTANGLE"
"SAVE"
"SELECTION"
"SELECTIONINDICATOR"
"TEXT"
"UNDO"
];
settings.General = {
autoCloseIdleDaemon = true;
drawColor = "#ff0000";
drawThickness = 2;
checkForUpdates = false;
showDesktopNotification = true;
disabledTrayIcon = true;
showHelp = false;
squareMagnifier = true;
uploadWithoutConfirmation = true;
buttons = [
"TYPE_ARROW"
"TYPE_CIRCLE"
"TYPE_CIRCLECOUNT"
"TYPE_COPY"
"TYPE_DRAWER"
"TYPE_EXIT"
"TYPE_IMAGEUPLOADER"
"TYPE_MARKER"
"TYPE_MOVESELECTION"
"TYPE_PENCIL"
"TYPE_PIXELATE"
"TYPE_RECTANGLE"
"TYPE_SAVE"
"TYPE_SELECTION"
# "TYPE_SELECTIONINDICATOR"
"TYPE_TEXT"
"TYPE_UNDO"
];
};
};
})
];

View File

@@ -74,7 +74,7 @@ in {
[ -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 '{}'
| ${pkgs.findutils}/bin/xargs -I '{}' ${pkgs.util-linux}/bin/setsid ${pkgs.xdg-utils}/bin/xdg-open '{}'
'')
];
}

View File

@@ -1,4 +1,52 @@
{pkgs, ...}: {
{pkgs, ...}: let
zip-font = name: arguments: let
directory = pkgs.fetchzip arguments;
in
pkgs.runCommand name {} ''
mkdir -p $out/share/fonts/{truetype,opentype,woff}
${pkgs.findutils}/bin/find ${directory} -name '*.ttf' -exec install '{}' $out/share/fonts/truetype \;
${pkgs.findutils}/bin/find ${directory} -name '*.otf' -exec install '{}' $out/share/fonts/opentype \;
${pkgs.findutils}/bin/find ${directory} -name '*.woff' -exec install '{}' $out/share/fonts/woff \;
'';
simple-ttf = name: arguments: let
file = pkgs.fetchurl arguments;
in
pkgs.runCommand name {} ''
mkdir -p $out/share/fonts/truetype
install ${file} $out/share/fonts/truetype
'';
egyptianHiero = zip-font "EgyptianHiero" {
url = "https://github.com/MKilani/Djehuty/archive/master.zip";
sha256 = "sha256-KbY4vedm757NWfDlgmNhslbZd+2Vs+o5PjtMMGDt61Y=";
};
antinoou = zip-font "Antinoou" {
url = "https://www.evertype.com/fonts/coptic/AntinoouFont.zip";
sha256 = "0jwihj08n4yrshcx07dnaml2x9yws6dgyjkvg19jqbz17drbp3sw";
stripRoot = false;
};
newGardiner = zip-font "NewGardiner" {
url = "https://mjn.host.cs.st-andrews.ac.uk/egyptian/fonts/NewGardiner.zip";
sha256 = "1jd0qa6shh9pqqyig2w43m9l9rv1i50l73jzkhb6g6mqxbhb1mip";
stripRoot = false;
};
junicode2 = zip-font "JunicodeTwo" {
url = "https://github.com/psb1558/Junicode-font/archive/48bf476db278c844c67542b04d1e0e4c71f139d2.zip";
sha256 = "1ryicc155vkvgv3315ddliigwa01afwyb4c4f6pnqcns03af001i";
};
newAthenaUnicode = zip-font "NewAthenaUnicode" {
url = "https://classicalstudies.org/sites/default/files/userfiles/files/NAU5_005.zip";
sha256 = "1g7qk9gl4nq2dz41bvck1nzilhin44j8691cxax3dlp77bbn9bxr";
};
jsesh = simple-ttf "JSesh" {
url = "http://files.qenherkhopeshef.org/jsesh/JSeshFont.ttf";
sha256 = "1203jrk2xzvgckcc5hx88kja1i3h8gm1wiyla5j6gspc0hbv56ry";
};
egyptianText = simple-ttf "EgyptianText-1.0beta" {
url = "http://c.krebsco.de/EgyptianText-v1.0-beta.ttf";
sha256 = "0cfjbk7xxnxhlp6v922psm5j1xzrv6wfk226ji2wz2yfrnkbcbsv";
};
in {
fonts = {
enableDefaultFonts = true;
fontDir.enable = true;
@@ -7,13 +55,22 @@
alegreya-sans
amiri
annapurna-sil
antinoou
cantarell-fonts
cardo
charis-sil
doulos-sil
newAthenaUnicode
corefonts
crimson
eb-garamond
jsesh
egyptianHiero
egyptianText
font-awesome_6
etBook
newGardiner
junicode2
ezra-sil
fira
font-awesome
@@ -44,11 +101,23 @@
vollkorn
zilla-slab
]; # google-fonts league-of-moveable-type
fontconfig.defaultFonts = {
monospace = ["Noto Sans Mono"];
fontconfig.defaultFonts = rec {
monospace = ["Noto Sans Mono"] ++ emoji;
serif = ["Noto Serif" "Noto Naskh Arabic" "Noto Serif Devanagari"];
sansSerif = ["Noto Sans Display" "Noto Kufi Arabic" "Noto Sans Devanagari" "Noto Sans CJK JP"];
emoji = ["Noto Color Emoji" "Noto Emoji"];
emoji = ["Noto Color Emoji"];
};
# xelatex fails with woff files
# ref https://tex.stackexchange.com/questions/392144/xelatex-and-fontspec-crash-trying-to-find-woff-file-for-some-fonts-but-not-other
fontconfig.localConf = ''
<fontconfig>
<!-- Reject WOFF fonts We don't register WOFF(2) fonts with fontconfig because of the W3C spec -->
<selectfont>
<rejectfont>
<glob>*.woff*</glob>
</rejectfont>
</selectfont>
</fontconfig>
'';
};
}

View File

@@ -5,18 +5,19 @@
}: {
environment = {
systemPackages = [pkgs.fzf];
variables = {
variables = rec {
FZF_DEFAULT_COMMAND = "${pkgs.fd}/bin/fd --type f --strip-cwd-prefix --follow --no-ignore-vcs --exclude .git";
FZF_DEFAULT_OPTS =
lib.escapeShellArgs ["--height=40%" "--layout=reverse"];
lib.escapeShellArgs ["--height=40%"];
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_COMMAND = FZF_DEFAULT_COMMAND;
FZF_CTRL_T_OPTS =
lib.escapeShellArgs ["--preview='${pkgs.bat}/bin/bat \"{}\"'"];
lib.escapeShellArgs ["--preview='head -$LINES {}'"];
};
};

View File

@@ -9,6 +9,7 @@ in {
environment.systemPackages = [
pkgs.mr
pkgs.git
pkgs.git-crypt
pkgs.gitAndTools.gitflow
pkgs.gitAndTools.gh
pkgs.gitAndTools.git-extras

View File

@@ -65,31 +65,16 @@ in {
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}@split_tunnel
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

@@ -5,6 +5,7 @@
...
}: let
inherit (import <niveum/lib>) defaultApplications colours;
scripts = import <niveum/packages/scripts> {inherit pkgs lib;};
klem = import <niveum/packages/scripts/klem.nix> {
inherit pkgs lib;
config.scripts = {
@@ -13,6 +14,15 @@
| ${pkgs.coreutils}/bin/tail --lines=1 \
| ${pkgs.gnused}/bin/sed 's/\\<r\\>/krebsco.de/'
'';
# "envs.sh host" = pkgs.writers.writeDash "envs-host" ''
# ${pkgs.curl}/bin/curl -F "file=$(${pkgs.coreutils}/bin/cat)" https://envs.sh
# '';
"envs.sh mirror" = pkgs.writers.writeDash "envs-mirror" ''
${pkgs.curl}/bin/curl -F "url=$(${pkgs.coreutils}/bin/cat)" https://envs.sh
'';
"envs.sh shorten" = pkgs.writers.writeDash "envs-shorten" ''
${pkgs.curl}/bin/curl -F "shorten=$(${pkgs.coreutils}/bin/cat)" https://envs.sh
'';
"ix.io" = pkgs.writers.writeDash "ix.io" ''
${pkgs.curl}/bin/curl -fSs -F 'f:1=<-' ix.io
'';
@@ -26,15 +36,11 @@
${pkgs.coreutils}/bin/tr '[A-Za-z]' '[N-ZA-Mn-za-m]'
'';
"ipa" = pkgs.writers.writeDash "ipa" ''
${pkgs.scripts.ipa}/bin/ipa
${scripts.ipa}/bin/ipa
'';
"betacode" = pkgs.writers.writeDash "betacode" ''
${pkgs.scripts.betacode}/bin/betacode
${scripts.betacode}/bin/betacode
'';
"devanagari" = pkgs.writers.writeDash "devanagari" ''
${pkgs.scripts.devanagari}/bin/devanagari
'';
"avesta" = pkgs.writeScript "avesta" (builtins.readFile <niveum/packages/scripts/avesta.sed>);
"curl" = pkgs.writers.writeDash "curl" ''
${pkgs.curl}/bin/curl -fSs "$(${pkgs.coreutils}/bin/cat)"
'';
@@ -55,7 +61,6 @@ in {
displayManager.defaultSession = "none+i3";
windowManager.i3 = {
enable = true;
package = pkgs.i3-gaps;
};
};
@@ -95,6 +100,10 @@ in {
criteria = {class = "fzfmenu";};
command = "floating enable";
}
{
criteria = {class = ".*";};
command = "border pixel 2";
}
{
criteria = {class = "mpv";};
command = lib.strings.concatStringsSep ", " [
@@ -107,7 +116,6 @@ in {
}
];
};
gaps.inner = 4;
floating = {
titlebar = false;
border = 1;
@@ -121,9 +129,9 @@ in {
focused =
scheme
// {
border = colours.cyan.bright;
indicator = colours.cyan.bright;
childBorder = colours.cyan.bright;
border = colours.blue.bright;
indicator = colours.blue.bright;
childBorder = colours.blue.bright;
};
unfocused =
scheme
@@ -155,7 +163,7 @@ in {
names = ["Monospace" "Font Awesome 6 Free"];
size = 8.0;
};
mode = "hide"; # "dock"
mode = "dock"; # "hide";
position = "bottom";
colors = rec {
background = colours.background;
@@ -196,10 +204,10 @@ in {
"${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}+Shift+x" = "exec ${move-to-new-workspace}";
"${modifier}+b" = "workspace prev";
"${modifier}+n" = "workspace next";
"${modifier}+x" = "exec --no-startup-id ${new-workspace}";
"${modifier}+x" = "exec ${new-workspace}";
"${modifier}+Shift+c" = "reload";
"${modifier}+Shift+q" = "kill";
@@ -227,10 +235,10 @@ in {
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
"${modifier}+0" = "exec ${pkgs.scripts.menu-calc}/bin/=";
"${modifier}+0" = "exec ${scripts.menu-calc}/bin/=";
"${modifier}+Shift+w" = "exec ${pkgs.scripts.k-lock}/bin/k-lock";
"${modifier}+d" = "exec ${pkgs.writers.writeDash "run" ''exec ${pkgs.rofi}/bin/rofi -modi run,window,ssh,filebrowser -show run''}";
"${modifier}+Shift+w" = "exec ${scripts.k-lock}/bin/k-lock";
"${modifier}+d" = "exec ${pkgs.writers.writeDash "run" ''exec rofi -modi run,ssh,window -show run''}";
"${modifier}+Shift+d" = "exec ${
pkgs.writers.writeDash "notemenu" ''
set -efu
@@ -242,37 +250,38 @@ in {
note_file=$({
echo diary/$(date -I).md
echo diary/$(date -I -d yesterday).md
find . -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2
find . ! -name '.*' -type f -printf "%T@ %p\n" | sort --reverse --numeric-sort | cut --delimiter=" " --fields=2-
} | rofi -dmenu -i -p 'notes')
if test "$note_file"
then
i3-sensible-terminal -e "$EDITOR" "$note_file"
alacritty --working-directory ~/notes -e "$EDITOR" "$note_file"
fi
''
}";
"${modifier}+p" = "exec --no-startup-id ${pkgs.rofi-pass}/bin/rofi-pass";
"${modifier}+u" = "exec ${pkgs.scripts.unicodmenu}/bin/unicodmenu";
"${modifier}+p" = "exec rofi-pass";
"${modifier}+Shift+p" = "exec rofi-pass --insert";
"${modifier}+u" = "exec ${scripts.unicodmenu}/bin/unicodmenu";
"${modifier}+F6" = "exec ${pkgs.xorg.xkill}/bin/xkill";
"${modifier}+F7" = "exec ${pkgs.scripts.showkeys-toggle}/bin/showkeys-toggle";
"${modifier}+F7" = "exec ${scripts.showkeys-toggle}/bin/showkeys-toggle";
"${modifier}+F8" = "exec switch-theme toggle";
"${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";
"XF86AudioLowerVolume" = "exec ${pkgs.pamixer}/bin/pamixer -d 5";
"XF86AudioMute" = "exec ${pkgs.pamixer}/bin/pamixer -t";
"XF86AudioRaiseVolume" = "exec ${pkgs.pamixer}/bin/pamixer -i 5";
"XF86Calculator" = "exec ${pkgs.st}/bin/st -c floating -e ${pkgs.bc}/bin/bc";
"XF86AudioPause" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl pause";
"XF86AudioPlay" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl play-pause";
"XF86AudioNext" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl next";
"XF86AudioPrev" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl previous";
"XF86AudioStop" = "exec --no-startup-id ${pkgs.playerctl}/bin/playerctl stop";
"XF86ScreenSaver" = "exec ${pkgs.scripts.k-lock}/bin/k-lock";
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl pause";
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
"XF86AudioStop" = "exec ${pkgs.playerctl}/bin/playerctl stop";
"XF86ScreenSaver" = "exec ${scripts.k-lock}/bin/k-lock";
"XF86Display" = "exec ${pkgs.scripts.dmenurandr}/bin/dmenurandr";
"XF86Display" = "exec ${scripts.dmenurandr}/bin/dmenurandr";
# key names detected with xorg.xev:
# XF86WakeUp (fn twice)

View File

@@ -10,6 +10,10 @@
gr = "polytonic";
ru = "phonetic";
ara = "buckwalter";
cop = "";
ave = "";
"in" = "san-kagapa";
il = "phonetic";
};
defaultLanguage = "de";
in {
@@ -19,9 +23,30 @@ in {
# T3: https://upload.wikimedia.org/wikipedia/commons/a/a9/German-Keyboard-Layout-T3-Version1-large.png
# buckwalter: http://www.qamus.org/transliteration.htm
xkbVariant = "T3";
xkbOptions =
commaSep xkbOptions;
xkbOptions = commaSep xkbOptions;
libinput.enable = true;
xkbDir = pkgs.symlinkJoin {
name = "x-keyboard-directory";
paths = [
"${pkgs.xkeyboard_config}/etc/X11/xkb"
(pkgs.linkFarm "custom-x-keyboards" [
{
name = "symbols/cop";
path = pkgs.fetchurl {
url = "http://www.moheb.de/download/cop";
sha256 = "1l0h6aq536hyinrh0i0ia355y229bjrlibii0sya5bmqh46vycia";
};
}
{
name = "symbols/ave";
path = pkgs.fetchurl {
url = "https://blog.simos.info/wp-content/uploads/2010/06/avestan.txt";
sha256 = "192zmmm3gxyhim39dsax7r87gsay2w5v2xkhwmvsfipjb60hwp5g";
};
}
])
];
};
};
console.keyMap = "de";

View File

@@ -16,7 +16,22 @@
password = lib.fileContents <secrets/nextcloud-fysi/password>;
};
in {
environment.systemPackages = [pkgs.khal pkgs.vdirsyncer pkgs.khard pkgs.todoman];
environment.systemPackages = [
pkgs.khal
pkgs.vdirsyncer
pkgs.khard
pkgs.todoman
(pkgs.writers.writeDashBin "todo-procrastinate" ''
[ $# -eq 1 ] || {
echo "Usage: $0 TODO_ID" >&2
exit 1
}
todo_id=$1
new_timestamp=$(${pkgs.todoman}/bin/todo --porcelain show "$todo_id" | ${pkgs.jq}/bin/jq '.due + 24 * 60 * 60')
new_date=$(${pkgs.coreutils}/bin/date +"%Y-%m-%d %H:%M" -d "@$new_timestamp")
${pkgs.todoman}/bin/todo edit "$todo_id" --due "$new_date"
'')
];
systemd.user.services.vdirsyncer = {
enable = true;

19
configs/mastodon-bot.nix Normal file
View File

@@ -0,0 +1,19 @@
{pkgs, ...}: {
systemd.services.imaginary-illuminations = {
enable = false;
wants = ["network-online.target"];
serviceConfig = {
User = "kfm";
Group = "users";
WorkingDirectory = "/home/kfm/cloud/Seafile/Documents/Media/imaginary-illuminations";
Restart = "on-failure";
RestartSec = "15s";
};
startAt = "7:00";
script = ''
${pkgs.deno}/bin/deno run -A post.ts
'';
};
systemd.timers.imaginary-illuminations.timerConfig.RandomizedDelaySec = "14h";
}

View File

@@ -10,15 +10,15 @@
"image/jpeg" = "nsxiv.desktop";
"image/png" = "nsxiv.desktop";
"image/vnd.djvu+multipage" = "org.pwmt.zathura.desktop";
"text/html" = "brave-browser.desktop";
"text/html" = "firefox.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";
"x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/mailto" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
"x-scheme-handler/webcal" = "firefox.desktop";
"inode/directory" = "pcmanfm.desktop";
};
};

View File

@@ -14,6 +14,7 @@
nginx.enable = false;
node = {
enable = true;
openFirewall = true;
enabledCollectors = [
"conntrack"
"diskstats"
@@ -38,8 +39,6 @@
};
};
networking.firewall.allowedTCPPorts = [config.services.prometheus.exporters.node.port];
systemd.services.promtail = {
description = "Promtail service for Loki";
wantedBy = ["multi-user.target"];

View File

@@ -4,7 +4,8 @@
config,
...
}: let
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
scripts = import <niveum/packages/scripts> {inherit pkgs lib;};
swallow = command: "${scripts.swallow}/bin/swallow ${command}";
in {
environment.shellAliases.smpv = swallow "mpv";
@@ -22,6 +23,7 @@ in {
ytdl-raw-options = lib.concatStringsSep "," [''sub-lang="de,en"'' "write-sub=" "write-auto-sub="];
screenshot-template = "%F-%wH%wM%wS-%#04n";
script-opts = "ytdl_hook-ytdl_path=${pkgs.yt-dlp}/bin/yt-dlp";
ao = "pulse"; # no pipewire for me :(
};
bindings = {
"Alt+RIGHT" = "add video-rotate 90";

View File

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

View File

@@ -44,12 +44,14 @@
vim-repeat
vim-sensible
vim-surround
(pkgs.vimUtils.buildVimPlugin {
name = "vim-dim-1.1.0";
(pkgs.vimUtils.buildVimPlugin rec {
pname = "vim-dim";
version = "1.1.0";
name = "${pname}-${version}";
src = pkgs.fetchFromGitHub {
owner = "jeffkreeftmeijer";
repo = "vim-dim";
rev = "1.1.0";
repo = pname;
rev = version;
sha256 = "sha256-lyTZUgqUEEJRrzGo1FD8/t8KBioPrtB3MmGvPeEVI/g=";
};
})

View File

@@ -1,17 +1,42 @@
{
pkgs,
config,
lib,
...
}: let
scripts = import <niveum/packages/scripts> {inherit pkgs lib;};
ytdl-format = "'bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best'";
youtube-download = "${pkgs.ts}/bin/ts ${pkgs.yt-dlp}/bin/yt-dlp -f ${ytdl-format} --add-metadata";
newsboat-home = "${config.users.users.me.home}/cloud/Seafile/Documents/newsboat";
linkhandler-bin = "${pkgs.scripts.linkhandler}/bin/linkhandler";
linkhandler = pkgs.writers.writeDash "linkhandler" ''
# Feed script a url or file location.
# If an image, it will view in sxiv,
# if a video or gif, it will view in mpv
# if a music file or pdf, it will download,
# otherwise it opens link in browser.
# If no url given. Opens browser. For using script as $BROWSER.
[ -z "$1" ] && { "$BROWSER"; exit; }
case "$1" in
*mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*bitchute.com*|*videos.lukesmith.xyz*|*odysee.com*)
setsid -f ${pkgs.mpv}/bin/mpv -quiet "$1" >/dev/null 2>&1 ;;
*png|*jpg|*jpe|*jpeg|*gif)
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///")" && sxiv -a "/tmp/$(echo "$1" | sed "s/.*\///")" >/dev/null 2>&1 & ;;
*mp3|*flac|*opus|*mp3?source*)
setsid -f tsp curl -LO "$1" >/dev/null 2>&1 ;;
*)
if [ -f "$1" ]; then "$TERMINAL" -e "$EDITOR" "$1"
else setsid -f "$BROWSER" "$1" >/dev/null 2>&1; fi ;;
esac
'';
newsboat-config = pkgs.writeText "config" ''
auto-reload no
reload-threads 8
prepopulate-query-feeds yes
# dont keep a search history
@@ -21,12 +46,12 @@
text-width 85
external-url-viewer "${pkgs.urlscan}/bin/urlscan -dc -r '${linkhandler-bin} {}'"
browser ${linkhandler-bin}
external-url-viewer "${pkgs.urlscan}/bin/urlscan -dc -r '${linkhandler} {}'"
browser ${linkhandler}
macro , open-in-browser
macro c set browser "${pkgs.xsel}/bin/xsel -b <<<" ; open-in-browser ; set browser ${linkhandler-bin}
macro v set browser "${pkgs.utillinux}/bin/setsid -f ${pkgs.mpv}/bin/mpv" ; open-in-browser ; set browser ${linkhandler-bin}
macro y set browser "${youtube-download}" ; open-in-browser ; set browser ${linkhandler-bin}
macro c set browser "${pkgs.xsel}/bin/xsel -b <<<" ; open-in-browser ; set browser ${linkhandler}
macro v set browser "${pkgs.util-linux}/bin/setsid -f ${pkgs.mpv}/bin/mpv" ; open-in-browser ; set browser ${linkhandler}
macro y set browser "${youtube-download}" ; open-in-browser ; set browser ${linkhandler}
bind-key j down
bind-key k up
@@ -61,16 +86,15 @@
color listfocus blue default
color listfocus_unread blue default bold
color info red default bold
urls-source "miniflux"
miniflux-url "https://feed.kmein.de"
miniflux-login "kfm"
miniflux-password "${lib.strings.fileContents <secrets/miniflux/password>}"
'';
newsboat-sql = "${pkgs.sqlite}/bin/sqlite3 ${newsboat-home}/cache.db";
in {
nixpkgs.config.packageOverrides = pkgs: {
newsboat = pkgs.writers.writeDashBin "newsboat" ''
${pkgs.newsboat}/bin/newsboat -C ${newsboat-config} -c ${newsboat-home}/cache.db -u ${newsboat-home}/urls "$@"
'';
};
environment.systemPackages = [
pkgs.newsboat
(pkgs.writers.writeDashBin "newsboat-unread-count" ''

View File

@@ -9,16 +9,5 @@
nix = {
package = pkgs.nixUnstable;
extraOptions = "experimental-features = nix-command flakes";
settings = {
substituters = [
"http://cache.prism.r"
"https://cache.nixos.org/"
];
trusted-public-keys = [
"cache.prism-1:+S+6Lo/n27XEtvdlQKuJIcb1yO5NUqUCE2lolmTgNJU="
"cache.prism-2:YwmCm3/s/D+SxrPKN/ETjlpw/219pNUbpnluatp6FKI="
"hydra.nixos.org-1:CNHJZBh9K4tP3EKF6FkkgeVYsS3ohTl+oS0Qa8bezVs="
];
};
};
}

View File

@@ -3,11 +3,13 @@
lib,
...
}: let
hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {};
hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {utillinux = pkgs.util-linux;};
worldradio = pkgs.callPackage <niveum/packages/worldradio.nix> {};
menstruation = pkgs.callPackage <menstruation-backend> {};
pandoc-doc = pkgs.callPackage <niveum/packages/man/pandoc.nix> {};
scripts = import <niveum/packages/scripts> {inherit pkgs lib;};
zoteroStyle = {
name,
sha256,
@@ -72,7 +74,7 @@ in {
dnsutils
# FILE MANAGERS
lf
pcmanfm
cinnamon.nemo
# MEDIA
ffmpeg
imagemagick
@@ -94,16 +96,16 @@ in {
file # determine file type
dos2unix
genpass # generate passwords
ncdu # ncurses disk usage
gdu # ncurses disk usage (ncdu is broken)
rmlint # remove duplicate files
python3Packages.jsonschema # json validation
jq # json toolkit
pup # html toolkit
htmlq
xsv # csv toolkit
xmlstarlet # xml toolkit
fq # toolkit for yaml, xml and binaries
man-pages
posix_man_pages
man-pages-posix
tree
exfat # to mount windows drives
parallel # for parallel, since moreutils shadows task spooler
@@ -132,7 +134,6 @@ in {
pdftk # pdf toolkit
mupdf
poppler_utils # pdf toolkit
foxitreader # for viewing pdf annotations
okular # the word is nucular
xournalpp # for annotating pdfs
pdfpc # presenter console for pdf slides
@@ -141,6 +142,7 @@ in {
espeak
bc # calculator
pari # gp -- better calculator
rink # unit converter
scripts.auc
scripts.stackoverflow
scripts.infschmv
@@ -182,6 +184,8 @@ in {
scripts.trans
scripts.mpv-radio
# kmein.slide
termdown
scripts.alarm
scripts.tolino-screensaver
scripts.rfc
scripts.tag
@@ -233,7 +237,7 @@ in {
py.pygments
py.schema
]))
python3Packages.poetry
# python3Packages.poetry
html-tidy
nodePackages.csslint
@@ -241,6 +245,7 @@ in {
nodePackages.prettier
nodePackages.typescript
nodePackages.yarn
deno # better node.js
nodejs
nodePackages.javascript-typescript-langserver
texlive.combined.scheme-full

12
configs/picom.nix Normal file
View File

@@ -0,0 +1,12 @@
{
services.picom = {
enable = true;
activeOpacity = 1;
fade = true;
fadeDelta = 5;
inactiveOpacity = 0.9;
shadow = true;
menuOpacity = 0.9;
shadowOpacity = 0.3;
};
}

View File

@@ -4,8 +4,13 @@
...
}: {
imports = [
<niveum/modules/retiolum.nix>
<retiolum/modules/retiolum>
];
networking.hosts = {"42:0:ca48:f98f:63d7:31ce:922b:245d" = ["go"];};
services.tinc.networks.retiolum = {
rsaPrivateKeyFile = toString <system-secrets/retiolum.key>;
ed25519PrivateKeyFile = toString <system-secrets/retiolum.ed25519>;
};
}

View File

@@ -8,6 +8,19 @@ in {
home-manager.users.me.programs.rofi = {
enable = true;
font = "Monospace 10";
theme = "${pkgs.rofi}/share/rofi/themes/Arc-Dark.rasi";
theme = "${pkgs.rofi}/share/rofi/themes/Arc.rasi";
pass = {
enable = true;
extraConfig = ''
_pwgen() {
${pkgs.genpass}/bin/genpass "$@"
}
USERNAME_field='login'
default_user2=kmein
help_color="#FF0000"
''; # help_color set by https://github.com/mrossinek/dotfiles/commit/13fc5f24caa78c8f20547bf473266879507f13bf
};
plugins = [pkgs.rofi-calc];
};
}

View File

@@ -7,4 +7,10 @@
fonts.fontconfig.enable = false;
nix.gc.automatic = true;
nix.optimise.automatic = true;
services.journald.extraConfig = "SystemMaxUse=500M";
# https://webzine.snowflake.ovh/issue-001.html -- garbage collect when less then 1 GB is available, make 3 GB fee
nix.extraOptions = ''
min-free = 1073741824
max-free = 3221225472
'';
}

45
configs/sound.nix Normal file
View File

@@ -0,0 +1,45 @@
{pkgs, ...}: {
sound.enable = true;
# realtime audio for pulseaudio
security.rtkit.enable = true;
services.pipewire = {
enable = false;
systemWide = false;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
jack.enable = true;
};
hardware.pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
# copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine
zeroconf.discovery.enable = true;
extraConfig = ''
load-module ${
toString [
"module-tunnel-sink-new"
"server=zaatar.r"
"sink_name=zaatar"
"channels=2"
"rate=44100"
]
}
'';
};
users.users.me.extraGroups = ["pipewire" "audio"];
environment.systemPackages = [
pkgs.pavucontrol
pkgs.ncpamixer
pkgs.pamixer
pkgs.pulsemixer
pkgs.pulseaudio # for pactl
];
}

View File

@@ -7,7 +7,7 @@
inherit (import <niveum/lib>) sshPort kieran;
externalNetwork = import <niveum/lib/external-network.nix>;
sshIdentity = name: "${config.users.users.me.home}/.ssh/${name}";
ssh-passphease = lib.strings.fileContents <system-secrets/ssh/passphrase>;
ssh-passphrase = lib.strings.fileContents <system-secrets/ssh/passphrase>;
in {
services.xserver.displayManager.sessionCommands = toString (pkgs.writeScript "ssh-add" ''
#!${pkgs.expect}/bin/expect -f
@@ -24,7 +24,7 @@ in {
home-manager.users.me.programs.ssh = {
enable = true;
matchBlocks = {
matchBlocks = rec {
"github.com" = {
hostname = "ssh.github.com";
port = 443;
@@ -49,6 +49,11 @@ in {
user = "root";
port = sshPort;
};
tabula = {
hostname = "tabula.r";
user = "root";
port = sshPort;
};
manakish = {
hostname = "manakish.r";
user = "kfm";
@@ -67,11 +72,14 @@ in {
hostname = "135.181.85.233";
user = "root";
};
"cms-dev.woc2023.app".identityFile = sshIdentity "fysiweb";
"cms-master.woc2023.app".identityFile = sshIdentity "fysiweb";
"fysi-dev1" = {
hostname = "94.130.229.139";
user = "root";
identityFile = sshIdentity "fysiweb";
};
${fysi-dev1.hostname} = fysi-dev1;
"fysi-shared0" = {
hostname = "49.12.205.235";
user = "root";

View File

@@ -295,7 +295,7 @@ in {
// dictionaries.englishGerman));
environment.systemPackages = [
pkgs.goldendict
# pkgs.goldendict
(makeStardict "lsj" dictionaries.classics)
(makeStardict "sa" dictionaries.sanskrit)
(makeStardict "oed" dictionaries.oed)

View File

@@ -44,7 +44,7 @@
'';
in {
niveum.telegramBots.transits = {
enable = false;
enable = true;
time = "*:0/1";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = ["-1001796440545"];
@@ -52,7 +52,7 @@ in {
now=$(${pkgs.coreutils}/bin/date +%_H:%M | ${pkgs.gnused}/bin/sed 's/^\s*//')
date=$(${pkgs.coreutils}/bin/date +'%m %d %Y')
{
${unstable.astrolog}/bin/astrolog -qd $date -zN Berlin -Yt -Yd -d -R Uranus Neptune Pluto "North Node"
${unstable.astrolog}/bin/astrolog -qd $date -zN Berlin -Yt -Yd -d -R Uranus Neptune Pluto "North Node" -A 2
${unstable.astrolog}/bin/astrolog -Yt -Yd -q 10 22 1999 6:32 -zN Kassel -td $date -R Uranus Neptune Pluto "North Node"
} | ${toSymbols} | ${pkgs.coreutils}/bin/sort -n | ${pkgs.gnugrep}/bin/grep "^$now" || :
'');

View File

@@ -0,0 +1,35 @@
{
pkgs,
lib,
...
}: let
celan = pkgs.fetchzip {
url = "http://c.krebsco.de/celan.tar.gz";
sha256 = "sha256-nA+EwAH2vkeolsy9AoPLEMt1uGKDZe/aPrS95CZvuus=";
};
in {
niveum.telegramBots.celan = {
enable = true;
time = "08:00";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = ["@PaulCelan"];
command = toString (pkgs.writers.writeDash "random-celan" ''
cd ${celan}
poem="$(${pkgs.findutils}/bin/find . -type f | ${pkgs.coreutils}/bin/shuf -n1)"
source="$(${pkgs.coreutils}/bin/dirname "$poem" | ${pkgs.gnused}/bin/sed 's#^\./##;s/[-_]/ /g;s!/! !g;s/0\([0-9]\+\)/\1/g')"
cat "$poem"
echo
printf "Aus: %s\n" "$source"
'');
};
systemd.timers.telegram-bot-celan.timerConfig.RandomizedDelaySec = "10h";
niveum.passport.services = [
{
title = "Paul Celan Bot";
description = "sends a random poem by Paul Celan to Telegram.";
link = "https://t.me/PaulCelan";
}
];
}

View File

@@ -22,6 +22,7 @@ in {
./smyth.nix
./nachtischsatan.nix
./tlg-wotd.nix
./celan.nix
<niveum/modules/telegram-bot.nix>
];

View File

@@ -5,7 +5,7 @@
}: {
niveum.telegramBots.smyth = {
enable = true;
time = "06/6:00";
time = "08:00";
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
chatIds = ["@HerbertWeirSmyth"];
command = toString (pkgs.writers.writeDash "random-smyth" ''
@@ -25,7 +25,7 @@
'');
};
systemd.timers.telegram-bot-smyth.timerConfig.RandomizedDelaySec = "3h";
systemd.timers.telegram-bot-smyth.timerConfig.RandomizedDelaySec = "10h";
niveum.passport.services = [
{

View File

@@ -12,7 +12,7 @@
${pkgs.curl}/bin/curl -sSL http://stephanus.tlg.uci.edu/Iris/Wotd \
| ${pkgs.recode}/bin/recode html..utf8 \
| ${pkgs.jq}/bin/jq -r '
"*\(.word)* '\'''\(.definition | rtrimstr(" "))'\'''\n\nFirst occurrence: \(.firstOccurrence)\nNumber of occurrences: \(.totalOccurrences)"
"*\(.word)* '\'''\(.definition | sub("<.*>"; "") | rtrimstr(" "))'\'''\n\nFirst occurrence: \(.firstOccurrence)\nNumber of occurrences: \(.totalOccurrences)"
'
'');
parseMode = "Markdown";

View File

@@ -7,6 +7,15 @@
# nothing to see here
'';
environment.systemPackages = [pkgs.atuin];
environment.variables.ATUIN_CONFIG_DIR = toString (pkgs.writeTextDir "/config.toml" ''
auto_sync = true
update_check = false
sync_address = "http://zaatar.r:8888"
sync_frequency = 0
style = "compact"
'');
programs.zsh = let
zsh-completions = pkgs.fetchFromGitHub {
owner = "zsh-users";
@@ -14,12 +23,6 @@
rev = "cf565254e26bb7ce03f51889e9a29953b955b1fb";
sha256 = "1yf4rz99acdsiy0y1v3bm65xvs2m0sl92ysz0rnnrlbd5amn283l";
};
zsh-history-substring-search = pkgs.fetchFromGitHub {
owner = "zsh-users";
repo = "zsh-history-substring-search";
rev = "aae3388491c2312c4efb2e86bcb999927bb2900e";
sha256 = "0lgmq1xcccnz5cf7vl0r0qj351hwclx9p80cl0qczxry4r2g5qaz";
};
in {
enable = true;
enableCompletion = true;
@@ -54,12 +57,6 @@
autoload -U zmv run-help
fpath=(${zsh-completions}/src $fpath)
source ${zsh-history-substring-search}/zsh-history-substring-search.zsh
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
bindkey -M vicmd 'k' history-substring-search-up
bindkey -M vicmd 'j' history-substring-search-down
'';
promptInit = with config.niveum; ''
autoload -Uz vcs_info
@@ -71,6 +68,13 @@
zstyle ':vcs_info:*' formats "%c%u%F{cyan}%b%f"
zstyle ':vcs_info:*' actionformats "(%a) %c%u%F{cyan}%b%f"
# atuin distributed shell history
export ATUIN_NOBIND="true" # disable all keybdinings of atuin
eval "$(atuin init zsh)"
bindkey '^r' _atuin_search_widget # bind ctrl+r to atuin
# use zsh only session history
fc -p
precmd () {
vcs_info
RPROMPT="$vcs_info_msg_0_"

101
flake.lock generated
View File

@@ -2,11 +2,11 @@
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
@@ -23,11 +23,11 @@
"utils": "utils"
},
"locked": {
"lastModified": 1661573386,
"narHash": "sha256-pBEg8iY00Af/SAtU2dlmOAv+2x7kScaGlFRDjNoVJO8=",
"lastModified": 1676367705,
"narHash": "sha256-un5UbRat9TwruyImtwUGcKF823rCEp4fQxnsaLFL7CM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "d89bdff445eadff03fe414e9c30486bc8166b72b",
"rev": "da72e6fc6b7dc0c3f94edbd310aae7cd95c678b5",
"type": "github"
},
"original": {
@@ -63,11 +63,11 @@
"menstruation-backend": {
"flake": false,
"locked": {
"lastModified": 1649545504,
"narHash": "sha256-TVm3246ML7gWPeGm+bdb+Qo8o/7nve7sQ2hBdCZm3z8=",
"lastModified": 1667816906,
"narHash": "sha256-VdckYVSQZfqThPb06Y5TGSI+kkibgM/G9pH5SQHIybI=",
"owner": "kmein",
"repo": "menstruation.rs",
"rev": "d9f3c6d53542fd7c7ed191e37cf4e342d4a47bcb",
"rev": "95c495d453c35f20a6a5641a88a862c668404acf",
"type": "github"
},
"original": {
@@ -79,11 +79,11 @@
"menstruation-telegram": {
"flake": false,
"locked": {
"lastModified": 1634815642,
"narHash": "sha256-q1OTMx5ayNu9ppHJBDUie/ow+BcA5DXnHEm11EY+C4E=",
"lastModified": 1667816918,
"narHash": "sha256-yQSl0iKqHm7qFLELY8e7OzRRdnqSBbzJmQIYgkXlJpQ=",
"owner": "kmein",
"repo": "menstruation-telegram",
"rev": "a34555cf46f02157718b0565b5456348fff54181",
"rev": "828872cf9c425442705a95019eceee397bc1c03f",
"type": "github"
},
"original": {
@@ -95,11 +95,11 @@
"nix-writers": {
"flake": false,
"locked": {
"lastModified": 1554228333,
"narHash": "sha256-hG/PlcCvCQhNcU55NpHfATkyH9k6cZmO7uvBoJjasXU=",
"lastModified": 1675197881,
"narHash": "sha256-gYtduNF59yqv4BgW4fC+tZHKE7cpOkZf+Y34psyFO5U=",
"ref": "refs/heads/master",
"rev": "c528cf970e292790b414b4c1c8c8e9d7e73b2a71",
"revCount": 32,
"rev": "d1424777b5f2e12cbd80efd1b55335dcba7c32bd",
"revCount": 38,
"type": "git",
"url": "https://cgit.krebsco.de/nix-writers"
},
@@ -110,27 +110,27 @@
},
"nixos-stable": {
"locked": {
"lastModified": 1661520432,
"narHash": "sha256-9z+WDeXiu3hobvSsL0SbHDx4s+kFmm8eussySuX4zCM=",
"lastModified": 1676375384,
"narHash": "sha256-6HI3jZiuJX+KLz05cocYy2mBAWlISEKHU84ftYfxHZ8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f11e12ac6af528c1ba12426ce83cee26f21ceafd",
"rev": "c43f676c938662072772339be6269226c77b51b8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.05",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixos-unstable": {
"locked": {
"lastModified": 1660305968,
"narHash": "sha256-r0X1pZCSEA6mzt5OuTA7nHuLmvnbkwgpFAh1iLIx4GU=",
"lastModified": 1676300157,
"narHash": "sha256-1HjRzfp6LOLfcj/HJHdVKWAkX9QRAouoh6AjzJiIerU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c4a0efdd5a728e20791b8d8d2f26f90ac228ee8d",
"rev": "545c7a31e5dedea4a6d372712a18e00ce097d462",
"type": "github"
},
"original": {
@@ -143,11 +143,11 @@
"recht": {
"flake": false,
"locked": {
"lastModified": 1619583518,
"narHash": "sha256-3eFw6xWue9cvPxXq1ROq32ecvPOmqOedgQhyOr7N9iE=",
"lastModified": 1669719044,
"narHash": "sha256-WsLWlTM2Hrurj9kVajybIOavV9QPYiJweMCOQR6h+YI=",
"owner": "kmein",
"repo": "recht",
"rev": "d551afed23122bb3106e59eb2274394ec5555048",
"rev": "7c15b13328fb5cee01012c488ff235ee730cac70",
"type": "github"
},
"original": {
@@ -157,19 +157,18 @@
}
},
"retiolum": {
"flake": false,
"locked": {
"lastModified": 1660680907,
"narHash": "sha256-D6XkykgU1BiDAnnFG9NwSqBRKCZAHK+2+Ri2/m9rzo8=",
"owner": "krebs",
"repo": "retiolum",
"rev": "c4d6b07be29b3b9267027ed25792a2cb350459d5",
"type": "github"
"lastModified": 1676473689,
"narHash": "sha256-TGQbsiIojBj4DvGhhkI3i2dq9NmU2Vkt+i7Rw2U/BEg=",
"ref": "refs/heads/master",
"rev": "30152917194d6e54ce68e45b499323356db3ae7c",
"revCount": 283,
"type": "git",
"url": "https://git.thalheim.io/Mic92/retiolum"
},
"original": {
"owner": "krebs",
"repo": "retiolum",
"type": "github"
"type": "git",
"url": "https://git.thalheim.io/Mic92/retiolum"
}
},
"root": {
@@ -195,11 +194,11 @@
"scripts": {
"flake": false,
"locked": {
"lastModified": 1662493500,
"narHash": "sha256-EdAEKDQ6z7oinqQ28ELE3+taJ106DgmhNJt/rpqHJic=",
"lastModified": 1675238486,
"narHash": "sha256-Hs9NKK0UFaNqrui2VauBnMnV/14U3eNWaI12EmVYXWY=",
"owner": "kmein",
"repo": "scripts",
"rev": "51c641ac3c1100d80313696663db70c2eb3698dc",
"rev": "5cefa5f112e7fe54e0302b7bc33bc06e1f762002",
"type": "github"
},
"original": {
@@ -211,17 +210,17 @@
"stockholm": {
"flake": false,
"locked": {
"lastModified": 1661246925,
"narHash": "sha256-hGNCF4m3SuVogqoipmJzNIKoh03S/SMnO5oMHgfHWjA=",
"lastModified": 1676206058,
"narHash": "sha256-httLH/By88YYpnfYAEnke2gnLiayMlcznia0aDNqK28=",
"ref": "refs/heads/master",
"rev": "d1fa957ed5bf60767c83c96135f9142f6c96ea50",
"revCount": 10749,
"rev": "5234e1c7eaf478bc4ebd0edb48547168e91eba02",
"revCount": 11364,
"type": "git",
"url": "https://cgit.lassul.us/stockholm"
"url": "https://cgit.krebsco.de/stockholm"
},
"original": {
"type": "git",
"url": "https://cgit.lassul.us/stockholm"
"url": "https://cgit.krebsco.de/stockholm"
}
},
"telebots": {
@@ -243,11 +242,11 @@
"tinc-graph": {
"flake": false,
"locked": {
"lastModified": 1653080212,
"narHash": "sha256-BcfppAuVNp0hMcrMG/ZxE4juSrdQbJSUIA0eHS1/Wxo=",
"lastModified": 1666162569,
"narHash": "sha256-7ebWs/ryDebUMONkn6dPckNnUGrEuPQScoY+O/+vo+Q=",
"owner": "kmein",
"repo": "tinc-graph",
"rev": "ea0ef2e5542684d1d8e34a626cb9295dec33e70d",
"rev": "72a4b305fcb49cfd6d456103cda45888a6b34bbe",
"type": "github"
},
"original": {
@@ -290,11 +289,11 @@
},
"utils": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {

View File

@@ -2,7 +2,7 @@
description = "niveum: packages, modules, systems";
inputs = {
nixos-stable.url = "github:NixOS/nixpkgs/nixos-22.05";
nixos-stable.url = "github:NixOS/nixpkgs/nixos-22.11";
nixos-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
@@ -15,6 +15,7 @@
inputs.nixpkgs.follows = "nixos-stable";
inputs.flake-utils.follows = "flake-utils";
};
retiolum.url = "git+https://git.thalheim.io/Mic92/retiolum";
# legacy
menstruation-backend = {
@@ -33,16 +34,12 @@
url = "github:kmein/recht";
flake = false;
};
retiolum = {
url = "github:krebs/retiolum";
flake = false;
};
scripts = {
url = "github:kmein/scripts";
flake = false;
};
stockholm = {
url = "git+https://cgit.lassul.us/stockholm";
url = "git+https://cgit.krebsco.de/stockholm";
flake = false;
};
telebots = {
@@ -129,8 +126,8 @@
nixos-unstable = github "NixOS/nixpkgs";
nix-writers = "https://cgit.krebsco.de/nix-writers";
recht = github "kmein/recht";
retiolum = github "krebs/retiolum";
stockholm = "https://cgit.lassul.us/stockholm";
retiolum = "https://git.thalheim.io/Mic92/retiolum";
stockholm = "https://cgit.krebsco.de/stockholm";
scripts = github "kmein/scripts";
telebots = github "kmein/telebots";
tinc-graph = github "kmein/tinc-graph";
@@ -168,13 +165,14 @@
if externalNetwork ? name
then externalNetwork.${name}
else "${name}.r";
unstable = name == "kabsa" || name == "manakish";
unstable = false; # name == "kabsa" || name == "manakish";
sources =
["nix-writers" "nixpkgs" "retiolum" "stockholm"]
++ {
zaatar = ["traadfri"];
zaatar = ["traadfri" "nixos-unstable"];
ful = [];
tahina = [];
tabula = [];
kabsa = ["traadfri" "nixos-unstable" "home-manager" "menstruation-backend" "recht"];
manakish = ["traadfri" "nixos-unstable" "home-manager" "menstruation-backend" "recht"];
makanek = ["nixos-unstable" "menstruation-telegram" "menstruation-backend" "scripts" "telebots" "tinc-graph"];

View File

@@ -1,37 +1,37 @@
rec {
black = {
bright = "#4b4b4b";
dark = "#242424";
bright = "#282c34";
dark = "#282c34";
};
red = {
bright = "#fc1c18";
dark = "#d71c15";
bright = "#e06c75";
dark = "#e06c75";
};
green = {
bright = "#6bc219";
dark = "#5aa513";
bright = "#98c379";
dark = "#98c379";
};
yellow = {
bright = "#fec80e";
dark = "#fdb40c";
bright = "#e5c07b";
dark = "#e5c07b";
};
blue = {
bright = "#0955ff";
dark = "#063b8c";
bright = "#61afef";
dark = "#61afef";
};
magenta = {
bright = "#fb0050";
dark = "#e40038";
bright = "#c678dd";
dark = "#c678dd";
};
cyan = {
bright = "#3ea8fc";
dark = "#2595e1";
bright = "#56b6c2";
dark = "#56b6c2";
};
white = {
bright = "#8c00ec";
dark = "#efefef";
bright = "#dcdfe4";
dark = "#dcdfe4";
};
background = "#181818";
foreground = white.dark;
cursor = "#bbbbbb";
background = black.dark;
foreground = white.bright;
cursor = "#a3b3cc";
}

View File

@@ -0,0 +1,37 @@
rec {
black = {
bright = "#4b4b4b";
dark = "#242424";
};
red = {
bright = "#fc1c18";
dark = "#d71c15";
};
green = {
bright = "#6bc219";
dark = "#5aa513";
};
yellow = {
bright = "#fec80e";
dark = "#fdb40c";
};
blue = {
bright = "#0955ff";
dark = "#063b8c";
};
magenta = {
bright = "#fb0050";
dark = "#e40038";
};
cyan = {
bright = "#3ea8fc";
dark = "#2595e1";
};
white = {
bright = "#8c00ec";
dark = "#efefef";
};
background = white.dark;
foreground = "#181818";
cursor = "#bbbbbb";
}

View File

@@ -1,37 +0,0 @@
rec {
black = {
bright = "#282c34";
dark = "#282c34";
};
red = {
bright = "#e06c75";
dark = "#e06c75";
};
green = {
bright = "#98c379";
dark = "#98c379";
};
yellow = {
bright = "#e5c07b";
dark = "#e5c07b";
};
blue = {
bright = "#61afef";
dark = "#61afef";
};
magenta = {
bright = "#c678dd";
dark = "#c678dd";
};
cyan = {
bright = "#56b6c2";
dark = "#56b6c2";
};
white = {
bright = "#dcdfe4";
dark = "#dcdfe4";
};
background = black.dark;
foreground = white.bright;
cursor = "#a3b3cc";
}

View File

@@ -0,0 +1,37 @@
rec {
black = {
dark = "#1c1c1c";
bright = "#585858";
};
red = {
dark = "#af005f";
bright = "#5faf5f";
};
green = {
bright = "#afd700";
dark = "#5faf00";
};
yellow = {
bright = "#af87d7";
dark = "#d7af5f";
};
blue = {
dark = "#5fafd7";
bright = "#ffaf00";
};
magenta = {
bright = "#ff5faf";
dark = "#808080";
};
cyan = {
dark = "#d7875f";
bright = "#00afaf";
};
white = {
dark = "#d0d0d0";
bright = "#5f8787";
};
background = black.dark;
foreground = white.dark;
cursor = blue.bright;
}

View File

@@ -0,0 +1,37 @@
rec {
black = {
dark = "#eeeeee";
bright = "#bcbcbc";
};
red = {
dark = "#af0000";
bright = "#d70000";
};
green = {
dark = "#008700";
bright = "#d70087";
};
yellow = {
dark = "#5f8700";
bright = "#8700af";
};
blue = {
dark = "#0087af";
bright = "#d75f00";
};
magenta = {
bright = "#878787";
dark = "#d75f00";
};
cyan = {
dark = "#005f87";
bright = "#005faf";
};
white = {
dark = "#444444";
bright = "#005f87";
};
background = black.dark;
foreground = white.dark;
cursor = blue.bright;
}

View File

@@ -1,5 +1,5 @@
pkgs: rec {
terminal = "alacritty";
browser = "${pkgs.brave}/bin/brave";
fileManager = "${terminal} -e ${pkgs.ranger}/bin/ranger";
browser = "${pkgs.firefox}/bin/firefox";
fileManager = "${pkgs.cinnamon.nemo}/bin/nemo";
}

View File

@@ -40,16 +40,16 @@ rec {
sshPort = 22022;
colours = import ./colours/ibm-3270.nix;
colours = import ./colours/papercolor-dark.nix;
theme = pkgs: {
gtk = {
name = "Adwaita-dark";
package = pkgs.gnome3.gnome-themes-extra;
package = pkgs.gnome.gnome-themes-extra;
};
icon = {
name = "Adwaita";
package = pkgs.gnome3.adwaita-icon-theme;
package = pkgs.gnome.adwaita-icon-theme;
};
cursor = {
name = "capitaine-cursors-white";

View File

@@ -1,78 +1,4 @@
{
lib,
mainMailbox ? "posteo",
...
}: {
uni = {
user = "meinhark";
password = lib.strings.fileContents <secrets/eduroam/password>;
address = "kieran.felix.meinhardt@hu-berlin.de";
imap = "mailbox.cms.hu-berlin.de";
smtp = "mailhost.cms.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
uni-old = {
user = "meinhark";
password = lib.strings.fileContents <secrets/eduroam/password>;
address = "meinhark@informatik.hu-berlin.de";
imap = "mailbox.informatik.hu-berlin.de";
smtp = "mailhost.informatik.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
work-uni = {
user = "meinhaki";
password = lib.strings.fileContents <secrets/mail/meinhaki>;
address = "kieran.meinhardt@hu-berlin.de";
imap = "mailbox.cms.hu-berlin.de";
smtp = "mailhost.cms.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
work-admin = {
user = "dslalewa";
password = lib.strings.fileContents <secrets/mail/dslalewa>;
address = "admin.alew.vglsprwi@hu-berlin.de";
imap = "mailbox.cms.hu-berlin.de";
smtp = "mailhost.cms.hu-berlin.de";
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
work-fysi = rec {
user = "kieran@fysi.tech";
address = user;
password = lib.strings.fileContents <secrets/mail/fastmail>;
imap = "imap.fastmail.com";
smtp = "smtp.fastmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
{lib, ...}: {
cock = rec {
user = "2210@cock.li";
address = user;
@@ -86,46 +12,4 @@
trash = "Trash";
};
};
"${mainMailbox}" = rec {
user = "kieran.meinhardt@posteo.net";
address = user;
password = lib.strings.fileContents <secrets/mail/posteo>;
imap = "posteo.de";
smtp = imap;
smtpSettings = smtp: "smtp://${smtp}";
folders = {
drafts = "Drafts";
sent = "Sent";
trash = "Trash";
};
};
google-amro = rec {
user = "amroplay@gmail.com";
address = user;
password = lib.strings.fileContents <secrets/mail/gmail/amroplay>;
imap = "imap.gmail.com";
smtp = "smtp.gmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "[Gmail]/Drafts";
sent = "[Gmail]/Sent Mail";
trash = "[Gmail]/Bin";
};
};
google-kieran = rec {
user = "kieran.meinhardt@gmail.com";
address = user;
password = lib.strings.fileContents <secrets/mail/gmail/kieran.meinhardt>;
imap = "imap.gmail.com";
smtp = "smtp.gmail.com";
smtpSettings = smtp: "smtps://${smtp}:465";
folders = {
drafts = "[Gmail]/Entwürfe";
sent = "[Gmail]/Gesendet";
trash = "[Gmail]/Papierkorb";
};
};
}

View File

@@ -8,7 +8,7 @@
setsid = script:
pkgs.writers.writeDash "setsid-command" ''
${pkgs.utillinux}/bin/setsid ${script}
${pkgs.util-linux}/bin/setsid ${script}
'';
accounts = import <niveum/lib/email.nix> {inherit lib;};
@@ -23,7 +23,7 @@ in {
warning_fg = colours.yellow.bright;
warning_bg = colours.background;
alternating_tint_bg = colours.background;
alternating_tint_fg = colours.background;
alternating_tint_fg = colours.foreground;
critical_bg = colours.background;
good_bg = colours.background;
idle_bg = colours.background;
@@ -75,7 +75,7 @@ in {
{
block = "github";
info = ["total"];
warning = ["mention" "review_requested"];
warning = ["mention" "review_requested" "team_mention" "manual" "invitation" "assign" "subscribed"];
}
{
block = "custom";

View File

@@ -23,7 +23,10 @@
ipv4 = "10.243.2.85";
ipv6 = "42:0:3c46:ac99:ae36:cb8:c551:ba27";
};
tabula = {
ipv4 = "10.243.2.78";
ipv6 = "";
};
tahina = {
ipv4 = "10.243.2.74";
ipv6 = "42:0:3c46:2923:1c90:872:edd6:306";

View File

@@ -3,47 +3,49 @@
# soma.fm generated via: curl https://somafm.com/ | pup '.cbshort json{}' | jq 'map({logo:.children[0].children[0].src|sub("^"; "http://soma.fm"), desc: .children[2].text, station: .children[1].text})'
let
tags = {
ambient = "🧘 Ambient";
american = "🇺🇸 USA";
amro = "👦 Amro";
arabic = "🇸🇦 عربيic";
balkan = "🇧🇦 Balkan";
berlin = "🐻 Berlin";
brazilian = "🇧🇷 Brasil";
chill = "🧊 Chill";
chinese = "🇨🇳 ";
classical = "🎻 Classical";
discover = "😲 Discover";
dnb = "🥁 DnB";
dubstep = "🎆 Dubstep";
french = "🇫🇷 France";
geschepper = "🤯 Geschepper";
greek = "🇬🇷 Ελλάδα";
greenlandic = "🇬🇱 Kalaallit Nunaat";
groovy = "🕺 Groovy";
holy = " Holy";
indian = "🇮🇳 ";
irie = "🇯🇲 Irie";
irish = "🇮🇪 Éire";
jazz = "🎷 Jazz";
lofi = " Lo-Fi";
metal = "🤘 Metal";
party = "🪩 Party";
pop = "🎙 Pop";
rap = "💸 Rap";
rock = "🎸 Rock";
russian = "🇷🇺 Россия";
schlager = "💩 Schlager";
soma = "🍄 σμα ";
text = "📚 Text";
top40 = " Top 40";
trad = "👘 Trad";
trance = "🎇 Trance";
trap = "🪤 Trap";
turkish = "🇹🇷 Türkiye";
vintage = "🕰 Vintage";
wave = "🌊 ";
xmas = "🎅 Christmas";
ambient = "ambient";
american = "american";
amro = "dj_amro";
arabic = "arabi";
balkan = "balkan";
berlin = "berlin";
brazilian = "brasil";
chill = "chill";
chinese = "china";
classical = "classical";
discover = "discover";
danish = "denmark";
dnb = "dnb";
dubstep = "dubstep";
french = "france";
geschepper = "geschepper";
greek = "greece";
greenlandic = "greenland";
groovy = "groovy";
holy = "holy";
indian = "india";
irie = "jamaica";
irish = "ireland";
jazz = "jazz";
lofi = "lofi";
metal = "metal";
party = "party";
pop = "pop";
radiorecord = "radiorecord";
rap = "rap";
rock = "rock";
russian = "russia";
schlager = "schlager";
soma = "soma";
text = "text";
top40 = "top40";
trad = "trad";
trance = "trance";
trap = "trap";
turkish = "turkey";
vintage = "vintage";
wave = "wave";
xmas = "xmas";
};
# https://github.com/NixOS/nixpkgs/blob/bc06c93905f60a82d6ebbb78f78cf289257860cc/lib/trivial.nix#L281-L282
@@ -70,6 +72,9 @@ let
royal-name = name: "${name} | RoyalRadio";
royal = name: "http://193.33.170.218:8000/${name}";
dr-name = name: "${name} | Danmarks Radio";
dr = name: let quality = 320; in "https://drliveradio.akamaized.net/hls/live/2022411-b/${name}/playlist-${toString quality}000.m3u8";
bhaktiworld-name = name: "${name} | Bhaktiworld";
bhaktiworld = name: "http://${name}.out.airtime.pro:8000/${name}_a";
bhaktiworld-logo = "http://www.bhaktiworld.com/Bhakti-world-logo.png";
@@ -152,7 +157,7 @@ in
}
{
stream = "http://rb-stream.de:8000/rrb_128.mp3";
station = "Radio Russkij Berlin";
station = "Radio Golos Berlina";
logo = "http://radio-rb.de/img/site/logo.png";
desc = "Голос нашего города ...";
tags = [tags.berlin tags.russian];
@@ -164,7 +169,7 @@ in
]
++
# generated via: curl https://radiorecord.ru/api/stations | jq '.result.stations | sort_by(.sort) | map({station:.title,desc:.tooltip,logo:.icon_fill_colored,stream:.stream_320})' > radiorecord.json
importJSON ./radiorecord.json
map (x: x // {tags = [tags.radiorecord];}) (importJSON ./radiorecord.json)
++ [
{
desc = "Your favorite dance tunes from the start of the decade. Familiar hits and overlooked classics in abundance.";
@@ -1588,11 +1593,32 @@ in
logo = "https://cdn.radiofrance.fr/s3/cruiser-production/2019/01/3c4dc967-ed2c-4ce5-a998-9437a64e05d5/300x300_rapfr.jpg";
tags = [tags.french tags.rap];
}
{
station = "Radio Sunna";
desc = "Sunnah of the Prophet";
stream = "http://andromeda.shoutca.st:8189/stream";
tags = [tags.arabic tags.text tags.holy];
}
{
stream = "http://66.45.232.131:9994/;stream.mp3";
station = "ERTU Al Quran Al Kareem";
tags = [tags.arabic tags.text tags.holy];
}
{
stream = "http://149.28.52.216:3344/listen.mp3";
station = "Verse 24/7 Holy Quran";
tags = [tags.arabic tags.text tags.holy];
}
{
stream = "https://s6.voscast.com:9355/stream";
station = "Kilid Herat";
tags = [tags.arabic tags.holy]; # nasheeds
}
{
stream = "https://s6.voscast.com:9355/stream";
station = "Radio Salam Watandar";
tags = [tags.arabic tags.holy];
}
{
stream = "http://onair15.xdevel.com:7064/1/";
station = "Radio Mozart Italia";
@@ -1781,6 +1807,41 @@ in
stream = "http://radio.hostchefs.net:8046/stream";
tags = [tags.greek];
}
{
station = dr-name "P4 København";
stream = dr "p4kobenhavn";
tags = [tags.top40 tags.danish];
}
{
station = dr-name "P1";
stream = dr "p1";
tags = [tags.top40 tags.danish];
}
{
station = dr-name "P2";
stream = dr "p2";
tags = [tags.classical tags.danish];
}
{
station = dr-name "P3";
stream = dr "p3";
tags = [tags.top40 tags.danish];
}
{
station = dr-name "P5 København";
stream = dr "p5kobenhavn";
tags = [tags.top40 tags.danish];
}
{
station = dr-name "P6 Beat";
stream = dr "p6beat";
tags = [tags.top40 tags.danish];
}
{
station = dr-name "P8 Jazz";
stream = dr "p8jazz";
tags = [tags.jazz tags.danish];
}
]
/*
(caster-fm "TODO" "noasrv" 10182) # https://github.com/cccruzr/albumsyoumusthear/blob/7e00baf575e4d357cd275d54d1aeb717321141a8/HLS/IBERO_90_1.m3u
@@ -1821,5 +1882,31 @@ http://ca.radioboss.fm:8149/stream
Christian radio in all languages
https://jesuscomingfm.com/#
tamazight http://live.jesuscomingfm.com:8462/;
supposedly good Greek radio
https://onairmediagroup.live24.gr/kralfm100xanthi
Somali Radio
http://n0b.radiojar.com/1pu7hhf8kfhvv
Sanskrit
https://stream-23.zeno.fm/m08mkwsyw8quv?zs=0w7MJFPdRfavhR_zPt0M2g
https://divyavani.radioca.st/stream
Chillout from kassel
https://server4.streamserver24.com:2199/tunein/ejanowsk.pls
Radio Mariam Arabic (Rome)
http://www.dreamsiteradiocp4.com:8014/stream
https://radio.kamchatkalive.ru:8103/rock
https://radio.kamchatkalive.ru:8103/chillout
https://radio.kamchatkalive.ru:8103/dance
Fuā Stories (Bahrain Radio 102.3 FM)
http://n02.radiojar.com/sxfbks1vfy8uv.mp3
Bahrain Quran Radio
http://s2.voscast.com:12312/;
*/

View File

@@ -73,6 +73,7 @@ let g:netrw_altv=1 " open splits to the right
let g:netrw_liststyle=3 " tree view
let g:netrw_list_hide=netrw_gitignore#Hide()
let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
let g:netrw_winsize = 25
call matchadd('colorcolumn', '\%101v', 100)
highlight colorcolumn ctermbg=red

View File

@@ -1,7 +0,0 @@
{
imports = [
./constants.nix
./dropbox.nix
./retiolum.nix
];
}

7
packages/jsesh.nix Normal file
View File

@@ -0,0 +1,7 @@
{pkgs ? import <nixpkgs> {}}:
pkgs.writers.writeDashBin "jsesh" ''
${pkgs.jre}/bin/java -jar ${pkgs.fetchzip {
url = "https://github.com/rosmord/jsesh/releases/download/release-7.5.5/JSesh-7.5.5.zip";
sha256 = "1z7ln51cil9pypz855x9a8p9ip2aflvknh566wcaah1kmz3fp57r";
}}/lib/jseshAppli-7.5.5.jar
''

View File

@@ -10,7 +10,7 @@ stdenv.mkDerivation {
src = fetchgit {
url = "https://github.com/jgm/pandoc";
rev = pandoc.version;
sha256 = "sha256-AY9GarrU7PBFgoYxqQkE2ghoUy7+0Gu6/Mwa+fdQM2U=";
sha256 = "sha256-8mkHbHoXrkgcXZ/rYlVh2fhL12WjcTt97a1W+oYVYOs=";
};
buildPhase = ''
mkdir -p $out/man/man1

View File

@@ -2,7 +2,7 @@
lib,
stdenv,
cmake,
pkgconfig,
pkg-config,
libogg,
fetchFromGitHub,
}:
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
buildInputs = [libogg];
nativeBuildInputs = [cmake pkgconfig];
nativeBuildInputs = [cmake pkg-config];
meta = with lib; {
homepage = "https://github.com/fmang/opustags";

View File

@@ -1,12 +0,0 @@
diff --git a/rofi-pass b/rofi-pass
index 48928db..13682a5 100755
--- a/rofi-pass
+++ b/rofi-pass
@@ -15,7 +15,7 @@ _image_viewer () {
# We expect to find these fields in pass(1)'s output
URL_field='url'
-USERNAME_field='user'
+USERNAME_field='login'
AUTOTYPE_field='autotype'
OTPmethod_field='otp_method'

31
packages/rusty-jeep.nix Normal file
View File

@@ -0,0 +1,31 @@
{
lib,
fetchFromGitHub,
rustPlatform,
pkg-config,
alsa-lib,
}:
rustPlatform.buildRustPackage {
pname = "rusty-jeep";
version = "1.0.0";
src = let
repo = fetchFromGitHub {
owner = "kmein";
repo = "scripts";
rev = "c8e80b34c08e427f83b6af19a361e8c0711a4e6c";
sha256 = "18jlf9zkhni4jsvzrlkkllqvv5dkhjmilggcchbs32hr1km51q84";
};
in "${repo}/rusty-jeep";
nativeBuildInputs = [pkg-config];
buildInputs = [alsa-lib];
cargoHash = "sha256-8qbYTqRk+4InJNX6xK95VxISamDb5KID+wbmUDJYJ94=";
meta = with lib; {
description = "A beeping program inspired by K_belwagen";
license = licenses.wtfpl;
maintainers = [maintainers.kmein];
};
}

View File

@@ -33,6 +33,25 @@ in
name = "instaget";
};
alarm = let
rusty-jeep = pkgs.callPackage ../rusty-jeep.nix {};
in
pkgs.writers.writeDashBin "alarm" ''
export PATH=${lib.makeBinPath [pkgs.coreutils pkgs.bc rusty-jeep]}
for i in `seq 8000 1000 10000`; do
echo $i 100
done | rusty-jeep
echo 'if you heard that sound, then goto sleep..^_^'
echo sleep "$@"
sleep "$@"
echo 'wake up!'
while :; do
echo $(echo "($(od -tu -An -N 2 /dev/urandom)%1000)+500"|bc) $(echo "($(od -tu -An -N 2 /dev/urandom)%500)+100"|bc)
done | rusty-jeep 1
'';
infschmv = pkgs.writers.writeDashBin "InfSchMV" ''
${pkgs.curl}/bin/curl -sSL https://www.berlin.de/corona/massnahmen/verordnung/ \
| ${pkgs.pup}/bin/pup .textile \
@@ -278,12 +297,6 @@ in
name = "nix-git";
};
linkhandler = wrapScript {
packages = [pkgs.utillinux pkgs.mpv pkgs.curl pkgs.gnused pkgs.sxiv pkgs.ts];
script = "${voidrice}/.local/bin/linkhandler";
name = "linkhandler";
};
mansplain = wrapScript {
packages = [pkgs.man pkgs.zathura pkgs.dmenu pkgs.gnused];
script = ./mansplain.sh;
@@ -314,7 +327,7 @@ in
};
default-gateway = pkgs.writers.writeDashBin "default-gateway" ''
${pkgs.iproute}/bin/ip -json route | ${pkgs.jq}/bin/jq --raw-output '.[0].gateway'
${pkgs.iproute2}/bin/ip -json route | ${pkgs.jq}/bin/jq --raw-output '.[0].gateway'
'';
betacode =

View File

@@ -20,7 +20,7 @@
with open("${
fetchurl {
url = "https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt";
sha256 = "sha256-NgGOaGV/3LNIX2NmMP/oyFMuAcl3cD0oA/W4nWxf6vs=";
sha256 = "0wva6ygnh3wrzpzy0kcbc32hz1ydx3k2pqc5xkqrfw83cpnrlvl0";
}
}", "r") as unicode_data:
reader = csv.reader(unicode_data, delimiter=";")

View File

@@ -2,7 +2,8 @@
vimUtils,
fetchFromGitHub,
}: (vimUtils.buildVimPluginFrom2Nix {
name = "cheat.sh-vim";
pname = "cheat.sh-vim";
version = "826219d1";
src = fetchFromGitHub {
owner = "dbeniamine";
repo = "cheat.sh-vim";

View File

@@ -2,7 +2,8 @@
vimUtils,
fetchFromGitHub,
}: (vimUtils.buildVimPluginFrom2Nix {
name = "icalendar.vim";
pname = "icalendar.vim";
version = "542fff45";
src = fetchFromGitHub {
owner = "vim-scripts";
repo = "icalendar.vim";

View File

@@ -3,7 +3,8 @@
fetchFromGitHub,
}:
vimUtils.buildVimPluginFrom2Nix {
name = "jq.vim";
pname = "jq.vim";
version = "5baf8ed1";
src = fetchFromGitHub {
owner = "vito-c";
repo = "jq.vim";

View File

@@ -3,7 +3,8 @@
fetchFromGitHub,
}:
vimUtils.buildVimPluginFrom2Nix {
name = "vim-256noir";
pname = "vim-256noir";
version = "e8668a18";
src = fetchFromGitHub {
owner = "andreasvc";
repo = "vim-256noir";

View File

@@ -3,7 +3,8 @@
fetchFromGitHub,
}:
vimUtils.buildVimPluginFrom2Nix rec {
name = "vim-colors-paramount";
pname = "vim-colors-paramount";
version = "a5601d36";
src = fetchFromGitHub {
owner = "owickstrom";
repo = "vim-colors-paramount";

View File

@@ -2,7 +2,8 @@
vimUtils,
fetchFromGitHub,
}: (vimUtils.buildVimPluginFrom2Nix rec {
name = "vim-fetch";
pname = "vim-fetch";
version = "76c08586";
src = fetchFromGitHub {
owner = "wsdjeg";
repo = "vim-fetch";

View File

@@ -3,7 +3,8 @@
fetchFromGitHub,
}:
vimUtils.buildVimPluginFrom2Nix {
name = "vim-fsharp";
pname = "vim-fsharp";
version = "627db7d7";
src = fetchFromGitHub {
owner = "fsharp";
repo = "vim-fsharp";

View File

@@ -3,7 +3,8 @@
fetchFromGitHub,
}:
vimUtils.buildVimPluginFrom2Nix {
name = "vim-mail";
pname = "vim-mail";
version = "acdbb5bd";
src = fetchFromGitHub {
owner = "dbeniamine";
repo = "vim-mail";

View File

@@ -2,7 +2,8 @@
vimUtils,
fetchFromGitHub,
}: (vimUtils.buildVimPluginFrom2Nix {
name = "vim-reason-plus";
pname = "vim-reason-plus";
version = "c11a2940";
src = fetchFromGitHub {
owner = "reasonml-editor";
repo = "vim-reason-plus";

View File

@@ -4,18 +4,32 @@
pkgs,
...
}: let
inherit (import <niveum/lib>) kieran retiolumAddresses;
inherit (import <niveum/lib>) kieran retiolumAddresses restic;
in {
imports = [
./hardware-configuration.nix
# <niveum/configs/monitoring.nix>
./matomo.nix
<niveum/configs/monitoring.nix>
<niveum/configs/nix.nix>
<niveum/configs/save-space.nix>
<niveum/configs/spacetime.nix>
<niveum/configs/sshd.nix>
<niveum/modules/retiolum.nix>
<niveum/configs/retiolum.nix>
];
services.restic.backups.niveum = {
initialize = true;
inherit (restic) repository;
timerConfig = {
OnCalendar = "daily";
RandomizedDelaySec = "1h";
};
passwordFile = toString <secrets/restic/password>;
paths = [
config.services.mysqlBackup.location
];
};
nix.nixPath = ["/var/src"];
networking = {
@@ -45,4 +59,7 @@ in {
users.users.root.passwordFile = toString <system-secrets/root.password>;
environment.systemPackages = [pkgs.vim pkgs.git pkgs.tmux pkgs.python3];
# since 22.05 timeout fails?
systemd.services.systemd-networkd-wait-online.enable = false;
}

42
systems/ful/matomo.nix Normal file
View File

@@ -0,0 +1,42 @@
{pkgs, ...}: let
inherit (import <niveum/lib>) kieran;
in {
services.nginx = {
enable = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
};
security.acme = {
acceptTerms = true;
defaults.email = kieran.email;
};
services.matomo = {
enable = true;
hostname = "matomo.kmein.de";
nginx = {
serverName = "matomo.kmein.de";
};
};
services.mysql = {
enable = true;
package = pkgs.mariadb;
ensureDatabases = ["matomo"];
ensureUsers = [
{
name = "matomo";
ensurePermissions."matomo.*" = "ALL PRIVILEGES";
}
];
};
services.mysqlBackup = {
enable = true;
databases = ["matomo"];
};
}

View File

@@ -24,7 +24,7 @@ in {
max-jobs = 2;
};
environment.systemPackages = [pkgs.minecraft];
environment.systemPackages = [pkgs.minecraft pkgs.zeroad];
networking = {
hostName = "kabsa";

View File

@@ -34,8 +34,8 @@
fsType = "vfat";
};
"/mnt/sd-card" = {
device = "/dev/disk/by-id/mmc-SD32G_0xda0aa352-part1";
fsType = "vfat";
device = "/dev/disk/by-id/mmc-5E4S5_0xc5155d05-part1";
fsType = "ext4";
options = ["nofail"];
};
};

View File

@@ -10,19 +10,17 @@ in {
./gitea.nix
./hardware-configuration.nix
./hedgedoc.nix
./matterbridge.nix
./menstruation.nix
./moinbot.nix
# ./horoscopy.nix
./monitoring
./moodle-dl-borsfaye.nix
./names.nix
./grimm.nix
./nextcloud.nix
./radio-news.nix
./radio.nix
./retiolum-map.nix
./tarot.nix
./tt-rss.nix
./urlwatch.nix
./weechat.nix
<niveum/configs/monitoring.nix>
@@ -30,8 +28,8 @@ in {
<niveum/configs/save-space.nix>
<niveum/configs/spacetime.nix>
<niveum/configs/sshd.nix>
<niveum/configs/retiolum.nix>
<niveum/configs/telegram-bots>
<niveum/modules/retiolum.nix>
<niveum/modules/passport.nix>
];
@@ -45,7 +43,7 @@ in {
passwordFile = toString <secrets/restic/password>;
paths = [
"/var/lib/codimd"
"/var/lib/postgresql"
config.services.postgresqlBackup.location
"/var/lib/weechat"
"/var/lib/nextcloud"
"/var/lib/grafana"

View File

@@ -4,10 +4,12 @@ let
in {
services.gitea = {
enable = true;
disableRegistration = true;
rootUrl = domain;
appName = "code.kmein.de";
ssh.clonePort = sshPort;
settings = {
server.SSH_PORT = sshPort;
service.DISABLE_REGISTRATION = true;
};
};
services.nginx.virtualHosts."code.kmein.de" = {
forceSSL = true;

View File

@@ -1,30 +0,0 @@
{pkgs, ...}: let
port = 9610;
web-socket-sink-src = "${<scripts>}/grimm-scroller";
web-socket-sink = pkgs.callPackage web-socket-sink-src {};
lemmata = "${web-socket-sink-src}/dwb-compact.json";
in {
systemd.services.grimm-ws = {
wantedBy = ["multi-user.target"];
script = "${web-socket-sink}/bin/web-socket-sink --host 0.0.0.0 --port ${toString port} < ${lemmata}";
serviceConfig = {
Restart = "always";
DynamicUser = true;
};
};
services.nginx.virtualHosts."grimm.kmein.de" = {
enableACME = false;
forceSSL = false;
locations = {
"/".root = pkgs.linkFarm "grimm" [
{
name = "index.html";
path = "${web-socket-sink-src}/wclient.html";
}
];
};
};
networking.firewall.allowedTCPPorts = [port];
}

View File

@@ -27,7 +27,7 @@ in {
services.hedgedoc = {
enable = true;
configuration = {
settings = {
allowOrigin = [domain];
allowAnonymous = true;
allowGravatar = false;

View File

@@ -4,7 +4,13 @@
...
}: let
backend = pkgs.callPackage <menstruation-backend> {};
telegram = pkgs.callPackage <menstruation-telegram> {};
old-pkgs = import (pkgs.fetchFromGitHub {
owner = "NixOs";
repo = "nixpkgs";
rev = "695b3515251873e0a7e2021add4bba643c56cde3";
hash = "sha256-T86oFvcUIRwHWBWUt7WjaP4BP/3lDGbv5AppQSI1FkI=";
}) {};
telegram = old-pkgs.poetry2nix.mkPoetryApplication {projectDir = <menstruation-telegram>;};
backendPort = 8000;
in {
services.redis.servers.menstruation = {

View File

@@ -2,12 +2,18 @@
systemd.services.moinbot = {
startAt = "7:00";
script = ''
echo moin | ${pkgs.ircaids}/bin/ircsink \
--nick moinbot \
greeting=$(echo "moin
oi
noim
MOIN
OI
moi" | shuf -n1)
echo "$greeting" | ${pkgs.ircaids}/bin/ircsink \
--nick "$greeting""bot" \
--server irc.hackint.org \
--port 6697 \
--secure \
--target '#hsmr' >/dev/null 2>&1
--target '#hsmr-moin' >/dev/null 2>&1
'';
serviceConfig.DynamicUser = true;
};
@@ -15,7 +21,7 @@
niveum.passport.services = [
{
title = "moinbot";
description = "greets #hsmr:hackint.org daily.";
description = "greets #hsmr-moin:hackint.org daily.";
}
];

View File

@@ -10,21 +10,69 @@
in {
services.grafana = {
enable = true;
domain = "grafana.kmein.r";
port = 9444;
addr = "127.0.0.1";
};
services.nginx.virtualHosts.${config.services.grafana.domain} = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.grafana.port}";
proxyWebsockets = true;
settings = {
server = {
domain = "grafana.kmein.r";
http_port = 9444;
http_addr = "127.0.0.1";
};
smtp = let
inherit (import <niveum/lib/email.nix> {inherit lib;}) cock;
address = builtins.split "@" cock.user;
in {
enabled = true;
from_address = cock.address;
password = cock.password;
user = cock.user;
host = cock.smtpSettings cock.smtp;
startTLS_policy = "MandatoryStartTLS";
};
dashboards.default_home_dashboard_path = toString ./grafana-dashboards/niveum.json;
security = {
admin_user = "admin";
admin_password = lib.strings.fileContents <system-secrets/grafana/admin>;
};
};
provision = {
enable = true;
dashboards.settings.providers = [
{
name = "dashboards";
type = "file";
options.path = ./grafana-dashboards;
}
];
datasources.settings.datasources = builtins.fromJSON (builtins.readFile ./grafana-datasources.json);
};
};
services.nginx.virtualHosts = {
${config.services.grafana.settings.server.domain} = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.grafana.settings.server.http_port}";
proxyWebsockets = true;
};
};
${lib.removePrefix "http://" config.services.prometheus.alertmanager.webExternalUrl} = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.prometheus.alertmanager.port}";
proxyWebsockets = true;
};
};
${lib.removePrefix "http://" config.services.prometheus.webExternalUrl} = {
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.prometheus.port}";
proxyWebsockets = true;
};
};
};
services.prometheus.webExternalUrl = "http://prometheus.kmein.r";
niveum.passport.services = [
{
title = "Prometheus";
link = config.services.prometheus.webExternalUrl;
description = "collects metrics from devices in the <i>niveum</i> network, blackbox monitors some websites.";
}
{
@@ -33,11 +81,12 @@ in {
}
{
title = "Grafana";
link = "http://${config.services.grafana.domain}";
link = "http://${config.services.grafana.settings.server.domain}";
description = "displays metrics from devices in the <i>niveum</i> network.";
}
{
title = "Alertmanager bot";
title = "Alertmanager";
link = config.services.prometheus.alertmanager.webExternalUrl;
description = "notifies me when something goes wrong.";
}
];
@@ -143,48 +192,45 @@ in {
})
];
systemd.services.alertmanager-bot-telegram = {
wantedBy = ["multi-user.target"];
after = ["ip-up.target"];
environment.TELEGRAM_ADMIN = "18980945";
environment.TELEGRAM_TOKEN = lib.strings.fileContents <system-secrets/telegram/prometheus.token>;
serviceConfig = {
Restart = "on-failure";
RestartSec = "15s";
DynamicUser = true;
StateDirectory = "alertbot";
ExecStart = '' ${pkgs.alertmanager-bot-telegram}/bin/alertmanager-bot \
--alertmanager.url=http://localhost:9093 --log.level=info \
--store=bolt --bolt.path=/var/lib/alertbot/bot.db \
--listen.addr="0.0.0.0:16320" \
--template.paths=${
pkgs.writeText "template.tmpl" ''
{{ define "telegram.default" }}
{{range .Alerts -}}
{{.Status}}: {{ index .Annotations "summary"}}
{{end -}}
{{end}}
''
}'';
};
};
services.prometheus.alertmanager = {
enable = true;
listenAddress = "localhost";
webExternalUrl = "http://alertmanager.kmein.r";
configuration = {
route = {
group_wait = "30s";
repeat_interval = "4h";
receiver = "me";
repeat_interval = "24h";
receiver = "all";
};
receivers = [
{
name = "me";
webhook_configs = [
name = "all";
telegram_configs = [
{
url = "http://localhost:16320";
bot_token = lib.strings.fileContents <system-secrets/telegram/prometheus.token>;
chat_id = 18980945;
parse_mode = "";
api_url = "https://api.telegram.org";
send_resolved = true;
message = ''
{{range .Alerts -}}
{{ .Status }}: {{ index .Annotations "summary" }}
{{end -}}
'';
}
];
email_configs = let
inherit (import <niveum/lib>) kieran;
inherit (import <niveum/lib/email.nix> {inherit lib;}) cock;
in [
{
send_resolved = true;
to = kieran.email;
from = cock.user;
smarthost = "${cock.smtp}:587";
auth_username = cock.user;
auth_identity = cock.user;
auth_password = cock.password;
}
];
}
@@ -196,7 +242,7 @@ in {
{
scheme = "http";
path_prefix = "/";
static_configs = [{targets = ["localhost:9093"];}];
static_configs = [{targets = ["localhost:${toString config.services.prometheus.alertmanager.port}"];}];
}
];
@@ -258,6 +304,16 @@ in {
}
];
}
{
job_name = "ful";
static_configs = [
{
targets = [
"ful.r:${toString config.services.prometheus.exporters.node.port}"
];
}
];
}
];
services.prometheus.exporters.blackbox = {

View File

@@ -0,0 +1,944 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": false,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 1,
"links": [],
"liveNow": false,
"panels": [
{
"collapsed": false,
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 26,
"panels": [],
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"refId": "A"
}
],
"title": "Running",
"type": "row"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": {
"type": "loki",
"uid": "sAagoeS7k"
},
"fieldConfig": {
"defaults": {
"unit": "cps"
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 1
},
"hiddenSeries": false,
"id": 28,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "9.3.1",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"datasource": {
"type": "loki",
"uid": "sAagoeS7k"
},
"expr": "rate({job=\"systemd-journal\"} |~ \"[Ee]rror|[Cc]rit\" [5m])",
"legendFormat": "{{unit}}@{{host}}",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
"title": "Error Rate",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"show": true,
"values": []
},
"yaxes": [
{
"format": "cps",
"logBase": 1,
"show": true
},
{
"format": "short",
"logBase": 1,
"show": true
}
],
"yaxis": {
"align": false
}
},
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 4,
"w": 6,
"x": 12,
"y": 1
},
"id": 22,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"text": {},
"textMode": "auto"
},
"pluginVersion": "9.3.1",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "sum(node_systemd_unit_state{state!=\"inactive\",state!=\"activating\",state!=\"deactivating\"}) by (state)",
"interval": "",
"legendFormat": "{{state}}",
"refId": "A"
}
],
"title": "SystemD Units",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 18,
"y": 1
},
"id": 18,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "9.3.1",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "sum(node_logind_sessions{type=\"tty\"}) by (job)",
"interval": "",
"legendFormat": "{{job}}",
"refId": "A"
}
],
"title": "tty sessions",
"type": "stat"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": {
"type": "loki",
"uid": "sAagoeS7k"
},
"description": "",
"fieldConfig": {
"defaults": {
"unit": "reqps"
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 4,
"w": 6,
"x": 12,
"y": 5
},
"hiddenSeries": false,
"id": 30,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": false,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "9.3.1",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"datasource": {
"type": "loki",
"uid": "sAagoeS7k"
},
"expr": "rate({unit=\"nginx.service\"} |= \"GET\"[5m])",
"legendFormat": "{{host}}",
"refId": "A"
}
],
"thresholds": [],
"timeRegions": [],
"title": "nginx requests",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"show": true,
"values": []
},
"yaxes": [
{
"format": "reqps",
"logBase": 1,
"show": true
},
{
"format": "short",
"logBase": 1,
"show": true
}
],
"yaxis": {
"align": false
}
},
{
"collapsed": false,
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 9
},
"id": 14,
"panels": [],
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"refId": "A"
}
],
"title": "Free",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "decbytes"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 12,
"x": 0,
"y": 10
},
"id": 6,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "9.3.1",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "node_filesystem_avail_bytes{mountpoint=~\"/|/backup\"}",
"format": "time_series",
"interval": "",
"intervalFactor": 1,
"legendFormat": "{{job}}:{{mountpoint}}",
"refId": "A"
}
],
"title": "Free Disk Space",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "decbytes"
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 12,
"y": 10
},
"id": 2,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "9.3.1",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "node_memory_MemFree_bytes",
"interval": "",
"legendFormat": "{{job}}",
"refId": "A"
}
],
"title": "Free Memory",
"type": "stat"
},
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 5,
"w": 6,
"x": 18,
"y": 10
},
"id": 12,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "9.3.1",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "node_load15",
"interval": "",
"legendFormat": "{{job}}",
"refId": "A"
}
],
"title": "Load (15m)",
"type": "stat"
},
{
"collapsed": false,
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 15
},
"id": 16,
"panels": [],
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"refId": "A"
}
],
"title": "IO",
"type": "row"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"fieldConfig": {
"defaults": {
"unit": "Bps"
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 16
},
"hiddenSeries": false,
"id": 20,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "9.3.1",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "rate(node_network_receive_bytes_total{device!=\"lo\"}[5m])",
"interval": "",
"legendFormat": "recv: {{job}} / {{device}}",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "rate(node_network_transmit_bytes_total{device!=\"lo\"}[5m])",
"hide": false,
"interval": "",
"legendFormat": "send: {{job}} / {{device}}",
"refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
"title": "Network IO",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"show": true,
"values": []
},
"yaxes": [
{
"$$hashKey": "object:2175",
"format": "Bps",
"logBase": 1,
"show": true
},
{
"$$hashKey": "object:2176",
"format": "short",
"logBase": 1,
"show": true
}
],
"yaxis": {
"align": false
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"fieldConfig": {
"defaults": {
"unit": "Bps"
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 16
},
"hiddenSeries": false,
"id": 10,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "9.3.1",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "rate(node_disk_written_bytes_total{device=\"sda\"}[5m])",
"interval": "",
"legendFormat": "write: {{job}}",
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "rate(node_disk_read_bytes_total{device=\"sda\"}[5m])",
"hide": false,
"interval": "",
"legendFormat": "read: {{job}}",
"refId": "B"
}
],
"thresholds": [],
"timeRegions": [],
"title": "Disk IO",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"show": true,
"values": []
},
"yaxes": [
{
"$$hashKey": "object:1290",
"format": "Bps",
"logBase": 1,
"show": true
},
{
"$$hashKey": "object:1291",
"format": "short",
"logBase": 1,
"show": true
}
],
"yaxis": {
"align": false
}
},
{
"collapsed": false,
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 23
},
"id": 32,
"panels": [],
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"refId": "A"
}
],
"title": "HTTP",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"fillOpacity": 70,
"lineWidth": 1
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red"
},
{
"color": "green",
"value": 200
},
{
"color": "red",
"value": 400
}
]
},
"unit": "none"
},
"overrides": []
},
"gridPos": {
"h": 6,
"w": 24,
"x": 0,
"y": 24
},
"id": 34,
"maxDataPoints": 200,
"options": {
"colWidth": 0.9,
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"rowHeight": 0.9,
"showValue": "auto",
"tooltip": {
"mode": "single"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "tOBnpeI7z"
},
"exemplar": true,
"expr": "probe_http_status_code",
"interval": "",
"legendFormat": "{{instance}}",
"refId": "A"
}
],
"title": "HTTP Probe",
"type": "status-history"
}
],
"refresh": "5s",
"schemaVersion": 37,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "niveum",
"uid": "alpUteInz",
"version": 31,
"weekStart": ""
}

View File

@@ -0,0 +1,38 @@
[
{
"id": 2,
"uid": "sAagoeS7k",
"orgId": 1,
"name": "Loki",
"type": "loki",
"typeName": "Loki",
"typeLogoUrl": "public/app/plugins/datasource/loki/img/loki_icon.svg",
"access": "proxy",
"url": "http://localhost:3100",
"user": "",
"database": "",
"basicAuth": false,
"isDefault": false,
"jsonData": {},
"readOnly": true
},
{
"id": 1,
"uid": "tOBnpeI7z",
"orgId": 1,
"name": "Prometheus",
"type": "prometheus",
"typeName": "Prometheus",
"typeLogoUrl": "public/app/plugins/datasource/prometheus/img/prometheus_logo.svg",
"access": "proxy",
"url": "http://localhost:9001",
"user": "",
"database": "",
"basicAuth": false,
"isDefault": true,
"jsonData": {
"httpMethod": "POST"
},
"readOnly": true
}
]

View File

@@ -9,9 +9,10 @@
in {
services.nextcloud = {
enable = true;
package = pkgs.nextcloud24;
package = pkgs.nextcloud25;
https = true;
enableBrokenCiphersForSSE = false;
autoUpdateApps = {
enable = true;
@@ -20,6 +21,8 @@ in {
hostName = "cloud.xn--kiern-0qa.de";
phpOptions."opcache.interned_strings_buffer" = "32"; # buffer size in MB
config = {
overwriteProtocol = "https";
@@ -31,6 +34,27 @@ in {
adminpassFile = passwordFile <system-secrets/nextcloud/admin>;
adminuser = "admin";
# extraTrustedDomains = [ "toum.r" ];
defaultPhoneRegion = "DE";
};
logLevel = 2;
extraOptions = let
inherit (import <niveum/lib/email.nix> {inherit lib;}) cock;
address = builtins.split "@" cock.user;
in {
defaultapp = "files";
mail_smtpmode = "smtp";
mail_sendmailmode = "smtp";
mail_smtphost = cock.smtp;
mail_smtpport = "587";
mail_from_address = builtins.elemAt address 0;
mail_domain = builtins.elemAt address 2;
mail_smtpsecure = "tls";
mail_smtpauthtype = "LOGIN";
mail_smtpauth = 1;
mail_smtpname = cock.user;
mail_smtppassword = cock.password;
};
};
@@ -42,13 +66,18 @@ in {
}
];
services.postgresqlBackup = {
enable = true;
databases = [config.services.nextcloud.config.dbname];
};
services.postgresql = {
enable = true;
ensureDatabases = ["nextcloud"];
ensureDatabases = [config.services.nextcloud.config.dbname];
ensureUsers = [
{
name = "nextcloud";
ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES";
ensurePermissions."DATABASE ${config.services.nextcloud.config.dbname}" = "ALL PRIVILEGES";
}
];
};

View File

@@ -25,7 +25,7 @@ in {
rm -rf "$stockholm"
}
${pkgs.git}/bin/git clone ${remote} "$stockholm"
${pkgs.git}/bin/git --git-dir "$stockholm"/.git log --pretty='"%s" by %an, %ar.' --since "$(${pkgs.coreutils}/bin/date -I -d "yesterday")" \
${pkgs.git}/bin/git --git-dir "$stockholm"/.git log --pretty='"%s" by %an, %ar.' --since "$(${pkgs.coreutils}/bin/date -d '1 hours ago')" \
| ${pkgs.jq}/bin/jq -R '{text: ., from: now | todateiso8601, to: (now + (60 * 60)) | todateiso8601}' \
| ${pkgs.curl}/bin/curl -Ssfd @- http://radio-news.r/
'';

View File

@@ -20,32 +20,30 @@ in {
krebs.htgen.tarot = {
port = tarotPort;
user.name = "radio";
script = ''. ${
pkgs.writers.writeDash "tarot" ''
case "$Method $Request_URI" in
"GET /")
if item=$(${pkgs.findutils}/bin/find ${toString tarotFiles} -type f | ${pkgs.coreutils}/bin/shuf -n1); then
card=$(mktemp --tmpdir tarot.XXX)
trap 'rm $card' EXIT
reverse=$(${pkgs.coreutils}/bin/shuf -i0-1 -n1)
if [ "$reverse" -eq 1 ]; then
${pkgs.imagemagick}/bin/convert -rotate 180 "$item" "$card"
else
${pkgs.coreutils}/bin/cp "$item" "$card"
fi
printf 'HTTP/1.1 200 OK\r\n'
printf 'Content-Type: %s\r\n' "$(${pkgs.file}/bin/file -ib "$card")"
printf 'Server: %s\r\n' "$Server"
printf 'Connection: close\r\n'
printf 'Content-Length: %d\r\n' $(${pkgs.coreutils}/bin/wc -c < "$card")
printf '\r\n'
cat "$card"
exit
fi
;;
esac
''
}'';
scriptFile = pkgs.writers.writeDash "tarot" ''
case "$Method $Request_URI" in
"GET /")
if item=$(${pkgs.findutils}/bin/find ${toString tarotFiles} -type f | ${pkgs.coreutils}/bin/shuf -n1); then
card=$(mktemp --tmpdir tarot.XXX)
trap 'rm $card' EXIT
reverse=$(${pkgs.coreutils}/bin/shuf -i0-1 -n1)
if [ "$reverse" -eq 1 ]; then
${pkgs.imagemagick}/bin/convert -rotate 180 "$item" "$card"
else
${pkgs.coreutils}/bin/cp "$item" "$card"
fi
printf 'HTTP/1.1 200 OK\r\n'
printf 'Content-Type: %s\r\n' "$(${pkgs.file}/bin/file -ib "$card")"
printf 'Server: %s\r\n' "$Server"
printf 'Connection: close\r\n'
printf 'Content-Length: %d\r\n' $(${pkgs.coreutils}/bin/wc -c < "$card")
printf '\r\n'
cat "$card"
exit
fi
;;
esac
'';
};
niveum.passport.services = [

View File

@@ -0,0 +1,37 @@
{
pkgs,
lib,
config,
...
}: let
domain = "feed.kmein.de";
port = 8181;
in {
services.miniflux = {
enable = true;
adminCredentialsFile = pkgs.writeText "miniflux" ''
ADMIN_USERNAME='kfm'
ADMIN_PASSWORD='${lib.strings.fileContents <secrets/miniflux/password>}'
'';
config = {
FETCH_YOUTUBE_WATCH_TIME = "1";
POLLING_FREQUENCY = "20";
PORT = toString port;
BASE_URL = "https://feed.kmein.de";
# POCKET_CONSUMER_KEY = ...
};
};
services.postgresqlBackup = {
enable = true;
databases = ["miniflux"];
};
services.nginx.virtualHosts.${domain} = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${toString port}";
};
};
}

View File

@@ -26,19 +26,6 @@
url = "http://lammla.info/index.php?reihe=30";
filter = ["html2text" "strip"];
}
{
name = "Tatort";
url = "https://www.daserste.de/unterhaltung/krimi/tatort/vorschau/index.html";
filter = [
"html2text"
"strip"
{
shellpipe = ''
${pkgs.gnused}/bin/sed 's/&#32;/ /g;s/))/&\n/g;s/ \+/ /g'
'';
}
];
}
{
name = "Kratylos";
url = "https://kratylos.reichert-online.org/current_issue/KRATYLOS";
@@ -49,11 +36,6 @@
url = "http://www.zeno.org/Lesesaal/M/E-Books";
filter = [{element-by-class = "zenoCOMain";} "html2text" "strip"];
}
{
name = "Arnshaugk Neuerscheinungen";
url = "http://www.arnshaugk.de/index.php";
filter = ["html2text" "strip"];
}
{
name = "Carolina Welslau";
url = "https://carolinawelslau.de/";
@@ -64,6 +46,11 @@
url = "https://lisalittmann.de/";
filter = [{element-by-id = "main";} "html2text" "strip"];
}
{
name = "Tatort: Fälle";
url = "https://www.daserste.de/unterhaltung/krimi/tatort/sendung/index.html";
filter = [{element-by-class = "linklist";} "html2text" "strip"];
}
{
name = "Lisa Littmann: Projects";
url = "https://lisalittmann.de/projects/";

View File

@@ -60,7 +60,7 @@ in {
addresses = "irc.hackint.org/6697";
ipv6 = true;
ssl = true;
autojoin = ["#eloop" "#krebs" "#hsmr" "#nixos" "#the_playlist" "#flipdot-berlin" "#hackint"];
autojoin = ["#eloop" "#krebs" "#hsmr" "#hsmr-moin" "#nixos" "#the_playlist" "#flipdot-berlin" "#hackint"];
sasl_mechanism = "plain";
sasl_username = nick;
sasl_password = lib.strings.fileContents <system-secrets/irc/hackint>;
@@ -104,6 +104,9 @@ in {
addresses = "news.r";
autojoin = ["#cook" "#drachengame" "#oepnv" "#kmeinung" "#memes"];
command = "/oper aids balls";
sasl_mechanism = "plain";
sasl_username = nick;
sasl_password = nick + nick;
};
};
};

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