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

211 Commits

Author SHA1 Message Date
acbed9d694 packages: install gnome disk utility 2024-05-04 09:36:11 +02:00
c7caaa0fb0 fonts: install coranica, egyptianText 2024-05-04 09:35:54 +02:00
d9751b5205 kdeconnect: enable 2024-05-04 09:35:38 +02:00
62f99dea6a feat(radio, spotifyd): decrease runtime max sec 2024-05-01 16:06:50 +02:00
d162de768d feat: set xdg userdirs 2024-04-30 17:39:09 +02:00
bbf47de957 chore: update 2024-04-28 16:35:25 +02:00
e3a18282c1 feat: symlink synced directories to home 2024-04-28 13:25:24 +02:00
91aa4aeb3e feat(aerc): set gpg key id 2024-04-28 13:24:27 +02:00
b7caaeec65 feat(aerc): add translation keybind 2024-04-28 13:24:06 +02:00
58eff4733b feat(mpv-tv): add another live tv source 2024-04-28 13:23:12 +02:00
844d5849da feat(radio): try out runtimemaxsec 2024-04-28 11:02:37 +02:00
8afe6e1f11 feat(restic): change backup disk 2024-04-25 08:45:15 +02:00
7e23072334 fix(sway): does not like ß key 2024-04-23 20:39:51 +02:00
a8d92a2f41 feat: krita 2024-04-23 20:39:34 +02:00
964ae49c2f feat(obsidian-vim): leader r to refresh nerdtree 2024-04-16 19:57:41 +02:00
github-actions[bot]
6b6dd067ab flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/8cb01a0e717311680e0cbca06a76cbceba6f3ed6?narHash=sha256-PAdwm5QqdlwIqGrfzzvzZubM%2BFXtilekQ/FA0cI49/o%3D' (2024-02-13)
  → 'github:ryantm/agenix/1381a759b205dff7a6818733118d02253340fd5e?narHash=sha256-/JdiT9t%2BzzjChc5qQiF%2BjhrVhRt8figYH29rZO7pFe4%3D' (2024-04-02)
• Updated input 'home-manager':
    'github:nix-community/home-manager/652fda4ca6dafeb090943422c34ae9145787af37?narHash=sha256-cLbLPTL1CDmETVh4p0nQtvoF%2BFSEjsnJTFpTxhXywhQ%3D' (2024-02-03)
  → 'github:nix-community/home-manager/d6bb9f934f2870e5cbc5b94c79e9db22246141ff?narHash=sha256-dA82pOMQNnCJMAsPG7AXG35VmCSMZsJHTFlTHizpKWQ%3D' (2024-04-06)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/878ef7d9721bee9f81f8a80819f9211ad1f993da?narHash=sha256-MvFKESbq4rUWuaf2RKPNYENaSZEw/jaCLo2gU6oREcM%3D' (2024-03-14)
  → 'github:NixOS/nixpkgs/51651a540816273b67bc4dedea2d37d116c5f7fe?narHash=sha256-edTFV4KldkCMdViC/rmpJa7oLIU8SE/S35lh/ukC7bg%3D' (2024-04-11)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/60e8f01bbc10c6a127d92bf5005cc8cceb489de8?narHash=sha256-wQnk05LJDdlODcfM1qR56Wa9IYkK2/SXS0UskFUXZyw%3D' (2024-03-17)
  → 'github:NixOS/nixpkgs/1b691969594504eabec53a11a366acf1c75387d1?narHash=sha256-iw3O6mVc%2BJx7UZMnIWyzuIc0x7xN5RY0oxZ4gbFY5wU%3D' (2024-04-13)
• Updated input 'nur':
    'github:nix-community/NUR/585df78aeb0bf632a4370891de15a4b99070f1a3?narHash=sha256-/SrPq8jfTCooM7QeRcpOvCoeGOn08NMDRC74oF/snJA%3D' (2024-03-17)
  → 'github:nix-community/NUR/51cab5c3aaf90ff4511a63962715e45cd7ee2f15?narHash=sha256-0p8h0MALnsJSF6%2BZxvwcqsm6E91Dr350FdKzLSHG%2B6k%3D' (2024-04-14)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/42baa9e2e4713572d7481f917243b07dffdf54b8?narHash=sha256-Lbdq3/TH4VrrR7A6FxIYwu5tFOcprYh8Q49Nc9s/i6c%3D' (2024-03-16)
  → 'github:oxalica/rust-overlay/a497535d074432133b683dda3a1faa8c8ab587ad?narHash=sha256-ZJxC6t2K0UAPW%2BlV%2BbJ%2BpAtwbn29eqZQzXLTG54oL%2BI%3D' (2024-04-13)
• Updated input 'voidrice':
    'github:Lukesmithxyz/voidrice/7a96fb100cf385e05c211937b509d2bf166299e6?narHash=sha256-cb5q1m/o9rNHckPz89v5TnYhXj/vFR5auBmEMMOmHUA%3D' (2023-12-30)
  → 'github:Lukesmithxyz/voidrice/cf4a12acb3a70951fd59d67e0738bf3ab2d1045c?narHash=sha256-MlOLv6/CKm1sSmikYaNDvglE/3sROZnjmacG0GP4rXM%3D' (2024-03-28)
2024-04-15 22:31:18 +02:00
02b96f2658 feat(fu-berlin): add comment for home dir mount 2024-04-15 22:23:01 +02:00
e668c1eec6 feat(panoptikon): do not care about bitcoin 2024-04-15 22:22:45 +02:00
611d3fd7bf fix: re-mock secrets 2024-04-12 09:27:08 +02:00
d6a3deecc7 chore: refactor home directory mounts 2024-04-12 09:23:39 +02:00
22b172afd9 fix(zaatar): remove obsolete fritzbox import 2024-04-12 09:22:44 +02:00
154c57f9c0 feat(hu-berlin): mount under remote/hu 2024-04-09 19:41:37 +02:00
9432fa62d8 feat(fu-berlin): mount home directories via sshfs 2024-04-09 19:41:24 +02:00
4020fd7ad2 fix: used wrong testimonial nicks 2024-04-08 10:04:55 +00:00
33f308f6b3 feat: mount fritzbox as user 2024-04-08 10:51:12 +02:00
2092e46d39 feat: @flxai testimonial 2024-04-08 08:20:17 +02:00
aff3f9ac92 feat: mount network devices under ~/remote 2024-04-08 08:17:52 +02:00
35a91d755a feat: keep downloaded files for 7 days 2024-04-07 15:08:06 +02:00
3c2a66f990 zaatar: disable influxdb 2024-04-06 17:32:15 +02:00
8633167719 fix: update path to obsidian 2024-04-05 11:41:24 +02:00
717f5f661b feat(restic): backup mobile sync 2024-04-05 11:41:13 +02:00
6ae85bde15 feat: remove beets 2024-04-05 11:40:46 +02:00
bd3fce4163 fix: Maildir is (machine-specific) state 2024-04-04 22:55:18 +02:00
077dc7d1fa fix(restic): restic user should own its password 2024-04-04 22:20:52 +02:00
33412d50a3 feat: change maildir path to sync 2024-04-04 14:30:59 +02:00
27c6aa1462 feat(syncthing): heym → kibbeh 2024-04-04 14:27:04 +02:00
e4734ce874 feat(syncthing): add trashcan, remove dead devices 2024-04-04 14:06:01 +02:00
393715a373 feat(weechat): fewer channels 2024-04-04 14:05:33 +02:00
c094653af3 feat: gomuks 2024-04-04 14:05:14 +02:00
74849558fd feat(syncthing): remove music and mundoiu 2024-04-03 15:15:43 +02:00
ee0feb3a06 feat(mpd): get music from nas. no need for syncthing anymore 2024-04-03 15:15:43 +02:00
cdd7d1a0ed feat: nemo → pcmanfm 2024-04-03 15:15:43 +02:00
6ff3f79f83 feat: mount fritzbox 2024-04-03 15:15:43 +02:00
7c17fa4728 feat: restructure home directory 2024-04-03 15:15:43 +02:00
5909167243 feat: restructure home directory 2024-04-03 07:56:13 +02:00
ee71156f3b feat(syncthing): add tmp folder 2024-04-03 07:56:13 +02:00
e0826c2f4e feat(fonts): add koine greek 2024-04-03 00:46:16 +02:00
0b0a5c3c62 feat(i3status-rust): remove weechat status as it always needs ssh to be unlocked 2024-04-03 00:46:16 +02:00
45e9c2674e feat(syncthing): reduce complexity 2024-04-02 23:26:35 +02:00
4946eceab9 fix(restic): allow receiving backups from fatteh 2024-04-02 22:03:03 +02:00
8a543eee37 chore: format 2024-04-02 21:05:24 +02:00
7482a88ef3 feat(zsh): vim edit command line 2024-04-02 21:05:04 +02:00
4b523fdad1 feat(hledger): hora standalone 2024-04-02 21:04:45 +02:00
0abebcced3 feat(maakaron): make hora tools more robust 2024-04-02 14:27:44 +02:00
6ec31211d9 feat(maakaron): hora-start, hora-stop 2024-04-02 13:48:20 +02:00
d02567677c feat(panoptikon): watch kobudo 2024-03-31 12:48:16 +02:00
62b0f425e6 feat: install graphviz 2024-03-31 12:48:03 +02:00
641b8976d5 i3: add messaging workspace 2024-03-30 23:11:03 +01:00
d9be7c5eeb feat(i3): add weechat scratchpad window 2024-03-24 12:40:01 +01:00
aecf6b8616 feat: do not depend on github for ssh keys bc insecure 2024-03-24 12:11:40 +01:00
83ca7976ce fix(stardict): move huzheng dictionary files to cyberlocker 2024-03-24 12:04:14 +01:00
e0a1194dae feat: disable power-action on fatteh bc it gets confused about the dual battery 2024-03-20 17:44:25 +01:00
da463f2c27 fix(manakish): disable systemd-networkd-wait-online 2024-03-20 15:13:15 +01:00
github-actions[bot]
df20b34b2b flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/1ef2e671c3b0c19053962c07dbda38332dcebf26?narHash=sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA%3D' (2024-01-15)
  → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a?narHash=sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ%3D' (2024-03-11)
• Updated input 'nixinate':
    'github:matthewcroughan/nixinate/7902ae845e6cc5bd450e510cdf5e009a6e4a44d9?narHash=sha256-qHrNMYWukOKmKVf6wXOGKj1xxUnOGjvTRbt/PLLXuBE%3D' (2023-06-30)
  → 'github:matthewcroughan/nixinate/452f33c60df5b72ad0858f5f2cf224bdf1f17746?narHash=sha256-VOQrKK7Df/IVuNki%2BNshVuGkTa/Tw0GigPjWcZff6kk%3D' (2024-02-25)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c5101e457206dd437330d283d6626944e28794b3?narHash=sha256-qxT5jSLhelfLhQ07%2BAUxSTm1VnVH%2BhQxDkQSZ/m/Smo%3D' (2024-02-23)
  → 'github:NixOS/nixpkgs/878ef7d9721bee9f81f8a80819f9211ad1f993da?narHash=sha256-MvFKESbq4rUWuaf2RKPNYENaSZEw/jaCLo2gU6oREcM%3D' (2024-03-14)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/7794d8a78570335f10b0f97ae72b14b33c6addc2?narHash=sha256-pxDFK5p7csogTirrDJFVSli4Yy0LvHaQQQj71UU0MmQ%3D' (2024-02-24)
  → 'github:NixOS/nixpkgs/60e8f01bbc10c6a127d92bf5005cc8cceb489de8?narHash=sha256-wQnk05LJDdlODcfM1qR56Wa9IYkK2/SXS0UskFUXZyw%3D' (2024-03-17)
• Updated input 'nur':
    'github:nix-community/NUR/192aa9b134f867b6811ecd0444e994ef941648db?narHash=sha256-op6sluExBoA6Y3FdeHtDINEWCXzns4jg2H%2BxfkjikuI%3D' (2024-02-24)
  → 'github:nix-community/NUR/585df78aeb0bf632a4370891de15a4b99070f1a3?narHash=sha256-/SrPq8jfTCooM7QeRcpOvCoeGOn08NMDRC74oF/snJA%3D' (2024-03-17)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/9b24383d77f598716fa0cbb8b48c97249f5ee1af?narHash=sha256-NCTw235XwSDbeTAtAwg/hOeNOgwYhVq7JjDdbkOgBeA%3D' (2024-02-24)
  → 'github:oxalica/rust-overlay/42baa9e2e4713572d7481f917243b07dffdf54b8?narHash=sha256-Lbdq3/TH4VrrR7A6FxIYwu5tFOcprYh8Q49Nc9s/i6c%3D' (2024-03-16)
2024-03-20 15:13:15 +01:00
51f51a78bd feat: there is a reason for one-monitor setup 2024-03-20 15:13:15 +01:00
155cdc68af feat(mime): add auto-added tg associations 2024-03-20 14:18:26 +01:00
82b5da8089 feat(fatteh): use light theme bc it is spring outside 2024-03-20 14:18:00 +01:00
3ddbbf3ab5 feat: illum 2024-03-20 08:13:07 +01:00
f8bfc83a61 fix(ssh): fatteh hostname 2024-03-20 08:12:59 +01:00
491a13ed95 feat: gnome-keyring not via home-manager 2024-03-20 08:12:50 +01:00
58c4f517c5 chore: update secrets 2024-03-19 23:23:08 +01:00
c1b10f0504 wip: update hashes 2024-03-19 23:16:25 +01:00
62363cc26f feat: autologin 2024-03-19 23:06:58 +01:00
f93cb20dae fix: do not make this error! 2024-03-19 23:05:43 +01:00
f57d1780fb feat(fatteh): integrate into niveum 2024-03-19 21:14:27 +01:00
d4cb0abc24 feat: disable autologin 2024-03-19 20:21:20 +01:00
1f418c9532 chore: remock secrets 2024-03-19 20:13:33 +01:00
ab3a17be25 wip: initialize fatteh 2024-03-19 20:13:13 +01:00
50a96b5f7a feat(dashboard): add calendar 2024-03-18 14:55:41 +01:00
31b44906ab feat(prometheus): monitor beta alew 2024-03-18 14:55:24 +01:00
858a7e52c3 chore: update secrets 2024-03-17 21:42:07 +01:00
f69d5c423c feat(panoptikon): allow secret configuration, telegram reporter, BTC price alert 2024-03-17 21:42:01 +01:00
04bf10a356 feat: more sanskrit radio 2024-03-17 21:41:36 +01:00
f2e522a52a feat: add brassica 2024-03-17 21:41:25 +01:00
0cbf4527c0 feat(stylix): configure theme per system 2024-03-17 21:41:05 +01:00
64972f99b7 feat(keyboard): move xcompose out of general keyboard config 2024-03-17 21:40:37 +01:00
e4be74ca87 fix(dashboard): do not show globally hidden feed entries 2024-03-17 21:39:59 +01:00
cad3d7ecd5 feat: install dashboard programm 2024-03-15 09:06:24 +01:00
fe199e02a0 feat(i3): obsidian scratchpad 2024-03-15 09:06:15 +01:00
ef6f7bb23d fix(polyglot): path -> string 2024-03-15 09:05:51 +01:00
b36be765e8 feat: polyglot script for language learning 2024-03-15 08:39:39 +01:00
484c445a24 feat: configure himalaya email (and add to dashboard) 2024-03-14 22:31:58 +01:00
6a15af9f0b fix(dashboard): exclude liturgy calendar 2024-03-14 21:43:29 +01:00
d464b137cb feat: use dracula theme 2024-03-14 21:43:13 +01:00
b000efddbe feat: zaatar does not need keyboard config 2024-03-14 21:41:24 +01:00
9d7eea58bd chore: update keys hash 2024-03-14 21:38:03 +01:00
ee5c127290 feat(khal): autodiscover, remove stale calendars 2024-03-14 21:28:53 +01:00
0cb3c06c0a Revert "fix(atuin): init outside promptInit"
This reverts commit 0c9f488f56.
2024-03-14 18:20:35 +01:00
0f083bd4e2 feat(prometheus): request alew API endpoint 2024-03-14 18:19:34 +01:00
19c9f39128 feat(i3): hide bar 2024-03-14 18:19:11 +01:00
6db336ec1e chore(maakaron): format 2024-03-14 18:18:58 +01:00
7d51ce0850 fix: use pkgs.system 2024-03-14 18:18:36 +01:00
0ee765de37 feat(vdirsyncer): sync new calendars 2024-03-13 09:02:34 +01:00
aa2c84142b feat(i3): reintroduce workspaces, add info workspace, reduce bar info 2024-03-13 09:02:34 +01:00
3af20cdd7b feat(maakaron): configure git, shell and tools 2024-03-12 14:43:12 +01:00
0c9f488f56 fix(atuin): init outside promptInit 2024-03-12 14:42:27 +01:00
2f9df623fd chore: remove config input in stardict 2024-03-12 14:42:27 +01:00
8b7745f473 fix: make more mac-compatible 2024-03-12 14:42:27 +01:00
8c12edfdb9 feat(sway): add preliminary configuration 2024-03-03 15:03:20 +01:00
f263d5d175 chore: format 2024-02-27 20:59:54 +01:00
61b78cfc73 fix(bluetooth): use default package 2024-02-27 20:59:43 +01:00
github-actions[bot]
18dbceea76 flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/417caa847f9383e111d1397039c9d4337d024bf0' (2023-12-24)
  → 'github:ryantm/agenix/8cb01a0e717311680e0cbca06a76cbceba6f3ed6' (2024-02-13)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/20f65b86b6485decb43c5498780c223571dd56ef' (2024-02-09)
  → 'github:NixOS/nixpkgs/c5101e457206dd437330d283d6626944e28794b3' (2024-02-23)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/aeea37e779933d7b77f4a0e9c1bb383ab71cd450' (2024-02-11)
  → 'github:NixOS/nixpkgs/7794d8a78570335f10b0f97ae72b14b33c6addc2' (2024-02-24)
• Updated input 'nur':
    'github:nix-community/NUR/3a315bbd42ead8a1bafa90e8c3d14c43c80db912' (2024-02-10)
  → 'github:nix-community/NUR/192aa9b134f867b6811ecd0444e994ef941648db' (2024-02-24)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=00afd8bdb8e297ca3f8d1316d058b867ab794674' (2024-02-02)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=00af6f8e749d720a0423834024adafef4f9ebf03' (2024-02-16)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/49550275c3956b861dbb7cb83a732803f013bdbb' (2024-02-10)
  → 'github:oxalica/rust-overlay/9b24383d77f598716fa0cbb8b48c97249f5ee1af' (2024-02-24)
2024-02-27 20:59:12 +01:00
Meinhardt
0c97aa2461 feat(maakaron): init system 2024-02-27 11:32:29 +01:00
680cf898b6 fix(neovim): no expandtab in tsv 2024-02-25 22:19:12 +01:00
77a4b6fd32 feat: customize compose keys 2024-02-25 22:18:57 +01:00
fce3abfe0c Merge remote-tracking branch 'origin/update_flake_lock_action' 2024-02-14 09:38:28 +01:00
d1624915c4 feat(keyboards): add locally, patch persian/arabic keyboard
Fixes #51
2024-02-13 23:30:54 +01:00
github-actions[bot]
d68c5460fd flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/10cd9c53115061aa6a0a90aad0b0dde6a999cdb9' (2024-01-19)
  → 'github:nix-community/home-manager/652fda4ca6dafeb090943422c34ae9145787af37' (2024-02-03)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d7f206b723e42edb09d9d753020a84b3061a79d8' (2024-01-22)
  → 'github:NixOS/nixpkgs/20f65b86b6485decb43c5498780c223571dd56ef' (2024-02-09)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/a95d98f05a5da6cf66bef2584cf7a70b474d4518' (2024-01-23)
  → 'github:NixOS/nixpkgs/aeea37e779933d7b77f4a0e9c1bb383ab71cd450' (2024-02-11)
• Updated input 'nur':
    'github:nix-community/NUR/8452fbba02b789b9046356a9546db1a312a04804' (2024-01-23)
  → 'github:nix-community/NUR/3a315bbd42ead8a1bafa90e8c3d14c43c80db912' (2024-02-10)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=186f7cff7d09c0330be2ae6644eb16ad531a5214' (2024-01-09)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=00afd8bdb8e297ca3f8d1316d058b867ab794674' (2024-02-02)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/f889dc31ef97835834bdc3662394ebdb3c96b974' (2024-01-23)
  → 'github:oxalica/rust-overlay/49550275c3956b861dbb7cb83a732803f013bdbb' (2024-02-10)
2024-02-11 00:43:42 +00:00
bb0dd24abd feat(keyboard): add link to buckwalter source, save cop on cyberlocker 2024-02-09 18:26:26 +01:00
c66bc3cb68 feat(fu-berlin): no need for blackboard calendar 2024-02-09 17:04:01 +01:00
0c612eeb7a fix: disable stockholm radio news 2024-02-06 15:03:36 +01:00
a34554a283 fix(pandoc): update hash 2024-02-05 10:20:19 +01:00
b214e55690 fix(panoptikon): limit restart 2024-02-05 10:20:03 +01:00
065b3a2d6a feat(dmenu-randr): always do multi-monitor 2024-02-02 09:10:31 +01:00
6d9ce99e5b fix: use my own dmenu-randr because @LukeSmithxyz is not feature-complete 2024-02-02 09:07:46 +01:00
a3c69580e5 chore: update 2024-01-23 15:19:32 +01:00
fa71f02dd0 feat(aerc): office upgrade 2024-01-23 14:07:10 +01:00
82993ca54a feat(email): bye bye meinhark 2024-01-10 14:22:38 +01:00
04c60776e3 feat: disable kiosk on zaatar 2024-01-10 11:11:46 +01:00
50e18c168e feat: add journalctl to admin essentials 2024-01-09 23:53:21 +01:00
5fd7bb61d5 fix(spotifyd): give access to pipewire 2024-01-09 23:52:55 +01:00
64d7437fa4 fix(spotifyd): disable mpris
fixes #48
big thanks to @n0ur and her copilot
2024-01-09 21:29:20 +01:00
76d8ebaf2b feat: cro for temporary chromium profile 2024-01-09 20:38:55 +01:00
2b5dde01ec feat: reenable man-pandoc
it was not broken
fixes #47
2024-01-09 19:38:04 +01:00
7b0f65645d feat(makanek): do not need onlyoffice 2024-01-09 14:57:29 +01:00
a9f51807b4 feat: reinstate nixinate for aarch64 ful 2024-01-09 08:49:55 +01:00
53d9e05b95 feat: add sqlite to admin essentials 2024-01-09 08:13:37 +01:00
425a2ad7f5 feat: factor out and spread admin essentials package 2024-01-09 08:00:33 +01:00
899163c847 feat(streams): hitradio FFH 2024-01-09 07:59:55 +01:00
ca48e370ff feat: use NixOS gnome keyring instead of the one from HM 2024-01-09 07:59:41 +01:00
f79ab7211c fix(zaatar): systemwide pipewire 2024-01-08 14:55:38 +01:00
6121a8db3a feat: reactivate krebs wallpaper 2024-01-08 14:55:04 +01:00
ef7c53f15b feat(pipewire): try to do some pulseaudio networking stuff 2024-01-02 10:35:03 +01:00
e5a3ce5f8d feat(stylix): onedark is my new best friend 2023-12-29 20:01:40 +01:00
63cdfef045 chore: allow insecure electron for jellyfin or something 2023-12-29 20:01:26 +01:00
19c916b771 feat: deploy only with 2 cores 2023-12-29 20:01:01 +01:00
acdc09efe0 chore: add link to arm issue 2023-12-28 21:31:50 +01:00
13860cfb32 chore: update 2023-12-28 12:28:59 +01:00
77d75b4d8b feat: replace nixinate by nixos-rebuild 2023-12-28 12:28:59 +01:00
263e13c8f8 feat: gthumb 2023-12-27 10:38:42 +01:00
e3fcf6e817 chore: re-mock secrets 2023-12-23 09:43:26 +01:00
89c37d390f feat(telegram-bots): add streaming link converter 2023-12-23 07:47:06 +01:00
3eeb5fd787 fix: disable pandoc man for now 2023-12-23 07:39:29 +01:00
cf0c353856 chore: update gardiner new font 2023-12-23 07:38:59 +01:00
c76c396342 chore: update 2023-12-21 19:19:36 +01:00
d60ac5de17 feat(fonts): add hebrew font 2023-12-21 19:19:30 +01:00
d9c324c22d fix(aerc): i want to read email again 2023-12-08 19:01:09 +01:00
aec50b5d84 feat: update to 23.11 2023-12-06 14:42:13 +01:00
7da1e6178d fix: bluetooth sound? 2023-12-05 19:06:59 +01:00
5fba7afd82 feat: allow to use gpt4 from klem 2023-11-28 16:11:23 +01:00
683a206c7b feat(panoptikon): add fu events 2023-11-28 16:11:04 +01:00
014cead444 feat(streams): add swr3 2023-11-20 09:05:52 +01:00
github-actions[bot]
5ca1312464 flake.lock: Update
Flake lock file updates:

• Updated input 'coptic-dictionary':
    'github:kmein/coptic-dictionary/bd6762d70d079ddc6a9cb40b008e234ee662865e' (2023-09-15)
  → 'github:kmein/coptic-dictionary/faa6cd85c46e5a4d5a676a38c2799e6b2ba44460' (2023-11-16)
• Updated input 'home-manager':
    'github:nix-community/home-manager/07682fff75d41f18327a871088d20af2710d4744' (2023-09-19)
  → 'github:nix-community/home-manager/04bac349d585c9df38d78e0285b780a140dc74a4' (2023-11-12)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/34bdaaf1f0b7fb6d9091472edc968ff10a8c2857' (2023-11-01)
  → 'github:NixOS/nixpkgs/9fb122519e9cd465d532f736a98c1e1eb541ef6f' (2023-11-16)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/13f373eab6f2b2b366701652372af5cee099f637' (2023-11-03)
  → 'github:NixOS/nixpkgs/3fe4f799067d0458b386bdb4fbdaea55315e8ee0' (2023-11-19)
