Compare commits

...

492 Commits

Author SHA1 Message Date
Lennart J. Kurzweg (Nx2)
60fab5ff9a Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-05-26 19:20:24 +02:00
Lennart J. Kurzweg (Nx2)
1a662d9acf xps colors 2026-05-26 19:20:23 +02:00
Lennart J. Kurzweg (Nx2)
6b7f4459fc no headphone jack static 2026-05-26 19:19:58 +02:00
Lennart J. Kurzweg (Nx2)
7f1e43699b spotifi-cli rice fix 2026-05-26 19:19:41 +02:00
Lennart J. Kurzweg (Nx2)
1acf1773d9 xps hyprland shenanigans 2026-05-26 19:19:27 +02:00
Lennart J. Kurzweg (Nx2)
e97e9b62b0 chatterino channel update 2026-05-26 19:18:40 +02:00
Lennart J. Kurzweg (Nx2)
5211c953a3 gemini rice 2026-05-26 19:18:33 +02:00
Lennart J. Kurzweg (Nx2)
e054ee5be4 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-05-26 16:22:13 +02:00
Lennart J. Kurzweg (Nx2)
aefa5a48bb chatterino token 2026-05-26 16:21:14 +02:00
Lennart J. Kurzweg (Nx2)
be40aca44b Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-05-26 14:32:30 +02:00
Lennart J. Kurzweg (Nx2)
8228bd1f72 no simple sign up nextcloud (working?) 2026-05-26 14:32:15 +02:00
Lennart J. Kurzweg (Nx2)
63af2c4f4e stay up wifi daemon 2026-05-26 14:31:55 +02:00
Lennart J. Kurzweg (Nx2)
6a5863ee52 flake bump 2026-05-26 14:31:28 +02:00
Lennart J. Kurzweg (Nx2)
c28c40c972 rename emails 2026-05-26 14:31:22 +02:00
Lennart J. Kurzweg (Nx2)
e0bd80722c Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-05-26 12:46:24 +02:00
Lennart J. Kurzweg (Nx2)
6157666be9 spicetify 2026-05-26 12:46:05 +02:00
Lennart J. Kurzweg (Nx2)
07782f60d1 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-05-13 23:58:58 +02:00
Lennart J. Kurzweg (Nx2)
2fbf06da7a nextcloud mail 2026-05-13 23:58:51 +02:00
Lennart J. Kurzweg (Nx2)
47cc5c881c nmap 2026-05-13 23:57:45 +02:00
Lennart J. Kurzweg (Nx2)
f757727858 tuda vpn 2026-05-13 23:57:32 +02:00
Lennart J. Kurzweg (Nx2)
bf074967e5 tuda-vpn (not working?) 2026-05-13 16:08:13 +02:00
Lennart J. Kurzweg (Nx2)
674c83d3ae syntax fix 2026-05-13 16:08:02 +02:00
Lennart J. Kurzweg (Nx2)
ee46aca691 split email, contact, thunderbird 2026-05-12 18:22:42 +02:00
Lennart J. Kurzweg (Nx2)
fa89fe57b0 remove bcrypt 2026-05-10 19:37:00 +02:00
Lennart J. Kurzweg (Nx2)
f7306130ed fix firefox transparency 2026-05-04 14:57:50 +02:00
Lennart J. Kurzweg (Nx2)
dc3f30d94c Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-05-04 13:45:12 +02:00
Lennart J. Kurzweg (Nx2)
f7fb8121fd maddy conf 2026-05-04 13:45:11 +02:00
Lennart J. Kurzweg (Nx2)
f4ae5eae27 flake bump 2026-05-04 12:23:08 +02:00
Lennart J. Kurzweg (Nx2)
5fe9578d72 nx2s-email-relay hostname fix 2026-05-04 12:23:03 +02:00
Lennart J. Kurzweg (Nx2)
fc9122be42 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-05-04 03:30:45 +02:00
Lennart J. Kurzweg (Nx2)
6ab89d09b7 email smtp2go&google relay 2 2026-05-04 03:30:43 +02:00
Lennart J. Kurzweg (Nx2)
b32a79bdac email smtp2go&google relay 1 2026-05-04 03:30:01 +02:00
Lennart J. Kurzweg (Nx2)
fd5e639b17 fix yazi search 2026-05-03 22:13:34 +02:00
Lennart J. Kurzweg (Nx2)
419bd8fc12 enable nixos-cuda again 2026-05-03 15:20:33 +02:00
Lennart J. Kurzweg (Nx2)
1b18252813 caldav_event to nextcloud 2026-05-03 15:19:56 +02:00
Lennart J. Kurzweg (Nx2)
245fdbb60f Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-05-03 00:00:08 +02:00
Lennart J. Kurzweg (Nx2)
6ab13007de nextcloud 2026-05-03 00:00:07 +02:00
Lennart J. Kurzweg (Nx2)
789ed570cf update to nextcloud calendar 2026-05-02 23:59:30 +02:00
Lennart J. Kurzweg (Nx2)
901839dcd1 unstable streamlink 2026-05-02 23:58:40 +02:00
Lennart J. Kurzweg (Nx2)
ae9ae15f3a davfs 2026-05-02 23:58:31 +02:00
Lennart J. Kurzweg (Nx2)
b17f7d95b6 nixos-cuda 502 2026-05-02 23:58:21 +02:00
Lennart J. Kurzweg (Nx2)
b3a0e2914b dm matrix 2026-05-02 23:58:05 +02:00
Lennart J. Kurzweg (Nx2)
9ab9034a02 fix calendar username 2026-04-29 11:44:54 +02:00
Lennart J. Kurzweg (Nx2)
b2a322b269 yazi typo fix 2026-04-24 20:25:32 +02:00
Lennart J. Kurzweg (Nx2)
27d47179ef calendar fix 2026-04-24 20:23:12 +02:00
Lennart J. Kurzweg (Nx2)
ea1fd6a81f flake bump 2026-04-24 20:00:39 +02:00
Lennart J. Kurzweg (Nx2)
2ae3ec3b9b Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-04-24 19:58:47 +02:00
Lennart J. Kurzweg (Nx2)
9ccabedbb2 nxcaldav 2026-04-24 19:58:21 +02:00
Lennart J. Kurzweg (Nx2)
5cc13c9b9a shell only gemini-cli 2026-04-24 19:57:45 +02:00
Lennart J. Kurzweg (Nx2)
ea608bd665 gemini chrome 2026-04-24 19:56:37 +02:00
Lennart J. Kurzweg (Nx2)
e6fc668413 calendar to nxc 2026-04-24 19:56:23 +02:00
Lennart J. Kurzweg (Nx2)
12714021b6 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-04-22 08:38:34 +00:00
Lennart J. Kurzweg (Nx2)
23b1e6f8cc gemini in shell-only 2026-04-22 08:38:22 +00:00
Lennart J. Kurzweg (Nx2)
375d42d0ed Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-04-18 20:42:39 +02:00
Lennart J. Kurzweg (Nx2)
8e5da6e966 chatterino verison 2026-04-18 20:42:27 +02:00
Lennart J. Kurzweg (Nx2)
62d7d91dc0 sort fonts 2026-04-18 20:42:21 +02:00
Lennart J. Kurzweg (Nx2)
4a977f7076 flake bump 2026-04-18 20:42:06 +02:00
Lennart J. Kurzweg (Nx2)
3f7877d5b8 flake bump 2026-04-14 00:47:00 +02:00
Lennart J. Kurzweg (Nx2)
d7a1f55a34 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-04-13 22:44:57 +02:00
Lennart J. Kurzweg (Nx2)
a2f5e9828c no zoom 2026-04-13 22:44:33 +02:00
Lennart J. Kurzweg (Nx2)
fa98f9eb2e fixed now (tm) 2026-03-30 21:49:55 +02:00
Lennart J. Kurzweg (Nx2)
2ba41d37fb email fix 2026-03-30 18:02:24 +02:00
Lennart J. Kurzweg (Nx2)
ba1a5a5c10 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-03-30 15:00:18 +02:00
Lennart J. Kurzweg (Nx2)
ba1bce57c5 nx2site email 2026-03-30 14:56:45 +02:00
Lennart J. Kurzweg (Nx2)
4951ee898d xps displays 2026-03-30 14:56:38 +02:00
Lennart J. Kurzweg (Nx2)
2e02069629 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-03-23 14:29:31 +01:00
Lennart J. Kurzweg (Nx2)
9108c8689a flake bump 2026-03-23 14:29:27 +01:00
Lennart J. Kurzweg (Nx2)
b6853648d6 nxace no dm 2026-03-23 14:29:20 +01:00
Lennart J. Kurzweg (Nx2)
f77d0d2301 nxcaldav (manual for now) 2026-03-23 14:29:08 +01:00
Lennart J. Kurzweg (Nx2)
bfa820a82a gitea push create (still doesnt work) 2026-03-23 14:27:16 +01:00
Lennart J. Kurzweg (Nx2)
113931d088 o7 lr 2026-03-23 14:26:56 +01:00
Lennart J. Kurzweg (Nx2)
1651f7debf fontforge 2026-03-23 14:25:38 +01:00
Lennart J. Kurzweg (Nx2)
bc0d1eed79 unstable chatterino 2026-03-23 14:25:32 +01:00
Lennart J. Kurzweg (Nx2)
16ca72ff24 ly animation 2026-03-23 14:25:17 +01:00
Lennart J. Kurzweg (Nx2)
b977aea25f simple postgres 2026-03-23 14:24:03 +01:00
Lennart J. Kurzweg (Nx2)
8745f42f80 North Colors 2026-03-10 01:51:54 +01:00
Lennart J. Kurzweg (Nx2)
f3e4b617ff hyprland update (vaxerski hat lange weile) 2026-03-10 01:50:54 +01:00
Lennart J. Kurzweg (Nx2)
014a29a7e0 helix fixes 2026-03-10 01:49:51 +01:00
Lennart J. Kurzweg (Nx2)
1e2a0fd591 unstable gemnini 2026-03-10 01:49:19 +01:00
Lennart J. Kurzweg (Nx2)
5a24fc9fda Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-03-03 16:48:04 +01:00
Lennart J. Kurzweg (Nx2)
958b1d71ad flake bump 2026-03-03 16:47:57 +01:00
Lennart J. Kurzweg (Nx2)
fe70e6c1e3 hyprland resizing 2026-03-03 16:46:24 +01:00
Lennart J. Kurzweg (Nx2)
e7b4b5fc3a pdftk 2026-03-02 19:05:28 +01:00
Lennart J. Kurzweg (Nx2)
5fafc9e8a3 North colors 2026-02-27 19:03:51 +01:00
Lennart J. Kurzweg (Nx2)
78fb91c311 markdown toggle language tool 2026-02-27 19:02:57 +01:00
Lennart J. Kurzweg (Nx2)
bf67e7d396 update caldav 2026-02-27 19:02:29 +01:00
Lennart J. Kurzweg (Nx2)
89428b966b hyprland shaders keys 2026-02-27 19:02:22 +01:00
Lennart J. Kurzweg (Nx2)
809ce39ad3 NxNORTH tty res fix 2026-02-25 12:59:43 +01:00
Lennart J. Kurzweg (Nx2)
bcd04b836a yazi smart open 2026-02-25 12:59:33 +01:00
Lennart J. Kurzweg (Nx2)
1d23337ed1 typst with language tool 2026-02-25 12:59:15 +01:00
Lennart J. Kurzweg (Nx2)
70c8dfd953 helix use jumplist 2026-02-25 12:59:02 +01:00
Lennart J. Kurzweg (Nx2)
ce690c3cad notebooklm rice 2026-02-25 12:58:46 +01:00
Lennart J. Kurzweg (Nx2)
18719bdc2e Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-02-23 18:41:46 +01:00
Lennart J. Kurzweg (Nx2)
68a6a18fcf xps colors 2026-02-23 18:41:35 +01:00
Lennart J. Kurzweg (Nx2)
7c6907f077 fix hypr gestures 2026-02-23 18:41:30 +01:00
Lennart J. Kurzweg (Nx2)
db6dc48ebf switch to ly 2026-02-23 18:40:55 +01:00
Lennart J. Kurzweg (Nx2)
ae6b0e483f tuda vpn 2026-02-23 18:40:35 +01:00
Lennart J. Kurzweg (Nx2)
f54754c792 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-02-10 08:47:43 +00:00
Lennart J. Kurzweg (Nx2)
30a3308b6b rename flg to nxflg 2026-02-10 08:46:48 +00:00
Lennart J. Kurzweg (Nx2)
39c03c6c62 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-02-06 13:26:33 +01:00
Lennart J. Kurzweg (Nx2)
ee28eadb3b fix typo 2026-02-06 13:26:31 +01:00
Lennart J. Kurzweg (Nx2)
edbc5c0393 fix terminal file chooser (tm2) 2026-02-03 13:28:30 +01:00
Lennart J. Kurzweg (Nx2)
68ec133681 logitiech solaar 2026-02-03 13:28:20 +01:00
Lennart J. Kurzweg (Nx2)
87292666b1 hyprland shader (deactivated) 2026-02-03 13:28:09 +01:00
Lennart J. Kurzweg (Nx2)
7d1ca1d174 flake bump 2026-02-01 21:52:27 +01:00
Lennart J. Kurzweg (Nx2)
3fcf02646a Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-02-01 21:51:36 +01:00
Lennart J. Kurzweg (Nx2)
485a554e10 flake bump 2026-02-01 21:51:15 +01:00
Lennart J. Kurzweg (Nx2)
f02686b687 delete ralley 2026-02-01 21:51:10 +01:00
Lennart J. Kurzweg (Nx2)
070695fa4d baikal (deactivated) 2026-02-01 21:50:49 +01:00
Lennart J. Kurzweg (Nx2)
951d03e0b7 unstable yt-dlp 2026-02-01 21:49:19 +01:00
Lennart J. Kurzweg (Nx2)
0dd8e27fcb flake bump 2026-01-30 12:40:29 +01:00
Lennart J. Kurzweg (Nx2)
66ef93c612 clone yazi 2026-01-27 16:45:54 +01:00
Lennart J. Kurzweg (Nx2)
627604d3f7 north color 2026-01-27 15:53:32 +01:00
Lennart J. Kurzweg (Nx2)
2598b7562f TERMINAL var 2026-01-27 15:53:27 +01:00
Lennart J. Kurzweg (Nx2)
b1c16c99ec better yazi 2026-01-27 15:53:19 +01:00
Lennart J. Kurzweg (Nx2)
47cce625be better helix 2026-01-27 15:53:14 +01:00
Lennart J. Kurzweg (Nx2)
9a2eeb694e tab text color fix 2026-01-27 15:52:57 +01:00
Lennart J. Kurzweg (Nx2)
3b84087084 reddit search chrome 2026-01-27 15:52:49 +01:00
Lennart J. Kurzweg (Nx2)
ccff2e66bb chatterino token 2026-01-27 15:52:22 +01:00
Lennart J. Kurzweg (Nx2)
cad9c3e5f5 pretty ssh nxace 2026-01-21 19:13:27 +01:00
Lennart J. Kurzweg (Nx2)
b913c05267 nixld 2026-01-21 19:13:09 +01:00
Lennart J. Kurzweg (Nx2)
21a1efa978 nicer yazi 2026-01-21 19:13:01 +01:00
Lennart J. Kurzweg (Nx2)
f9ea18fd81 nicer helix 2026-01-21 19:12:11 +01:00
Lennart J. Kurzweg (Nx2)
def172c79d ghostts extend 2026-01-21 19:12:01 +01:00
Lennart J. Kurzweg (Nx2)
ec2ea43523 north colors 2026-01-21 19:11:20 +01:00
Lennart J. Kurzweg (Nx2)
03e3f877a6 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-01-17 22:48:45 +01:00
Lennart J. Kurzweg (Nx2)
28cd7a1ac3 north colors 2026-01-17 22:47:57 +01:00
Lennart J. Kurzweg (Nx2)
03a53b006b yazi in ~ 2026-01-17 22:47:53 +01:00
Lennart J. Kurzweg (Nx2)
2bac83ec14 wsl fixes 2026-01-17 19:17:04 +00:00
Lennart J. Kurzweg (Nx2)
0953c65a9f Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-01-17 17:25:23 +00:00
Lennart J. Kurzweg (Nx2)
02231f2693 wsl fix 2026-01-17 17:25:14 +00:00
Lennart J. Kurzweg (Nx2)
48f246429b uv 2026-01-17 17:24:56 +00:00
Lennart J. Kurzweg (Nx2)
bff8042d85 asciinema 2026-01-17 17:24:51 +00:00
Lennart J. Kurzweg (Nx2)
040f988530 lec 2026-01-17 15:00:14 +01:00
Lennart J. Kurzweg (Nx2)
3be3a7a80a cooler yazi 2026-01-17 14:59:12 +01:00
Lennart J. Kurzweg (Nx2)
8a5604e87b fix termfilechooser (tm) 2026-01-17 14:35:26 +01:00
Lennart J. Kurzweg (Nx2)
336eadc732 north colors 2026-01-15 17:30:46 +01:00
Lennart J. Kurzweg (Nx2)
511d46f527 yazi theme fix 2026-01-15 17:30:35 +01:00
Lennart J. Kurzweg (Nx2)
42685cce35 fix refactor for north 2026-01-15 16:09:56 +01:00
Lennart J. Kurzweg (Nx2)
bb754e99f7 fix termfilechooser 2026-01-15 16:09:11 +01:00
Lennart J. Kurzweg (Nx2)
4f57d39171 caldav-event 1line 2026-01-15 16:08:03 +01:00
Lennart J. Kurzweg (Nx2)
4ed036b5d0 more refactoring 2026-01-13 15:06:37 +01:00
Lennart J. Kurzweg (Nx2)
6d8a7e7194 mf ace 2026-01-13 00:52:38 +01:00
Lennart J. Kurzweg (Nx2)
f2dae2ee81 massive refactor 2026-01-13 00:35:27 +01:00
Lennart J. Kurzweg (Nx2)
b23cc9ce7c LEC 2026-01-12 03:01:11 +01:00
Lennart J. Kurzweg (Nx2)
f25ff57b5b nxace no element 2026-01-12 02:58:36 +01:00
Lennart J. Kurzweg (Nx2)
1403c57356 update python lsp 2026-01-12 02:56:14 +01:00
Lennart J. Kurzweg (Nx2)
fe2a7569c3 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-01-12 02:42:26 +01:00
Lennart J. Kurzweg (Nx2)
66977c7f04 update chatterino version 2026-01-12 02:38:32 +01:00
Lennart J. Kurzweg (Nx2)
879239cfd0 fix qtwebengine problem 2026-01-12 02:37:50 +01:00
Lennart J. Kurzweg (Nx2)
9ce989abe1 helix color adjustments 2026-01-12 02:36:57 +01:00
Lennart J. Kurzweg (Nx2)
eca9490eea Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-01-04 14:37:01 +01:00
Lennart J. Kurzweg (Nx2)
c41e9f4f17 qtwebengine is cooked 2026-01-04 14:36:56 +01:00
Lennart J. Kurzweg (Nx2)
adc912624d nxace 25.11 fixes 2026-01-04 14:36:21 +01:00
Lennart J. Kurzweg (Nx2)
4bddec49af mpv reset hotkey 2026-01-04 14:35:56 +01:00
Lennart J. Kurzweg (Nx2)
b89f7960df libreoffice 2026-01-04 14:35:18 +01:00
Lennart J. Kurzweg (Nx2)
6c5e125452 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2026-01-04 14:24:59 +01:00
Lennart J. Kurzweg (Nx2)
59bde2cc37 email update 2026-01-04 14:24:49 +01:00
Lennart J. Kurzweg (Nx2)
4d2f244d4b mynixos 2026-01-04 14:24:19 +01:00
Lennart J. Kurzweg (Nx2)
f03e92a7ce ssh key order fix 2025-12-03 14:14:30 +01:00
Lennart J. Kurzweg (Nx2)
1e20d645eb 25.11 fixes 2025-12-03 14:13:17 +01:00
Lennart J. Kurzweg (Nx2)
edda49ee66 25.11 2025-12-03 01:59:12 +01:00
Lennart J. Kurzweg (Nx2)
5d65da4fca Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-25 15:03:08 +01:00
Lennart J. Kurzweg (Nx2)
9914f62871 rofi selected readability 2025-11-25 15:02:59 +01:00
Lennart J. Kurzweg (Nx2)
ff91701431 dcs fix 2025-11-24 09:31:15 +00:00
Lennart J. Kurzweg (Nx2)
f49d802bc2 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-24 09:04:53 +00:00
Lennart J. Kurzweg (Nx2)
0f83584124 dcs ssh 2025-11-24 09:04:11 +00:00
Lennart J. Kurzweg (Nx2)
744688e2a5 yazi fix 2025-11-23 23:29:27 +01:00
Lennart J. Kurzweg (Nx2)
47b0e9125a yazi fix 2025-11-23 23:11:17 +01:00
Lennart J. Kurzweg (Nx2)
8cda4ed98a flake bump 2025-11-23 23:10:55 +01:00
Lennart J. Kurzweg (Nx2)
8683e608e6 more screenshot options 2025-11-23 23:10:48 +01:00
Lennart J. Kurzweg (Nx2)
3603fbdf41 spash change 2025-11-23 23:07:16 +01:00
Lennart J. Kurzweg (Nx2)
43c8782c6c new chatterrino token 2025-11-23 18:01:56 +01:00
Lennart J. Kurzweg (Nx2)
fe89a049bd antigarvity + flake bump 2025-11-23 18:01:47 +01:00
Lennart J. Kurzweg (Nx2)
5bd5c97e4e Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-19 12:54:46 +01:00
Lennart J. Kurzweg (Nx2)
1b8155c9c9 no hyprland overview 2025-11-18 23:21:32 +01:00
Lennart J. Kurzweg (Nx2)
79b2493f23 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-18 18:53:57 +01:00
Lennart J. Kurzweg (Nx2)
3a6e1ce3c6 rofi not fully transparent 2025-11-18 16:43:08 +01:00
Lennart J. Kurzweg (Nx2)
c621faf09a games syntac fix 2025-11-18 16:34:35 +01:00
Lennart J. Kurzweg (Nx2)
51d7589975 more games 2025-11-18 16:30:58 +01:00
Lennart J. Kurzweg (Nx2)
4761258eed fix hyper pkgs version 2025-11-18 16:14:27 +01:00
Lennart J. Kurzweg (Nx2)
487f3ff6f0 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-18 16:05:42 +01:00
Lennart J. Kurzweg (Nx2)
f1f591368d flake bump 2025-11-18 16:01:21 +01:00
Lennart J. Kurzweg (Nx2)
ed74ebac4e calendar update 2025-11-18 16:01:05 +01:00
Lennart J. Kurzweg (Nx2)
bfae6a5800 error proof caldav_event 2025-11-18 16:00:48 +01:00
Lennart J. Kurzweg (Nx2)
1115e3e4a4 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-18 15:58:32 +01:00
Lennart J. Kurzweg (Nx2)
3b48f4d623 s23u ssh key 2025-11-18 15:58:30 +01:00
Lennart J. Kurzweg (Nx2)
aa62213ef6 pasue lec 2025-11-18 15:58:17 +01:00
Lennart J. Kurzweg (Nx2)
28f3fc54c9 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-18 15:09:19 +01:00
Lennart J. Kurzweg (Nx2)
ea753c0ebb fix nxf 2025-11-18 15:09:10 +01:00
Lennart J. Kurzweg (Nx2)
79851fa223 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-18 14:43:28 +01:00
Lennart J. Kurzweg (Nx2)
f35d0efada Merge branch 'nod' 2025-11-18 12:19:34 +01:00
Lennart J. Kurzweg (Nx2)
c39663adee no autoname workspaces 2025-11-18 12:18:22 +01:00
Lennart J. Kurzweg (Nx2)
8057a6f2ee hyprland better blur 2025-11-18 12:17:57 +01:00
Lennart J. Kurzweg (Nx2)
e73b7333fc Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles into nod 2025-11-11 00:44:25 +01:00
Lennart J. Kurzweg (Nx2)
fcfc125373 nod 2025-11-11 00:43:22 +01:00
Lennart J. Kurzweg (Nx2)
3418cfd8f3 cursor 2025-11-06 19:31:43 +01:00
Lennart J. Kurzweg (Nx2)
68ac093e4a Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-11-06 00:42:28 +01:00
Lennart J. Kurzweg (Nx2)
8f7d685a8b rofi refactor 2025-11-06 00:42:19 +01:00
Lennart J. Kurzweg (Nx2)
851846197d xps dynamic monitors 2025-11-06 00:41:05 +01:00
Lennart J. Kurzweg (Nx2)
2585c76039 audacity 2025-11-02 20:58:02 +01:00
Lennart J. Kurzweg (Nx2)
04f10a4afd thunderbird paste event window dimensions 2025-11-02 20:57:51 +01:00
Lennart J. Kurzweg (Nx2)
651458875c Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-10-30 09:28:31 +01:00
Lennart J. Kurzweg (Nx2)
9d04a09de8 fix xdg-desktop-portal-termfile-chooser 2025-10-30 09:28:25 +01:00
Lennart J. Kurzweg (Nx2)
0eaa052cd5 pinned special border 2025-10-27 13:45:31 +01:00
Lennart J. Kurzweg (Nx2)
64a54b2cd6 switch to lts on xps 2025-10-27 13:43:26 +01:00
Lennart J. Kurzweg (Nx2)
55a22804c5 disable health remonder 2025-10-27 13:43:14 +01:00
Lennart J. Kurzweg (Nx2)
d85386bf9c Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-10-24 12:40:16 +02:00
Lennart J. Kurzweg (Nx2)
1698d0f851 flake bump 2025-10-24 12:39:30 +02:00
Lennart J. Kurzweg (Nx2)
18d93e6b0c dedicated github ssh config host 2025-10-24 12:39:26 +02:00
Lennart J. Kurzweg (Nx2)
91020c0072 trying out other dms 2025-10-24 12:26:05 +02:00
Lennart J. Kurzweg (Nx2)
e6c5cd5ead trying to get boot resolution full screen 2025-10-24 12:25:31 +02:00
Lennart J. Kurzweg (Nx2)
068fd19353 no unused hotkeys 2025-10-24 12:24:53 +02:00
Lennart J. Kurzweg (Nx2)
6f7449839d typst swap lsps 2025-10-24 12:24:40 +02:00
Lennart J. Kurzweg (Nx2)
9e2eb410ab go home-manager module 2025-10-24 12:24:29 +02:00
Lennart J. Kurzweg (Nx2)
fb974329e7 some packages 2025-10-24 12:24:15 +02:00
Lennart J. Kurzweg (Nx2)
7a70d7dae3 caldavevent '' 2025-10-24 12:24:01 +02:00
Lennart J. Kurzweg (Nx2)
e7c1c255bc Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles into nod 2025-10-21 23:51:00 +02:00
Lennart J. Kurzweg (Nx2)
52fe355b0a cleanup color pallete 2025-10-21 15:23:59 +02:00
Lennart J. Kurzweg (Nx2)
29a917ed37 worlds calendar 2025-10-21 15:23:22 +02:00
Lennart J. Kurzweg (Nx2)
7655e7b3bd helix hints 2025-10-21 15:23:12 +02:00
Lennart J. Kurzweg (Nx2)
858a8b77ec tuda rust labs 2025-10-21 15:22:55 +02:00
Lennart J. Kurzweg (Nx2)
ba199f9568 rust 2025-10-21 15:22:31 +02:00
Lennart J. Kurzweg (Nx2)
5f3a3a6f30 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-10-17 12:48:02 +02:00
Lennart J. Kurzweg (Nx2)
9472550aaa north sops 2025-10-17 12:45:01 +02:00
Lennart J. Kurzweg (Nx2)
1b7fe7f7ca random changes 2025-10-17 12:44:51 +02:00
Lennart J. Kurzweg (Nx2)
b64abba7e5 typst 2025-10-17 12:44:14 +02:00
Lennart J. Kurzweg (Nx2)
df06425803 fish nxf indent 2025-10-17 12:43:51 +02:00
Lennart J. Kurzweg (Nx2)
6befb22a59 worlds calendar 2025-10-17 12:43:44 +02:00
Lennart J. Kurzweg (Nx2)
b4cd70b5f6 fix hyprpanel notifications 2025-10-17 12:43:36 +02:00
Lennart J. Kurzweg (Nx2)
78975da970 ssh * identities 2025-10-13 14:38:06 +02:00
Lennart J. Kurzweg (Nx2)
90c093fcef reddit rice 2025-10-13 14:30:34 +02:00
Lennart J. Kurzweg (Nx2)
40eefbf948 fix nxfetch 2025-10-09 15:32:10 +02:00
Lennart J. Kurzweg (Nx2)
042e8c7ee7 further gpg-ssh edits 2025-10-07 16:35:42 +00:00
Lennart J. Kurzweg (Nx2)
685a34fcbb NxWSL -> NxDCS 2025-10-07 16:35:06 +00:00
Lennart J. Kurzweg (Nx2)
812555c467 more ssh keys allowed 2025-10-07 17:31:40 +02:00
Lennart J. Kurzweg (Nx2)
ffddb4773b ssh-agent + port fix 2025-10-07 17:31:27 +02:00
Lennart J. Kurzweg (Nx2)
98c0a26209 no gpg-agent 2025-10-07 17:31:05 +02:00
Lennart J. Kurzweg (Nx2)
e25ad7891d cleanup 2025-10-07 17:30:46 +02:00
Lennart J. Kurzweg (Nx2)
470922dce2 ace colors 2025-10-05 01:51:11 +02:00
Lennart J. Kurzweg (Nx2)
b0cb61f05e hw ace fix 2025-10-05 01:51:05 +02:00
Lennart J. Kurzweg (Nx2)
e8373d6293 no trace 2025-10-05 01:50:49 +02:00
Lennart J. Kurzweg (Nx2)
ff5de39a19 all use vault sops age 2025-10-05 01:50:43 +02:00
Lennart J. Kurzweg (Nx2)
1fc8b2a7cb all use vault gpg 2025-10-05 01:48:18 +02:00
Lennart J. Kurzweg (Nx2)
e19ed3ece1 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-10-05 01:21:38 +02:00
Lennart J. Kurzweg (Nx2)
4c178e57fa ssh use module 2025-10-05 00:59:05 +02:00
Lennart J. Kurzweg (Nx2)
f7de7f740d user accept xps ssh
+ refactor
2025-10-05 00:20:27 +02:00
Lennart J. Kurzweg (Nx2)
6809a6494f Crypto Change
luks for xps
ssh via ssh
sops via age
gpg backbone, but not removed
gpg-agent removed
2025-10-04 22:53:18 +02:00
Lennart J. Kurzweg (Nx2)
21fee7056a hypr.home fix 2025-10-04 22:52:06 +02:00
Lennart J. Kurzweg (Nx2)
d581209fdf Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-10-04 12:29:02 +02:00
Lennart J. Kurzweg (Nx2)
67c1f6fb25 firefox refactor + shadow fix 2025-10-04 12:09:33 +02:00
Lennart J. Kurzweg (Nx2)
c1ca5b2cf5 sleek rclone 2025-10-04 12:08:59 +02:00
Lennart J. Kurzweg (Nx2)
3818645825 more gnome base programs 2025-10-04 12:08:37 +02:00
Lennart J. Kurzweg (Nx2)
8e84355efd Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-09-30 16:29:25 +00:00
Lennart J. Kurzweg (Nx2)
f11db2239e nxf format 2025-09-30 16:29:22 +00:00
Lennart J. Kurzweg (Nx2)
ebfd72baa8 wikipedia rice 2025-09-30 00:32:13 +02:00
Lennart J. Kurzweg (Nx2)
6804f98b99 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-09-30 00:19:47 +02:00
Lennart J. Kurzweg (Nx2)
418dcad22c sops for the stuff below
oops (spotify clinet id etc)
2025-09-30 00:19:45 +02:00
Lennart J. Kurzweg (Nx2)
31925a5074 flake bump 2025-09-30 00:19:04 +02:00
Lennart J. Kurzweg (Nx2)
d3a407f1a5 more rice color pallete 2025-09-30 00:16:39 +02:00
Lennart J. Kurzweg (Nx2)
122a4c6cd8 fix hyprland opacities 2025-09-30 00:11:39 +02:00
Lennart J. Kurzweg (Nx2)
5fda879078 more rice 2025-09-30 00:10:52 +02:00
Lennart J. Kurzweg (Nx2)
7b3d4e5dfd fix yazi tab coloring 2025-09-30 00:09:22 +02:00
Lennart J. Kurzweg (Nx2)
61984aecf9 fix term file chooser 2025-09-30 00:09:11 +02:00
Lennart J. Kurzweg (Nx2)
e422234758 sops use key 13 2025-09-30 00:08:29 +02:00
Lennart J. Kurzweg (Nx2)
b7eb065442 stable opencode 2025-09-30 00:07:48 +02:00
Lennart J. Kurzweg (Nx2)
60b4066e9b lazygit define pkg 2025-09-30 00:07:37 +02:00
Lennart J. Kurzweg (Nx2)
cea416b457 chatterino update 2025-09-30 00:05:15 +02:00
Lennart J. Kurzweg (Nx2)
9d28a08cd4 spotify 2025-09-30 00:04:09 +02:00
Lennart J. Kurzweg (Nx2)
6a4f270959 playerctl 2025-09-30 00:03:30 +02:00
Lennart J. Kurzweg (Nx2)
a4d6b98b4b hyprpanel move media to the left 2025-09-30 00:03:15 +02:00
Lennart J. Kurzweg (Nx2)
ea3d4937ff hyprpanel fix caldav_event polling 2025-09-30 00:02:55 +02:00
Lennart J. Kurzweg (Nx2)
aa6962cb0d twitch oauth chatterino 2025-09-30 00:02:32 +02:00
Lennart J. Kurzweg (Nx2)
fa168f01a6 nxf robustness 2025-09-25 08:03:24 +00:00
Lennart J. Kurzweg (Nx2)
511dac22a8 wsl manages resolv.conf 2025-09-25 07:23:33 +00:00
Lennart J. Kurzweg (Nx2)
74fd62d6dc Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-09-25 07:20:38 +00:00
Lennart J. Kurzweg (Nx2)
d8704de501 wsl adjustments 2025-09-25 07:20:36 +00:00
Lennart J. Kurzweg (Nx2)
9f49dbbd98 souce hm-session-vars only if user 2025-09-23 15:39:06 +02:00
Lennart J. Kurzweg (Nx2)
caf48a81dd no element hotkey 2025-09-23 15:34:23 +02:00
Lennart J. Kurzweg (Nx2)
9399657469 opaque vesktop 2025-09-23 15:34:11 +02:00
Lennart J. Kurzweg (Nx2)
10a50773e1 xps monitors 2025-09-23 15:33:56 +02:00
Lennart J. Kurzweg (Nx2)
d81aa406a4 nod 2025-09-03 19:46:44 +02:00
Lennart J. Kurzweg (Nx2)
0f17b0c56e Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-09-03 15:51:28 +02:00
Lennart J. Kurzweg (Nx2)
9b999bae90 fix yazi task viewer 2025-09-03 15:49:24 +02:00
Lennart J. Kurzweg (Nx2)
1da06c73d1 fix informatik moodle css 2025-09-03 15:49:16 +02:00
Lennart J. Kurzweg (Nx2)
84f7003bb6 fix caldav_event and submap hyprpanel 2025-09-03 15:48:51 +02:00
Lennart J. Kurzweg (Nx2)
4a83be441b Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-09-01 14:14:52 +02:00
Lennart J. Kurzweg (Nx2)
e98cc3f4c5 xps monitors 2025-09-01 14:14:45 +02:00
Lennart J. Kurzweg (Nx2)
07c637749a ace colors 2025-08-31 21:49:02 +02:00
Lennart J. Kurzweg (Nx2)
579887e825 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-08-31 21:39:10 +02:00
Lennart J. Kurzweg (Nx2)
a2003bc5aa fix nginx redirects 2025-08-31 21:39:07 +02:00
Lennart J. Kurzweg (Nx2)
d0964c01a7 copyparty++ 2025-08-31 21:28:31 +02:00
Lennart J. Kurzweg (Nx2)
04b2b7da33 nx_backup download function 2025-08-31 21:27:26 +02:00
Lennart J. Kurzweg (Nx2)
f4f9e36b16 open firewall for ollama 2025-08-31 21:27:07 +02:00
Lennart J. Kurzweg (Nx2)
99b534a6a5 darker background in w2c 2025-08-31 21:26:17 +02:00
Lennart J. Kurzweg (Nx2)
03131c8a65 youtube rice 2025-08-31 21:25:43 +02:00
Lennart J. Kurzweg (Nx2)
7565b3163a hyperpanel++ 2025-08-31 21:25:28 +02:00
Lennart J. Kurzweg (Nx2)
960e786ee5 hyprpanel++ 2025-08-28 00:15:11 +02:00
Lennart J. Kurzweg (Nx2)
75904231c5 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-08-28 00:11:56 +02:00
Lennart J. Kurzweg (Nx2)
1085acc0f5 hyprpanel++ 2025-08-28 00:11:02 +02:00
Lennart J. Kurzweg (Nx2)
cd25a1a569 mpv 2025-08-27 23:59:29 +02:00
Lennart J. Kurzweg (Nx2)
d009d109a9 battery only on NxXPS 2025-08-27 23:59:11 +02:00
Lennart J. Kurzweg (Nx2)
b4b7378afa Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-08-27 22:22:35 +02:00
Lennart J. Kurzweg (Nx2)
01deb843e4 term file choose works again 2025-08-27 22:21:58 +02:00
Lennart J. Kurzweg (Nx2)
efe96374de ollama accessable from everywhere 2025-08-27 21:05:26 +02:00
Lennart J. Kurzweg (Nx2)
35c5760f50 NxNORTH Monitor adjustment 2025-08-27 21:04:41 +02:00
Lennart J. Kurzweg (Nx2)
fb17f37662 opencode model 2025-08-27 21:04:24 +02:00
Lennart J. Kurzweg (Nx2)
e81d82ad6e yazi colorful tabs 2025-08-27 21:03:57 +02:00
Lennart J. Kurzweg (Nx2)
2c6e0f0b73 colorful zathura 2025-08-27 21:03:28 +02:00
Lennart J. Kurzweg (Nx2)
432c1e18f8 colorful firefox 2025-08-27 21:03:11 +02:00
Lennart J. Kurzweg (Nx2)
482b96d0ae glsl 2025-08-27 21:02:20 +02:00
Lennart J. Kurzweg (Nx2)
208d1ed7b4 no true black 2025-08-27 21:02:03 +02:00
Lennart J. Kurzweg (Nx2)
0162b27d79 flake bump 2025-08-25 13:34:43 +02:00
Lennart J. Kurzweg (Nx2)
1191019cf8 rclone 2025-08-25 13:34:38 +02:00
Lennart J. Kurzweg (Nx2)
880b3abd60 bar 2025-08-25 13:34:32 +02:00
Lennart J. Kurzweg (Nx2)
5c9d924606 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-08-24 14:56:30 +02:00
Lennart J. Kurzweg (Nx2)
151f61d31e rclone 2025-08-24 14:56:10 +02:00
Lennart J. Kurzweg (Nx2)
eba7f91576 cleaner bar 2025-08-24 14:55:59 +02:00
Lennart J. Kurzweg (Nx2)
eed5c14a25 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-08-24 14:55:14 +02:00
Lennart J. Kurzweg (Nx2)
8982916aee flake bump 2025-08-24 14:52:47 +02:00
Lennart J. Kurzweg (Nx2)
87ec047d20 LR or TBD 2025-08-24 14:52:24 +02:00
Lennart J. Kurzweg (Nx2)
8be6a841d0 fix fix_campuszeit 2025-08-24 14:52:12 +02:00
Lennart J. Kurzweg (Nx2)
bfc57081b8 fix helix typo 2025-08-24 14:51:56 +02:00
Lennart J. Kurzweg (Nx2)
edb394c95c NxACE with OBS 2025-08-24 14:51:48 +02:00
Lennart J. Kurzweg (Nx2)
5d3491ecec attemts to fix missing fonts on NxACE 2025-08-24 14:51:39 +02:00
Lennart J. Kurzweg (Nx2)
871a270a21 copyparty 2025-08-24 14:50:35 +02:00
Lennart J. Kurzweg (Nx2)
f222c3b595 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-08-22 14:34:03 +02:00
Lennart J. Kurzweg (Nx2)
de8e26e6e3 hyprbar 2025-08-22 14:34:00 +02:00
Lennart J. Kurzweg (Nx2)
83af085bd6 streamlink 2025-08-22 14:33:11 +02:00
Lennart J. Kurzweg (Nx2)
9d84b4bcf0 streamlink oauth 2025-08-22 14:32:18 +02:00
Lennart J. Kurzweg (Nx2)
69090a5aa2 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-08-04 17:53:42 +02:00
Lennart J. Kurzweg (Nx2)
a62a2113ca nd 2025-08-04 17:53:25 +02:00
Lennart J. Kurzweg (Nx2)
647830080a flake bump 2025-07-29 16:07:43 +02:00
Lennart J. Kurzweg (Nx2)
f22ef9939c fix xdg-deskop-portal-termfilechooser yazi-wrapper 2025-07-29 16:07:35 +02:00
Lennart J. Kurzweg (Nx2)
42a4a2fe0e caldav_event 0 minutes fix 2025-07-29 15:51:39 +02:00
Lennart J. Kurzweg (Nx2)
0340fbfacd mako config fix 2025-07-29 15:50:46 +02:00
Lennart J. Kurzweg (Nx2)
dee4b516b0 xps named monitors 2025-07-29 15:50:39 +02:00
Lennart J. Kurzweg (Nx2)
0821124f4f helix typo fix 2025-07-29 15:50:19 +02:00
Lennart J. Kurzweg (Nx2)
395c676fc6 github ssh redirect 2025-07-29 15:50:06 +02:00
Lennart J. Kurzweg (Nx2)
f67d54c66b no chatgpt css 2025-07-29 15:49:56 +02:00
Lennart J. Kurzweg (Nx2)
baa8a43692 no hsmw email 2025-07-29 15:49:48 +02:00
Lennart J. Kurzweg (Nx2)
b6b6115b4e vesktop, no conf 2025-07-29 15:49:39 +02:00
Lennart J. Kurzweg (Nx2)
167f3936dc chatterino++ 2025-07-29 15:49:24 +02:00
Lennart J. Kurzweg (Nx2)
4ef43805ae rice font cleanup 2025-07-29 15:49:10 +02:00
Lennart J. Kurzweg (Nx2)
bb773f0dee flake bump 2025-07-21 00:03:36 +02:00
Lennart J. Kurzweg (Nx2)
35ad7c04e9 caldav_event fix 2025-07-21 00:03:17 +02:00
Lennart J. Kurzweg (Nx2)
31ef18fc34 opencode latest 2025-07-21 00:02:36 +02:00
Lennart J. Kurzweg (Nx2)
9cb47d96d9 move python to python 2025-07-21 00:02:28 +02:00
Lennart J. Kurzweg (Nx2)
9ade97edb9 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-07-20 01:09:50 +02:00
Lennart J. Kurzweg (Nx2)
872082819b enable caldav_event 2025-07-20 01:09:47 +02:00
Lennart J. Kurzweg (Nx2)
cf66ef2ea9 monitors 2025-07-20 01:09:36 +02:00
Lennart J. Kurzweg (Nx2)
9368c387dc typst 2025-07-20 01:09:06 +02:00
Lennart J. Kurzweg (Nx2)
da268cd46a yazi file picker 2025-07-20 01:08:57 +02:00
Lennart J. Kurzweg (Nx2)
dd3b850221 vesktop 2025-07-20 01:07:26 +02:00
Lennart J. Kurzweg (Nx2)
2ecb7486bb no msi 2025-07-20 01:06:27 +02:00
Lennart J. Kurzweg (Nx2)
bbe16598ad less systemwide python pkgs 2025-07-20 01:06:22 +02:00
Lennart J. Kurzweg (Nx2)
c64ade92b7 chatterino token 2025-07-20 01:05:45 +02:00
Lennart J. Kurzweg (Nx2)
82c2d4c85c Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-07-19 21:28:47 +02:00
Lennart J. Kurzweg (Nx2)
66f543b966 pastel 2025-07-19 21:28:44 +02:00
Lennart J. Kurzweg (Nx2)
000d37ebed flake bump 2025-07-19 21:28:37 +02:00
Lennart J. Kurzweg (Nx2)
17bd864d5c opencode 2025-07-19 21:28:26 +02:00
Lennart J. Kurzweg (Nx2)
0d1a9d0554 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-07-16 09:38:23 +00:00
Lennart J. Kurzweg (Nx2)
f3b953e87b cache yazi on wsl 2025-07-16 09:37:35 +00:00
Lennart J. Kurzweg (Nx2)
1ee84d5dd8 dos2unix 2025-07-16 09:37:22 +00:00
Lennart J. Kurzweg (Nx2)
1b530779aa only hits inline dignostics helix 2025-07-16 09:37:17 +00:00
Lennart J. Kurzweg (Nx2)
7978dc1987 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-07-10 12:32:08 +02:00
Lennart J. Kurzweg (Nx2)
2384158d1c no /en/ for site proxy 2025-07-10 12:32:06 +02:00
Lennart J. Kurzweg (Nx2)
58d0b12e1f imports 2025-07-10 12:31:48 +02:00
Lennart J. Kurzweg (Nx2)
ba66d8bbef add host assert sshd 2025-07-10 12:31:34 +02:00
Lennart J. Kurzweg (Nx2)
0f95741b5a fix refactor campuszeit 2025-07-10 12:30:46 +02:00
Lennart J. Kurzweg (Nx2)
88eadf2d64 actually import figlet 2025-07-10 12:29:12 +02:00
Lennart J. Kurzweg (Nx2)
46bdbb10f9 extract obs kernel module 2025-07-10 12:28:58 +02:00
Lennart J. Kurzweg (Nx2)
381489b567 error proof manual colors 2025-07-10 12:27:48 +02:00
Lennart J. Kurzweg (Nx2)
0929c6287d hyprl-autoname updates 2025-07-10 12:27:27 +02:00
Lennart J. Kurzweg (Nx2)
950ffac450 msi calendar 2025-07-10 12:27:07 +02:00
Lennart J. Kurzweg (Nx2)
3bc47393b3 figlet 2025-07-10 12:26:53 +02:00
Lennart J. Kurzweg (Nx2)
9d9b2cf84d Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-24 12:36:54 +02:00
Lennart J. Kurzweg (Nx2)
c1710f928f north monitors 2025-06-24 12:36:52 +02:00
Lennart J. Kurzweg (Nx2)
9c0094949e flake bump 2025-06-22 14:52:48 +02:00
Lennart J. Kurzweg (Nx2)
8e3ec6c603 cleanup 2025-06-22 14:52:42 +02:00
Lennart J. Kurzweg (Nx2)
78f6fb64d0 yazi gs nx2site ace 2025-06-22 14:52:35 +02:00
Lennart J. Kurzweg (Nx2)
244e40a746 git robots.txt 2025-06-22 14:52:15 +02:00
Lennart J. Kurzweg (Nx2)
7b9f009a27 gpg-tui 2025-06-22 14:52:03 +02:00
Lennart J. Kurzweg (Nx2)
4fdc4becf0 also use cache.nix 2025-06-22 14:51:55 +02:00
Lennart J. Kurzweg (Nx2)
6d2f90486f remove dart-sass 2025-06-18 15:31:20 +02:00
Lennart J. Kurzweg (Nx2)
d6d4a1f3b5 refactor 2025-06-18 15:31:01 +02:00
Lennart J. Kurzweg (Nx2)
04dcba2d3f unfix xps kernel 2025-06-18 13:43:43 +02:00
Lennart J. Kurzweg (Nx2)
d2d1ce7830 overlays refactor 2025-06-17 19:48:31 +02:00
Lennart J. Kurzweg (Nx2)
fbd045d53e fixed xps kernel bcz of nvidia build failure 2025-06-17 18:51:55 +02:00
Lennart J. Kurzweg (Nx2)
027dee164d Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-17 18:02:53 +02:00
Lennart J. Kurzweg (Nx2)
e651b39126 new eduroam password 2025-06-17 18:02:26 +02:00
Lennart J. Kurzweg (Nx2)
5a242c60a5 versitile ooo 2025-06-17 18:02:02 +02:00
Lennart J. Kurzweg (Nx2)
be9f5c23e8 opaque element 2025-06-17 18:01:53 +02:00
Lennart J. Kurzweg (Nx2)
c5a0f61faa remove nixondroid input 2025-06-17 15:45:10 +02:00
Lennart J. Kurzweg (Nx2)
786648990f Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-17 15:11:29 +02:00
Lennart J. Kurzweg (Nx2)
30f5ee6a3a no nixondroid + deploy hugo 2025-06-17 15:11:27 +02:00
Lennart J. Kurzweg (Nx2)
7544b0dbac Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-15 21:36:39 +02:00
Lennart J. Kurzweg (Nx2)
68eb400210 flake bump 2025-06-15 21:36:37 +02:00
Lennart J. Kurzweg (Nx2)
7952492672 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-10 19:57:38 +02:00
Lennart J. Kurzweg (Nx2)
fa3348c5c2 sops ace fix 2025-06-10 19:57:23 +02:00
Lennart J. Kurzweg (Nx2)
8a47706856 stui 2025-06-10 19:57:04 +02:00
Lennart J. Kurzweg (Nx2)
cc9026297e ace colors 2025-06-10 19:56:59 +02:00
Lennart J. Kurzweg (Nx2)
bf30ac72d1 flake bump 2025-06-10 19:56:08 +02:00
Lennart J. Kurzweg (Nx2)
10344ce639 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-10 19:39:19 +02:00
Lennart J. Kurzweg (Nx2)
a76fe844c6 ghossty using module 2025-06-10 19:36:21 +02:00
Lennart J. Kurzweg (Nx2)
feb6d269de chromium rename 2025-06-10 19:36:03 +02:00
Lennart J. Kurzweg (Nx2)
76e83f6498 more fixes 2025-06-10 19:35:53 +02:00
Lennart J. Kurzweg (Nx2)
46ad89fe0d new version fixes 2025-06-10 19:34:56 +02:00
Lennart J. Kurzweg (Nx2)
c186666394 chatterino path fix 2025-06-10 19:33:34 +02:00
Lennart J. Kurzweg (Nx2)
6b8d1d277b blacker black 2025-06-10 19:33:16 +02:00
Lennart J. Kurzweg (Nx2)
2c358380e4 flake fix 2025-06-10 19:32:59 +02:00
Lennart J. Kurzweg (Nx2)
935beadb3b add .ignore 2025-06-10 19:30:09 +02:00
Lennart J. Kurzweg (Nx2)
5775bc88d6 lanazboote fix 2025-06-10 19:30:01 +02:00
Lennart J. Kurzweg (Nx2)
3285d23223 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-06 13:52:54 +02:00
Lennart J. Kurzweg (Nx2)
a8629627ea no printlastlog sshd 2025-06-06 13:52:04 +02:00
Lennart J. Kurzweg (Nx2)
68c749474e lr euma 2025-06-06 13:51:51 +02:00
Lennart J. Kurzweg (Nx2)
e0b43bcbe5 dysk 2025-06-06 13:51:42 +02:00
Lennart J. Kurzweg (Nx2)
10e1941c5a nix-on-droid untested 2025-06-05 20:34:31 +02:00
Lennart J. Kurzweg (Nx2)
2d697c079d merge 2025-06-02 14:51:38 +02:00
Lennart J. Kurzweg (Nx2)
ed18e8bd51 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-05-31 15:04:44 +02:00
Lennart J. Kurzweg (Nx2)
a9670b5896 streamlink secret 2025-05-31 15:04:07 +02:00
Lennart J. Kurzweg (Nx2)
b5e66bbf43 yazi cache 2025-05-31 15:03:48 +02:00
Lennart J. Kurzweg (Nx2)
e1f74665c1 stable nvidia 2025-05-31 15:03:29 +02:00
Lennart J. Kurzweg (Nx2)
c8903a6b56 no ruff lsp 2025-05-31 15:01:33 +02:00
Lennart J. Kurzweg (Nx2)
b1258be64b minecraft 2025-05-31 15:01:06 +02:00
Lennart J. Kurzweg (Nx2)
7b08304f78 streamlink try 2025-05-31 15:00:21 +02:00
Lennart J. Kurzweg (Nx2)
d439996d0c js lsp 2025-05-31 14:59:17 +02:00
Lennart J. Kurzweg (Nx2)
c566e4f40a refactor fix 2025-05-31 14:58:44 +02:00
Lennart J. Kurzweg (Nx2)
272ae1cd55 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-05-31 13:48:40 +02:00
Lennart J. Kurzweg (Nx2)
c4052ec34d dev ssl 2025-05-31 13:42:32 +02:00
Lennart J. Kurzweg (Nx2)
f4f80ffbde games on Ace - mindustry 2025-05-31 13:42:27 +02:00
Lennart J. Kurzweg (Nx2)
2de110149f calendar dicos ++ 2025-05-31 13:40:37 +02:00
Lennart J. Kurzweg (Nx2)
b0ab87bbab linux_6.12 ACE 2025-05-31 13:39:47 +02:00
Lennart J. Kurzweg (Nx2)
edde9bd52b proxy dev 2025-05-31 13:38:19 +02:00
Lennart J. Kurzweg (Nx2)
bf56cc88bf gitea theme 2025-05-31 13:36:19 +02:00
Lennart J. Kurzweg (Nx2)
393d7f4fc4 campuszeit 2025-05-31 13:35:52 +02:00
Lennart J. Kurzweg (Nx2)
2ecb4ce65a chatterino token 2025-05-31 13:35:43 +02:00
Lennart J. Kurzweg (Nx2)
88e73a3ea8 helix colors for windows terminal 2025-05-28 14:49:20 +00:00
Lennart J. Kurzweg (Nx2)
8be84ff0a9 dicos git 2025-05-28 14:49:09 +00:00
Lennart J. Kurzweg (Nx2)
9d3418bec2 htop 2025-05-28 14:48:08 +00:00
Lennart J. Kurzweg (Nx2)
68cb4377b7 New Flake Style XPS fix 2025-05-27 12:12:36 +02:00
Lennart J. Kurzweg (Nx2)
ce140cf4f2 merge + fix nixpkgs versions 2025-05-27 07:55:00 +00:00
Lennart J. Kurzweg (Nx2)
a60e90ab8f New Flake Style + WSL + NixOnDroid 2025-05-27 07:15:44 +00:00
Lennart J. Kurzweg (Nx2)
89adbab83b Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-05-26 14:46:53 +02:00
Lennart J. Kurzweg (Nx2)
09837534ea fix vesktop multi gpu 2025-05-26 14:46:42 +02:00
Lennart J. Kurzweg (Nx2)
a769f9eb1f zathura hotkey 2025-05-26 14:46:13 +02:00
Lennart J. Kurzweg (Nx2)
031215cb4f waybar fix center, no event 2025-05-26 14:45:40 +02:00
Lennart J. Kurzweg (Nx2)
b36e420e89 yazi js edit 2025-05-26 14:45:18 +02:00
Lennart J. Kurzweg (Nx2)
0a52deb024 js lsp 2025-05-26 14:44:39 +02:00
Lennart J. Kurzweg (Nx2)
d3b5bb0d60 chatterino new 2025-05-26 14:44:28 +02:00
Lennart J. Kurzweg (Nx2)
5a1c9eeacb 25.05 xps 2025-05-26 14:44:16 +02:00
Lennart J. Kurzweg (Nx2)
b9d8a339d2 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-04-11 14:00:18 +02:00
Lennart J. Kurzweg (Nx2)
9fe46133da yazi ++ 2025-04-11 13:59:00 +02:00
Lennart J. Kurzweg (Nx2)
f35172fde1 clarify delete event 2025-04-11 13:58:35 +02:00
Lennart J. Kurzweg (Nx2)
6b79aca0be fix autoname 2025-04-11 13:58:17 +02:00
Lennart J. Kurzweg (Nx2)
9788b83d82 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-04-11 12:40:55 +02:00
Lennart J. Kurzweg (Nx2)
366644f5d2 chatterino cleanup 2025-04-11 12:40:49 +02:00
Lennart J. Kurzweg (Nx2)
3891119804 inline diagnostics 2025-04-11 12:40:33 +02:00
Lennart J. Kurzweg (Nx2)
e8284be564 feiertage hessen 2025-04-11 12:40:21 +02:00
Lennart J. Kurzweg (Nx2)
6c6dd819a8 nxace no obsidian 2025-03-31 01:51:39 +02:00
Lennart J. Kurzweg (Nx2)
014fca20a9 nxace default kernel 2025-03-31 01:51:29 +02:00
Lennart J. Kurzweg (Nx2)
2b51508030 nxace no games 2025-03-31 01:51:15 +02:00
Lennart J. Kurzweg (Nx2)
7e8f5f6751 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-03-31 01:26:54 +02:00
Lennart J. Kurzweg (Nx2)
61a788961d calendar
lr + dicos description + cleanup
2025-03-31 01:26:42 +02:00
Lennart J. Kurzweg (Nx2)
8a8780ff71 hugo 2025-03-31 01:24:45 +02:00
Lennart J. Kurzweg (Nx2)
921f8fc6a7 dyn_dns 2025-03-31 01:23:45 +02:00
Lennart J. Kurzweg (Nx2)
977837f81e Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-03-31 00:44:56 +02:00
Lennart J. Kurzweg (Nx2)
17bbc58503 flake bump 2025-03-31 00:44:53 +02:00
Lennart J. Kurzweg (Nx2)
61fa0dd7fd systemctl-tui 2025-03-31 00:44:44 +02:00
Lennart J. Kurzweg (Nx2)
f08777fdab ollama simplification 2025-03-31 00:44:32 +02:00
Lennart J. Kurzweg (Nx2)
7a6f6aac82 inputMethod syntax new style 2025-03-31 00:44:06 +02:00
Lennart J. Kurzweg (Nx2)
86ce0ac9d4 xps linux latest 2025-03-31 00:42:27 +02:00
Lennart J. Kurzweg (Nx2)
e08b0e8184 yazi refactor + update fix 2025-03-31 00:42:18 +02:00
Lennart J. Kurzweg (Nx2)
02c48e8eaa display change 2025-03-31 00:23:57 +02:00
Lennart J. Kurzweg (Nx2)
0876ec355e better helix markup 2025-03-31 00:23:44 +02:00
Lennart J. Kurzweg (Nx2)
28dd018961 gimp3 incomming 2025-03-30 23:59:39 +02:00
Lennart J. Kurzweg (Nx2)
ce363cafe1 eza refactor 2025-03-30 23:59:04 +02:00
Lennart J. Kurzweg (Nx2)
67202e47e3 LR calendar 2025-03-30 23:58:52 +02:00
Lennart J. Kurzweg (Nx2)
d7d9b8e39c Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-03-02 19:50:36 +01:00
Lennart J. Kurzweg (Nx2)
1a52cafa66 better dyndns 2025-03-02 19:50:34 +01:00
Lennart J. Kurzweg (Nx2)
b3a419de26 local ip changes 2025-03-02 19:49:26 +01:00
Lennart J. Kurzweg (Nx2)
0b3931ff86 hugo 2025-03-02 19:49:09 +01:00
Lennart J. Kurzweg (Nx2)
2b854183ac Merge 2025-03-01 12:35:17 +01:00
Lennart J. Kurzweg (Nx2)
18013b83df chatterifo oauth 2025-03-01 12:34:19 +01:00
Lennart J. Kurzweg (Nx2)
6b4a76dd4a fix and refactor dynamic-dns 2025-02-22 13:43:35 +01:00
Lennart J. Kurzweg (Nx2)
c15bf8c58e little formatting 2025-02-22 13:43:16 +01:00
Lennart J. Kurzweg (Nx2)
60a839663a radicale fix 2025-02-22 11:33:43 +01:00
Lennart J. Kurzweg (Nx2)
ee72de3539 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-02-22 11:33:07 +01:00
Lennart J. Kurzweg (Nx2)
73281b62d9 yazi orphans 2025-02-22 11:33:03 +01:00
Lennart J. Kurzweg (Nx2)
e5e7164a93 force reload event hotkey 2025-02-22 11:32:18 +01:00
Lennart J. Kurzweg (Nx2)
3ed506a924 handball wm is over 2025-02-22 11:31:55 +01:00
Lennart J. Kurzweg (Nx2)
33503c4485 chatterino update 2025-02-22 11:31:45 +01:00
174 changed files with 10379 additions and 4605 deletions

15
.ignore Normal file
View File

@@ -0,0 +1,15 @@
flake.lock
*.remmina
*.pem
*.env
*.key
*.ovpn
sops-secrets.yaml
*.png
*.jpg
*.webp
*.gif
*.mp3
*.mp4

View File

@@ -1,7 +1,10 @@
keys: keys:
- &users: - &users:
- &nx2backup age1sgzc2jh8af30a3cp6g7l4hyzusqrn3x3xw7frghc4akvjaplwa3stfemxc
- &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634 - &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634
- &nx2_key_13 age1x2lpsennl74n0f5jl60uv2ffjcuqymzf9ap3frlz2quyv0x3hq3scnewwq
- &xps-home age1pn4utvwpqdrswn0xurfdexn5nks9cd06jxzwg3m3m6za25ap4vxqxd0p3k
- &ace-home age1ur5zpr325cv7w0yn49azz9f48xsxd73w2sytt22yrnw5qs9r34nsv3vl05
- &north-home age1jr72q042ccgxpdgdaaev0arzc0vh3r02etv2tzhhsejl0mfaxs3q9hhlaz
- &hosts: - &hosts:
- &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e - &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e
- &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6 - &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6
@@ -13,6 +16,9 @@ creation_rules:
- *north - *north
- *xps - *xps
- *ace - *ace
- *nx2backup - *nx2_key_13
- *xps-home
- *ace-home
- *north-home
pgp: pgp:
- *nx2 - *nx2

View File

@@ -1,6 +1,6 @@
# ❄️ NixOS Dotfiles # ❄️ NixOS Dotfiles
![Screenshot of my desktop](splash.png) ![Screenshot of my desktop](splash.webp)
## Information ## Information

View File

@@ -1,143 +1,84 @@
{ pkgs, inputs, host, ... }: { pkgs, ... }@all: with all; {
{ imports = [
imports = ([
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
./system-modules/adb.nix ./system-modules/adb.nix
./system-modules/auto-mount.nix ./system-modules/auto-mount.nix
./system-modules/tz.nix
./system-modules/bluetooth.nix
./system-modules/boot.nix
./system-modules/cache.nix
./system-modules/calendar.nix ./system-modules/calendar.nix
./system-modules/hardware-configuration.nix
./system-modules/fuse.nix
./system-modules/games.nix
./system-modules/nvidia.nix
./system-modules/users.nix
./system-modules/sound.nix
./system-modules/fonts.nix
./system-modules/boot.nix
./system-modules/gc.nix
./system-modules/boot.nix
./system-modules/dm.nix ./system-modules/dm.nix
./system-modules/davfs.nix
./system-modules/docker.nix ./system-modules/docker.nix
./system-modules/fcitx5.nix ./system-modules/fcitx5.nix
./system-modules/fonts.nix ./system-modules/fonts.nix
./system-modules/fuse.nix ./system-modules/fuse.nix
./system-modules/games.nix
./system-modules/gc.nix ./system-modules/gc.nix
./system-modules/gpg.nix ./system-modules/gpg.nix
./system-modules/hardware-configuration.nix ./system-modules/hardware-configuration.nix
./system-modules/health_reminder.nix ./system-modules/health_reminder.nix
./system-modules/hsmw.nix
./system-modules/kanata.nix ./system-modules/kanata.nix
./system-modules/terminal.nix
./system-modules/kodi.nix ./system-modules/kodi.nix
./system-modules/networking.nix ./system-modules/networking.nix
./system-modules/nixd.nix ./system-modules/nixd.nix
./system-modules/nix.nix
./system-modules/nvidia.nix ./system-modules/nvidia.nix
./system-modules/obs.nix
./system-modules/ollama.nix ./system-modules/ollama.nix
./system-modules/qmk.nix ./system-modules/qmk.nix
./system-modules/scanning.nix ./system-modules/scanning.nix
./system-modules/sops.nix ./system-modules/sops.nix
./system-modules/sound.nix ./system-modules/sound.nix
./system-modules/sshd.nix ./system-modules/sshd.nix
./system-modules/input.nix
./system-modules/syncthing.nix ./system-modules/syncthing.nix
./system-modules/tuda.nix
./system-modules/gui.nix
./system-modules/editor.nix
./system-modules/printing.nix
./system-modules/security.nix
./system-modules/users.nix ./system-modules/users.nix
./system-modules/virtualisation.nix ./system-modules/virtualisation.nix
./system-modules/ydotool.nix ./system-modules/ydotool.nix
]) ++ (if (host == "NxACE") then [
./system-modules/simple-postgres.nix
] ++ (if hyper.isServer then [
./system-modules/stay-up.nix
./system-modules/nx2site.nix ./system-modules/nx2site.nix
./system-modules/hugo.nix
./system-modules/postgres.nix ./system-modules/postgres.nix
./system-modules/nx2site/proxy.nix ./system-modules/nx2site/proxy.nix
# ./system-modules/nx2site/smtp.nix
# ./system-modules/nx2site/imap.nix
# ./system-modules/nx2site/vmail.nix
./system-modules/nx2site/maddy.nix
./system-modules/nx2site/audiobookshelf.nix ./system-modules/nx2site/audiobookshelf.nix
# ./system-modules/nx2site/baikal.nix
./system-modules/nx2site/nextcloud.nix
./system-modules/nx2site/nxcaldav.nix
./system-modules/nx2site/copyparty.nix
./system-modules/nx2site/gitea.nix ./system-modules/nx2site/gitea.nix
./system-modules/nx2site/open-web-calendar.nix ./system-modules/nx2site/open-web-calendar.nix
./system-modules/nx2site/radicale.nix ./system-modules/nx2site/radicale.nix
# ./system-modules/nx2site/nextcloud.nix
./system-modules/nx2site/vaultwarden.nix ./system-modules/nx2site/vaultwarden.nix
./system-modules/nx2site/paperless.nix ./system-modules/nx2site/paperless.nix
./system-modules/calendar/publish.nix
./system-modules/calendar/lec.nix
# ./system-modules/calendar/lr.nix
] else [ ]);
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
./system-modules/calendar-publish.nix system.stateVersion = hyper.main-pkgs-version;
./system-modules/calendar-lec.nix
./system-modules/calendar-dicos.nix
] else []);
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
console.font = "Lat2-Terminus16";
console.keyMap = "de";
services.xserver = {
enable = true;
xkb = {
layout = "de";
options = "eurosign:e,caps:escape";
};
# lightdm in lightdm.nix
};
# Enable CUPS to print documents.
services.printing.enable = true;
# rtkit is optional but recommended
security.rtkit.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
services.libinput.enable = true;
hardware.uinput.enable = true;
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
package = pkgs.bluez5-experimental;
settings.Policy.AutoEnable = "true";
settings.General.Enable = "Source,Sink,Media,Socket";
};
services.blueman.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; ([
git
git-crypt
lazygit # home-manager module is bugged
wget
curlHTTP3
zip
unzip
p7zip
unar
nano
htop
direnv
openssl
blueman
dmidecode
file
parallel
# ]) ++ (with pkgs-unstable; [
# # sendme
]);
environment.variables = {
EDITOR = "hx";
VISUAL = "hx";
};
programs.hyprland = {
# config is done with home-manager
enable = true;
xwayland.enable = true;
};
systemd.extraConfig = "DefaultLimitNOFILE=2048";
boot.tmp.useTmpfs = false;
system.stateVersion = "24.11";
nixpkgs.config.allowUnfree = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
programs.nix-ld.enable = true;
programs.bash.shellInit = '' programs.bash.shellInit = ''
if [[ "$USER" == "${hyper.user}" ]]; then
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
fi
''; '';
} }

View File

@@ -1,43 +1,31 @@
pkgs: rec {
{ predicate = pkg: (
unfree = [ builtins.elem (pkgs.lib.getName pkg) unfree.packages || builtins.all (
license: license.free || builtins.elem license.shortName unfree.licenses
) (if builtins.isList pkg.meta.license then pkg.meta.license else [ pkg.meta.license ])
);
unfree = {
packages = [
"antigravity"
"cursor"
"discord" "discord"
"spotify"
"obsidian" "obsidian"
"zoom-us" "spotify"
"steam"
"steam-unwrapped"
"vscode-extension-mhutchie-git-graph"
"zoom" "zoom"
"zoom-us"
# since the predicate ist to be set in the flake and not in a module
# it is impossible to make the list dynamic and respect nvidia.enable
"nvidia-x11" "nvidia-x11"
"nvidia-settings" "nvidia-settings"
"nvidia-persistenced"
"cudatoolkit"
"cuda-merged"
"cuda_cuobjdump"
"cuda_gdb"
"cuda_nvcc"
"cuda_nvdisasm"
"cuda_nvprune"
"cuda_cccl"
"cuda_cudart"
"cuda_cupti"
"cuda_cuxxfilt"
"cuda_nvml_dev"
"cuda_nvrtc"
"cuda_nvtx"
"cuda_profiler_api"
"cuda_sanitizer_api"
"libcublas"
"libcufft"
"libcurand"
"libcusolver"
"libnvjitlink"
"libcusparse"
"libnpp"
]; ];
licenses = [
inecure = [ "CUDA EULA"
# "electron-25.9.0" "cuDNN EULA"
"cuTENSOR EULA"
"NVidia OptiX EULA"
]; ];
};
# insecure = [ ];
} }

View File

@@ -1,13 +1,54 @@
{ {
"NxXPS": {
"base": { "base": {
"foreground": "#dddddd", "foreground": "#fccee9",
"background": "#000000" "background": "#18010e"
}, },
"to_alter": { "to_alter": {
"accent": "#8888ff", "accent": "#f43da7",
"secondary": "#4444ff", "secondary": "#3269ff",
"tertiary": "#44ff88", "tertiary": "#d744ed",
"special": "#ff6666", "special": "#3cf48a",
"weird": "#ff66ff" "weird": "#f4c63c"
}
},
"NxACE": {
"base": {
"foreground": "#dddddd",
"background": "#111111"
},
"to_alter": {
"accent": "#ff6666",
"secondary": "#ff8866",
"tertiary": "#ff6688",
"special": "#8888ff",
"weird": "#88ff66"
}
},
"NxNORTH": {
"base": {
"foreground": "#dbe7ef",
"background": "#070d11"
},
"to_alter": {
"accent": "#72a2bf",
"secondary": "#fc3535",
"tertiary": "#83ae8a",
"special": "#bf8f71",
"weird": "#a871bf"
}
},
"NxDCS": {
"base": {
"foreground": "#ddcccc",
"background": "#080707"
},
"to_alter": {
"accent": "#d23f36",
"secondary": "#355273",
"tertiary": "#1b789b",
"special": "#66dd66",
"weird": "#dddd66"
}
} }
} }

46
flake-modules/hyper.nix Normal file
View File

@@ -0,0 +1,46 @@
let hyper-base = rec {
host = "BaseHost";
system = "x86_64-linux";
user = "nx2";
domain = "nx2.site";
home = "/home/${user}";
webroot = "/var/lib/hugo/nx2site/public";
main-pkgs-version = "25.11";
isServer = false;
isMobile = false;
isPersonal = false;
isNOD = false;
isWorkstation = false;
nvidia = {
enable = false;
prime = false;
};
}; in host: if host == "NxNORTH" then hyper-base // { inherit host;
nvidia = {
enable = true;
prime = false;
};
isPersonal = true;
isWorkstation = true;
} else if host == "NxXPS" then hyper-base // { inherit host;
nvidia = {
enable = true;
prime = true;
};
isMobile = true;
isPersonal = true;
isWorkstation = true;
} else if host == "NxACE" then hyper-base // { inherit host;
isServer = true;
} else if host == "NxDCS" then hyper-base // { inherit host;
isWorkstation = true;
isMobile = true;
} else if host == "NxS23U" then hyper-base // { inherit host;
isMobile = true;
isNOD = true;
isPersonal = true;
main-pkgs-version = "24.05";
system = "aarch64-linux";
user = "nix-on-droid";
home = "/data/data/com.termux.nix/files/home";
} else assert false "unkown host"; {}

View File

@@ -1,4 +0,0 @@
{
enable = false;
prime = false;
}

View File

@@ -0,0 +1,43 @@
lib: let
# takes in "ff0044" (no hash!) and returns { r = "ff", g = "00", b = "44" }
slice-hex = hex: with builtins; { r = substring 0 2 hex; g = substring 2 2 hex; b = substring 4 2 hex; };
# takes in "44" and returns 64
drune-to-255 = drune: with builtins; (rune-to-num (substring 0 1 drune)) * 16 + (rune-to-num (substring 1 1 drune));
num-to-drune = num: "${num-to-rune (num / 16)}${num-to-rune (num - ((num / 16) * 16))}";
# takes in "D" and returns 13
# inspiration from https://github.com/bertof/nix-rice
rune-to-num = rune: let
dict = { "0" = 0; "1" = 1; "2" = 2; "3" = 3; "4" = 4; "5" = 5; "6" = 6; "7" = 7; "8" = 8; "9" = 9; "A" = 10; "B" = 11; "C" = 12; "D" = 13; "E" = 14; "F" = 15; };
in assert(builtins.hasAttr (lib.strings.toUpper rune) dict); builtins.getAttr (lib.strings.toUpper rune) dict;
# takes in 15 and returns "F"
num-to-rune = num: let
num-string = builtins.toString num;
dict = { "0" = "0"; "1" = "1"; "2" = "2"; "3" = "3"; "4" = "4"; "5" = "5"; "6" = "6"; "7" = "7"; "8" = "8"; "9" = "9"; "10" = "A"; "11" = "B"; "12" = "C"; "13" = "D"; "14" = "E"; "15" = "F"; };
in assert(builtins.hasAttr num-string dict); builtins.getAttr num-string dict;
# Keeps num between 0 and 255
# Make sure to pass in an int not a float
cap-255 = num: (if (num>255) then 255 else if (num<0) then 0 else num);
nohash = hex: with builtins; assert((stringLength hex) == 7); substring 1 6 hex;
in {
## USEFUL FUNCTIONS
# takes in a string like "#ff0044" and returns "ff0044" symbol
inherit nohash;
# This takes in something like "#ff0044" and returns "255,0,64"
hex-to-rgb-comma-string = hex: with (slice-hex (nohash hex)); with builtins; assert(isString hex); "${toString (drune-to-255 r)},${toString (drune-to-255 g)},${toString (drune-to-255 b)}";
# This is useful if you have a float (like a transparency value) and want a drune representation of it
# So 0.0 -> "00" and 1.0 -> "FF"
float-to-drune = f: with builtins; assert(isFloat f); "${num-to-rune (floor((255*f) / 16))}${num-to-rune (floor(255*f) - (floor((255*f) / 16) * 16))}";
# Takes in hex and a float. 0.5 is +50% brightness and (-0.5) is -50% brightness.
# So "#ff0044": 0.3 -> "#ff0055"
alter-luminace-hex = hex: amount: let
color-num = with (slice-hex (nohash hex)); { r = drune-to-255 r; g = drune-to-255 g; b = drune-to-255 b; };
alter = num: (num-to-drune (cap-255 (builtins.floor ((125 * amount) + (num * (1+amount))) )));
in with color-num; "#${alter r}${alter g}${alter b}";
}

29
flake-modules/pkgs.nix Normal file
View File

@@ -0,0 +1,29 @@
inputs: simple-pkgs: hyper: let
args = {
system = hyper.system;
config = {
allowUnfreePredicate = (import ./allowed.nix simple-pkgs).predicate;
cudaSupport = hyper.nvidia.enable;
cudaForwardCompat = hyper.nvidia.enable;
};
};
overlays = [(final: prev: {
unstable = import inputs.nixpkgs-unstable args;
latest = import inputs.nixpkgs-latest args;
pkgs-version = hyper.main-pkgs-version;
})] ++ (if hyper.isServer then [
inputs.copyparty.overlays.default
] else []);
in if !hyper.isNOD then
(import inputs.nixpkgs (args // { inherit overlays; }))
else (
(import inputs.nixpkgs (args // { inherit overlays; })) // # normal as base
(import inputs.nixpkgs24 (args // { # overwrite with old versions
overlays = [(final: prev: {
pkgs-version = "24.05";
})];
}))
)

View File

@@ -1,19 +1,33 @@
pkgs: rec { pkgs: hyper: rec {
lib = import ../nxlib/ricelib.nix pkgs.lib; lib = import ./nxlib/ricelib.nix pkgs.lib;
transparency = 0.8; transparency = 0.8;
rounding = 3; rounding = 3;
gap-size = 5; gap-size = 5;
border-width = 2; border-width = 2;
color = let color = let
dark = (-0.5); dark = (-0.4);
bright = (0.5); darker = (-0.6);
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; }; bright = 0.4;
alter = let f = lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; }; brighter = 0.7;
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: {
base = color-value;
dark = f color-value dark;
darker = f color-value darker;
bright = f color-value bright;
brighter = f color-value brighter;
};
alter = let f = lib.alter-luminace-hex; in color-value: {
base = color-value;
dark = f color-value dark;
darker = f color-value darker;
bright = f color-value bright;
brighter = f color-value brighter;
};
# ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)); # ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json));
ccolor = builtins.mapAttrs alter-set { ccolor = builtins.mapAttrs alter-set {
black = "#111111"; # "#111111" "#001100"; black = "#040404"; # "#111111" "#001100";
white = "#dddddd"; # "#dddddd" "#66dd66"; white = "#dddddd"; # "#dddddd" "#66dd66";
blue = "#4444dd"; # "#3333dd" "#003300"; blue = "#4444dd"; # "#3333dd" "#003300";
cyan = "#44dddd"; # "#11dddd" "#00dd55"; cyan = "#44dddd"; # "#11dddd" "#00dd55";
@@ -22,17 +36,13 @@ pkgs: rec {
red = "#dd4444"; # "#dd1111" "#00aa00"; red = "#dd4444"; # "#dd1111" "#00aa00";
yellow = "#dddd44"; # "#dddd11" "#ffff00"; yellow = "#dddd44"; # "#dddd11" "#ffff00";
}; };
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter; facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json))."${hyper.host}".to_alter;
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base; fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json))."${hyper.host}".base;
fcolor = facolor // fbcolor; fcolor = facolor // fbcolor;
xcolor = with ccolor; with fcolor; { xcolor = with ccolor; with fcolor; {
background = "#000000"; # background = "#000000";
# foreground = "#dddddd"; # foreground = "#dddddd";
# accent = blue; subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; };
# secondary = cyan;
# tertiary = magenta;
# special = yellow;
# weird = green;
positive = alter "#00dd00"; positive = alter "#00dd00";
negative = alter "#dd0000"; negative = alter "#dd0000";
border = accent.base; border = accent.base;
@@ -40,17 +50,14 @@ pkgs: rec {
}; };
in ccolor // fcolor // xcolor; in ccolor // fcolor // xcolor;
font = { font = {
code = { code = rec {
name = "JetBrainsMono Nerd Font"; name = "JetBrainsMono Nerd Font";
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }); package = pkgs.nerd-fonts.jetbrains-mono;
# name = "CascadiaCove-NF"; regular-path = "${package}/share/fonts/truetype/NerdFonts/JetBrainsMonoNerdFont-Regular.ttf";
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
}; };
base = { base = {
# name = "NewComputerModern08";
# package = pkgs.newcomputermodern;
name = "Atkinson Hyperlegible"; name = "Atkinson Hyperlegible";
package = pkgs.atkinson-hyperlegible; package = pkgs.atkinson-hyperlegible-next;
}; };
}; };
cursor = { cursor = {

1099
flake.lock generated

File diff suppressed because it is too large Load Diff

111
flake.nix
View File

@@ -2,71 +2,90 @@
description = "Multisystem NixOS Flake of Lennart J. Kurzweg"; description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
inputs = { inputs = {
nixpkgs = { url = "nixpkgs/nixos-24.11"; }; nixpkgs.url = "nixpkgs/nixos-25.11";
nixpkgs-unstable = { url = "nixpkgs/nixos-unstable"; }; nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
nixpkgs-latest = { url = "github:nixos/nixpkgs?ref=master"; }; nixpkgs-latest.url = "github:nixos/nixpkgs?ref=master";
home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs24.url = "github:NixOS/nixpkgs/nixos-24.05";
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; };
hyprland = { url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; }; home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; };
hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; }; home-manager24 = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs24"; };
Hyprspace = { url = "github:KZDKM/Hyprspace"; inputs.hyprland.follows = "hyprland"; };
hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
yazi.url = "github:sxyazi/yazi"; nix-on-droid = {
yazi-plugins = { url = "github:lordkekz/nix-yazi-plugins"; inputs.nixpkgs.follows = "nixpkgs"; }; url = "github:nix-community/nix-on-droid/release-24.05";
zen-browser.url = "github:MarceColl/zen-browser-flake"; inputs = { nixpkgs.follows = "nixpkgs24"; home-manager.follows = "home-manager24"; };
ghostty.url = "github:ghostty-org/ghostty";
}; };
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-latest, home-manager, ... }@inputs: let nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
yazi.url = "github:sxyazi/yazi";
copyparty.url = "github:9001/copyparty";
};
outputs = { ... }@inputs: with inputs; let
system = "x86_64-linux"; system = "x86_64-linux";
user = "nx2"; simple-pkgs = import nixpkgs { inherit system; };
domain = "nx2.site"; get-pkgs = import ./flake-modules/pkgs.nix inputs simple-pkgs;
get-hyper = import ./flake-modules/hyper.nix;
config = { allowUnfree = true; allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
pkgs = import nixpkgs { inherit system config; };
pkgs-unstable = import nixpkgs-unstable { inherit system config; };
pkgs-latest = import nixpkgs-latest { inherit system config; };
nvidia-set = import ./flake-modules/nvidia.nix;
secrets = import ./git-crypt/secrets.nix; secrets = import ./git-crypt/secrets.nix;
rice = import ./flake-modules/rice.nix pkgs; get-rice = import ./flake-modules/rice.nix simple-pkgs;
in { in {
nixosConfigurations = let nixosConfigurations = let
make-nixos-system = host: nixpkgs.lib.nixosSystem { make-nixos-system = host: let
inherit system; hyper = get-hyper host;
rice = get-rice hyper;
in nixpkgs.lib.nixosSystem {
pkgs = get-pkgs hyper;
modules = [ ./configuration.nix ]; modules = [ ./configuration.nix ];
specialArgs = let specialArgs = { inherit inputs hyper rice secrets; };
nvidia = nvidia-set // {
enable = if (host == "NxXPS" || host == "NxNORTH") then true else false;
prime = if (host == "NxXPS") then true else false;
}; };
in { inherit inputs user host domain pkgs-unstable pkgs-latest secrets rice nvidia; }; make-nixos-wsl-system = host: let hyper = get-hyper host; in nixpkgs.lib.nixosSystem {
pkgs = get-pkgs hyper;
modules = [ ./wsl.nix ];
specialArgs = { inherit inputs hyper rice; };
}; };
in { in {
NxXPS = make-nixos-system "NxXPS";
NxNORTH = make-nixos-system "NxNORTH"; NxNORTH = make-nixos-system "NxNORTH";
NxXPS = make-nixos-system "NxXPS";
NxACE = make-nixos-system "NxACE"; NxACE = make-nixos-system "NxACE";
NxDCS = make-nixos-wsl-system "NxDCS";
}; };
homeConfigurations = let nixOnDroidConfigurations = let
make-home-configuration = host: user: home-manager.lib.homeManagerConfiguration { makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec {
inherit pkgs; hyper = get-hyper host;
modules = [ ./home.nix ]; pkgs = get-pkgs hyper;
extraSpecialArgs = let modules = [ ./nod.nix ];
nvidia = nvidia-set // { home-manager-path = home-manager24.outPath;
enable = if (host == "NxXPS" || host == "NxNORTH") then true else false; extraSpecialArgs = { inherit inputs hyper rice; };
prime = if (host == "NxXPS") then true else false;
}; };
in { inherit inputs system user host domain pkgs-unstable pkgs-latest rice secrets nvidia; }; in { NxS23U = makeNODConfiguration "NxS23U"; };
homeConfigurations = let
make-home-configuration = host: let
hyper = get-hyper host;
rice = get-rice hyper;
in home-manager.lib.homeManagerConfiguration {
pkgs = get-pkgs hyper;
modules = [ ./home.nix ];
extraSpecialArgs = { inherit inputs hyper rice secrets; };
};
make-shell-configuration = host: let
hyper = get-hyper host;
rice = get-rice hyper;
in home-manager.lib.homeManagerConfiguration {
pkgs = get-pkgs hyper;
modules = [ ./shell-only.nix ];
extraSpecialArgs = { inherit inputs hyper rice secrets; };
}; };
in { in {
"${user}@NxXPS" = make-home-configuration "NxXPS" user; "nx2@NxXPS" = make-home-configuration "NxXPS";
"${user}@NxNORTH" = make-home-configuration "NxNORTH" user; "nx2@NxNORTH" = make-home-configuration "NxNORTH";
"${user}@NxACE" = make-home-configuration "NxACE" user; "nx2@NxACE" = make-home-configuration "NxACE";
"nx2@NxDCS" = make-shell-configuration "NxDCS";
}; };
}; };
} }

Binary file not shown.

819
home-modules/assets/nx2.flf Normal file
View File

@@ -0,0 +1,819 @@
flf2a$ 8 8 17 -1 2
nx2.flf by nx2
July 10. 2025
$$@
$$@
$$@
$$@
$$@
$$@
$$@
$$@@
db$@
88$@
88$@
°°$@
..$@
YP$@
$@
$@@
.o. .o.$@
'8' '8'$@
$@
$@
$@
$@
$@
$@@
$@
db db $@
C88888D$@
88 88 $@
C88888D$@
YP YP $@
$@
$@@
8 $@
.d888b.$@
88 8 °°$@
'Y888b.$@
.. 8 8D$@
'Y888P'$@
8 $@
$@@
d8b dD$@
°8° d8'$@
d8' $@
d8' $@
d8'.8.$@
d8' Y8P$@
$@
$@@
.d888b. $@
8P 8D $@
'Vb d8' $@
d88C dD$@
C8' d8D $@
'888P Yb$@
$@
$@@
Cb$@
'D$@
'$@
$@
$@
$@
$@
$@@
dD$@
d8' $@
d8 $@
88 $@
V8 $@
V8. $@
VD$@
$@@
Cb. $@
'8b $@
8b$@
88$@
8P$@
.8P $@
CP' $@
$@@
$@
$@
d.8.b $@
X8K $@
Y'8'P $@
$@
$@
$@@
$@
db $@
88 $@
C888888D$@
88 $@
VP $@
$@
$@@
$@
$@
$@
$@
db$@
Y8$@
.V$@
$@@
$@
$@
$@
C8888D$@
$@
$@
$@
$@@
$@
$@
$@
$@
db$@
VP$@
$@
$@@
dD$@
d8'$@
d8' $@
d8' $@
d8' $@
C8' $@
$@
$@@
.d88b. $@
.8P 88.$@
88 d'88$@
88 d' 88$@
'88' d8'$@
'Y88P' $@
$@
$@@
d8b $@
dP88 $@
dP'88 $@
88 $@
88 $@
Y8888P$@
$@
$@@
.d888b.$@
VP '8D$@
odD'$@
.88' $@
j88. $@
888888D$@
$@
$@@
.d888b.$@
VP '8D$@
oooY'$@
°°Yb.$@
db 8D$@
'Y888P'$@
$@
$@@
j8b $@
j888 $@
j8'88 $@
j8' 88 $@
V88888D$@
VP $@
$@
$@@
d88888b$@
8D $@
Y888bo.$@
'88$@
do. .88$@
'Y888P'$@
$@
$@@
dD $@
d8' $@
d8' $@
d8888b.$@
88' '8D$@
'8888P $@
$@
$@@
d88888b$@
VP d8'$@
d8' $@
d8' $@
d8' $@
d8' $@
$@
$@@
.d888b.$@
88 8D$@
'VoooY'$@
.d°°°b.$@
88 8D$@
'Y888P'$@
$@
$@@
.d888b.$@
88' '8D$@
'V8o88'$@
d8' $@
d8' $@
d8' $@
$@
$@@
$@
db$@
VP$@
$@
db$@
VP$@
$@
$@@
$@
db$@
VP$@
$@
db$@
V8$@
P$@
$@@
$@
$@
.d9$@
.dP' $@
'Yb. $@
'Yb$@
$@
$@@
$@
C8888D$@
$@
C8888D$@
$@
$@
$@
$@@
$@
$@
0b. $@
'Yb.$@
.dP'$@
0Y' $@
$@
$@@
.d888b.$@
VP '8D$@
odD'$@
8P' $@
.. $@
VP $@
$@
$@@
.o888bo. $@
d8°' '°Y8 $@
d8' .o88b 88$@
8P dP d8 8P$@
8b 'V88P'8P $@
Yo. ...$@
'°Y8888P°' $@
$@@
d8b $@
dP'Yb $@
d8. .8b $@
d8888888b $@
d8' '8b$@
YP YP$@
$@
$@@
d8888b.$@
88 '8D$@
88oooY'$@
88°°Yb.$@
88 8D$@
Y8888P'$@
$@
$@@
.od88bo. $@
.8P°' '°YD$@
88 $@
88 $@
'8b. .dD$@
'°Y88P°' $@
$@
$@@
d8888bo. $@
88 '8b$@
88 88$@
88 88$@
88 .8P$@
Y8888P°' $@
$@
$@@
d888888b$@
88' $@
88oooo. $@
88°°°°' $@
88. $@
Y888888P$@
$@
$@@
d888888b$@
88' $@
88oooo. $@
88°°°°' $@
88 $@
YP $@
$@
$@@
.od88bo. $@
.8P°' '°YD$@
88 $@
88 d88b$@
'8b. .8D$@
'°Y88P°'V$@
$@
$@@
db db$@
88 88$@
88ooo88$@
88°°°88$@
88 88$@
YP YP$@
$@
$@@
d8888b$@
'88' $@
88 $@
88 $@
.88. $@
Y8888P$@
$@
$@@
d88b$@
'8P'$@
88 $@
88 $@
db..88 $@
'Y88P' $@
$@
$@@
db dD$@
88 .8P'$@
88o8P $@
88°8b $@
88 '88.$@
YP YD$@
$@
$@@
db $@
88 $@
88 $@
88 $@
88....$@
Y8888D$@
$@
$@@
d8b d8b$@
88Y8bd8P88$@
88 'YP' 88$@
88 88$@
88 88$@
YP YP$@
$@
$@@
d8b db$@
888b 88$@
88Y8b 88$@
88 Y8b88$@
88 Y888$@
YP Y8P$@
$@
$@@
.od88bo. $@
.8P' 'Y8.$@
88 88$@
88 88$@
'8b. .d8'$@
'°Y88P°' $@
$@
$@@
d88888b.$@
88' '8b$@
88. .8P$@
888888P'$@
88 $@
YP $@
$@
$@@
.od88bo. $@
.8P' 'Y8.$@
88 88$@
88 '8o 88$@
'8b. '8dP'$@
'°Y88P°8o $@
$@
$@@
d88888b.$@
88' '8b$@
88. .8P$@
888888P'$@
88 Y8b $@
YP Y8b$@
$@
$@@
.d8888.$@
88' YP$@
'8bo. $@
'Y8b.$@
db 8D$@
'8888Y'$@
$@
$@@
d888888b$@
'°°88°°'$@
88 $@
88 $@
88 $@
YP $@
$@
$@@
db db$@
88 88$@
88 88$@
88 88$@
Y8. .8P$@
°8888° $@
$@
$@@
db db$@
88 88$@
Y8 8P$@
'8b d8'$@
'8bd8' $@
YP $@
$@
$@@
db db$@
88 88$@
88 88$@
Y8 db 8P$@
'8bd88bd8'$@
'8P°°8P' $@
$@
$@@
db db$@
'8b d8'$@
'8bd8' $@
.dPYb. $@
.8P Y8.$@
YP YP$@
$@
$@@
db db$@
'8b d8'$@
'8bd8' $@
88 $@
88 $@
YP $@
$@
$@@
d88888D$@
YP d8'$@
d8' $@
d8' $@
d8' db$@
d88888P$@
$@
$@@
d88D$@
88 $@
88 $@
88 $@
88 $@
88 $@
L88D$@
$@@
Cb $@
'8b $@
'8b $@
'8b $@
'8b $@
'8D$@
$@
$@@
C88D$@
88$@
88$@
88$@
88$@
88$@
C888$@
$@@
db $@
.dPVb. $@
dP' 'Vb$@
$@
$@
$@
$@
$@@
$@
$@
$@
$@
$@
C88888D$@
$@
$@@
dD$@
C'$@
'$@
$@
$@
$@
$@
$@@
$@
.d8888bd8$@
d8°' '°88$@
88 88$@
88o. .o88$@
'Y8888P'8$@
$@
$@@
db $@
88od888b. $@
88°' '°88$@
88 88$@
88o. .o88$@
Y'Y8888P' $@
$@
$@@
$@
.od88bo.$@
.8P' 'YP$@
88 $@
'8b. .db$@
'°Y88P°'$@
$@
$@@
db$@
.d888bo88$@
d8°' '°88$@
88 88$@
88o. .o88$@
'Y8888P'V$@
$@
$@@
$@
.od88bo.$@
.8P' '88$@
88'°°°°°'$@
'8b. .oo$@
'°Y88P°'$@
$@
$@@
.d888b.$@
d8' '8b$@
888b $@
88 $@
d8 $@
YP $@
$@
$@@
$@
.d8888bd0$@
d8°' '°88$@
88 88$@
88o. .o88$@
'Y8888P'8$@
do. .oP$@
'Y8888P' $@@
db $@
88od888b. $@
88°' '°88$@
88 88$@
88 88$@
YP YP$@
$@
$@@
** $@
ooo $@
88 $@
88 $@
88 $@
088D$@
$@
$@@
**$@
ooo$@
88$@
88$@
88$@
8D$@
.88$@
d8P $@@
db $@
88 .oo$@
88.d8' $@
888K $@
88'Y8. $@
YP 'YD$@
$@
$@@
db $@
88 $@
88 $@
88 $@
88..$@
'Y8D$@
$@
$@@
$@
8.d8b.d8b.$@
88 '88 '88$@
88 88 88$@
88 88 88$@
YP YP YP$@
$@
$@@
$@
8bod888b. $@
88°' '°88$@
88 88$@
88 88$@
YP YP$@
$@
$@@
$@
.d8888b. $@
d8°' '°8b$@
88 88$@
Y8o. .o8P$@
'Y8888P' $@
$@
$@@
$@
.d8888b. $@
d8°' '°88$@
88 88$@
88o. .o88$@
88'8888P' $@
88 $@
YP $@@
$@
.d8888b. $@
d8°' '°88$@
88 88$@
Y8o. .o88$@
'Y8888'88$@
88$@
YP$@@
$@
8.d88D$@
88' $@
88 $@
88 $@
YP $@
$@
$@@
$@
.d888b.$@
88 °°$@
'Y888b.$@
.. 8D$@
'Y888P'$@
$@
$@@
db $@
88oo$@
88''$@
88 $@
88..$@
'Y8D$@
$@
$@@
$@
db db$@
88 88$@
88 88$@
Y8o. .o88$@
'Y8888P'8$@
$@
$@@
$@
db db$@
Y8 8P$@
'8b d8'$@
'8bd8' $@
YP $@
$@
$@@
$@
db db$@
88 88$@
Y8 db 8P$@
'8bd88bd8'$@
'8P°°8P' $@
$@
$@@
$@
db db$@
'Y8..8P'$@
)88( $@
.8P''Y8.$@
YP YP$@
$@
$@@
$@
88 88$@
d8 88$@
88 88$@
Y8o. .o88$@
'Y8888'88$@
do. .oP$@
'Y8888P' $@@
$@
d88888D$@
YP .8P'$@
.8P' $@
.8P db$@
d88888P$@
$@
$@@
.o8P$@
8' $@
.dP $@
C8K $@
'Yb $@
8. $@
'°8b$@
$@@
db$@
88$@
88$@
88$@
88$@
88$@
YP$@
$@@
88o. $@
'8 $@
Vb. $@
X8D$@
dP' $@
.8 $@
C8°' $@
$@@
$@
$@
.d8b. .db$@
dP' 'Y8P' $@
$@
$@
$@
$@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@

9
home-modules/bar.nix Normal file
View File

@@ -0,0 +1,9 @@
{ ... }: {
imports = [
# ./bar/submap-indicator.nix
./bar/cclock.nix
./bar/caldav-event.nix
# ./bar/waybar.nix
./bar/hyprpanel.nix
];
}

View File

@@ -0,0 +1,136 @@
{ pkgs, ... }@all: with all; let
username = "lennart";
in {
sops.secrets = {
"nx2site/nextcloud/lennart_pass" = { };
};
home.packages = [
(pkgs.writers.writePython3Bin "caldav_event" {
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
} /* python */ ''
import json
from caldav import DAVClient
from datetime import datetime, timezone, timedelta
from ics import Calendar
from pytz import UTC
def get_password(password_file):
with open(password_file, "r") as file:
return file.read().strip()
def datetime_converter(obj):
if isinstance(obj, datetime):
return obj.isoformat()
return obj
def datetime_parser(dct):
for key, value in dct.items():
if isinstance(value, str):
try:
dct[key] = datetime.fromisoformat(value)
except ValueError:
pass
return dct
def load_cache(cache_file):
try:
with open(cache_file, "r") as file:
return json.load(file, object_hook=datetime_parser)
except (json.JSONDecodeError, FileNotFoundError):
return None
def save_cache(cache_file, data):
with open(cache_file, "w") as file:
data['last_checked'] = datetime.now(timezone.utc)
json.dump(data, file, default=datetime_converter, indent=4)
def get_ongoing_or_next_event(url, username, password):
now = datetime.now(timezone.utc)
try:
client = DAVClient(url, username=username, password=password)
principal = client.principal()
calendars = principal.calendars()
next_event_dict = {
'event_name': "fake",
'event_begin': datetime(9000, 1, 1, tzinfo=UTC), # in the year 9000
'event_end': datetime(9000, 1, 1, 8, tzinfo=UTC),
}
for calendar in calendars:
for event in calendar.search(start=now):
if "VEVENT" not in event.data:
continue
calendar_parsed = Calendar(event.data)
for ics_event in calendar_parsed.events:
event_dict = {}
event_dict['event_name'] = ics_event.name or "(No Title)"
event_dict['event_begin'] = ics_event.begin.astimezone(timezone.utc)
event_dict['event_end'] = ics_event.end.astimezone(timezone.utc)
if event_dict['event_begin'] <= now and now <= event_dict['event_end']:
return event_dict
elif event_dict['event_begin'] >= now and next_event_dict['event_begin'] > event_dict['event_begin']:
next_event_dict = event_dict
return next_event_dict
except Exception as e:
print(f"Error accessing {url}: {str(e)}".splitlines()[0])
return None
def is_expired(event_dict: dict):
now = datetime.now(timezone.utc).timestamp()
event_end = event_dict['event_end'].timestamp()
return not (now <= event_end)
def is_too_old(event_dict: dict) -> bool:
last_checked = event_dict['last_checked']
now = datetime.now(timezone.utc)
return now - last_checked >= timedelta(minutes=10)
if __name__ == "__main__":
password_file = "${config.sops.secrets."nx2site/nextcloud/lennart_pass".path}" # Path to password file
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
url = "https://n.${hyper.domain}/remote.php/dav/calendars/${username}/"
username = "${username}"
password = get_password(password_file)
now = datetime.now(timezone.utc).timestamp()
event_dict = load_cache(cache_file)
if (event_dict is None) or is_expired(event_dict) or is_too_old(event_dict):
event_dict = get_ongoing_or_next_event(url, username, password)
save_cache(cache_file, event_dict)
if event_dict is None: # none were found
print("* zen *")
exit(0)
event_start = event_dict['event_begin'].timestamp()
event_end = event_dict['event_end'].timestamp()
if event_start <= now <= event_end: # is currently ongoing
action_string = "ends"
t = event_end - now # time_remaining
else: # is in the future
action_string = "starts"
t = event_start - now # time_remaining
hours, rem = divmod(int(t), 3600)
minutes, _ = divmod(rem, 60)
hour_string = f"{hours} hour{'s ' if hours != 1 else ' '}" if hours > 0 else ""
minu_string = f"{minutes} minute{'s ' if minutes != 1 else ' '}" if minutes > 0 else ""
if hour_string == "" and minu_string == "":
time_string = "now"
elif hour_string == "" or minu_string == "":
time_string = "in " + hour_string + minu_string
else:
time_string = "in " + hour_string + "and " + minu_string
print(f"\'{event_dict['event_name']}\' {action_string} {time_string}".splitlines()[0])
'')
];
}

View File

@@ -0,0 +1,14 @@
{ pkgs, ... }: let
sep = " ";
in {
home.packages = [
(pkgs.writeShellApplication { name = "cclock"; text = /* bash */ ''
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
if [ $# -eq 0 ]; then
echo "󰃮${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
elif [ "$1" = "--no-icons" ]; then
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
fi
'';})
];
}

View File

@@ -0,0 +1,515 @@
{ pkgs, ... }@all: with all; {
xdg.configFile = {
"hyprpanel/modules.scss".text = with rice.color; /* scss */ ''
@include styleModule('cmodule-cclock', (
'text-color': ${accent.base},
/* 'icon-color': , */
/* 'icon-background': , */
/* 'label-background': #242438, */
/* 'inner-spacing': 0.5em, */
/* 'border-enabled': false, */
/* 'border-color': #cba6f7, */
/* 'icon-size': 1.2em */
));
@include styleModule('cmodule-caldav_event', (
'text-color': ${accent.base},
));
'';
"hyprpanel/modules.json".text = builtins.toJSON {
"custom/cclock" = {
execute = "cclock";
executeOnAction = "";
label = "{}";
interval = 60000;
hideOnEmpty = true;
actions.onLeftClick = "menu:calendar";
};
"custom/caldav_event" = {
execute = "caldav_event";
label = "󰃰 {}";
interval = 60000;
hideOnEmpty = false;
actions = {};
};
};
};
programs.hyprpanel = {
enable = true;
package = pkgs.unstable.hyprpanel;
settings = with rice.color; let
t = builtins.toString (builtins.ceil (rice.transparency * 100));
in {
"bar.layouts" = {
"*" = {
"left" = [
"volume"
# "microphone"
# "cpu"
# "cputemp"
# "ram"
(pkgs.lib.mkIf (hyper.host == "NxXPS") "battery")
# "bluetooth"
"network"
"windowtitle"
"media"
];
"middle" = [ "workspaces" ];
"right" = [
"submap"
"custom/caldav_event"
"custom/cclock"
"notifications"
"systray"
];
};
};
"bar.bluetooth.label" = true;
"bar.customModules.submap.disabledIcon" = "";
"bar.customModules.submap.disabledText" = "";
"bar.customModules.submap.enabledIcon" = "";
"bar.customModules.submap.enabledText" = "[SUBMAP]";
"bar.customModules.submap.icon" = false;
"bar.customModules.submap.label" = true;
"bar.customModules.submap.showSubmapIcon" = false;
"bar.customModules.submap.showSubmapName" = false;
"bar.workspaces.applicationIconEmptyWorkspace" = "";
"bar.workspaces.applicationIconOncePerWorkspace" = false;
"bar.workspaces.numbered_active_indicator" = "color";
"bar.workspaces.scroll_speed" = 1;
"bar.workspaces.showAllActive" = false;
"bar.workspaces.showApplicationIcons" = true;
"bar.workspaces.show_icons" = false;
"bar.workspaces.show_numbered" = false;
"bar.workspaces.showWsIcons" = true;
"bar.workspaces.spacing" = 1;
"bar.workspaces.workspaceMask" = true;
"bar.workspaces.workspaces" = 5;
"theme.bar.background" = background;
"theme.bar.border.color" = accent.base;
"theme.bar.border_radius" = "0.2em";
"theme.bar.buttons.background" = background;
"theme.bar.buttons.background_opacity" = 0;
"theme.bar.buttons.spacing" = "0em";
"theme.bar.buttons.padding_x" = "0.5rem";
"theme.bar.buttons.battery.background" = background;
"theme.bar.buttons.battery.border" = accent.base;
"theme.bar.buttons.battery.icon_background" = background;
"theme.bar.buttons.battery.icon" = accent.base;
"theme.bar.buttons.battery.text" = accent.base;
"theme.bar.buttons.bluetooth.background" = background;
"theme.bar.buttons.bluetooth.border" = accent.base;
"theme.bar.buttons.bluetooth.icon_background" = background;
"theme.bar.buttons.bluetooth.icon" = accent.base;
"theme.bar.buttons.bluetooth.text" = accent.base;
"theme.bar.buttons.borderColor" = accent.base;
"theme.bar.buttons.clock.background" = background;
"theme.bar.buttons.clock.border" = accent.base;
"theme.bar.buttons.clock.icon_background" = background;
"theme.bar.buttons.clock.icon" = accent.base;
"theme.bar.buttons.clock.text" = accent.base;
"theme.bar.buttons.dashboard.background" = background;
"theme.bar.buttons.dashboard.border" = accent.base;
"theme.bar.buttons.dashboard.icon" = accent.base;
"theme.bar.buttons.icon_background" = background;
"theme.bar.buttons.icon" = accent.base;
"theme.bar.buttons.media.background" = background;
"theme.bar.buttons.media.border" = accent.base;
"theme.bar.buttons.media.icon_background" = background;
"theme.bar.buttons.media.icon" = accent.base;
"theme.bar.buttons.media.text" = accent.base;
"theme.bar.buttons.modules.cava.background" = background;
"theme.bar.buttons.modules.cava.border" = accent.base;
"theme.bar.buttons.modules.cava.icon_background" = background;
"theme.bar.buttons.modules.cava.icon" = accent.base;
"theme.bar.buttons.modules.cava.text" = accent.base;
"theme.bar.buttons.modules.cpu.background" = background;
"theme.bar.buttons.modules.cpu.border" = accent.base;
"theme.bar.buttons.modules.cpu.icon_background" = background;
"theme.bar.buttons.modules.cpu.icon" = accent.base;
"theme.bar.buttons.modules.cpu.text" = accent.base;
"theme.bar.buttons.modules.cpuTemp.background" = background;
"theme.bar.buttons.modules.cpuTemp.border" = accent.base;
"theme.bar.buttons.modules.cpuTemp.icon_background" = background;
"theme.bar.buttons.modules.cpuTemp.icon" = accent.base;
"theme.bar.buttons.modules.cpuTemp.text" = accent.base;
"theme.bar.buttons.modules.hypridle.background" = background;
"theme.bar.buttons.modules.hypridle.border" = accent.base;
"theme.bar.buttons.modules.hypridle.icon_background" = background;
"theme.bar.buttons.modules.hypridle.icon" = accent.base;
"theme.bar.buttons.modules.hypridle.text" = accent.base;
"theme.bar.buttons.modules.hyprsunset.background" = background;
"theme.bar.buttons.modules.hyprsunset.border" = accent.base;
"theme.bar.buttons.modules.hyprsunset.icon_background" = background;
"theme.bar.buttons.modules.hyprsunset.icon" = accent.base;
"theme.bar.buttons.modules.hyprsunset.text" = accent.base;
"theme.bar.buttons.modules.kbLayout.background" = background;
"theme.bar.buttons.modules.kbLayout.border" = accent.base;
"theme.bar.buttons.modules.kbLayout.icon_background" = background;
"theme.bar.buttons.modules.kbLayout.icon" = accent.base;
"theme.bar.buttons.modules.kbLayout.text" = accent.base;
"theme.bar.buttons.modules.microphone.background" = background;
"theme.bar.buttons.modules.microphone.border" = accent.base;
"theme.bar.buttons.modules.microphone.icon_background" = background;
"theme.bar.buttons.modules.microphone.icon" = accent.base;
"theme.bar.buttons.modules.microphone.text" = accent.base;
"theme.bar.buttons.modules.netstat.background" = background;
"theme.bar.buttons.modules.netstat.border" = accent.base;
"theme.bar.buttons.modules.netstat.icon_background" = background;
"theme.bar.buttons.modules.netstat.icon" = accent.base;
"theme.bar.buttons.modules.netstat.text" = accent.base;
"theme.bar.buttons.modules.power.background" = background;
"theme.bar.buttons.modules.power.border" = accent.base;
"theme.bar.buttons.modules.power.icon_background" = background;
"theme.bar.buttons.modules.power.icon" = accent.base;
"theme.bar.buttons.modules.ram.background" = background;
"theme.bar.buttons.modules.ram.border" = accent.base;
"theme.bar.buttons.modules.ram.icon_background" = background;
"theme.bar.buttons.modules.ram.icon" = accent.base;
"theme.bar.buttons.modules.ram.text" = accent.base;
"theme.bar.buttons.modules.storage.background" = background;
"theme.bar.buttons.modules.storage.border" = accent.base;
"theme.bar.buttons.modules.storage.icon_background" = background;
"theme.bar.buttons.modules.storage.icon" = accent.base;
"theme.bar.buttons.modules.storage.text" = accent.base;
"theme.bar.buttons.modules.submap.background" = background;
"theme.bar.buttons.modules.submap.border" = accent.base;
"theme.bar.buttons.modules.submap.icon_background" = background;
"theme.bar.buttons.modules.submap.icon" = accent.base;
"theme.bar.buttons.modules.submap.text" = special.base;
"theme.bar.buttons.modules.updates.background" = background;
"theme.bar.buttons.modules.updates.border" = accent.base;
"theme.bar.buttons.modules.updates.icon_background" = background;
"theme.bar.buttons.modules.updates.icon" = accent.base;
"theme.bar.buttons.modules.updates.text" = accent.base;
"theme.bar.buttons.modules.weather.background" = background;
"theme.bar.buttons.modules.weather.border" = accent.base;
"theme.bar.buttons.modules.weather.icon_background" = background;
"theme.bar.buttons.modules.weather.icon" = accent.base;
"theme.bar.buttons.modules.weather.text" = accent.base;
"theme.bar.buttons.modules.worldclock.background" = background;
"theme.bar.buttons.modules.worldclock.border" = accent.base;
"theme.bar.buttons.modules.worldclock.icon_background" = background;
"theme.bar.buttons.modules.worldclock.icon" = accent.base;
"theme.bar.buttons.modules.worldclock.text" = accent.base;
"theme.bar.buttons.monochrome" = false;
"theme.bar.buttons.network.background" = background;
"theme.bar.buttons.network.border" = accent.base;
"theme.bar.buttons.network.icon_background" = background;
"theme.bar.buttons.network.icon" = accent.base;
"theme.bar.buttons.network.text" = accent.base;
"theme.bar.buttons.notifications.background" = background;
"theme.bar.buttons.notifications.border" = accent.base;
"theme.bar.buttons.notifications.icon_background" = background;
"theme.bar.buttons.notifications.icon" = accent.base;
"theme.bar.buttons.notifications.total" = accent.base;
"theme.bar.buttons.opacity" = t;
"theme.bar.buttons.separator.color" = accent.base;
"theme.bar.buttons.style" = "default";
"theme.bar.buttons.systray.background" = background;
"theme.bar.buttons.systray.border" = accent.base;
"theme.bar.buttons.systray.customIcon" = accent.base;
"theme.bar.buttons.text" = accent.base;
"theme.bar.buttons.volume.background" = background;
"theme.bar.buttons.volume.border" = accent.base;
"theme.bar.buttons.volume.icon_background" = background;
"theme.bar.buttons.volume.icon" = accent.base;
"theme.bar.buttons.volume.text" = accent.base;
"theme.bar.buttons.windowtitle.background" = background;
"theme.bar.buttons.windowtitle.border" = secondary.base;
"theme.bar.buttons.windowtitle.icon_background" = background;
"theme.bar.buttons.windowtitle.icon" = secondary.base;
"theme.bar.buttons.windowtitle.text" = secondary.base;
"theme.bar.buttons.workspaces.active" = accent.bright;
"theme.bar.buttons.workspaces.available" = accent.base;
"theme.bar.buttons.workspaces.background" = background;
"theme.bar.buttons.workspaces.border" = accent.base;
"theme.bar.buttons.workspaces.hover" = foreground;
"theme.bar.buttons.workspaces.numbered_active_highlighted" = accent.base;
"theme.bar.buttons.workspaces.numbered_active_highlighted_text_color" = accent.dark;
"theme.bar.buttons.workspaces.numbered_active_highlight_padding" = "0.4em";
"theme.bar.buttons.workspaces.numbered_active_underline_color" = accent.bright;
"theme.bar.buttons.workspaces.numbered_inactive_padding" = "0.4em";
"theme.bar.buttons.workspaces.occupied" = secondary.base;
"theme.bar.buttons.workspaces.pill.width" = "4em";
"theme.bar.buttons.workspaces.smartHighlight" = true;
"theme.bar.buttons.y_margins" = "0em";
"theme.bar.location" = "bottom";
"theme.bar.menus.menu.battery.background.color" = background;
"theme.bar.menus.menu.battery.border.color" = accent.base;
"theme.bar.menus.menu.battery.card.color" = accent.dark;
"theme.bar.menus.menu.battery.icons.active" = accent.base;
"theme.bar.menus.menu.battery.icons.passive" = accent.base;
"theme.bar.menus.menu.battery.label.color" = accent.base;
"theme.bar.menus.menu.battery.listitems.active" = accent.base;
"theme.bar.menus.menu.battery.listitems.passive" = accent.base;
"theme.bar.menus.menu.battery.slider.background" = background;
"theme.bar.menus.menu.battery.slider.backgroundhover" = background;
"theme.bar.menus.menu.battery.slider.primary" = accent.base;
"theme.bar.menus.menu.battery.slider.puck" = accent.base;
"theme.bar.menus.menu.battery.text" = foreground;
"theme.bar.menus.menu.bluetooth.background.color" = background;
"theme.bar.menus.menu.bluetooth.border.color" = accent.base;
"theme.bar.menus.menu.bluetooth.card.color" = accent.dark;
"theme.bar.menus.menu.bluetooth.iconbutton.active" = accent.base;
"theme.bar.menus.menu.bluetooth.iconbutton.passive" = accent.base;
"theme.bar.menus.menu.bluetooth.icons.active" = accent.base;
"theme.bar.menus.menu.bluetooth.icons.passive" = accent.base;
"theme.bar.menus.menu.bluetooth.label.color" = accent.base;
"theme.bar.menus.menu.bluetooth.listitems.active" = accent.base;
"theme.bar.menus.menu.bluetooth.listitems.passive" = accent.base;
"theme.bar.menus.menu.bluetooth.scroller.color" = accent.base;
"theme.bar.menus.menu.bluetooth.status" = accent.base;
"theme.bar.menus.menu.bluetooth.switch.disabled" = accent.base;
"theme.bar.menus.menu.bluetooth.switch_divider" = accent.base;
"theme.bar.menus.menu.bluetooth.switch.enabled" = accent.base;
"theme.bar.menus.menu.bluetooth.switch.puck" = accent.base;
"theme.bar.menus.menu.bluetooth.text" = foreground;
"theme.bar.menus.menu.clock.background.color" = background;
"theme.bar.menus.menu.clock.border.color" = accent.base;
"theme.bar.menus.menu.clock.calendar.contextdays" = foreground;
"theme.bar.menus.menu.clock.calendar.currentday" = accent.base;
"theme.bar.menus.menu.clock.calendar.days" = accent.base;
"theme.bar.menus.menu.clock.calendar.paginator" = accent.base;
"theme.bar.menus.menu.clock.calendar.weekdays" = accent.base;
"theme.bar.menus.menu.clock.calendar.yearmonth" = accent.base;
"theme.bar.menus.menu.clock.card.color" = accent.dark;
"theme.bar.menus.menu.clock.text" = foreground;
"theme.bar.menus.menu.clock.time.time" = accent.base;
"theme.bar.menus.menu.clock.time.timeperiod" = accent.base;
"theme.bar.menus.menu.clock.weather.hourly.icon" = accent.base;
"theme.bar.menus.menu.clock.weather.hourly.temperature" = accent.base;
"theme.bar.menus.menu.clock.weather.hourly.time" = accent.base;
"theme.bar.menus.menu.clock.weather.icon" = accent.base;
"theme.bar.menus.menu.clock.weather.stats" = accent.base;
"theme.bar.menus.menu.clock.weather.status" = accent.base;
"theme.bar.menus.menu.clock.weather.temperature" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.cold" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.extremelycold" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.extremelyhot" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.hot" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.moderate" = accent.base;
"theme.bar.menus.menu.dashboard.background.color" = background;
"theme.bar.menus.menu.dashboard.border.color" = accent.base;
"theme.bar.menus.menu.dashboard.card.color" = accent.dark;
"theme.bar.menus.menu.dashboard.controls.bluetooth.background" = background;
"theme.bar.menus.menu.dashboard.controls.bluetooth.text" = foreground;
"theme.bar.menus.menu.dashboard.controls.disabled" = accent.base;
"theme.bar.menus.menu.dashboard.controls.input.background" = background;
"theme.bar.menus.menu.dashboard.controls.input.text" = foreground;
"theme.bar.menus.menu.dashboard.controls.notifications.background" = background;
"theme.bar.menus.menu.dashboard.controls.notifications.text" = foreground;
"theme.bar.menus.menu.dashboard.controls.volume.background" = background;
"theme.bar.menus.menu.dashboard.controls.volume.text" = foreground;
"theme.bar.menus.menu.dashboard.controls.wifi.background" = background;
"theme.bar.menus.menu.dashboard.controls.wifi.text" = foreground;
"theme.bar.menus.menu.dashboard.directories.left.bottom.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.left.middle.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.left.top.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.right.bottom.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.right.middle.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.right.top.color" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.bar_background" = background;
"theme.bar.menus.menu.dashboard.monitors.cpu.bar" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.cpu.icon" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.cpu.label" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.disk.bar" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.disk.icon" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.disk.label" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.gpu.bar" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.gpu.icon" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.gpu.label" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.ram.bar" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.ram.icon" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.ram.label" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.background" = background;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.body" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.border" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.button_text" = foreground;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.card" = accent.dark;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.confirm" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.deny" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.label" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.logout" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.restart" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.shutdown" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.sleep" = accent.base;
"theme.bar.menus.menu.dashboard.profile.name" = accent.base;
"theme.bar.menus.menu.dashboard.shortcuts.background" = background;
"theme.bar.menus.menu.dashboard.shortcuts.recording" = accent.base;
"theme.bar.menus.menu.dashboard.shortcuts.text" = foreground;
"theme.bar.menus.menu.media.album" = accent.base;
"theme.bar.menus.menu.media.artist" = accent.base;
"theme.bar.menus.menu.media.background.color" = "#000000";
"theme.bar.menus.menu.media.border.color" = accent.base;
"theme.bar.menus.menu.media.buttons.background" = background;
"theme.bar.menus.menu.media.buttons.enabled" = accent.base;
"theme.bar.menus.menu.media.buttons.inactive" = accent.base;
"theme.bar.menus.menu.media.buttons.text" = foreground;
"theme.bar.menus.menu.media.card.color" = accent.dark;
"theme.bar.menus.menu.media.card.tint" = accent.dark;
"theme.bar.menus.menu.media.slider.background" = accent.dark;
"theme.bar.menus.menu.media.slider.backgroundhover" = secondary.dark;
"theme.bar.menus.menu.media.slider.primary" = accent.base;
"theme.bar.menus.menu.media.slider.puck" = accent.bright;
"theme.bar.menus.menu.media.song" = accent.base;
"theme.bar.menus.menu.media.timestamp" = accent.base;
"theme.bar.menus.menu.network.background.color" = background;
"theme.bar.menus.menu.network.border.color" = accent.base;
"theme.bar.menus.menu.network.card.color" = accent.dark;
"theme.bar.menus.menu.network.iconbuttons.active" = accent.base;
"theme.bar.menus.menu.network.iconbuttons.passive" = accent.base;
"theme.bar.menus.menu.network.icons.active" = accent.base;
"theme.bar.menus.menu.network.icons.passive" = accent.base;
"theme.bar.menus.menu.network.label.color" = accent.base;
"theme.bar.menus.menu.network.listitems.active" = accent.base;
"theme.bar.menus.menu.network.listitems.passive" = accent.base;
"theme.bar.menus.menu.network.scroller.color" = accent.base;
"theme.bar.menus.menu.network.status.color" = accent.base;
"theme.bar.menus.menu.network.switch.disabled" = accent.base;
"theme.bar.menus.menu.network.switch.enabled" = accent.base;
"theme.bar.menus.menu.network.switch.puck" = accent.base;
"theme.bar.menus.menu.network.text" = foreground;
"theme.bar.menus.menu.notifications.background" = background;
"theme.bar.menus.menu.notifications.border" = accent.base;
"theme.bar.menus.menu.notifications.card" = accent.dark;
"theme.bar.menus.menu.notifications.clear" = accent.base;
"theme.bar.menus.menu.notifications.label" = accent.base;
"theme.bar.menus.menu.notifications.no_notifications_label" = accent.base;
"theme.bar.menus.menu.notifications.pager.background" = background;
"theme.bar.menus.menu.notifications.pager.button" = accent.base;
"theme.bar.menus.menu.notifications.pager.label" = accent.bright;
"theme.bar.menus.menu.notifications.scrollbar.color" = accent.base;
"theme.bar.menus.menu.notifications.switch.disabled" = accent.base;
"theme.bar.menus.menu.notifications.switch_divider" = accent.base;
"theme.bar.menus.menu.notifications.switch.enabled" = accent.base;
"theme.bar.menus.menu.notifications.switch.puck" = accent.base;
"theme.bar.menus.menu.power.background.color" = background;
"theme.bar.menus.menu.power.border.color" = accent.base;
"theme.bar.menus.menu.power.buttons.logout.background" = background;
"theme.bar.menus.menu.power.buttons.logout.icon_background" = background;
"theme.bar.menus.menu.power.buttons.logout.icon" = accent.base;
"theme.bar.menus.menu.power.buttons.logout.text" = foreground;
"theme.bar.menus.menu.power.buttons.restart.background" = background;
"theme.bar.menus.menu.power.buttons.restart.icon_background" = background;
"theme.bar.menus.menu.power.buttons.restart.icon" = accent.base;
"theme.bar.menus.menu.power.buttons.restart.text" = foreground;
"theme.bar.menus.menu.power.buttons.shutdown.background" = background;
"theme.bar.menus.menu.power.buttons.shutdown.icon_background" = background;
"theme.bar.menus.menu.power.buttons.shutdown.icon" = accent.base;
"theme.bar.menus.menu.power.buttons.shutdown.text" = foreground;
"theme.bar.menus.menu.power.buttons.sleep.background" = background;
"theme.bar.menus.menu.power.buttons.sleep.icon_background" = background;
"theme.bar.menus.menu.power.buttons.sleep.icon" = accent.base;
"theme.bar.menus.menu.power.buttons.sleep.text" = foreground;
"theme.bar.menus.menu.systray.dropdownmenu.background" = background;
"theme.bar.menus.menu.systray.dropdownmenu.divider" = accent.base;
"theme.bar.menus.menu.systray.dropdownmenu.text" = foreground;
"theme.bar.menus.menu.volume.audio_slider.background" = background;
"theme.bar.menus.menu.volume.audio_slider.backgroundhover" = background;
"theme.bar.menus.menu.volume.audio_slider.primary" = accent.base;
"theme.bar.menus.menu.volume.audio_slider.puck" = accent.base;
"theme.bar.menus.menu.volume.background.color" = background;
"theme.bar.menus.menu.volume.border.color" = accent.base;
"theme.bar.menus.menu.volume.card.color" = accent.dark;
"theme.bar.menus.menu.volume.iconbutton.active" = accent.base;
"theme.bar.menus.menu.volume.iconbutton.passive" = accent.base;
"theme.bar.menus.menu.volume.input_slider.background" = background;
"theme.bar.menus.menu.volume.input_slider.backgroundhover" = background;
"theme.bar.menus.menu.volume.input_slider.primary" = accent.base;
"theme.bar.menus.menu.volume.input_slider.puck" = accent.base;
"theme.bar.menus.menu.volume.label.color" = accent.base;
"theme.bar.menus.menu.volume.listitems.active" = accent.base;
"theme.bar.menus.menu.volume.listitems.passive" = accent.base;
"theme.bar.menus.menu.volume.text" = foreground;
"theme.bar.menus.monochrome" = false;
"theme.bar.opacity" = t;
"theme.bar.outer_spacing" = "0em";
"theme.bar.transparent" = false;
"theme.font.name" = rice.font.code.name;
"theme.font.size" = "12px";
"theme.notification.actions.background" = background;
"theme.notification.actions.text" = foreground;
"theme.notification.background" = background;
"theme.notification.border" = border;
"theme.notification.close_button.background" = accent.dark;
"theme.notification.close_button.label" = accent.base;
"theme.notification.label" = accent.bright;
"theme.notification.labelicon" = accent.base;
"theme.notification.opacity" = 100;
"theme.notification.text" = foreground;
"theme.notification.time" = accent.base;
"theme.osd.bar_color" = accent.base;
"theme.osd.bar_container" = accent.dark;
"theme.osd.bar_empty_color" = accent.dark;
"theme.osd.bar_overflow_color" = accent.base;
"theme.osd.border.color" = border;
"theme.osd.icon_container" = secondary.dark;
"theme.osd.icon" = secondary.bright;
"theme.osd.label" = accent.bright;
"theme.osd.opacity" = t;
};
};
}

View File

@@ -0,0 +1,37 @@
{ pkgs, ... }: {
home.packages = [
(pkgs.writeShellApplication { name = "submap_indicator"; text = /*bash*/ ''
print_help() {
echo "Usage: submap_indicator {set <string>|unset}"
}
if [ $# -lt 1 ]; then
print_help; exit 1;
fi
case "$1" in
set)
# Check if there is a second argument for the 'set' operation
if [ $# -eq 2 ]; then
echo "$2" > /tmp/submap-indictor
pkill -RTMIN+8 waybar
pkill -RTMIN+8 hyprpanel
else
echo "Error: 'set' operation requires exactly one string argument."
print_help
exit 1
fi
;;
unset)
echo "" > /tmp/submap-indictor
pkill -RTMIN+8 waybar
pkill -RTMIN+8 hyprpanel
;;
*)
echo "Error: Unknown command '$1'"
print_help
exit 1
;;
esac
exit 0
'';})
];
}

165
home-modules/bar/waybar.nix Normal file
View File

@@ -0,0 +1,165 @@
{ pkgs, ... }@all: with all; let
sep = " ";
in {
programs.waybar = {
enable = false;
package = pkgs.waybar;
settings = {
bar = {
# height = 20;
layer = "top";
position = "bottom";
margin-top = 0;
# margin-left = rice.gap-size;
# margin-bottom = rice.gap-size;
# margin-right = rice.gap-size;
margin-left = 0;
margin-bottom = 0;
margin-right = 0;
spacing = 10;
fixed-center = true;
modules-left = [
# "cpu"
# "memory"
"wireplumber"
"backlight"
"battery"
"network"
"hyprland/window"
];
modules-center = [
"hyprland/workspaces"
];
modules-right = [
"custom/mode"
"custom/caldav_event"
"custom/cclock"
"tray"
];
"hyprland/workspaces" = {
on-click = "activate";
format = "{name}";
all-outputs = false;
active-only = false;
};
"hyprland/window" = {
# format = "${sep}{}";
format = "{}";
separate-outputs = true;
};
"custom/cclock" = {
exec = "cclock";
restart-interval = 60;
};
"custom/caldav_event" = {
format = "󰃰${sep}{}";
exec = "caldav_event";
restart-interval = 60;
max-width = 60;
};
"custom/mode" = {
exec = "cat /tmp/submap-indictor";
interval = "once";
signal = 8;
};
cpu = {
interval = 1;
format = "󰍛${sep}{}%";
max-length = 10;
};
memory = {
interval = 5;
format = "${sep}{avail:.0f}G free";
};
battery = {
interval = 60;
tooltip = false;
format = "{icon}${sep}{capacity}%";
states = {
warning = 15;
critical = 5;
};
format-icons = [ " " " " " " " " " " ];
format-charging = "{icon}${sep}+{capacity}%";
format-plugged = "{icon}${sep}P{capacity}%";
format-full = "{icon}${sep}F{capacity}%";
};
backlight = {
device = "eDP-1";
format = "{icon}${sep}{percent}%";
format-icons = [ "" "" "" "" "" "" "" "" "" ];
};
network = {
format-wifi = "${sep}{essid}";
format-ethernet = "󰈀${sep}Wired";
format-disconnected = "󰌙${sep}Disconnected";
};
wireplumber = {
format = "󰕾${sep}{volume}%";
format-muted = "󰝟${sep}--%";
};
};
};
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in /* css */ ''
* {
font-family: ${rice.font.code.name};
font-size: 1em;
min-height: 0px;
margin: 0px;
padding: 0px;
}
window#waybar {
background: rgba(${f background},${builtins.toString rice.transparency});
}
#clock,
#custom-cclock,
#custom-mode,
#custom-caldav-event,
#battery,
#cpu,
#tray,
#disk,
#backlight,
#network,
#wireplumber,
#memory,
#window,
#workspaces {
padding: 0px 3px;
margin-top: 0.3em;
border-radius: ${builtins.toString rice.rounding}px;
color: rgb(${f accent.bright});
}
#workspaces button {
color: rgb(${f accent.base});
padding-left: 15px;
padding-right: 15px;
border-radius: ${builtins.toString rice.rounding}px;
}
#workspaces button.active { color: rgb(${f background}); background-color: rgb(${f accent.base}); }
#workspaces button:hover { color: rgb(${f tertiary.bright}); }
#workspaces button.urgent { background-color: rgba(${f magenta.base},${builtins.toString rice.transparency}); }
#window, #custom-caldav_event {
font-family: ${rice.font.base.name}, ${rice.font.code.name};
color: rgb(${f tertiary.bright});
}
#wireplumber.muted { color: rgb(${f tertiary.bright}); }
#wireplumber { padding-left: 10px; }
#battery.warning:not(.charging) { color: rgb(${f green.base});; }
#battery.charging { color: rgb(${f green.base}); }
#battery.critical {
background: rgb(${f negative.base});
color: rgb(${f foreground});
}
#custom-mode { color: rgb(${f red.base}); }
'';
};
}

View File

@@ -1,6 +1,10 @@
{ ... }: { pkgs, ... }:
{ {
programs.bash = { programs.bash = let
init = /* bash */ ''
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
'';
in {
enable = true; enable = true;
shellAliases = { shellAliases = {
ll = "ls -l"; ll = "ls -l";
@@ -15,5 +19,10 @@
"checkjobs" "checkjobs"
]; ];
enableCompletion = false; enableCompletion = false;
} // pkgs.lib.mkIf (pkgs.version != "24.05") {
shellInit = init;
} // pkgs.lib.mkIf (pkgs.version != "25.11") {
profileExtra = init;
}; };
} }

View File

@@ -1,33 +1,6 @@
{ config, pkgs, lib, host, secrets, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
bitwarden bitwarden-desktop
bitwarden-cli
]; ];
# home.file.".config/Bitwarden CLI/data.json".text = ''
# {
# "stateVersion": 9,
# "global": {
# "theme": "system",
# "window": {},
# "environmentUrls": {
# "base": "https://pw.nx2.site",
# "api": null,
# "identity": null,
# "webVault": null,
# "icons": null,
# "notifications": null,
# "events": null,
# "keyConnector": null
# },
# "region": "Self-hosted",
# "installedVersion": "2023.12.0"
# }
# }
# '';
# home.sessionVariables.BW_SESSION = secrets.bitwarden.env.bw-session;
} }

View File

@@ -0,0 +1,57 @@
{ pkgs, ... }@all: with all;
{
home.packages = let
u = pkgs.writers.writePython3Bin "nx_fix_campuszeit_python" {
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /* python */ ''
import os
import sys
def replace_campus_timezone(directory):
if not os.path.isdir(directory):
print(f"Error: {directory} is not a valid directory.")
return
for filename in os.listdir(directory):
filepath = os.path.join(directory, filename)
if not os.path.isfile(filepath):
continue
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
start_idx = content.find('BEGIN:VTIMEZONE')
end_idx = content.find('END:VTIMEZONE', start_idx)
if start_idx != -1 and end_idx != -1:
content = content[:start_idx] + content[end_idx + len('END:VTIMEZONE\n'):]
# Replace all TZID references
content = content.replace('TZID:CampusNetZeit', 'TZID:Europe/Berlin')
content = content.replace('TZID=CampusNetZeit', 'TZID=Europe/Berlin')
content = content.replace('TZID:"CampusNetZeit"', 'TZID:"Europe/Berlin"')
content = content.replace('TZID="CampusNetZeit"', 'TZID="Europe/Berlin"')
with open(filepath, 'w', encoding='utf-8') as f:
f.write(content)
print(f"Updated time zone in: {filename}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python replace_timezone.py <directory>")
else:
replace_campus_timezone(sys.argv[1])
'';
in [
(pkgs.writeShellApplication {
name = "nx_fix_campuszeit";
text = /*bash*/ ''
echo CHANGING OWNERSHIP OF "$(realpath "$1")" RECURSIVELY
read -r -p "Continue?"
sudo chown -R ${hyper.user} "$1"
${u}/bin/nx_fix_campuszeit_python "$1"
sudo chown -R radicale "$1"
'';
})
];
}

View File

@@ -1,31 +1,44 @@
{ pkgs, lib, user, secrets, domain, ... }: let { pkgs, ... }@all: with all; let
calendars = [ v = "nxc";
user = "lennart";
domain = hyper.domain;
calendars = let
bs = "https://n.${domain}/remote.php/dav/calendars/lennart";
in [
{ {
name = "Preservation"; name = "Preservation";
primary = true; primary = true;
url = "https://dav.${domain}/${user}/preservation/"; url = "${bs}/preservation/";
color = "#dddddd"; color = "#dddddd";
} }
{ {
name = "Effort"; name = "Effort";
url = "https://dav.${domain}/${user}/effort/"; url = "${bs}/effort/";
color = "#dd2222"; color = "#dd2222";
} }
{ {
name = "Experience"; name = "Experience";
url = "https://dav.${domain}/${user}/experience/"; url = "${bs}/experience/";
color = "#2222dd"; color = "#2222dd";
} }
{ {
name = "Exposure"; name = "Leisure";
url = "https://dav.${domain}/${user}/exposure/"; # name = "Exposure";
url = "${bs}/leisure/";
# url = "https://${v}.${domain}/${user}/exposure/";
color = "#22aa22"; color = "#22aa22";
} }
{ # {
name = "Engagement"; # name = "Engagement";
url = "https://dav.${domain}/${user}/engagement/"; # url = "https://${v}.${domain}/${user}/engagement/";
color = "#8800CC"; # color = "#8800CC";
} # }
# {
# {
# name = "Family";
# url = "${bs}/family/";
# color = "#dddd22";
# }
{ {
name = "Sleep as Android"; name = "Sleep as Android";
url = secrets.calendar.sleep-as-android-url; url = secrets.calendar.sleep-as-android-url;
@@ -41,9 +54,9 @@
type = "ics"; type = "ics";
} }
{ {
name = "Handball Männer"; name = "Feiertage Hessen";
url = "http://i.cal.to/ical/108/dhb/handball-nationalmannschaft/c687e97f.bc7c3eb6-11a0e356.ics"; url = "https://ics.tools/Feiertage/hessen.ics";
color = "#880023"; color = "#303030";
read-only = true; read-only = true;
type = "ics"; type = "ics";
} }
@@ -68,7 +81,7 @@ in {
inherit primary; inherit primary;
remote = { remote = {
inherit url name; inherit url name;
userName = user; # my globally set username userName = user;
}; };
}; };
in lib.attrsets.mergeAttrsList ( in lib.attrsets.mergeAttrsList (

View File

@@ -1,30 +1,36 @@
{ pkgs, rice, secrets, ... }: { pkgs, ... }@all: with all;
let let
channels = [ channels = [
"Caedrel" "Caedrel"
"agurin" "Caedrel247"
"asmongold" # "agurin"
# "asmongold"
# "Caedrel" # "Caedrel"
"EintrachtSpandau" # "EintrachtSpandau"
"GamesDoneQuick" # "GamesDoneQuick"
"gdolphn" # "Odoamne"
# "iwdominate"
# "imls"
# "gdolphn"
"GRONKH" "GRONKH"
"handofblood" # "handofblood"
"HisWattson" # "HisWattson"
"Jankos" # "Jankos"
"KuruHS" # "KuruHS"
"LEC" "LEC"
"lol_nemesis" "lol_nemesis"
"NASA" # "NASA"
"NNOPrime" # "nattynattlol"
"NoWay4u_Sir" # "NoWay4u_Sir"
"OfficialMikeShinoda" # "OfficialMikeShinoda"
"Rekkles" # "Rekkles"
"riotgames" "riotgames"
"ThePrimeagen" # "thebausffs"
"Tolkin" # "ThePrimeagen"
"TSM_ImperialHal" # "Tolkin"
"Xisuma" # "imperialhal__"
# "velja_lol"
# "Xisuma"
"zackrawrr" "zackrawrr"
]; ];
tabber = channel-name: { tabber = channel-name: {
@@ -42,8 +48,14 @@ let
}; };
}; };
in { in {
# sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; };
home = { home = {
packages = with pkgs; [ chatterino2 ]; packages = with pkgs; [
unstable.chatterino2
unstable.streamlink
# mpv
];
file = { file = {
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ '' ".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
{ {
@@ -67,20 +79,27 @@ in {
"separateMessages": true, "separateMessages": true,
"showTimestamps": false, "showTimestamps": false,
"timestampFormat": "h =mm", "timestampFormat": "h =mm",
"usernameDisplayMode": 1 "usernameDisplayMode": 1,
"findAllUsernames": true
}, },
"showReplyButton": false,
"showTabCloseButton": false,
"showTabLiveButton": false,
"splitheader": { "splitheader": {
"showGame": true, "showGame": true,
"showTitle": true, "showTitle": true,
"showUptime": true, "showUptime": true,
"showViewerCount": true "showViewerCount": true
}, },
"tabVisibility": 1, "tabStyle": "compact",
"theme": { "tabVisibility": 0,
"name": "nxtheme.json" "theme": { "name": "nxtheme.json" }
}
}, },
"behaviour": { "behaviour": {
"autocopletion": {
"ShowUsernameCompeltionMenu": false,
"userCompletinOnlyWithAt": true
},
"pauseOnHoverDuration": 5.0, "pauseOnHoverDuration": 5.0,
"showJoins": false, "showJoins": false,
"usernameRightClickBehavior": 0, "usernameRightClickBehavior": 0,
@@ -92,615 +111,89 @@ in {
}, },
"highlighting": { "highlighting": {
"badges": [ "badges": [
{ { "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" },
"alert": false, { "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" },
"color": "#7f7f3f49", { "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" },
"displayName": "Broadcaster", { "alert": false, "color": "#7f7f3f49", "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
"name": "broadcaster", { "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" }
"showInMentions": false,
"sound": false,
"soundUrl": ""
},
{
"alert": false,
"color": "#7f7f3f49",
"displayName": "Admin",
"name": "admin",
"showInMentions": false,
"sound": false,
"soundUrl": ""
},
{
"alert": false,
"color": "#7f7f3f49",
"displayName": "Staff",
"name": "staff",
"showInMentions": false,
"sound": false,
"soundUrl": ""
},
{
"alert": false,
"displayName": "Moderator",
"name": "moderator",
"showInMentions": false,
"sound": false,
"soundUrl": ""
},
{
"alert": false,
"color": "#7f7f3578",
"displayName": "VIP",
"name": "vip",
"showInMentions": false,
"sound": false,
"soundUrl": ""
}
], ],
"selfMessageHighlight": { "selfMessageHighlight": { "color": "#73008cff", "enabled": true }
"color": "#73008cff",
"enabled": true
}
}, },
"hotkeys": { "hotkeys": {
"addedDefaults": [ "addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open overlay", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle overlay click-through", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
"change channel",
"close popup window", "change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" },
"create clip", "close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
"delete", "create clip": { "action": "createClip", "arguments": [], "category": "split", "keySequence": "Alt+X" },
"emote picker", "delete": { "action": "delete", "arguments": [], "category": "split", "keySequence": "Ctrl+W" },
"focus down", "emote picker": { "action": "openEmotesPopup", "arguments": [], "category": "splitInput", "keySequence": "Ctrl+E" },
"focus left", "focus down": { "action": "focus", "arguments": [ "down" ], "category": "split", "keySequence": "Alt+Down" },
"focus right", "focus left": { "action": "focus", "arguments": [ "left" ], "category": "split", "keySequence": "Alt+Left" },
"focus up", "focus right": { "action": "focus", "arguments": [ "right" ], "category": "split", "keySequence": "Alt+Right" },
"go to end of input", "focus up": { "action": "focus", "arguments": [ "up" ], "category": "split", "keySequence": "Alt+Up" },
"go to end of input with selection", "go to end of input": { "action": "cursorToEnd", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "End" },
"go to start of input", "go to end of input with selection": { "action": "cursorToEnd", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+End" },
"go to start of input with selection", "go to start of input": { "action": "cursorToStart", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "Home" },
"new popup window", "go to start of input with selection": { "action": "cursorToStart", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+Home" },
"new popup window from tab", "new popup window": { "action": "popup", "arguments": [ "split" ], "category": "window", "keySequence": "Ctrl+N" },
"new split", "new popup window from tab": { "action": "popup", "arguments": [ "window" ], "category": "window", "keySequence": "Ctrl+Shift+N" },
"new tab", "new split": { "action": "newSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+T" },
"next message", "new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" },
"open debug popup", "next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" },
"open quick switcher", "open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" },
"open settings", "open overlay": { "action": "popupOverlay", "arguments": [], "category": "split", "keySequence": "Ctrl+Alt+N" },
"popup accept", "open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" },
"popup focus search box", "open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" },
"popup reject", "popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" },
"popup scroll down", "popup focus search box": { "action": "search", "arguments": [], "category": "popupWindow", "keySequence": "Ctrl+F" },
"popup scroll up", "popup reject": { "action": "reject", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
"popup select last tab", "popup scroll down": { "action": "scrollPage", "arguments": [ "down" ], "category": "popupWindow", "keySequence": "PgDown" },
"popup select next tab", "popup scroll up": { "action": "scrollPage", "arguments": [ "up" ], "category": "popupWindow", "keySequence": "PgUp" },
"popup select previous tab", "popup select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "popupWindow", "keySequence": "Ctrl+9" },
"popup select tab #1", "popup select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "popupWindow", "keySequence": "Ctrl+Tab" },
"popup select tab #2", "popup select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "popupWindow", "keySequence": "Ctrl+Shift+Tab" },
"popup select tab #3", "popup select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "popupWindow", "keySequence": "Ctrl+1" },
"popup select tab #4", "popup select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "popupWindow", "keySequence": "Ctrl+2" },
"popup select tab #5", "popup select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "popupWindow", "keySequence": "Ctrl+3" },
"popup select tab #6", "popup select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "popupWindow", "keySequence": "Ctrl+4" },
"popup select tab #7", "popup select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "popupWindow", "keySequence": "Ctrl+5" },
"popup select tab #8", "popup select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "popupWindow", "keySequence": "Ctrl+6" },
"previous message", "popup select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "popupWindow", "keySequence": "Ctrl+7" },
"reconnect", "popup select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "popupWindow", "keySequence": "Ctrl+8" },
"reload emotes", "previous message": { "action": "previousMessage", "arguments": [], "category": "splitInput", "keySequence": "Up" },
"remove tab", "reconnect": { "action": "reconnect", "arguments": [], "category": "split", "keySequence": "Ctrl+F5" },
"reopen split", "reload emotes": { "action": "reloadEmotes", "arguments": [], "category": "split", "keySequence": "F5" },
"scroll page down", "remove tab": { "action": "removeTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+W" },
"scroll page up", "reopen split": { "action": "reopenSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+G" },
"scroll to bottom", "scroll page down": { "action": "scrollPage", "arguments": [ "down" ], "category": "split", "keySequence": "PgDown" },
"scroll to top", "scroll page up": { "action": "scrollPage", "arguments": [ "up" ], "category": "split", "keySequence": "PgUp" },
"select last tab", "scroll to bottom": { "action": "scrollToBottom", "arguments": [], "category": "split", "keySequence": "Ctrl+End" },
"select next tab", "scroll to top": { "action": "scrollToTop", "arguments": [], "category": "split", "keySequence": "Ctrl+Home" },
"select previous tab", "select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "window", "keySequence": "Ctrl+9" },
"select tab #1", "select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "window", "keySequence": "Ctrl+Tab" },
"select tab #2", "select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "window", "keySequence": "Ctrl+Shift+Tab" },
"select tab #3", "select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "window", "keySequence": "Ctrl+1" },
"select tab #4", "select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "window", "keySequence": "Ctrl+2" },
"select tab #5", "select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "window", "keySequence": "Ctrl+3" },
"select tab #6", "select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "window", "keySequence": "Ctrl+4" },
"select tab #7", "select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "window", "keySequence": "Ctrl+5" },
"select tab #8", "select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "window", "keySequence": "Ctrl+6" },
"send message", "select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "window", "keySequence": "Ctrl+7" },
"send message and keep text", "select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "window", "keySequence": "Ctrl+8" },
"show global search", "send message": { "action": "sendMessage", "arguments": [], "category": "splitInput", "keySequence": "Return" },
"show search", "send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" },
"toggle live tabs only", "show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" },
"toggle local r9k", "show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" },
"toggle tab visibility", "toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" },
"zoom in", "toggle overlay click-through": { "action": "toggleOverlayInertia", "arguments": [ "all" ], "category": "split", "keySequence": "Ctrl+Shift+U" },
"zoom out", "toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" },
"zoom reset" "zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" },
], "zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" },
"change channel": { "zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" }
"action": "changeChannel",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+R"
},
"close popup window": {
"action": "delete",
"arguments": [],
"category": "popupWindow",
"keySequence": "Esc"
},
"create clip": {
"action": "createClip",
"arguments": [],
"category": "split",
"keySequence": "Alt+X"
},
"delete": {
"action": "delete",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+W"
},
"emote picker": {
"action": "openEmotesPopup",
"arguments": [],
"category": "splitInput",
"keySequence": "Ctrl+E"
},
"focus down": {
"action": "focus",
"arguments": [
"down"
],
"category": "split",
"keySequence": "Alt+Down"
},
"focus left": {
"action": "focus",
"arguments": [
"left"
],
"category": "split",
"keySequence": "Alt+Left"
},
"focus right": {
"action": "focus",
"arguments": [
"right"
],
"category": "split",
"keySequence": "Alt+Right"
},
"focus up": {
"action": "focus",
"arguments": [
"up"
],
"category": "split",
"keySequence": "Alt+Up"
},
"go to end of input": {
"action": "cursorToEnd",
"arguments": [
"withoutSelection"
],
"category": "splitInput",
"keySequence": "End"
},
"go to end of input with selection": {
"action": "cursorToEnd",
"arguments": [
"withSelection"
],
"category": "splitInput",
"keySequence": "Shift+End"
},
"go to start of input": {
"action": "cursorToStart",
"arguments": [
"withoutSelection"
],
"category": "splitInput",
"keySequence": "Home"
},
"go to start of input with selection": {
"action": "cursorToStart",
"arguments": [
"withSelection"
],
"category": "splitInput",
"keySequence": "Shift+Home"
},
"new popup window": {
"action": "popup",
"arguments": [
"split"
],
"category": "window",
"keySequence": "Ctrl+N"
},
"new popup window from tab": {
"action": "popup",
"arguments": [
"window"
],
"category": "window",
"keySequence": "Ctrl+Shift+N"
},
"new split": {
"action": "newSplit",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+T"
},
"new tab": {
"action": "newTab",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+Shift+T"
},
"next message": {
"action": "nextMessage",
"arguments": [],
"category": "splitInput",
"keySequence": "Down"
},
"open debug popup": {
"action": "debug",
"arguments": [],
"category": "split",
"keySequence": "F10"
},
"open quick switcher": {
"action": "openQuickSwitcher",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+K"
},
"open settings": {
"action": "openSettings",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+P"
},
"popup accept": {
"action": "accept",
"arguments": [],
"category": "popupWindow",
"keySequence": "Return"
},
"popup focus search box": {
"action": "search",
"arguments": [],
"category": "popupWindow",
"keySequence": "Ctrl+F"
},
"popup reject": {
"action": "reject",
"arguments": [],
"category": "popupWindow",
"keySequence": "Esc"
},
"popup scroll down": {
"action": "scrollPage",
"arguments": [
"down"
],
"category": "popupWindow",
"keySequence": "PgDown"
},
"popup scroll up": {
"action": "scrollPage",
"arguments": [
"up"
],
"category": "popupWindow",
"keySequence": "PgUp"
},
"popup select last tab": {
"action": "openTab",
"arguments": [
"last"
],
"category": "popupWindow",
"keySequence": "Ctrl+9"
},
"popup select next tab": {
"action": "openTab",
"arguments": [
"next"
],
"category": "popupWindow",
"keySequence": "Ctrl+Tab"
},
"popup select previous tab": {
"action": "openTab",
"arguments": [
"previous"
],
"category": "popupWindow",
"keySequence": "Ctrl+Shift+Tab"
},
"popup select tab #1": {
"action": "openTab",
"arguments": [
"0"
],
"category": "popupWindow",
"keySequence": "Ctrl+1"
},
"popup select tab #2": {
"action": "openTab",
"arguments": [
"1"
],
"category": "popupWindow",
"keySequence": "Ctrl+2"
},
"popup select tab #3": {
"action": "openTab",
"arguments": [
"2"
],
"category": "popupWindow",
"keySequence": "Ctrl+3"
},
"popup select tab #4": {
"action": "openTab",
"arguments": [
"3"
],
"category": "popupWindow",
"keySequence": "Ctrl+4"
},
"popup select tab #5": {
"action": "openTab",
"arguments": [
"4"
],
"category": "popupWindow",
"keySequence": "Ctrl+5"
},
"popup select tab #6": {
"action": "openTab",
"arguments": [
"5"
],
"category": "popupWindow",
"keySequence": "Ctrl+6"
},
"popup select tab #7": {
"action": "openTab",
"arguments": [
"6"
],
"category": "popupWindow",
"keySequence": "Ctrl+7"
},
"popup select tab #8": {
"action": "openTab",
"arguments": [
"7"
],
"category": "popupWindow",
"keySequence": "Ctrl+8"
},
"previous message": {
"action": "previousMessage",
"arguments": [],
"category": "splitInput",
"keySequence": "Up"
},
"reconnect": {
"action": "reconnect",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+F5"
},
"reload emotes": {
"action": "reloadEmotes",
"arguments": [],
"category": "split",
"keySequence": "F5"
},
"remove tab": {
"action": "removeTab",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+Shift+W"
},
"reopen split": {
"action": "reopenSplit",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+G"
},
"scroll page down": {
"action": "scrollPage",
"arguments": [
"down"
],
"category": "split",
"keySequence": "PgDown"
},
"scroll page up": {
"action": "scrollPage",
"arguments": [
"up"
],
"category": "split",
"keySequence": "PgUp"
},
"scroll to bottom": {
"action": "scrollToBottom",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+End"
},
"scroll to top": {
"action": "scrollToTop",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+Home"
},
"select last tab": {
"action": "openTab",
"arguments": [
"last"
],
"category": "window",
"keySequence": "Ctrl+9"
},
"select next tab": {
"action": "openTab",
"arguments": [
"next"
],
"category": "window",
"keySequence": "Ctrl+Tab"
},
"select previous tab": {
"action": "openTab",
"arguments": [
"previous"
],
"category": "window",
"keySequence": "Ctrl+Shift+Tab"
},
"select tab #1": {
"action": "openTab",
"arguments": [
"0"
],
"category": "window",
"keySequence": "Ctrl+1"
},
"select tab #2": {
"action": "openTab",
"arguments": [
"1"
],
"category": "window",
"keySequence": "Ctrl+2"
},
"select tab #3": {
"action": "openTab",
"arguments": [
"2"
],
"category": "window",
"keySequence": "Ctrl+3"
},
"select tab #4": {
"action": "openTab",
"arguments": [
"3"
],
"category": "window",
"keySequence": "Ctrl+4"
},
"select tab #5": {
"action": "openTab",
"arguments": [
"4"
],
"category": "window",
"keySequence": "Ctrl+5"
},
"select tab #6": {
"action": "openTab",
"arguments": [
"5"
],
"category": "window",
"keySequence": "Ctrl+6"
},
"select tab #7": {
"action": "openTab",
"arguments": [
"6"
],
"category": "window",
"keySequence": "Ctrl+7"
},
"select tab #8": {
"action": "openTab",
"arguments": [
"7"
],
"category": "window",
"keySequence": "Ctrl+8"
},
"send message": {
"action": "sendMessage",
"arguments": [],
"category": "splitInput",
"keySequence": "Return"
},
"send message and keep text": {
"action": "sendMessage",
"arguments": [
"keepInput"
],
"category": "splitInput",
"keySequence": "Ctrl+Return"
},
"show global search": {
"action": "showGlobalSearch",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+Shift+F"
},
"show search": {
"action": "showSearch",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+F"
},
"toggle live tabs only": {
"action": "setTabVisibility",
"arguments": [
"toggleLiveOnly"
],
"category": "window",
"keySequence": "Ctrl+Shift+L"
},
"toggle local r9k": {
"action": "toggleLocalR9K",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+H"
},
"toggle tab visibility": {
"action": "setTabVisibility",
"arguments": [
"toggle"
],
"category": "window",
"keySequence": "Ctrl+U"
},
"zoom in": {
"action": "zoom",
"arguments": [
"in"
],
"category": "window",
"keySequence": "Ctrl++"
},
"zoom out": {
"action": "zoom",
"arguments": [
"out"
],
"category": "window",
"keySequence": "Ctrl+-"
},
"zoom reset": {
"action": "zoom",
"arguments": [
"reset"
],
"category": "window",
"keySequence": "Ctrl+0"
}
}, },
"misc": { "misc": {
"currentVersion": "2.5.1", "askOnTabVisibilityToggle": false,
"currentVersion": "2.5.5",
"lockNotebookLayout": false "lockNotebookLayout": false
}, },
"similarity": { "similarity": {
@@ -712,6 +205,12 @@ in {
"ui": { "ui": {
"lastSelectChannelTab": 0, "lastSelectChannelTab": 0,
"lastSelectIrcConn": -1 "lastSelectIrcConn": -1
},
"external": {
"streamlink": {
"quality": "",
"options": "--config ${hyper.home}/.config/streamlink/config"
}
} }
} }
''; '';
@@ -731,7 +230,7 @@ in {
}]; }];
}; };
".local/share/chatterino/Themes/nxtheme.json".text = with rice.color; let ".local/share/chatterino/Themes/nxtheme.json".text = with rice.color; let
tr = builtins.toString (rice.lib.float-to-drune rice.transparency); # tr = builtins.toString (rice.lib.float-to-drune rice.transparency);
nh = rice.lib.nohash; nh = rice.lib.nohash;
in /* json */ '' in /* json */ ''
{ {
@@ -821,6 +320,23 @@ in {
} }
} }
''; '';
".local/share/chatterino/Settings/commands.json".text = ''
{
"commands": [
{
"name": "/sl",
"func": "/streamlink",
"showInMsgContextMenu": false
}
]
}
'';
".config/streamlink/config".text = /* ini */ ''
twitch-api-header=Authorization=OAuth ${secrets.streamlink.twitch-oauth}
player=mpv
twitch-low-latency
default-stream=best
'';
}; };
}; };
} }

View File

@@ -0,0 +1,7 @@
{ pkgs, ... }@all: with all;
{
services.clipman = {
package = pkgs.clipman;
enable = true;
};
}

View File

@@ -3,20 +3,30 @@
home.file.".config/color-pallete.html".text = with rice.color; let home.file.".config/color-pallete.html".text = with rice.color; let
cb = color-set: color-name: size: /* html */ '' cb = color-set: color-name: size: /* html */ ''
<div class="color-container" style="border-color: ${color-set.base}"> <div class="color-container" style="border-color: ${color-set.base}">
<div class="color-box" style="background: ${color-set.darker}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.bright}"> ${color-name}.darker </p>
<p sktyle="color: ${color-set.bright}"> ${color-set.darker} </p>
</div>
<div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.bright}"> ${color-name}.dark </p> <p style="color: ${color-set.brighter}"> ${color-name}.dark </p>
<p style="color: ${color-set.bright}"> ${color-set.dark} </p> <p style="color: ${color-set.brighter}"> ${color-set.dark} </p>
</div> </div>
<div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
<p class="dynamic-text"> ${color-name}.base </p> <p class="dynamic-text"> ${color-name}.base </p>
<p class="dynamic-text"> ${color-set.base} </p> <p class="dynamic-text"> ${color-set.base} </p>
</div> </div>
<div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.dark}"> ${color-name}.bright </p> <p style="color: ${color-set.darker}"> ${color-name}.bright </p>
<p style="color: ${color-set.dark}"> ${color-set.bright} </p> <p style="color: ${color-set.darker}"> ${color-set.bright} </p>
</div>
<div class="color-box" style="background: ${color-set.brighter}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.dark}"> ${color-name}.brighter </p>
<p style="color: ${color-set.dark}"> ${color-set.brighter} </p>
</div> </div>
</div> </div>
''; '';
rgb = rice.lib.hex-to-rgb-comma-string;
s = builtins.toString;
in /* html */ '' in /* html */ ''
<!DOCTYPE html> <!DOCTYPE html>
<head> <head>
@@ -30,27 +40,26 @@
padding: 0px; padding: 0px;
} }
html { html {
background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}); background: transparent;
padding: auto;
} }
body { body {
font-family: ${rice.font.base.name}; font-family: ${rice.font.base.name};
color: ${foreground}; color: ${foreground};
width: fit-content; width: fit-content;
margin: 10px auto 10px auto; margin: 10px auto 10px auto;
background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}); background: rgba(${rgb background},${s rice.transparency});
border: ${builtins.toString rice.border-width}px solid ${border}; border: ${s rice.border-width}px solid ${border};
border-radius: ${builtins.toString rice.rounding}px; border-radius: ${s rice.rounding}px;
padding: ${builtins.toString rice.gap-size}px; padding: ${s rice.gap-size}px;
} }
h1 { h1 {
margin: ${builtins.toString rice.gap-size}px; margin: ${s rice.gap-size}px;
} }
.color-container { .color-container {
font-family: ${rice.font.code.name}; font-family: ${rice.font.code.name};
display: flex; display: flex;
gap: ${builtins.toString rice.gap-size}px; gap: ${s rice.gap-size}px;
margin: ${builtins.toString rice.gap-size}px; margin: ${s rice.gap-size}px;
} }
.color-box { .color-box {
width: 200px; width: 200px;
@@ -58,7 +67,7 @@
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border-radius: ${builtins.toString rice.rounding}px; border-radius: ${s rice.rounding}px;
} }
</style> </style>
</head> </head>
@@ -67,8 +76,9 @@
${cb accent "accent" 100} ${cb accent "accent" 100}
${cb secondary "secondary" 100} ${cb secondary "secondary" 100}
${cb tertiary "tertiary" 100} ${cb tertiary "tertiary" 100}
${cb weird "weird" 100} ${cb weird "weird" 80}
${cb special "special" 100} ${cb special "special" 80}
${cb subtle "subtle" 80}
<br> <br>
${cb positive "positive" 70} ${cb positive "positive" 70}
${cb negative "negative" 70} ${cb negative "negative" 70}

28
home-modules/contact.nix Normal file
View File

@@ -0,0 +1,28 @@
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
# sops.secrets."nx2site/nextcloud/lennart_pass".path = "nx2site/nextcloud/lennart_pass";
# accounts.contact = {
# basePath = "~/.local/share/contacts";
# accounts = let
# nc = name: { "${name}" = let
# un = "lennart";
# in {
# inherit name;
# remote = {
# url = "https://n.${hyper.domain}/remote.php/dav/addressbooks/users/${un}/${name}/";
# type = "carddav";
# username = un;
# passwordCommand = "cat /run/user/1000/secrets/nx2site/nextcloud/lennart_pass";
# thunderbird = {
# enable = builtins.trace config.programs.thunderbird.enable config.programs.thunderbird.enable;
# prifiles = [ hyper.user ];
# };
# };
# local = {
# type = "filesystem";
# path = "${name}";
# };
# };};
# in (pkgs.lib.mergeAttrsList (builtins.map nc [ "TUDa" "CWG" "HSMW" "DICOS" "Accounts" "Familie & Freunde" "Friedrich Schiller Grundschule" "Handball" "Phönix" "Util & Miscellaneous" ]));
# };
# };
}

View File

@@ -1,4 +1,4 @@
{ lib, user, ... }: { ... }:
{ {
programs = { programs = {
direnv = { direnv = {

View File

@@ -1,199 +1,200 @@
{ pkgs, lib, host, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE") lib.mkIf (hyper.host != "NxACE")
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
vesktop vesktop
# discord
]; ];
file.".config/vesktop/settings/settings.json".text = let # file.".config/vesktop/settings/settings.json".text = let
settingsSyncVersion = "1729179678715"; # settingsSyncVersion = "1729179678715";
in /* json */ ''{ # in /* json */ ''{
"notifyAboutUpdates": true, # "notifyAboutUpdates": true,
"autoUpdate": false, # "autoUpdate": false,
"autoUpdateNotification": true, # "autoUpdateNotification": true,
"useQuickCss": true, # "useQuickCss": true,
"themeLinks": [ # "themeLinks": [
"https://luckfire.github.io/amoled-cord/src/amoled-cord.css" # "https://luckfire.github.io/amoled-cord/src/amoled-cord.css"
], # ],
"enabledThemes": [], # "enabledThemes": [],
"enableReactDevtools": false, # "enableReactDevtools": false,
"frameless": false, # "frameless": false,
"transparent": true, # "transparent": true,
"winCtrlQ": false, # "winCtrlQ": false,
"macosTranslucency": false, # "macosTranslucency": false,
"disableMinSize": false, # "disableMinSize": false,
"winNativeTitleBar": false, # "winNativeTitleBar": false,
"plugins": { # "plugins": {
"BadgeAPI": { "enabled": true }, # "BadgeAPI": { "enabled": true },
"CommandsAPI": { "enabled": true }, # "CommandsAPI": { "enabled": true },
"ContextMenuAPI": { "enabled": true }, # "ContextMenuAPI": { "enabled": true },
"MemberListDecoratorsAPI": { "enabled": false }, # "MemberListDecoratorsAPI": { "enabled": false },
"MessageAccessoriesAPI": { "enabled": false }, # "MessageAccessoriesAPI": { "enabled": false },
"MessageDecorationsAPI": { "enabled": false }, # "MessageDecorationsAPI": { "enabled": false },
"MessageEventsAPI": { "enabled": false }, # "MessageEventsAPI": { "enabled": false },
"MessagePopoverAPI": { "enabled": false }, # "MessagePopoverAPI": { "enabled": false },
"NoticesAPI": { "enabled": true }, # "NoticesAPI": { "enabled": true },
"ServerListAPI": { "enabled": false }, # "ServerListAPI": { "enabled": false },
"NoTrack": { "enabled": true }, # "NoTrack": { "enabled": true },
"Settings": { # "Settings": {
"enabled": true, # "enabled": true,
"settingsLocation": "aboveActivity" # "settingsLocation": "aboveActivity"
}, # },
"SupportHelper": { "enabled": true }, # "SupportHelper": { "enabled": true },
"ChatInputButtonAPI": { "enabled": false }, # "ChatInputButtonAPI": { "enabled": false },
"AlwaysAnimate": { "enabled": true }, # "AlwaysAnimate": { "enabled": true },
"AlwaysTrust": { "enabled": true }, # "AlwaysTrust": { "enabled": true },
"AnonymiseFileNames": { "enabled": false }, # "AnonymiseFileNames": { "enabled": false },
"WebRichPresence (arRPC)": { "enabled": false }, # "WebRichPresence (arRPC)": { "enabled": false },
"BANger": { "enabled": false }, # "BANger": { "enabled": false },
"BetterFolders": { "enabled": false }, # "BetterFolders": { "enabled": false },
"BetterGifAltText": { "enabled": false }, # "BetterGifAltText": { "enabled": false },
"BetterGifPicker": { "enabled": false }, # "BetterGifPicker": { "enabled": false },
"BetterNotesBox": { "enabled": false }, # "BetterNotesBox": { "enabled": false },
"BetterRoleDot": { "enabled": false }, # "BetterRoleDot": { "enabled": false },
"BetterUploadButton": { "enabled": false }, # "BetterUploadButton": { "enabled": false },
"BiggerStreamPreview": { "enabled": false }, # "BiggerStreamPreview": { "enabled": false },
"BlurNSFW": { "enabled": false }, # "BlurNSFW": { "enabled": false },
"CallTimer": { "enabled": false }, # "CallTimer": { "enabled": false },
"ClearURLs": { "enabled": false }, # "ClearURLs": { "enabled": false },
"ClientTheme": { "enabled": false }, # "ClientTheme": { "enabled": false },
"ColorSighted": { "enabled": false }, # "ColorSighted": { "enabled": false },
"ConsoleShortcuts": { "enabled": false }, # "ConsoleShortcuts": { "enabled": false },
"CopyUserURLs": { "enabled": false }, # "CopyUserURLs": { "enabled": false },
"CrashHandler": { "enabled": true }, # "CrashHandler": { "enabled": true },
"CustomRPC": { "enabled": false }, # "CustomRPC": { "enabled": false },
"Dearrow": { "enabled": false }, # "Dearrow": { "enabled": false },
"Decor": { "enabled": false }, # "Decor": { "enabled": false },
"DisableCallIdle": { "enabled": false }, # "DisableCallIdle": { "enabled": false },
"EmoteCloner": { "enabled": false }, # "EmoteCloner": { "enabled": false },
"Experiments": { "enabled": false }, # "Experiments": { "enabled": false },
"F8Break": { "enabled": false }, # "F8Break": { "enabled": false },
"FakeNitro": { "enabled": false }, # "FakeNitro": { "enabled": false },
"FakeProfileThemes": { "enabled": true }, # "FakeProfileThemes": { "enabled": true },
"FavoriteEmojiFirst": { "enabled": false }, # "FavoriteEmojiFirst": { "enabled": false },
"FavoriteGifSearch": { "enabled": false }, # "FavoriteGifSearch": { "enabled": false },
"FixCodeblockGap": { "enabled": false }, # "FixCodeblockGap": { "enabled": false },
"FixSpotifyEmbeds": { "enabled": false }, # "FixSpotifyEmbeds": { "enabled": false },
"FixYoutubeEmbeds": { "enabled": false }, # "FixYoutubeEmbeds": { "enabled": false },
"ForceOwnerCrown": { "enabled": false }, # "ForceOwnerCrown": { "enabled": false },
"FriendInvites": { "enabled": false }, # "FriendInvites": { "enabled": false },
"GameActivityToggle": { "enabled": false }, # "GameActivityToggle": { "enabled": false },
"GifPaste": { "enabled": false }, # "GifPaste": { "enabled": false },
"GreetStickerPicker": { "enabled": false }, # "GreetStickerPicker": { "enabled": false },
"HideAttachments": { "enabled": false }, # "HideAttachments": { "enabled": false },
"iLoveSpam": { "enabled": false }, # "iLoveSpam": { "enabled": false },
"IgnoreActivities": { "enabled": false }, # "IgnoreActivities": { "enabled": false },
"ImageZoom": { "enabled": false }, # "ImageZoom": { "enabled": false },
"InvisibleChat": { "enabled": false }, # "InvisibleChat": { "enabled": false },
"KeepCurrentChannel": { "enabled": false }, # "KeepCurrentChannel": { "enabled": false },
"LastFMRichPresence": { "enabled": false }, # "LastFMRichPresence": { "enabled": false },
"LoadingQuotes": { "enabled": false }, # "LoadingQuotes": { "enabled": false },
"MemberCount": { "enabled": false }, # "MemberCount": { "enabled": false },
"MessageClickActions": { "enabled": false }, # "MessageClickActions": { "enabled": false },
"MessageLinkEmbeds": { "enabled": false }, # "MessageLinkEmbeds": { "enabled": false },
"MessageLogger": { "enabled": false }, # "MessageLogger": { "enabled": false },
"MessageTags": { "enabled": false }, # "MessageTags": { "enabled": false },
"MoreCommands": { "enabled": false }, # "MoreCommands": { "enabled": false },
"MoreKaomoji": { "enabled": false }, # "MoreKaomoji": { "enabled": false },
"MoreUserTags": { "enabled": false }, # "MoreUserTags": { "enabled": false },
"Moyai": { "enabled": false }, # "Moyai": { "enabled": false },
"MutualGroupDMs": { "enabled": false }, # "MutualGroupDMs": { "enabled": false },
"NewGuildSettings": { "enabled": false }, # "NewGuildSettings": { "enabled": false },
"NoBlockedMessages": { "enabled": false }, # "NoBlockedMessages": { "enabled": false },
"NoDevtoolsWarning": { "enabled": false }, # "NoDevtoolsWarning": { "enabled": false },
"NoF1": { "enabled": false }, # "NoF1": { "enabled": false },
"NoMosaic": { "enabled": false }, # "NoMosaic": { "enabled": false },
"NoPendingCount": { "enabled": false }, # "NoPendingCount": { "enabled": false },
"NoProfileThemes": { "enabled": false }, # "NoProfileThemes": { "enabled": false },
"NoReplyMention": { "enabled": false }, # "NoReplyMention": { "enabled": false },
"NoScreensharePreview": { "enabled": false }, # "NoScreensharePreview": { "enabled": false },
"NoTypingAnimation": { "enabled": false }, # "NoTypingAnimation": { "enabled": false },
"NoUnblockToJump": { "enabled": false }, # "NoUnblockToJump": { "enabled": false },
"NormalizeMessageLinks": { "enabled": false }, # "NormalizeMessageLinks": { "enabled": false },
"NotificationVolume": { "enabled": false }, # "NotificationVolume": { "enabled": false },
"NSFWGateBypass": { "enabled": false }, # "NSFWGateBypass": { "enabled": false },
"OnePingPerDM": { "enabled": false }, # "OnePingPerDM": { "enabled": false },
"oneko": { "enabled": false }, # "oneko": { "enabled": false },
"OpenInApp": { "enabled": false }, # "OpenInApp": { "enabled": false },
"Party mode 🎉": { "enabled": false }, # "Party mode 🎉": { "enabled": false },
"PermissionFreeWill": { "enabled": false }, # "PermissionFreeWill": { "enabled": false },
"PermissionsViewer": { "enabled": false }, # "PermissionsViewer": { "enabled": false },
"petpet": { "enabled": false }, # "petpet": { "enabled": false },
"PictureInPicture": { "enabled": false }, # "PictureInPicture": { "enabled": false },
"PinDMs": { "enabled": false }, # "PinDMs": { "enabled": false },
"PlainFolderIcon": { "enabled": false }, # "PlainFolderIcon": { "enabled": false },
"PlatformIndicators": { "enabled": false }, # "PlatformIndicators": { "enabled": false },
"PreviewMessage": { "enabled": false }, # "PreviewMessage": { "enabled": false },
"PronounDB": { "enabled": false }, # "PronounDB": { "enabled": false },
"QuickMention": { "enabled": false }, # "QuickMention": { "enabled": false },
"QuickReply": { "enabled": false }, # "QuickReply": { "enabled": false },
"ReactErrorDecoder": { "enabled": false }, # "ReactErrorDecoder": { "enabled": false },
"ReadAllNotificationsButton": { "enabled": false }, # "ReadAllNotificationsButton": { "enabled": false },
"RelationshipNotifier": { "enabled": false }, # "RelationshipNotifier": { "enabled": false },
"RevealAllSpoilers": { "enabled": false }, # "RevealAllSpoilers": { "enabled": false },
"ReverseImageSearch": { "enabled": false }, # "ReverseImageSearch": { "enabled": false },
"ReviewDB": { "enabled": false }, # "ReviewDB": { "enabled": false },
"RoleColorEverywhere": { "enabled": true }, # "RoleColorEverywhere": { "enabled": true },
"SearchReply": { "enabled": false }, # "SearchReply": { "enabled": false },
"SecretRingToneEnabler": { "enabled": false }, # "SecretRingToneEnabler": { "enabled": false },
"SendTimestamps": { "enabled": false }, # "SendTimestamps": { "enabled": false },
"ServerListIndicators": { "enabled": false }, # "ServerListIndicators": { "enabled": false },
"ServerProfile": { "enabled": false }, # "ServerProfile": { "enabled": false },
"ShikiCodeblocks": { "enabled": false }, # "ShikiCodeblocks": { "enabled": false },
"ShowAllMessageButtons": { "enabled": false }, # "ShowAllMessageButtons": { "enabled": false },
"ShowConnections": { "enabled": false }, # "ShowConnections": { "enabled": false },
"ShowHiddenChannels": { "enabled": false }, # "ShowHiddenChannels": { "enabled": false },
"ShowMeYourName": { "enabled": false }, # "ShowMeYourName": { "enabled": false },
"ShowTimeouts": { "enabled": false }, # "ShowTimeouts": { "enabled": false },
"SilentMessageToggle": { "enabled": false }, # "SilentMessageToggle": { "enabled": false },
"SilentTyping": { "enabled": false }, # "SilentTyping": { "enabled": false },
"SortFriendRequests": { "enabled": false }, # "SortFriendRequests": { "enabled": false },
"SpotifyControls": { "enabled": false }, # "SpotifyControls": { "enabled": false },
"SpotifyCrack": { "enabled": false }, # "SpotifyCrack": { "enabled": false },
"SpotifyShareCommands": { "enabled": false }, # "SpotifyShareCommands": { "enabled": false },
"StartupTimings": { "enabled": false }, # "StartupTimings": { "enabled": false },
"SuperReactionTweaks": { "enabled": false }, # "SuperReactionTweaks": { "enabled": false },
"TextReplace": { "enabled": false }, # "TextReplace": { "enabled": false },
"ThemeAttributes": { "enabled": false }, # "ThemeAttributes": { "enabled": false },
"TimeBarAllActivities": { "enabled": false }, # "TimeBarAllActivities": { "enabled": false },
"Translate": { "enabled": false }, # "Translate": { "enabled": false },
"TypingIndicator": { "enabled": false }, # "TypingIndicator": { "enabled": false },
"TypingTweaks": { "enabled": false }, # "TypingTweaks": { "enabled": false },
"Unindent": { "enabled": false }, # "Unindent": { "enabled": false },
"UnsuppressEmbeds": { "enabled": false }, # "UnsuppressEmbeds": { "enabled": false },
"UrbanDictionary": { "enabled": false }, # "UrbanDictionary": { "enabled": false },
"UserVoiceShow": { "enabled": false }, # "UserVoiceShow": { "enabled": false },
"USRBG": { "enabled": false }, # "USRBG": { "enabled": false },
"ValidUser": { "enabled": false }, # "ValidUser": { "enabled": false },
"VoiceChatDoubleClick": { "enabled": false }, # "VoiceChatDoubleClick": { "enabled": false },
"VcNarrator": { "enabled": false }, # "VcNarrator": { "enabled": false },
"VencordToolbox": { "enabled": false }, # "VencordToolbox": { "enabled": false },
"ViewIcons": { "enabled": false }, # "ViewIcons": { "enabled": false },
"ViewRaw": { "enabled": false }, # "ViewRaw": { "enabled": false },
"VoiceMessages": { "enabled": false }, # "VoiceMessages": { "enabled": false },
"WebContextMenus": { # "WebContextMenus": {
"enabled": true, # "enabled": true,
"addBack": true }, # "addBack": true },
"WebKeybinds": { "enabled": true }, # "WebKeybinds": { "enabled": true },
"WhoReacted": { "enabled": false }, # "WhoReacted": { "enabled": false },
"Wikisearch": { "enabled": false }, # "Wikisearch": { "enabled": false },
"XSOverlay": { "enabled": false } # "XSOverlay": { "enabled": false }
}, # },
"notifications": { # "notifications": {
"timeout": 5000, # "timeout": 5000,
"position": "bottom-right", # "position": "bottom-right",
"useNative": "not-focused", # "useNative": "not-focused",
"logLimit": 50 # "logLimit": 50
}, # },
"cloud": { # "cloud": {
"authenticated": false, # "authenticated": false,
"url": "https://api.vencord.dev/", # "url": "https://api.vencord.dev/",
"settingsSync": false, # "settingsSync": false,
"settingsSyncVersion": ${settingsSyncVersion} # "settingsSyncVersion": ${settingsSyncVersion}
} # }
} # }
''; # '';
}; };
} }

View File

@@ -1,102 +1,12 @@
{ pkgs, lib, host, user, rice, secrets, ... }: { pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
lib.mkIf (host != "NxACE")
{
home.packages = with pkgs; [
thunderbird
];
programs.thunderbird = let
inherit (lib.generators) toJSON;
extensions = toJSON {} {
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
};
in {
enable = true;
profiles = {
"${user}" = {
isDefault = true;
settings = with rice.color; {
"calendar.alarms.showmissed" = false;
"calendar.alarms.playsound" = false;
"calendar.alarms.show" = false;
"extensions.webextensions.uuids" = extensions;
"mail.startup.enabledMailCheckOnce" = true;
"mailnews.mark_message_read.delay" = true;
"mailnews.mark_message_read.delay.interval" = 3;
"mailnews.tags.$label1.color" = red.base;
"mailnews.tags.$label1.tag" = "Important";
"mailnews.tags.$label2.color" = yellow.base;
"mailnews.tags.$label2.tag" = "Work";
"mailnews.tags.$label3.color" = green.base;
"mailnews.tags.$label3.tag" = "Personal";
"mailnews.tags.$label4.color" = cyan.base;
"mailnews.tags.$label4.tag" = "To Do";
"mailnews.tags.$label5.color" = blue.base;
"mailnews.tags.$label5.tag" = "Later";
"mailnews.headers.showMessageId" = true;
"mailnews.headers.showOrganization" = true;
"mailnews.headers.showReferences" = true;
"mailnews.headers.showSender" = true;
"mailnews.headers.showUserAgent" = true;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
userChrome = with rice.color; /* css */ ''
body,
#navigation-toolbox,
#calendarContent,
#calSidebar,
#tabpanelcontainer,
#spacesToolbar,
#tabs-toolbar,
#calMinimonth,
#primaryButtonSidePanel *,
.minimonth-week,
.multiday-header-corner, .day-column-heading, calendar-header-container, calendar-event-column, .multiday-hour-box,
#view-box,
#tabs-toolbar,
#status-bar,
.calview-toggle,
#calview-toggle-item,
#folderPaneHeaderBar,
#folderPane,
#threadPaneHeaderBar,
#threadTree,
#tabs-toolbar {
color: ${foreground} !important;
font-family: ${rice.font.base.name} !important;
background-color: transparent !important;
background-image: none !important;
border: none !important;
-moz-appearance: none !important;
}
.minimonth-nav-section {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
border: ${builtins.toString rice.border-width}px solid ${border};
}
.button,
.button-primary,
.tab-content[selected] {
background-color: ${accent.base};
color: ${background};
background-image: none;
}
html {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
}
'';
};
};
};
accounts.email.accounts = let accounts.email.accounts = let
OAuth2Settings = id: { OAuth2Settings = id: {
"mail.smtpserver.smtp_${id}.authMethod" = 10; "mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.server.server_${id}.authMethod" = 10; "mail.server.server_${id}.authMethod" = 10;
}; };
in { in {
gmail-online = { gmail-online-accounts = {
address = secrets.email.gmail-online.mail; address = secrets.email.gmail-online-accounts.mail;
realName = "Lennart J. Kurzweg"; realName = "Lennart J. Kurzweg";
flavor = "gmail.com"; flavor = "gmail.com";
primary = true; primary = true;
@@ -117,8 +27,8 @@ lib.mkIf (host != "NxACE")
}; };
}; };
gmail-business = { gmail-ljk = {
address = secrets.email.gmail-business.mail; address = secrets.email.gmail-ljk.mail;
realName = "Lennart J. Kurzweg"; realName = "Lennart J. Kurzweg";
flavor = "gmail.com"; flavor = "gmail.com";
signature = { signature = {
@@ -136,38 +46,24 @@ lib.mkIf (host != "NxACE")
settings = OAuth2Settings; settings = OAuth2Settings;
}; };
}; };
# pnx-nix = {
hsmw = with secrets.email.hsmw; { # address = secrets.email.pnx.mail;
address = "${un}@hs-mittweida.de"; # realName = "Lennart J. Kurzweg";
userName = "${un}@hs-mittweida.de"; # flavor = "outlook.office365.com";
realName = "Lennart J. Kurzweg"; # signature = {
imap = { # text = ''
port = 993; # Phönix Metallbau GmbH
host = "xc.hs-mittweida.de"; # Tel: 036374 2270
}; # '';
smtp = { # showSignature = "append";
port = 587; # };
host = "xc.hs-mittweida.de"; # thunderbird = mkIf config.thunderbird.enable {
tls.useStartTls = true; # enable = true;
}; # profiles = [ "nx2" ];
signature = { # # The id given as argument is an automatically generated account identifier.
text = '' # # settings = OAuth2Settings;
MatNr: ${mnr} # };
SemGr: ${semgr} # };
About Me: https://nx2.site/about-me
Contact: https://nx2.site/contact
GPG: https://nx2.site/gpg
'';
showSignature = "append";
};
thunderbird = {
enable = true;
profiles = [ "nx2" ];
settings = id: {
"mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
};
};
};
tuda = with secrets.email.tuda; { tuda = with secrets.email.tuda; {
address = "${un}@stud.tu-darmstadt.de"; address = "${un}@stud.tu-darmstadt.de";
userName = tuid; userName = tuid;
@@ -195,13 +91,73 @@ lib.mkIf (host != "NxACE")
thunderbird = { thunderbird = {
enable = true; enable = true;
profiles = [ "nx2" ]; profiles = [ "nx2" ];
settings = id: { settings = id: { };
"mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
}; };
}; };
nx2site = {
address = "lennart@${hyper.domain}";
userName = "lennart@${hyper.domain}";
realName = "Lennart J. Kurzweg";
imap = {
port = 993;
host = "ssh.${hyper.domain}";
tls.enable = true;
};
smtp = {
port = 465;
host = "mail-eu.smtp2go.com";
tls.enable = true;
# port = 587;
# host = "mail.${hyper.domain}";
# tls.useStartTls = true;
};
signature = {
text = ''
About Me: https://nx2.site/about-me
Contact: https://nx2.site/contact
GPG: https://nx2.site/gpg
'';
showSignature = "append";
};
thunderbird = {
enable = true;
profiles = [ "nx2" ];
};
}; };
}; };
} }
# hsmw = with secrets.email.hsmw; {
# address = "${un}@hs-mittweida.de";
# userName = "${un}@hs-mittweida.de";
# realName = "Lennart J. Kurzweg";
# imap = {
# port = 993;
# host = "xc.hs-mittweida.de";
# };
# smtp = {
# port = 587;
# host = "xc.hs-mittweida.de";
# tls.useStartTls = true;
# };
# signature = {
# text = ''
# MatNr: ${mnr}
# SemGr: ${semgr}
# About Me: https://nx2.site/about-me
# Contact: https://nx2.site/contact
# GPG: https://nx2.site/gpg
# '';
# showSignature = "append";
# };
# thunderbird = {
# enable = true;
# profiles = [ "nx2" ];
# settings = id: {
# "mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
# };
# };
# };

12
home-modules/figlet.nix Normal file
View File

@@ -0,0 +1,12 @@
{ pkgs, hyper, ... }:
{
home = {
packages = with pkgs; [
figlet
(pkgs.writeShellScriptBin "nxfgl" ''
figlet -f ${hyper.home}/.local/share/figlet/nx2.flf -w 9999
'')
];
file.".local/share/figlet/nx2.flf".text = builtins.readFile ./assets/nx2.flf;
};
}

View File

@@ -1,258 +1,16 @@
# { pkgs-unstable, secrets, user, system, inputs, ...}: { pkgs, ... }@all: with all; {
{ rice, user, ... }: programs.firefox.profiles."{hyper.user}".settings = {
# browser.tabs.allow_transparent_browser "widget.use-xdg-desktop-portal.file-picker" = 1;
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/ };
{ home = {
home.file = with rice.color; let packages = with pkgs; [
blur = builtins.toString 20; firefox
in { ];
".mozilla/firefox/${user}/chrome/userChrome.css".text = /* css */ '' file = {
:root{ ".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
/* Popup panels */ ".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice;
--arrowpanel-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; };
--arrowpanel-border-color : ${border} !important;
--arrowpanel-color : ${secondary.base} !important;
--arrowpanel-dimmed : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important;
--arrowpanel-dimmed-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.6) !important;
--arrowpanel-dimmed-even-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.8) !important;
/* Autocomplete */
--autocomplete-popup-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--autocomplete-popup-color : ${foreground} !important;
--autocomplete-popup-highlight-background: ${accent.base} !important;
--autocomplete-popup-highlight-color : ${foreground} !important;
/* Toolbar background */
--toolbar-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important;
--toolbar-non-lwt-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--toolbar-non-lwt-bgimage : none !important;
--toolbar-color : ${foreground} !important;
/* Tabs */
--tab-selected-bgcolor : ${accent.base} !important;
--tabs-border-color : ${border} !important;
--tab-line-color : ${accent.base} !important;
--tab-loader-size : 16px !important;
/* Sidebar */
--lwt-sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--lwt-sidebar-text-color : ${foreground} !important;
--sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--sidebar-text-color : ${foreground} !important;
--sidebar-border-color : ${border} !important;
/* URL bar */
--urlbar-popup-url-color : ${foreground} !important;
--urlbar-popup-action-color : ${secondary.base} !important;
--toolbar-field-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--toolbar-field-focus-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--toolbar-field-color : ${accent.base} !important;
--toolbar-field-focus-color : ${foreground} !important;
--toolbar-field-focus-border-color : ${accent.base} !important;
/* Buttons */
--toolbarbutton-icon-fill : ${foreground} !important;
--toolbarbutton-hover-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.2) !important;
--toolbarbutton-active-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.4) !important;
/* Notification and panel */
--panel-disabled-color : rgba(${rice.lib.hex-to-rgb-comma-string foreground},0.3) !important;
--panel-separator-color : ${border} !important;
/* New tab page */
--newtab-background-color : ${background} !important;
--newtab-background-color-secondary : ${background} !important;
--newtab-text-primary-color : ${foreground} !important;
--newtab-text-secondary-color : ${secondary.base} !important;
--newtab-search-icon-color : ${accent.base} !important;
--tabpanel-background-color : transparent !important;
background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
}
.tabbrowser-tab[selected="true"] {
color: ${background} !important;
}
#appcontent {
background: transparent !important;
}
#navigator-toolbox {
--tabs-border-color: transparent !important;
}
#toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box {
background-color: transparent !important;
-moz-appearance: none !important;
background-image: none !important;
}
window, #nav-bar{
background-color: transparent !important;
-moz-appearance: none !important;
background-image: none !important;
}
'';
".mozilla/firefox/${user}/chrome/userContent.css".text = /* css */ ''
/* Removes the white loading page */
/* url(about:newtab), url(about:home) */
@-moz-document url(about:blank) {
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
background: ${background} !important;
}
}
/* Sets up minimal incognito scrollbar */
@-moz-document url(about:privatebrowsing) {
:root{
scrollbar-width: thin !important;
scrollbar-color: rgb(161, 161, 161) transparent !important;
}
}
/* new-tab */
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
:root{
--newtab-background-color-secondary: ${background} !important;
}
body, html {
background: transparent !important;
}
.tile, .search-handoff-button {
border: ${builtins.toString rice.border-width}px solid ${border} !important;
}
}
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
}
body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree{
background-color: transparent !important;
}
}
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
}
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
background-color: transparent !important;
}
}
@-moz-document domain(google.com) {
.sfbg {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
}
body, html, div#search > * {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
.g, .appbar {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
div#rso {
* {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
}
div#cnt > div {
}
}
@media (prefers-color-scheme: dark) {
:root .theme-system {
--color-bg: transtparent !important;
--color-text: ${rice.color.foreground}
}
}
@-moz-document domain(developer.mozilla.org) {
html, body {
background-color: transparent !important;
}
.top-navigation, .article-actions-container {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(github.com) {
body, html, header, #repository-container-header, .bgColor-muted, section {
background-color: transparent !important;
}
}
@-moz-document domain(mynixos.com) {
body, html {
background-color: transparent !important;
}
header, footer {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(moodle.informatik.tu-darmstadt.de) {
body, html , .main-inner, .main-inner * {
background-color: transparent !important;
}
.bg-primary {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.5) !important!
}
}
@-moz-document url-prefix("https://nx2.site/") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: black;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
background-color: transparent !important;
}
.modal-open, .modal-header, form.modal-content, .modal-footer {
background-color: rgba(0,0,0,0.8) !important;
backdrop-filter: blur(5px);
}
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
background-color: rgba(0,0,0,0.8) !important;
border-radius: 10px !important;
border: ${toString rice.border-width}px solid ${border} !important;
}
}
@-moz-document domain(chatgpt.com) {
body, html , .bg-token-sidebar-surface-primary {
background-color: transparent !important;
}
.bg-token-main-surface-primary {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px) !important;
border-radius: ${builtins.toString rice.rounding}px !important;
}
}
'';
}; };
} }
# browser.tabs.allow_transparent_browser
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/

View File

@@ -0,0 +1,19 @@
{ pkgs, ... }@all: with all;
# browser.tabs.allow_transparent_browser
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
{
programs.firefox.profiles."{hyper.user}".settings = {
"widget.use-xdg-desktop-portal.file-picker" = 1;
};
home = {
packages = with pkgs; [
firefox
];
file = with rice.color; let
blur = builtins.toString 20;
f = rice.lib.hex-to-rgb-comma-string;
in {
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice; };
};
}

View File

@@ -0,0 +1,107 @@
rice: with rice.color; let
f = rice.lib.hex-to-rgb-comma-string;
# blur = builtins.toString 20;
in /* css */ ''
:root{
/* Popup panels */
--arrowpanel-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--arrowpanel-border-color : ${border} !important;
--arrowpanel-color : ${secondary.base} !important;
--arrowpanel-dimmed : rgba(${f background},0.4) !important;
--arrowpanel-dimmed-further : rgba(${f background},0.6) !important;
--arrowpanel-dimmed-even-further : rgba(${f background},0.8) !important;
/* Autocomplete */
--autocomplete-popup-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--autocomplete-popup-color : ${foreground} !important;
--autocomplete-popup-highlight-background: ${accent.base} !important;
--autocomplete-popup-highlight-color : ${foreground} !important;
/* Toolbar background */
--toolbar-bgcolor : transparent !important;
--toolbar-non-lwt-bgcolor : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--toolbar-non-lwt-bgimage : none !important;
--toolbar-color : ${foreground} !important;
/* Tabs */
--tab-selected-bgcolor : ${accent.base} !important;
--tabs-border-color : ${border} !important;
--tab-line-color : ${accent.base} !important;
--tab-loader-size : 16px !important;
/* Sidebar */
--lwt-sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--lwt-sidebar-text-color : ${foreground} !important;
--sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--sidebar-text-color : ${foreground} !important;
--sidebar-border-color : ${border} !important;
/* URL bar */
--urlbar-popup-url-color : ${foreground} !important;
--urlbar-popup-action-color : ${secondary.base} !important;
--toolbar-field-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--toolbar-field-focus-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--toolbar-field-color : ${accent.base} !important;
--toolbar-field-focus-color : ${foreground} !important;
--toolbar-field-focus-border-color : ${accent.base} !important;
/* Buttons */
--toolbarbutton-icon-fill : ${foreground} !important;
--toolbarbutton-hover-background : rgba(${f accent.base}, 0.2) !important;
--toolbarbutton-active-background : rgba(${f accent.base}, 0.4) !important;
/* Notification and panel */
--panel-disabled-color : rgba(${f foreground},0.3) !important;
--panel-separator-color : ${border} !important;
/* New tab page */
--newtab-background-color : transparent !important;
--newtab-background-color-secondary : ${secondary.dark} !important;
--newtab-text-primary-color : ${foreground} !important;
--newtab-text-secondary-color : ${secondary.base} !important;
--newtab-search-icon-color : ${accent.base} !important;
--newtab-background-card : ${accent.dark} !important;
--tabpanel-background-color : transparent !important;
background : transparent !important;
}
body {
background-color: unset !important;
background-color: transparent !important;
background-image: linear-gradient(0deg,rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 100%) !important;
background-size: 100% 150% !important;
background-position: 0% 0% !important;
will-change: background-position;
transition: background-position 300ms !important;
&:-moz-window-inactive {
background-position: 0% 50% !important;
background-color: transparent !important;
}
}
.tabbrowser-tab[selected="true"], .tab-text[selected=""],
.tab-close-button[selected=""] {
color: ${background} !important;
}
hbox#browser {
backround-color: transparent: !important;
}
#appcontent {
background: transparent !important;
}
#navigator-toolbox {
--tabs-border-color: transparent !important;
}
#toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box {
background-color: transparent !important;
-moz-appearance: none !important;
background-image: none !important;
}
window, #nav-bar{
background-color: transparent !important;
-moz-appearance: none !important;
background-image: none !important;
}
''

View File

@@ -0,0 +1,271 @@
rice: with rice.color; let
f = rice.lib.hex-to-rgb-comma-string;
blur = builtins.toString 20;
in /* css */ ''
/* Removes the white loading page */
/* url(about:newtab), url(about:home) */
@-moz-document url(about:blank) {
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
background: transparent !important;
}
}
/* Sets up minimal incognito scrollbar */
@-moz-document url(about:privatebrowsing) {
:root{
scrollbar-width: thin !important;
scrollbar-color: rgb(161, 161, 161) transparent !important;
}
}
/* new-tab */
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
:root {
--newtab-background-color-secondary: rgba(${f background},0.5) !important;
}
body, html {
background: transparent !important;
}
.tile, .search-handoff-button {
border: ${builtins.toString rice.border-width}px solid ${border} !important;
}
}
@-moz-document url-prefix("https://n.nx2.site/") {
:root, [data-theme-dark] {
--color-main-background: #00000055;
--color-main-background-rgb: 0,0,0;
--color-primary-element-light: #550000;
}
.app-navigation, .app-content {
background: rgba(0,0,0,0.8) !important;
backdrop-filter: blur(5px) !important;
}
.files-list__row-head, .files-list__tfoot {
background: rgba(0,0,0,0.5) !important;
}
.fc-day-today {
background: #ff000055 !important;
}
.files-list__thead {
background: transparent !important;
}
}
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${f background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
}
body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree, #flex-left-nav-container {
background-color: transparent !important;
}
#search-dropdown-results-container {
background: rgba(${f background},0.8) !important;
}
#main-content {
background-color: rgba(${f background},0.5)!important;
}
}
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
}
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
background-color: transparent !important;
}
}
@-moz-document domain(google.com) {
.sfbg {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
}
body, html, div#search > * {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
.g, .appbar {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
div#rso {
* {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
}
div#cnt > div {
}
}
@-moz-document domain(gemini.google.com) {
input-container, input-container::before {
background: transparent !important;
}
bard-sidenav {
background: rgba(${rice.lib.hex-to-rgb-comma-string background},0.5) !important;
}
}
@media (prefers-color-scheme: dark) {
:root .theme-system {
--color-bg: transtparent !important;
--color-text: ${rice.color.foreground}
}
}
@-moz-document domain(developer.mozilla.org) {
html, body {
background-color: transparent !important;
}
.top-navigation, .article-actions-container {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(github.com) {
body, html, header, #repository-container-header, .bgColor-muted, section {
background-color: transparent !important;
}
}
@-moz-document domain(youtube.com) {
body, html, div#content, ytd-app, #frosted-glass.with-chipbar.ytd-app, ytd-shorts[is-dark] #cinematic-shorts-scrim.ytd-shorts {
background-color: transparent !important;
}
#background.ytd-masthead, div#background {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(100px);
}
* {
--yt-spec-base-background: transparent;
--yt-spec-raised-background: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--yt-spec-menu-background: rgba(${rice.lib.hex-to-rgb-comma-string accent.dark}, ${builtins.toString rice.transparency}) !important;
--yt-spec-inverted-background: rgba(${rice.lib.hex-to-rgb-comma-string secondary.dark}, ${builtins.toString rice.transparency}) !important;
}
}
@-moz-document domain(mynixos.com) {
body, html {
background-color: transparent !important;
}
header, footer {
background-color: rgba(0,0,0,0.5) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(notebooklm.google.com) {
body, html, notebook, omnibar {
background-color: transparent !important;
}
header, footer, .studio-panel, .chat-panel, .source-panel {
background-color: rgba(0,0,0,0.5) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(moodle.informatik.tu-darmstadt.de) {
body, html , .main-inner, .main-inner * {
background-color: transparent !important;
}
.bg-primary {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5) !important;
}
}
@-moz-document domain(wikipedia.org) {
body, html, div.mw-page-container, .vector-header, .mw-header {
background-color: transparent !important;
}
:root {
--color-base: ${foreground} !important;
--color-base--hover: ${accent.bright} !important;
--color-emphasized: ${accent.base} !important;
--color-progressive: ${accent.base} !important;
--color-progressive--hover: ${accent.brighter} !important;
--color-progressive--active: ${secondary.bright} !important;
--color-destructive: ${negative.base} !important;
--color-destructive--hover: ${negative.brighter} !important;
--color-destructive--active: ${negative.bright} !important;
--color-visited: ${secondary.base} !important;
--color-visited--hover: ${secondary.brighter} !important;
--color-visited--active: ${secondary.bright} !important;
--color-error: ${negative.base} !important;
--color-error--hover: ${negative.bright} !important;
--color-error--active: ${negative.bright} !important;
--color-warning: ${weird.base} !important;
--color-success: ${positive.base} !important;
--color-notice: ${special.base} !important;
--color-content-added: ${positive.base} !important;
--color-content-removed: ${negative.base} !important;
--color-base--subtle: ${accent.dark} !important;
--box-shadow-color-base: ${black.base} !important;
--background-color-base: transparent !important;
--background-color-neutral: transparent !important;
--background-color-neutral-subtle: transparent !important;
--background-color-interactive: ${accent.darker} !important;
--background-color-interactive--hover: ${accent.dark} !important;
--background-color-interactive--active: ${secondary.dark} !important;
--background-color-interactive-subtle: ${subtle.darker} !important;
--background-color-interactive-subtle--hover: ${subtle.dark} !important;
--background-color-interactive-subtle--active: ${subtle.base} !important;
--border-color-base: ${border} !important;
--border-color-emphasized: ${border2} !important;
--border-color-subtle: ${subtle.base} !important;
--border-color-muted: ${subtle.dark} !important;
}
}
@-moz-document url-prefix("https://nx2.site/") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: black;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
background-color: transparent !important;
}
.modal-open, .modal-header, form.modal-content, .modal-footer {
background-color: rgba(0,0,0,0.8) !important;
backdrop-filter: blur(5px);
}
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
background-color: rgba(0,0,0,0.8) !important;
border-radius: 10px !important;
border: ${toString rice.border-width}px solid ${border} !important;
}
}
''
# @-moz-document domain(chatgpt.com) {
# body, html , .bg-token-sidebar-surface-primary {
# background-color: transparent !important;
# }
# .bg-token-main-surface-primary {
# background-color: rgba(0,0,0,1) !important;
# backdrop-filter: blur(100px) !important;
# border-radius: ${builtins.toString rice.rounding}px !important;
# }
# }

View File

@@ -1,10 +1,9 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
fish
any-nix-shell any-nix-shell
(writeShellScriptBin "nxfetch" '' (writeShellScriptBin "nxfetch" /* bash */ ''
logo=$(echo -e " logo=$(echo -e "
OS OS
@@ -17,18 +16,20 @@
TFM TFM
PROMPT PROMPT
" | lolcat --force) " | lolcat --force 2> /dev/null)
release_line=$(cat /etc/*-release 2> /dev/null || echo 'PRETTY_NAME="[No Release]"')
msg=" msg="
$(echo -e "$logo" | sed -n 3p): $(cat /etc/*-release | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev) $(echo -e "$logo" | sed -n 3p): $(echo "$release_line" | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev)
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^} $(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
$(echo -e "$logo" | sed -n 5p): ''${TERM^} $(echo -e "$logo" | sed -n 5p): ''${TERM^}
$(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g') $(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g')
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/') $(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\&/')
$(echo -e "$logo" | sed -n 8p): ''$(uname -r) $(echo -e "$logo" | sed -n 8p): ''$(uname -r | sed -E 's=(.+-.+-.+-.+)-.+=\1=g')
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/') $(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | awk '{print toupper(substr($0,1,1)) substr($0,2)}')
$(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g') $(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/') $(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | awk '{print toupper(substr($0,1,1)) substr($0,2)}')
" "
echo -e "$msg" echo -e "$msg"
'') '')
@@ -38,14 +39,18 @@
programs.fish = { programs.fish = {
enable = true; enable = true;
shellAliases = { package = pkgs.fish;
ls = "eza --icons --git --smart-group --group-directories-first"; shellAliases = let
ll = "eza --icons --git --smart-group --group-directories-first --long"; base-eza = "eza --icons --git --smart-group --group-directories-first";
la = "eza --icons --git --smart-group --group-directories-first --all"; in {
lla = "eza --icons --git --smart-group --group-directories-first --all --long"; ls = "${base-eza}";
lt = "eza --icons --git --smart-group --group-directories-first --long --tree"; ll = "${base-eza} --long";
ltd = "eza --icons --git --smart-group --group-directories-first --long --tree -D"; lg = "${base-eza} --group --long";
lt2 = "eza --icons --git --smart-group --group-directories-first --long --tree -L 2"; la = "${base-eza} --all";
lla = "${base-eza} --all --long";
lt = "${base-eza} --long --tree";
ltd = "${base-eza} --long --tree -D";
lt2 = "${base-eza} --long --tree -L 2";
sr = "sudo reboot"; sr = "sudo reboot";
nf = "neofetch"; nf = "neofetch";
nxf = "nxfetch"; nxf = "nxfetch";
@@ -77,9 +82,12 @@
gsw = "git switch"; gsw = "git switch";
gft = "git fetch"; gft = "git fetch";
ns = "nix-shell"; ns = "nix-shell";
nd = "nix develop -c fish";
lzd = "lazydocker"; lzd = "lazydocker";
d = "docker"; d = "docker";
dcmp = "docker compose"; dcmp = "docker compose";
stui = "sudo systemctl-tui";
wlc = "wl-copy";
# nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}''; # nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}'';
# ya = "yazi"; # function # ya = "yazi"; # function
@@ -88,9 +96,11 @@
interactiveShellInit = /* fish */ '' interactiveShellInit = /* fish */ ''
set -g fish_greeting set -g fish_greeting
if not set -q IN_NIX_SHELL if not set -q IN_NIX_SHELL
if set -q SESSION_FROM_DE if set -q SESSION_FROM_DE; or set -q SESSION_CLONED_FROM_YAZI
set -e SESSION_FROM_DE
set -e SESSION_CLONED_FROM_YAZI
set tmp (mktemp -t "yazi-cwd.XXXXX") set tmp (mktemp -t "yazi-cwd.XXXXX")
yazi --cwd-file="$tmp" yazi --cwd-file="$tmp" ~
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ] if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
builtin cd -- "$cwd" builtin cd -- "$cwd"
end end
@@ -104,6 +114,23 @@
mkdir $argv mkdir $argv
cd $argv cd $argv
''; '';
nx_backup = let
destination = if hyper.host == "NxNORTH" then "${hyper.home}/shared/" else "${hyper.home}/backups/";
in pkgs.lib.mkIf (hyper.isPersonal) /* fish */ ''
set RPATH (curl -s https://${hyper.domain}/latest-backup)
rsync -avz --info=progress2 -e "ssh -p ${builtins.toString secrets.ssh.port}" ${hyper.user}@ssh.${hyper.domain}:"$RPATH" ${destination}
'';
nx_yazi_into_fish = /* fish */ ''
set tmp (mktemp -t "yazi-cwd.XXXXX")
echo "$PWD" > "$tmp"
yazi --cwd-file="$tmp"
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
builtin cd -- "$cwd"
end
rm -f "$tmp"
set -g SESSION_CLONED_FROM_YAZI TRUE
'';
# gpg = ''; # gpg = '';
# set bold \e[1m # set bold \e[1m
# set green \e[32m # set green \e[32m

View File

@@ -1,18 +1,19 @@
{ pkgs-unstable, pkgs, lib, host, ... }: { pkgs, ... }@all: with all; {
lib.mkIf (host == "NxNORTH" || host == "NxACE")
{
home = { home = {
packages = (with pkgs-unstable; [ packages = (with pkgs; [
protonup unstable.protonup-ng
mangohud unstable.mangohud
]) ++ (if hyper.host == "NxNORTH" then (with pkgs; [
unstable.prismlauncher
heroic
# mindustry-wayland
]) else if hyper.host == "NxXPS" then (with pkgs; [
heroic
]) else if hyper.host == "NxACE" then (with pkgs; [
heroic
]) else []);
# heroic sessionVariables.STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
mindustry-wayland
]) ++ [ pkgs.heroic ];
sessionVariables = {
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
};
}; };
} }

View File

@@ -1,5 +1,5 @@
{ pkgs, lib, host, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host == "NxXPS") lib.mkIf (hyper.host == "NxXPS")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
libinput-gestures libinput-gestures

View File

@@ -1,54 +1,49 @@
{ config, rice, inputs, system, ... }: { pkgs, ... }@all: with all;
{ {
home = { programs.ghostty = {
packages = [ inputs.ghostty.packages.${system}.default ]; enable = true;
file."${config.xdg.configHome}/ghostty/config".text = with rice.color; /* ini */ '' package = pkgs.ghostty;
font-family="${rice.font.code.name}" settings = with rice.color; {
clipboard-read=allow background = background;
# clipboard-write=allow window-padding-color = "extend";
# clipboard-read=deny background-opacity = builtins.toString rice.transparency;
# clipboard-write=deny clipboard-paste-protection = false;
clipboard-trim-trailing-spaces=true clipboard-read = "allow";
clipboard-paste-protection=false clipboard-trim-trailing-spaces = true;
confirm-close-surface = false;
window-decoration=false cursor-color = special.bright;
confirm-close-surface=false cursor-opacity = 0.8;
font-family = "${rice.font.code.name}";
window-padding-x=5 foreground = foreground;
window-padding-y=5 keybind = [
"ctrl+comma=reload_config"
keybind=ctrl+comma=reload_config "ctrl+equal=increase_font_size:1"
keybind=ctrl+equal=increase_font_size:1 "ctrl+minus=decrease_font_size:1"
keybind=ctrl+minus=decrease_font_size:1 "ctrl+shift+v=paste_from_clipboard"
keybind=ctrl+shift+v=paste_from_clipboard ];
palette = with rice; [
background=${background} "0=${black.base}"
foreground=${foreground} "8=${black.bright}"
"1=${red.base}"
background-opacity=${builtins.toString rice.transparency} "9=${red.bright}"
"2=${green.base}"
cursor-color=${special.bright} "10=${green.bright}"
cursor-opacity=0.8 "3=${yellow.base}"
"11=${yellow.bright}"
palette=0=${black.base} "4=${blue.base}"
palette=8=${black.bright} "12=${blue.bright}"
palette=1=${red.base} "5=${magenta.base}"
palette=9=${red.bright} "13=${magenta.bright}"
palette=2=${green.base} "6=${cyan.base}"
palette=10=${green.bright} "14=${cyan.bright}"
palette=3=${yellow.base} "7=${white.base}"
palette=11=${yellow.bright} "15=${white.bright}"
palette=4=${blue.base} ];
palette=12=${blue.bright} selection-background = accent.base;
palette=5=${magenta.base} selection-foreground = background;
palette=13=${magenta.bright} window-decoration = false;
palette=6=${cyan.base} window-padding-x = 5;
palette=14=${cyan.bright} window-padding-y = 5;
palette=7=${white.base} };
palette=15=${white.bright}
selection-background=${accent.base}
selection-foreground=${background}
'';
}; };
} }

View File

@@ -1,9 +1,6 @@
{ pkgs, lib, host, ... }: { pkgs, ... }@all: with all; {
{
home.packages = with pkgs; [ home.packages = with pkgs; [
(gimp-with-plugins.override { gimp
plugins = with gimpPlugins; [ bimp ];
})
]; ];
} }

View File

@@ -1,44 +1,31 @@
{ pkgs, rice, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
git
delta delta
(pkgs.writeShellScriptBin "git_monitor" ''
#!/bin/bash
# List of directories to check
directories=(
"$HOME/nix-dots"
"$HOME/obsidian-vault"
"$HOME/Pictures/wallpapers"
)
echo ""
for dir in "''${directories[@]}"; do
if [ -d "$dir" ]; then
cd "$dir" || { echo "Cannot change directory to $dir"; exit 1; }
echo "$(echo $dir | rev | cut -f 1 -d'/' | rev):"
if [[ $* == *--fetch* ]]; then
git fetch
fi
gst
echo ""
cd - > /dev/null || { echo "Cannot change back to the original directory"; exit 1; }
else
echo "Directory $dir does not exist."
fi
done
'')
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)") (writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
]; ];
programs.git = { programs = {
git = {
enable = true; enable = true;
userName = ''Lennart J. Kurzweg (Nx2)''; package = pkgs.gitFull;
userEmail = "git@nx2.site"; settings = {
user = {
Name = ''Lennart J. Kurzweg (Nx2)'';
Email = "git@${hyper.domain}";
};
credential = {
"https://git.da.dicos.de".username = lib.mkIf (hyper.host == "NxDCS") "lkurzweg";
"https://git.da.dicos.de".password = lib.mkIf (hyper.host == "NxDCS") "Test";
};
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host == "NxDCS") "https://git.da.dicos.de/";
url."ssh://git@github.com/".insteadOf = "https://github.com/";
pull.rebase = false; # true
};
};
delta = { delta = {
enable = true; enable = true;
enableGitIntegration = true;
options = { options = {
line-numbers = true; line-numbers = true;
side-by-side = false; side-by-side = false;
@@ -46,9 +33,9 @@
whitespace-error-style = "22 reverse"; whitespace-error-style = "22 reverse";
}; };
}; };
}; lazygit = {
programs.lazygit = {
enable = true; enable = true;
package = pkgs.lazygit;
settings = { settings = {
windowSize = "normal"; windowSize = "normal";
gui.theme = with rice.color; { gui.theme = with rice.color; {
@@ -69,4 +56,5 @@
}; };
}; };
}; };
};
} }

View File

@@ -1,18 +1,41 @@
{ pkgs, pkgs-unstable, ... }: { pkgs, ... }@all: with all; {
{ home.packages = with pkgs; [
# there also is a system module # pinentry-all
home.packages = (with pkgs; [ # pinentry-curses
gnupg pinentry-gtk2
gpg-tui # pinentry-tty
]) ++ ( with pkgs-unstable; [ ];
pinentry-all programs.gpg = {
]); enable = true;
package = pkgs.gnupg;
# services.pcscd.enable = true; homedir = "${hyper.home}/vault/gnupg";
settings = {
armor = true;
cert-digest-algo = "SHA512";
charset = "utf-8";
default-preference-list = "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
keyid-format = "0xlong";
list-options = "show-uid-validity";
no-comments = true;
no-emit-version = true;
no-greeting = true;
no-symkey-cache = true;
personal-cipher-preferences = "AES256 AES192 AES";
personal-compress-preferences = "ZLIB BZIP2 ZIP Uncompressed";
personal-digest-preferences = "SHA512 SHA384 SHA256";
pinentry-mode = "loopback";
require-cross-certification = true;
s2k-cipher-algo = "AES256";
s2k-digest-algo = "SHA512";
use-agent = true;
verify-options = "show-uid-validity";
with-fingerprint = true;
};
};
services.gpg-agent = let services.gpg-agent = let
min2sec = min: (min * 60); min2sec = min: (min * 60);
in { in {
enable = true; enable = false;
verbose = true; verbose = true;
sshKeys = [ sshKeys = [
"97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey "97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey
@@ -21,48 +44,8 @@
enableFishIntegration = true; enableFishIntegration = true;
defaultCacheTtlSsh = min2sec 60; defaultCacheTtlSsh = min2sec 60;
defaultCacheTtl = min2sec 30; defaultCacheTtl = min2sec 30;
# pinentryPackage = pkgs.pinentry-curses; extraConfig = ''
}; allow-loopback-pinentry
home.file.".gnupg/gpg.conf".text = ''
# Use AES256, 192, or 128 as cipher
personal-cipher-preferences AES256 AES192 AES
# Use SHA512, 384, or 256 as digest
personal-digest-preferences SHA512 SHA384 SHA256
# Use ZLIB, BZIP2, ZIP, or no compression
personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed
# Default preferences for new keys
default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
# SHA512 as digest to sign keys
cert-digest-algo SHA512
# SHA512 as digest for symmetric ops
s2k-digest-algo SHA512
# AES256 as cipher for symmetric ops
s2k-cipher-algo AES256
# UTF-8 support for compatibility
charset utf-8
# No comments in messages
no-comments
# No version in output
no-emit-version
# Disable banner
no-greeting
# Long key id format
keyid-format 0xlong
# Display UID validity
list-options show-uid-validity
verify-options show-uid-validity
# Display all keys and their fingerprints
with-fingerprint
# Display key origins and updates
#with-key-origin
# Cross-certify subkeys are present and valid
require-cross-certification
# Disable caching of passphrase for symmetrical ops
no-symkey-cache
# Output ASCII instead of binary
armor
# Enable smartcard
# use-agent
''; '';
};
} }

View File

@@ -1,4 +1,4 @@
{ config, pkgs, rice, ... }: { pkgs, ... }@all: with all;
let let
# theme-name = "Colloid-Pink-Dark-Compact"; # theme-name = "Colloid-Pink-Dark-Compact";
# theme-package = pkgs.colloid-gtk-theme.override { # theme-package = pkgs.colloid-gtk-theme.override {

View File

@@ -1,5 +1,4 @@
{ pkgs, pkgs-unstable, lib, rice, ... }: { pkgs, ... }@all: with all; {
{
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
# nixfmt-classic # nix formater # nixfmt-classic # nix formater
@@ -7,20 +6,15 @@
# nixd # specified in nixd.nix # nixd # specified in nixd.nix
gopls gopls
delve delve
python311Packages.python-lsp-server
jdt-language-server jdt-language-server
ruff
ruff-lsp
pyright
lldb # debugger for llvm stuff lldb # debugger for llvm stuff
yaml-language-server # yaml yaml-language-server # yaml
marksman # markdown marksman # markdown
vale-ls # style-checker lsp (needs vale) vale-ls # style-checker lsp (needs vale)
ltex-ls # Ltex (language tool) ltex-ls # Ltex (language tool)
] ++ (with pkgs-unstable; [ vscode-langservers-extracted
bash-language-server bash-language-server
helix ];
]);
sessionVariables = { sessionVariables = {
EDITOR = "hx"; EDITOR = "hx";
VISUAL = "hx"; VISUAL = "hx";
@@ -29,7 +23,7 @@
programs.helix = { programs.helix = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
package = pkgs-unstable.helix; package = pkgs.unstable.helix;
settings = { settings = {
# theme = "base16_terminal"; # theme = "base16_terminal";
theme = "base16"; theme = "base16";
@@ -52,7 +46,7 @@
preview-completion-insert = true; preview-completion-insert = true;
completion-trigger-len = 1; completion-trigger-len = 1;
auto-info = true; auto-info = true;
true-color = false; # is detected automatically if set to false true-color = true; # is detected automatically if set to false
undercurl = false; # is detected automatically if set to false undercurl = false; # is detected automatically if set to false
rulers = []; rulers = [];
bufferline = "always"; bufferline = "always";
@@ -104,7 +98,6 @@
cursor-shape = { cursor-shape = {
normal = "block"; normal = "block";
insert = "bar"; insert = "bar";
select = "underline";
}; };
file-picker = { file-picker = {
hidden = false; # Enables ignoring hidden files hidden = false; # Enables ignoring hidden files
@@ -183,19 +176,20 @@
}; };
smart-tab = { smart-tab = {
enable = false; enable = false;
supersend-menu = false; supersede-menu = false;
};
inline-diagnostics = {
cursor-line = "warning";
other-lines = "disable";
prefix-len = 1;
# max-wrap = set above
max-diagnostics = 20;
}; };
# inline-diagnostics = {
# cursor-line = "hint";
# other-lines = "disable";
# prefix-len = 1;
# # max-wrap = set above
# max-diagnostics = 20;
# };
}; };
keys = { keys = {
normal = { normal = {
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ]; "C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
"C-m" = [ ":pipe nxfgl" "toggle_comments" ];
"A-`" = [ "no_op" ]; "A-`" = [ "no_op" ];
"`" = [ "no_op" ]; "`" = [ "no_op" ];
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; }; "ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
@@ -209,22 +203,41 @@
language = [ language = [
{ {
name = "nix"; name = "nix";
language-servers = [ language-servers = [ "nixd" ];
"nixd"
# "llm"
];
} }
{ {
name = "latex"; name = "latex";
language-servers = [ "texlab" "language-tool" ]; language-servers = [ "texlab" "language-tool" ];
} }
{
name = "typst";
language-servers = [ "tinymist" ];
# language-servers = [ "language-tool" "tinymist" ];
}
{
name = "typst-with-language-tool";
scope = "";
language-servers = [ "language-tool" "tinymist" ];
injection-regex = "";
file-types = [""];
comment-tokens = "//";
indent = { tab-width = 2; unit = " "; };
}
{ {
name = "markdown"; name = "markdown";
# language-servers = [ "marksman" "style-check" "language-tool" ]; language-servers = [ "marksman" ];
language-servers = [ "language-tool" "marksman" ];
file-types = [ "md" "MD" ]; file-types = [ "md" "MD" ];
scope = "text.<name>"; scope = "text.<name>";
} }
{
name = "markdown-with-language-tool";
language-servers = [ "language-tool" "marksman" ];
scope = "text.<name>";
injection-regex = "";
file-types = [""];
# blcok-comment-tokens = { start = "<!--"; end = "-->"; };
indent = { tab-width = 2; unit = " "; };
}
{ {
name = "python"; name = "python";
language-servers = [ "pyright" "ruff" ]; language-servers = [ "pyright" "ruff" ];
@@ -303,160 +316,165 @@
base16 = with rice.color; { base16 = with rice.color; {
"attributes" = foreground; "attributes" = foreground;
"comment" = { "comment" = {
"fg" = black.bright; fg = subtle.base;
"modifiers" = [ "italic" ]; modifiers = [ "italic" ];
}; };
"constant" = accent.bright; "constant" = accent.bright;
"constant.character.escape" = special.bright; "constant.character.escape" = special.bright;
"constant.numeric" = foreground; "constant.numeric" = foreground;
"constructor" = weird.base; "constructor" = secondary.bright;
"debug" = yellow.base; "debug" = yellow.base;
"diagnostic.modifiers" = [ "underline" ]; "diff.delta" = subtle.bright;
"diff.delta" = blue.bright;
"diff.minus" = negative.bright; "diff.minus" = negative.bright;
"diff.plus" = positive.bright; "diff.plus" = positive.bright;
"error" = red.base; "error" = negative.base;
"function" = secondary.bright; "function" = secondary.bright;
"hint" = tertiary.bright; "hint" = tertiary.bright;
"info" = foreground; "info" = foreground;
"keyword" = special.base; "keyword" = {
fg = special.base;
modifiers = [ "bold" ];
};
"label" = foreground; "label" = foreground;
"namespace" = weird.bright; "namespace" = weird.bright;
"operator" = foreground; "operator" = foreground;
"special" = special.base; "special" = special.base;
"string" = secondary.bright; "string" = secondary.bright;
"type" = red.base; "type" = {
"variable" = accent.base; fg = tertiary.base;
"variableother.member" = foreground; };
"warning" = red.base; "variable" = { fg = accent.base; };
"variable.builtin" = { fg = accent.base; bg = subtle.darker; };
"variable.parameter" = { fg = accent.base; bg = accent.darker; };
"warning" = yellow.base;
"markup.heading" = accent.base; "markup.heading" = {
fg = accent.base;
bg = accent.darker;
modifiers = [ "bold" ];
};
"markup.bold" = { "markup.bold" = {
"fg" = tertiary.bright; fg = secondary.bright;
"modifiers" = [ "bold" ]; modifiers = [ "bold" ];
}; };
"italic" = { "italic" = {
"fg" = secondary.bright; fg = secondary.bright;
"modifiers" = [ "italic" ]; modifiers = [ "italic" ];
}; };
"markup.linktext" = accent.base; "markup.linktext" = accent.base;
"markup.linkurl" = { "markup.linkurl" = {
"fg" = tertiary.dark; fg = tertiary.dark;
"modifiers" = [ "underlined" ]; underline.style = "line";
}; };
"markup.list" = accent.bright; "markup.list" = accent.bright;
"markup.quote" = weird.bright; "markup.quote" = weird.bright;
"markup.raw" = special.bright; "markup.raw" = special.bright;
"markup.strikethrough" = { "markup.strikethrough".modifiers = [ "crossed_out" ];
"modifiers" = [ "crossed_out" ];
};
"diagnostic.hint" = { "diagnostic.hint".underline.style = "curl";
"underline" = { style = "curl"; }; "diagnostic.info".underline.style = "curl";
}; "diagnostic.warning".underline.style = "curl";
"diagnostic.info" = { "diagnostic.error".underline.style = "curl";
"underline" = { style = "curl"; };
};
"diagnostic.warning" = {
"underline" = { style = "curl"; };
};
"diagnostic.error" = {
"underline" = { style = "curl"; };
};
"ui.background" = { # general background of the editor window "ui.background" = { # general background of the editor window
# "bg" = background; # bg = background;
}; };
"ui.bufferline" = { # the top line ("tab"-line) "ui.bufferline" = { # the top line ("tab"-line)
"fg" = accent.base; fg = accent.base;
"bg" = black.base; bg = accent.darker;
}; };
"ui.bufferline.active" = { # the active "tab" "ui.bufferline.active" = { # the active "tab"
"fg" = background; fg = background;
"bg" = accent.base; bg = accent.base;
"modifiers" = [ "bold" ]; modifiers = [ "bold" ];
}; };
"ui.cursor" = { # the cursor in Normal mode "ui.cursor" = { # the cursor in Normal mode
"fg" = foreground; fg = foreground;
"modifiers" = [ "reversed" ]; modifiers = [ "reversed" ];
}; };
"ui.cursorline.primary" = { # the line on which the cursor is on "ui.cursorline.primary" = { # the line on which the cursor is on
"bg" = black.base; bg = secondary.darker;
}; };
"ui.cursor.match" = { # Matching bracket etc. "ui.cursor.match" = { # Matching bracket etc.
"bg" = green.dark; bg = special.dark;
"modifiers" = [ ]; modifiers = [ ];
}; };
"ui.gutter" = { "ui.gutter" = {
"bg" = black.base; bg = accent.darker;
}; };
"ui.help" = { "ui.help" = {
"fg" = green.base; fg = accent.base;
"bg" = black.base; bg = accent.darker;
}; };
"ui.linenr" = { "ui.linenr" = {
"fg" = white.dark; fg = accent.bright;
"bg" = black.base; bg = accent.darker;
}; };
"ui.linenr.selected" = { "ui.linenr.selected" = {
"fg" = accent.bright; fg = accent.bright;
"modifiers" = [ "bold" ]; modifiers = [ "bold" ];
}; };
"ui.menu" = { "ui.menu" = {
"fg" = accent.base; fg = accent.base;
"bg" = black.base; bg = accent.darker;
}; };
"ui.menu.scroll" = { "ui.menu.scroll" = {
"fg" = yellow.dark; fg = subtle.base;
"bg" = background; bg = background;
}; };
"ui.menu.selected" = { "ui.menu.selected" = {
"fg" = red.base; fg = secondary.bright;
"bg" = blue.dark; bg = secondary.darker;
}; };
"ui.popup" = { "ui.popup" = {
"bg" = black.base; bg = accent.darker;
}; };
"ui.selection" = { "ui.selection" = {
"bg" = white.dark; bg = accent.dark;
}; };
"ui.selection.primary" = { "ui.selection.primary" = {
"bg" = black.bright; bg = accent.dark;
}; };
"ui.statusline" = { "ui.statusline" = {
"fg" = blue.bright; fg = accent.bright;
"bg" = black.base; bg = accent.darker;
}; };
"ui.statusline.inactive" = { "ui.statusline.inactive" = {
"fg" = red.bright; fg = secondary.bright;
"bg" = red.dark; bg = secondary.dark;
}; };
"ui.statusline.insert" = { "ui.statusline.insert" = {
"fg" = green.bright; fg = green.bright;
"bg" = green.dark; bg = green.dark;
}; };
"ui.statusline.normal" = { "ui.statusline.normal" = {
"fg" = yellow.bright; fg = yellow.bright;
"bg" = yellow.dark; bg = yellow.dark;
}; };
"ui.statusline.select" = { "ui.statusline.select" = {
"fg" = cyan.bright; fg = cyan.bright;
"bg" = cyan.dark; bg = cyan.dark;
}; };
"ui.text" = foreground; "ui.text" = foreground;
"ui.text.focus" = accent.base; "ui.text.focus" = accent.base;
"ui.virtual.indent-guide" = { "ui.virtual.indent-guide" = {
"fg" = black.bright; fg = subtle.dark;
}; };
"ui.virtual.inlay-hint" = { "ui.virtual.inlay-hint" = {
"fg" = weird.dark; fg = subtle.base;
"bg" = weird.base; bg = subtle.dark;
}; };
"ui.virtual.ruler" = { "ui.virtual.ruler" = {
"bg" = background; bg = background;
};
"ui.virtual.jump-label" = {
fg = special.base;
bg = special.dark;
underline.style = "dotted";
modifiers = [ "bold" ];
}; };
"ui.window" = { "ui.window" = {
"bg" = black.base; bg = accent.darker;
}; };
}; };
}; };

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home = { home = {
packages = with pkgs; [ hyprland-autoname-workspaces ]; packages = with pkgs; [ hyprland-autoname-workspaces ];
@@ -10,6 +10,7 @@
"blueman-manager" = "󰂯" "blueman-manager" = "󰂯"
"chatterino" = "" "chatterino" = ""
"Chromium" = "" "Chromium" = ""
"chromium-browser" = ""
"code" = "󰨞" "code" = "󰨞"
"code-oss" = "󰨞" "code-oss" = "󰨞"
"codium" = "󰨞" "codium" = "󰨞"
@@ -22,7 +23,8 @@
".*.exe" = "" ".*.exe" = ""
"firefox" = "󰈹" "firefox" = "󰈹"
"galaxyclient.exe" = "󰮡" "galaxyclient.exe" = "󰮡"
"Gimp-.*" = "" "\\.?[gG]imp-.*" = ""
"F?imv.*" = "󰋩"
"KiCad" = "" "KiCad" = ""
"kitty" = "" "kitty" = ""
"libreoffice-calc" = "" "libreoffice-calc" = ""
@@ -32,6 +34,7 @@
"obsidian" = "󰠮" "obsidian" = "󰠮"
"org.inkscape.Inkscape" = "󰕙" "org.inkscape.Inkscape" = "󰕙"
"org.remmina.Remmina" = "󰢹" "org.remmina.Remmina" = "󰢹"
"org.prismlauncher.*" = "󰍳"
"pavucontrol" = "󰕾" "pavucontrol" = "󰕾"
"pcbnew" = "" "pcbnew" = ""
"Signal" = "󱅵" "Signal" = "󱅵"
@@ -39,7 +42,7 @@
"Spotify" = "" "Spotify" = ""
"steam" = "󰓓" "steam" = "󰓓"
"thunar" = "" "thunar" = ""
"thunderbird" = "" "thunderbird" = ""
"Tor Browser" = "󰾔" "Tor Browser" = "󰾔"
"vesktop" = "󰙯" "vesktop" = "󰙯"
"virt-manager" = "" "virt-manager" = ""

View File

@@ -1,92 +1,77 @@
{config, pkgs, pkgs-unstable, inputs, host, user, nvidia, rice, lib, ... }: { pkgs, ... }@all: with all; let
let
animation-speed = "5"; animation-speed = "5";
transparency = builtins.toString rice.transparency; transparency = builtins.toString rice.transparency;
terminal = "ghostty"; terminal = "ghostty";
terminal-exec = "ghostty --command="; terminal-exec = "ghostty --command=";
monitors = { monitors = {
xps = { xps = {
main = { # def
name = "eDP-1"; # main = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; };
resolution = "1920x1200"; # second = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; };
position = "0x1080"; # third = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; };
scale = "1.0";
}; # Home
second = { main = { name = "eDP-1"; resolution = "1920x1200"; position = "0x1080"; scale = "1.0"; };
name = "DP-1"; second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
resolution = "1920x1080"; third = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
position = "0x0";
scale = "1.0"; # Presentation
}; # main = { name = "eDP-1"; resolution = "1920x1080"; position = "1920x1080"; scale = "1.0"; };
# second = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
# third = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
# thunderbolt docking
# main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1200"; scale = "1.0"; };
# second = { name = "DP-5"; resolution = "1920x1200"; position = "1920x0"; scale = "1.0"; };
# third = { name = "DP-4"; resolution = "1920x1200"; position = "0x0"; scale = "1.0"; };
# second = { name = "DP-6"; resolution = "1920x1200"; position = "0x0"; scale = "1.0"; };
# third = { name = "DP-7"; resolution = "1920x1200"; position = "1920x0"; scale = "1.0"; };
}; };
north = { north = {
main = { main = { name = "desc:Iiyama North America PL3270Q na"; resolution = "2560x1440"; position = "1920x0"; scale = "1.0"; };
name = "DP-4"; left = { name = "desc:Philips Consumer Electronics Company 273PLPH AU11423002132"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
resolution = "2560x1440"; # right = { name = "HDMI-A-2"; resolution = "1920x1080"; position = "4480x360"; scale = "1.0"; };
position = "1920x150";
scale = "1.0";
};
left = {
name = "HDMI-A-2";
resolution = "1920x1080";
position = "0x0";
scale = "1.0";
};
# right = {
# name = "HDMI-A-2";
# resolution = "1920x1080";
# position = "4480x360";
# scale = "1.0";
# };
};
ace = {
main = {
name = "HDMI-A-1";
resolution = "3840x2160";
position = "0x0";
scale = "2.0";
};
}; };
ace.main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; };
}; };
in { in {
home.packages = (with pkgs; [ home.packages = with pkgs; [
# hyprland itself is a system package grim
hyprcursor
hypridle
hyprland-protocols hyprland-protocols
hyprlock hyprlock
hypridle
hyprpicker hyprpicker
hyprcursor hyprshade
hyprshot
grim
slurp slurp
# xdg-desktop-portal-hyprland
# ]) ++ (with pkgs-unstable; [ ];
]) ++ (with inputs; [
hyprswitch.packages.x86_64-linux.default
]);
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
# package = pkgs-unstable.hyprland; # package = pkgs.hyprland;
package = pkgs.hyprland; package = inputs.hyprland.packages.${hyper.system}.hyprland;
# package = inputs.hyprland.packages.${pkgs.system}.hyprland; # package = config.programs.hyprland.package;
xwayland.enable = true; xwayland.enable = true;
systemd.enable = true; systemd.enable = true;
plugins = [ plugins = let s = pkgs.stdenv.hostPlatform.system; in [
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo # inputs.hyprland-plugins.packages.${s}.hyprexpo
# inputs.hyprfocus.packages.${pkgs.system}.hyprfocus # inputs.hyprfocus.packages.${s}.hyprfocus
# inputs.hycov.packages.${pkgs.system}.hycov # inputs.hycov.packages.${s}.hycov
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace # inputs.hyprspace.packages.${s}.Hyprspace
# inputs.hyprtasking.packages.${s}.hyprtasking
# inputs.hyprland-easymotion.packages.${s}.hyprland-easymotion
]; ];
settings = { settings = {
monitor = monitor =
if host == "NxXPS" then (with monitors.xps; [ if hyper.host == "NxXPS" then (with monitors.xps; [
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}" "${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
"${second.name}, ${second.resolution}, ${second.position}, ${second.scale}" "${second.name}, ${second.resolution}, ${second.position}, ${second.scale}"
]) else (if host == "NxNORTH" then (with monitors.north; [ "${third.name}, ${third.resolution}, ${third.position}, ${third.scale}"
]) else (if hyper.host == "NxNORTH" then (with monitors.north; [
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}" "${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
"${left.name}, ${left.resolution}, ${left.position}, ${left.scale}" "${left.name}, ${left.resolution}, ${left.position}, ${left.scale}"
# "${right.name}, ${right.resolution}, ${right.position}, ${right.scale}" # "${right.name}, ${right.resolution}, ${right.position}, ${right.scale}"
@@ -95,10 +80,10 @@ in {
])); ]));
workspace = let workspace = let
d1 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name); d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
d2 = if host == "NxXPS" then monitors.xps.second.name else (if host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name); d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name); d3 = if hyper.host == "NxXPS" then monitors.xps.third.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
# d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name); # d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false"; compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
in [ in [
"11, monitor:${d1}, default:true" "11, monitor:${d1}, default:true"
@@ -121,8 +106,8 @@ in {
"27, monitor:${d2}" "27, monitor:${d2}"
"28, monitor:${d2}" "28, monitor:${d2}"
"29, monitor:${d2}" "29, monitor:${d2}"
"20, monitor:${d2}" "20, monitor:${d2}, ${compact}"
"31, monitor:${d3}, default:${let x = if host == "NxNORTH" then "true" else "false"; in x}" "31, monitor:${d3}, default:${let x = if hyper.host == "NxNORTH" then "true" else "false"; in x}, ${compact}"
"32, monitor:${d3}" "32, monitor:${d3}"
"33, monitor:${d3}" "33, monitor:${d3}"
"34, monitor:${d3}" "34, monitor:${d3}"
@@ -143,7 +128,7 @@ in {
# }; # };
env = if nvidia.enable == true then [ env = if hyper.nvidia.enable == true then [
"LIBVA_DRIVER_NAME,nvidia" "LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland" "XDG_SESSION_TYPE,wayland"
"GBM_BACKEND,nvidia-drm" "GBM_BACKEND,nvidia-drm"
@@ -194,10 +179,12 @@ in {
dim_strength = "0.2"; dim_strength = "0.2";
dim_around = "0.8"; dim_around = "0.8";
# screen_shader = "/home/nx2/.config/hypr/shaders/e.glsl";
blur = { blur = {
enabled = true; enabled = true;
size = "3"; size = "2";
passes = "2"; passes = "4";
xray = false; xray = false;
vibrancy = 0.5; vibrancy = 0.5;
ignore_opacity = true; ignore_opacity = true;
@@ -206,10 +193,11 @@ in {
animations = { animations = {
enabled = true; enabled = true;
# bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o
# bezier = "myBezier, 0.83, 0, 0.17, 1"; # io # bezier = "myBezier, 0.83, 0, 0.17, 1"; # io
bezier = "myBezier, 0.33, 1, 0.68, 1"; # bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
animation = let direction = if host == "NxXPS" then "slide" else "slidevert"; in [ # bezier = "myBezier, 0.33, 1, 0.68, 1";
animation = let direction = if hyper.host == "NxXPS" then "slide" else "slidevert"; in [
"windows, 1, ${animation-speed}, myBezier, slide" "windows, 1, ${animation-speed}, myBezier, slide"
"border, 1, ${animation-speed}, myBezier" "border, 1, ${animation-speed}, myBezier"
"fade, 1, ${animation-speed}, myBezier" "fade, 1, ${animation-speed}, myBezier"
@@ -218,10 +206,10 @@ in {
}; };
gestures = { gestures = {
workspace_swipe = true;
workspace_swipe_fingers = "4";
workspace_swipe_distance = "300"; workspace_swipe_distance = "300";
# workspace_swipe_touch = true;
workspace_swipe_invert = true; workspace_swipe_invert = true;
# workspace_swipe_touch_invert = true;
workspace_swipe_min_speed_to_force = "30"; workspace_swipe_min_speed_to_force = "30";
workspace_swipe_cancel_ratio = "0.5"; workspace_swipe_cancel_ratio = "0.5";
workspace_swipe_create_new = false; workspace_swipe_create_new = false;
@@ -231,6 +219,14 @@ in {
workspace_swipe_use_r = false; workspace_swipe_use_r = false;
}; };
gesture = [
"4, horizontal, workspace"
# "3, down, mod: ALT, close"
# "3, up, mod: SUPER, scale: 1.5, fullscreen"
# "3, left, scale: 1.5, float"
];
dwindle = { dwindle = {
preserve_split = true; # you probably want this preserve_split = true; # you probably want this
}; };
@@ -247,90 +243,85 @@ in {
exec-once = [ exec-once = [
"waybar" "waybar"
"swww-daemon" "swww-daemon"
"hyprland-autoname-workspaces" # "hyprland-autoname-workspaces"
"/usr/lib/polkit-kde-authentication-agent-1 " "/usr/lib/polkit-kde-authentication-agent-1 "
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"syncthing -no-browser" "syncthing -no-browser"
"mako"
"fcitx5" "fcitx5"
# "ibus engine xkb:de::deu" # "ibus engine xkb:de::deu"
"libinput-gestures" "libinput-gestures"
"systemctl --user start hyprpanel"
# "hyprswitch --daemon" # "hyprswitch --daemon"
]; ];
windowrulev2 = [
"bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
"noanim, class:^(presenter)$" # sent
"float, class:^(presenter)$" # sent
"noanim, class:^(imv)$"
"float, class:^(imv)$"
"fullscreen, class:^(imv)$"
# "float, initialTitle:^(Edit Item)$" # thunderbid calendar
# "dimaround on, initialTitle:^(Edit Item)$" # thunderbid calendar
"float,class:^(thunderbird)$"
# "float,class:^(thunderbird)$,title:^(.*)(Reminder)(.*)$"
# "float,class:^(thunderbird)$,title:^About(.*)$"
# "float,class:^(thunderbird)$,title:^(Check Spelling)$"
"center 1,class:^(gimp)$"
] ++ [
"bordersize 0, floating:0, onworkspace:w[tv1]"
"rounding 0, floating:0, onworkspace:w[tv1]"
"bordersize 0, floating:0, onworkspace:f[1]"
"rounding 0, floating:0, onworkspace:f[1]"
];
windowrule = [ windowrule = [
# "opacity ${transparency}, firefox" "border_color rgba(${rice.lib.nohash rice.color.special.bright}ff) rgba(${rice.lib.nohash rice.color.special.brighter}ff), match:pin 1"
"opacity ${transparency}, code-oss"
"opacity ${transparency}, VSCodium" "border_size 0, match:float 0, match:workspace w[tv1]"
"opacity ${transparency}, Code" "rounding 0, match:float 0, match:workspace w[tv1]"
# "opacity ${transparency}, sent" "border_size 0, match:float 0, match:workspace f[1]"
"opacity ${transparency}, neovide" "rounding 0, match:float 0, match:workspace f[1]"
"opacity ${transparency}, obsidian" ] ++ [
# "opacity ${transparency}, zathura" "center 1,match:class ^(gimp)$"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), ${terminal}" "float on, match:class ^(ibus-ui.*)$"
"opacity ${transparency}, discord" "float on, match:class ^(ibus-ui-gtk3)$"
"opacity ${transparency}, vesktop" "float on, match:class ^(imv)$"
"opacity ${transparency}, Element" "float on, match:class ^(org.kde.polkit-kde-authentication-agent-1)$"
"opacity ${transparency}, lutris" "float on, match:class ^(presenter)$" # sent
"opacity ${transparency}, element" "float on, match:class ^(thunderbird)$"
# "opacity ${transparency}, ^([sS]potify)$" "float on, match:title ^(Compact folders)$"
# "opacity ${transparency}, virt-manager" "float on, match:title ^(Ibus-ui.*)$"
# "opacity ${transparency}, thunar" "float on, match:title ^(Ibus-ui-gtk3)$"
"opacity ${transparency}, title:^(wlogout)$" "float on, match:title ^(Page Info .*)$"
"opaque, title:^(GNU Image Manipulation Program)$" "float on, match:title ^(Picture-in-Picture)$"
"float, title:^(Picture-in-Picture)$" "float on, match:title ^(wlogout)$"
"float, title:^(Ibus-ui.*)$"
"float, ^(ibus-ui.*)$" "fullscreen on, match:class ^(imv)$"
"float, ^(ibus-ui-gtk3)$" "fullscreen on, match:class ^(sent)$"
"float, title:^(Ibus-ui-gtk3)$" "fullscreen on, match:class ^(wlogout)$"
"pin, title:^(Picture-in-Picture)$"
"float, org.kde.polkit-kde-authentication-agent-1" "no_anim on, match:class ^(imv)$"
"float, title:^(wlogout)$" "no_anim on, match:class ^(presenter)$" # sent
"float, imv"
"float, title:^(Page Info .*)$" "opacity ${transparency}, match:class ^(Code)$"
"float, title:^(Compact folders)$" "opacity ${transparency}, match:class ^(code-oss)$"
"tile, sent" "opacity ${transparency}, match:class ^(discord)$"
"fullscreen, wlogout" # "opacity ${transparency}, match:class ^(vesktop)$"
"fullscreen, sent" # "opacity ${transparency}, match:class ^(Element)$"
"workspace 14, lutris" "opacity ${transparency}, match:class ^(lutris)$"
"workspace 100, title:^(Apex Legends)$" "opacity ${transparency}, match:class ^(neovide)$"
"workspace 100, ^(cyberpunk2077.exe)$" # "opacity ${transparency}, match:class ^(obsidian)$"
"workspace 100, title:^(No Man.s Sky)$" "opacity ${transparency}, match:class ^(VSCodium)$"
"workspace 100, gamescope" "opacity ${transparency}, match:title ^(wlogout)$"
"opaque on, match:title ^(GNU Image Manipulation Program)$"
"opaque on, match:fullscreen 1"
"pin on, match:title ^(Picture-in-Picture)$"
"tile on, match:class ^(sent)$"
"workspace 100, match:class ^(gamescope)$"
"float on, match:title ^(terminal-file-picker)$"
"dim_around on, match:title ^(terminal-file-picker)$"
"center on, match:title ^(terminal-file-picker)$"
"size 80% 80%, match:title ^(terminal-file-picker)$"
"float on, match:initial_title ^(Select Calendar)$"
"size 30% 30%, match:initial_title ^(Select Calendar)$"
]; ];
layerrule = [ layerrule = [
"blur,waybar" "blur on, match:namespace waybar"
"dimaround,rofi" "blur on, match:namespace bar-0" # hyprpanel
"blur,rofi" "blur on, match:namespace bar-1"
"xray,rofi" "blur on, match:namespace bar-2"
"blur on, match:namespace bar-3"
"blur on, match:namespace bar-4"
"blur on, match:namespace rofi"
"dim_around on, match:namespace rofi"
]; ];
@@ -344,18 +335,17 @@ in {
########################################################################### ###########################################################################
## ROW 0: ## ROW 0:
bind = [ bind = [
"SUPER SHIFT, Escape, exit, "
"SUPER, F1, workspace, 100" "SUPER, F1, workspace, 100"
"SUPER SHIFT, F1, movetoworkspace, 100" "SUPER SHIFT, F1, movetoworkspace, 100"
# "SUPER, F2," # "SUPER, F2,"
# "SUPER, F3, toggleopaque" # "SUPER, F3, toggleopaque"
# "SUPER, F4," "SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'NxCaldavEvent' 'Cleared saved event cache!' ''"
"SUPER, F5, exec, nx_gcal_event force-lookup" # "SUPER, F5, exec, nx_gcal_event force-lookup"
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate" # "SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
"SUPER, F6, exec, ${terminal-exec}'htop'" "SUPER, F6, exec, ${terminal-exec}'htop'"
"SUPER, F7, exec, ${terminal-exec}'nmtui'" "SUPER, F7, exec, ${terminal-exec}'nmtui'"
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2'' ''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
"SUPER, F9, execr, waybar_mode set '󰸉 '" "SUPER, F9, execr, submap_indicator set '󰸉 '"
"SUPER, F9, submap, color" "SUPER, F9, submap, color"
# "SUPER, F10, hyprload,update" # "SUPER, F10, hyprload,update"
"SUPER, F11, exec, waybar" "SUPER, F11, exec, waybar"
@@ -395,27 +385,29 @@ in {
########################################################################### ###########################################################################
## ROW 2: ## ROW 2:
#bind = SUPER, TAB, hycov:toggleoverview # "SUPER, TAB, hycov:toggleoverview"
# "SUPER, TAB, overview:toggle" # "SUPER, TAB, overview:toggle"
# "SUPER, TAB, hyprexpo:expo, toggle" # "SUPER, TAB, hyprexpo:expo, toggle"
# "SUPER, TAB, hyprtasking:killhovered"
# ", Escape, hyprtasking:if_active, hyprtasking:toggle cursor"
"ALT, TAB, focuscurrentorlast" "ALT, TAB, focuscurrentorlast"
# "SUPER, TAB, exec, hyprswitch --daemon" # "SUPER, TAB, exec, hyprswitch --daemon"
"SUPER, Q, killactive" "SUPER, Q, killactive"
"SUPER, W, exec, waybar_mode set '󰈹 '" "SUPER, W, exec, submap_indicator set '󰈹 '"
"SUPER, W, submap, browserSM " "SUPER, W, submap, browserSM "
"SUPER, E, exec, element-desktop" # "SUPER, E, exec, element-desktop"
"SUPER, R, exec, rofi -show drun" "SUPER, R, exec, rofi -show drun"
"SUPER SHIFT, R, exec, rofi -show drun"
# "SUPER, T, exec, alacritty" # "SUPER, T, exec, alacritty"
# "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace"" # "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace""
"SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}" "SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}"
"SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'" ''SUPER SHIFT, T, exec, ${terminal-exec}'echo -e "\\e]11;#${rice.color.secondary.darker}\\e\\\\" && ssh nxace' '' # yes this is a double hash.
"SUPER, Z, exec, waybar_mode set ' '" "SUPER, Z, exec, zathura"
"SUPER, Z, submap, tuda"
"SUPER, U, exec, [tile] thunderbird " "SUPER, U, exec, [tile] thunderbird "
"SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'" "SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
"SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'" "SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'"
"SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'" "SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'"
"SUPER, O, exec, obsidian " # "SUPER, O, exec, obsidian "
"SUPER, P, pin " "SUPER, P, pin "
# "SUPER, Ü," # "SUPER, Ü,"
# "SUPER, +," # "SUPER, +,"
@@ -425,12 +417,13 @@ in {
########################################################################### ###########################################################################
## ROW 3: ## ROW 3:
"SUPER, A, execr, waybar_mode set ' 󰹑 '" "SUPER, A, execr, submap_indicator set ' 󰹑 '"
"SUPER, A, submap, scrL" "SUPER, A, submap, scrL"
"SUPER, S, exec, spotify" "SUPER, S, exec, spotify"
"SUPER, D, exec, vesktop" "SUPER, D, exec, vesktop"
# "SUPER, D, exec, discord"
"SUPER, F, fullscreen" "SUPER, F, fullscreen"
# "SUPER, G," # "SUPER, G, action:hyprctl dispatch focuswindow address:{}"
"SUPER, H, movefocus, l" "SUPER, H, movefocus, l"
"SUPER, J, movefocus, d" "SUPER, J, movefocus, d"
"SUPER, K, movefocus, u" "SUPER, K, movefocus, u"
@@ -443,16 +436,18 @@ in {
## ROW 4: ## ROW 4:
# "SUPER, <, overview:toggle" # "SUPER, <, overview:toggle"
"SUPER, Y, execr, waybar_mode set '󰹑 '" "SUPER, Y, execr, submap_indicator set '󰹑 '"
"SUPER, Y, submap, scrR" "SUPER, Y, submap, scrR"
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3" "SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh " # "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
"SUPER, C, exec, chatterino" "SUPER, C, exec, chatterino"
"SUPER SHIFT, C, exec, hyprpicker -n -a" "SUPER SHIFT, C, exec, hyprpicker -n -a"
"SUPER, V, togglefloating, " "SUPER, V, togglefloating, "
"SUPER, B, exec, bitwarden" # "SUPER, B, exec, bitwarden"
"SUPER, N, togglesplit" "SUPER, N, layoutmsg, togglesplit"
# "SUPER, M, exec, /home/nx2/scripts/meme-full-screen/meme-full-screen.sh " # "SUPER, M, exec, /home/nx2/scripts/meme-full-screen/meme-full-screen.sh "
''SUPER, M, exec, sh -c "hyprshade on $(find ${hyper.home}/.config/hypr/shaders -type f | sed -E 's-.*shaders/(.+)\.glsl-\1-g' | rofi -dmenu)"''
"SUPER Shift, M, exec, hyprshade off"
# "SUPER, comma, exec, /home/nx2/scripts/change-language.sh" # "SUPER, comma, exec, /home/nx2/scripts/change-language.sh"
"SUPER, ., exec, echo key x:Prior | dotool" "SUPER, ., exec, echo key x:Prior | dotool"
"SUPER, -, exec, echo key x:Next | dotool" "SUPER, -, exec, echo key x:Next | dotool"
@@ -462,7 +457,7 @@ in {
# bindr = SUPER, Ctrl, exec, # ?? # bindr = SUPER, Ctrl, exec, # ??
# bindr = SUPERALT, Alt_L, exec, # bindr = SUPERALT, Alt_L, exec,
"SUPER, Space, cyclenext" # "SUPER, Space, cyclenext"
"SUPER SHIFT, Space, swapnext" "SUPER SHIFT, Space, swapnext"
# "SUPER, , " # "SUPER, , "
# "SUPER, , " # "SUPER, , "
@@ -482,7 +477,9 @@ in {
########################################################################### ###########################################################################
## MEGA KEYS: ## MEGA KEYS:
'' , Print, exec, grim -g "$(slurp)"'' ", Print, execr, submap_indicator set '󰄀 '"
", Print, submap, screenshot"
# "SUPER, Next, resizeactive, 5% 5%" # binde # "SUPER, Next, resizeactive, 5% 5%" # binde
# "SUPER, Prior, resizeactive, -5% -5%" # binde # "SUPER, Prior, resizeactive, -5% -5%" # binde
@@ -518,7 +515,97 @@ in {
# "SUPER, TAB, exec, hyprswitch --daemon --do-initial-execute" # "SUPER, TAB, exec, hyprswitch --daemon --do-initial-execute"
"SUPER, Next, resizeactive, 10% 10%" "SUPER, Next, resizeactive, 10% 10%"
"SUPER, Prior, resizeactive, -10% -10%" "SUPER, Prior, resizeactive, -10% -10%"
"SUPER ALT, j, resizeactive, 0% 7%"
"SUPER ALT, k, resizeactive, 0% -7%"
"SUPER ALT, l, resizeactive, 7% 0%"
"SUPER ALT, h, resizeactive, -7% 0%"
]; ];
plugin = {
overview = {
# panelHeight =
# panelBorderWidth =
onBottom = false; # whether if panel should be on bottom instead of top
# workspaceMargin = # spacing of workspaces with eachother and the edge of the panel
# reservedArea = # padding on top of the panel, for Macbook camera notch
workspaceBorderSize = rice.border-width; #
centerAligned = true; # whether if workspaces should be aligned at the center (KDE / macOS style) or at the left (Windows style)
hideBackgroundLayers = true; # do not draw background and bottom layers in overview
hideTopLayers = false; # do not draw top layers in overview
hideOverlayLayers = false; # do not draw overlay layers in overview
hideRealLayers = false; # whether to hide layers in actual workspace
drawActiveWorkspace = true; # draw the active workspace in overview as-is
overrideGaps = false; # whether if overview should override the layout gaps in the current workspace using the following values
# gapsIn = #
# gapsOut = #
affectStrut = false; # whether the panel should push window aside, disabling this option also
dots_center = true;
autoDrag = true; # mouse click always drags window when overview is open
autoScroll = true; # mouse scroll on active workspace area always switch workspace
exitOnClick = true; # mouse click without dragging exits overview
switchOnDrop = true; # switch to the workspace when a window is droppped into it
exitOnSwitch = true; # overview exits when overview is switched by clicking on workspace view or by switchOnDrop
showNewWorkspace = false; # add a new empty workspace at the end of workspaces view
showEmptyWorkspace = false; # show empty workspaces that are inbetween non-empty workspaces
showSpecialWorkspace = false; # defaults to false
disableGestures = true;
reverseSwipe = true; # reverses the direction of swipe gesture, for macOS peeps?
exitKey = true;
};
hypertasking = {
layout = "grid";
gap_size = 20;
bg_color = "0xff${rice.color.background}";
border_size = 4;
exit_on_hovered = false;
warp_on_move_window = 1;
close_overview_on_reload = true;
drag_button = "0x110"; # left mouse button
select_button = "0x111"; # right mouse button
# for other mouse buttons see <linux/input-event-codes.h>
gestures = {
enabled = true;
move_fingers = 3;
move_distance = 300;
open_fingers = 4;
open_distance = 300;
open_positive = true;
};
grid = {
rows = 3;
cols = 3;
loop = false;
layers = 2;
loop_layers = true;
gaps_use_aspect_ratio = false;
};
linear ={
top = false;
height = 400;
scroll_speed = 1.0;
blur = false;
};
};
easymotion = {
textsize = 15;
textcolor = "rgba(ffffffff)";
bgcolor = "rgba(000000ff)";
blur = 0;
blurA = 1.0;
xray = 0;
textfont = "Sans";
textpadding = 0;
bordersize = 0;
bordercolor = "rgba(ffffffff)";
rounding = 0;
fullscreen_action = "none";
motionkeys = "abcdefghijklmnopqrstuvwxyz1234567890";
motionlabels = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
only_special = "true";
};
};
}; };
@@ -531,18 +618,18 @@ in {
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y' # '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
extraConfig = let extraConfig = let
action_simple = { mods ? "", key, cmd }: '' action_simple = { mods ? "", key, cmd }: ''
bind=${mods},${key},execr,waybar_mode unset bind=${mods},${key},execr,submap_indicator unset
bind=${mods},${key},${cmd} bind=${mods},${key},${cmd}
bind=${mods},${key},submap,reset bind=${mods},${key},submap,reset
''; '';
extra_workspace = { key, wsnumber }: '' extra_workspace = { key, wsnumber }: ''
bind=,${key},execr,waybar_mode unset bind=,${key},execr,submap_indicator unset
bind=,${key},workspace,${wsnumber} bind=,${key},workspace,${wsnumber}
bind=,${key},submap,reset bind=,${key},submap,reset
bind=SUPER,${key},execr,waybar_mode unset bind=SUPER,${key},execr,submap_indicator unset
bind=SUPER,${key},workspace,${wsnumber} bind=SUPER,${key},workspace,${wsnumber}
bind=SUPER,${key},submap,reset bind=SUPER,${key},submap,reset
bind=SUPER SHIFT,${key},execr, waybar_mode unset bind=SUPER SHIFT,${key},execr, submap_indicator unset
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber} bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
bind=SUPER SHIFT,${key},submap,reset bind=SUPER SHIFT,${key},submap,reset
''; '';
@@ -564,32 +651,36 @@ in {
${action_simple { key = "X"; cmd = "exec,firefox https://nx2.site";}} ${action_simple { key = "X"; cmd = "exec,firefox https://nx2.site";}}
${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}} ${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}} ${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
bind = , Escape, exec, waybar_mode unset ${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
bind = , Escape, submap, reset bind=,Z,exec,submap_indicator set ' '
bind=,Z,submap,tuda
bind=,Z,submap,reset
bind=,Escape,exec,submap_indicator unset
bind=,Escape,submap,reset
submap = reset submap = reset
submap = scrL submap = scrL
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])} ${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
bind = , A, execr, waybar_mode unset bind = , A, execr, submap_indicator unset
bind = , A, submap, reset bind = , A, submap, reset
bind = , Escape, execr, waybar_mode unset bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
submap = scrR submap = scrR
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])} ${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
bind = , Y, execr, waybar_mode unset bind = , Y, execr, submap_indicator unset
bind = , Y, submap, reset bind = , Y, submap, reset
bind = , Escape, execr, waybar_mode unset bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
submap = color submap = color
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'change_colors_json img successfull' ''; }} ${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'NxTheme' 'change_colors_json img successfull' ''; }}
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'change_colors_json manual successfull' ''; }} ${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'NxTheme' 'change_colors_json manual successfull' ''; }}
${action_simple { key = "D"; cmd = ''exec,firefox /home/${user}/.config/color-pallete.html''; }} ${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }}
bind = , Escape, execr, waybar_mode unset bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
@@ -597,16 +688,25 @@ in {
${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }} ${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }}
${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }} ${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }}
${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }} ${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
bind = , Escape, execr, waybar_mode unset bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
submap = screenshot
${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
${action_simple { key = "M"; cmd = ''exec,hyprshot -m output''; }}
${action_simple { key = "S"; cmd = ''exec,hyprshot -m output''; }}
${action_simple { key = "R"; cmd = ''exec,hyprshot -m region''; }}
${action_simple { key = "A"; cmd = ''exec,hyprshot -m region''; }}
bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset
submap = reset
''; '';
}; };
home.file = let home.file = let
m = if host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name; m = if hyper.host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
in { in {
".config/hypr/hyprlock.conf".text = '' ".config/hypr/hyprlock.conf".text = ''
background { background {

View File

@@ -1,6 +1,4 @@
{ config, pkgs, lib, host, ... }: { pkgs, ... }@all: with all; {
lib.mkIf (host != "NxACE")
{
home.packages = with pkgs; [ home.packages = with pkgs; [
texlab # LSP texlab # LSP
(texlive.combine { inherit (texlive) scheme-full xifthen ifmtarg framed paralist titlesec xcolor; }) (texlive.combine { inherit (texlive) scheme-full xifthen ifmtarg framed paralist titlesec xcolor; })

View File

@@ -0,0 +1,5 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
solaar
];
}

View File

@@ -1,16 +1,17 @@
{ pkgs, rice, ... }: { config, pkgs, ... }@all: with all; {
{
home.packages = with pkgs; [ libnotify ]; home.packages = with pkgs; [ libnotify ];
services.mako = with rice; { services.mako = with rice; {
enable = true; enable = if config.programs.hyprpanel.enable then false else true;
defaultTimeout = 10000; # in ms settings = {
backgroundColor = color.background; default-timeout = 5000; # in ms
textColor = color.foreground; background-color = color.background;
borderColor = color.border; text-color = color.foreground;
borderSize = border-width;
font = font.code.name; font = font.code.name;
borderRadius = rounding; border-size = border-width;
border-radius = rounding;
border-color = color.border;
anchor = "top-right"; anchor = "top-right";
margin = builtins.toString (gap-size * 2) ; margin = builtins.toString (gap-size * 2) ;
}; };
};
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, host, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
# cinny-desktop # cinny-desktop
@@ -79,7 +79,7 @@
nx2site.ssl_verify = on nx2site.ssl_verify = on
nx2site.username = "nx2" nx2site.username = "nx2"
nx2site.password = "''${sec.data.matrix_nx2site_password}" nx2site.password = "''${sec.data.matrix_nx2site_password}"
nx2site.device_name = "Weechat@${host}" nx2site.device_name = "Weechat@${hyper.host}"
nx2site.autoreconnect_delay = 10 nx2site.autoreconnect_delay = 10
nx2site.sso_helper_listening_port = 0 nx2site.sso_helper_listening_port = 0
''; '';

82
home-modules/mpv.nix Normal file
View File

@@ -0,0 +1,82 @@
{ pkgs, ... }@all: with all; {
programs.mpv = {
enable = true;
package = pkgs.mpv;
config = {
# osc = false; # Disables the on-screen controller (seekbar, volume, etc.)
# osd-bar = false; # Disables the on-screen display progress bar
demuxer-max-back-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking backwards
demuxer-max-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking forwards
interpolation = true; # Enables frame interpolation for smoother playback
video-sync = "display-resample"; # Synchronizes video playback to the display's refresh rate
sub-visibility = true; # Hides subtitles by default
sub-auto = "fuzzy"; # Automatically loads subtitles if their filename is similar to the video file
sub-font = rice.font.base.name;
# sub-blur = 10; # this blurs the whole thing, text aswell
sub-color = rice.color.accent.bright;
sub-back-color = "${rice.color.background}${rice.lib.float-to-drune 0.8}"; # does not seem to work
# sub-border-size = 0;
sub-border-style = "opaque-box";
background-color = "${rice.color.background}"; # transparency breaks blur on hyprland sometimes, so just rgb
alang = "en,eng,de,ger"; # Sets preferred audio languages in order
slang = "en,eng,de,ger"; # Sets preferred subtitle languages in order
vlang = "en,eng,de,ger"; # Sets preferred video languages in order
save-position-on-quit = true; # Saves the playback position when quitting
ignore-path-in-watch-later-config = true; # Ignores the path in the watch-later configuration
ytdl-format = "bestvideo[height<=?1080]+bestaudio/best"; # Sets the format for downloading YouTube videos
vo = pkgs.lib.mkIf hyper.nvidia.enable "gpu";
hwdec = if hyper.nvidia.enable then "no" else "no"; # bugged
};
scripts = with pkgs.mpvScripts; [
mpris # use media keys
thumbfast # thumbnails on timeline hover
# uosc # custom ui
sponsorblock
# visualizer
];
bindings = {
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
"F5" = ''set contrast 0;set brightness 0;set gamma 0;set saturation 0;set hue 0;set sub-pos 100;set sub-scale 1;set panscan 0;set zoom 0;show-text default'';
# "tab" = ''script-binding uosc/toggle-ui'';
# "space" = ''cycle pause; script-binding uosc/flash-pause-indicator'';
# "right" = ''seek 5'';
# "left" = ''seek -5'';
# "shift+right" = ''seek 30; script-binding uosc/flash-timeline'';
# "shift+left" = ''seek -30; script-binding uosc/flash-timeline'';
# "m" = ''no-osd cycle mute; script-binding uosc/flash-volume'';
# "up" = ''no-osd add volume 10; script-binding uosc/flash-volume'';
# "down" = ''no-osd add volume -10; script-binding uosc/flash-volume'';
# "[" = ''no-osd add speed -0.25; script-binding uosc/flash-speed'';
# "]" = ''no-osd add speed 0.25; script-binding uosc/flash-speed'';
# "\\" = ''no-osd set speed 1; script-binding uosc/flash-speed'';
# ">" = ''script-binding uosc/next; script-message-to uosc flash-elements top_bar,timeline'';
# "<" = ''script-binding uosc/prev; script-message-to uosc flash-elements top_bar,timeline>'';
};
scriptOpts = {
thumbfast = {
spawn_first = true;
network = true;
hwdec = true;
};
uosc = {
timeline_size = 25;
timeline_persistency = "paused,audio";
progress = "always";
progress_size = 4;
progress_line_width = 4;
controls = "subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality";
top_bar = "never";
refine = "text_width";
};
};
};
xdg.configFile."mpv/shaders/invert.glsl".text = /* glsl */ ''
//!HOOK LUMA
//!BIND HOOKED
vec4 hook()
{
float luma = LUMA_texOff(0).x;
return vec4(1.0 - luma);
}
'';
}

View File

@@ -1,13 +1,13 @@
{ config, pkgs-unstable, ... }: { pkgs, ... }@all: with all;
{ {
home = { home = {
packages = with pkgs-unstable; [ packages = with pkgs; [
nh nh
nix-output-monitor nix-output-monitor
nvd nvd
]; ];
sessionVariables = { sessionVariables = {
FLAKE = "${config.home.homeDirectory}/nix-dots"; NH_FLAKE = "${hyper.home}/nix-dots";
}; };
}; };
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
nixd nixd

View File

@@ -1,5 +1,5 @@
{ pkgs, lib, nvidia, ... }: { pkgs, ... }@all: with all;
lib.mkIf (nvidia.enable == true) lib.mkIf (hyper.nvidia.enable == true)
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [

View File

@@ -1,4 +1,4 @@
{ config, pkgs, secrets, ... }: let { pkgs, ... }@all: with all; let
sep = " "; sep = " ";
in { in {
home = { home = {

View File

@@ -1,11 +1,10 @@
{ pkgs, ... }: { pkgs, ... }@all: with all; {
{
home.packages = [ home.packages = [
(pkgs.writeShellApplication { (pkgs.writeShellApplication {
name = "nx_backup"; name = "nx_backup";
runtimeInputs = [ ]; runtimeInputs = [ ];
text = let text = let
web-root = "/var/nginx/webroot"; web-root = hyper.webroot;
gitea-backup = "/var/backup/gitea"; gitea-backup = "/var/backup/gitea";
postgres-backup = "/var/backup/postgresql"; postgres-backup = "/var/backup/postgresql";
in /* bash */ '' in /* bash */ ''
@@ -59,8 +58,7 @@
echo "Backup and encryption complete: $DESTINATION" echo "Backup and encryption complete: $DESTINATION"
echo "Space remaining:" echo "Space remaining:"
df -h | head -n 1 dysk
df -h | grep -P "^/dev.+? "
''; '';
}) })
]; ];

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
(writeShellApplication { (writeShellApplication {

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
ghostscript ghostscript

View File

@@ -1,5 +1,4 @@
{ pkgs, lib, host, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE")
{ {
# home.packages = with pkgs; [ # home.packages = with pkgs; [
# obs-studio # obs-studio

View File

@@ -1,4 +1,4 @@
{ config, pkgs, lib, user, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
libreoffice libreoffice

View File

@@ -1,6 +1,7 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
ollama
(writers.writePython3Bin "ooo" { (writers.writePython3Bin "ooo" {
libraries = [ pkgs.python3Packages.ollama ]; libraries = [ pkgs.python3Packages.ollama ];
flakeIgnore = [ "E501" "E305" "E701" "E704" "E302" "E114" "F841" "E121" ]; flakeIgnore = [ "E501" "E305" "E701" "E704" "E302" "E114" "F841" "E121" ];
@@ -15,10 +16,10 @@ if len(sys.argv) < 2:
system_message = sys.argv[1] system_message = sys.argv[1]
input_text = sys.stdin.read() input_text = sys.stdin.read()
try: try:
response = ollama.chat(model='llama3.1:8b', messages=[ response = ollama.chat(model='gemma3:4b', messages=[
{ {
'role': 'system', 'role': 'system',
'content': "You are a text transformer. Follow the folling instruction:\n\n" + system_message + "\n\nOnly output the transformed text. Do not add any addidional conversation around the output. Just the result.", 'content': system_message,
}, },
{ {
'role': 'user', 'role': 'user',

60
home-modules/opencode.nix Normal file
View File

@@ -0,0 +1,60 @@
{ pkgs, ... }@all: with all; {
programs.opencode = {
enable = true;
package = pkgs.opencode;
themes.theme = with rice.color; let
dl = color: { dark = color; light = color; };
in {
accent = dl accent.base;
background = dl background;
backgroundElement = dl subtle.dark;
backgroundPanel = dl subtle.darker;
border = dl subtle.base;
borderActive = dl border;
borderSubtle = dl subtle.dark;
diffAdded = dl positive.base;
diffAddedBg = dl positive.darker;
diffAddedLineNumberBg = dl positive.dark;
diffContext = dl foreground;
diffContextBg = dl subtle.dark;
diffHighlightAdded = dl positive.bright;
diffHighlightRemoved = dl negative.bright;
diffHunkHeader = dl foreground;
diffLineNumber = dl subtle.base;
diffRemoved = dl negative.base;
diffRemovedBg = dl negative.darker;
diffRemovedLineNumberBg = dl negative.dark;
error = dl negative.dark;
info = dl special.base;
markdownBlockQuote = dl accent.base;
markdownCode = dl secondary.base;
markdownCodeBlock = dl secondary.base;
markdownEmph = dl accent.base;
markdownHeading = dl accent.base;
markdownHorizontalRule = dl border;
markdownImage = dl accent.base;
markdownImageText = dl accent.bright;
markdownLink = dl accent.base;
markdownLinkText = dl accent.bright;
markdownListEnumeration = dl foreground;
markdownListItem = dl foreground;
markdownStrong = dl accent.base;
markdownText = dl foreground;
primary = dl accent.base;
secondary = dl secondary.base;
success = dl positive.base;
syntaxComment = dl subtle.base;
syntaxFunction = dl accent.base;
syntaxKeyword = dl special.base;
syntaxNumber = dl tertiary.base;
syntaxOperator = dl accent.base;
syntaxPunctuation = dl foreground;
syntaxString = dl accent.base;
syntaxType = dl tertiary.base;
syntaxVariable = dl accent.base;
text = dl foreground;
textMuted = dl subtle.bright;
warning = dl weird.base;
};
};
}

View File

@@ -1,4 +1,4 @@
{ config, pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
pandoc pandoc

View File

@@ -0,0 +1,19 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
xdg-desktop-portal
brightnessctl
blueman
fontpreview
gtk3
gsettings-desktop-schemas
imv
pavucontrol
playerctl
swww
wev
wl-clipboard
xclip
wlr-randr
cava
];
}

View File

@@ -0,0 +1,22 @@
{ pkgs, hyper, ... }: {
home.packages = (with pkgs; [
chromium
gnome-clocks
gnome-calculator
gnome-characters
gnome-2048
qbittorrent
wl-clipboard
xfce.thunar
]) ++ (if hyper.isWorkstation then (with pkgs; [
signal-desktop
unstable.code-cursor-fhs
latest.antigravity
element-desktop
obsidian
fontforge-gtk
inkscape
audacity
libreoffice
]) else []);
}

View File

@@ -0,0 +1,47 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
asciinema
bat
cmake
cmatrix
dig
dust
dysk
exiftool
eza
ffmpeg
figlet
fzf
gh
glib
glow
gnumake
htop
imagemagick
jq
libxml2
lolcat
lynx
mediainfo
neofetch
nmap
pastel
pdfgrep
pdftk
pipes
pv
reflex
ripgrep
screen
speedtest-go
sssnake
systemctl-tui
tldr
unstable.gemini-cli
unstable.gemini-cli
unstable.yt-dlp
unstable.yt-dlp
w3m
which
];
}

View File

@@ -1,5 +1,5 @@
{ pkgs, lib, host, secrets, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE") lib.mkIf (hyper.host != "NxACE")
{ {
home.packages = [ home.packages = [
pkgs.remmina pkgs.remmina
@@ -7,7 +7,7 @@ lib.mkIf (host != "NxACE")
(pkgs.writeShellScriptBin "connect_to_pnx" '' (pkgs.writeShellScriptBin "connect_to_pnx" ''
pushd ~/.vpn/ pushd ~/.vpn/
sudo openvpn --config /home/nx2/.vpn/ljk-pnx.ovpn --auth-user-pass ~/.vpn/ljk-pnx-pass.txt #gets put there by home-manager sudo openvpn --config ${hyper.home}/.vpn/ljk-pnx.ovpn --auth-user-pass ~/.vpn/ljk-pnx-pass.txt #gets put there by home-manager
popd popd
'') '')

View File

@@ -0,0 +1,12 @@
{ ... }: {
imports = [
./programming/c.nix
# ./programming/gleam.nix
./programming/glsl.nix
./programming/go.nix
./programming/java.nix
./programming/js.nix
./programming/python.nix
./programming/rust.nix
];
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [

View File

@@ -1,10 +1,7 @@
{ pkgs, pkgs-unstable, lib, host, ... }: { pkgs, ... }@all: with all; {
lib.mkIf (host != "NxACE")
{
home.packages = with pkgs; [ home.packages = with pkgs; [
erlang erlang
rebar3 rebar3
] ++ (with pkgs-unstable; [
gleam gleam
]); ];
} }

View File

@@ -0,0 +1,8 @@
{ pkgs, ... }@all: with all;
{
home = {
packages = with pkgs; [
glsl_analyzer
];
};
}

View File

@@ -1,8 +1,7 @@
{ pkgs, ... }: { pkgs, ... }@all: with all; {
{ programs.go = {
home = { enable = true;
packages = with pkgs; [ package = pkgs.go;
go env.goPath = "${config.xdg.dataHome}/go";
];
}; };
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [

View File

@@ -1,7 +1,7 @@
{ pkgs, lib, host, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
nodejs nodejs
typescript-language-server
]; ];
} }

View File

@@ -1,18 +1,21 @@
{ pkgs, ... }: { pkgs, ... }@all: with all; {
{
home = let home = let
python-with-packages = pkgs.python3.withPackages (pp: with pp; [ python-with-packages = pkgs.python3.withPackages (pp: with pp; [
ipython ipython
pipdeptree
requests requests
google google-api-python-client google-auth-httplib2 google-auth-oauthlib # debugpy
debugpy
black black
uv
uv-build
]); ]);
in { in {
packages = [ packages = [
python-with-packages python-with-packages
]; ] ++ (with pkgs; [
python313Packages.python-lsp-server
ruff
pyright
]);
sessionVariables = { sessionVariables = {
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}"; PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
}; };

View File

@@ -0,0 +1,12 @@
{ pkgs, ... }@all: with all; {
home = {
packages = with pkgs; [
gdb
cargo
clippy
rustc
rustfmt
rust-analyzer
];
};
}

31
home-modules/rclone.nix Normal file
View File

@@ -0,0 +1,31 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [ rclone ];
sops.secrets."nx2site/copyparty/user-password/${hyper.user}".path = "%r/secrets/copyparty/user-password/${hyper.user}";
programs.rclone = {
enable = true;
package = pkgs.rclone;
remotes = {
"file.${hyper.domain}" = {
config = {
type = "webdav";
vendor = "owncloud"; # copyparty
url = "https://file.${hyper.domain}/";
user = hyper.user;
pacer_min_sleep = "0.01ms";
};
mounts = {
"" = {
enable = true;
mountPoint = "${hyper.home}/file.nx2.site/";
options = {
vfs-cache-mode = "writes";
dir-cache-time = "5s";
};
};
};
secrets.pass = "/run/user/1000/secrets/copyparty/user-password/${hyper.user}";
};
};
};
}

View File

@@ -1,113 +1,46 @@
{ pkgs, rice, ... }: { { pkgs, ... }@all: with all; {
home.packages = with pkgs; [ home = {
rofi-wayland packages = with pkgs; [ rofi ];
]; file = let # the home-manager module sucks
home.file = let
trdr = "${rice.lib.float-to-drune rice.transparency}"; trdr = "${rice.lib.float-to-drune rice.transparency}";
ts = builtins.toString;
in with rice.color; { in with rice.color; {
".config/rofi/config.rasi".text = '' ".config/rofi/config.rasi".text = ''
configuration { configuration {
show-icons: false; show-icons: false;
display-drun: ""; display-drun: "";
disable-history: false; disable-history: false;
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>] [<span weight='light' size='small'><i>({exec})</i></span>]";
} }
* { * {
font: "${rice.font.code.name} 12"; font: "${rice.font.code.name} 12";
foreground: ${foreground}; foreground: ${foreground};
background-color: ${background}${trdr}; text-color: ${foreground};
background-color: transparent;
padding: 0px; padding: 0px;
margin: 0px; margin: 0px;
spacing: 0px; spacing: 0px;
border-width: 0px; border-width: 0px;
} }
window {
#window {
background-color: ${background}${trdr}; background-color: ${background}${trdr};
border: ${builtins.toString rice.border-width}px; border: ${ts rice.border-width}px;
border-radius: ${builtins.toString rice.rounding}; border-radius: ${ts rice.rounding}px;
border-color: ${border}; border-color: ${ts rice.color.border};
} }
#mainbox { listview { scrollbar: false; }
border: 0; element { border-radius: ${ts rice.rounding}px; }
padding: 0; element.normal.normal { background-color: ${accent.darker}; text-color: ${accent.base}; }
} element.selected.normal { background-color: ${accent.base}; text-color: ${accent.darker}; }
#message { element.alternate.normal { background-color: ${secondary.darker}; text-color: ${secondary.base}; }
border: 0px; inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; }
} prompt { }
#textbox { textbox-prompt-colon {
text-color: ${foreground};
}
#listview {
fixed-height: 0;
border: 0px;
spacing: 0px ;
scrollbar: false;
padding: 0px;
}
#element {
border: 0;
padding: 0px;
border-radius: ${if rice.rounding > 0 then "2" else "0"}px;
}
#element.normal.normal { background-color: ${background}${trdr}; text-color: ${accent.base}; }
#element.selected.normal { background-color: ${tertiary.base}${trdr}; text-color: ${background}; }
#element.alternate.normal { background-color: ${background}${trdr}; text-color: ${secondary.base}; }
#scrollbar {
width: ${builtins.toString rice.border-width}px ;
border: 0;
handle-width: 8px ;
padding: 0;
}
#sidebar {
border: ${builtins.toString rice.border-width}px dash;
}
#button.selected {
text-color: ${foreground};
}
#inputbar {
spacing: 0;
text-color: ${background};
background-color: ${accent.base}${trdr};
padding: 0;
margine-bottom: 2px;
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
#prompt {
spacing: 0;
background-color: transparent;
text-color: ${foreground};
}
#textbox-prompt-colon {
expand: false; expand: false;
str: ">"; str: ">";
margin: 0px 0.3em 0em 0em ;
text-color: ${background};
background-color: transparent;
}
#case-indicator {
spacing: 0;
text-color: ${foreground};
background-color: transparent;
}
#entry {
spacing: 0;
text-color: ${background};
background-color: transparent;
placeholder: "";
}
element-text, element-icon {
background-color: inherit;
text-color: inherit;
} }
case-indicator { }
entry { placeholder: ""; }
''; '';
}; };
};
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
xsane xsane

View File

@@ -1,10 +1,8 @@
{ pkgs, rice, ... }: { pkgs, ... }@all: with all;
let let
my-sent = pkgs.sent.override { my-sent = pkgs.sent.override {
patches = [ patches = [
./sent.patch ./sent.patch
# /home/${user}/.local/share/sent.patch
# (builtins.toFile "/home/${user}/
]; ];
}; };
in in

View File

@@ -1,23 +1,7 @@
{ user, inputs, ... }: { pkgs, ... }@all: with all; {
{ imports = [ inputs.sops-nix.homeManagerModules.sops ];
imports = [
inputs.sops-nix.homeManagerModules.sops
];
sops = { sops = {
# age.keyFile = "/home/${user}/.config/sops/age/keys.txt"; age.keyFile = "${hyper.home}/vault/age/sopsnix-${hyper.host}-home.key";
gnupg.home = "/home/${user}/.gnupg";
defaultSopsFile = ../sops-secrets.yaml; defaultSopsFile = ../sops-secrets.yaml;
# %r is $XDG_RUNTIME_DIR
secrets = {
"example" = {
path = "%r/secrets/example";
};
# "sops-age-private-key" = { # Bootstrapping doens't work
# mode = "0400";
# path = "/home/${user}/.config/sops/age/keys.txt";
# };
};
}; };
} }

57
home-modules/spotify.nix Normal file
View File

@@ -0,0 +1,57 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
unstable.spotify
unstable.spicetify-cli
];
services.librespot = {
enable = true;
package = pkgs.unstable.librespot;
};
sops.secrets."spotify/spotiy-player-clinet-id" = { path = "%r/secrets/spotify/spotiy-player-clinet-id"; };
programs.spotify-player = {
enable = true;
package = pkgs.unstable.spotify-player;
settings = {
border_type = "Rounded";
client_id_command = "cat $XDG_RUNTIME_DIR/secrets/spotify/spotiy-player-clinet-id";
copy_command.command = "wl-copy";
cover_img_length = 20;
cover_img_scale = 1; # if this is not 1 it doesnt fit in the box (for me)
cover_img_width = 9; # this ratio depends on your terminal font
device.normalization = true;
genre_num = 32; # all of them
liked_icon = "";
name = "spotify-player-${hyper.host}";
pause_icon = "";
playback_window_position = "Bottom";
play_icon = "";
progress_bar_position = "Right"; # "Bottom"
progress_bar_type = "Rectangle"; # "Line"
theme = "${hyper.user}";
};
themes = [{
name = "${hyper.user}";
component_style = with rice.color; {
block_title = { fg = accent.bright; };
border = { fg = border; };
current_playing = { fg = special.base; bg = special.darker; modifiers = ["Italic"]; };
like = { fg = positive.base; };
lyrics_played = { fg = subtle.base; };
lyrics_playing = { fg = special.base; };
page_desc = { fg = secondary.base; };
playback_album = { fg = secondary.base; };
playback_artists = { fg = secondary.base; };
playback_genres = { fg = subtle.base; };
playback_metadata = { fg = accent.base; bg = background; };
playback_progress_bar = { fg = accent.brighter; bg = accent.dark; modifiers = ["Bold"]; };
playback_status = { fg = accent.bright; };
playback_track = { fg = accent.bright; modifiers = ["Bold"]; };
secondary_row = { fg = accent.brighter; };
selection = { bg = accent.dark; };
table_header = { fg = tertiary.bright; };
# playback_progress_bar_unfilled (Specific to progress_bar_type as Line) = "";
};
}];
};
}

View File

@@ -1,27 +1,52 @@
{ pkgs, domain, ... }: { pkgs, ... }@all: with all; {
{ home.packages = with pkgs; [ sshfs ];
home = { programs.ssh = {
packages = with pkgs; [ sshfs ]; enable = true;
file.".ssh/config".text = '' package = pkgs.openssh;
HOST nxace enableDefaultConfig = false;
HostName ssh.${domain} matchBlocks = let
User nx2 default = {
Port 50022 addKeysToAgent = "yes";
forwardAgent = false;
HOST nxacel compression = false;
HostName 192.168.178.32 serverAliveInterval = 0;
User nx2 serverAliveCountMax = 3;
Port 50022 hashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts";
HOST nxrpil controlMaster = "no";
HostName 192.168.178.31 controlPath = "~/.ssh/master-%r@%n:%p";
User nx2 controlPersist = "no";
Port 22 };
nxace = name: default // {
HOST nxgit host = name;
HostName ssh.${domain} hostname = "ssh.${hyper.domain}";
User git user = "nx2";
Port 50022 port = 50022;
''; identityFile = [ "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}" ];
};
in {
"*" = default;
"ssh.nx2.site" = default // { identityFile = [
"${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}"
"${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}"
]; };
"tg.dm.informatik.tu-darmstadt.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/tg-dm-informatik-tuda" ]; };
"git.da.dicos.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/dcsgit-lkurzweg-${hyper.host}" ]; };
"github.com" = default // { identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ]; };
"nxace" = (nxace "nxace" );
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; };
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; };
"nx2s-email-relay" = default // {
identityFile = "${hyper.home}/vault/ssh/nx2s-email-relay";
hostname = "35.243.218.208";
port = 22;
user = secrets.ssh.nx2s-email-relay-user;
};
};
};
services.ssh-agent = {
enable = true;
# socket = "ssh-agent"; # suffix to $XDG_RUNTIME_DIR
# package = pkgs.openssh;
}; };
} }

View File

@@ -1,7 +1,8 @@
{ lib, rice, ... }: { pkgs, ... }@all: with all;
{ {
programs.starship = { programs.starship = {
enable = true; enable = true;
package = pkgs.starship;
# enableBashIntegration = true; # enableBashIntegration = true;
enableFishIntegration = true; enableFishIntegration = true;
settings = with rice.color; { settings = with rice.color; {

View File

@@ -0,0 +1,84 @@
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
programs.thunderbird = let
inherit (lib.generators) toJSON;
extensions = toJSON {} {
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
};
in {
enable = true;
profiles = {
"${hyper.user}" = {
isDefault = true;
settings = with rice.color; {
"calendar.alarms.showmissed" = false;
"calendar.alarms.playsound" = false;
"calendar.alarms.show" = false;
"extensions.webextensions.uuids" = extensions;
"mail.startup.enabledMailCheckOnce" = true;
"mailnews.mark_message_read.delay" = true;
"mailnews.mark_message_read.delay.interval" = 3;
"mailnews.tags.$label1.color" = red.base;
"mailnews.tags.$label1.tag" = "Important";
"mailnews.tags.$label2.color" = yellow.base;
"mailnews.tags.$label2.tag" = "Work";
"mailnews.tags.$label3.color" = green.base;
"mailnews.tags.$label3.tag" = "Personal";
"mailnews.tags.$label4.color" = cyan.base;
"mailnews.tags.$label4.tag" = "To Do";
"mailnews.tags.$label5.color" = blue.base;
"mailnews.tags.$label5.tag" = "Later";
"mailnews.headers.showMessageId" = true;
"mailnews.headers.showOrganization" = true;
"mailnews.headers.showReferences" = true;
"mailnews.headers.showSender" = true;
"mailnews.headers.showUserAgent" = true;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
userChrome = with rice.color; /* css */ ''
body,
#navigation-toolbox,
#calendarContent,
#calSidebar,
#tabpanelcontainer,
#spacesToolbar,
#tabs-toolbar,
#calMinimonth,
#primaryButtonSidePanel *,
.minimonth-week,
.multiday-header-corner, .day-column-heading, calendar-header-container, calendar-event-column, .multiday-hour-box,
#view-box,
#tabs-toolbar,
#status-bar,
.calview-toggle,
#calview-toggle-item,
#folderPaneHeaderBar,
#folderPane,
#threadPaneHeaderBar,
#threadTree,
#tabs-toolbar {
color: ${foreground} !important;
font-family: ${rice.font.base.name} !important;
background-color: transparent !important;
background-image: none !important;
border: none !important;
-moz-appearance: none !important;
}
.minimonth-nav-section {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
border: ${builtins.toString rice.border-width}px solid ${border};
}
.button,
.button-primary,
.tab-content[selected] {
background-color: ${accent.base};
color: ${background};
background-image: none;
}
html {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
}
'';
};
};
};
}

View File

@@ -1,5 +1,4 @@
{ pkgs, lib, user, ... }: { pkgs, ... }@all: with all;
lib.mkIf (user != "tv")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
(writeShellApplication { (writeShellApplication {

8
home-modules/typst.nix Normal file
View File

@@ -0,0 +1,8 @@
{ pkgs, ... }@all: with all;
lib.mkIf (hyper.host != "NxACE")
{
home.packages = with pkgs; [
typst
tinymist
];
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: let { pkgs, ... }@all: with all; let
vws = pkgs.vale.withStyles (s: [ s.alex s.google ]); vws = pkgs.vale.withStyles (s: [ s.alex s.google ]);
in { in {
home = { home = {

View File

@@ -1,5 +1,5 @@
{ config, pkgs, lib, host, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host == "NxNORTH") lib.mkIf (hyper.host == "NxNORTH")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
virt-manager virt-manager

View File

@@ -1,6 +1,6 @@
{ config, pkgs, lib, user, host, rice, allowed, ... }: { pkgs, ... }@all: with all;
{ {
config = lib.mkIf (host != "NxACE") { config = lib.mkIf (hyper.host != "NxACE") {
home.packages = [ home.packages = [
pkgs.vscodium pkgs.vscodium
pkgs.nixpkgs-fmt pkgs.nixpkgs-fmt
@@ -8,6 +8,36 @@
programs.vscode = { programs.vscode = {
enable = true; enable = true;
package = pkgs.vscodium; package = pkgs.vscodium;
profiles.default ={
userSettings = {
workbench.colorTheme = "Just Black";
editor.fontFamily = "'${rice.font.code.name}', 'monospace', monospace";
remote.SSH.useLocalServer = false;
};
keybindings = [
{
key = "ctrl+d";
command = "editor.action.deleteLines";
when = "textInputFocus";
}
{
key = "ctrl+shift+d";
command = "editor.action.duplicateSelection";
when = "textInputFocus";
}
{
# unset so that ctrl d is not set twice
key = "";
command = "editor.action.addSelectionToNextFindMatch";
when = "editorFocus";
}
{
# unset so that ctrl shift d is not set twice
key = "";
command = "workbench.view.debug";
}
];
extensions = with pkgs.vscode-extensions; [ extensions = with pkgs.vscode-extensions; [
jnoortheen.nix-ide jnoortheen.nix-ide
ms-python.python ms-python.python
@@ -23,8 +53,6 @@
mads-hartmann.bash-ide-vscode mads-hartmann.bash-ide-vscode
bungcip.better-toml bungcip.better-toml
arrterian.nix-env-selector arrterian.nix-env-selector
# ms-vscode-remote.remote-ssh
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{ {
name = "just-black"; name = "just-black";
@@ -50,66 +78,27 @@
version = "0.5.16"; version = "0.5.16";
sha256 = "sha256-oHwtlbB18ctEnfStDOpJ+2/Kq41JZog8FVhTa1/s7m0="; sha256 = "sha256-oHwtlbB18ctEnfStDOpJ+2/Kq41JZog8FVhTa1/s7m0=";
} }
# {
# name = "remote-ssh-edit";
# publisher = "ms-vscode-remote";
# version = "0.86.0";
# sha256 = "1hp6gjh4xp2m1xlm1jsdzxw9d8frkiidhph6nvl24d0h8z34w49g";
# }
# {
# name = "remote-ssh";
# publisher = "ms-vscode-remote";
# version = "0.110.2024030715";
# sha256 = "sha256-gkxrBwPRDdLFaxc1/vYFBsv4Z0JOhDzb8LrLhkToC/g=";
# }
]; ];
userSettings = {
workbench.colorTheme = "Just Black";
editor.fontFamily = "'${rice.font.code.name}', 'monospace', monospace";
remote.SSH.useLocalServer = false;
};
enableUpdateCheck = false; enableUpdateCheck = false;
enableExtensionUpdateCheck = false; enableExtensionUpdateCheck = false;
keybindings = [ };
{
key = "ctrl+d";
command = "editor.action.deleteLines";
when = "textInputFocus";
}
{
key = "ctrl+shift+d";
command = "editor.action.duplicateSelection";
when = "textInputFocus";
}
{
# unset so that ctrl d is not set twice
key = "";
command = "editor.action.addSelectionToNextFindMatch";
when = "editorFocus";
}
{
# unset so that ctrl shift d is not set twice
key = "";
command = "workbench.view.debug";
}
];
}; };
}; };
imports = if host != "NxACE" then [ # imports = if hyper.host != "NxACE" then [
# Make vscode settings writable # # Make vscode settings writable
(import # (import
(builtins.fetchurl { # (builtins.fetchurl {
url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix"; # url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix";
sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8"; # sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8";
}) # })
{ inherit config lib; }) # { inherit config pkgs; lib = lib; })
(import # (import
(builtins.fetchurl { # (builtins.fetchurl {
url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix"; # url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix";
sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f"; # sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f";
}) # })
{ inherit config lib pkgs; }) # { inherit config pkgs; lib = lib; })
] else []; # ] else [];
} }

View File

@@ -1,8 +1,8 @@
{ pkgs-unstable, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs-unstable; [ home.packages = [
(writers.writePython3Bin "change_colors_json" { (pkgs.writers.writePython3Bin "change_colors_json" {
libraries = with python3Packages; [ numpy pillow scikit-learn ]; libraries = with pkgs.python3Packages; [ numpy pillow scikit-learn ];
flakeIgnore = [ "E302" "E305" "E226" "E501" ]; flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /*python */ '' } /*python */ ''
from colorsys import hls_to_rgb, rgb_to_hls from colorsys import hls_to_rgb, rgb_to_hls
@@ -119,7 +119,7 @@
return Palette(colors) return Palette(colors)
def hyprpicker() -> Color: def hyprpicker() -> Color:
ret = str(subprocess.run(["${pkgs.hyprpicker}/bin/hyprpicker", "-n", "-f", "rgb"], capture_output=True).stdout)[2:-3] ret = str(subprocess.run(["bash", "-c", "${pkgs.hyprpicker}/bin/hyprpicker -n -f rgb | tail -n 1"], capture_output=True).stdout)[2:-3]
return Color([int(c) for c in ret.split(" ")]) return Color([int(c) for c in ret.split(" ")])
if __name__ == "__main__": if __name__ == "__main__":
@@ -139,9 +139,12 @@
weird = alter_hue(ilist=accent, hue=80) weird = alter_hue(ilist=accent, hue=80)
special = alter_hue(ilist=accent, hue=180) special = alter_hue(ilist=accent, hue=180)
foreground = alter_l(accent, 0.9) foreground = alter_l(accent, 0.9)
background = alter_l(accent, 0.1) background = alter_l(accent, 0.05)
d = { with open("${hyper.home}/nix-dots/flake-modules/colors.json", "r") as f:
full_d = json.load(f)
full_d['${hyper.host}'] = {
"base": { "base": {
"foreground": list_to_hex(foreground), "foreground": list_to_hex(foreground),
"background": list_to_hex(background) "background": list_to_hex(background)
@@ -155,8 +158,8 @@
} }
} }
with open("/home/nx2/nix-dots/flake-modules/colors.json", "w") as f: with open("${hyper.home}/nix-dots/flake-modules/colors.json", "w") as f:
f.write(json.dumps(d, indent=4)) f.write(json.dumps(full_d, indent=4))
'') '')
]; ];
} }

View File

@@ -1,357 +0,0 @@
{ config, pkgs, rice, domain, user, ... }:
let
sep = " ";
in {
sops.secrets = {
"nx2site/radicale/password" = { };
};
home.packages = with pkgs; [
(writeShellApplication { name = "waybar_mode"; text = /*bash*/ ''
print_help() {
echo "Usage: waybar_mode {set <string>|unset}"
}
if [ $# -lt 1 ]; then
print_help; exit 1;
fi
case "$1" in
set)
# Check if there is a second argument for the 'set' operation
if [ $# -eq 2 ]; then
echo "$2" > /tmp/waybar-mode
pkill -RTMIN+8 waybar
else
echo "Error: 'set' operation requires exactly one string argument."
print_help
exit 1
fi
;;
unset)
echo "" > /tmp/waybar-mode
pkill -RTMIN+8 waybar
;;
*)
echo "Error: Unknown command '$1'"
print_help
exit 1
;;
esac
exit 0
'';})
(writeShellApplication { name = "cclock"; text = /*bash*/ ''
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
if [ $# -eq 0 ]; then
echo "󰃮${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
elif [ "$1" = "--no-icons" ]; then
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
fi
'';})
(writers.writePython3Bin "caldav_event" {
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
flakeIgnore = [ "E302" "E305""E501" ];
} /* python */ ''
import os
from caldav import DAVClient
from datetime import datetime, timezone
import json
from ics import Calendar
def get_password(password_file):
with open(password_file, "r") as file:
return file.read().strip()
def load_cache(cache_file):
if os.path.exists(cache_file):
with open(cache_file, "r") as file:
return json.load(file)
return None
def save_cache(cache_file, data):
with open(cache_file, "w") as file:
json.dump(data, file)
def get_ongoing_and_next_event(url, username, password):
now = datetime.now(timezone.utc)
ongoing_events = []
upcoming_events = []
try:
client = DAVClient(url, username=username, password=password)
principal = client.principal()
calendars = principal.calendars()
for calendar in calendars:
events = calendar.events()
for event in events:
ical_data = event.data
calendar_parsed = Calendar(ical_data)
for event in calendar_parsed.events:
event_name = event.name or "(No Title)"
start_time = event.begin.astimezone(timezone.utc)
end_time = event.end.astimezone(timezone.utc)
if start_time <= now <= end_time:
ongoing_events.append((event_name, start_time.timestamp(), end_time.timestamp()))
elif start_time > now:
upcoming_events.append((event_name, start_time.timestamp(), end_time.timestamp()))
except Exception as e:
print(f"Error accessing {url}: {e}")
upcoming_events.sort(key=lambda x: x[1]) # Sort by start time
return ongoing_events, upcoming_events[0] if upcoming_events else None
if __name__ == "__main__":
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
url = "https://dav.${domain}/"
username = "${user}"
password = get_password(password_file)
cache = load_cache(cache_file)
now = datetime.now(timezone.utc).timestamp()
if cache and cache.get("next_event_start") and now < cache["next_event_start"]:
ongoing_events = cache.get("ongoing_events", [])
next_event = (cache["next_event_name"], cache["next_event_start"], cache["next_event_end"]) if "next_event_name" in cache else None
else:
ongoing_events, next_event = get_ongoing_and_next_event(url, username, password)
cache_data = {
"ongoing_events": ongoing_events,
"next_event_name": next_event[0] if next_event else None,
"next_event_start": next_event[1] if next_event else None,
"next_event_end": next_event[2] if next_event else None
}
save_cache(cache_file, cache_data)
if ongoing_events:
for event_name, start_time, end_time in ongoing_events:
time_remaining = end_time - now
hours, rem = divmod(int(time_remaining), 3600)
minutes, _ = divmod(rem, 60)
if hours == 0:
print(f"{event_name} {minutes} minute{'s ' if minutes > 1 else ' '}left")
else:
print(f"{event_name} {hours} hour{'s ' if hours > 1 else ' '}and {minutes} minute{'s ' if minutes > 1 else ' '}left")
else:
if next_event:
event_name, start_time, end_time = next_event
time_until_start = start_time - now
hours, rem = divmod(int(time_until_start), 3600)
minutes, _ = divmod(rem, 60)
if hours == 0:
print(f"'{event_name}' starts in {minutes} minute{'s ' if minutes > 1 else ' '}")
else:
print(f"'{event_name}' starts in {hours} hour{'s ' if hours > 1 else ' '}and {minutes} minute{'s ' if minutes > 1 else ' '}")
else:
print("No upcoming events found.")
'')
];
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = {
bar = {
# height = 20;
layer = "top";
position = "bottom";
margin-top = 0;
# margin-left = rice.gap-size;
# margin-bottom = rice.gap-size;
# margin-right = rice.gap-size;
margin-left = 0;
margin-bottom = 0;
margin-right = 0;
spacing = 10;
modules-left = [
# "cpu"
# "memory"
"wireplumber"
"backlight"
"battery"
"network"
"hyprland/window"
];
modules-center = [
"hyprland/workspaces"
];
modules-right = [
"custom/mode"
"custom/caldav_event"
"custom/cclock"
"tray"
];
"hyprland/workspaces" = {
on-click = "activate";
format = "{name}";
all-outputs = false;
active-only = false;
};
"hyprland/window" = {
# format = "${sep}{}";
format = "{}";
separate-outputs = true;
};
"custom/cclock" = {
exec = "cclock";
restart-interval = 60;
};
"custom/caldav_event" = {
format = "󰃰${sep}{}";
exec = "caldav_event";
restart-interval = 60;
};
"custom/mode" = {
exec = "cat /tmp/waybar-mode";
interval = "once";
signal = 8;
};
cpu = {
interval = 1;
format = "󰍛${sep}{}%";
max-length = 10;
};
memory = {
interval = 5;
format = "${sep}{avail:.0f}G free";
};
battery = {
interval = 60;
tooltip = false;
format = "{icon}${sep}{capacity}%";
states = {
warning = 15;
critical = 5;
};
format-icons = [
" "
" "
" "
" "
" "
];
format-charging = "{icon}${sep}+{capacity}%";
format-plugged = "{icon}${sep}P{capacity}%";
format-full = "{icon}${sep}F{capacity}%";
};
backlight = {
device = "eDP-1";
format = "{icon}${sep}{percent}%";
format-icons = [
""
""
""
""
""
""
""
""
""
];
};
network = {
format-wifi = "${sep}{essid}";
format-ethernet = "󰈀${sep}Wired";
format-disconnected = "󰌙${sep}Disconnected";
};
wireplumber = {
format = "󰕾${sep}{volume}%";
format-muted = "󰝟${sep}--%";
};
};
};
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in ''
* {
font-family: ${rice.font.code.name};
font-size: 1em;
min-height: 0px;
margin: 0px;
padding: 0px;
}
window#waybar {
background-color: rgba(${f background},${builtins.toString rice.transparency});
transition-duration: 5s;
transition-property: background-color;
/* border: ${builtins.toString rice.border-width}px solid rgb(${f border}); */
/* margin: ${builtins.toString rice.gap-size}px; */
/* border-radius: ${builtins.toString rice.rounding}px; */
}
#clock,
#custom-cclock,
#custom-mode,
#custom-caldav-event,
#battery,
#cpu,
#tray,
#disk,
#backlight,
#network,
#wireplumber,
#memory,
#window,
#workspaces {
padding: 0px 3px;
margin-top: 0.3em;
border-radius: ${builtins.toString rice.rounding}px;
color: rgb(${f accent.bright});
}
#workspaces button {
color: rgb(${f accent.base});
padding-left: 15px;
padding-right: 15px;
border-radius: ${builtins.toString rice.rounding}px;
}
#workspaces button.active {
color: rgb(${f background});
background-color: rgb(${f accent.base});
}
#workspaces button:hover {
color: rgb(${f tertiary.bright});
}
#workspaces button.urgent {
background-color: rgba(${f magenta.base},${builtins.toString rice.transparency});
}
#custom-mode {
color: rgb(${f red.base});
}
#window, #custom-ctimeremaining {
font-family: ${rice.font.base.name}, ${rice.font.code.name};
color: rgb(${f tertiary.bright});
}
#wireplumber.muted {
color: rgb(${f tertiary.bright});
}
#wireplumber {
padding-left: 10px;
}
#battery.warning:not(.charging) {
color: rgb(${f green.base});;
}
#battery.charging {
color: rgb(${f green.base});
}
#battery.critical {
background: rgb(${f negative.base});
color: rgb(${f foreground});
}
'';
#battery.critical:not(.charging) {
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, rice,... }: { pkgs, ... }@all: with all;
{ {
home = { home = {
packages = with pkgs; [ wlogout ]; packages = with pkgs; [ wlogout ];

32
home-modules/xdg.nix Normal file
View File

@@ -0,0 +1,32 @@
{ pkgs, ... }@all: with all; {
xdg = {
enable = true;
configHome = "${hyper.home}/.config";
cacheHome = "${hyper.home}/.cache";
dataHome = "${hyper.home}/.local/share";
stateHome = "${hyper.home}/.local/state";
mimeApps = {
enable = true;
defaultApplications = let
browser = "firefox.desktop";
image = "imv.desktop";
in {
"default-web-browser" = [ browser ];
"text/html" = [ browser ];
"text/htm" = [ browser ];
"x-scheme-handler/http" = [ browser ];
"x-scheme-handler/https" = [ browser ];
"x-scheme-handler/about" = [ browser ];
"x-scheme-handler/unknown" = [ browser ];
"x-scheme-handler/mailto" = "thunderbird.desktop";
"image/png" = image;
"image/jpg" = image;
"image/jpeg" = image;
"image/webp" = image;
"image/gif" = image;
"application/pdf" = "zathura.desktop";
"inode/directory" = "thunar.desktop";
};
};
};
}

View File

@@ -1,23 +1,19 @@
{ pkgs, lib, system, rice, inputs, ... }: { pkgs, ... }@all: with all; let
{ not-nod = (pkgs.pkgs-version != "24.05");
home.packages = with pkgs; [ tfc = pkgs.unstable.xdg-desktop-portal-termfilechooser;
# yazi in {
# dragon home.packages = [
unar pkgs.unar
tfc
]; ];
programs.yazi = { programs.yazi = {
enable = true; enable = true;
# package = pkgs.yazi; # package = pkgs.yazi;
package = inputs.yazi.packages.${system}.default; package = inputs.yazi.packages.${hyper.system}.default;
enableFishIntegration = true; enableFishIntegration = true;
shellWrapperName = "ya"; # initLua = /* lua */ '' ''; # down
plugins = with inputs.yazi-plugins.packages.${system}; {
inherit chmod starship;
};
# initLua = /* lua */ '' '';
keymap = { keymap = {
manager.keymap = [ mgr.keymap = [
{ on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; } { on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; }
{ on = "q"; run = "quit"; desc = "Exit the process"; } { on = "q"; run = "quit"; desc = "Exit the process"; }
{ on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; } { on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; }
@@ -34,21 +30,24 @@
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; } { on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; } { on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; } { on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
{ on = [ "g" "g" ]; run = "arrow -99999999"; desc = "Move cursor to the top"; }
{ on = [ "g" "e" ]; run = "arrow 99999999"; desc = "Move cursor to the end"; }
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
{ on = [ "g" "n" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
{ on = [ "g" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; } { on = [ "g" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; }
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) directory"; } { on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; } { on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) directory"; }
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
{ on = [ "g" "N" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
{ on = [ "g" "p" ]; run = "cd ~/projects"; desc = "Go to the projects directory"; }
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; } { on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; } { on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
{ on = [ "g" "t" ]; run = "cd /tmp"; desc = "Go to the /tmp directory"; }
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; } { on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
(pkgs.lib.mkIf (hyper.isServer) { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
# Navigation # Navigation
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; } { on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
{ on = "l"; run = "enter"; desc = "Enter the child directory"; } { on = "l"; run = "enter"; desc = "Enter the child directory"; }
@@ -69,8 +68,10 @@
# Operation # Operation
{ on = "o"; run = "open"; desc = "Open selected files"; } { on = "o"; run = "open"; desc = "Open selected files"; }
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; } { on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; } { on = "<Enter>"; run = "plugin smart-enter"; desc = "Open selected files"; }
# { on = "<Enter>"; run = "open"; desc = "Open selected files"; }
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; } { on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
{ on = "y"; run = [ ''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'' "yank" ]; desc = "Yank selected files (copy)"; }
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; } { on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; } { on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
{ on = "p"; run = "paste"; desc = "Paste yanked "; } { on = "p"; run = "paste"; desc = "Paste yanked "; }
@@ -87,8 +88,8 @@
{ on = ";"; run = "shell --interactive"; desc = "Run a shell command"; } { on = ";"; run = "shell --interactive"; desc = "Run a shell command"; }
{ on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; } { on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; }
{ on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; } { on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; }
{ on = "s"; run = "search fd"; desc = "Search files by name using fd"; } { on = "s"; run = "search --via=fd"; desc = "Search files by name using fd"; }
{ on = "S"; run = "search rg"; desc = "Search files by content using ripgrep"; } { on = "S"; run = "search --via=rg"; desc = "Search files by content using ripgrep"; }
{ on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; } { on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; }
{ on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; } { on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; }
{ on = "Z"; run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; } { on = "Z"; run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; }
@@ -111,7 +112,7 @@
{ on = "?"; run = "find --previous --smart"; desc = "Find previous file"; } { on = "?"; run = "find --previous --smart"; desc = "Find previous file"; }
{ on = "n"; run = "find_arrow"; desc = "Go to the next found"; } { on = "n"; run = "find_arrow"; desc = "Go to the next found"; }
{ on = "N"; run = "find_arrow --previous"; desc = "Go to the previous found"; } { on = "N"; run = "find_arrow --previous"; desc = "Go to the previous found"; }
# Sortin # Sorting
{ on = [ "," "m" ]; run = [ "sort modified --reverse=no" "linemode mtime" ]; desc = "Sort by modified time"; } { on = [ "," "m" ]; run = [ "sort modified --reverse=no" "linemode mtime" ]; desc = "Sort by modified time"; }
{ on = [ "," "M" ]; run = [ "sort modified --reverse" "linemode mtime" ]; desc = "Sort by modified time (reverse)"; } { on = [ "," "M" ]; run = [ "sort modified --reverse" "linemode mtime" ]; desc = "Sort by modified time (reverse)"; }
{ on = [ "," "c" ]; run = [ "sort created --reverse=no" "linemode ctime" ]; desc = "Sort by created time"; } { on = [ "," "c" ]; run = [ "sort created --reverse=no" "linemode ctime" ]; desc = "Sort by created time"; }
@@ -157,8 +158,13 @@
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab with previous tab"; } { on = "{"; run = "tab_swap -1"; desc = "Swap current tab with previous tab"; }
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab wittab"; } { on = "{"; run = "tab_swap -1"; desc = "Swap current tab wittab"; }
{ on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; } { on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; }
{ on = "<Tab>"; run = "spot"; desc = "Show Spot View"; }
# Tasks # Tasks
{ on = "w"; run = "tasks_show"; desc = "Show task manager"; } { on = "w"; run = "tasks:show"; desc = "Show Task View"; }
# Magic
{ on = "<C-h>"; run = "shell 'hx .' --block"; desc = "Open current directoy in Helix"; }
{ on = "<C-g>"; run = "shell 'lazygit' --block"; desc = "Open current directoy in Lazygit"; }
{ on = "<C-y>"; run = ''shell 'ghostty --command="fish -C nx_yazi_into_fish"' --orphan ''; desc = "Open current directoy in a new ghostty window"; }
]; ];
tasks.keymap = [ tasks.keymap = [
# Task # Task
@@ -167,20 +173,33 @@
{ on = "<Esc>"; run = "close"; desc = "Close Task View"; } { on = "<Esc>"; run = "close"; desc = "Close Task View"; }
{ on = "c"; run = "cancel"; desc = "Cancel Task"; } { on = "c"; run = "cancel"; desc = "Cancel Task"; }
{ on = "i"; run = "inspect"; desc = "Inspect Task"; } { on = "i"; run = "inspect"; desc = "Inspect Task"; }
{ on = "j"; run = "arrow -1"; desc = "Up in list"; } { on = "k"; run = "arrow -1"; desc = "Up in list"; }
{ on = "k"; run = "arrow 1"; desc = "Down in list"; } { on = "j"; run = "arrow 1"; desc = "Down in list"; }
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; } { on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; } { on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
]; ];
help = [ help.keymap = [
# Help # Help
{ on = "~"; run = "help"; desc = "Open help"; } { on = "~"; run = "help"; desc = "Open help"; }
{ on = "?"; run = "help"; desc = "Open help"; } { on = "?"; run = "help"; desc = "Open help"; }
{ on = "<F1>"; run = "help"; desc = "Open help"; } { on = "<F1>"; run = "help"; desc = "Open help"; }
]; ];
spot.keymap = [
# Spot
{ on = "<Tab>"; run = "close"; desc = "Close Spot View"; }
{ on = "q"; run = "close"; desc = "Close Spot View"; }
{ on = "<Esc>"; run = "close"; desc = "Close Spot View"; }
{ on = "k"; run = "arrow -1"; desc = "Up in list"; }
{ on = "j"; run = "arrow 1"; desc = "Down in list"; }
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
{ on = "c"; run = "copy cell"; desc = "Copy Selected Cell"; }
];
}; };
settings = { settings = {
manager = { mgr = {
layout = [2 3 4]; layout = [2 3 4];
sort_by = "natural"; sort_by = "natural";
sort_sensitive = true; sort_sensitive = true;
@@ -192,72 +211,74 @@
}; };
opener = { opener = {
"edit" = [ "edit" = [
{ run = ''hx "$@"''; desc = "helix"; block = true; } { run = ''hx "$@"''; desc = "Helix"; block = true; }
{ run = ''codium "$@"''; desc = "helix"; orphan = true; } { run = ''codium "$@"''; desc = "VS Code"; orphan = true; }
{ run = ''cat "$@" | wl-copy''; desc = "Copy Contents"; }
]; ];
"play" = [ "play" = [
{ run = ''mpv "$@"''; } { run = ''mpv "$@"''; desc = "MPV"; orphan = true; }
{ run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo"; } { run = ''mpv --vf=negate "$@"''; desc = "MPV inverted"; orphan = true; }
{ run = ''mediainfo "$1"; echo "Press enter to return to yazi"; read''; block = true; desc = "Show mediainfo"; }
]; ];
"archive" = [ "archive" = [
{ run = ''unar "$1"''; desc = "Extract here"; } { run = ''unar "$@"''; desc = "Extract here"; }
{ run = ''tar -x "$1"''; desc = "tar -x"; } { run = ''tar -x "$@"''; desc = "tar -x"; }
{ run = ''unzip "$1"''; desc = "unzip"; } { run = ''unzip "$@"''; desc = "unzip"; }
]; ];
"image" = [ "image" = [
{ run = ''imv "$@"''; desc = "imv"; } { run = ''imv "$@"''; desc = "IMV"; orphan = true; }
{ run = ''gimp "$@"''; desc = "gimp"; } { run = ''gimp "$@"''; desc = "Gimp"; orphan = true; }
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper"; } { run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$1"''; desc = "swww wallpaper"; }
{ run = ''exiftool "$@"; echo "Press enter to exit"; read''; desc = "View Exif Data"; } { run = ''exiftool "$1"; echo "Press enter to return to yazi"; read''; desc = "View Exif Data"; }
{ run = ''for f in "$@"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; } { run = ''for f in "$1"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
]; ];
"svg" = [ "svg" = [
{ run = ''inkscape "$@"''; desc = "inkscape";} { run = ''inkscape "$@"''; desc = "Inkscape"; orphan = true; }
{ run = ''firefox "$@"''; desc = "firefox";} { run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
]; ];
"font" = [ "font" = [
{ run = ''fontpreview "$@"''; desc = "fontpreview"; } { run = ''fontpreview "$@"''; desc = "Fontpreview"; orphan = true; }
{ run = ''fontforge "$@"''; desc = "fortforge"; } { run = ''fontforge "$@"''; desc = "Fortforge"; orphan = true; }
]; ];
"document" = [ "document" = [
{ run = ''zathura "$@"''; desc = "zathura"; orphan = true; } { run = ''zathura "$@"''; desc = "Zathura"; orphan = true; }
{ run = ''xournal "$@"''; desc = "xournal"; orphan = true; } { run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
{ run = ''firefox "$@"''; desc = "firefox"; }
{ run = ''nxgs flip "$@"''; desc = "nxgs flip"; } { run = ''nxgs flip "$@"''; desc = "nxgs flip"; }
{ run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; } { run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; }
{ run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; } { run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; }
]; ];
"browser" = [ "browser" = [
{ run = ''firefox "$@"''; desc = "firefox"; } { run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
{ run = ''zen "$@"''; desc = "zen"; } { run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "Chromium"; orphan = true; }
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; }
{ run = ''w3m "$@"''; desc = "w3m"; } { run = ''w3m "$@"''; desc = "w3m"; }
{ run = ''lynx "$@"''; desc = "lynx"; } { run = ''lynx "$@"''; desc = "Lynx"; }
]; ];
"office" = [ "office" = [
{ run = ''libreoffice "$@"''; desc = "libreoffice"; } { run = ''libreoffice "$@"''; desc = "LibreOffice"; orphan = true; }
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; } { run = ''libreoffice --view "$@"''; desc = "LibreOffice read-only"; orphan = true; }
]; ];
"shell" = [ "shell" = [
{ run = ''bash -c "$@"''; desc = "bash -c"; } { run = ''bash -c "$1"; echo "Press enter to return to yazi"; read''; desc = "bash -c"; }
{ run = ''fish -c "$@"''; desc = "fish -c"; } { run = ''fish -c "$1"; echo "Press enter to return to yazi"; read''; desc = "fish -c"; }
{ run = ''sh -c "$@"''; desc = "sh -c"; } { run = ''sh -c "$1"; echo "Press enter to return to yazi"; read''; desc = "sh -c"; }
]; ];
"python" = [ "python" = [
{ run = ''python "$@"''; desc = "python"; } { run = ''python "$@"; echo "Press enter to return to yazi"; read''; desc = "Python"; block = true; }
]; ];
"directory" = [ "directory" = [
{ run = ''lazygit "$@"''; desc = "python"; } { run = ''lazygit "$1"''; desc = "LazyGit"; }
]; ];
}; };
open.rules = [ open.rules = [
{ mime = "text/html"; use = [ "edit" "browser" ]; } { mime = "text/html"; use = [ "edit" "browser" ]; }
{ mime = "text/htm"; use = [ "edit" "browser" ]; } { mime = "text/htm"; use = [ "edit" "browser" ]; }
{ mime = "text/x-python"; use = "python"; } { mime = "text/x-script.python"; use = [ "edit" "python" ]; }
{ mime = "text/script.python"; use = [ "edit" "python" ]; }
{ mime = "text/*"; use = "edit"; } { mime = "text/*"; use = "edit"; }
{ mime = "text"; use = "edit"; }
{ mine = "inode/x-empty"; use = "edit"; } { mime = "inode/x-empty"; use = "directory"; }
{ mine = "inode/directory"; use = "edit"; } { mime = "inode/directory"; use = "directory"; }
{ mime = "image/*"; use = "image"; } { mime = "image/*"; use = "image"; }
{ mime = "image/svg"; use = [ "image" "edit" ]; } { mime = "image/svg"; use = [ "image" "edit" ]; }
@@ -266,6 +287,7 @@
{ mime = "audio/*"; use = "play"; } { mime = "audio/*"; use = "play"; }
{ mime = "application/x-httpd-php"; use = [ "edit" "browser" ]; } { mime = "application/x-httpd-php"; use = [ "edit" "browser" ]; }
{ mime = "application/javascript"; use = "edit"; }
{ mime = "application/json"; use = "edit"; } { mime = "application/json"; use = "edit"; }
{ mime = "application/ld+json"; use = "edit"; } { mime = "application/ld+json"; use = "edit"; }
{ mime = "application/pdf"; use = "document"; } { mime = "application/pdf"; use = "document"; }
@@ -289,7 +311,7 @@
]; ];
}; };
theme = with rice.color; { theme = with rice.color; {
manager = { mgr = {
cwd = { fg = foreground; bg = background; }; cwd = { fg = foreground; bg = background; };
hovered = { fg = background; bg = accent.base; }; hovered = { fg = background; bg = accent.base; };
preview_hovered = { underline = false; }; preview_hovered = { underline = false; };
@@ -304,26 +326,76 @@
border_symbol = ""; border_symbol = "";
border_style = { fg = border; }; border_style = { fg = border; };
}; };
tabs = {
active = { fg = secondary.dark; bg = secondary.base; };
inactive = { fg = secondary.base; bg = secondary.dark; };
# sep_inner = { open = "[", close = "]" };
# sep_outer = { open = "[", close = "]" };
};
mode = {
main_main = { fg = yellow.bright; bg = yellow.dark; };
select_main = { fg = cyan.bright; bg = cyan.dark; };
unset_main = { fg = blue.bright; bg = blue.dark; };
main_alternative = { fg = yellow.brighter; bg = yellow.dark; };
select_alternative = { fg = cyan.brighter; bg = cyan.dark; };
unset_alternative = { fg = blue.brighter; bg = blue.dark; };
};
confirm = {
border = { fg = border; };
title = { fg = accent.bright; };
body = { fg = "#ff0000"; };
list = { fg = "#ff0000"; };
btn_yes = { fg = positive.base; bg = positive.dark; };
btn_no = { fg = negative.base; bg = negative.dark; };
btn_labels = [ " BET " " HELLNAW " ];
};
spot = {
border = { fg = border; };
title = { fg = accent.bright; };
tbl_col = { fg = accent.base; };
tbl_cell = { fg = secondary.base; };
};
notify = {
title_info = { fg = accent.base; };
title_warn = { fg = weird.base; };
title_error = { fg = special.base; };
};
pick = {
border = { fg = border; };
active = { fg = accent.bright; };
inactive = { fg = subtle.bright; };
};
status = { status = {
separator_open = " "; #""; # sep_right = { open = ""; close = ""; };
separator_close = " "; #""; # sep_left = { open = ""; close = ""; };
separator_style = { fg = accent.base; bg = black.base; }; sepr_style = { fg = accent.base; bg = black.base; };
mode_normal = { fg = yellow.bright; bg = yellow.dark; };
mode_select = { fg = cyan.bright; bg = cyan.dark; };
mode_unset = { fg = blue.bright; bg = blue.dark; };
progress_label = { fg = secondary.base; bold = true; }; progress_label = { fg = secondary.base; bold = true; };
progress_normal = { fg = accent.base; bg = black.base; }; progress_normal = { fg = accent.base; bg = black.base; };
progress_error = { fg = negative.base; bg = black.base; }; progress_error = { fg = negative.base; bg = black.base; };
permissions_t = { fg = special.base; }; perm_type = { fg = special.base; };
permissions_r = { fg = accent.base; }; perm_read = { fg = accent.base; };
permissions_w = { fg = secondary.base; }; perm_write = { fg = secondary.base; };
permissions_x = { fg = tertiary.base; }; perm_exec = { fg = tertiary.base; };
permissions_s = { fg = special.base; }; perm_sep = { fg = special.base; };
};
indicator = { # your "cursor"
parent = { fg = secondary.darker; bg = secondary.base; };
current = { fg = accent.darker; bg = accent.base; };
preview = { fg = secondary.base; bg = secondary.darker; };
# padding = { open = " "; close = " "; };
};
cmp = {
border = { fg = border; };
active = { fg = accent.base; };
inactive = { fg = subtle.base; };
# icon_file =
# icon_folder =
# icon_command
}; };
input = { input = {
border = { fg = border; }; border = { fg = border; };
title = {}; title = { fg = accent.bright; };
value = {}; value = { fg = foreground; };
selected = { reversed = true; }; selected = { reversed = true; };
}; };
select = { select = {
@@ -333,8 +405,8 @@
}; };
tasks = { tasks = {
border = { fg = border2; }; border = { fg = border2; };
title = {}; title = { fg = accent.base; bold = true; };
hovered = { underline = true; }; hovered = { fg = accent.bright; };
}; };
which = { which = {
mask = { bg = black.base; }; mask = { bg = black.base; };
@@ -345,11 +417,11 @@
separator_style = { fg = foreground; }; separator_style = { fg = foreground; };
}; };
help = { help = {
on = { fg = "#fe8019"; }; on = { fg = accent.base; };
exec = { fg = "#83a598"; }; run = { fg = secondary.base; };
desc = { fg = "#928374"; }; desc = { fg = tertiary.base; italic = true; };
hovered = { bg = "#504945"; bold = true; }; hovered = { bg = accent.bright; bold = true; };
footer = { fg = "#3c3836"; bg = "#a89984"; }; footer = { fg = accent.base; bg = subtle.dark; };
}; };
filetype = { filetype = {
rules = [ rules = [
@@ -357,19 +429,75 @@
{ mime = "inode/x-empty"; fg = white.dark; } { mime = "inode/x-empty"; fg = white.dark; }
{ mime = "inode/directory"; fg = accent.base; } { mime = "inode/directory"; fg = accent.base; }
{ name = "*"; is = "link"; fg = tertiary.base; } { url = "*"; is = "link"; fg = tertiary.base; }
{ name = "*"; is = "orphan"; fg = negative.base; } { url = "*"; is = "orphan"; fg = negative.base; }
{ name = "*"; is = "block"; fg = special.base; } { url = "*"; is = "block"; fg = special.base; }
{ name = "*"; is = "char"; fg = special.bright; } { url = "*"; is = "char"; fg = special.bright; }
{ name = "*"; is = "exec"; fg = secondary.base; } { url = "*"; is = "exec"; fg = secondary.base; }
{ name = "*"; is = "fifo"; fg = weird.base; } { url = "*"; is = "fifo"; fg = weird.base; }
{ name = "*"; is = "sock"; fg = weird.bright; } { url = "*"; is = "sock"; fg = weird.bright; }
{ name = "*"; is = "sticky"; fg = special.base; } { url = "*"; is = "sticky"; fg = special.base; }
# Fallback # Fallback
{ name = "*"; fg = foreground; } { url = "*"; fg = foreground; }
]; ];
}; };
}; };
} // (if not-nod then {
shellWrapperName = "ya";
initLua = /* lua */ ''
require("zoxide"):setup {
update_db = true,
}
Status:children_add(function()
local h = cx.active.current.hovered
if not h or ya.target_family() ~= "unix" then
return ""
end
return ui.Line {
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
":",
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
" ",
}
end, 500, Status.RIGHT)
Header:children_add(function()
if ya.target_family() ~= "unix" then
return ""
end
return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
end, 500, Header.LEFT)
'';
plugins = { inherit (pkgs.yaziPlugins)
glow git smart-enter;
}; };
} else {});
xdg = {
configFile."xdg-desktop-portal-termfilechooser/config" = {
force = true;
text = ''
[filechooser]
cmd=${tfc}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
default_dir=$HOME
env=TERMCMD=ghostty --title="terminal-file-picker -e"
open_mode=suggested
save_mode=suggested
'';
};
portal = {
enable = true;
xdgOpenUsePortal = true;
config.common."org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
extraPortals = [ tfc ] ++ (with pkgs; [
xdg-desktop-portal
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
]);
};
};
home.sessionVariables."GTK_USE_PORTAL" = "1";
} }

View File

@@ -10,7 +10,7 @@
completion-fg = foreground; completion-fg = foreground;
completion-highlight-bg = background; completion-highlight-bg = background;
completion-highlight-fg = accent.base; completion-highlight-fg = accent.base;
default-bg = "rgba(${f background},${t})"; default-bg = "rgba(${f accent.dark},${t})";
default-fg = foreground; default-fg = foreground;
highlight-active-color = "rgba(${f accent.base},0.5)"; highlight-active-color = "rgba(${f accent.base},0.5)";
highlight-color = "rgba(${f secondary.base},0.5)"; highlight-color = "rgba(${f secondary.base},0.5)";

145
home.nix
View File

@@ -1,18 +1,20 @@
{ pkgs, pkgs-unstable, lib, host, user, inputs, ... }: { pkgs, ... }@all: with all; {
{
imports = [ imports = [
./home-modules/auto-mount.nix ./home-modules/auto-mount.nix
./home-modules/bar.nix
./home-modules/bash.nix ./home-modules/bash.nix
./home-modules/bitwarden.nix ./home-modules/bitwarden.nix
./home-modules/calendar.nix ./home-modules/calendar.nix
./home-modules/chatterino.nix ./home-modules/chatterino.nix
./home-modules/clipboard.nix
./home-modules/color-pallete.nix ./home-modules/color-pallete.nix
./home-modules/contact.nix
./home-modules/direnv.nix ./home-modules/direnv.nix
./home-modules/discord.nix ./home-modules/discord.nix
./home-modules/email.nix ./home-modules/email.nix
./home-modules/firefox.nix ./home-modules/figlet.nix
./home-modules/firefox/firefox.nix
./home-modules/fish.nix ./home-modules/fish.nix
# ./home-modules/foot.nix
./home-modules/games.nix ./home-modules/games.nix
./home-modules/gestures.nix ./home-modules/gestures.nix
./home-modules/ghostty.nix ./home-modules/ghostty.nix
@@ -24,147 +26,54 @@
./home-modules/hyprland-autoname-workspaces.nix ./home-modules/hyprland-autoname-workspaces.nix
./home-modules/hyprland.nix ./home-modules/hyprland.nix
./home-modules/kitty.nix ./home-modules/kitty.nix
./home-modules/latex.nix # ./home-modules/latex.nix
./home-modules/logitech.nix
./home-modules/mako.nix ./home-modules/mako.nix
# ./home-modules/matrix.nix # ./home-modules/matrix.nix
# ./home-modules/nm.nix ./home-modules/mpv.nix
./home-modules/nh.nix ./home-modules/nh.nix
./home-modules/nixd.nix ./home-modules/nixd.nix
./home-modules/nvidia.nix ./home-modules/nvidia.nix
./home-modules/nxgs.nix ./home-modules/nxgs.nix
# ./home-modules/nx-gcal-event.nix
./home-modules/obs.nix ./home-modules/obs.nix
./home-modules/office.nix # ./home-modules/office.nix
./home-modules/ollama.nix ./home-modules/ollama.nix
./home-modules/opencode.nix
./home-modules/pandoc.nix ./home-modules/pandoc.nix
./home-modules/pnx.nix ./home-modules/pkgs-list/desktop.nix
./home-modules/programming/c.nix ./home-modules/pkgs-list/programs.nix
./home-modules/programming/gleam.nix ./home-modules/pkgs-list/shell.nix
./home-modules/programming/go.nix # ./home-modules/pnx.nix
./home-modules/programming/java.nix ./home-modules/programming.nix
./home-modules/programming/js.nix
./home-modules/programming/python.nix
./home-modules/qt.nix ./home-modules/qt.nix
./home-modules/rclone.nix
./home-modules/rofi.nix ./home-modules/rofi.nix
./home-modules/scanning.nix ./home-modules/scanning.nix
./home-modules/sent.nix ./home-modules/sent.nix
./home-modules/sops.nix ./home-modules/sops.nix
./home-modules/spotify.nix
./home-modules/ssh.nix ./home-modules/ssh.nix
./home-modules/starship.nix ./home-modules/starship.nix
./home-modules/thunderbird.nix
./home-modules/tts.nix ./home-modules/tts.nix
./home-modules/typst.nix
./home-modules/vale.nix ./home-modules/vale.nix
./home-modules/virt-manager.nix ./home-modules/virt-manager.nix
./home-modules/vscode.nix ./home-modules/vscode.nix
./home-modules/wallpaper-to-colors.nix ./home-modules/wallpaper-to-colors.nix
./home-modules/waybar.nix
./home-modules/wlogout.nix ./home-modules/wlogout.nix
./home-modules/xdg.nix
./home-modules/yazi.nix ./home-modules/yazi.nix
./home-modules/zathura.nix ./home-modules/zathura.nix
./home-modules/zoxide.nix ./home-modules/zoxide.nix
] ++ (if (host == "NxACE") then [ ] ++ (if hyper.isServer then [
./home-modules/nx2site.nix ./home-modules/nx2site.nix
./home-modules/nx2site-backup.nix ./home-modules/nx2site-backup.nix
./home-modules/calendar-campuszeit-fix.nix
] else []); ] else []);
home.username = user; home.username = hyper.user;
home.homeDirectory = "/home/${user}"; home.homeDirectory = hyper.home;
home.stateVersion = "24.05"; # home.homeDirectory = "/home/${hyper.user}";
home.packages = with pkgs; [ home.stateVersion = hyper.main-pkgs-version;
bat
brightnessctl
browsh
chromium
cmake
dig
du-dust
exiftool
eza
ffmpeg
figlet
fontpreview
fzf
glib
glow
gnumake
gsettings-desktop-schemas
imagemagick
imv
jq
lolcat
lynx
mediainfo
mpv
neofetch
pavucontrol
pdfgrep
piper-tts
pipes
playerctl
pv
qbittorrent
reflex
ripgrep
screen
speedtest-go
spicetify-cli
sssnake
swww
tldr
w3m
wev
wl-clipboard
xclip
xfce.thunar
xournal
yt-dlp
inputs.zen-browser.packages."${system}".default
] ++ (with pkgs-unstable; [
obsidian
firefox
spotify
]) ++ (if host != "NxACE" then (with pkgs; [
signal-desktop
zoom-us
inkscape
]) else (with pkgs-unstable; [
]));
xdg = {
enable = true;
configHome = /home/${user}/.config;
cacheHome = /home/${user}/.cache;
dataHome = /home/${user}/.local/share;
stateHome = /home/${user}/.local/state;
mimeApps = {
enable = true;
defaultApplications =
let
browser = "firefox.desktop";
in
{
"default-web-browser" = [ browser ];
"text/html" = [ browser ];
"text/htm" = [ browser ];
"x-scheme-handler/http" = [ browser ];
"x-scheme-handler/https" = [ browser ];
"x-scheme-handler/about" = [ browser ];
"x-scheme-handler/unknown" = [ browser ];
"x-scheme-handler/mailto" = "thunderbird.desktop";
"image/png" = "imv.desktop";
"image/jpg" = "imv.desktop";
"image/jpeg" = "imv.desktop";
"image/webp" = "imv.desktop";
"image/gif" = "imv.desktop";
"application/pdf" = "zathura.desktop";
"inode/directory" = "thunar.desktop";
};
};
};
# Wayland, X, etc. support for session vars
# systemd.user.sessionVariables = home.sessionVariables;
# Let Home Manager install and manage itself.
programs.home-manager.enable = true; programs.home-manager.enable = true;
} }

32
nod.nix Normal file
View File

@@ -0,0 +1,32 @@
{ pkgs, ... }@all: with all; {
environment = {
packages = import ./system-modules/base-packages.nix pkgs;
etcBackupExtension = ".bak";
motd = "";
};
terminal = {
font = rice.font.code.regular-path;
};
android-integration = {
termux-setup-storage.enable = true;
};
system.stateVersion = pkgs.version;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
user ={
shell = "${pkgs.fish}/bin/fish";
# userName = pkgs.lib.mkForce hyper.user; if its read-only, whats the point of this option???
};
# Set your time zone
time.timeZone = "Europe/Berlin";
home-manager = {
config = import ./shell-only.nix;
useGlobalPkgs = true;
backupFileExtension = "backup";
extraSpecialArgs = { inherit (all) inputs hyper rice; };
};
}

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