• Updated input 'nur':
    'github:nix-community/NUR/77be844f9f98a9abd055dca953f60a15f4f457e3' (2023-11-03)
  → 'github:nix-community/NUR/ce4bf2a6f08aea6c6824cffd7f511058764d83ab' (2023-11-18)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=57f33219ab35e41b3c2108280469bbb1575f8da6' (2023-10-31)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=d64d84117ec57bb03e67a2f0b90be8b7fbbc424f' (2023-11-18)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/321affd863e3e4e669990a1db5fdabef98387b95' (2023-11-03)
  → 'github:oxalica/rust-overlay/616074a1b2a71bbe44da4cc29a64255aecb8d541' (2023-11-18)
• Updated input 'voidrice':
    'github:Lukesmithxyz/voidrice/ea3e1e14cc49d68c9900fb05d9ee7bb9e719688e' (2023-10-29)
  → 'github:Lukesmithxyz/voidrice/07952026753f1bbeaf5b6c4eb5414a9c51536041' (2023-11-15)
2023-11-19 00:45:18 +00:00
3b891aea90 feat: remove meinhark@hu 2023-11-07 09:14:49 +01:00
b096a1c1ae feat(panoptikon): watch humboldt-preis 2023-11-06 10:55:07 +01:00
a211650860 chore: update 2023-11-03 10:58:11 +01:00
8f895f01a7 feat: ledger -> hledger 2023-10-30 14:26:50 +01:00
765a99d89f feat(stw-berlin): use correct user and group 2023-10-30 14:26:11 +01:00
c9cd49c3ac fix(hledger-backup): run as root 2023-10-30 14:25:54 +01:00
0f612ba72b chore: update 2023-10-30 06:34:10 +01:00
0f6819f54a feat: freies radio kassel 2023-10-29 11:55:29 +01:00
6ffed60aaf fix: radio arabica -> radio orient 2023-10-29 11:49:56 +01:00
0a847dbb1e feat(weechat): ignore prometheus 2023-10-28 17:15:10 +02:00
074a6b9434 feat(aerc): better attachment regex 2023-10-17 12:34:47 +02:00
229a48ac07 feat(emailmenu): case insensitive, correct prompt 2023-10-17 12:34:36 +02:00
github-actions[bot]
df508de28b flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/1f677b3e161d3bdbfd08a939e8f25de2568e0ef4' (2023-09-22)
  → 'github:ryantm/agenix/daf42cb35b2dc614d1551e37f96406e4c4a2d3e4' (2023-10-08)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/8a4c17493e5c39769f79117937c79e1c88de6729' (2023-10-03)
  → 'github:NixOS/nixpkgs/bd1cde45c77891214131cbbea5b1203e485a9d51' (2023-10-11)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/96d35bdda3d38b5d0a13b4deddf5bbb6fb503cd2' (2023-10-06)
  → 'github:NixOS/nixpkgs/00e71387ae4107c935daf09b24b021d4b1269b1d' (2023-10-15)
• Updated input 'nur':
    'github:nix-community/NUR/e9db143072899753216cd84143489ed2a544e793' (2023-10-06)
  → 'github:nix-community/NUR/00cf27339d55115a0f5311041dded91049e4426d' (2023-10-14)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=7377d4764fd086f8d223ee4e3c900b5ed5f6800e' (2023-10-05)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=09c204fd5bbeb28ef415f7b1c09a7cfc1119d6b7' (2023-10-12)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/fdb37574a04df04aaa8cf7708f94a9309caebe2b' (2023-10-06)
  → 'github:oxalica/rust-overlay/dce60ca7fca201014868c08a612edb73a998310f' (2023-10-14)
2023-10-15 18:42:57 +02:00
05702d9917 feat(i3status-rust): use sensible separator for music 2023-10-15 18:42:12 +02:00
98c0e744ce chore: update secrets 2023-10-11 17:31:34 +02:00
33770cdf63 chore: update email passwords 2023-10-11 11:45:11 +02:00
dbecace73b chore: remock secrets 2023-10-10 23:41:37 +02:00
04738b91ee feat(i3status-rust): show unread miniflux items 2023-10-10 22:38:40 +02:00
d7c3e03c0f feat(mpv): add mpris support 2023-10-10 13:06:26 +02:00
5811fa3921 feat: pulseaudio → pipewire 2023-10-10 13:06:17 +02:00
f435277463 feat(i3status): show what music is playing 2023-10-10 13:06:00 +02:00
587ec584c1 fix(i3): play-pause on play-pause key 2023-10-10 13:05:47 +02:00
832b115a0d feat(hledger): hora-year wrapper 2023-10-09 10:00:20 +02:00
385a26ac9d chore: update 2023-10-06 15:09:27 +02:00
1b92a35237 feat(aerc): compact pronouns 2023-10-06 14:50:05 +02:00
06805e5b2a fix(aerc): respect the damn signature! 2023-10-06 14:47:10 +02:00
3f50c45bed feat: emailmenu 2023-10-06 12:29:21 +02:00
5a4d49e059 feat(aerc): add pronouns 2023-10-06 10:57:35 +02:00
78eb463742 feat(unicodmenu): add emoji flags 2023-10-06 10:50:31 +02:00
55f0484f93 feat: install dhall 2023-10-06 10:50:16 +02:00
75d19297ee feat(aerc): do not slowly suggest contacts 2023-10-04 19:19:52 +02:00
084a56b0a1 feat: no more fsklassp 2023-10-04 19:19:52 +02:00
3c5246b159 feat: thunderbird 2023-09-28 17:54:20 +02:00
73ce1bc4b5 feat(radio): install qasaid refresher script 2023-09-28 13:40:39 +02:00
84b4e50e64 feat: jellyfin media player 2023-09-21 07:27:42 +02:00
ed160923c7 feat(fu-berlin): mount zodiac cifs 2023-09-21 07:27:11 +02:00
38c1dc8745 fix: one-dark → onedark 2023-09-18 12:05:16 +02:00
559a6cdc86 feat(fu-berlin): mount zodiac cifs 2023-09-18 12:05:01 +02:00
github-actions[bot]
d4b208b620 flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/d8c973fd228949736dedf61b7f8cc1ece3236792' (2023-07-24)
  → 'github:ryantm/agenix/572baca9b0c592f71982fca0790db4ce311e3c75' (2023-09-15)
• Updated input 'coptic-dictionary':
    'github:kmein/coptic-dictionary/7316ef7a4264afa65c96a2e089845c79fa25f19c' (2023-08-07)
  → 'github:kmein/coptic-dictionary/bd6762d70d079ddc6a9cb40b008e234ee662865e' (2023-09-15)
• Added input 'coptic-dictionary/niveum':
    'github:kmein/niveum/65dc602d679b591224f09ea83b66ad0780a4664d' (2023-09-15)
• Added input 'coptic-dictionary/niveum/agenix':
    'github:ryantm/agenix/d8c973fd228949736dedf61b7f8cc1ece3236792' (2023-07-24)
• Added input 'coptic-dictionary/niveum/agenix/darwin':
    'github:lnl7/nix-darwin/87b9d090ad39b25b2400029c64825fc2a8868943' (2023-01-09)
• Added input 'coptic-dictionary/niveum/agenix/darwin/nixpkgs':
    follows 'coptic-dictionary/niveum/agenix/nixpkgs'
• Added input 'coptic-dictionary/niveum/agenix/home-manager':
    follows 'coptic-dictionary/niveum/home-manager'
• Added input 'coptic-dictionary/niveum/agenix/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/coptic-dictionary':
    'github:kmein/coptic-dictionary/7316ef7a4264afa65c96a2e089845c79fa25f19c' (2023-08-07)
• Added input 'coptic-dictionary/niveum/coptic-dictionary/kellia-dictionary':
    'github:KELLIA/dictionary/4fe62847e93b8a87ad7ca5de19190b34ff9e0c99' (2022-08-19)
• Added input 'coptic-dictionary/niveum/coptic-dictionary/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/flake-utils':
    'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23)
• Added input 'coptic-dictionary/niveum/flake-utils/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09)
• Added input 'coptic-dictionary/niveum/home-manager':
    'github:nix-community/home-manager/5bac4a1c06cd77cf8fc35a658ccb035a6c50cd2c' (2023-08-28)
• Added input 'coptic-dictionary/niveum/home-manager/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/menstruation-backend':
    'github:kmein/menstruation.rs/e34af4393963cdbadb456b7b9ae2e95e6db7b8a3' (2023-02-22)
• Added input 'coptic-dictionary/niveum/menstruation-backend/flake-utils':
    follows 'coptic-dictionary/niveum/flake-utils'
• Added input 'coptic-dictionary/niveum/menstruation-backend/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/menstruation-backend/rust-overlay':
    follows 'coptic-dictionary/niveum/rust-overlay'
• Added input 'coptic-dictionary/niveum/menstruation-telegram':
    'github:kmein/menstruation-telegram/f7ddb6d9610aacb50ec66a3ce1bdc49fe4664a49' (2023-02-22)
• Added input 'coptic-dictionary/niveum/menstruation-telegram/flake-utils':
    follows 'coptic-dictionary/niveum/flake-utils'
• Added input 'coptic-dictionary/niveum/menstruation-telegram/menstruation-backend':
    follows 'coptic-dictionary/niveum/menstruation-backend'
• Added input 'coptic-dictionary/niveum/menstruation-telegram/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs-old'
• Added input 'coptic-dictionary/niveum/nix-on-droid':
    'github:t184256/nix-on-droid/2301e01d48c90b60751005317de7a84a51a87eb6' (2023-06-30)
• Added input 'coptic-dictionary/niveum/nix-on-droid/home-manager':
    follows 'coptic-dictionary/niveum/home-manager'
• Added input 'coptic-dictionary/niveum/nix-on-droid/nix-formatter-pack':
    'github:Gerschtli/nix-formatter-pack/14876cc8fe94a3d329964ecb073b4c988c7b61f5' (2022-10-25)
• Added input 'coptic-dictionary/niveum/nix-on-droid/nix-formatter-pack/nixpkgs':
    follows 'coptic-dictionary/niveum/nix-on-droid/nixpkgs'
• Added input 'coptic-dictionary/niveum/nix-on-droid/nix-formatter-pack/nmd':
    'gitlab:rycee/nmd/b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169' (2022-10-19)
• Added input 'coptic-dictionary/niveum/nix-on-droid/nix-formatter-pack/nmt':
    'gitlab:rycee/nmt/d83601002c99b78c89ea80e5e6ba21addcfe12ae' (2022-03-23)
• Added input 'coptic-dictionary/niveum/nix-on-droid/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/nix-on-droid/nixpkgs-for-bootstrap':
    'github:NixOS/nixpkgs/c7ff1b9b95620ce8728c0d7bd501c458e6da9e04' (2023-06-16)
• Added input 'coptic-dictionary/niveum/nix-on-droid/nmd':
    'gitlab:rycee/nmd/b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169' (2022-10-19)
• Added input 'coptic-dictionary/niveum/nixinate':
    'github:matthewcroughan/nixinate/7902ae845e6cc5bd450e510cdf5e009a6e4a44d9' (2023-06-30)
• Added input 'coptic-dictionary/niveum/nixinate/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/nixpkgs':
    'github:NixOS/nixpkgs/9075cba53e86dc318d159aee55dc9a7c9a4829c1' (2023-09-02)
• Added input 'coptic-dictionary/niveum/nixpkgs-old':
    'github:NixOS/nixpkgs/50fc86b75d2744e1ab3837ef74b53f103a9b55a0' (2023-04-27)
• Added input 'coptic-dictionary/niveum/nixpkgs-unstable':
    'github:NixOS/nixpkgs/3f9e803102d49388de3862e340ac2f9cbe7381e8' (2023-09-02)
• Added input 'coptic-dictionary/niveum/nur':
    'github:nix-community/NUR/91ccb8b645a380a508704c57fa509e09b8b2b33b' (2023-09-02)
• Added input 'coptic-dictionary/niveum/recht':
    'github:kmein/recht/5fa158ce21de797bd95a934dab8d4403b7531d20' (2023-02-23)
• Added input 'coptic-dictionary/niveum/recht/blessings':
    'git+https://cgit.krebsco.de/blessings?ref=refs/heads/master&rev=d94712a015636efe7ec79bc0a2eec6739d0be779' (2019-02-05)
• Added input 'coptic-dictionary/niveum/recht/flake-utils':
    follows 'coptic-dictionary/niveum/flake-utils'
• Added input 'coptic-dictionary/niveum/recht/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=6216c30551876303dac5373e92690a7f05fd0f6f' (2023-08-14)
• Added input 'coptic-dictionary/niveum/rust-overlay':
    'github:oxalica/rust-overlay/cdf3b15af70f2db17d5f47822f12016f1a89bd73' (2023-09-02)
• Added input 'coptic-dictionary/niveum/rust-overlay/flake-utils':
    follows 'coptic-dictionary/niveum/flake-utils'
• Added input 'coptic-dictionary/niveum/rust-overlay/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/scripts':
    'github:kmein/scripts/55dff522684f342f4e970116ab374ba999539288' (2023-07-13)
• Added input 'coptic-dictionary/niveum/scripts/flake-utils':
    follows 'coptic-dictionary/niveum/flake-utils'
• Added input 'coptic-dictionary/niveum/scripts/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/scripts/rust-overlay':
    follows 'coptic-dictionary/niveum/rust-overlay'
• Added input 'coptic-dictionary/niveum/stylix':
    'github:danth/stylix/5c829554280f3139ddbfce8561d7430efbf2abfb' (2023-07-27)
• Added input 'coptic-dictionary/niveum/stylix/base16':
    'github:SenchoPens/base16.nix/dddf2e1c04845d43c89a8e9e37d574519649a404' (2023-07-17)
• Added input 'coptic-dictionary/niveum/stylix/base16/fromYaml':
    'github:SenchoPens/fromYaml/11fbbbfb32e3289d3c631e0134a23854e7865c84' (2023-07-16)
• Added input 'coptic-dictionary/niveum/stylix/flake-compat':
    'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17)
• Added input 'coptic-dictionary/niveum/stylix/home-manager':
    follows 'coptic-dictionary/niveum/home-manager'
• Added input 'coptic-dictionary/niveum/stylix/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/telebots':
    'github:kmein/telebots/5527e359e8394f2f66067de7f61587eb65055209' (2023-02-23)
• Added input 'coptic-dictionary/niveum/telebots/flake-utils':
    'github:numtide/flake-utils/3db36a8b464d0c4532ba1c7dda728f4576d6d073' (2023-02-13)
• Added input 'coptic-dictionary/niveum/telebots/nixpkgs':
    'github:NixOS/nixpkgs/eabc38219184cc3e04a974fe31857d8e0eac098d' (2022-08-02)
• Added input 'coptic-dictionary/niveum/tinc-graph':
    'github:kmein/tinc-graph/91a3a85beaaec4ec43ea5a41322c3a5a6e04edc4' (2023-06-23)
• Added input 'coptic-dictionary/niveum/tinc-graph/flake-utils':
    follows 'coptic-dictionary/niveum/flake-utils'
• Added input 'coptic-dictionary/niveum/tinc-graph/nixpkgs':
    follows 'coptic-dictionary/niveum/nixpkgs'
• Added input 'coptic-dictionary/niveum/tinc-graph/rust-overlay':
    follows 'coptic-dictionary/niveum/rust-overlay'
• Added input 'coptic-dictionary/niveum/voidrice':
    'github:Lukesmithxyz/voidrice/86f05abcce1fd270032975775adb40040c746cfe' (2023-08-25)
• Added input 'coptic-dictionary/niveum/wallpaper-generator':
    'github:pinpox/wallpaper-generator/a2223b9b0c51e0eee0d0b23a5e87228e370bdd5c' (2021-03-15)
• Added input 'coptic-dictionary/niveum/wallpaper-generator/flake-utils':
    follows 'coptic-dictionary/niveum/flake-utils'
• Added input 'coptic-dictionary/niveum/wallpaper-generator/nixpkgs':
    'path:/nix/store/vw365chp87kvfczxm26qiq7z2pq3jk5z-source?lastModified=1615532953&narHash=sha256-SWpaGjrp/INzorEqMz3HLi6Uuk9I0KAn4YS8B4n3q5g%3D&rev=916ee862e87ac5ee2439f2fb7856386b4dc906ae' (2021-03-12)
• Added input 'coptic-dictionary/niveum/wallpapers':
    'github:kmein/wallpapers/7c553bc6bd78afa6dbf2824691466bbad0d8e6e9' (2020-05-12)
• Updated input 'flake-utils':
    'github:numtide/flake-utils/f9e7cf818399d17d347f847525c5a5a8032e4e44' (2023-08-23)
  → 'github:numtide/flake-utils/ff7b65b44d01cf9ba6a71320833626af21126384' (2023-09-12)
• Updated input 'home-manager':
    'github:nix-community/home-manager/5bac4a1c06cd77cf8fc35a658ccb035a6c50cd2c' (2023-08-28)
  → 'github:nix-community/home-manager/9787dffff5d315c9593d3f9fb0f9bf2097e1b57b' (2023-09-11)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/9075cba53e86dc318d159aee55dc9a7c9a4829c1' (2023-09-02)
  → 'github:NixOS/nixpkgs/360a7d31c30abefdc490d203f80e3221b7a24af2' (2023-09-15)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/3f9e803102d49388de3862e340ac2f9cbe7381e8' (2023-09-02)
  → 'github:NixOS/nixpkgs/46423a1a750594236673c1d741def4e93cf5a8f7' (2023-09-17)
• Updated input 'nur':
    'github:nix-community/NUR/91ccb8b645a380a508704c57fa509e09b8b2b33b' (2023-09-02)
  → 'github:nix-community/NUR/15981b93620d6d50c0bef767028213810806ad74' (2023-09-16)
• Updated input 'retiolum':
    'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=6216c30551876303dac5373e92690a7f05fd0f6f' (2023-08-14)
  → 'git+https://git.thalheim.io/Mic92/retiolum?ref=refs/heads/master&rev=43d5a6ae57ae4a9051724767df133da4064d3461' (2023-09-15)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/cdf3b15af70f2db17d5f47822f12016f1a89bd73' (2023-09-02)
  → 'github:oxalica/rust-overlay/f84bb1621574473d05e6ed79ba57a371d8ad8259' (2023-09-16)
• Updated input 'voidrice':
    'github:Lukesmithxyz/voidrice/86f05abcce1fd270032975775adb40040c746cfe' (2023-08-25)
  → 'github:Lukesmithxyz/voidrice/b8cd0ab4953d053fef09c48ba04f2fbb2df57aa4' (2023-09-05)
2023-09-17 00:41:57 +00:00
51bbbc9e56 feat: mpv-iptv 2023-09-15 14:37:33 +02:00
39e5653825 fix(vim): set ft=jq 2023-09-15 11:46:58 +02:00
65dc602d67 feat: stardict-tools 2023-09-15 10:59:14 +02:00
333bf9e145 feat: jq-lsp 2023-09-15 10:58:53 +02:00
4052df257c feat: moin gib sometimes 2023-09-14 15:57:28 +02:00
github-actions[bot]
1ca8827e91 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/2a6679aa9cc3872c29ba2a57fe1b71b3e3c5649f' (2023-08-15)
  → 'github:nix-community/home-manager/5bac4a1c06cd77cf8fc35a658ccb035a6c50cd2c' (2023-08-28)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/74e5bdc5478ebbe7ba5849f0d765f92757bb9dbf' (2023-08-25)
  → 'github:NixOS/nixpkgs/9075cba53e86dc318d159aee55dc9a7c9a4829c1' (2023-09-02)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/38b9aaf6682015f1d2fc7b7f48da96992c30cfa3' (2023-08-26)
  → 'github:NixOS/nixpkgs/3f9e803102d49388de3862e340ac2f9cbe7381e8' (2023-09-02)
• Updated input 'nur':
    'github:nix-community/NUR/0f81f016eecec153a26099beb25b0c8bac87bd23' (2023-08-26)
  → 'github:nix-community/NUR/91ccb8b645a380a508704c57fa509e09b8b2b33b' (2023-09-02)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/e90223633068a44f0fb62374e0fa360ccc987292' (2023-08-26)
  → 'github:oxalica/rust-overlay/cdf3b15af70f2db17d5f47822f12016f1a89bd73' (2023-09-02)
2023-09-11 11:39:31 +02:00
a4f3c98fae fix(syncthing): do not sync zotero 2023-09-08 17:43:43 +02:00
f403319fea fix: hu vpn setup for an fu student 2023-09-08 16:37:45 +02:00
d0b405fb15 fix(prometheus): do not fail bc of secrets 2023-09-08 13:11:23 +02:00
92 changed files with 3179 additions and 957 deletions

View File

@@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
system: [makanek,manakish,kabsa,zaatar,ful]
system: [makanek,manakish,kabsa,zaatar,ful,fatteh]
steps:
- uses: actions/checkout@v3
- name: Install QEMU (ARM)

View File

@@ -7,4 +7,6 @@
> 2. Transf., _snow-white, snowy_ (mostly poet.): a similitudine sic: Corpore niveum candorem, aspectu igneum ardorem assequebatur, Auct. Her. 4, 33, 44: lacerti, Verg. A. 8, 387: lac, id. E. 2, 20: hanc si capite niveae agnae exorari judicas, Sen. Q. N. 2, 36: Briseis niveo colore, Hor. C. 2, 4, 3: vestis, Ov. M. 10, 432: candidior nivei folio, Galatea, ligustri, id. ib. 13, 789: dens, id. H. 18, 18: quā notam duxit niveus videri, Hor. C. 4, 2, 59: panis, Juv. 5, 70: flumen, _clear, pellucid_, Sen. Hippol. 504: undae, Mart. 7, 32, 11: tribuni, _clothed in white togas_, Calp. Ecl. 7, 29; so, Quirites, Juv. 10, 45.
## Pressestimmen
> das ist ja pure poesie —[xkey](https://github.com/riotbib)
> das ist ja pure poesie —[riotbib](https://github.com/riotbib/)
> Deine Configs sind wunderschön <3 —[flxai](https://github.com/flxai/)

View File

@@ -0,0 +1,102 @@
{
pkgs,
niveumPackages,
lib,
...
}: let
darwin = lib.strings.hasSuffix "-darwin" pkgs.system;
in {
environment.systemPackages =
[
pkgs.htop
pkgs.w3m
pkgs.wget
# ARCHIVE TOOLS
pkgs.unzip
pkgs.unrar
pkgs.p7zip
pkgs.zip
# MONITORS
pkgs.iftop # interface bandwidth monitor
pkgs.lsof # list open files
# SHELL
pkgs.sqlite
pkgs.fd # better find
pkgs.tree
pkgs.parallel # for parallel, since moreutils shadows task spooler
pkgs.ripgrep # better grep
pkgs.rlwrap
pkgs.progress # display progress bars for pipes
pkgs.file # determine file type
pkgs.gdu # ncurses disk usage (ncdu is broken)
pkgs.rmlint # remove duplicate files
pkgs.jq # json toolkit
pkgs.jless # less(1) for json
pkgs.fq # toolkit for yaml, xml and binaries
pkgs.bc # calculator
pkgs.pari # gp -- better calculator
pkgs.ts
niveumPackages.vimv
niveumPackages.vg
niveumPackages.fkill
niveumPackages.cyberlocker-tools
niveumPackages.untilport
niveumPackages.kpaste
# HARDWARE
pkgs.pciutils # for lspci
]
++ lib.optionals (!darwin) [
pkgs.usbutils # for lsusb
pkgs.lshw # for lshw
pkgs.iotop # I/O load monitor
pkgs.psmisc # for killall, pstree
];
environment.shellAliases = let
take = pkgs.writers.writeDash "take" ''
mkdir "$1" && cd "$1"
'';
cdt = pkgs.writers.writeDash "cdt" ''
cd "$(mktemp -d)"
pwd
'';
wcd = pkgs.writers.writeDash "wcd" ''
cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.."
'';
where = pkgs.writers.writeDash "where" ''
readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname
'';
in
{
nixi = "nix repl '<nixpkgs>'";
take = "source ${take}";
wcd = "source ${wcd}";
where = "source ${where}";
# temporary files and directories
cdt = "source ${cdt}";
vit = "$EDITOR $(mktemp)";
# file safety
mv = "${pkgs.coreutils}/bin/mv --interactive";
rm = "${pkgs.coreutils}/bin/rm --interactive";
cp = "${pkgs.coreutils}/bin/cp --interactive";
# colours
cat = "${pkgs.bat}/bin/bat --theme=ansi --style=plain";
l = "${pkgs.coreutils}/bin/ls --color=auto --time-style=long-iso --almost-all";
ls = "${pkgs.coreutils}/bin/ls --color=auto --time-style=long-iso";
ll = "${pkgs.coreutils}/bin/ls --color=auto --time-style=long-iso -l";
la = "${pkgs.coreutils}/bin/ls --color=auto --time-style=long-iso --almost-all -l";
}
// (
if darwin
then {}
else {
"ß" = "${pkgs.util-linux}/bin/setsid";
ip = "${pkgs.iproute2}/bin/ip -c";
# systemd
s = "${pkgs.systemd}/bin/systemctl";
us = "${pkgs.systemd}/bin/systemctl --user";
j = "${pkgs.systemd}/bin/journalctl";
uj = "${pkgs.systemd}/bin/journalctl --user";
}
);
}

View File

@@ -2,9 +2,10 @@
pkgs,
config,
lib,
niveumPackages,
...
}: let
inherit (import ../lib/email.nix) defaults;
inherit (import ../lib/email.nix) defaults thunderbirdProfile;
in {
age.secrets = {
email-password-cock = {
@@ -22,6 +23,8 @@ in {
};
home-manager.users.me = {
accounts.email.maildirBasePath = "${config.users.users.me.home}/state/Maildir";
services.mbsync = {
enable = true;
frequency = "daily";
@@ -87,14 +90,43 @@ in {
aliases = ["kmein@posteo.de"];
userName = address;
imap.host = "posteo.de";
imap.port = 993;
imap.tls.enable = true;
smtp.host = imap.host;
smtp.port = 465;
smtp.tls.enable = true;
primary = true;
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-posteo.path}";
# himalaya = { enable = true; backend = "imap"; sender = "smtp"; };
himalaya = {
enable = true;
backend = "imap";
sender = "smtp";
};
aerc.extraAccounts.pgp-key-id = "9EDE82CC72A343A95266D0F444857074A3ACC8B7";
};
};
# programs.himalaya.enable = true;
programs.himalaya.enable = true;
programs.thunderbird = {
enable = true;
settings = {
};
profiles.${thunderbirdProfile} = {
isDefault = true;
settings = {
"mail.default_send_format" = 1;
"msgcompose.default_colors" = false;
"msgcompose.text_color" = config.lib.stylix.colors.withHashtag.base00;
"msgcompose.background_color" = config.lib.stylix.colors.withHashtag.base05;
};
userChrome = ''
'';
userContent = ''
'';
withExternalGnupg = false;
};
};
programs.aerc = {
enable = true;
@@ -153,6 +185,7 @@ in {
"*" = ":filter -x Flagged<Enter>";
};
view = {
tr = ":pipe ${niveumPackages.trans}/bin/trans -show-original n -b -no-autocorrect<Enter>"; # https://man.sr.ht/~rjarry/aerc/integrations/translator.md
"/" = ":toggle-key-passthrough <Enter> /";
q = ":close<Enter>";
O = ":open<Enter>";
@@ -227,19 +260,19 @@ in {
general.pgp-provider = "gpg";
viewer = {pager = "${pkgs.less}/bin/less -R";};
compose = {
address-book-cmd = "khard email --remove-first-line --parsable '%s'";
no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt)";
# address-book-cmd = "khard email --remove-first-line --parsable '%s'";
no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt|beigefügt)";
};
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/plain" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
"text/calendar" = "${pkgs.aerc}/libexec/aerc/filters/calendar";
"text/html" = "${pkgs.aerc}/libexec/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 --theme=ansi --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";
"message/delivery-status" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
"message/rfc822" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
"application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh";
};
openers = let

View File

@@ -14,21 +14,17 @@ in {
};
passwordFile = config.age.secrets.restic.path;
extraBackupArgs = [
"--exclude=/home/kfm/projects/nixpkgs/.git"
"--exclude=/home/kfm/sync/src/nixpkgs/.git"
"--exclude=node_modules"
"--exclude=.parcel-cache"
];
paths = [
"/home/kfm/work"
"/home/kfm/projects"
"/home/kfm/Zotero"
"/home/kfm/notes"
"/home/kfm/Maildir"
"/home/kfm/sync"
"/home/kfm/state"
"/home/kfm/cloud"
"/home/kfm/mobile"
"/home/kfm/.gnupg"
"/home/kfm/.ssh"
"/mnt/sd-card/music"
"/mnt/sd-card/Books"
];
};

View File

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

View File

@@ -1,12 +1,9 @@
{
pkgs,
lib,
...
}: {
{pkgs, ...}: {
hardware.bluetooth = {
enable = true;
settings.General.Enable =
lib.concatStringsSep "," ["Source" "Sink" "Media" "Socket"];
settings.general = {
enable = "Source,Sink,Media,Socket";
};
};
services.blueman.enable = true;

View File

@@ -2,27 +2,24 @@
pkgs,
config,
...
}: {
programs.chromium = {
enable = true;
extensions = [
# "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
# "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
"pjjgklgkfeoeiebjogplpnibpfnffkng" # undistracted
"nhdogjmejiglipccpnnnanhbledajbpd" # vuejs devtools
"eimadpbcbfnmbkopoojfekhnkhdbieeh" # dark reader
];
};
}: let
inherit (import ../lib) tmpfilesConfig;
in {
environment.systemPackages = [
(pkgs.writers.writeDashBin "cro" ''
${pkgs.chromium}/bin/chromium \
--disable-sync \
--no-default-browser-check \
--no-first-run \
--user-data-dir="$(mktemp -d)" \
--incognito \
"$@"
'')
];
home-manager.users.me = {
programs.firefox = {
enable = true;
package = pkgs.firefox.override {
cfg = {
enableTridactylNative = true;
};
};
profiles = let
defaultSettings = {
"beacon.enabled" = false;
@@ -91,7 +88,5 @@
};
};
environment.systemPackages = [pkgs.brave];
environment.variables.BROWSER = "brave";
environment.variables.BROWSER = "firefox";
}

View File

@@ -6,29 +6,36 @@
}: let
inherit (import ../lib) tmpfilesConfig;
in {
systemd.tmpfiles.rules = map tmpfilesConfig [
systemd.user.tmpfiles.users.me.rules = map tmpfilesConfig [
{
type = "d";
mode = "0755";
age = "7d";
path = "${config.users.users.me.home}/sync/Downloads";
}
{
type = "d";
mode = "0755";
age = "7d";
path = "${config.users.users.me.home}/cloud/nextcloud/tmp";
}
] ++ map (path: tmpfilesConfig {
type = "L+";
user = config.users.users.me.name;
group = "users";
group = config.users.users.me.group;
mode = "0755";
argument = "${config.users.users.me.home}/cloud/nextcloud/Uni";
path = "${config.users.users.me.home}/uni";
}
];
argument = "${config.users.users.me.home}/sync/${path}";
path = "${config.users.users.me.home}/${path}";
}) [".ssh" ".gnupg" ".pki" ".local/share/aerc"];
services.gnome.gnome-keyring.enable = true;
security.pam.services.lightdm.enableGnomeKeyring = true;
home-manager.users.me = {
services.gnome-keyring.enable = true;
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
systemd.user.services.nextcloud-client = {
Unit = {
Wants = ["gnome-keyring.service"];
After = ["gnome-keyring.service"];
};
};
};
systemd.user.services.nextcloud-syncer = {
@@ -95,7 +102,7 @@ in {
mode = "400";
};
services.syncthing = rec {
services.syncthing = {
enable = true;
user = "kfm";
openDefaultPorts = true;
@@ -103,21 +110,22 @@ in {
dataDir = "/home/kfm/.config/syncthing";
cert = config.age.secrets.syncthing-cert.path;
key = config.age.secrets.syncthing-key.path;
inherit ((import ../lib).syncthing) devices;
folders = let
cloud-dir = "${config.users.users.me.home}/cloud";
in {
"${cloud-dir}/syncthing/zotero".devices = ["kabsa" "manakish"];
"${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"];
"${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"];
"${cloud-dir}/syncthing/mundoiu".devices = ["kabsa" "manakish" "heym"];
"${cloud-dir}/syncthing/obsidian" = {
devices = ["kabsa" "manakish" "heym"];
id = "3r1hu-3barr";
};
"${cloud-dir}/syncthing/music" = {
devices = ["kabsa" "manakish" "heym" "zaatar"];
id = "music";
settings = {
inherit ((import ../lib).syncthing) devices;
folders = {
"${config.users.users.me.home}/sync" = {
devices = ["kabsa" "manakish" "fatteh"];
label = "sync";
versioning.type = "trashcan";
versioning.params.cleanoutDays = 100;
};
"${config.users.users.me.home}/mobile" = {
devices = ["kabsa" "manakish" "fatteh" "kibbeh"];
id = "mobile";
label = "mobile";
versioning.type = "trashcan";
versioning.params.cleanoutDays = 100;
};
};
};
};

View File

@@ -7,7 +7,7 @@
...
}: let
inherit (lib.strings) makeBinPath;
inherit (import ../lib) localAddresses kieran;
inherit (import ../lib) localAddresses kieran remoteDir;
defaultApplications = (import ../lib).defaultApplications {inherit pkgs;};
in {
imports = [
@@ -25,6 +25,8 @@ in {
};
permittedInsecurePackages = [
"qtwebkit-5.212.0-alpha4"
"zotero-6.0.26"
"electron-25.9.0"
];
};
};
@@ -81,9 +83,10 @@ in {
users.users.me = {
name = "kfm";
description = kieran.name;
passwordFile = config.age.secrets.kfm-password.path;
hashedPasswordFile = config.age.secrets.kfm-password.path;
isNormalUser = true;
uid = 1000;
extraGroups = ["pipewire" "audio"];
};
age.secrets = {
@@ -93,50 +96,18 @@ in {
home-manager.users.me.xdg.enable = true;
}
{
environment.interactiveShellInit = "export PATH=$PATH:$HOME/projects/niveum";
environment.interactiveShellInit = "export PATH=$PATH";
environment.shellAliases = let
wcd = pkgs.writers.writeDash "wcd" ''
cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.."
'';
where = pkgs.writers.writeDash "where" ''
readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname
'';
take = pkgs.writers.writeDash "take" ''
mkdir "$1" && cd "$1"
'';
cdt = pkgs.writers.writeDash "cdt" ''
cd "$(mktemp -d)"
pwd
'';
swallow = command: "${niveumPackages.swallow}/bin/swallow ${command}";
in {
"ß" = "${pkgs.util-linux}/bin/setsid";
cat = "${pkgs.bat}/bin/bat --theme=ansi --style=plain";
chromium-incognito = "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
cp = "cp --interactive";
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";
la = "ls --color=auto --time-style=long-iso --almost-all -l";
mv = "mv --interactive";
nixi = "nix repl '<nixpkgs>'";
ns = "nix-shell --run zsh";
o = "${pkgs.xdg-utils}/bin/xdg-open";
ns = "nix-shell --run zsh";
pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in";
pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out";
rm = "rm --interactive";
s = "${pkgs.systemd}/bin/systemctl";
take = "source ${take}";
cdt = "source ${cdt}";
vit = "$EDITOR $(mktemp)";
tmux = "${pkgs.tmux}/bin/tmux -2";
sxiv = swallow "${pkgs.nsxiv}/bin/nsxiv";
zathura = swallow "${pkgs.zathura}/bin/zathura";
us = "${pkgs.systemd}/bin/systemctl --user";
wcd = "source ${wcd}";
im = "${pkgs.openssh}/bin/ssh weechat@makanek -t tmux attach-session -t IM";
where = "source ${where}";
yt = "${pkgs.yt-dlp}/bin/yt-dlp --add-metadata -ic"; # Download video link
yta = "${pkgs.yt-dlp}/bin/yt-dlp --add-metadata -xic"; # Download with audio
};
@@ -237,6 +208,7 @@ in {
};
}
./android.nix
./admin-essentials.nix
./stylix.nix
./alacritty.nix
./backup.nix
@@ -245,7 +217,7 @@ in {
./aerc.nix
./ccc.nix
./khal.nix
./chromium.nix
./browser.nix
./clipboard.nix
./cloud.nix
./direnv.nix
@@ -263,6 +235,7 @@ in {
./i3.nix
./i3status-rust.nix
./keyboard.nix
{home-manager.users.me.home.file.".XCompose".source = ../lib/keyboards/XCompose;}
./lb.nix
./mpv.nix
./mime.nix
@@ -274,7 +247,6 @@ in {
./picom.nix
./stardict.nix
./polkit.nix
./power-action.nix
./printing.nix
./redshift.nix
./retiolum.nix
@@ -288,9 +260,49 @@ in {
./unclutter.nix
./vscode.nix
./watson.nix
./wallpaper.nix
./zsh.nix
./tor.nix
./stw-berlin.nix
./mastodon-bot.nix
{
fileSystems."${remoteDir}/fritz" = {
device = "//192.168.178.1/FRITZ.NAS/Backup";
fsType = "cifs";
options = [
"username=ftpuser"
"password=ftppassword"
"noauto"
"nounix"
"rw"
# "noserverino" # ref https://askubuntu.com/a/1265165
"uid=${toString config.users.users.me.uid}"
"gid=${toString config.users.groups.users.gid}"
"x-systemd.automount"
"x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min"
];
};
}
{
home-manager.users.me = {
xdg.userDirs = rec {
enable = true;
documents = "${config.users.users.me.home}/cloud/nextcloud/Documents";
desktop = "/tmp";
download = "${config.users.users.me.home}/sync/Download";
music = "${config.users.users.me.home}/mobile/audio";
pictures = "${config.users.users.me.home}/cloud/nextcloud/Bilder";
publicShare = "${config.users.users.me.home}/cloud/nextcloud/tmp";
videos = pictures;
};
};
}
{
home-manager.users.me = {
services.kdeconnect.enable = true;
services.kdeconnect.indicator = true;
};
}
];
}

View File

@@ -31,7 +31,7 @@
};
newGardiner = zip-font "NewGardiner" {
url = "https://mjn.host.cs.st-andrews.ac.uk/egyptian/fonts/NewGardiner.zip";
hash = "sha256-i7ZBN28no/884fYMA7ZJ47WpkwZXzY//TK0bDz21pE0=";
hash = "sha256-nP0y4ILt+0mlkDRdCNSeO2Gequ8wyix/qQdmujTNw3Y=";
stripRoot = false;
};
junicode2 = zip-font "JunicodeTwo" {
@@ -46,15 +46,27 @@
url = "http://files.qenherkhopeshef.org/jsesh/JSeshFont.ttf";
sha256 = "1203jrk2xzvgckcc5hx88kja1i3h8gm1wiyla5j6gspc0hbv56ry";
};
egyptianText = simple-ttf "EgyptianText-1.0beta" {
egyptianTextBeta = simple-ttf "EgyptianText-1.0beta" {
url = "http://c.krebsco.de/EgyptianText-v1.0-beta.ttf";
sha256 = "0cfjbk7xxnxhlp6v922psm5j1xzrv6wfk226ji2wz2yfrnkbcbsv";
};
coranica = simple-ttf "Coranica" {
url = "https://corpuscoranicum.de/fonts/coranica_1164.ttf";
sha256 = "0igi8q8b2p38x9jq8c98afsl7bf8rj32zj2052yyjgj9r88y4yi5";
};
koineGreek = simple-ttf "KoineGreek.ttf" {
url = "https://github.com/Center-for-New-Testament-Restoration/font/raw/af83eed50105344edaa5e5eddaf87696e271468c/KoineGreek.ttf";
hash = "sha256-YtC+nj7+Jl8k00rqAAqySYc8iTAOL7PixXc+LfSmnS0=";
};
egyptianText = simple-ttf "EgyptianText" {
url = "https://github.com/microsoft/font-tools/raw/1092cb23520967830001a0807eb21d6a44dda522/EgyptianOpenType/font/eot.ttf";
sha256 = "1n294vhcx90270pnsw1dbk6izd61fjvbnjrh4hcf98ff3s540x0c";
};
in {
fonts = {
enableDefaultFonts = true;
enableDefaultPackages = true;
fontDir.enable = true;
fonts = with pkgs; [
packages = with pkgs; [
alegreya
alegreya-sans
amiri
@@ -65,6 +77,7 @@ in {
charis-sil
doulos-sil
newAthenaUnicode
coranica
corefonts
crimson
eb-garamond
@@ -72,16 +85,18 @@ in {
jsesh
egyptianHiero
egyptianText
egyptianTextBeta
font-awesome_6
etBook
newGardiner
junicode2
koineGreek
ezra-sil
fira
font-awesome
galatia-sil
gentium
niveumPackages.gfs-fonts
# niveumPackages.gfs-fonts
gyre-fonts
ibm-plex
jetbrains-mono
@@ -109,7 +124,7 @@ in {
fontconfig.defaultFonts = rec {
monospace = ["Noto Sans Mono"] ++ emoji;
serif = ["Noto Serif" "Noto Naskh Arabic" "Noto Serif Devanagari"];
sansSerif = ["Noto Sans Display" "Noto Naskh Arabic" "Noto Sans Devanagari" "Noto Sans CJK JP" "Noto Sans Coptic"];
sansSerif = ["Noto Sans Display" "Noto Naskh Arabic" "Noto Sans Hebrew" "Noto Sans Devanagari" "Noto Sans CJK JP" "Noto Sans Coptic"];
emoji = ["Noto Color Emoji"];
};
# xelatex fails with woff files

View File

@@ -5,10 +5,15 @@
...
}: let
username = "meinhak99";
inherit (import ../lib/email.nix) defaults;
inherit (import ../lib/email.nix) defaults pronouns;
inherit (import ../lib) remoteDir;
fu-defaults = rec {
imap.host = "mail.zedat.fu-berlin.de";
imap.port = 993;
imap.tls.enable = true;
smtp.host = imap.host;
smtp.port = 465;
smtp.tls.enable = true;
folders.drafts = "Entwürfe";
folders.sent = "Gesendet";
folders.trash = "Papierkorb";
@@ -33,21 +38,27 @@ in {
address = "kieran.meinhardt@fu-berlin.de";
aliases = ["${userName}@fu-berlin.de"];
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhak99.path}";
});
};
};
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
signature = {
showSignature = "append";
text = ''
${defaults.realName}
${pronouns}
systemd.user.services.fu-blackboard-calendar = {
enable = true;
# startAt = "*:00/10";
after = ["vdirsyncer.service"];
wantedBy = ["default.target"];
script = ''
${pkgs.curl}/bin/curl $(cat ${config.age.secrets.blackboard-calendar-ics.path}) | ${pkgs.khal}/bin/khal import -
'';
serviceConfig = {
Type = "oneshot";
Restart = "on-failure";
---
Studentische Hilfskraft / ZODIAC
Freie Universität Berlin
Telefon: +49 30 838 58118
Arnimallee 10, Raum 106, 14195 Berlin
'';
};
himalaya = {
enable = true;
backend = "imap";
sender = "smtp";
};
});
};
};
@@ -58,14 +69,65 @@ in {
group = config.users.users.me.group;
mode = "400";
};
blackboard-calendar-ics = {
file = ../secrets/blackboard-calendar-ics.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
fu-sftp-key = {
file = ../secrets/fu-sftp-key.age;
owner = "root";
group = "root";
mode = "400";
};
};
# if it fails with "connection reset by peer" run `sudo sshfs ... ... -o ...` manually
# it needs to say 'yes' to the server's fingerprint
system.fsPackages = [ pkgs.sshfs ];
# https://www.zedat.fu-berlin.de/tip4u_157.pdf
fileSystems = let
fu-berlin-cifs-options = [
"uid=${toString config.users.users.me.uid}"
"gid=${toString config.users.groups.users.gid}"
"rw"
"nounix"
"domain=fu-berlin"
"noauto"
"x-systemd.automount"
"x-systemd.device-timeout=1"
"x-systemd.idle-timeout=1min"
];
firstCharacter = lib.strings.substring 0 1;
home-directory-mount = user: {
"${remoteDir}/fu/${user}/home" = {
device = "${user}@login.zedat.fu-berlin.de:/home/${firstCharacter user}/${user}";
fsType = "sshfs";
options = [
"allow_other"
"_netdev"
"x-systemd.automount"
"reconnect"
"ServerAliveInterval=15"
"IdentityFile=${config.age.secrets.fu-sftp-key.path}"
];
};
};
in {
"${remoteDir}/fu/zodiac" = {
device = "//trove.storage.fu-berlin.de/GESCHKULT";
fsType = "cifs";
options =
fu-berlin-cifs-options
++ [
"credentials=${config.age.secrets.cifs-credentials-zodiac.path}"
];
};
} // home-directory-mount "meinhak99"
// home-directory-mount "xm7234fu";
age.secrets = {
cifs-credentials-zodiac.file = ../secrets/cifs-credentials-zodiac.age;
};
systemd.services.fu-vpn = {
enable = true;
wants = ["network-online.target"];

View File

@@ -1,7 +1,5 @@
{
pkgs,
config,
lib,
inputs,
...
}: let
@@ -9,17 +7,17 @@
in {
environment.systemPackages = [
pkgs.mr
pkgs.git
pkgs.gitFull
pkgs.git-crypt
pkgs.gitAndTools.gitflow
pkgs.gitAndTools.gh
pkgs.gitAndTools.git-extras
pkgs.gitAndTools.git-trim
pkgs.gitAndTools.git-absorb
pkgs.gitflow
pkgs.gh
pkgs.git-extras
# pkgs.git-trim
pkgs.git-absorb
pkgs.gitstats
pkgs.patch
pkgs.patchutils
inputs.self.packages.x86_64-linux.git-preview
inputs.self.packages.${pkgs.system}.git-preview
];
environment.shellAliases = {
@@ -30,7 +28,7 @@ in {
home-manager.users.me = {
programs.git = {
enable = true;
package = pkgs.gitAndTools.gitFull;
package = pkgs.gitFull;
userName = kieran.name;
userEmail = kieran.email;
aliases = {

5
configs/gnome.nix Normal file
View File

@@ -0,0 +1,5 @@
{
services.xserver.enable = true;
services.xserver.displayManager.lightdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
}

View File

@@ -1,28 +1,15 @@
{
config,
pkgs,
...
}: {
}: let
ledgerDirectory = "/home/kfm/sync/src/ledger";
hora = pkgs.callPackage ../packages/hora.nix { timeLedger = "${ledgerDirectory}/time.timeclock"; };
in {
environment.systemPackages = let
ledgerDirectory = "$HOME/projects/ledger";
timeLedger = "${ledgerDirectory}/time.timeclock";
git = "${pkgs.git}/bin/git -C ${ledgerDirectory}";
in [
hora
pkgs.hledger
(pkgs.writers.writeDashBin "hora-edit" ''
$EDITOR + "${timeLedger}" && ${pkgs.git}/bin/git -C "$(${pkgs.coreutils}/bin/dirname ${timeLedger})" commit --all --message "$(${pkgs.coreutils}/bin/date -Im)"
'')
(pkgs.writers.writeDashBin "hora" ''
${pkgs.hledger}/bin/hledger -f "${timeLedger}" "$@"
'')
(pkgs.writers.writeDashBin "hora-filli" ''
${pkgs.hledger}/bin/hledger -f "${timeLedger}" register fillidefilla -O csv \
-b "$(date -d "$(date +%Y-%m)-01 last month" +%Y-%m-%d)" \
-e "$(date -d "$(date +%Y-%m)-01" +%Y-%m-%d)" \
| sed 's/(fillidefilla:\(.*\))/\1/g' \
| xsv select date,amount,total,account,description
'')
(pkgs.writers.writeDashBin "hledger-git" ''
if [ "$1" = entry ]; then
${pkgs.hledger}/bin/hledger balance -V > "${ledgerDirectory}/balance.txt"

View File

@@ -4,7 +4,8 @@
lib,
...
}: let
inherit (import ../lib/email.nix) defaults;
inherit (import ../lib/email.nix) defaults pronouns;
inherit (import ../lib) remoteDir;
hu-defaults = {
imap.host = "mailbox.cms.hu-berlin.de";
imap.port = 993;
@@ -24,13 +25,13 @@
"x-systemd.idle-timeout=1min"
];
in {
fileSystems."/media/hu-berlin/germpro2" = {
fileSystems."${remoteDir}/hu/germpro2" = {
device = "//hugerm31c.user.hu-berlin.de/germpro2/ling";
fsType = "cifs";
options = hu-berlin-cifs-options;
};
fileSystems."/media/hu-berlin/germhome" = {
fileSystems."${remoteDir}/hu/meinhaki/home" = {
device = "//hugerm31c.user.hu-berlin.de/germhome/ling/meinhaki";
fsType = "cifs";
options = hu-berlin-cifs-options;
@@ -38,12 +39,6 @@ in {
age.secrets = {
cifs-credentials-hu-berlin.file = ../secrets/cifs-credentials-hu-berlin.age;
email-password-meinhark = {
file = ../secrets/email-password-meinhark.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
email-password-meinhaki = {
file = ../secrets/email-password-meinhaki.age;
owner = config.users.users.me.name;
@@ -56,22 +51,11 @@ in {
group = config.users.users.me.group;
mode = "400";
};
email-password-fsklassp = {
file = ../secrets/email-password-fsklassp.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
};
home-manager.users.me = {
programs.ssh = {
matchBlocks = {
"gruenau6.informatik.hu-berlin.de" = {
hostname = "gruenau6.informatik.hu-berlin.de";
user = "meinhark";
setEnv.TERM = "xterm";
};
"alew.hu-berlin.de" = {
user = "centos";
hostname = "141.20.187.219";
@@ -80,26 +64,6 @@ in {
};
accounts.email.accounts = rec {
hu-student =
lib.recursiveUpdate defaults
(lib.recursiveUpdate hu-defaults
rec {
userName = "meinhark";
address = "kieran.felix.meinhardt@hu-berlin.de";
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhark.path}";
});
hu-student-cs =
lib.recursiveUpdate defaults
(lib.recursiveUpdate 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 = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhark.path}";
});
hu-employee =
lib.recursiveUpdate defaults
(lib.recursiveUpdate hu-defaults
@@ -109,10 +73,16 @@ in {
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-meinhaki.path}";
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
himalaya = {
enable = true;
backend = "imap";
sender = "smtp";
};
signature = {
showSignature = "append";
text = ''
${defaults.realName}
${pronouns}
Studentische Hilfskraft / Administrator ALEW
Humboldt-Universität zu Berlin
@@ -128,33 +98,16 @@ in {
rec {
userName = "dslalewa";
address = "admin.alew.vglsprwi@hu-berlin.de";
himalaya = {
enable = true;
backend = "imap";
sender = "smtp";
};
aliases = ["${userName}@hu-berlin.de"];
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-dslalewa.path}";
inherit (hu-employee) signature;
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
});
hu-fsi =
lib.recursiveUpdate defaults
(lib.recursiveUpdate hu-defaults
rec {
userName = "fsklassp";
passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets.email-password-fsklassp.path}";
address = "${userName}@hu-berlin.de";
realName = "FSI Klassische Philologie";
aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text);
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
'';
};
});
};
};
@@ -181,20 +134,17 @@ in {
systemd.services.hu-vpn = {
enable = true;
wants = ["network-online.target"];
serviceConfig.LoadCredential = "password:${config.age.secrets.email-password-meinhark.path}";
serviceConfig.LoadCredential = "password:${config.age.secrets.email-password-meinhaki.path}";
script = ''
if ${pkgs.wirelesstools}/bin/iwgetid | ${pkgs.gnugrep}/bin/grep --invert-match eduroam
then
${pkgs.openfortivpn}/bin/openfortivpn \
--password="$(cat "$CREDENTIALS_DIRECTORY/password")" \
--config=${
${pkgs.openfortivpn}/bin/openfortivpn \
--password="$(cat "$CREDENTIALS_DIRECTORY/password")" \
--config=${
pkgs.writeText "hu-berlin.config" ''
host = forti-ssl.vpn.hu-berlin.de
port = 443
username = meinhark
username = meinhaki
''
}
fi
'';
};
}

View File

@@ -5,6 +5,13 @@
niveumPackages,
...
}: let
dashboard = pkgs.writers.writeDashBin "dashboard" ''
${pkgs.alacritty}/bin/alacritty --class wtf --command ${pkgs.writers.writeDash "dashboard-inner" ''
export WTF_OWM_API_KEY="$(cat ${config.age.secrets.openweathermap-api-key.path})"
export WTF_MINIFLUX_API_KEY="$(cat ${config.age.secrets.miniflux-api-token.path})"
exec ${niveumPackages.dashboard}/bin/dashboard
''}
'';
inherit (import ../lib) defaultApplications;
klem = niveumPackages.klem.override {
config.dmenu = "${pkgs.dmenu}/bin/dmenu -i -p klem";
@@ -50,18 +57,14 @@
emojai = pkgs.writers.writeDash "emojai" ''
${pkgs.curl}/bin/curl https://www.emojai.app/api/generate -X POST -H 'Content-Type: application/json' --data-raw "$(${pkgs.jq}/bin/jq -sR '{emoji:.}')" | ${pkgs.jq}/bin/jq -r .result
'';
gpt = pkgs.writers.writeDash "gpt" ''
${niveumPackages.gpt}/bin/gpt
"gpt-3.5" = pkgs.writers.writeDash "gpt" ''
${niveumPackages.gpt35}/bin/gpt
'';
gpt-4 = pkgs.writers.writeDash "gpt" ''
${niveumPackages.gpt4}/bin/gpt
'';
};
};
new-workspace = pkgs.writers.writeDash "new-workspace" ''
i3-msg workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
'';
move-to-new-workspace = pkgs.writers.writeDash "new-workspace" ''
i3-msg move container to workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
'';
in {
age.secrets = {
github-token-i3status-rust = {
@@ -76,10 +79,18 @@ in {
group = config.users.users.me.group;
mode = "400";
};
miniflux-api-token = {
file = ../secrets/miniflux-api-token.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
};
programs.slock.enable = true;
environment.systemPackages = [dashboard];
services.xserver = {
displayManager.defaultSession = "none+i3";
windowManager.i3 = {
@@ -103,83 +114,84 @@ in {
'';
};
home-manager.users.me.xsession.windowManager.i3 = let
home-manager.users.me = let
modifier = "Mod4";
in {
enable = true;
extraConfig = ''
bindsym --release ${modifier}+Shift+w exec /run/wrappers/bin/slock
'';
config = rec {
inherit modifier;
window = {
titlebar = false;
border = 2;
hideEdgeBorders = "smart";
commands = [
{
criteria = {class = "floating";};
command = "floating enable";
}
{
criteria = {class = "fzfmenu";};
command = "floating enable";
}
{
criteria = {class = ".*";};
command = "border pixel 2";
}
{
criteria = {class = "mpv";};
command = lib.strings.concatStringsSep ", " [
"floating enable"
"sticky enable"
"fullscreen disable"
"resize set 640 480"
"move position mouse"
];
}
];
};
gaps.inner = 4;
floating = {
titlebar = false;
border = 1;
};
bars = [
(config.home-manager.users.me.lib.stylix.i3.bar
// rec {
workspaceButtons = false;
mode = "dock"; # "hide";
position = "bottom";
statusCommand = toString (pkgs.writers.writeDash "i3status-rust" ''
export I3RS_GITHUB_TOKEN="$(cat ${config.age.secrets.github-token-i3status-rust.path})"
export OPENWEATHERMAP_API_KEY="$(cat ${config.age.secrets.openweathermap-api-key.path})"
${config.home-manager.users.me.programs.i3status-rust.package}/bin/i3status-rs ${config.home-manager.users.me.home.homeDirectory}/.config/i3status-rust/config-${position}.toml
'');
fonts = {
names = ["${config.stylix.fonts.sansSerif.name}" "FontAwesome 6 Free"];
size = config.stylix.fonts.sizes.desktop * 0.8;
};
})
infoWorkspace = "";
messageWorkspace = "";
modes.resize = {
"Escape" = ''mode "default"'';
"Return" = ''mode "default"'';
"h" = "resize shrink width 10 px or 5 ppt";
"j" = "resize grow height 10 px or 5 ppt";
"k" = "resize shrink height 10 px or 5 ppt";
"l" = "resize grow width 10 px or 5 ppt";
};
gaps.inner = 4;
floating = {
titlebar = false;
border = 1;
};
bars = [
(config.home-manager.users.me.lib.stylix.i3.bar
// rec {
workspaceButtons = true;
mode = "hide"; # "dock";
position = "bottom";
statusCommand = toString (pkgs.writers.writeDash "i3status-rust" ''
export I3RS_GITHUB_TOKEN="$(cat ${config.age.secrets.github-token-i3status-rust.path})"
export OPENWEATHERMAP_API_KEY="$(cat ${config.age.secrets.openweathermap-api-key.path})"
exec ${config.home-manager.users.me.programs.i3status-rust.package}/bin/i3status-rs ${config.home-manager.users.me.home.homeDirectory}/.config/i3status-rust/config-${position}.toml
'');
fonts = {
names = ["${config.stylix.fonts.sansSerif.name}" "FontAwesome 6 Free"];
size = config.stylix.fonts.sizes.desktop * 0.8;
};
})
];
window = {
titlebar = false;
border = 2;
hideEdgeBorders = "smart";
commands = [
{
criteria = {class = "floating";};
command = "floating enable";
}
{
criteria = {class = "fzfmenu";};
command = "floating enable";
}
{
criteria = {class = ".*";};
command = "border pixel 2";
}
{
criteria = {class = "mpv";};
command = lib.strings.concatStringsSep ", " [
"floating enable"
"sticky enable"
"fullscreen disable"
"resize set 640 480"
"move position mouse"
];
}
];
colors = let
background = config.lib.stylix.colors.withHashtag.base00;
in {
unfocused = {
border = lib.mkForce background;
childBorder = lib.mkForce background;
};
};
colors = let
background = config.lib.stylix.colors.withHashtag.base00;
in {
unfocused = {
border = lib.mkForce background;
childBorder = lib.mkForce background;
};
modes.resize = {
"Escape" = ''mode "default"'';
"Return" = ''mode "default"'';
"h" = "resize shrink width 10 px or 5 ppt";
"j" = "resize grow height 10 px or 5 ppt";
"k" = "resize shrink height 10 px or 5 ppt";
"l" = "resize grow width 10 px or 5 ppt";
};
keybindings = {
};
keybindings =
lib.listToAttrs (map (x: lib.nameValuePair "${modifier}+Shift+${toString x}" "move container to workspace ${toString x}") (lib.range 1 9))
// lib.listToAttrs (map (x: lib.nameValuePair "${modifier}+${toString x}" "workspace ${toString x}") (lib.range 1 9))
// {
"${modifier}+i" = "workspace ${infoWorkspace}";
"${modifier}+m" = "workspace ${messageWorkspace}";
"${modifier}+Shift+h" = "move left 25 px";
"${modifier}+Shift+j" = "move down 25 px";
"${modifier}+Shift+k" = "move up 25 px";
@@ -189,12 +201,10 @@ in {
"${modifier}+k" = "focus up";
"${modifier}+l" = "focus right";
"${modifier}+Shift+b" = "move window to workspace prev";
"${modifier}+Shift+n" = "move window to workspace next";
"${modifier}+Shift+x" = "exec ${move-to-new-workspace}";
"${modifier}+b" = "workspace prev";
"${modifier}+n" = "workspace next";
"${modifier}+x" = "exec ${new-workspace}";
# "${modifier}+Shift+b" = "move container to workspace prev";
# "${modifier}+Shift+n" = "move container to workspace next";
# "${modifier}+b" = "workspace prev";
# "${modifier}+n" = "workspace next";
"${modifier}+Shift+c" = "reload";
"${modifier}+Shift+q" = "kill";
@@ -203,8 +213,9 @@ in {
"${modifier}+z" = "sticky toggle";
"${modifier}+Shift+z" = "floating toggle";
"${modifier}+s" = "scratchpad show";
"${modifier}+Shift+s" = "move scratchpad";
"${modifier}+s" = ''[class="^(?i)(?!obsidian).*"] scratchpad show'';
"${modifier}+o" = ''[class="obsidian"] scratchpad show'';
"${modifier}+c" = "split h";
"${modifier}+e" = "layout toggle split";
@@ -217,7 +228,6 @@ in {
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
"${modifier}+t" = "exec ${(defaultApplications pkgs).fileManager}";
"${modifier}+y" = "exec ${(defaultApplications pkgs).browser}";
"${modifier}+0" = "exec ${niveumPackages.menu-calc}/bin/=";
"${modifier}+d" = "exec ${pkgs.writers.writeDash "run" ''exec rofi -modi run,ssh,window -show run''}";
"${modifier}+Shift+d" = "exec ${niveumPackages.notemenu}/bin/notemenu";
@@ -225,7 +235,6 @@ in {
"${modifier}+Shift+p" = "exec rofi-pass --insert";
"${modifier}+u" = "exec ${niveumPackages.unicodmenu}/bin/unicodmenu";
"${modifier}+F6" = "exec ${pkgs.xorg.xkill}/bin/xkill";
"${modifier}+F7" = "exec ${pkgs.writers.writeDash "showkeys-toggle" ''
if ${pkgs.procps}/bin/pgrep screenkey; then
exec ${pkgs.procps}/bin/pkill screenkey
@@ -233,25 +242,18 @@ in {
exec ${pkgs.screenkey}/bin/screenkey
fi
''}";
"${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 gui";
"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 ${pkgs.playerctl}/bin/playerctl pause";
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-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 ${niveumPackages.k-lock}/bin/k-lock";
"XF86Display" = "exec ${niveumPackages.dmenu-randr}/bin/dmenu-randr";
# key names detected with xorg.xev:
# XF86WakeUp (fn twice)
# XF86Battery (fn f3)
@@ -266,6 +268,74 @@ in {
# XF86Back
# XF86Launch1 (thinkvantage)
};
in {
wayland.windowManager.sway = {
enable = true;
config = {
menu = "rofi -modi run,ssh,window -show run";
inherit modifier modes gaps bars floating window colors keybindings;
input = {
"*" = {
xkb_layout = "de";
xkb_variant = "T3";
};
};
terminal = (defaultApplications pkgs).terminal;
up = "k";
down = "j";
left = "h";
right = "l";
seat = {
"*" = {
hide_cursor = "when-typing enable";
};
};
startup = [
{command = "echo hello";}
];
};
};
xsession.windowManager.i3 = {
enable = true;
extraConfig = ''
bindsym --release ${modifier}+Shift+w exec /run/wrappers/bin/slock
exec "${pkgs.obsidian}/bin/obsidian"
for_window [class="obsidian"] , move scratchpad
assign [class="message"] ${messageWorkspace}
exec "${pkgs.writers.writeDash "irc" "exec ${pkgs.alacritty}/bin/alacritty --class message -e ssh weechat@makanek -t tmux attach-session -t IM"}"
exec "${pkgs.writers.writeDash "email" "exec ${pkgs.alacritty}/bin/alacritty --class message -e aerc"}"
assign [class="wtf"] ${infoWorkspace}
exec ${dashboard}/bin/dashboard
'';
config = lib.mkMerge [
{
inherit modifier gaps modes bars floating window colors keybindings;
}
{
keybindings = let
new-workspace = pkgs.writers.writeDash "new-workspace" ''
i3-msg workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
'';
move-to-new-workspace = pkgs.writers.writeDash "new-workspace" ''
i3-msg move container to workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
'';
in {
"${modifier}+ß" = "exec ${niveumPackages.menu-calc}/bin/=";
"${modifier}+F6" = "exec ${pkgs.xorg.xkill}/bin/xkill";
"${modifier}+F9" = "exec ${pkgs.redshift}/bin/redshift -O 4000 -b 0.85";
"${modifier}+F10" = "exec ${pkgs.redshift}/bin/redshift -x";
"${modifier}+F11" = "exec ${pkgs.xcalib}/bin/xcalib -invert -alter";
"Print" = "exec flameshot gui";
# "${modifier}+Shift+x" = "exec ${move-to-new-workspace}";
# "${modifier}+x" = "exec ${new-workspace}";
"XF86Display" = "exec ${niveumPackages.dmenu-randr}/bin/dmenu-randr";
};
}
];
};
};
}

View File

@@ -3,6 +3,15 @@
config,
...
}: {
age.secrets = {
miniflux-api-token = {
file = ../secrets/miniflux-api-token.age;
owner = config.users.users.me.name;
group = config.users.users.me.group;
mode = "400";
};
};
home-manager.users.me = {
programs.i3status-rust = {
enable = true;
@@ -28,81 +37,9 @@
};
blocks = [
{
block = "weather";
autolocate = true;
format = "$icon $location: $temp";
service = {
name = "openweathermap";
city_id = "2950159";
units = "metric";
};
}
{
block = "custom";
interval = 60 * 5;
command = let
spacetime = import ../configs/spacetime.nix;
in
pkgs.writers.writePython3 "sun.py" {
libraries = [pkgs.python3Packages.astral];
flakeIgnore = ["E121" "E501"];
}
''
import astral
import astral.moon
import astral.sun
current_phase = astral.moon.phase()
city = astral.LocationInfo("Berlin", "Germany", "${spacetime.time.timeZone}", ${toString spacetime.location.latitude}, ${toString spacetime.location.longitude})
sun = astral.sun.sun(city.observer, date=astral.today(), tzinfo=city.timezone)
print("{} {} {}{}".format(sun["sunrise"].strftime("%R"), sun["sunset"].strftime("%R"), "" if current_phase < 14 else "", round(current_phase, 1)))
'';
}
{
block = "github";
info = ["total"];
warning = ["mention" "review_requested" "team_mention" "manual" "invitation" "assign" "subscribed"];
}
{
block = "custom";
interval = 10;
command = pkgs.writers.writeDash "todo" ''
${pkgs.todoman}/bin/todo --porcelain | ${pkgs.jq}/bin/jq -r '
map(select(.due != null))
| (map(select(.due < now)) | length) as $overdue
| (map(select(.due >= now and .due < now + (60 * 60 * 24))) | length) as $dueToday
| {
icon: "tasks",
text: (($overdue + $dueToday) as $sum | if $sum > 0 then $sum | tostring else "" end),
state: (
if $overdue > 0 then
"Critical"
elif $dueToday > 0 then
"Warning"
else
"Idle"
end
)
}
'
'';
json = true;
hide_when_empty = true;
}
{
block = "custom";
interval = 60;
command = pkgs.writers.writeDash "weechat" ''
ssh -o ConnectTimeout=1 makanek cat /var/lib/weechat/hotlist.txt | sed 's/,/\n/g' | wc -l | jq '{
text: (if . > 0 then . | tostring else "" end),
state: (if . > 0 then "Info" else "Idle" end),
icon: "bell"
}'
'';
json = true;
hide_when_empty = true;
block = "music";
format = "{$icon $combo $play |}";
separator = " ";
}
{
block = "net";
@@ -116,11 +53,6 @@
missing_format = "";
device = "tun0";
}
{
block = "net";
device = config.niveum.wirelessInterface;
format = "$icon $ssid $signal_strength";
}
{
block = "battery";
device = config.niveum.batteryName;
@@ -138,35 +70,8 @@
}
{block = "load";}
{
block = "custom";
interval = 10;
json = true;
command = pkgs.writers.writeDash "time" ''
${pkgs.jq}/bin/jq -n \
--arg now "$(${pkgs.coreutils}/bin/date +'%Y-%m-%d (%W %a) %H:%M')" \
--argjson nextEvent "$(
${pkgs.khal}/bin/khal list --format "{start}" --day-format "" $(${pkgs.coreutils}/bin/date +'%Y-%m-%d %H:%M') 2>/dev/null \
| ${pkgs.gnugrep}/bin/grep -E '[0-9]{2}:[0-9]{2}' \
| ${pkgs.coreutils}/bin/head -1 \
| ${pkgs.coreutils}/bin/date --date="$(cat)" +%s
)" \
'{
text: $now,
icon: "time",
state: (
($nextEvent - now) as $deltaT
| if $deltaT < (5 * 60) then
"Critical"
elif $deltaT < (15 * 60) then
"Warning"
elif $deltaT < (60 * 60) then
"Info"
else
"Idle"
end
)
}'
'';
block = "time";
format = "$icon $timestamp.datetime(f:'%Y-%m-%d (%W %a) %H:%M', l:de_DE)";
}
];
};

View File

@@ -9,10 +9,10 @@
de = "T3";
gr = "polytonic";
ru = "phonetic";
ara = "buckwalter";
cop = "";
ave = "";
got = "";
arabic = "";
coptic = "";
avestan = "";
gothic = "";
"in" = "san-kagapa";
il = "phonetic";
};
@@ -20,6 +20,7 @@
in {
# man 7 xkeyboard-config
services.xserver = {
exportConfiguration = true; # link /usr/share/X11 properly
layout = "de";
# T3: https://upload.wikimedia.org/wikipedia/commons/a/a9/German-Keyboard-Layout-T3-Version1-large.png
# buckwalter: http://www.qamus.org/transliteration.htm
@@ -32,31 +33,28 @@ in {
"${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/arabic";
path = ../lib/keyboards/arabic;
}
{
name = "symbols/got";
path = pkgs.fetchurl {
url = "https://c.krebsco.de/got";
sha256 = "1i0jxghxi3rldlijw6gm2xawrv7f0pmm7a5cqbzzgjrg7ldk46gd";
};
name = "symbols/coptic";
path = ../lib/keyboards/coptic;
}
{
name = "symbols/ave";
path = pkgs.fetchurl {
url = "https://blog.simos.info/wp-content/uploads/2010/06/avestan.txt";
sha256 = "192zmmm3gxyhim39dsax7r87gsay2w5v2xkhwmvsfipjb60hwp5g";
};
name = "symbols/gothic";
path = ../lib/keyboards/gothic;
}
{
name = "symbols/avestan";
path = ../lib/keyboards/avestan;
}
])
];
};
};
environment.etc."x11-locale".source = toString pkgs.xorg.libX11 + "share/X11/locale";
console.keyMap = "de";
environment.systemPackages =

View File

@@ -103,34 +103,9 @@ in {
"khal/config".text = ''
[calendars]
[[alew]]
path = ${davHome}/calendar/alew
color = "light gray"
[[personal]]
path = ${davHome}/calendar/personal
color = "light cyan"
[[krebs]]
path = ${davHome}/calendar/krebs
color = "light red"
[[uni]]
path = ${davHome}/calendar/uni-1
color = "yellow"
[[fysi]]
path = ${davHome}/calendar/fysi-1
color = "light magenta"
[[fysi_team]]
path = ${davHome}/calendar/personal_shared_by_fdf
color = "light red"
[[birthdays]]
path = ${davHome}/contacts/contacts
type = birthdays
color = "light green"
[[kalender_local]]
path = ${davHome}/calendar/*
type = discover
[default]
highlight_event_days = True
@@ -162,19 +137,7 @@ in {
[pair kalender]
a = "kalender_local"
b = "kalender_cloud"
collections = ["personal", "alew", "uni-1"]
conflict_resolution = "b wins"
[pair krebs]
a = "kalender_local"
b = "krebs_cloud"
collections = ["3edef929-d509-7944-2440-000a54f2d054"]
conflict_resolution = "b wins"
[pair fysi]
a = "kalender_local"
b = "fysi_cloud"
collections = ["fysi-1", "personal_shared_by_fdf"]
collections = ["from b"]
conflict_resolution = "b wins"
[storage kontakte_local]
@@ -198,18 +161,6 @@ in {
url = "${kmeinCloud.davEndpoint}/calendars/${kmeinCloud.username}/"
username = "${kmeinCloud.username}"
password.fetch = ["command", "cat", "${kmeinCloud.passwordFile}"]
[storage krebs_cloud]
type = "caldav"
url = "http://calendar.r/krebs/"
username = "krebs"
password = "krebs"
[storage fysi_cloud]
type = "caldav"
url = "${fysiCloud.davEndpoint}/calendars/${fysiCloud.username}/"
username = "${fysiCloud.username}"
password.fetch = ["command", "cat", "${fysiCloud.passwordFile}"]
'';
};
};

View File

@@ -2,6 +2,13 @@
home-manager.users.me = {
xdg.mimeApps = {
enable = true;
associations = {
added = {
"x-scheme-handler/tg" = "org.telegram.desktop.desktop";
};
removed = {
};
};
defaultApplications = {
"application/epub+zip" = "org.pwmt.zathura.desktop";
"application/pdf" = "org.pwmt.zathura.desktop";
@@ -19,7 +26,7 @@
"x-scheme-handler/mailto" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
"x-scheme-handler/webcal" = "firefox.desktop";
"inode/directory" = "pcmanfm.desktop";
"x-scheme-handler/tg" = "org.telegram.desktop.desktop";
};
};
};

View File

@@ -36,7 +36,7 @@ in {
"Alt+j" = "add video-pan-y -0.05";
};
scripts = [
pkgs.mpvScripts.youtube-quality
pkgs.mpvScripts.quality-menu
niveumPackages.mpv-visualizer
];
};

View File

@@ -30,7 +30,7 @@
})
(zoteroStyle {
name = "apa";
sha256 = "sha256-yq4fW6hQknycLjaj5fPbXLrQlGBp5myXiOSHBU90jEc=";
sha256 = "sha256-sUf0Ov5c9aTUoLsYSRbQl3Qs9ELkb5/Tky35kH7pKuE=";
})
];
@@ -65,56 +65,32 @@ in {
aria2
firefox
tdesktop
w3m
wget
gomuks
whois
dnsutils
# FILE MANAGERS
lf
cinnamon.nemo
pcmanfm
# MEDIA
ffmpeg
imagemagick
exiftool
nsxiv
# ARCHIVE TOOLS
unzip
unrar
p7zip
zip
# MONITORS
htop
iotop # I/O load monitor
iftop # interface bandwidth monitor
lsof # list open files
psmisc # for killall, pstree
graphviz
# SHELL
bat # better cat
fd # better find
file # determine file type
dos2unix
genpass # generate passwords
gdu # ncurses disk usage (ncdu is broken)
rmlint # remove duplicate files
gcc
python3Packages.jsonschema # json validation
jq # json toolkit
pup # html toolkit
htmlq
xsv # csv toolkit
fq # toolkit for yaml, xml and binaries
man-pages
man-pages-posix
tree
exfat # to mount windows drives
parallel # for parallel, since moreutils shadows task spooler
ripgrep # better grep
rlwrap
progress # display progress bars for pipes
# HARDWARE TOOLS
usbutils # for lsusb
pciutils # for lspci
lshw # for lshw
gnome.gnome-disk-utility
arandr # xrandr for noobs
libnotify # for notify-send
xclip # clipboard CLI
@@ -124,6 +100,8 @@ in {
calibre
electrum
inkscape
krita
gthumb
astrolog
obsidian
anki-bin # flashcards
@@ -140,12 +118,10 @@ in {
niveumPackages.hc # print files as qr codes
yt-dlp
espeak
bc # calculator
pari # gp -- better calculator
rink # unit converter
niveumPackages.auc
niveumPackages.cheat-sh
niveumPackages.infschmv
niveumPackages.polyglot
niveumPackages.qrpaste
niveumPackages.ttspaste
niveumPackages.new-mac # get a new mac address
@@ -157,24 +133,23 @@ in {
niveumPackages.ipa # XSAMPA to IPA converter
niveumPackages.pls
niveumPackages.mpv-tv
niveumPackages.mpv-iptv
jellyfin-media-player
niveumPackages.devanagari
niveumPackages.betacode # ancient greek betacode to unicode converter
niveumPackages.meteo
niveumPackages.mahlzeit
niveumPackages.vimv
niveumPackages.jq-lsp
niveumPackages.swallow # window swallowing
niveumPackages.literature-quote
jless # less(1) for json
niveumPackages.booksplit
niveumPackages.dmenu-randr
niveumPackages.dmenu-bluetooth
niveumPackages.manual-sort
niveumPackages.dns-sledgehammer
ts
niveumPackages.vg
niveumPackages.fkill
niveumPackages.wttr
niveumPackages.unicodmenu
niveumPackages.emailmenu
niveumPackages.closest
niveumPackages.trans
(niveumPackages.mpv-radio.override {
@@ -196,7 +171,7 @@ in {
par
qrencode
inputs.menstruation-backend.defaultPackage.x86_64-linux
# inputs.menstruation-backend.defaultPackage.x86_64-linux
inputs.agenix.packages.x86_64-linux.default
inputs.recht.defaultPackage.x86_64-linux
@@ -222,9 +197,6 @@ in {
#krebs
niveumPackages.dic
niveumPackages.cyberlocker-tools
niveumPackages.untilport
niveumPackages.kpaste
config.nur.repos.mic92.ircsink
(haskellPackages.ghcWithHoogle (hs: [
@@ -256,6 +228,12 @@ in {
lua-language-server
nodePackages.vscode-langservers-extracted
dhall-lsp-server
dhall-nix
dhall-bash
dhall-json
dhall
html-tidy
nodePackages.csslint
nodePackages.jsonlint
@@ -275,8 +253,8 @@ in {
libreoffice
# gnumeric
dia
unstablePackages.pandoc
niveumPackages.man-pandoc
pandoc
# niveumPackages.man-pandoc
typst
# proselint
asciidoctor

View File

@@ -1,12 +1,8 @@
{pkgs, ...}: {
sound.enable = true;
# realtime audio for pulseaudio
security.rtkit.enable = true;
services.pipewire = {
enable = false;
systemWide = false;
enable = true;
alsa = {
enable = true;
support32Bit = true;
@@ -15,25 +11,21 @@
jack.enable = true;
};
hardware.pulseaudio = {
systemd.user.services.pipewire-pulse.path = [pkgs.pulseaudio];
services.avahi = {
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"
]
}
'';
publish.enable = true;
publish.userServices = true;
};
users.users.me.extraGroups = ["pipewire" "audio"];
environment.etc."pipewire/pipewire-pulse.conf.d/50-network-party.conf".text = ''
context.exec = [
{ path = "pactl" args = "load-module module-native-protocol-tcp" }
{ path = "pactl" args = "load-module module-zeroconf-discover" }
{ path = "pactl" args = "load-module module-zeroconf-publish" }
]
'';
environment.systemPackages = [
pkgs.pavucontrol

View File

@@ -2,35 +2,42 @@
inherit (import ../lib) sshPort kieran;
externalNetwork = import ../lib/external-network.nix;
in {
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys;
programs.ssh.startAgent = true;
home-manager.users.me = {
services.gpg-agent = rec {
enable = true;
enableSshSupport = true;
defaultCacheTtlSsh = 2 * 60 * 60;
maxCacheTtlSsh = 4 * defaultCacheTtlSsh;
sshKeys = [
"568047C91DE03A23883E340F15A9C24D313E847C"
"BB3EE102DB8CD45540A78A6B18B511B67061F6B4" # kfm@manakish ed25519
"3F8986755818B5762A096BE212777EAAC441DD9D" # fysiweb rsa
"0E4ABD229432486CC432639BB0986B2CDE365105" # agenix ed25519
"A1E8D32CBFCDBD2DE798E2298D795CCFD785AE06" # kfm@kabsa ed25519
];
};
# https://discourse.nixos.org/t/gnome-keyring-and-ssh-agent-without-gnome/11663
xsession.profileExtra = ''
eval $(${pkgs.gnome3.gnome-keyring}/bin/gnome-keyring-daemon --daemonize --components=ssh,secrets)
export SSH_AUTH_SOCK
'';
# services.gpg-agent = rec {
# enable = false;
# enableSshSupport = true;
# defaultCacheTtlSsh = 2 * 60 * 60;
# maxCacheTtlSsh = 4 * defaultCacheTtlSsh;
# sshKeys = [
# "568047C91DE03A23883E340F15A9C24D313E847C"
# "BB3EE102DB8CD45540A78A6B18B511B67061F6B4" # kfm@manakish ed25519
# "3F8986755818B5762A096BE212777EAAC441DD9D" # fysiweb rsa
# "0E4ABD229432486CC432639BB0986B2CDE365105" # agenix ed25519
# "A1E8D32CBFCDBD2DE798E2298D795CCFD785AE06" # kfm@kabsa ed25519
# ];
# };
};
environment.extraInit = ''
if [[ -z "$SSH_AUTH_SOCK" ]]; then
export SSH_AUTH_SOCK="$(${pkgs.gnupg}/bin/gpgconf --list-dirs agent-ssh-socket)"
fi
'';
# environment.extraInit = ''
# if [[ -z "$SSH_AUTH_SOCK" ]]; then
# export SSH_AUTH_SOCK="$(${pkgs.gnupg}/bin/gpgconf --list-dirs agent-ssh-socket)"
# fi
# '';
environment.interactiveShellInit = ''
GPG_TTY="$(tty)"
export GPG_TTY
${pkgs.gnupg}/bin/gpg-connect-agent updatestartuptty /bye > /dev/null
'';
# environment.interactiveShellInit = ''
# GPG_TTY="$(tty)"
# export GPG_TTY
# ${pkgs.gnupg}/bin/gpg-connect-agent updatestartuptty /bye > /dev/null
# '';
home-manager.users.me.programs.ssh = {
enable = true;
@@ -74,6 +81,11 @@ in {
user = "kfm";
port = sshPort;
};
fatteh = {
hostname = "fatteh.r";
user = "kfm";
port = sshPort;
};
};
};
}

View File

@@ -17,5 +17,5 @@ in {
};
};
users.users.root.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
users.users.root.openssh.authorizedKeys.keys = kieran.sshKeys;
}

View File

@@ -1,10 +1,10 @@
{
config,
pkgs,
lib,
inputs,
...
}: let
locker = x: "https://c.krebsco.de/${x}";
dictionaries = {
lojban = {
jbo-deu = pkgs.fetchzip {
@@ -30,7 +30,7 @@
sha256 = "1kmbdjqinrcxkc6jdyyrq5rl2wzhnrychyynnh91yhrjwjxlh44k";
};
Woodhouse = pkgs.fetchzip {
url = "https://c.krebsco.de/Woodhouse.zip";
url = locker "Woodhouse.zip";
sha256 = "1dvnc2679yb048q2f3hr2h34acvhan0n3iir6h9ajlrdzz48mlkq";
stripRoot = false;
};
@@ -69,39 +69,39 @@
sha256 = "1bjja3n3layfd08xa1r0a6375dxh5zi6hlv7chkhgnx800cx7hxn";
};
Roget = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Roget_s_II_The_New_Thesaurus_3th_Ed-2.4.2.tar.bz2";
sha256 = "1szyny9497bpyyccf9l5kr3bnw0wvl4cnsd0n1zscxpyzlsrqqbz";
url = locker "stardict-Roget_s_II_The_New_Thesaurus_3th_Ed-2.4.2.tar.bz2";
hash = "sha256-f2GcNf3+dqZ/sKBpywjdHHC7Rp6FJseY93edRJK3/us=";
};
JargonFile = pkgs.fetchzip {
url = "http://download.huzheng.org/dict.org/stardict-dictd-jargon-2.4.2.tar.bz2";
sha256 = "096phar9qpmm0fnaqv5nz8x9lpxwnfj78g4vjfcfyd7kqp7iqla4";
url = locker "stardict-dictd-jargon-2.4.2.tar.bz2";
hash = "sha256-RFEcz8XzNO+Yk5s8dKSzvF+aOvq2bKysA7VenLKC1yQ=";
};
Oxford-Collocations = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_Collocations_Dictionary_2nd_Ed-2.4.2.tar.bz2";
url = locker "stardict-Oxford_Collocations_Dictionary_2nd_Ed-2.4.2.tar.bz2";
sha256 = "1zkfs0zxkcn21z2lhcabrs77v4ma9hpv7qm119hpyi1d8ajcw07q";
};
Langenscheidt-Deu-En = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Handw_rterbuch_Deutsch_Englisc-2.4.2.tar.bz2";
url = locker "stardict-Handw_rterbuch_Deutsch_Englisc-2.4.2.tar.bz2";
sha256 = "12q9i5azq7ylyrpb6jqbaf1rxalc3kzcwjvbinvb0yabdxb80y30";
};
Langenscheidt-En-Deu = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Handw_rterbuch_Englisch_Deutsc-2.4.2.tar.bz2";
url = locker "stardict-Handw_rterbuch_Englisch_Deutsc-2.4.2.tar.bz2";
sha256 = "087b05h155j5ldshfgx91pz81h6ijq2zaqjirg7ma8ig3l96zb59";
};
Duden_Das_Fremdworterbuch = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_Das_Fremdworterbuch-2.4.2.tar.bz2";
url = locker "stardict-Duden_Das_Fremdworterbuch-2.4.2.tar.bz2";
sha256 = "1zrcay54ccl031s6dvjwsah5slhanmjab87d81rxlcy8fx0xd8wq";
};
Duden_De_De = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_De_De-2.4.2.tar.bz2";
url = locker "stardict-Duden_De_De-2.4.2.tar.bz2";
sha256 = "1fhay04w5aaj83axfmla2ql34nb60gb05dgv0k94ig7p8x4yxxlf";
};
ConciseOED = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Concise_Oxford_English_Dictionary-2.4.2.tar.bz2";
url = locker "stardict-Concise_Oxford_English_Dictionary-2.4.2.tar.bz2";
sha256 = "19kpcxbhqzpmhi94mp48nalgmsh6s7rsx1gb4kwkhirp2pbjcyl7";
};
Duden_Synonym = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/german/stardict-Duden_Synonym-2.4.2.tar.bz2";
url = locker "stardict-Duden_Synonym-2.4.2.tar.bz2";
sha256 = "0cx086zvb86bmz7i8vnsch4cj4fb0cp165g4hig4982zakj6f2jd";
};
};
@@ -141,32 +141,38 @@
};
oed = {
OED1 = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P1-2.4.2.tar.bz2";
url = locker "stardict-Oxford_English_Dictionary_2nd_Ed._P1-2.4.2.tar.bz2";
sha256 = "0i5vv1rv44yfwyf9bfbdrb9brzhhpvz2jnh39fv8hh107nkv2vcf";
};
OED2 = pkgs.fetchzip {
url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P2-2.4.2.tar.bz2";
url = locker "stardict-Oxford_English_Dictionary_2nd_Ed._P2-2.4.2.tar.bz2";
sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg";
};
};
coptic.dictionary = inputs.coptic-dictionary.packages.x86_64-linux.coptic-stardict;
coptic = {
dictionary = inputs.coptic-dictionary.packages.x86_64-linux.coptic-stardict;
Crum = pkgs.fetchzip {
url = locker "stardict-Coptic-English_all_dialects-2.4.2.tar.bz2";
sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9";
};
};
russian = {
LingvoGermanRussian = pkgs.fetchzip {
url = "http://download.huzheng.org/lingvo/stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
url = locker "stardict-GR-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "0p353gs2z4vj70hqsdhffjaaw3a4zlmcs46flipmf35lm5wmaj0g";
};
LingvoRussianGerman = pkgs.fetchzip {
url = "http://download.huzheng.org/lingvo/stardict-RG-LingvoUniversal-2.4.2.tar.bz2";
url = locker "stardict-RG-LingvoUniversal-2.4.2.tar.bz2";
sha256 = "03f9wdmkgpjifpms7dyh10ma29wf3ka1j3zlp1av0cybhdldk2a8";
};
};
turkish = {
BabylonTurkishEnglish = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/bidirectional/stardict-babylon-Babylon_Turkish_English-2.4.2.tar.bz2";
url = locker "stardict-babylon-Babylon_Turkish_English-2.4.2.tar.bz2";
sha256 = "1zpzgk3w0536gww31bj58cmn3imnkndyjwbcr7bay8ibq2kzv44z";
};
BabylonEnglishTurkish = pkgs.fetchzip {
url = "http://download.huzheng.org/babylon/bidirectional/stardict-babylon-Babylon_English_Turkish-2.4.2.tar.bz2";
url = locker "stardict-babylon-Babylon_English_Turkish-2.4.2.tar.bz2";
sha256 = "0myx31xzb7nrn5m657h0bwdgm5xp93ccwp6lcpbxgjxdjm3q0hc5";
};
};
@@ -286,29 +292,28 @@
" | less -FR
'';
in {
environment.etc.stardict.source = toString (makeStardictDataDir ({
Crum = pkgs.fetchzip {
url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2";
sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9";
};
SmithBiographyMythology = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip";
sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2";
};
SmithAntiquities = pkgs.fetchzip {
url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip";
sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb";
};
}
// dictionaries.classics
// dictionaries.sanskrit
// dictionaries.oed
// dictionaries.russian
// dictionaries.englishGerman
// dictionaries.turkish));
# environment.etc.stardict.source = toString (makeStardictDataDir ({
# Crum = pkgs.fetchzip {
# url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2";
# sha256 = "1fi281mb9yzv40wjsdapi8fzpa7x2yscz582lv2qnss9g8zzzzr9";
# };
# SmithBiographyMythology = pkgs.fetchzip {
# url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip";
# sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2";
# };
# SmithAntiquities = pkgs.fetchzip {
# url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip";
# sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb";
# };
# }
# // dictionaries.classics
# // dictionaries.sanskrit
# // dictionaries.oed
# // dictionaries.russian
# // dictionaries.englishGerman
# // dictionaries.turkish));
environment.systemPackages = [
# pkgs.goldendict
(makeStardict "lsj" dictionaries.classics)
(makeStardict "sa" dictionaries.sanskrit)
(makeStardict "oed" dictionaries.oed)

View File

@@ -10,7 +10,8 @@
wants = ["network-online.target"];
startAt = "weekly";
serviceConfig = {
user = "kfm";
User = config.users.users.me.name;
Group = config.users.users.me.group;
WorkingDirectory = "/home/kfm/cloud/nextcloud/Uni/Meta/Mensa";
LoadCredential = [
"password:${config.age.secrets.stw-berlin-card-code.path}"

View File

@@ -17,30 +17,28 @@ in {
# stylix.image = inputs.wallpapers.outPath + "/meteora/rodrigo-soares-250630.jpg";
stylix.image = generatedWallpaper;
environment.etc."stylix/wallpaper.png".source = generatedWallpaper;
# environment.etc."stylix/wallpaper.png".source = generatedWallpaper;
# stylix.polarity = "either";
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/${
{
"0" = "synth-midnight-dark";
"1" = "apprentice"; # https://romainl.github.io/Apprentice/
"2" = "one-light";
"3" = "one-dark";
"4" = "material"; # https://github.com/ntpeters/base16-materialtheme-scheme
"5" = "material-palenight";
"6" = "material-lighter";
"7" = "tomorrow"; # https://github.com/chriskempson/tomorrow-theme
"8" = "tomorrow-night";
"9" = "gruvbox-light-medium"; # https://github.com/dawikur/base16-gruvbox-scheme
"a" = "gruvbox-dark-medium";
"b" = "selenized-light"; # https://github.com/jan-warchol/selenized
"c" = "selenized-dark";
"d" = "papercolor-light";
"e" = "papercolor-dark";
"f" = "dracula"; # https://draculatheme.com/
}
.${builtins.head (lib.stringToCharacters inputs.nixpkgs.rev)}
}.yaml";
# stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/${
# onedark
# synth-midnight-dark
# apprentice # https://romainl.github.io/Apprentice/
# one-light
# onedark
# material # https://github.com/ntpeters/base16-materialtheme-scheme
# material-palenight
# material-lighter
# tomorrow # https://github.com/chriskempson/tomorrow-theme
# tomorrow-night
# gruvbox-light-medium # https://github.com/dawikur/base16-gruvbox-scheme
# gruvbox-dark-medium
# selenized-light # https://github.com/jan-warchol/selenized
# selenized-dark
# papercolor-light
# papercolor-dark
# dracula # https://draculatheme.com/
# }.yaml";
stylix.fonts = {
serif = {

View File

@@ -51,6 +51,7 @@ in {
telegram-token-reverse.file = ../../secrets/telegram-token-reverse.age;
telegram-token-betacode.file = ../../secrets/telegram-token-betacode.age;
telegram-token-proverb.file = ../../secrets/telegram-token-proverb.age;
telegram-token-streaming-link.file = ../../secrets/telegram-token-streaming-link.age;
};
systemd.services.telegram-reverse = {
@@ -66,6 +67,17 @@ in {
serviceConfig.LoadCredential = "token:${config.age.secrets.telegram-token-reverse.path}";
};
systemd.services.telegram-streaming-link = {
wantedBy = ["multi-user.target"];
description = "Telegram bot converting YouTube Music <-> Spotify";
enable = true;
script = ''
TELEGRAM_BOT_TOKEN="$(cat "$CREDENTIALS_DIRECTORY/token")" ${telebots}/bin/telegram-streaming-link
'';
serviceConfig.Restart = "always";
serviceConfig.LoadCredential = "token:${config.age.secrets.telegram-token-streaming-link.path}";
};
systemd.services.telegram-betacode = {
wantedBy = ["multi-user.target"];
description = "Telegram beta code bot";

View File

@@ -3,7 +3,8 @@
lib,
...
}: let
url = "http://wallpaper.r/realwallpaper-krebs-stars-berlin.png";
# url = "http://wallpaper.r/realwallpaper-krebs-stars-berlin.png";
url = "http://wallpaper.r/realwallpaper-krebs.png";
stateDir = "~/.cache/wallpaper";
in {
systemd.user.services.wallpaper = {

View File

@@ -52,9 +52,9 @@
export KEYTIMEOUT=1
hash -d nixos=/etc/nixos niveum=${config.users.users.me.home}/projects/niveum
hash -d nixos=/etc/nixos niveum=${config.users.users.me.home}/sync/src/niveum
autoload -U zmv run-help
autoload -U zmv run-help edit-command-line
fpath=(${zsh-completions}/src $fpath)
'';
@@ -99,6 +99,8 @@
zle -N zle-line-init
zle -N zle-keymap-select
zle -N edit-command-line
bindkey -M vicmd v edit-command-line
'';
};
}

1006
flake.lock generated

File diff suppressed because it is too large Load Diff

165
flake.nix
View File

@@ -5,14 +5,14 @@
agenix.url = "github:ryantm/agenix";
coptic-dictionary.url = "github:kmein/coptic-dictionary";
flake-utils.url = "github:numtide/flake-utils";
home-manager.url = "github:nix-community/home-manager/release-23.05";
home-manager.url = "github:nix-community/home-manager/release-23.11";
menstruation-backend.url = "github:kmein/menstruation.rs";
menstruation-telegram.url = "github:kmein/menstruation-telegram";
nix-on-droid.url = "github:t184256/nix-on-droid/release-23.05";
nixinate.url = "github:matthewcroughan/nixinate";
nixpkgs-old.url = "github:NixOS/nixpkgs/50fc86b75d2744e1ab3837ef74b53f103a9b55a0";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/master";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
nur.url = "github:nix-community/NUR";
recht.url = "github:kmein/recht";
retiolum.url = "git+https://git.thalheim.io/Mic92/retiolum";
@@ -29,15 +29,14 @@
agenix.inputs.nixpkgs.follows = "nixpkgs";
coptic-dictionary.inputs.nixpkgs.follows = "nixpkgs";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
menstruation-backend.inputs.flake-utils.follows = "flake-utils";
menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
menstruation-backend.inputs.rust-overlay.follows = "rust-overlay";
# menstruation-backend.inputs.flake-utils.follows = "flake-utils";
# menstruation-backend.inputs.nixpkgs.follows = "nixpkgs";
# menstruation-backend.inputs.rust-overlay.follows = "rust-overlay";
menstruation-telegram.inputs.flake-utils.follows = "flake-utils";
menstruation-telegram.inputs.menstruation-backend.follows = "menstruation-backend";
menstruation-telegram.inputs.nixpkgs.follows = "nixpkgs-old";
nix-on-droid.inputs.home-manager.follows = "home-manager";
nix-on-droid.inputs.nixpkgs.follows = "nixpkgs";
nixinate.inputs.nixpkgs.follows = "nixpkgs";
recht.inputs.flake-utils.follows = "flake-utils";
recht.inputs.nixpkgs.follows = "nixpkgs";
rust-overlay.inputs.flake-utils.follows = "flake-utils";
@@ -61,41 +60,66 @@
nixpkgs-unstable,
nur,
home-manager,
nixinate,
agenix,
retiolum,
nixinate,
flake-utils,
nix-on-droid,
stylix,
...
}:
{
apps =
nixinate.nixinate.x86_64-linux self
// {
x86_64-linux = let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
in {
apps = {
x86_64-darwin = let
pkgs = nixpkgs.legacyPackages.x86_64-darwin;
in {
deploy-maakaron = {
type = "app";
program = toString (pkgs.writers.writeDash "deploy-maakaron" ''
exec $(nix build .#homeConfigurations.maakaron.activationPackage --no-link --print-out-paths)/activate
'');
};
};
x86_64-linux = let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
lib = nixpkgs.lib;
in
nixinate.nixinate.x86_64-linux self
// {
mock-secrets = {
type = "app";
program = toString (pkgs.writers.writeDash "mock-secrets" ''
${pkgs.findutils}/bin/find secrets -not -path '*/.*' -type f | ${pkgs.coreutils}/bin/sort > secrets.txt
'');
};
deploy = {
}
# the following error prevents remote building of ful: https://github.com/NixOS/nixpkgs/issues/177873
// builtins.listToAttrs (map (hostname: let
externalNetwork = import ./lib/external-network.nix;
targets = {
ful = "root@ful";
zaatar = "root@zaatar";
makanek = "root@makanek";
manakish = "root@manakish";
kabsa = "root@kabsa";
fatteh = "root@fatteh";
};
in
lib.attrsets.nameValuePair "deploy-${hostname}" {
type = "app";
program = toString (pkgs.writers.writeDash "deploy" ''
if [ $# -eq 0 ]
then
systems='${toString (builtins.attrNames self.nixosConfigurations)}'
else
systems=$*
fi
${pkgs.parallel}/bin/parallel --line-buffer --tagstring '{}' 'nix run .\?submodules=1\#apps.nixinate.{}' ::: $systems
program = toString (pkgs.writers.writeDash "deploy-${hostname}" ''
exec ${pkgs.nixos-rebuild}/bin/nixos-rebuild switch --max-jobs 2 --log-format internal-json --flake .?submodules=1#${hostname} --build-host ${targets.${hostname}} --target-host ${targets.${hostname}} 2>&1 | ${pkgs.nix-output-monitor}/bin/nom --json
'');
}) (builtins.attrNames self.nixosConfigurations))
// {
deploy-ful = {
type = "app";
program = toString (pkgs.writers.writeDash "deploy-ful" ''
exec ${pkgs.nix}/bin/nix run .?submodules=1#nixinate.ful --log-format internal-json 2>&1 | ${pkgs.nix-output-monitor}/bin/nom --json
'');
};
};
};
};
nixosModules = {
htgen = import modules/htgen.nix;
@@ -128,6 +152,21 @@
};
};
homeConfigurations = {
maakaron = let
system = "x86_64-darwin";
pkgs = nixpkgs.legacyPackages.${system};
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [./systems/maakaron/home.nix];
extraSpecialArgs = {
inherit inputs;
niveumPackages = inputs.self.packages.${system};
};
};
};
nixosConfigurations = let
niveumSpecialArgs = system: {
unstablePackages = import nixpkgs-unstable {
@@ -147,6 +186,12 @@
system = "aarch64-linux";
specialArgs = niveumSpecialArgs system;
modules = [
systems/ful/configuration.nix
agenix.nixosModules.default
inputs.self.nixosModules.passport
inputs.self.nixosModules.panoptikon
retiolum.nixosModules.retiolum
nur.nixosModules.nur
{
_module.args.nixinate = {
host = "ful";
@@ -156,27 +201,12 @@
hermetic = false;
};
}
systems/ful/configuration.nix
agenix.nixosModules.default
inputs.self.nixosModules.passport
inputs.self.nixosModules.panoptikon
retiolum.nixosModules.retiolum
nur.nixosModules.nur
];
};
zaatar = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = niveumSpecialArgs system;
modules = [
{
_module.args.nixinate = {
host = "zaatar";
sshUser = "root";
buildOn = "remote";
substituteOnTarget = true;
hermetic = false;
};
}
systems/zaatar/configuration.nix
inputs.self.nixosModules.moodle-dl
agenix.nixosModules.default
@@ -188,15 +218,6 @@
# for using inputs in other config files
specialArgs = niveumSpecialArgs system;
modules = [
{
_module.args.nixinate = {
host = "makanek";
sshUser = "root";
buildOn = "local";
substituteOnTarget = true;
hermetic = false;
};
}
systems/makanek/configuration.nix
inputs.self.nixosModules.telegram-bot
inputs.self.nixosModules.htgen
@@ -226,15 +247,6 @@
system = "x86_64-linux";
specialArgs = niveumSpecialArgs system;
modules = [
{
_module.args.nixinate = {
host = "manakish";
sshUser = "root";
buildOn = "local";
substituteOnTarget = true;
hermetic = false;
};
}
systems/manakish/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
@@ -247,15 +259,6 @@
system = "x86_64-linux";
specialArgs = niveumSpecialArgs system;
modules = [
{
_module.args.nixinate = {
host = "kabsa";
sshUser = "root";
buildOn = "remote";
substituteOnTarget = true;
hermetic = false;
};
}
systems/kabsa/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
@@ -264,15 +267,27 @@
stylix.nixosModules.stylix
];
};
fatteh = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
specialArgs = niveumSpecialArgs system;
modules = [
systems/fatteh/configuration.nix
agenix.nixosModules.default
retiolum.nixosModules.retiolum
home-manager.nixosModules.home-manager
nur.nixosModules.nur
stylix.nixosModules.stylix
];
};
};
}
// flake-utils.lib.eachSystem [flake-utils.lib.system.x86_64-linux flake-utils.lib.system.aarch64-linux] (system: let
// flake-utils.lib.eachSystem [flake-utils.lib.system.x86_64-linux flake-utils.lib.system.x86_64-darwin flake-utils.lib.system.aarch64-linux] (system: let
pkgs = import nixpkgs {
inherit system;
overlays = [
nur.overlay
(self: super: {
mpv = super.mpv.override {scripts = [inputs.self.packages.${system}.mpv-visualizer];};
mpv = super.mpv.override {scripts = [inputs.self.packages.${system}.mpv-visualizer super.mpvScripts.mpris];};
dmenu = super.writers.writeDashBin "dmenu" ''exec ${pkgs.rofi}/bin/rofi -dmenu "$@"'';
})
];
@@ -290,11 +305,13 @@
packages = rec {
auc = pkgs.callPackage packages/auc.nix {};
betacode = pkgs.callPackage packages/betacode.nix {};
brassica = pkgs.callPackage packages/brassica.nix {};
cheat-sh = pkgs.callPackage packages/cheat-sh.nix {};
closest = pkgs.callPackage packages/closest {};
cyberlocker-tools = pkgs.callPackage packages/cyberlocker-tools.nix {};
default-gateway = pkgs.callPackage packages/default-gateway.nix {};
depp = pkgs.callPackage packages/depp.nix {};
dashboard = pkgs.callPackage packages/dashboard {};
devanagari = pkgs.callPackage packages/devanagari {};
devour = pkgs.callPackage packages/devour.nix {};
dic = pkgs.callPackage packages/dic.nix {};
@@ -307,8 +324,11 @@
genius = pkgs.callPackage packages/genius.nix {};
gfs-fonts = pkgs.callPackage packages/gfs-fonts.nix {};
git-preview = pkgs.callPackage packages/git-preview.nix {};
gpt = pkgs.callPackage packages/gpt.nix {};
gpt35 = pkgs.callPackage packages/gpt.nix {model = "gpt-3.5-turbo";};
gpt4 = pkgs.callPackage packages/gpt.nix {model = "gpt-4";};
hc = pkgs.callPackage packages/hc.nix {};
jq-lsp = pkgs.callPackage packages/jq-lsp.nix {};
stardict-tools = pkgs.callPackage packages/stardict-tools.nix {};
heuretes = pkgs.callPackage packages/heuretes.nix {};
htgen = pkgs.callPackage packages/htgen.nix {};
image-convert-favicon = pkgs.callPackage packages/image-convert-favicon.nix {};
@@ -333,6 +353,7 @@
mpv-radio = pkgs.callPackage packages/mpv-radio.nix {di-fm-key-file = "/dev/null";};
mpv-tuner = pkgs.callPackage packages/mpv-tuner.nix {di-fm-key-file = "/dev/null";};
mpv-tv = pkgs.callPackage packages/mpv-tv.nix {};
mpv-iptv = pkgs.callPackage packages/mpv-iptv.nix {};
mpv-visualizer = unstablePackages.mpvScripts.visualizer;
new-mac = pkgs.callPackage packages/new-mac.nix {};
nix-git = pkgs.callPackage packages/nix-git.nix {};
@@ -340,6 +361,7 @@
notemenu = pkgs.callPackage packages/notemenu.nix {niveumPackages = self.packages.${system};};
opustags = pkgs.callPackage packages/opustags.nix {};
pls = pkgs.callPackage packages/pls.nix {};
polyglot = pkgs.callPackage packages/polyglot.nix {};
qrpaste = pkgs.callPackage packages/qrpaste.nix {};
rfc = pkgs.callPackage packages/rfc.nix {};
scanned = pkgs.callPackage packages/scanned.nix {};
@@ -350,6 +372,7 @@
trans = pkgs.callPackage packages/trans.nix {};
ttspaste = pkgs.callPackage packages/ttspaste.nix {};
unicodmenu = pkgs.callPackage packages/unicodmenu.nix {};
emailmenu = pkgs.callPackage packages/emailmenu.nix {};
untilport = pkgs.callPackage packages/untilport.nix {};
vg = pkgs.callPackage packages/vg.nix {};
vim = pkgs.callPackage packages/vim.nix {niveumPackages = self.packages.${system};};
@@ -377,11 +400,7 @@
name = "booksplit";
packages = [pkgs.ffmpeg pkgs.glibc.bin];
};
dmenu-randr = wrapScript {
script = inputs.voidrice.outPath + "/.local/bin/displayselect";
name = "dmenu-randr";
packages = [pkgs.dmenu pkgs.bc pkgs.psmisc pkgs.util-linux pkgs.xorg.xrandr pkgs.gawk pkgs.libnotify pkgs.arandr (pkgs.writers.writeDashBin "setbg" "")];
};
dmenu-randr = pkgs.callPackage packages/dmenu-randr.nix {};
tag = wrapScript {
script = inputs.voidrice.outPath + "/.local/bin/tag";
name = "tag";

View File

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

View File

@@ -15,6 +15,8 @@
repository = "rest:http://${host}:${toString port}/";
};
remoteDir = "/home/kfm/remote";
firewall = lib: {
accept = {
source,
@@ -67,20 +69,18 @@
github = "kmein";
email = "kmein@posteo.de";
name = "Kierán Meinhardt";
sshKeys = pkgs:
pkgs.lib.strings.splitString "\n" (pkgs.lib.strings.fileContents (pkgs.fetchurl {
url = "https://github.com/kmein.keys";
hash = "sha256-TvvPwplrH9cw7NE4GKqbE5ga+oBHM+TkjxYQ3b1fpLI=";
}));
sshKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDyTnGhFq0Q+vghNhrqNrAyY+CsN7nNz8bPfiwIwNpjk" # kabsa
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOiQEc8rTr7C7xVLYV7tQ99BDDBLrJsy5hslxtCEatkB" # manakish
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIByreBjBEMJKjgpKLd5XZHIUUwIhNafVqN6OUOQpJa3y" # fatteh
];
};
syncthing.devices = {
kabsa.id = "R6DEBD7-G5RYDKN-VFA3HPO-WX4DNVI-373F7OQ-AW5MZTT-3L4BDVW-Y6ROEAF";
heym.id = "HLQSG3D-WSKLA6S-MEYQ3EU-GDBGABE-PY53RQ6-SWQAP2I-Z5MVBVX-MYPJXAM";
kibbeh.id = "HLQSG3D-WSKLA6S-MEYQ3EU-GDBGABE-PY53RQ6-SWQAP2I-Z5MVBVX-MYPJXAM";
manakish.id = "AJVBWR2-VFFAGZF-7ZF5JAX-T63GMOG-NZ446WK-MC5E6WK-6X6Q2HE-QQA2JQ3";
toum.id = "CBJQXFF-FMFGWFU-2J6FMPR-SRDTSGX-7NHOYOH-CQCABKF-KQJMRJC-SDE24Q4";
zaatar.id = "CGHO6LK-ZJBAXBD-UWI7AH3-BXYARE6-EUIM7PE-O2FUCOM-VCCRNCM-IG34WQ7";
tahina.id = "UKJ2CBO-EQPKQL4-3QLRUSG-SSYR6AB-CCCUTKU-CLPYR7N-RUI5A6Y-JTL5NA4";
fatteh.id = "GSOGYT3-2GBHZXT-MNCTDIY-3BJIR4V-OHVOOMJ-ICVLKXR-U4C7RFB-HJOK3AC";
};
ignorePaths = [

View File

@@ -1,5 +1,21 @@
{
rec {
thunderbirdProfile = "donnervogel";
pronouns = builtins.concatStringsSep "/" [
"er"
"he"
"is"
"οτος"
"هو"
"̄ϥ"
"он"
"han"
""
];
defaults = {
thunderbird = {
enable = true;
profiles = [thunderbirdProfile];
};
aerc.enable = true;
realName = "Kierán Meinhardt";
folders.inbox = "INBOX";

31
lib/keyboards/XCompose Normal file
View File

@@ -0,0 +1,31 @@
# Import default rules from the system Compose file
include "%L"
# Custom definitions
<Multi_key> <U0634> <U0634> : "ژ" U0698 # ز + ز = ژ
<Multi_key> <U063A> <U063A> : "گ" U06AF # غ + غ = گ
<Multi_key> <U0641> <U0641> : "ڤ" U06A4 # ف + ف = ڤ
<Multi_key> <U062C> <U062C> : "چ" U0686 # ج + ج = چ
<Multi_key> <U0628> <U0628> : "پ" U067E # ب + ب = پ
<Multi_key> <U0643> <U0643> : "ک" U06A9 # ك + ك = ک
<Multi_key> <U064A> <U064A> : "ی" U06CC # ي + ي = ی
<Multi_key> <U0647> <U064A> : "ۀ" U06C0 # ه + ي = ۀ
<Multi_key> <E> <E> : "ɛ" U025B
<Multi_key> <O> <O> : "ɔ" U0254
<Multi_key> <s> <h> : "ʃ" U0283
<Multi_key> <z> <h> : "ʒ" U0292
<Multi_key> <e> <i> : "ɪ" U026A
<Multi_key> <e> <u> : "ʊ" U028A
<Multi_key> <colon> <colon> : "ː" U02D0
<Multi_key> <question> <period> : "ʔ" U0294
<Multi_key> <period> <question> : "ʕ" U0295
<Multi_key> <apostrophe> <period> : "ˈ" U02C8
<Multi_key> <period> <apostrophe> : "ˌ" U02CC
<dead_belowring> <nobreakspace> : "̥" U0325 # COMBINING RING BELOW
<dead_belowbreve> <nobreakspace> : "̮" U032E # COMBINING BREVE BELOW
<dead_invertedbreve> <nobreakspace> : "̑" U0311 # COMBINING INVERTED BREVE
<dead_belowmacron> <nobreakspace> : "̱" U0331 # COMBINING MACRON BELOW
<dead_belowcircumflex> <nobreakspace> : "̯" U032F # COMBINING INVERTED BREVE BELOW
<dead_circumflex> <Multi_key> <underscore> <e> : "ᵊ" U1D4A
# TODO zwnj

23
lib/keyboards/arabic Normal file
View File

@@ -0,0 +1,23 @@
// Arabic keyboard using Buckwalter transliteration
// http://www.qamus.org/transliteration.htm
// Martin Vidner
// stolen from https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/2505a3ec2605ea7303bc6de68acf96578f0fd424/symbols/ara#L179
// TODO 06CC ARABIC LETTER FARSI YEH
default partial alphanumeric_keys
xkb_symbols "buckwalter" {
include "ara(buckwalter)"
name[Group1] = "Arabic (Buckwalter + Persian)";
key <AE09> {[ 0x1000669, parenleft ] };
key <AE10> {[ 0x1000660, parenright ] };
key <AD10> {[ Arabic_tehmarbuta, 0x100067E ] }; // پ
key <AD11> {[ 0x100200C, 0x1000671 ] }; // alif wasla, ZWNJ
key <AD12> {[ 0x10006C0, Arabic_hamzaonyeh ] }; // ۀ
key <AC05> {[ Arabic_ghain, 0x10006AF ] }; // گ
key <AC07> {[ Arabic_jeem, 0x1000686 ] }; // چ
key <AB03> {[ 0x10006A9, 0x1000698 ] }; // ک ژ
key <AB04> {[ Arabic_theh, 0x10006A4 ] }; // ڤ
key <AB09> {[ period, Arabic_hamzaonalef ] };
};

60
lib/keyboards/avestan Normal file
View File

@@ -0,0 +1,60 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Generated keyboard layout file with the Keyboard Layout Editor.
// For more about the software, see http://code.google.com/p/keyboardlayouteditor
//
// Version 0.2, changed AD09.
partial default alphanumeric_keys
xkb_symbols "avestan"
{
name[Group1] = "Iran - Avestan";
key <AB01> { [ U10B30, U10B32 ] }; // 𐬰 𐬲
key <AB02> { [ U10B11, U10B12 ] }; // 𐬑 𐬒
key <AB03> { [ U10B17, UE102 ] }; // 𐬗 
key <AB04> { [ U10B2C, U10B13 ] }; // 𐬬 𐬓
key <AB05> { [ U10B20, U10B21 ] }; // 𐬠𐬡
key <AB06> { [ U10B25, U10B27 ] }; // 𐬥 𐬧
key <AB07> { [ U10B28, U10B29 ] }; // 𐬨 𐬩
key <AB08> { [ U10B3C, U10B39 ] }; // 𐬼 𐬹
key <AB09> { [ U10B3E, U10B3D ] }; // 𐬾 𐬽
key <AB10> { [ U10B3F, periodcentered ] }; // 𐬿 ·
key <AC01> { [ U10B00, U10B01 ] }; // 𐬀 𐬁
key <AC02> { [ U10B2F, U10B31 ] }; // 𐬯 𐬱
key <AC03> { [ U10B1B, U10B1C ] }; // 𐬛 𐬜
key <AC04> { [ U10B1F, U10B16 ] }; // 𐬟 𐬖
key <AC05> { [ U10B14, U10B15 ] }; // 𐬔 𐬕
key <AC06> { [ U10B35, UE100 ] }; // 𐬵 
key <AC07> { [ U10B18, U10B24 ] }; // 𐬘 𐬤
key <AC08> { [ U10B10, UE101 ] }; // 𐬐 
key <AC09> { [ U10B2E, UE103 ] }; // 𐬮 
key <AC10> { [ U10B3B, U10B3A ] }; // 𐬻 𐬺
key <AC11> { [ U10B1D ] }; // 𐬝
key <AD01> { [ U10B22, U10B23 ] }; // 𐬢 𐬣
key <AD02> { [ U10B33, U10B34 ] }; // 𐬳 𐬴
key <AD03> { [ U10B08, U10B09 ] }; // 𐬈 𐬉
key <AD04> { [ U10B2D, U10B26 ] }; // 𐬭 𐬦
key <AD05> { [ U10B19, U10B1A ] }; // 𐬙 𐬚
key <AD06> { [ U10B2B, U10B2A ] }; // 𐬫 𐬪
key <AD07> { [ U10B0E, U10B0F ] }; // 𐬎 𐬏
key <AD08> { [ U10B0C, U10B0D ] }; // 𐬌 𐬍
key <AD09> { [ U10B0A, U10B0B ] }; // 𐬊 𐬋
key <AD10> { [ U10B1E ] }; // 𐬞
key <AD11> { [ U10B06, U10B07 ] }; // 𐬆 𐬇
key <AD12> { [ U10B02, U10B03 ] }; // 𐬂 𐬃
key <AE01> { [ U10B78 ] }; // 𐭸
key <AE02> { [ U10B79 ] }; // 𐭹
key <AE03> { [ U10B7A ] }; // 𐭺
key <AE04> { [ U10B7B ] }; // 𐭻
key <AE05> { [ U10B7C ] }; // 𐭼
key <AE06> { [ U10B7D ] }; // 𐭽
key <AE07> { [ U10B7E ] }; // 𐭾
key <AE08> { [ U10B7F ] }; // 𐭿
key <BKSL> { [ U10B04, U10B05 ] }; // 𐬄 𐬅
key <LSGT> { [ U10B04, U10B05 ] }; // 𐬄 𐬅
};

79
lib/keyboards/coptic Normal file
View File

@@ -0,0 +1,79 @@
// Coptic keyboard symbols for XKB and PC keyboard
// based on the mapping of logos
// (C) 2006 Moheb Mekhaiel <mohebm@gmx.de>
//
// Permission is granted to anyone to use, distribute and modify
// this file in any way, provided that the above copyright notice
// is left intact and the author of the modification summarizes
// the changes in this header.
//
// This file is distributed without any expressed or implied warranty.
partial default alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "Coptic";
key <TLDE> { [ U0308, U0311, U0361, U2CE5 ] };
key <AE01> { type[Group1] = "FOUR_LEVEL",
[ 1, U0304, VoidSymbol, U2CE6 ] };
key <AE02> { [ 2, U0306, U2CFD, U2CE7 ] };
key <AE03> { [ 3, U0374, U2056, U2CE8 ] };
key <AE04> { [ 4, U0375, U2058, U2CE9 ] };
key <AE05> { [ 5, U0307, U2059, U2CEA ] };
key <AE06> { [ 6, U0323, U2C8B, U2C8A ] };
key <AE07> { [ 7, U2CE4 ] };
key <AE08> { [ 8, U002A, U2026 ] };
key <AE09> { [ 9, parenleft, U201C, plusminus ] };
key <AE10> { [ 0, parenright, U201D, degree ] };
key <AE11> { [ U00B7, underscore, U2013, U2014 ] };
key <AE12> { [ U2E17, U0305, U033F ] };
key <BKSL> { [ U0300, U007C, backslash, U007C ] };
key <AD01> { [ U2C91, U2C90 ] };
key <AD02> { [ U2CB1, U2CB0 ] };
key <AD03> { [ U2C89, U2C88 ] };
key <AD04> { [ U2CA3, U2CA2 ] };
key <AD05> { [ U2CA7, U2CA6, U03EF, U03EE ] };
key <AD06> { [ U2CAF, U2CAE ] };
key <AD07> { [ U2CA9, U2CA8 ] };
key <AD08> { [ U2C93, U2C92 ] };
key <AD09> { [ U2C9F, U2C9E ] };
key <AD10> { [ U2CA1, U2CA0 ] };
key <AD11> { [ bracketleft,braceleft, U2018 ] };
key <AD12> { [ bracketright,braceright,U2019 ] };
key <AC01> { [ U2C81, U2C80 ] };
key <AC02> { [ U2CA5, U2CA4, U03E3, U03E2 ] };
key <AC03> { [ U2C87, U2C86, U03EF, U03EE ] };
key <AC04> { [ U2CAB, U2CAA, U03E5, U03E4 ] };
key <AC05> { [ U2C85, U2C84, U03EB, U03EA ] };
key <AC06> { [ U2C8F, U2C8E, U03E9, U03E8 ] };
key <AC07> { [ U03EB, U03EA, U03EB, U03EA ] };
key <AC08> { [ U2C95, U2C94, U03E7, U03E6 ] };
key <AC09> { [ U2C97, U2C96 ] };
key <AC10> { [ semicolon, colon, U2053, dead_doubleacute ] };
key <AC11> { [ apostrophe, U2CFF, U0022 ] };
key <AB01> { [ U2C8D, U2C8C ] };
key <AB02> { [ U2C9D, U2C9C ] };
key <AB03> { [ U2CAD, U2CAC, U03ED, U03EC ] };
key <AB04> { [ U03E3, U03E2, U03E3, U03E2 ] };
key <AB05> { [ U2C83, U2C82 ] };
key <AB06> { [ U2C9B, U2C9A ] };
key <AB07> { [ U2C99, U2C98 ] };
key <AB08> { [ comma, less, U00AB, U2039 ] };
key <AB09> { [ period, greater, U00BB, U203A ] };
key <AB10> { [ U0301, U2CFE, slash, question ] };
key <RALT> { type[Group1]="TWO_LEVEL",
[ ISO_Level3_Shift, Multi_key ] };
modifier_map Mod5 { <RALT> };
//include "level3(ralt_switch_multikey)"
// End alphanumeric section
};

69
lib/keyboards/gothic Normal file
View File

@@ -0,0 +1,69 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Generated keyboard layout file with the Keyboard Layout Editor.
// For more about the software, see http://code.google.com/p/keyboardlayouteditor
//
// Version 0.2, changed AD09.
partial default alphanumeric_keys
xkb_symbols "Gothic"
{
name[Group1] = "Gothic";
key <AB01> { [ U10336, U10336 ] }; // Z: 𐌶
key <AB02> { [ U10347, U10347 ] }; // X: 𐍇
key <AB03> { [ U10343, U10343 ] }; // C: 𐍃
key <AB04> { [ U10338, U10338 ] }; // V: 𐌸
key <AB05> { [ U10331, U10331 ] }; // B: 𐌱
key <AB06> { [ U1033D, U10341 ] }; // n: 𐌽 N: 𐍁
key <AB07> { [ U1033C, U1033C ] }; // M: 𐌼
key <AB08> { [ U10B3C, U10B39 ] };
key <AB09> { [ U10349, U10349 ] };
key <AB10> { [ U10B3F, periodcentered ] };
key <AC01> { [ U10330, U10330 ] }; // A: 𐌰
key <AC02> { [ U10343, U10343 ] }; // S: 𐍃
key <AC03> { [ U10333, U10338 ] }; // d: 𐌳 D: 𐌸
key <AC04> { [ U10346, U10346 ] }; // F: 𐍆
key <AC05> { [ U10332, U10332 ] }; // G: 𐌲
key <AC06> { [ U10337, U10337 ] }; // H: 𐌷
key <AC07> { [ U1033E, U1033E ] }; // J: 𐌾
key <AC08> { [ U1033A, U1033A ] }; // K: 𐌺
key <AC09> { [ U1033B, U1033B ] }; // L: 𐌻
key <AC10> { [ semicolon, colon ] };
key <AC11> { [ apostrophe, quotedbl ] };
key <AD01> { [ U10335, U10335 ] }; // Q: 𐌵
key <AD02> { [ U10345, U10345 ] }; // W: 𐍅
key <AD03> { [ U10334, U10334 ] }; // E: 𐌴
key <AD04> { [ U10342, U10342 ] }; // R: 𐍂
key <AD05> { [ U10344, U10338 ] }; // t: 𐍄 T: 𐌸
key <AD06> { [ U10348, U1034A ] }; // y: 𐍈 Y: 𐍊
key <AD07> { [ U1033F, U1033F ] }; // U: 𐌿
key <AD08> { [ U10339, U10339 ] }; // I: 𐌹
key <AD09> { [ U10349, U10349 ] }; // O: 𐍉
key <AD10> { [ U10340, U10340 ] }; // P: 𐍀
key <AD11> { [ bracketleft, braceleft ] };
key <AD12> { [ bracketright, braceright ] };
key <TLDE> { [ grave, asciitilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ minus, underscore ] };
key <AE12> { [ equal, plus ] };
key <AB08> { [ comma, less ] };
key <AB09> { [ period, greater ] };
key <AB10> { [ slash, question ] };
key <BKSL> { [ U10B04, U10B05 ] };
key <LSGT> { [ U10B04, U10B05 ] };
};

View File

@@ -19,6 +19,11 @@
ipv6 = "42:0:3c46:f7a9:1f0a:1b2b:822a:6050";
};
fatteh = {
ipv6 = "42:0:3c46:aa73:82b0:14d7:7bf8:bf2";
ipv4 = "10.243.2.77";
};
manakish = {
ipv4 = "10.243.2.85";
ipv6 = "42:0:3c46:ac99:ae36:cb8:c551:ba27";

View File

@@ -148,6 +148,11 @@ in
logo = "https://de.wikipedia.org/wiki/Wikipedia:Enzyklop%C3%A4die/Logo_von_Wikipedia#/media/Datei:Wikipedia-logo-v2.svg";
tags = [tags.text];
}
{
stream = "http://stream.freiesradio.org:8000/live.mp3";
station = "Freies Radio Kassel";
description = "Gesellschaft zur drahtlosen Belehrung und Erbauung";
}
{
stream = "http://162.244.80.20:6948";
station = "Cool Jazz Florida";
@@ -1416,9 +1421,8 @@ in
tags = [tags.arabic];
}
{
stream = "http://5.9.16.111:8210/arabic_live";
station = "Radio Arabica";
logo = "https://radioarabica.de/wp-content/uploads/2020/09/LOGO_klein-1.png";
stream = "https://arabica.streamabc.net/76-radioorient-mp3-256-1050481";
station = "Radio Orient";
tags = [tags.berlin tags.arabic];
}
{
@@ -1907,9 +1911,14 @@ in
stream = "https://divyavani.radioca.st/stream";
}
{
station = "XXX sanskrit radio";
station = "Sanskrit Bharati";
tags = [tags.text tags.indian];
stream = "https://stream-23.zeno.fm/m08mkwsyw8quv?zs=0w7MJFPdRfavhR_zPt0M2g";
stream = "https://stream-23.zeno.fm/m08mkwsyw8quv";
}
{
stream = "http://epsilon.shoutca.st:8070/stream";
tags = [tags.text tags.indian tags.holy];
station = "Divyavani Sanskrit Radio";
}
{
station = "Radio Mariam Arabic";
@@ -1966,6 +1975,15 @@ in
station = "radioeins | RBB";
tags = [tags.top40 tags.pop];
}
{
stream = "https://liveradio.swr.de/sw282p3/swr4lu/";
station = "SWR3 Ludwigshafen";
tags = [tags.top40 tags.pop];
}
{
stream = "http://mp3.ffh.de/radioffh/hqlivestream.mp3";
station = "Hitradio FFH";
}
]
++ map (name: {
stream = "https://${name}.stream.publicradio.org/${name}.aac";

View File

@@ -113,6 +113,7 @@ local language_servers = {
html = {}, -- vscode-langservers-extracted
jsonls = {}, -- vscode-langservers-extracted
nil_ls = {}, -- github:oxalica/nil
dhall_lsp_server = {}, -- dhall-lsp-server
-- rnix = {}, -- rnix-lsp
jqls = {}, -- jq-lsp
rust_analyzer = { ["rust-analyzer"] = {} },

View File

@@ -100,7 +100,8 @@ augroup filetypes
autocmd bufnewfile,bufread *.typ packadd typst.vim | set filetype=typst
autocmd bufnewfile,bufread *.ics packadd icalendar.vim | set filetype=icalendar
autocmd bufnewfile,bufread *.ts packadd typescript-vim | set filetype=typescript
autocmd bufnewfile,bufread *.jq packadd jq.vim
autocmd bufnewfile,bufread *.dhall packadd dhall-vim | set filetype=dhall
autocmd bufnewfile,bufread *.jq packadd jq.vim | set filetype=jq
autocmd bufnewfile,bufread *.journal packadd vim-ledger | set filetype=ledger shiftwidth=4
autocmd bufnewfile,bufread urls,config set filetype=conf
autocmd bufnewfile,bufread *.elm packadd elm-vim | set filetype=elm shiftwidth=4
@@ -108,6 +109,7 @@ augroup filetypes
autocmd filetype haskell packadd haskell-vim | set keywordprg=hoogle\ -i
autocmd filetype javascript packadd vim-javascript
autocmd filetype make setlocal noexpandtab
autocmd filetype tsv setlocal noexpandtab
autocmd filetype html packadd emmet-vim
autocmd filetype gitcommit setlocal spell spelllang=en
autocmd filetype mail setlocal spell spelllang=de textwidth=0

View File

@@ -28,6 +28,13 @@
example = "*:0/3";
default = "daily";
};
loadCredential = lib.mkOption {
type = lib.types.listOf lib.types.string;
description = ''
This can be used to pass secrets to the systemd service without adding them to the nix store.
'';
default = [];
};
reporters = lib.mkOption {
type = lib.types.listOf lib.types.path;
description = ''
@@ -82,6 +89,8 @@
Group = "panoptikon";
WorkingDirectory = "/var/lib/panoptikon";
Restart = "on-failure";
StartLimitBurst = 5;
RestartSec = 30;
};
script = ''
${pkgs.git}/bin/git init --quiet
@@ -102,6 +111,7 @@
WorkingDirectory = "/var/lib/panoptikon";
RestartSec = "60";
Restart = "on-failure";
LoadCredential = watcherOptions.loadCredential;
};
unitConfig = {
StartLimitIntervalSec = "300";

5
packages/brassica.nix Normal file
View File

@@ -0,0 +1,5 @@
{
haskell,
haskellPackages,
}:
haskell.lib.dontCheck (haskell.lib.unmarkBroken (haskell.lib.doJailbreak haskellPackages.brassica))

View File

@@ -0,0 +1,238 @@
{
writers,
formats,
wtf,
himalaya,
lib,
jq,
gh,
curl,
khal,
todoman,
gnused,
coreutils,
astrolog,
weatherCityIds ? [2950159],
}: let
rowCount = 10;
columnCount = 6;
yaml = formats.yaml {};
command = args:
{
enabled = true;
type = "cmdrunner";
}
// args;
configuration.wtf = rec {
grid = {
columns = lib.replicate columnCount 32;
rows = lib.replicate rowCount 5;
};
mods.vdir_khal = command {
title = "Calendar";
cmd = "${khal}/bin/khal";
args = ["--color" "list" "--exclude-calendar" "calendarium-tridentinum"];
refreshInterval = "1m";
position = rec {
top = 0;
left = columnCount - width + 1;
height = rowCount - mods.vdir_todo.position.height;
width = 1;
};
};
mods.vdir_todo = command {
title = "Agenda";
cmd = writers.writeDash "vdir_todo" "${todoman}/bin/todo --color=always -h | ${coreutils}/bin/tac";
refreshInterval = "1m";
position = {
top = 8;
left = 0;
height = 2;
width = columnCount + 1;
};
};
mods.weather = {
enabled = true;
cityids = weatherCityIds;
position = {
top = 6;
left = 2;
height = 2;
width = 1;
};
refreshInterval = "15m";
language = "DE";
tempUnit = "C";
useEmoji = true;
compact = true;
};
mods.btc = command {
title = "BTC";
cmd = writers.writeDash "btc" "${curl}/bin/curl -sSL https://rate.sx/BTC | ${gnused}/bin/sed -n '34,36p'";
refreshInterval = "1h";
position = {
top = 6;
left = 0;
height = 1;
width = 2;
};
};
mods.xmr = command {
title = "XMR";
cmd = writers.writeDash "xmr" "${curl}/bin/curl -sSL https://rate.sx/XMR | ${gnused}/bin/sed -n '34,36p'";
refreshInterval = "1h";
position = {
top = 7;
left = 0;
height = 1;
width = 2;
};
};
mods.top = command {
title = "uptime";
cmd = writers.writeDash "top" "top -b -n 1 -E g | ${gnused}/bin/sed -n '1,5p'";
refreshInterval = "30s";
position = {
top = 0;
left = 0;
height = 2;
width = 3;
};
enabled = false;
};
mods.resourceusage = {
enabled = true;
cpuCombined = false;
position = {
top = 0;
left = 0;
height = 2;
width = 1;
};
refreshInterval = "1s";
showCPU = true;
showMem = true;
showSwp = false;
};
mods.ipapi = {
enabled = true;
position = {
top = 0;
left = 1;
height = 2;
width = 2;
};
refreshInterval = "150s";
};
mods.disk-usage = command {
enabled = false;
cmd = "df";
args = ["-h"];
refreshInterval = "1m";
position = {
top = 2;
left = 1;
height = 2;
width = 2;
};
};
mods.email = command {
title = "Email";
cmd = writers.writeDash "email" ''
${himalaya}/bin/himalaya accounts --output json \
| ${jq}/bin/jq -r 'map(.name) | join("\n")' \
| while read -r account
do
${himalaya}/bin/himalaya list --account "$account" -o json \
| ${jq}/bin/jq -r '
map(select(.flags == [])
| "\u001b[33m\(.from.addr)\u001b[0m \(.subject)") | join("\n")
'
done
'';
refreshInterval = "5m";
position = {
top = 2;
left = 0;
height = 4;
width = 3;
};
};
mods.gh-status = command {
enabled = true;
title = "GitHub";
cmd = writers.writeDash "gh-status" ''
${gh}/bin/gh api notifications \
| ${jq}/bin/jq -r 'map("\u001b[35m\(.repository.full_name)\u001b[0m \(.subject.title)") | join("\n")'
'';
refreshInterval = "5m";
position = {
top = 4;
left = 3;
height = 2;
width = 3;
};
};
mods.calendar = command {
title = "Calendar";
cmd = "cal";
args = ["-3" "-m" "-w"];
pty = true;
refreshInterval = "5m";
position = {
top = 6;
left = 3;
height = 2;
width = 3;
};
};
mods.astro-aspects = command {
title = "Aspects";
enabled = false;
cmd = writers.writeDash "astro-aspects" "${astrolog}/bin/astrolog -n -zN Berlin -d";
refreshInterval = "1h";
position = {
top = 7;
left = 3;
height = 1;
width = 2;
};
};
mods.feed = command {
title = "Feed";
cmd = writers.writeDash "feed" ''
${curl}/bin/curl -u "$WTF_MINIFLUX_API_KEY" --basic -s 'https://feed.kmein.de/v1/entries?status=unread&direction=desc' \
| ${jq}/bin/jq -r '
.total as $total | (
.entries
| map(select(.feed | .hide_globally| not) | "\(.feed.category.title) \u001b[32m\(.author)\u001b[0m \(.title)")
| join("\n")
)'
'';
# position = { top = 0; left = 5; height = 5; width = 1; };
position = {
top = 0;
left = 3;
height = 4;
width = 3;
};
refreshInterval = "15m";
};
mods.astro-positions = command {
enabled = false;
title = "Positions";
cmd = writers.writeDash "astro-positions" "${astrolog}/bin/astrolog -q $(date +'%m %d %Y %H:%M') -zN Berlin | ${gnused}/bin/sed -n '4,16p' | ${coreutils}/bin/cut -c 1-33";
refreshInterval = "1h";
position = {
top = 5;
left = 5;
height = 3;
width = 1;
};
};
};
in
writers.writeDashBin "dashboard" ''
exec ${wtf}/bin/wtfutil --config=${yaml.generate "config.yml" configuration}
''

102
packages/dmenu-randr.nix Executable file
View File

@@ -0,0 +1,102 @@
{
lib,
writers,
dmenu,
bc,
psmisc,
util-linux,
xorg,
gawk,
libnotify,
arandr,
gnugrep,
coreutils,
}:
writers.writeDashBin "dmenu-randr" ''
#!/bin/sh
export PATH=${lib.makeBinPath [dmenu bc psmisc util-linux xorg.xrandr gawk libnotify arandr gnugrep coreutils]}
# A UI for detecting and selecting all displays. Probes xrandr for connected
# displays and lets user select one to use. User may also select "manual
# selection" which opens arandr.
twoscreen() { # If multi-monitor is selected and there are two screens.
mirror=$(printf "no\\nyes" | dmenu -i -p "Mirror displays?")
# Mirror displays using native resolution of external display and a scaled
# version for the internal display
if [ "$mirror" = "yes" ]; then
external=$(echo "$screens" | dmenu -i -p "Optimize resolution for:")
internal=$(echo "$screens" | grep -v "$external")
res_external=$(xrandr --query | sed -n "/^$external/,/\+/p" | \
tail -n 1 | awk '{print $1}')
res_internal=$(xrandr --query | sed -n "/^$internal/,/\+/p" | \
tail -n 1 | awk '{print $1}')
res_ext_x=$(echo "$res_external" | sed 's/x.*//')
res_ext_y=$(echo "$res_external" | sed 's/.*x//')
res_int_x=$(echo "$res_internal" | sed 's/x.*//')
res_int_y=$(echo "$res_internal" | sed 's/.*x//')
scale_x=$(echo "$res_ext_x / $res_int_x" | bc -l)
scale_y=$(echo "$res_ext_y / $res_int_y" | bc -l)
xrandr --output "$external" --auto --scale 1.0x1.0 \
--output "$internal" --auto --same-as "$external" \
--scale "$scale_x"x"$scale_y"
else
primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
secondary=$(echo "$screens" | grep -v "$primary")
direction=$(printf "left-of\\nright-of\\nabove\\nbelow" | dmenu -i -p "What side of $primary should $secondary be on?")
xrandr --output "$primary" --auto --scale 1.0x1.0 --output "$secondary" --"$direction" "$primary" --auto --scale 1.0x1.0
fi
}
morescreen() { # If multi-monitor is selected and there are more than two screens.
primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:")
direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?")
tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:")
xrandr --output "$primary" --auto --output "$secondary" --"$direction"-of "$primary" --auto --output "$tertiary" --"$(printf "left\\nright" | grep -v "$direction")"-of "$primary" --auto
}
multimon() { # Multi-monitor handler.
case "$(echo "$screens" | wc -l)" in
2) twoscreen ;;
*) morescreen ;;
esac ;}
onescreen() { # If only one output available or chosen.
xrandr --output "$1" --auto --scale 1.0x1.0 $(echo "$allposs" | grep -v "\b$1" | awk '{print "--output", $1, "--off"}' | paste -sd ' ' -)
}
postrun() { # Stuff to run to clean up.
{ killall dunst ; setsid -f dunst ;} >/dev/null 2>&1 # Restart dunst to ensure proper location on screen
}
# Get all possible displays
allposs=$(xrandr -q | grep "connected")
# Get all connected screens.
screens=$(echo "$allposs" | awk '/ connected/ {print $1}')
# If there's only one screen
[ "$(echo "$screens" | wc -l)" -lt 2 ] &&
{ onescreen "$screens"; postrun; notify-send "💻 Only one screen detected." "Using it in its optimal settings..."; exit ;}
# Get user choice including multi-monitor and manual selection:
# reenable if you sometimes want single display
chosen=$(printf "%s\\nmulti-monitor\\nmanual selection" "$screens" | dmenu -i -p "Select display arangement:") &&
case "$chosen" in
"manual selection") arandr ; exit ;;
"multi-monitor") multimon ;;
*) onescreen "$chosen" ;;
esac
postrun
''

18
packages/emailmenu.nix Normal file
View File

@@ -0,0 +1,18 @@
{
writers,
lib,
coreutils,
dmenu,
gawk,
libnotify,
xclip,
khard,
}:
writers.writeDashBin "emailmenu" ''
history_file=$HOME/.cache/emailmenu
PATH=${lib.makeBinPath [coreutils dmenu gawk libnotify xclip]}
chosen=$(${khard}/bin/khard email --parsable | awk '!seen[$0]++' | dmenu -i -p 📧 -1 -l 10 | tee --append "$history_file" | cut -f1)
[ "$chosen" != "" ] || exit
echo "$chosen" | tr -d '\n' | xclip -selection clipboard
notify-send --app-name="$(basename "$0")" "'$chosen' copied to clipboard." &
''

80
packages/hora.nix Normal file
View File

@@ -0,0 +1,80 @@
{ symlinkJoin
, hledger
, writers
, lib
, git
, coreutils
, gnugrep
, timeLedger
, ...
}:
let
date = "${coreutils}/bin/date +'%Y-%m-%d %H:%M:%S'";
hora = writers.writeDashBin "hora" "${hledger}/bin/hledger -f ${lib.escapeShellArg timeLedger} \"$@\"";
hora-edit = writers.writeDashBin "hora-edit" "$EDITOR ${lib.escapeShellArg timeLedger}";
hora-status = writers.writeDashBin "hora-status" "${coreutils}/bin/tac ${lib.escapeShellArg timeLedger} | ${gnugrep}/bin/grep -m 1 .";
hora-start = writers.writeDashBin "hora-start" ''
last_nonempty_line=$(${hora-status}/bin/hora-status)
(echo $last_nonempty_line | ${gnugrep}/bin/grep -q "^o") || {
echo "Last activity must be closed: $last_nonempty_line" >/dev/stderr
exit 1
}
account=$1
(${hora}/bin/hora accounts | ${gnugrep}/bin/grep -q "^$account\$") || {
echo "The account '$account' is not known. Please add manually."
exit 1
}
message=$2
date=$(${date})
echo "i $date $account $message\n" >> "${timeLedger}"
echo "Started $account at $date" >/dev/stderr
'';
hora-stop = writers.writeDashBin "hora-stop" ''
last_nonempty_line=$(${hora-status}/bin/hora-status)
(echo $last_nonempty_line | ${gnugrep}/bin/grep "^i") || {
echo "Last activity cannot be closed: $last_nonempty_line" >/dev/stderr
exit 1
}
last_activity=$(echo "$last_nonempty_line" | ${coreutils}/bin/cut -d' ' -f 4)
date=$(${date})
echo "o $date\n" >> ${timeLedger}
echo "Stopped $last_activity at $date" >/dev/stderr
'';
hora-year = writers.writeDashBin "hora-year" ''
${hora}/bin/hora balance --tree --monthly --begin $(${coreutils}/bin/date +%Y) --depth 1
'';
hora-git = writers.writeDashBin "hora-git" ''
directory=$(${coreutils}/bin/dirname ${lib.escapeShellArg timeLedger})
if [ $# -gt 0 ]
then
${git}/bin/git -C "$directory" --all --message=$(${date})
else
${git}/bin/git -C "$directory" "$@"
fi
'';
hora-weekly = writers.writeDashBin "hora-weekly" ''
${hora}/bin/hora register -p weekly --depth 1 --empty
'';
in
symlinkJoin {
name = "hora";
paths = [
hora
hora-edit
hora-start
hora-status
hora-stop
hora-year
hora-git
hora-weekly
];
}

16
packages/jq-lsp.nix Normal file
View File

@@ -0,0 +1,16 @@
{
buildGoModule,
fetchFromGitHub,
lib,
}:
buildGoModule {
name = "jq-lsp";
version = "unstable-2023-09-08";
src = fetchFromGitHub {
owner = "wader";
repo = "jq-lsp";
rev = "85edf1adbe5e6c91b37c67b6a4bf85eda1e49f2f";
hash = "sha256-ItLKRSbGZ8UqFEHCoh96KwhSpuKZ3l+2ZXnBkHEZL0M=";
};
vendorHash = "sha256-ppQ81uERHBgOr/bm/CoDSWcK+IqHwvcL6RFi0DgoLuw=";
}

View File

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

16
packages/mpv-iptv.nix Normal file
View File

@@ -0,0 +1,16 @@
{
mpv,
writers,
}:
writers.writeDashBin "iptv" ''
set -efu
${mpv}/bin/mpv \
--audio-display=no --audio-channels=stereo \
--audio-samplerate=48000 --audio-format=s16 \
--ao-pcm-file=/run/snapserver/snapfifo --ao=pcm \
--audio-delay=-1 \
--playlist=https://iptv-org.github.io/iptv/index.nsfw.m3u \
--idle=yes \
--input-ipc-server=/tmp/mpv.ipc \
"$@"
''

View File

@@ -2,15 +2,23 @@
pkgs,
lib,
}: let
streams-tsv = pkgs.fetchurl {
m3u-to-tsv = ''
${pkgs.gnused}/bin/sed '/#EXTM3U/d;/#EXTINF/s/.*,//g' $out | ${pkgs.coreutils}/bin/paste -d'\t' - - > $out.tmp
mv $out.tmp $out
'';
live-tv = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8";
sha256 = "sha256-yNeML586RXXX5+VUtinH1C9M50hvnJih7oLmsVspk0M=";
postFetch = m3u-to-tsv;
};
kodi-tv = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/iptv/kodi/kodi_tv.m3u";
sha256 = "sha256-gbHV37Yo+D3TYfDXZyb9IX8aRsguZ3qG2SYlY8NsTL0=";
postFetch = ''
${pkgs.gnused}/bin/sed '/#EXTM3U/d;/#EXTINF/s/.*,//g' $out | ${pkgs.coreutils}/bin/paste -d'\t' - - > $out.tmp
mv $out.tmp $out
'';
sha256 = "sha256-EZEshHWUejLTy6qsBhELfaYdDpQ/uqPsZa1JA0mb7h0=";
postFetch = m3u-to-tsv;
};
in
pkgs.writers.writeDashBin "mpv-tv" ''
exec ${pkgs.mpv}/bin/mpv --force-window=yes "$(${pkgs.dmenu}/bin/dmenu -i -l 5 < ${streams-tsv} | ${pkgs.coreutils}/bin/cut -f2)"
cat ${kodi-tv} ${live-tv} | ${pkgs.mpv}/bin/mpv --force-window=yes "$(${pkgs.dmenu}/bin/dmenu -i -l 5 | ${pkgs.coreutils}/bin/cut -f2)"
''

View File

@@ -4,7 +4,7 @@
rofi,
findutils,
coreutils,
noteDirectory ? "~/cloud/syncthing/obsidian",
noteDirectory ? "~/state/obsidian",
currentDates ? false,
niveumPackages,
}:

View File

@@ -1,7 +1,7 @@
{
neovim,
vimPlugins,
obsidiantVaultDirectory ? "~/cloud/syncthing/obsidian/",
obsidiantVaultDirectory ? "~/state/obsidian/",
...
}:
neovim.override {
@@ -15,6 +15,9 @@ neovim.override {
let g:vimwiki_listsyms = ' X'
let g:vimwiki_commentstring = '<!--%s-->'
let mapleader = ","
nmap <Leader>r :NERDTreeFocus<cr>R<c-w><c-p>
let g:vimwiki_list = [{
\ 'path': '${obsidiantVaultDirectory}',
\ 'syntax': 'markdown',

107
packages/polyglot.nix Normal file
View File

@@ -0,0 +1,107 @@
{
writers,
mpv,
}: let
arabicStories = "/home/kfm/cloud/syncthing/music/Arabic/Stories";
levantineTextbook = "/home/kfm/cloud/syncthing/music/Arabic/Damaszenisch";
in
writers.writeDashBin "polyglot" ''
languages='persian
arabic
coptic
sanskrit
levantine
hebrew'
kurdish="https://www.youtube.com/channel/UCvutKJerMREoQtzXiQaDNBQ
https://www.youtube.com/channel/UCdqSEXLhnsltwN4IESMInDA"
persian="https://www.youtube.com/playlist?list=PL4aDVDOklYH5MnXNjCeRalFuRZ46I_p8Q
https://www.youtube.com/playlist?list=PL4aDVDOklYH404fg2zZoUQR6YcQp4UUrW
https://www.youtube.com/playlist?list=PL4aDVDOklYH4FhJZ4cX14HuUVsDJKUifr
https://www.youtube.com/playlist?list=PL4aDVDOklYH6i_Od0zD4ZFNqmZVBOTo4z
https://www.youtube.com/playlist?list=PL4aDVDOklYH5NuhQvc52KCPO0X64FU_bd
https://www.youtube.com/playlist?list=PL4aDVDOklYH6MFQfuQ5VIJmwuKfR1kgUR
https://www.youtube.com/playlist?list=PL4aDVDOklYH48_uuVl-AAPbkemzZFvnHH
https://www.youtube.com/playlist?list=PL4aDVDOklYH61WM-WmzjZyTFAE7AILb7j
https://www.youtube.com/channel/UCGY0LHNDQjt3GQrrc3r3Atw
https://www.youtube.com/channel/UC4jgHye1-kjDlY-2StrtVtA
https://www.youtube.com/channel/UCf67DKdLhpFW-7c7FZre2Ww
https://www.youtube.com/channel/UCLOGyLCPJL99gNriGAhwl7g
https://www.youtube.com/channel/UCxV5ZfGJjJhrzy_9am-S4QQ
https://www.youtube.com/channel/UCBSF89JJieetWjJTGZhGKJA
https://www.youtube.com/channel/UCFGB29XZkEGS1Vw7WplBqIg
https://www.youtube.com/channel/UChiyq4qjnAWMNhwPu2KL4yg
https://www.youtube.com/channel/UCULxPJn3NjsaXt4Nc-sIZrw
https://www.youtube.com/channel/UCYRyoX3ru_BfMiXVCGgRS6w
https://www.youtube.com/channel/UCbCvjr0v_-8LmZh9431N84w"
hebrew="https://www.youtube.com/playlist?list=PLXU4ackZsIPp2G8XjfpsYso2p3IHyl-bJ
https://www.youtube.com/playlist?list=PLXU4ackZsIPqLOWeWZc1frv3VCAohi90p
https://www.youtube.com/playlist?list=PLXU4ackZsIPpWWdWvtM3UtZHFKFhmI2mj
https://www.youtube.com/playlist?list=PLXU4ackZsIPoz05eaLCHsCv4Wrk4n1g34
https://www.youtube.com/channel/UCrMYJpbMhhQZhXi4ui3FKEw
https://www.youtube.com/playlist?list=PLXU4ackZsIPombqx98SIPanShjSUSlBW-
https://www.youtube.com/playlist?list=PLXU4ackZsIPrdSFUjNdw3eGK-qbtgqt-6
https://www.youtube.com/playlist?list=PLXU4ackZsIPrVHjB4P9QrYzJvBKD3MLuA
https://www.youtube.com/playlist?list=PLXU4ackZsIPp_7fb7TMyOaaX_ORI6vH29
https://www.youtube.com/channel/UCkKmeTinUEU27syZPKrzWQQ
https://www.youtube.com/channel/UC2gy2POCchS7JM_UCsZx5dw
https://www.youtube.com/channel/UCb2bkA-kSUz4Mj5YJv0zpJQ"
arabic="https://www.youtube.com/channel/UCbqqV0gO5QbV9iGITdxp-cw
https://www.youtube.com/channel/UCxNwNoGEhHg7lGOhthG4r6A
https://www.youtube.com/channel/UCmYYUdR85LRVB5yT1Y7DjFA
https://www.youtube.com/channel/UCIgFDroRoDYnxBlOGmwJ78A
https://www.youtube.com/channel/UCn5ASYdp7CzbFH2qtqjIJ9w
https://www.youtube.com/channel/UCD8N8HjsCkCmykfPnVleVRg
https://www.youtube.com/channel/UCEmWUZanVYXEzZXYDHzD-iA
https://www.youtube.com/channel/UC9rnrMdYzfqdjiuNXV7q8oQ
https://live-hls-audio-web-aja.getaj.net/VOICE-AJA/01.m3u8
http://asima.out.airtime.pro:8000/asima_a
http://edge.mixlr.com/channel/qtgru
http://ninarfm.grtvstream.com:8896/stream
http://andromeda.shoutca.st:8189/stream
http://www.dreamsiteradiocp4.com:8014/stream
http://n02.radiojar.com/sxfbks1vfy8uv.mp3
http://stream-025.zeno.fm/5y95pu36sm0uv
${arabicStories}"
levantine_general="https://www.youtube.com/channel/UCe6YxTdT2zsbhG8ThAEssLw
https://www.youtube.com/channel/UC8IsrQ3Fvg1X2QboSRIMBHA
https://www.youtube.com/channel/UCo65IZihlwP204bleDDuAyA
https://www.youtube.com/channel/UCDXBymJu72YX2LzKVlZyZaA
https://www.youtube.com/channel/UCpovzufzZSP3kCYm16B5Hyw
https://www.youtube.com/channel/UCKkKlH7eJFBWhofiP5kQEFQ
https://www.youtube.com/channel/UC-YYp3mws0sa9vI3VUCWqhw
https://www.youtube.com/channel/UCpa9WD4btPSyn0h-DZSATGw
https://www.youtube.com/channel/UCb7oMrqwZnr3ZCayqnkkb8w
https://www.youtube.com/channel/UCuLNZirpkm2HYxq-tTiXnOA
https://www.youtube.com/channel/UCSGBoIBGUxUmpTYJfYZXs-A
https://www.youtube.com/channel/UCPINCItSdAc7SBXxi6AcWpw
https://www.youtube.com/channel/UCbZvzUBn04a_a95HFMX6eTA
https://www.youtube.com/channel/UChJs6Kqju9BmN5FMHhBfRSA
https://www.youtube.com/channel/UCyC7OV3gEQkguVwl9qDGuTQ
https://www.youtube.com/channel/UCwv1qu4iX6Bm6X-uSSB2eBQ
${levantineTextbook}"
sanskrit="https://www.youtube.com/channel/UCTnCQNG_1WIlunxbp1SAOvw
https://stream-23.zeno.fm/m08mkwsyw8quv
https://www.youtube.com/channel/UCqFg6QnwgtVHo1iFgpxrx-A"
language="$(echo "$languages" | shuf -n1)"
case "$language" in
arabic)
${mpv}/bin/mpv --shuffle $arabic;;
persian)
${mpv}/bin/mpv --shuffle $persian;;
coptic)
;;
sanskrit)
${mpv}/bin/mpv --shuffle $sanskrit;;
levantine)
${mpv}/bin/mpv --shuffle $levantine;;
hebrew)
${mpv}/bin/mpv --shuffle $hebrew;;
esac
''

View File

@@ -0,0 +1,48 @@
{
stdenv,
autoreconfHook,
pkg-config,
which,
libtool,
glib,
zlib,
gtk3,
libmysqlclient,
pcre,
libxml2,
gnused,
fetchFromGitHub,
}:
stdenv.mkDerivation {
name = "stardict-tools";
nativeBuildInputs = [
autoreconfHook
pkg-config
which
libtool
];
buildInputs = [glib zlib gtk3 libmysqlclient pcre libxml2];
buildPhase = "make";
configureFlags = ["--disable-dict"];
env.NIX_CFLAGS_COMPILE = toString [
"-Wno-error=format-security"
];
patchPhase = ''
${gnused}/bin/sed -i s/noinst_PROGRAMS/bin_PROGRAMS/ tools/src/Makefile.am
'';
installFlags = ["INSTALL_PREFIX=$(out)"];
autoreconfPhase = ''
patchShebangs ./autogen.sh
./autogen.sh
'';
installPhase = ''
mkdir $out
make install
'';
src = fetchFromGitHub {
owner = "huzheng001";
repo = "stardict-3";
rev = "96b96d89eab5f0ad9246c2569a807d6d7982aa84";
hash = "sha256-zmqp2maKv2JZ5fwMVE7gIOg0BKdEKZ4UvTLC0suuBRw=";
};
}

View File

@@ -5,7 +5,7 @@
}: let
script = fetchurl {
url = "https://raw.githubusercontent.com/soimort/translate-shell/gh-pages/trans.awk";
sha256 = "178r8d27bry1mzd1g8x2svp4w469hwv7nnxnmnsinx974skjx0jb";
hash = "sha256-KT5iRRGtHpBTrPfs0L2e4JW6JrXVTVvgCXeFKFcr1P4=";
};
in
writers.writeDashBin "trans" ''

View File

@@ -11,7 +11,20 @@
xclip,
xdotool,
gawk,
fetchFromGitHub,
}: let
emoji-flags = builtins.fromJSON (builtins.readFile "${fetchFromGitHub {
owner = "matiassingers";
repo = "emoji-flags";
rev = "93ae74505d09bb55a3eb3a511f1dfc0dd60a5347";
sha256 = "10j73sx6jb250v37bz2p7w8big0v8da3r6kpqz9xcl667gl8svwx";
}}/data.json");
emoji-flags-file = writeText "emoji-flags.txt" (lib.strings.concatMapStringsSep "\n" ({
emoji,
title,
...
}: "${emoji} ${title}")
emoji-flags);
unicode-file = runCommand "unicode.txt" {} ''
${
writers.writePython3 "generate.py" {flakeIgnore = ["E501" "E722"];} ''
@@ -80,7 +93,7 @@ in
all_characters() {
tac "$history_file"
cat ${kaomoji-file} ${unicode-file}
cat ${kaomoji-file} ${unicode-file} ${emoji-flags-file}
}
chosen=$(all_characters | awk '!seen[$0]++' | dmenu -p unicode -i -l 10 | tee --append "$history_file" | sed "s/ .*//")

View File

@@ -55,6 +55,7 @@
];
opt = [
csv
dhall-vim
elm-vim
emmet-vim
haskell-vim

View File

@@ -22,6 +22,6 @@ stdenv.mkDerivation {
homepage = https://github.com/thameera/vimv;
description = "Batch-rename files using Vim";
license = licenses.mit;
platforms = platforms.linux;
platforms = platforms.all;
};
}

Submodule secrets updated: 9efd6ac7e1...ecdc95abf8

View File

@@ -1,6 +1,6 @@
secrets/alertmanager-token-reporters.age
secrets/blackboard-calendar-ics.age
secrets/cifs-credentials-hu-berlin.age
secrets/cifs-credentials-zodiac.age
secrets/di-fm-key.age
secrets/email-password-cock.age
secrets/email-password-dslalewa.age
@@ -8,32 +8,34 @@ secrets/email-password-fsklassp.age
secrets/email-password-fysi.age
secrets/email-password-meinhak99.age
secrets/email-password-meinhaki.age
secrets/email-password-meinhark.age
secrets/email-password-posteo.age
secrets/fatteh-retiolum-privateKey-ed25519.age
secrets/fatteh-retiolum-privateKey-rsa.age
secrets/fatteh-syncthing-cert.age
secrets/fatteh-syncthing-key.age
secrets/ful-retiolum-privateKey-ed25519.age
secrets/ful-retiolum-privateKey-rsa.age
secrets/ful-root.age
secrets/ful-specus-privateKey.age
secrets/fu-sftp-key.age
secrets/github-token-i3status-rust.age
secrets/grafana-password-admin.age
secrets/hetzner-storagebox-credentials.age
secrets/home-assistant-token.age
secrets/kabsa-retiolum-privateKey-ed25519.age
secrets/kabsa-retiolum-privateKey-rsa.age
secrets/kabsa-specus-privateKey.age
secrets/kabsa-syncthing-cert.age
secrets/kabsa-syncthing-key.age
secrets/kfm-password.age
secrets/ledger-basicAuth.age
secrets/makanek-retiolum-privateKey-ed25519.age
secrets/makanek-retiolum-privateKey-rsa.age
secrets/makanek-specus-privateKey.age
secrets/manakish-retiolum-privateKey-ed25519.age
secrets/manakish-retiolum-privateKey-rsa.age
secrets/manakish-syncthing-cert.age
secrets/manakish-syncthing-key.age
secrets/maxmind-license-key.age
secrets/mega-password.age
secrets/miniflux-api-token.age
secrets/miniflux-credentials.age
secrets/nextcloud-password-admin.age
secrets/nextcloud-password-database.age
@@ -56,11 +58,10 @@ secrets/telegram-token-menstruation.age
secrets/telegram-token-nachtischsatan.age
secrets/telegram-token-proverb.age
secrets/telegram-token-reverse.age
secrets/telegram-token-streaming-link.age
secrets/weechat-sec.conf.age
secrets/zaatar-moodle-dl-basicAuth.age
secrets/zaatar-moodle-dl-tokens.json.age
secrets/zaatar-retiolum-privateKey-ed25519.age
secrets/zaatar-retiolum-privateKey-rsa.age
secrets/zaatar-syncthing-cert.age
secrets/zaatar-syncthing-key.age
secrets/zaatar-ympd-basicAuth.age

View File

@@ -0,0 +1,47 @@
{
config,
pkgs,
...
}: let
inherit (import ../../lib) retiolumAddresses;
in {
imports = [
./hardware-configuration.nix
../../configs/networkmanager.nix
../../configs/default.nix
# ../../configs/gnome.nix
];
niveum = {
batteryName = "BAT1";
wirelessInterface = "wlp3s0";
promptColours.success = "blue";
};
services.illum.enable = true;
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/selenized-light.yaml";
age.secrets = {
retiolum-rsa = {
file = ../../secrets/fatteh-retiolum-privateKey-rsa.age;
mode = "400";
owner = "tinc.retiolum";
group = "tinc.retiolum";
};
retiolum-ed25519 = {
file = ../../secrets/fatteh-retiolum-privateKey-ed25519.age;
mode = "400";
owner = "tinc.retiolum";
group = "tinc.retiolum";
};
restic.file = ../../secrets/restic.age;
syncthing-cert.file = ../../secrets/fatteh-syncthing-cert.age;
syncthing-key.file = ../../secrets/fatteh-syncthing-key.age;
};
networking.hostName = "fatteh";
networking.retiolum = retiolumAddresses.fatteh;
system.stateVersion = "23.11";
}

View File

@@ -0,0 +1,51 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.luks.devices."luks-aa6beb1b-3e54-4a0e-ac9c-e0c007d73cd5".device = "/dev/disk/by-uuid/aa6beb1b-3e54-4a0e-ac9c-e0c007d73cd5";
fileSystems."/" = {
device = "/dev/disk/by-uuid/42b747ff-a432-4c0e-bb0a-59f0a68c44a2";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-67c1f7da-4318-49f7-bd98-cc731990b595".device = "/dev/disk/by-uuid/67c1f7da-4318-49f7-bd98-cc731990b595";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/9051-0891";
fsType = "vfat";
};
swapDevices = [
{device = "/dev/disk/by-uuid/529a1893-773e-4d04-bf6c-16e67e1ed3c7";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wwan0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,5 +1,4 @@
{
lib,
config,
pkgs,
...
@@ -11,7 +10,7 @@ in {
./matomo.nix
./radio.nix
./panoptikon.nix
./ledger.nix
./hledger.nix
../../configs/monitoring.nix
../../configs/tor.nix
../../configs/save-space.nix
@@ -19,6 +18,7 @@ in {
../../configs/retiolum.nix
../../configs/sshd.nix
../../configs/nix.nix
../../configs/admin-essentials.nix
];
niveum.passport = {
@@ -89,7 +89,7 @@ in {
defaults.email = kieran.email;
};
users.users.root.passwordFile = config.age.secrets.root.path;
users.users.root.hashedPasswordFile = config.age.secrets.root.path;
environment.systemPackages = [pkgs.vim pkgs.git pkgs.tmux pkgs.python3];

View File

@@ -25,13 +25,13 @@
script = ''
${pkgs.git}/bin/git config user.name "hledger-web"
${pkgs.git}/bin/git config user.email "hledger-web@${config.networking.hostName}"
${pkgs.git}/bin/git commit -am $(date -Ih)
${pkgs.git}/bin/git commit -am $(date -Ih) || :
${pkgs.git}/bin/git pull --rebase
${pkgs.git}/bin/git push
'';
serviceConfig = {
User = "hledger";
Group = "hledger";
User = "root";
Group = "root";
WorkingDirectory = config.services.hledger-web.stateDir;
};
};

View File

@@ -13,6 +13,17 @@
retiolumLink = true;
};
telegram-kmein = let
chatId = "-1001796440545";
in
pkgs.writers.writeDash "telegram-fulltext" ''
export TOKEN="$(cat "$CREDENTIALS_DIRECTORY/token")"
${pkgs.curl}/bin/curl -X POST "https://api.telegram.org/bot''${TOKEN}/sendMessage" \
-d chat_id=${chatId} \
-d text="$(cat)" \
| ${pkgs.jq}/bin/jq -e .ok
'';
irc-kmein = panoptikon.kpaste-irc {
messagePrefix = "$PANOPTIKON_WATCHER: ";
target = "kmein";
@@ -20,6 +31,8 @@
retiolumLink = false;
};
in {
age.secrets.telegram-token-kmein.file = ../../secrets/telegram-token-kmein.age;
services.panoptikon = {
enable = true;
watchers = {
@@ -42,6 +55,10 @@ in {
script = panoptikon.url "https://kratylos.reichert-online.org/current_issue/KRATYLOS";
reporters = [irc-kmein];
};
kobudo-tesshinkan = {
script = panoptikon.url "https://kobudo-tesshinkan.eu/index.php/de/termine-berichte/lehrgaenge/";
reporters = [irc-kmein telegram-kmein];
};
zeno-free = {
script = panoptikon.urlSelector ".zenoCOMain" "http://www.zeno.org/Lesesaal/M/E-Books";
reporters = [irc-kmein];
@@ -50,6 +67,10 @@ in {
script = panoptikon.urlSelector "#main" "https://carolinawelslau.de/";
reporters = [irc-kmein];
};
humboldt-preis = {
script = panoptikon.urlSelector "#content-core" "https://www.hu-berlin.de/de/ueberblick/menschen/ehrungen/humboldtpreis";
reporters = [irc-kmein];
};
lisalittmann = {
script = panoptikon.urlSelector "#site-content" "https://lisalittmann.de/";
reporters = [irc-kmein];
@@ -94,6 +115,14 @@ in {
script = panoptikon.urlSelector "[itemprop=articleBody]" "https://www.indogermanistik.org/tagungen/tagungen-der-ig.html";
reporters = [irc-kmein];
};
fu-distant = {
script = panoptikon.urlSelector "#current_events" "https://www.geschkult.fu-berlin.de/en/e/ma-distant/Termine/index.html";
reporters = [irc-kmein];
};
fu-aegyptologie = {
script = panoptikon.urlSelector "#current_events" "https://www.geschkult.fu-berlin.de/e/aegyptologie/termine/index.html";
reporters = [irc-kmein];
};
};
};
}

View File

@@ -124,7 +124,15 @@ in {
make_streams("wikipedia", random_url("${wikipedia-article}"), description="Zufällige Artikel von Wikipedia", genre="useless knowledge")
'';
systemd.services.radio.environment.TMPDIR = liquidsoapDirectory;
systemd.services.radio = {
environment.TMPDIR = liquidsoapDirectory;
serviceConfig = {
RuntimeMaxSec = "${toString (5 * 60 * 60)}s";
Restart = "always";
};
};
environment.systemPackages = [refresh-qasaid];
systemd.tmpfiles.rules = [
(tmpfilesConfig {

View File

@@ -8,9 +8,10 @@
in {
imports = [
./hardware-configuration.nix
../../configs/battery.nix
../../configs/tlp.nix
../../configs/default.nix
../../configs/networkmanager.nix # TODO how to get passwords into there?
../../configs/networkmanager.nix
../../configs/power-action.nix
];
niveum = {
@@ -19,6 +20,8 @@ in {
promptColours.success = "cyan";
};
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/dracula.yaml";
nix.settings = {
cores = 1;
max-jobs = 2;

103
systems/maakaron/home.nix Normal file
View File

@@ -0,0 +1,103 @@
{
config,
pkgs,
lib,
inputs,
niveumPackages,
...
}: let
system = "x86_64-darwin";
nextcloud = "${config.home.homeDirectory}/Nextcloud/ZODIAC";
hora = pkgs.callPackage ../../packages/hora.nix {
timeLedger = "${nextcloud}/hora.timeclock";
};
adminEssentials = import ../../configs/admin-essentials.nix {
inherit pkgs niveumPackages lib system;
};
stardict = import ../../configs/stardict.nix {
inherit pkgs lib inputs;
};
git = import ../../configs/git.nix {
inherit pkgs lib inputs system;
};
in {
home.packages =
[
hora
niveumPackages.vim
pkgs.ghc
pkgs.python3
]
++ adminEssentials.environment.systemPackages
++ git.environment.systemPackages;
#++ stardict.environment.systemPackages;
home.shellAliases =
adminEssentials.environment.shellAliases
// git.environment.shellAliases;
programs.git = git.home-manager.users.me.programs.git;
programs.zsh = let
promptColours = {
success = "green";
failure = "red";
};
in {
autocd = true;
defaultKeymap = "viins";
enableAutosuggestions = true;
enableCompletion = true;
enable = true;
historySubstringSearch.enable = true;
syntaxHighlighting.enable = true;
syntaxHighlighting.highlighters = ["main" "brackets" "pattern" "line"];
initExtra = ''
# ref https://gist.github.com/meeech/0b97a86f235d10bc4e2a1116eec38e7e
if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ];
then
. '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
fi
precmd () {
if [[ -n $IN_NIX_SHELL ]]; then
PROMPT='%B%~%b %(?.%F{${promptColours.success}}.%F{${promptColours.failure}})λ%f '
else
PROMPT='%B%~%b %(?.%F{${promptColours.success}}.%F{${promptColours.failure}})%#%f '
fi
print -Pn "\e]2;%n@%M:%~\a" # title bar prompt
}
zle-keymap-select zle-line-init () {
case $KEYMAP in
vicmd) print -n '\e]12;green\a';;
viins|main) print -n '\e]12;gray\a';;
esac
}
zle -N zle-line-init
zle -N zle-keymap-select
'';
};
home.sessionVariables.EDITOR = "${niveumPackages.vim}/bin/nvim";
home.file."Local Applications".source = pkgs.symlinkJoin {
name = "local-applications";
paths = [pkgs.anki-bin pkgs.dbeaver pkgs.vscode pkgs.stellarium];
};
home.stateVersion = "23.11";
home.username = "xm7234fu";
home.homeDirectory = "/Users/${config.home.username}";
nixpkgs.config.allowUnfree = true;
nix.package = pkgs.nixFlakes;
nix.extraOptions = "experimental-features = nix-command flakes";
}
/*
hora register -p weekly --depth 1 --empty
*/

View File

@@ -16,7 +16,7 @@ in {
./names.nix
./nextcloud.nix
./radio-news.nix
./onlyoffice.nix
# ./onlyoffice.nix
./retiolum-map.nix
./tarot.nix
./tt-rss.nix
@@ -29,6 +29,7 @@ in {
../../configs/spacetime.nix
../../configs/sshd.nix
../../configs/telegram-bots
../../configs/admin-essentials.nix
];
services.restic.backups.niveum = {

View File

@@ -7,7 +7,8 @@
startAt = "7:00";
script = ''
greeting=$(echo "moin
MOIN" | shuf -n1)
MOIN
moin: gib" | shuf -n1)
echo "$greeting" | ${config.nur.repos.mic92.ircsink}/bin/ircsink \
--nick "$greeting""bot" \
--server irc.hackint.org \

View File

@@ -263,6 +263,9 @@ in {
}
];
# otherwise bearer_token_file will fail
services.prometheus.checkConfig = "syntax-only";
services.prometheus.scrapeConfigs = [
{
job_name = "makanek";
@@ -296,16 +299,19 @@ in {
static_configs = [
{
targets = [
"alew.hu-berlin.de"
"pad.kmein.de"
"code.kmein.de"
"radio.kmein.de"
"tarot.kmein.de"
"cloud.kmein.de"
"grafana.kmein.r"
"https://alew.hu-berlin.de"
"https://beta.alew.hu-berlin.de"
"https://alew.hu-berlin.de/api/search?substring=die&domain=lemma&derivations=true&addition=true&diacritics=false&position=infix"
"https://beta.alew.hu-berlin.de/api/search?substring=die&domain=lemma&derivations=true&addition=true&diacritics=false&position=infix"
"https://pad.kmein.de"
"https://code.kmein.de"
"https://radio.kmein.de"
"https://tarot.kmein.de"
"https://cloud.kmein.de"
"http://grafana.kmein.r"
# "names.kmein.r"
"rrm.r"
"graph.r"
"http://rrm.r"
"http://graph.r"
];
}
];

View File

@@ -1,7 +1,6 @@
{
pkgs,
config,
lib,
...
}: let
storageBoxMountPoint = "/mnt/storagebox";
@@ -48,10 +47,9 @@ in {
services.nextcloud = {
enable = true;
package = pkgs.nextcloud26;
package = pkgs.nextcloud27;
https = true;
enableBrokenCiphersForSSE = false;
autoUpdateApps = {
enable = true;
@@ -104,9 +102,11 @@ in {
ensureUsers = [
{
name = "nextcloud";
ensurePermissions."DATABASE ${config.services.nextcloud.config.dbname}" = "ALL PRIVILEGES";
ensureDBOwnership = true;
# ensurePermissions."DATABASE ${config.services.nextcloud.config.dbname}" = "ALL PRIVILEGES";
}
];
package = pkgs.postgresql_14;
};
services.nginx.virtualHosts."cloud.kmein.de" = {

View File

@@ -1,8 +1,4 @@
{
pkgs,
config,
...
}: {
{config, ...}: {
services.onlyoffice = {
enable = true;
port = 8111;

View File

@@ -15,19 +15,4 @@ in {
description = "supplies git history news to radio lassulus and lets you enter your own.";
}
];
systemd.services.stockholm-history = {
startAt = "*:58:00";
script = ''
stockholm=$(mktemp -d)
trap clean EXIT
clean() {
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 -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

@@ -61,7 +61,7 @@ in {
addresses = "irc.hackint.org/6697";
ipv6 = true;
ssl = true;
autojoin = ["#eloop" "#krebs" "#hsmr" "#hsmr-moin" "#nixos" "#the_playlist" "#flipdot-berlin" "#hackint"];
autojoin = ["#eloop" "#krebs" "#the_playlist"];
sasl_mechanism = "plain";
sasl_username = nick;
sasl_password = "\${sec.data.hackint_sasl}";
@@ -70,22 +70,11 @@ in {
autoconnect = true;
addresses = "irc.libera.chat/6697";
ssl = true;
autojoin = ["#flipdot" "#haskell" "#nixos" "#fysi" "#binaergewitter" "#vim" "#newsboat"];
autojoin = ["#haskell" "#fysi" "#binaergewitter" "#vim"];
sasl_mechanism = "plain";
sasl_username = nick;
sasl_password = "\${sec.data.libera_sasl}";
};
oftc = {
autoconnect = true;
addresses = "irc.oftc.net/6697";
ssl = true;
ipv6 = true;
command = lib.concatStringsSep "\\;" [
"/msg nickserv identify \${sec.data.oftc_account}"
"/msg nickserv set cloak on"
];
autojoin = ["#home-manager"];
};
retiolum = {
autoconnect = true;
addresses = "irc.r";
@@ -154,7 +143,7 @@ in {
};
bots = {
buffer = "irc.retiolum.*";
tags = ["nick_gitlab"];
tags = ["nick_gitlab" "nick_prometheus"];
regex = "*";
};
people = {
@@ -193,9 +182,9 @@ in {
users.extraUsers.weechat = {
useDefaultShell = true;
openssh.authorizedKeys.keys =
kieran.sshKeys pkgs
kieran.sshKeys
++ [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC+KVDmYYH7mA8v81e9O3swXm3ZVYY9t4HP65ud61uXy weechat_android@heym"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC+KVDmYYH7mA8v81e9O3swXm3ZVYY9t4HP65ud61uXy weechat_android@kibbeh"
];
createHome = true;
group = "weechat";

View File

@@ -1,6 +1,7 @@
{
config,
pkgs,
lib,
...
}: let
inherit (import ../../lib) retiolumAddresses;
@@ -10,8 +11,10 @@ in {
./hardware-configuration.nix
./hdmi.nix
../../configs/default.nix
../../configs/battery.nix
../../configs/tlp.nix
../../configs/wpa_supplicant.nix
../../configs/admin-essentials.nix
../../configs/power-action.nix
];
age.secrets = {
@@ -31,6 +34,8 @@ in {
syncthing-key.file = ../../secrets/manakish-syncthing-key.age;
};
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-light-medium.yaml";
niveum = {
batteryName = "BAT0";
wirelessInterface = "wlp3s0";
@@ -49,5 +54,7 @@ in {
hostName = "manakish";
};
systemd.services.systemd-networkd-wait-online.enable = lib.mkForce false;
system.stateVersion = "20.09"; # Did you read the comment?
}

View File

@@ -11,6 +11,7 @@ in {
../../configs/retiolum.nix
../../configs/sshd.nix
../../configs/nix.nix
../../configs/admin-essentials.nix
];
age.secrets = {

View File

@@ -11,6 +11,7 @@ in {
../../configs/sshd.nix
../../configs/retiolum.nix
../../configs/nix.nix
../../configs/admin-essentials.nix
];
age.secrets = {

View File

@@ -25,7 +25,7 @@ in {
];
fileSystems."/backup" = {
device = "/dev/disk/by-id/ata-ST500LM021-1KJ152_W626LS9M";
device = "/dev/disk/by-id/ata-WDC_WD10JPVX-22JC3T0_WD-WXD1E5510MKW";
fsType = "ext4";
};
@@ -45,6 +45,10 @@ in {
inherit dport protocol;
source = retiolumAddresses.makanek.ipv4;
})
(firewall.accept {
inherit dport protocol;
source = retiolumAddresses.fatteh.ipv4;
})
(firewall.accept {
inherit dport protocol;
source = retiolumAddresses.ful.ipv4;

View File

@@ -10,15 +10,14 @@ in {
./atuin.nix
./backup.nix
./gaslight.nix
./kiosk.nix
# ./kiosk.nix
./hardware-configuration.nix
./moodle-dl-meinhark.nix
./pulseaudio.nix
./home-assistant.nix
./mpd.nix
./grocy.nix
./spotifyd.nix
../../configs/keyboard.nix
# ../../configs/keyboard.nix
../../configs/sound.nix
../../configs/monitoring.nix
../../configs/retiolum.nix
../../configs/printing.nix
@@ -27,8 +26,11 @@ in {
../../configs/tmux.nix
../../configs/wpa_supplicant.nix
../../configs/nix.nix
../../configs/admin-essentials.nix
];
services.pipewire.systemWide = true;
age.secrets = {
retiolum-rsa = {
file = ../../secrets/zaatar-retiolum-privateKey-rsa.age;
@@ -42,7 +44,12 @@ in {
owner = "tinc.retiolum";
group = "tinc.retiolum";
};
restic.file = ../../secrets/restic.age;
restic = {
file = ../../secrets/restic.age;
mode = "400";
owner = "restic";
group = "restic";
};
};
services.restic.backups.niveum = {

View File

@@ -12,13 +12,6 @@ in {
};
};
services.influxdb = {
enable = true;
extraConfig = {
http.bind-address = ":${toString influxPort}";
};
};
services.restic.backups.niveum = {
initialize = true;
inherit (restic) repository;

View File

@@ -7,7 +7,7 @@
users.extraUsers.kiosk = {
isNormalUser = true;
password = "";
extraGroups = ["audio"];
extraGroups = ["audio" "pipewire"];
};
# TODO https://github.com/cage-kiosk/cage/issues/138
services.cage = {
@@ -15,7 +15,7 @@
user = config.users.extraUsers.kiosk.name;
extraArguments = ["-s"]; # allow vt switching
program = let
startUrls = ["https://youtube.com" "http://radio.kmein.r"];
startUrls = [];
in
pkgs.writers.writeDash "kiosk-browser" ''
while true; do

View File

@@ -8,31 +8,13 @@
inherit (import ../../lib) tmpfilesConfig;
mukkeMountPoint = "/mnt/mukke";
fritzboxMountPoint = "/mnt/fritz";
streams = import ../../lib/streams.nix {
di-fm-key = "%DI_FM_KEY%"; # TODO lib.strings.fileContents <secrets/di.fm/key>;
};
multi-room-audio-port = 8000;
in {
services.syncthing = let
mpd-directory = config.services.mpd.dataDir;
in {
enable = true;
user = config.services.mpd.user; # config.users.extraUsers.moodle.name;
openDefaultPorts = true;
configDir = "${mpd-directory}/.config/syncthing";
dataDir = "${mpd-directory}/.config/syncthing";
cert = config.age.secrets.syncthing-cert.path;
key = config.age.secrets.syncthing-key.path;
devices = {
inherit ((import ../../lib).syncthing.devices) kabsa manakish heym;
};
folders."${config.services.mpd.musicDirectory}/sync" = {
devices = ["heym" "kabsa" "manakish"];
id = "music";
type = "receiveonly";
};
};
users.users.${config.services.mpd.user}.extraGroups = ["pipewire" "audio"];
services.mpd = {
enable = true;
@@ -42,7 +24,7 @@ in {
auto_update "yes"
audio_output {
type "pulse"
type "pipewire"
name "zaatar single room audio system"
}
'';
@@ -61,6 +43,19 @@ in {
];
};
fileSystems."${fritzboxMountPoint}" = {
device = "//192.168.178.1/FRITZ.NAS/Backup";
fsType = "cifs";
options = [
"username=ftpuser"
"password=ftppassword"
"noauto"
"nounix"
"ro"
"noserverino" # ref https://askubuntu.com/a/1265165
];
};
systemd.tmpfiles.rules = [
(tmpfilesConfig {
type = "L+";
@@ -70,6 +65,14 @@ in {
path = "${config.services.mpd.musicDirectory}/mukke";
argument = mukkeMountPoint;
})
(tmpfilesConfig {
type = "L+";
mode = "0644";
user = "mpd";
group = "mpd";
path = "${config.services.mpd.musicDirectory}/fritz";
argument = "${fritzboxMountPoint}";
})
];
environment.systemPackages = [pkgs.mpc_cli];
@@ -144,8 +147,6 @@ in {
group = "nginx";
mode = "400";
};
syncthing-cert.file = ../../secrets/zaatar-syncthing-cert.age;
syncthing-key.file = ../../secrets/zaatar-syncthing-key.age;
di-fm-key.file = ../../secrets/di-fm-key.age;
};

View File

@@ -1,17 +0,0 @@
{pkgs, ...}: {
sound.enable = true;
environment.systemPackages = [pkgs.ncpamixer];
hardware.pulseaudio = {
package = pkgs.pulseaudioFull;
enable = true;
systemWide = true;
tcp = {
enable = true;
anonymousClients.allowedIpRanges = ["127.0.0.1" "10.243.2.0/24" "192.168.0.0/16"];
};
zeroconf.publish.enable = true;
};
networking.firewall.allowedTCPPorts = [4713];
}

View File

@@ -3,7 +3,10 @@
# mpris is a dbus service for controlling all music players with e.g. playerctl
# I do not need this, because I only interact with the service via Spotify Connect
# otherẃise it will pull in DBus which fails without X11
spotifyd = pkgs.spotifyd.overrideAttrs {withMPris = false;};
spotifyd = pkgs.spotifyd.overrideAttrs {
withMpris = false;
withKeyring = false;
};
};
services.spotifyd = {
@@ -12,8 +15,8 @@
global = {
username_cmd = "cat $CREDENTIALS_DIRECTORY/username";
password_cmd = "cat $CREDENTIALS_DIRECTORY/password";
backend = "pulseaudio";
bitrate = 320;
use_mpris = false;
device_type = "s_t_b"; # set-top box
device_name = config.networking.hostName;
};
@@ -25,8 +28,12 @@
"username:${config.age.secrets.spotify-username.path}"
"password:${config.age.secrets.spotify-password.path}"
];
serviceConfig.RuntimeMaxSec = "${toString (5 * 60 * 60)}s";
serviceConfig.SupplementaryGroups = ["pipewire"];
};
networking.firewall.allowedTCPPorts = [4713];
age.secrets = {
spotify-username.file = ../../secrets/spotify-username.age;
spotify-password.file = ../../secrets/spotify-password.age;