Compare commits

...

550 Commits

Author SHA1 Message Date
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)
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
Lennart J. Kurzweg (Nx2)
5c8e50aa9f Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-02-21 10:57:02 +01:00
Lennart J. Kurzweg (Nx2)
c9106e8484 calendar++ 2025-02-21 10:46:12 +01:00
Lennart J. Kurzweg (Nx2)
62b40404c7 flake bump 2025-02-17 11:33:16 +01:00
Lennart J. Kurzweg (Nx2)
07a320147d 0.8 2025-02-17 11:33:09 +01:00
Lennart J. Kurzweg (Nx2)
34cdfc4def calendar waybar 2025-02-17 11:32:54 +01:00
Lennart J. Kurzweg (Nx2)
545b61a79f better hyprland rules 2025-02-17 11:31:59 +01:00
Lennart J. Kurzweg (Nx2)
feb2f93360 flake bump 2025-01-31 12:44:31 +01:00
Lennart J. Kurzweg (Nx2)
8fb93e5f2b Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-01-30 13:42:56 +01:00
Lennart J. Kurzweg (Nx2)
e5e3eaaff4 cleanup firefox userchrome 2025-01-30 13:42:38 +01:00
Lennart J. Kurzweg (Nx2)
4bc88c8d13 hyprland display NxXPS 2025-01-30 13:42:26 +01:00
Lennart J. Kurzweg (Nx2)
a5c8d284ee calendar-lec 2025-01-30 13:41:27 +01:00
Lennart J. Kurzweg (Nx2)
c2f151e03e nx2site-backup 2025-01-30 13:41:12 +01:00
Lennart J. Kurzweg (Nx2)
b0b643f164 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-01-27 22:29:12 +01:00
Lennart J. Kurzweg (Nx2)
99c07ec5fb yt-dlp 2025-01-27 22:23:19 +01:00
Lennart J. Kurzweg (Nx2)
3f553d27e1 pv 2025-01-27 22:23:10 +01:00
Lennart J. Kurzweg (Nx2)
a6a17574b8 weird fix 2025-01-27 22:22:48 +01:00
Lennart J. Kurzweg (Nx2)
78359c710f gitea-dump fix 2025-01-27 22:22:28 +01:00
Lennart J. Kurzweg (Nx2)
2206e5472b calendar public 2025-01-27 22:20:27 +01:00
Lennart J. Kurzweg (Nx2)
9c96585401 audiobookshelf 2025-01-27 22:19:32 +01:00
Lennart J. Kurzweg (Nx2)
ac36fa13ac paperless update 2025-01-27 22:18:57 +01:00
Lennart J. Kurzweg (Nx2)
b4586e8661 chmod 2025-01-27 22:17:00 +01:00
Lennart J. Kurzweg (Nx2)
5a6199a8a9 comment unknow options 2025-01-19 22:37:40 +01:00
Lennart J. Kurzweg (Nx2)
5e34285db2 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-01-19 22:09:08 +01:00
Lennart J. Kurzweg (Nx2)
9612646c55 qbt in home 2025-01-19 22:09:05 +01:00
Lennart J. Kurzweg (Nx2)
7324904db9 helix all options 2025-01-19 22:08:46 +01:00
Lennart J. Kurzweg (Nx2)
132c169e24 sleeker zathura 2025-01-19 22:07:14 +01:00
Lennart J. Kurzweg (Nx2)
207961e397 better yazi bindings 2025-01-19 22:06:58 +01:00
Lennart J. Kurzweg (Nx2)
73339cfc50 waybar ws opaque 2025-01-19 22:06:32 +01:00
Lennart J. Kurzweg (Nx2)
94559de7ae better thunderbird css 2025-01-19 11:43:24 +01:00
Lennart J. Kurzweg (Nx2)
89fa46aa6d calendar ++ 2025-01-19 11:43:15 +01:00
Lennart J. Kurzweg (Nx2)
0fbb54a04a adbfs 2025-01-13 20:05:02 +01:00
Lennart J. Kurzweg (Nx2)
9619164eb4 paperless non-admin fix 2025-01-13 20:04:49 +01:00
Lennart J. Kurzweg (Nx2)
343fc2ac4e second screen change 2025-01-13 20:03:19 +01:00
Lennart J. Kurzweg (Nx2)
9c98199ee3 scanning 2025-01-13 19:59:04 +01:00
Lennart J. Kurzweg (Nx2)
3652cdfca9 nxgs 2025-01-13 19:58:22 +01:00
Lennart J. Kurzweg (Nx2)
2699268b81 take 2025-01-13 19:56:35 +01:00
Lennart J. Kurzweg (Nx2)
e4d0326a74 flake bump 2025-01-04 13:54:13 +01:00
Lennart J. Kurzweg (Nx2)
8525adecf4 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-01-04 13:53:51 +01:00
Lennart J. Kurzweg (Nx2)
c381580cca fix hyprland-autoname-workspaces 2025-01-04 13:53:06 +01:00
Lennart J. Kurzweg (Nx2)
aea641cd9c no helix bg 2025-01-04 13:52:34 +01:00
Lennart J. Kurzweg (Nx2)
2179dbf1d8 calendar 2025-01-04 13:52:21 +01:00
Lennart J. Kurzweg (Nx2)
6f5f70f439 new ppl pw 2025-01-02 21:44:37 +01:00
Lennart J. Kurzweg (Nx2)
d40175d4a5 6 11 2025-01-02 21:44:27 +01:00
Lennart J. Kurzweg (Nx2)
34eba60193 radicale 2025-01-02 21:44:15 +01:00
Lennart J. Kurzweg (Nx2)
57230a32c3 nextcloud (deactivated) 2025-01-02 21:43:20 +01:00
Lennart J. Kurzweg (Nx2)
d9146432e4 flake bump 2024-12-27 12:56:50 +01:00
Lennart J. Kurzweg (Nx2)
447e6edd56 radicale (untested) 2024-12-27 12:56:33 +01:00
Lennart J. Kurzweg (Nx2)
aa58ca79bb ghostty (unfinished) 2024-12-27 12:56:17 +01:00
Lennart J. Kurzweg (Nx2)
a2692f6837 chatterino, fix, rice, colorslum[27u[27u[27u[27u[27u 2024-12-27 12:55:51 +01:00
Lennart J. Kurzweg (Nx2)
c031de7fec in the thick of it 2024-12-27 12:54:11 +01:00
Lennart J. Kurzweg (Nx2)
918342fdf3 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-23 13:04:25 +01:00
Lennart J. Kurzweg (Nx2)
d8f623f1a0 postgres 12 -> 16 2024-12-23 13:03:45 +01:00
Lennart J. Kurzweg (Nx2)
6a4460d089 new syncthing ID for tessa 2024-12-23 13:00:22 +01:00
Lennart J. Kurzweg (Nx2)
e61954442f flake bump 2024-12-23 12:59:32 +01:00
Lennart J. Kurzweg (Nx2)
f5aa965369 update option name (opengl -> graphics) 2024-12-23 12:59:22 +01:00
Lennart J. Kurzweg (Nx2)
eb812dc9e0 nix without llm 2024-12-23 12:58:31 +01:00
Lennart J. Kurzweg (Nx2)
6d4d118685 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-19 15:19:51 +01:00
Lennart J. Kurzweg (Nx2)
94a78942f8 helix-gpt is to slow 2024-12-19 15:19:47 +01:00
Lennart J. Kurzweg (Nx2)
5c2437cee1 renaming node to js also in imports 2024-12-19 15:19:31 +01:00
Lennart J. Kurzweg (Nx2)
fa8875c0ee Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-15 15:36:15 +01:00
Lennart J. Kurzweg (Nx2)
2040ce3ea0 fixup 2024-12-15 15:33:39 +01:00
Lennart J. Kurzweg (Nx2)
d9822a7a91 gitea (theme&++) 2024-12-15 15:31:43 +01:00
Lennart J. Kurzweg (Nx2)
d2e0b9d2d3 paperless 2024-12-15 15:14:52 +01:00
Lennart J. Kurzweg (Nx2)
ccdd036935 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-15 14:53:43 +01:00
Lennart J. Kurzweg (Nx2)
5d36be3804 flake bump 2024-12-15 14:50:36 +01:00
Lennart J. Kurzweg (Nx2)
2640b00b05 better zahtura scrolling 2024-12-15 14:37:58 +01:00
Lennart J. Kurzweg (Nx2)
9087100c42 qt 2024-12-15 14:35:54 +01:00
Lennart J. Kurzweg (Nx2)
5c9a92c68e helic cleanup + java 2024-12-15 14:35:43 +01:00
Lennart J. Kurzweg (Nx2)
1fd894a3b3 cleanup 2024-12-15 14:28:51 +01:00
Lennart J. Kurzweg (Nx2)
09316011ab helix-gpt 2024-12-15 14:23:20 +01:00
Lennart J. Kurzweg (Nx2)
fdce6c3d57 go 2024-12-15 14:22:31 +01:00
Lennart J. Kurzweg (Nx2)
1be03c39ad Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-02 21:48:54 +01:00
Lennart J. Kurzweg (Nx2)
a0c098ea1f Better "special" window handeling 2024-12-02 21:44:24 +01:00
Lennart J. Kurzweg (Nx2)
9a4e3d7a78 flake bump 2024-12-02 21:33:52 +01:00
Lennart J. Kurzweg (Nx2)
1005cc522d gnome-calendar 2024-12-02 21:05:13 +01:00
Lennart J. Kurzweg (Nx2)
729e7e5f0e gnu parallel 2024-12-02 21:04:55 +01:00
Lennart J. Kurzweg (Nx2)
79cbdc9f69 health-reminder++ 2024-12-02 21:04:41 +01:00
Lennart J. Kurzweg (Nx2)
c6ca7c95f4 zathura++ 2024-12-02 21:04:14 +01:00
Lennart J. Kurzweg (Nx2)
e878158b71 better yazi 2024-12-02 21:03:48 +01:00
Lennart J. Kurzweg (Nx2)
ed5f0784d1 longer mako 2024-12-02 21:03:28 +01:00
Lennart J. Kurzweg (Nx2)
051648954a gtk tryouts 2024-12-02 21:03:20 +01:00
Lennart J. Kurzweg (Nx2)
f5538e69a5 better color changing (maual) 2024-12-02 21:00:01 +01:00
Lennart J. Kurzweg (Nx2)
a82660b049 Gimp 2024-12-02 20:59:20 +01:00
Lennart J. Kurzweg (Nx2)
f828268b14 24.11 Vicuna 2024-12-02 20:59:00 +01:00
Lennart J. Kurzweg (Nx2)
02c7814ce4 better/less userChrome 2024-12-02 20:49:33 +01:00
Lennart J. Kurzweg (Nx2)
e36ffd828b chatterino update 2024-12-02 20:46:51 +01:00
Lennart J. Kurzweg (Nx2)
219a19a3a8 fonts (no name2) 2024-12-02 20:46:32 +01:00
Lennart J. Kurzweg (Nx2)
683913e0fe rice syntax 2024-12-02 20:42:49 +01:00
Lennart J. Kurzweg (Nx2)
837e64c377 wallpaper to color hotkey syntax fix 2024-11-21 22:55:09 +01:00
Lennart J. Kurzweg (Nx2)
f8497f5538 health reminder syntax fix 2 2024-11-21 22:33:47 +01:00
Lennart J. Kurzweg (Nx2)
9c2a69aa03 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-11-21 22:28:42 +01:00
Lennart J. Kurzweg (Nx2)
a8c3a12089 xps to linux_6_11 2024-11-21 22:27:48 +01:00
Lennart J. Kurzweg (Nx2)
b8199c24ef health reminder syntax fix 2024-11-21 22:27:28 +01:00
Lennart J. Kurzweg (Nx2)
971cea5418 steam 2024-11-21 22:19:14 +01:00
Lennart J. Kurzweg (Nx2)
d12b9ddf2f Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-11-21 22:17:48 +01:00
Lennart J. Kurzweg (Nx2)
e4ec830aaa better health reminder 2024-11-21 22:07:53 +01:00
Lennart J. Kurzweg (Nx2)
ebb1da3fc2 typo 2024-11-21 22:07:36 +01:00
Lennart J. Kurzweg (Nx2)
80e06b3f49 more userChrome 2024-11-21 22:07:31 +01:00
Lennart J. Kurzweg (Nx2)
605381b553 waybar prettier battery 2024-11-21 22:07:07 +01:00
Lennart J. Kurzweg (Nx2)
298d31e21a submaps als functions + TUDa submap 2024-11-21 22:06:55 +01:00
Lennart J. Kurzweg (Nx2)
947b824796 hyprland nxcolor-functions better 2024-11-21 22:06:03 +01:00
Lennart J. Kurzweg (Nx2)
edbe4e7f66 moved NORTH screen 2024-11-20 01:27:20 +01:00
Lennart J. Kurzweg (Nx2)
dbccb827ad games also on ACE 2024-11-20 01:25:42 +01:00
Lennart J. Kurzweg (Nx2)
f5af726382 nx2site gitea and vaultwarden (working) 2024-11-20 01:24:57 +01:00
Lennart J. Kurzweg (Nx2)
e95332cedb Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles 2024-11-15 14:10:50 +01:00
Lennart J. Kurzweg (Nx2)
6a7d8fe4be nx2site002 (unready) 2024-11-15 14:10:48 +01:00
Lennart J. Kurzweg (Nx2)
37eb70db63 Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles 2024-11-14 01:21:42 +01:00
Lennart J. Kurzweg (Nx2)
77e9aa4ddd games 2024-11-14 01:21:34 +01:00
Lennart J. Kurzweg (Nx2)
e26ac7cbe2 Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles into gitea 2024-11-11 14:02:59 +01:00
Lennart J. Kurzweg (Nx2)
66221229ca gitea, crashes 2024-11-11 14:02:21 +01:00
Lennart J. Kurzweg (Nx2)
9b36c29009 i accedentally deleted my tuda eduroam 2024-11-11 10:33:33 +01:00
Lennart J. Kurzweg (Nx2)
55587f35f6 merge fixups 2024-11-09 23:57:48 +01:00
Lennart J. Kurzweg (Nx2)
966f9d67fc Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles 2024-11-09 23:56:05 +01:00
Lennart J. Kurzweg (Nx2)
2e1c0f495b better nxsent 2024-11-09 23:56:00 +01:00
Lennart J. Kurzweg (Nx2)
ab4c26c178 Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles 2024-11-09 20:24:22 +01:00
Lennart J. Kurzweg (Nx2)
91a5a6def8 manual sops merge before merge 2024-11-09 20:06:45 +01:00
Lennart J. Kurzweg (Nx2)
104d1334df huge cleanup 2024-11-09 19:48:52 +01:00
Lennart J. Kurzweg (Nx2)
c19c270775 newer curl 2024-11-08 13:48:37 +01:00
Lennart J. Kurzweg (Nx2)
c5c41087b5 dm new style 2024-11-08 13:48:27 +01:00
Lennart J. Kurzweg (Nx2)
924f48b15a nx2site001 2024-11-08 13:48:02 +01:00
Lennart J. Kurzweg (Nx2)
6abff56bbd tuda-moodle-rice 2024-11-08 13:42:49 +01:00
Lennart J. Kurzweg (Nx2)
5f9c6dd0a3 yazi more rice 2024-11-07 16:34:01 +01:00
Lennart J. Kurzweg (Nx2)
c426029a25 adb 2024-11-07 16:33:56 +01:00
Lennart J. Kurzweg (Nx2)
1790336aa5 Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles 2024-11-06 13:53:22 +01:00
Lennart J. Kurzweg (Nx2)
06a630319d prettier code 2024-11-06 13:53:19 +01:00
Lennart J. Kurzweg (Nx2)
1814068cfe better zathura rice 2024-11-06 13:52:53 +01:00
Lennart J. Kurzweg (Nx2)
096f31d81a all nixd paths 2024-11-06 13:52:43 +01:00
Lennart J. Kurzweg (Nx2)
148bd4c481 accent is the always visible border 2024-11-06 13:42:44 +01:00
Lennart J. Kurzweg (Nx2)
f9d4921726 userChrome mynixos.com 2024-11-06 13:42:04 +01:00
Lennart J. Kurzweg (Nx2)
169d6eda11 ~/shared ownwership fix 2024-10-30 00:55:44 +01:00
Lennart J. Kurzweg (Nx2)
97f33c7b8d diffrent rice 2024-10-30 00:55:16 +01:00
Lennart J. Kurzweg (Nx2)
340c514a99 more fuse (still sucks) 2024-10-28 16:10:02 +01:00
Lennart J. Kurzweg (Nx2)
b3d3c983c2 nixd spelling 2024-10-28 13:43:22 +01:00
Lennart J. Kurzweg (Nx2)
3a30fc2131 Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles 2024-10-25 02:12:55 +02:00
Lennart J. Kurzweg (Nx2)
abd5b60ffa nixd 2024-10-25 02:12:52 +02:00
Lennart J. Kurzweg (Nx2)
e3e52fb656 themed Zathura 2024-10-24 13:02:22 +02:00
Lennart J. Kurzweg (Nx2)
115a6d3c83 fcitx not working wip 2024-10-23 12:58:02 +02:00
Lennart J. Kurzweg (Nx2)
14df46a631 flake bump 2024-10-23 00:16:39 +02:00
Lennart J. Kurzweg (Nx2)
0c92fcd686 lzg theeme 2024-10-23 00:16:28 +02:00
Lennart J. Kurzweg (Nx2)
085d593ce1 new ssh 2024-10-22 23:00:30 +02:00
Lennart J. Kurzweg (Nx2)
fb082f76ed new sync version vesktop 2024-10-22 23:00:18 +02:00
Lennart J. Kurzweg (Nx2)
89ed2c0748 gs 2024-10-22 22:59:43 +02:00
Lennart J. Kurzweg (Nx2)
a32d8ad3ce better curk 2024-10-22 22:59:31 +02:00
Lennart J. Kurzweg (Nx2)
d93ae4a78b tuda eduroam 2024-10-17 17:18:07 +02:00
Lennart J. Kurzweg (Nx2)
8f3b04c191 spotify grey screen fix 2024-10-17 17:17:51 +02:00
Lennart J. Kurzweg (Nx2)
8b96d1205b flake bump 2024-10-17 14:39:25 +02:00
Lennart J. Kurzweg (Nx2)
dbeb5524a0 note for ff transparency 2024-10-17 14:39:12 +02:00
Lennart J. Kurzweg (Nx2)
2b873c8b81 no networking.wireless with nm 2024-10-12 19:50:25 +02:00
Lennart J. Kurzweg (Nx2)
2fcdf32944 no open ports from docker module 2024-10-09 23:38:03 +02:00
Lennart J. Kurzweg (Nx2)
24bb3136cf reflex and better latex in hx 2024-10-09 23:36:33 +02:00
Lennart J. Kurzweg (Nx2)
f32d77f7ff rice change 2024-10-09 23:35:49 +02:00
Lennart J. Kurzweg (Nx2)
c6f7d73f89 tuda eduroam (untested) 2024-10-09 23:35:20 +02:00
Lennart J. Kurzweg (Nx2)
1e3112b590 tuda email 2024-10-09 23:35:03 +02:00
Lennart J. Kurzweg (Nx2)
7639bed3fe tts 2024-10-09 23:32:39 +02:00
Lennart J. Kurzweg (Nx2)
d46530edd8 flake bump 2024-09-27 22:45:14 +02:00
Lennart J. Kurzweg (Nx2)
5ed4edc375 more rice 2024-09-27 21:42:51 +02:00
Lennart J. Kurzweg (Nx2)
f422551ac3 yazi only with hotkey 2024-09-27 21:42:29 +02:00
Lennart J. Kurzweg (Nx2)
5a40c8e1f9 flake bump 2024-09-26 02:55:30 +02:00
Lennart J. Kurzweg (Nx2)
b6d1b38ad9 html rice preview 2024-09-26 02:55:16 +02:00
Lennart J. Kurzweg (Nx2)
f5016976ab yazi themed (unfinished) 2024-09-26 02:54:24 +02:00
Lennart J. Kurzweg (Nx2)
059abbf549 yazi on terminal start 2024-09-26 02:54:01 +02:00
Lennart J. Kurzweg (Nx2)
dfaf24c9e1 yellow is yellow 2024-09-26 02:53:28 +02:00
Lennart J. Kurzweg (Nx2)
a1d34a70c8 no gtk2 backup in repository 2024-09-26 02:53:18 +02:00
Lennart J. Kurzweg (Nx2)
ea61c7e30d flake bump 2024-09-18 20:17:28 +02:00
Lennart J. Kurzweg (Nx2)
4ab26fbc08 new chatterino token 2024-09-18 20:15:10 +02:00
Lennart J. Kurzweg (Nx2)
6ab9da1b0c better ff css 2024-09-18 20:14:55 +02:00
Lennart J. Kurzweg (Nx2)
7ed29be1e6 thunderbird css 2024-09-18 20:14:42 +02:00
Lennart J. Kurzweg (Nx2)
e076123fa7 nh home switch for colors 2024-09-10 14:43:51 +02:00
Lennart J. Kurzweg (Nx2)
9d9d36dda8 Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-09-09 16:29:11 +02:00
Lennart J. Kurzweg (Nx2)
c6d0205f8b flake bump 2024-09-09 16:29:07 +02:00
Lennart J. Kurzweg (Nx2)
96828bacd0 color++ 2024-09-09 16:28:17 +02:00
Lennart J. Kurzweg (Nx2)
c16d439731 firefox userChrome unfinished 2024-09-09 16:27:24 +02:00
Lennart J. Kurzweg (Nx2)
c8e0c2c832 +asmon 2024-09-09 16:26:02 +02:00
Lennart J. Kurzweg (Nx2)
19e7f2dd3a Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-09-09 16:18:48 +02:00
Lennart J. Kurzweg (Nx2)
cfb112429d temp fixed for xps 2024-09-09 16:15:36 +02:00
Lennart J. Kurzweg (Nx2)
c0ff63e427 MIT 2024-09-04 18:15:43 +02:00
Lennart J. Kurzweg (Nx2)
b7bf1f1bd7 embed img 2024-09-04 17:58:08 +02:00
Lennart J. Kurzweg (Nx2)
9ad191f37c Add README 2024-09-04 17:57:18 +02:00
Lennart J. Kurzweg (Nx2)
c61e6c9980 whoops, i need git-crypt 2024-09-04 17:20:09 +02:00
Lennart J. Kurzweg (Nx2)
d626a5bd7d Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-09-04 17:17:16 +02:00
Lennart J. Kurzweg (Nx2)
5eda39414a flake.lock update 2024-09-04 17:12:59 +02:00
Lennart J. Kurzweg (Nx2)
cbe9371e66 better hotkeys 2024-09-04 17:12:41 +02:00
Lennart J. Kurzweg (Nx2)
a10b22b9e3 better fish aliases 2024-09-04 17:12:20 +02:00
Lennart J. Kurzweg (Nx2)
fd3ca3a1d3 fctix autostart + exec-once cleanup 2024-09-04 17:11:25 +02:00
Lennart J. Kurzweg (Nx2)
f2589a350d shared owned by nx2 2024-09-04 17:10:46 +02:00
Lennart J. Kurzweg (Nx2)
f24b4ae320 zen-browser through flake 2024-09-04 17:10:15 +02:00
Lennart J. Kurzweg (Nx2)
689ef45935 ooo 2024-09-04 17:08:09 +02:00
Lennart J. Kurzweg (Nx2)
2492c5bd80 vesktop signin fix 2024-09-04 17:00:36 +02:00
Lennart J. Kurzweg (Nx2)
c9c6423bb3 fcitx5 + katana 2024-09-04 17:00:12 +02:00
Lennart J. Kurzweg (Nx2)
d7cc5f77d7 colors from wallpapers 2024-09-04 16:59:05 +02:00
Lennart J. Kurzweg (Nx2)
3cfcbc1e2a Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-08-28 14:36:15 +02:00
Lennart J. Kurzweg (Nx2)
69e2bed0ce qmk+qmk 2024-08-28 14:34:34 +02:00
Lennart J. Kurzweg (Nx2)
13264dfa24 vektop stable 2024-08-28 14:33:10 +02:00
Lennart J. Kurzweg (Nx2)
c1f24f2dc2 c 2024-08-28 14:32:51 +02:00
Lennart J. Kurzweg (Nx2)
20f8ea51c6 screen 2024-08-26 23:24:57 +02:00
Lennart J. Kurzweg (Nx2)
52d81b9175 ip range fix 2024-08-26 23:24:45 +02:00
Lennart J. Kurzweg (Nx2)
befa7fe91e Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-08-26 21:38:01 +02:00
Lennart J. Kurzweg (Nx2)
4eead91953 syncthing+nx2site(trying) 2024-08-26 21:37:36 +02:00
Lennart J. Kurzweg (Nx2)
ce84d681e0 ++++++ 2024-08-26 21:25:51 +02:00
Lennart J. Kurzweg (Nx2)
5d1d2c49e5 Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-07-28 17:19:29 +02:00
Lennart J. Kurzweg (Nx2)
73b0e338fc nx2site save (unused) 2024-07-28 17:19:25 +02:00
Lennart J. Kurzweg (Nx2)
4b42af4523 merge north master 2024-07-23 17:45:11 +02:00
Lennart J. Kurzweg (Nx2)
1e0af7a61b flake restructure 2024-07-23 17:35:57 +02:00
Lennart J. Kurzweg (Nx2)
ad784f41f9 new ollama 2024-07-23 14:08:49 +02:00
Lennart J. Kurzweg (Nx2)
ad885f7675 nvidia 555 2024-07-23 14:08:38 +02:00
Lennart J. Kurzweg (Nx2)
97ef1500ab switch to zen for north 2024-07-23 14:08:25 +02:00
Lennart J. Kurzweg (Nx2)
d29a12094a chtterino new token 2024-07-23 14:08:05 +02:00
Lennart J. Kurzweg (Nx2)
dffd47fa94 changes saved (doesnt built) 2024-07-20 21:23:47 +02:00
Lennart J. Kurzweg (Nx2)
70b3d92fb1 update_namecheap in python 2024-07-14 02:14:19 +02:00
Lennart J. Kurzweg (Nx2)
93bcb23085 kodi on ice 2024-07-14 02:13:32 +02:00
Lennart J. Kurzweg (Nx2)
bb60da2409 nvidia user conf only on nvidia systems 2024-07-14 02:12:37 +02:00
Lennart J. Kurzweg (Nx2)
6b33a71dd3 Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-07-11 15:18:13 +02:00
Lennart J. Kurzweg (Nx2)
63e68509e3 . 2024-07-11 15:17:39 +02:00
Lennart J. Kurzweg (Nx2)
152a42db08 qmk 2024-07-11 15:17:30 +02:00
Lennart J. Kurzweg (Nx2)
71fba2ade8 Vcam 2024-07-11 15:17:20 +02:00
Lennart J. Kurzweg (Nx2)
4ad5da9956 nvidia better 2024-07-11 15:17:06 +02:00
Lennart J. Kurzweg (Nx2)
2fc38d5ee7 weechat 2024-07-11 15:16:19 +02:00
Lennart J. Kurzweg (Nx2)
03d3741aed deprecation fixups 2024-07-07 23:00:19 +02:00
Lennart J. Kurzweg (Nx2)
813a3fd019 boot with windows entry 2024-07-07 22:47:49 +02:00
Lennart J. Kurzweg (Nx2)
c9f988e4e4 swww update 2024-07-07 22:47:28 +02:00
Lennart J. Kurzweg (Nx2)
ec0325a8b0 python debugging (not in helix) 2024-07-07 22:47:20 +02:00
Lennart J. Kurzweg (Nx2)
3205ca267b created assets dir with unused gtk2 2024-07-07 22:46:46 +02:00
Lennart J. Kurzweg (Nx2)
84a92a304a xournal + matrix 2024-07-03 15:44:09 +02:00
Lennart J. Kurzweg (Nx2)
a7ffa9425a flake bump 2024-07-02 22:54:29 +02:00
Lennart J. Kurzweg (Nx2)
b3f33edf19 Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-07-02 19:04:51 +02:00
Lennart J. Kurzweg (Nx2)
295277ad00 gc 2024-07-02 19:04:48 +02:00
Lennart J. Kurzweg (Nx2)
7356853a1d dm fix 2024-07-02 19:03:23 +02:00
Lennart J. Kurzweg (Nx2)
a20d64e278 gestures 2024-07-02 19:00:41 +02:00
Lennart J. Kurzweg (Nx2)
ae997e92aa hsmw smtp fix 2024-07-01 14:38:04 +02:00
Lennart J. Kurzweg (Nx2)
8394da19df helix spellcheck with ltex 2024-07-01 01:01:53 +02:00
Lennart J. Kurzweg (Nx2)
bf3ac16c62 better scripts fix 2024-06-29 23:18:46 +02:00
Lennart J. Kurzweg (Nx2)
981d72cdb7 Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-06-29 21:59:40 +02:00
Lennart J. Kurzweg (Nx2)
f6afb7d9e6 lock 2024-06-29 21:59:38 +02:00
Lennart J. Kurzweg (Nx2)
cc9dd87111 hyprspace 2024-06-29 21:59:17 +02:00
Lennart J. Kurzweg (Nx2)
c4e7371e22 sleeker waybar 2024-06-29 21:59:01 +02:00
Lennart J. Kurzweg (Nx2)
58e6dc97f4 vale 2024-06-29 21:58:46 +02:00
Lennart J. Kurzweg (Nx2)
9cb5a17bc1 notifiaction TR again 2024-06-29 21:58:18 +02:00
Lennart J. Kurzweg (Nx2)
e07e98120a latex lsp 2024-06-29 21:57:55 +02:00
Lennart J. Kurzweg (Nx2)
6b9190b8e1 hyprcursor package 2024-06-29 21:57:11 +02:00
Lennart J. Kurzweg (Nx2)
368f3a25fd spellcheck (not working) 2024-06-29 21:55:26 +02:00
Lennart J. Kurzweg (Nx2)
708efdefb8 c 2024-06-29 21:54:02 +02:00
Lennart J. Kurzweg (Nx2)
a791568530 bibata cursor 2024-06-29 21:53:49 +02:00
Lennart J. Kurzweg (Nx2)
4a003baae2 Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-06-27 12:48:08 +02:00
Lennart J. Kurzweg (Nx2)
a5b4fe2c3f more terminal browsers 2024-06-27 12:48:04 +02:00
Lennart J. Kurzweg (Nx2)
8280a0d245 gleam fix 2024-06-27 12:47:53 +02:00
Lennart J. Kurzweg (Nx2)
086f52da79 gpg cache (working?) 2024-06-27 12:44:47 +02:00
Lennart J. Kurzweg (Nx2)
a0911caacf better scripts 2024-06-27 12:34:49 +02:00
Lennart J. Kurzweg (Nx2)
7f01722448 Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-06-25 15:12:08 +02:00
Lennart J. Kurzweg (Nx2)
6914a99658 timer fix? 2024-06-25 15:11:07 +02:00
Lennart J. Kurzweg (Nx2)
de3973b4e4 font.nix syntax fix 2024-06-20 20:44:30 +02:00
Lennart J. Kurzweg (Nx2)
b8c1c7f302 North 20 2024-06-20 20:38:45 +02:00
Lennart J. Kurzweg (Nx2)
d0b95bce88 Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-06-19 22:03:23 +02:00
Lennart J. Kurzweg (Nx2)
85ec6f4c7c xps 19 2024-06-19 22:02:53 +02:00
Lennart J. Kurzweg (Nx2)
4d88ea7cbc Merge branch 'master' of ssh://git.nx2.site:20022/nx2/dotfiles 2024-06-19 21:59:29 +02:00
Lennart J. Kurzweg (Nx2)
39e1806e7e north 19 2024-06-19 21:58:59 +02:00
183 changed files with 9577 additions and 4213 deletions

0
.gitattributes vendored Executable file → Normal file
View File

0
.gitignore vendored Executable file → Normal file
View File

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

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Lennart J. Kurzweg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

46
README.md Normal file
View File

@@ -0,0 +1,46 @@
# ❄️ NixOS Dotfiles
![Screenshot of my desktop](splash.png)
## Information
- Using stable + unstable via flakes
- Multi-host config (Desktop, Laptop, Server)
- Using home-manager for home-configuration
- Using sops-nix with GPG + git-crypt for secrets
## Features:
- The WM Hyperland extended to more or less full a DE with
- automounting
- notifications
- a bar
- gesture control
- runner
- ...
- Virtualization support
- docker
- virt-manager
- Multilingual typing with Fcitx5
- Fully functioning Nvidia/Nvidia Prime support
- Fully customized editor `helix`
- Locally running LLM-server with tools written around it
- Fully themed ("riced") via a custom, intentionally semi-automatic, adaptive system responding to wallpaper color
- as can be seen in `flake-modules/rice.nix`
- Next-Gen shell experience with
- fish
- starship
- zoxide
- yazi
- direnv
- lazygit + lazydocker
## Thanks to
- [LibrePhoenix](https://www.youtube.com/@librephoenix) for getting me started
- [VimJoyer](https://www.youtube.com/@vimjoyer) for making quick NixOS tutorials on many topics
- Everyone that talks about NixOS in NixOS-forums and rooms instead of politics
- [Everyone that put up their code on Github](https://github.com/search?type=code&auto_enroll=true&q=language%3Anix) for me to reference
## Licensing
- The code found in this Repository is Licensed under the MIT-license
- I've decided against the GPLv3, since I am not going to sue anyone over this, but
- I encourage everyone to open source their work for anyone to at least reference

170
configuration.nix Executable file → Normal file
View File

@@ -1,125 +1,73 @@
{ pkgs, pkgs-unstable, rice, inputs, ... }: { ... }@all: with all; {
let
in
{
imports = [ imports = [
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
./system-modules/hardware-configuration.nix ./system-modules/adb.nix
./system-modules/fuse.nix ./system-modules/auto-mount.nix
./system-modules/nvidia.nix ./system-modules/tz.nix
./system-modules/users.nix ./system-modules/bluetooth.nix
./system-modules/sound.nix
./system-modules/boot.nix ./system-modules/boot.nix
./system-modules/cache.nix
./system-modules/calendar.nix
./system-modules/dm.nix ./system-modules/dm.nix
./system-modules/networking.nix
./system-modules/virtualisation.nix
./system-modules/sshd.nix
./system-modules/gpg.nix
./system-modules/sops.nix
./system-modules/syncthing.nix
# ./system-modules/hsmw.nix # old
./system-modules/docker.nix ./system-modules/docker.nix
./system-modules/fcitx5.nix
./system-modules/fonts.nix
./system-modules/fuse.nix
./system-modules/games.nix
./system-modules/gc.nix
./system-modules/gpg.nix
./system-modules/hardware-configuration.nix
./system-modules/health_reminder.nix ./system-modules/health_reminder.nix
./system-modules/ollama.nix ./system-modules/hsmw.nix
./system-modules/nx2site.nix ./system-modules/kanata.nix
./system-modules/terminal.nix
./system-modules/kodi.nix ./system-modules/kodi.nix
]; ./system-modules/networking.nix
./system-modules/nixd.nix
./system-modules/nvidia.nix
./system-modules/obs.nix
./system-modules/ollama.nix
# Set your time zone. ./system-modules/qmk.nix
time.timeZone = "Europe/Berlin"; ./system-modules/scanning.nix
./system-modules/sops.nix
# Select internationalisation properties. ./system-modules/sound.nix
i18n.defaultLocale = "en_US.UTF-8"; ./system-modules/sshd.nix
console.font = "Lat2-Terminus16"; ./system-modules/input.nix
console.keyMap = "de"; ./system-modules/syncthing.nix
./system-modules/tuda.nix
services.xserver = { ./system-modules/gui.nix
enable = true; ./system-modules/editor.nix
xkb = { ./system-modules/printing.nix
layout = "de"; ./system-modules/security.nix
options = "eurosign:e,caps:escape"; ./system-modules/users.nix
}; ./system-modules/virtualisation.nix
# lightdm in lightdm.nix ./system-modules/ydotool.nix
}; ] ++ (if (hyper.host == "NxACE") then [
# Enable CUPS to print documents. ./system-modules/nx2site.nix
services.printing.enable = true; ./system-modules/hugo.nix
./system-modules/postgres.nix
# rtkit is optional but recommended ./system-modules/nx2site/proxy.nix
security.rtkit.enable = true; ./system-modules/nx2site/audiobookshelf.nix
./system-modules/nx2site/copyparty.nix
# Enable touchpad support (enabled default in most desktopManager). ./system-modules/nx2site/gitea.nix
services.xserver.libinput.enable = true; ./system-modules/nx2site/open-web-calendar.nix
hardware.uinput.enable = true; ./system-modules/nx2site/radicale.nix
./system-modules/nx2site/vaultwarden.nix
hardware.bluetooth.enable = true; # enables support for Bluetooth ./system-modules/nx2site/paperless.nix
hardware.bluetooth.powerOnBoot = true; # ./system-modules/calendar/publish.nix
services.blueman.enable = true; ./system-modules/calendar/lec.nix
./system-modules/calendar/lr.nix
nixpkgs.config.allowUnfree = true; ./system-modules/calendar/dicos.nix
# nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) allowed.unfree-packages; ] else [
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
git
lazygit # home-manager module is bugged
git-crypt
wget
curl
zip
unzip
p7zip
unar
nano
micro
htop
direnv
openssl
blueman
dmidecode
file
] ++ (with pkgs-unstable; [
sendme
]); ]);
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
environment.variables = { systemd.extraConfig = "DefaultLimitNOFILE=2048";
EDITOR = "hx"; system.stateVersion = hyper.pkgs-version;
VISUAL = "hx";
};
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
] ++ (with rice.font; [
base.package
code.package
]) ++ (with pkgs-unstable; [
newcomputermodern
]);
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
programs.hyprland = {
# config is done with home-manager
enable = true;
xwayland.enable = true;
};
system.stateVersion = "24.05";
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];
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
''; '';
} }

48
flake-modules/allowed.nix Normal file
View File

@@ -0,0 +1,48 @@
{
unfree = [
"cursor"
"discord"
"spotify"
"obsidian"
"steam"
"steam-unwrapped"
"zoom-us"
"zoom"
# 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-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"
"vscode-extension-mhutchie-git-graph"
];
inecure = [
# "electron-25.9.0"
];
}

13
flake-modules/colors.json Normal file
View File

@@ -0,0 +1,13 @@
{
"base": {
"foreground": "#eddbef",
"background": "#100711"
},
"to_alter": {
"accent": "#ba71c0",
"secondary": "#3266ff",
"tertiary": "#4bb6e6",
"special": "#76c071",
"weird": "#c08571"
}
}

4
flake-modules/nvidia.nix Normal file
View File

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

75
flake-modules/rice.nix Normal file
View File

@@ -0,0 +1,75 @@
pkgs: rec {
lib = import ../nxlib/ricelib.nix pkgs.lib;
transparency = 0.8;
rounding = 3;
gap-size = 5;
border-width = 2;
color = let
dark = (-0.4);
darker = (-0.6);
bright = 0.4;
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 {
black = "#040404"; # "#111111" "#001100";
white = "#dddddd"; # "#dddddd" "#66dd66";
blue = "#4444dd"; # "#3333dd" "#003300";
cyan = "#44dddd"; # "#11dddd" "#00dd55";
green = "#44dd44"; # "#11dd11" "#11dd11";
magenta = "#dd44dd"; # "#dd11dd" "#005500";
red = "#dd4444"; # "#dd1111" "#00aa00";
yellow = "#dddd44"; # "#dddd11" "#ffff00";
};
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
fcolor = facolor // fbcolor;
xcolor = with ccolor; with fcolor; {
# background = "#000000";
# foreground = "#dddddd";
# accent = blue;
# secondary = cyan;
# tertiary = magenta;
# special = yellow;
# weird = green;
subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; };
positive = alter "#00dd00";
negative = alter "#dd0000";
border = accent.base;
border2 = secondary.base;
};
in ccolor // fcolor // xcolor;
font = {
code = rec {
name = "JetBrainsMono Nerd Font";
package = pkgs.nerd-fonts.jetbrains-mono;
regular-path = "${package}/share/fonts/truetype/NerdFonts/JetBrainsMonoNerdFont-Regular.ttf";
};
base = {
# name = "NewComputerModern08";
# package = pkgs.newcomputermodern;
name = "Atkinson Hyperlegible";
package = pkgs.atkinson-hyperlegible-next;
};
};
cursor = {
name = "Bibata-Original-Classic";
package = pkgs.bibata-cursors;
size = 24;
};
}

818
flake.lock generated Executable file → Normal file

File diff suppressed because it is too large Load Diff

275
flake.nix Executable file → Normal file
View File

@@ -2,209 +2,140 @@
description = "Multisystem NixOS Flake of Lennart J. Kurzweg"; description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-24.05"; nixpkgs.url = "nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
nixpkgs-latest.url = "github:nixos/nixpkgs?ref=master";
nixpkgs24.url = "github:NixOS/nixpkgs/nixos-24.05";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-24.05"; url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
sops-nix = { home-manager24 ={
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs24";
};
nix-on-droid = {
url = "github:nix-community/nix-on-droid/release-24.05";
inputs.nixpkgs.follows = "nixpkgs24";
inputs.home-manager.follows = "home-manager24";
};
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
sops-nix ={
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
hyprland = { lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
# url = "github:hyprwm/Hyprland"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
# inputs.nixpkgs.follows = "nixpkgs";
};
hyprland-plugins = { hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins"; url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland"; inputs.hyprland.follows = "hyprland";
}; };
# Hyprspace = {
# url = "github:KZDKM/Hyprspace";
# inputs.hyprland.follows = "hyprland";
# };
# nixvim = { yazi.url = "github:sxyazi/yazi";
# url = "github:nix-community/nixvim/nixos-23.11";
# inputs.nixpkgs.follows = "nixpkgs"; copyparty.url = "github:9001/copyparty";
# };
lanzaboote = {
url = "github:nix-community/lanzaboote/v0.3.0";
# inputs.nixpkgs.follows = "nixpkgs-unstable";
};
#arion = {
# url = "github:hercules-ci/arion";
# inputs.nixpkgs.follows = "nixpkgs";
#};
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
# yazi.url = "github:sxyazi/yazi";
}; };
outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... }@inputs: outputs = { ... }@inputs: with inputs; let
let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system}; simple-pkgs = import nixpkgs { inherit system; };
pkgs-unstable = nixpkgs-unstable.legacyPackages.${system}; config = { allowUnfreePredicate = pkg: builtins.elem (simple-pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
hyper-base = rec {
system = "x86_64-linux";
user = "nx2"; user = "nx2";
domain = "nx2.site";
nvidia = { home = "/home/${user}";
enable = true; webroot = "/var/lib/hugo/nx2site/public";
prime = true;
# unfree = if enable then [
unfree = [
"nvidia-x11"
"nvidia-settings"
"nvidia-persistenced"
"cudatoolkit"
"cudatoolkit-11.8.0"
"cudatoolkit-12.2.2"
];
# ] else [];
};
allowed = {
unfree-packages = [
"spotify"
"cudatoolkit-12.2.2"
"discord"
"obsidian"
"zoom-us"
"zoom"
] ++ nvidia.unfree;
inecure-packages = [
"electron-25.9.0"
];
}; };
get-pkgs = { host, system?system, nixpkgs?inputs.nixpkgs, version?"25.05" }: import nixpkgs {
inherit system config;
overlays = [(final: prev: {
unstable = import nixpkgs-unstable { inherit system config; };
latest = import nixpkgs-latest { inherit system config; };
inherit version;
})] ++ (if host == "NxACE" then [
copyparty.overlays.default
] else []);
};
nvidia-base = import ./flake-modules/nvidia.nix;
secrets = import ./git-crypt/secrets.nix; secrets = import ./git-crypt/secrets.nix;
rice = import ./flake-modules/rice.nix simple-pkgs;
rice = rec { in {
lib = import ./nxlib/ricelib.nix { lib = nixpkgs.lib; }; nixosConfigurations = let
transparency = 0.8; make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
rounding = 10; pkgs = get-pkgs { inherit host; };
gap-size = 10;
border-width = 3;
color =
let
dark = (-0.3);
bright = (0.5);
alter-set = let f = rice.lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
alter = let f = rice.lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
ccolor = builtins.mapAttrs alter-set {
black = "#000022"; # "#111111" "#001100";
white = "#ddddff"; # "#dddddd" "#66dd66";
blue = "#4422ff"; # "#3333dd" "#003300";
cyan = "#11dddd"; # "#11dddd" "#00dd55";
green = "#11dd99"; # "#11dd11" "#11dd11";
magenta = "#6622dd"; # "#dd11dd" "#005500";
red = "#dd1166"; # "#dd1111" "#00aa00";
yellow = "#dd6611"; # "#dddd11" "#ffff00";
};
xcolor = with ccolor; rec {
background = black.dark;
foreground = white.base;
border = cyan.base;
border2 = blue.base;
accent = blue;
secondary = cyan;
tertiary = magenta;
special = yellow;
weird = green;
positive = alter "#00dd00";
negative = alter "#dd0000";
};
# ccolor = builtins.mapAttrs alter-set {
# black = "#112200";
# white = "#ddffdd";
# blue = "#779944";
# cyan = "#11ffcc";
# green = "#00ff00";
# magenta = "#449999";
# red = "#dd2200";
# yellow = "#ffff11";
# };
# xcolor = with ccolor; rec {
# background = black.dark; # black.dark;
# foreground = white.base; # white.base;
# border = accent.base; # cyan.base;
# border2 = yellow.base; # blue.base;
# accent = green; # blue;
# secondary = red; # cyan;
# tertiary = yellow; # magenta;
# special = blue; # yellow;
# weird = magenta; # green;
# positive = alter "#00dd00"; # alter "#00dd00";
# negative = alter "#dd0000"; # alter "#dd0000";
# };
in ccolor // xcolor;
font = {
code = {
name = "JetBrainsMono-NF";
name2 = "JetBrainsMono Nerd Font";
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
# name = "CascadiaCove-NF";
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
};
base = {
name = "Atkinson Hyperlegible";
package = pkgs.atkinson-hyperlegible;
};
};
};
in
{
nixosConfigurations = {
NxXPS = let host = "NxXPS"; in nixpkgs.lib.nixosSystem {
inherit system;
modules = [ ./configuration.nix ]; modules = [ ./configuration.nix ];
specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; specialArgs = let
hyper = hyper-base // { inherit host; nvidia = (nvidia-base // nvidia-settings); };
in { inherit inputs hyper rice secrets; };
}; };
NxNORTH = let host = "NxNORTH"; in nixpkgs.lib.nixosSystem { make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
inherit system; pkgs = get-pkgs { inherit host; };
modules = [ ./configuration.nix ]; modules = [ ./wsl.nix ];
specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; specialArgs = let
}; hyper = hyper-base // { inherit host; };
NxACE = let host = "NxACE"; nvidia.enable = false; in nixpkgs.lib.nixosSystem { rice = import ./flake-modules/rice.nix pkgs;
inherit system; in { inherit inputs hyper rice; };
modules = [ ./configuration.nix ];
specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; };
}; };
in {
NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; };
NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; };
NxACE = make-nixos-system "NxACE" { enable = false; };
NxDCS = make-nixos-wsl-system "NxDCS";
}; };
homeConfigurations = { nixOnDroidConfigurations = let
"${user}@NxXPS" = let host = "NxXPS"; in home-manager.lib.homeManagerConfiguration { makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec {
inherit pkgs; pkgs = let
modules = [ ./home.nix ]; options = { inherit host; system = "aarch64-linux"; };
extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; in (get-pkgs options) //
(get-pkgs (options // { version = "24.05"; nixpkgs = nixpkgs24; } )
);
modules = [ ./nod.nix ];
home-manager-path = home-manager24.outPath;
extraSpecialArgs = let
hyper = hyper-base // {
inherit host;
system = "aarch64-linux";
user = "nix-on-droid";
home = "/data/data/com.termux.nix/files/home";
}; };
"${user}@NxNORTH" = let host = "NxNORTH"; in home-manager.lib.homeManagerConfiguration { rice = import ./flake-modules/rice.nix pkgs;
inherit pkgs; in { inherit inputs hyper rice; };
modules = [ ./home.nix ];
extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; };
}; };
"${user}@NxACE" = let host = "NxACE"; nvidia.enable = false; in home-manager.lib.homeManagerConfiguration { in { NxS23U = makeNODConfiguration "NxS23U"; };
inherit pkgs;
homeConfigurations = let
make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
pkgs = get-pkgs { inherit host; };
modules = [ ./home.nix ]; modules = [ ./home.nix ];
extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; extraSpecialArgs = let
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
in { inherit inputs hyper rice secrets; };
}; };
"tv@NxACE" = make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration {
let pkgs = get-pkgs { inherit host; };
host = "NxACE"; modules = [ ./shell-only.nix ];
user = "tv"; extraSpecialArgs = let
nvidia.enable = pkgs.kib.mkForce false; hyper = hyper-base // { inherit host; };
in in { inherit inputs hyper rice secrets; };
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [ ./home.nix ];
extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; };
}; };
in {
"${hyper-base.user}@NxXPS" = make-home-configuration "NxXPS" hyper-base.user { enable = true; prime = true; };
"${hyper-base.user}@NxNORTH" = make-home-configuration "NxNORTH" hyper-base.user { enable = true; prime = false; };
"${hyper-base.user}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; };
"${hyper-base.user}@NxDCS" = make-shell-configuration "NxDCS" hyper-base.user;
}; };
}; };
} }

0
git-crypt/easyroam-hsmw/easyroam_client_cert.pem Executable file → Normal file
View File

0
git-crypt/easyroam-hsmw/easyroam_client_key.pem Executable file → Normal file
View File

0
git-crypt/easyroam-hsmw/easyroam_root_ca.pem Executable file → Normal file
View File

0
git-crypt/pnx-vpn/ljk-pnx-ca.pem Executable file → Normal file
View File

0
git-crypt/pnx-vpn/ljk-pnx-cert.key Executable file → Normal file
View File

0
git-crypt/pnx-vpn/ljk-pnx-cert.pem Executable file → Normal file
View File

0
git-crypt/pnx-vpn/ljk-pnx.ovpn Executable file → Normal file
View File

BIN
git-crypt/secrets.nix Executable file → Normal file

Binary file not shown.

View File

View File

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' $@
$@
$@
$@
$@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@

View File

@@ -0,0 +1,7 @@
{ ... }:
{
services.udiskie = {
enable = true;
notify = true;
};
}

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,126 @@
{ pkgs, ... }@all: with all; {
sops.secrets = {
"nx2site/radicale/password" = { };
};
home.packages = [
(pkgs.writers.writePython3Bin "caldav_event" {
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
} /* python */ ''
import os
import json
from caldav import DAVClient
from datetime import datetime, timezone
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):
if os.path.exists(cache_file):
with open(cache_file, "r") as file:
return json.load(file, object_hook=datetime_parser)
return None
def save_cache(cache_file, data):
with open(cache_file, "w") as file:
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):
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}: {e}")
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)
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.${hyper.domain}/"
username = "nx2"
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)):
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}")
'')
];
}

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

23
home-modules/bash.nix Executable file → Normal file
View File

@@ -1,10 +1,10 @@
{ pkgs, lib, user, ... }: { pkgs, ... }:
lib.mkIf (user != "tv")
{ {
home.packages = with pkgs; [ programs.bash = let
bash init = /* bash */ ''
]; source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
programs.bash = { '';
in {
enable = true; enable = true;
shellAliases = { shellAliases = {
ll = "ls -l"; ll = "ls -l";
@@ -19,11 +19,10 @@ lib.mkIf (user != "tv")
"checkjobs" "checkjobs"
]; ];
enableCompletion = false; enableCompletion = false;
# initExtra = ''
# if [[ $- == *i* ]] # if interactive } // pkgs.lib.mkIf (pkgs.version != "24.05") {
# then shellInit = init;
# eval "$(${pkgs.starship}/bin/starship init bash)" } // pkgs.lib.mkIf (pkgs.version != "25.05") {
# fi profileExtra = init;
# '';
}; };
} }

29
home-modules/bitwarden.nix Executable file → Normal file
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
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"
'';
})
];
}

112
home-modules/calendar.nix Normal file
View File

@@ -0,0 +1,112 @@
{ pkgs, ... }@all: with all; let
calendars = with hyper; [
{
name = "Preservation";
primary = true;
url = "https://dav.${domain}/${user}/preservation/";
color = "#dddddd";
}
{
name = "Effort";
url = "https://dav.${domain}/${user}/effort/";
color = "#dd2222";
}
{
name = "Experience";
url = "https://dav.${domain}/${user}/experience/";
color = "#2222dd";
}
{
name = "Exposure";
url = "https://dav.${domain}/${user}/exposure/";
color = "#22aa22";
}
{
name = "Engagement";
url = "https://dav.${domain}/${user}/engagement/";
color = "#8800CC";
}
{
name = "Sleep as Android";
url = secrets.calendar.sleep-as-android-url;
color = "#111111";
read-only = true;
type = "ics";
}
{
name = "LEC";
url = "https://${domain}/lec.ics";
color = "#A87000";
read-only = true;
type = "ics";
}
{
name = "LR";
url = "https://${domain}/lr.ics";
color = "#005040";
read-only = true;
type = "ics";
}
{
name = "Worlds";
url = "https://zlypher.github.io/lol-events/cal/league-of-legends-world-championship.ical";
color = "#A4C3DE";
read-only = true;
type = "ics";
}
{
name = "Feiertage Hessen";
url = "https://ics.tools/Feiertage/hessen.ics";
color = "#303030";
read-only = true;
type = "ics";
}
];
default_set = {
# name =
# url =
color = "#777777";
read-only = false;
primary = false;
type = "caldav";
};
in {
home.packages = with pkgs; [
gnome-calendar
thunderbird
];
accounts.calendar.accounts = let
transform_caledar_set = calendar_set: with calendar_set; { # transform set for accounts.calendar.accounts endpoint
inherit primary;
remote = {
inherit url name;
userName = hyper.user; # my globally set username
};
};
in lib.attrsets.mergeAttrsList (
map (calendar: {
"${calendar.name}" = transform_caledar_set ( default_set // calendar );
}) calendars
);
programs.thunderbird.settings = let
to_safe_name = name: (builtins.replaceStrings ["."] ["-"]) name;
in (lib.attrsets.mergeAttrsList (
map (calendar: with ( default_set // calendar ); {
"calendar.registry.${to_safe_name calendar.name}.cache.enabled" = true;
"calendar.registry.${to_safe_name calendar.name}.calendar-main-default" = primary;
"calendar.registry.${to_safe_name calendar.name}.calendar-main-in-composite" = true;
"calendar.registry.${to_safe_name calendar.name}.color" = color;
"calendar.registry.${to_safe_name calendar.name}.name" = name;
"calendar.registry.${to_safe_name calendar.name}.type" = type;
"calendar.registry.${to_safe_name calendar.name}.uri" = url;
"calendar.registry.${to_safe_name calendar.name}.username" = hyper.user;
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
}) calendars
) // {
"calendar.list.sortOrder" = lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars;
"calendar.week.start" = 1;
});
}

999
home-modules/chatterino.nix Executable file → Normal file

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -1,29 +1,119 @@
{ config, pkgs, rice, ... }: { rice, ... }:
{ {
home.file.".config/color-pallet.txt".text = with rice.color; '' home.file.".config/color-pallete.html".text = with rice.color; let
black: dark: ${black.dark} cb = color-set: color-name: size: /* html */ ''
base: ${black.base} <div class="color-container" style="border-color: ${color-set.base}">
bright: ${black.bright} <div class="color-box" style="background: ${color-set.darker}; height: ${builtins.toString size}px;">
white: dark: ${white.dark} <p style="color: ${color-set.bright}"> ${color-name}.darker </p>
base: ${white.base} <p sktyle="color: ${color-set.bright}"> ${color-set.darker} </p>
bright: ${white.bright} </div>
blue: dark: ${blue.dark} <div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
base: ${blue.base} <p style="color: ${color-set.brighter}"> ${color-name}.dark </p>
bright: ${blue.bright} <p style="color: ${color-set.brighter}"> ${color-set.dark} </p>
magenta: dark: ${magenta.dark} </div>
base: ${magenta.base} <div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
bright: ${magenta.bright} <p class="dynamic-text"> ${color-name}.base </p>
red: dark: ${red.dark} <p class="dynamic-text"> ${color-set.base} </p>
base: ${red.base} </div>
bright: ${red.bright} <div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
cyan: dark: ${cyan.dark} <p style="color: ${color-set.darker}"> ${color-name}.bright </p>
base: ${cyan.base} <p style="color: ${color-set.darker}"> ${color-set.bright} </p>
bright: ${cyan.bright} </div>
green: dark: ${green.dark} <div class="color-box" style="background: ${color-set.brighter}; height: ${builtins.toString size}px;">
base: ${green.base} <p style="color: ${color-set.dark}"> ${color-name}.brighter </p>
bright: ${green.bright} <p style="color: ${color-set.dark}"> ${color-set.brighter} </p>
yellow: dark: ${yellow.dark} </div>
base: ${yellow.base} </div>
bright: ${yellow.bright} '';
rgb = rice.lib.hex-to-rgb-comma-string;
s = builtins.toString;
in /* html */ ''
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta name="darkreader-lock">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Color Pallete</title>
<style>
* {
margin: 0px;
padding: 0px;
}
html {
background: transparent;
}
body {
font-family: ${rice.font.base.name};
color: ${foreground};
width: fit-content;
margin: 10px auto 10px auto;
background: rgba(${rgb background},${s rice.transparency});
border: ${s rice.border-width}px solid ${border};
border-radius: ${s rice.rounding}px;
padding: ${s rice.gap-size}px;
}
h1 {
margin: ${s rice.gap-size}px;
}
.color-container {
font-family: ${rice.font.code.name};
display: flex;
gap: ${s rice.gap-size}px;
margin: ${s rice.gap-size}px;
}
.color-box {
width: 200px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
border-radius: ${s rice.rounding}px;
}
</style>
</head>
<body>
<h1> Color Pallete </h1>
${cb accent "accent" 100}
${cb secondary "secondary" 100}
${cb tertiary "tertiary" 100}
${cb weird "weird" 80}
${cb special "special" 80}
${cb subtle "subtle" 80}
<br>
${cb positive "positive" 70}
${cb negative "negative" 70}
<br>
${cb black "black" 50}
${cb white "white" 50}
${cb blue "blue" 50}
${cb cyan "cyan" 50}
${cb green "green" 50}
${cb magenta "magenta" 50}
${cb red "red" 50}
${cb yellow "yellow" 50}
</body>
<script>
function getLuminance(color) {
const rgb = color.match(/\w\w/g).map((c) => parseInt(c, 16));
const [r, g, b] = rgb.map((val) => {
const channel = val / 255;
return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);
});
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
}
function setDynamicTextColor() {
const texts = document.getElementsByClassName("dynamic-text");
function ff(text) {
const backgroundColor = text.parentElement.style.backgroundColor;
const rgbValues = backgroundColor.match(/\d+/g).map(Number);
const hexColor = `#''${rgbValues.map(c => c.toString(16).padStart(2, '0')).join("")}`;
const luminance = getLuminance(hexColor);
text.style.color = luminance < 0.2 ? '${foreground}' : '${background}';
};
for (let id in texts) { ff(texts[id]); }
}
setDynamicTextColor();
</script>
</html>
''; '';
} }

13
home-modules/direnv.nix Normal file
View File

@@ -0,0 +1,13 @@
{ ... }:
{
programs = {
direnv = {
enable = true;
# enableBashIntegration = true;
nix-direnv.enable = true;
config = {
hide_env_diff = true;
};
};
};
}

681
home-modules/discord.nix Executable file → Normal file
View File

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

156
home-modules/email.nix Executable file → Normal file
View File

@@ -1,35 +1,108 @@
{ config, pkgs, lib, host, secrets, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE") lib.mkIf (hyper.host != "NxACE")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
thunderbird thunderbird
]; ];
programs.thunderbird = let
programs.thunderbird = { inherit (lib.generators) toJSON;
extensions = toJSON {} {
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
};
in {
enable = true; enable = true;
profiles = { profiles = {
default = { "${hyper.user}" = {
isDefault = true; isDefault = true;
settings = { settings = with rice.color; {
"calendar.alarms.showmissed" = false; "calendar.alarms.showmissed" = false;
"calendar.alarms.playsound" = false; "calendar.alarms.playsound" = false;
"calendar.alarms.show" = 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 = { accounts.email.accounts = let
"gamil-online" = { OAuth2Settings = id: {
"mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.server.server_${id}.authMethod" = 10;
};
in {
gmail-online = {
address = secrets.email.gmail-online.mail; address = secrets.email.gmail-online.mail;
realName = "Lennart J. Kurzweg"; realName = "Lennart J. Kurzweg";
flavor = "gmail.com"; flavor = "gmail.com";
primary = true; primary = true;
smtp.tls.useStartTls = true;
signature = { signature = {
text = '' text = ''
--
About Me: https://nx2.site/about-me About Me: https://nx2.site/about-me
Contact: https://nx2.site/contact Contact: https://nx2.site/contact
GPG: https://nx2.site/gpg GPG: https://nx2.site/gpg
@@ -38,17 +111,18 @@ lib.mkIf (host != "NxACE")
}; };
thunderbird = { thunderbird = {
enable = true; enable = true;
profiles = [ "default" ]; profiles = [ "nx2" ];
# The id given as argument is an automatically generated account identifier.
settings = OAuth2Settings;
}; };
}; };
"gamil-business" = { gmail-business = {
address = secrets.email.gmail-business.mail; address = secrets.email.gmail-business.mail;
realName = "Lennart J. Kurzweg"; realName = "Lennart J. Kurzweg";
flavor = "gmail.com"; flavor = "gmail.com";
signature = { signature = {
text = '' text = ''
--
About Me: https://nx2.site/about-me About Me: https://nx2.site/about-me
Contact: https://nx2.site/contact Contact: https://nx2.site/contact
GPG: https://nx2.site/gpg GPG: https://nx2.site/gpg
@@ -57,26 +131,29 @@ lib.mkIf (host != "NxACE")
}; };
thunderbird = { thunderbird = {
enable = true; enable = true;
profiles = [ "default" ]; profiles = [ "nx2" ];
# The id given as argument is an automatically generated account identifier.
settings = OAuth2Settings;
}; };
}; };
# "hsmw" = { # hsmw = with secrets.email.hsmw; {
# address = secrets.email.hsmw.mail; # address = "${un}@hs-mittweida.de";
# userName = "${un}@hs-mittweida.de";
# realName = "Lennart J. Kurzweg"; # realName = "Lennart J. Kurzweg";
# imap = { # imap = {
# port = 993; # port = 993;
# host = "mail.hs-mittweida.de"; # host = "xc.hs-mittweida.de";
# }; # };
# smtp = { # smtp = {
# port = 465; # port = 587;
# host = "mail.hs-mittweida.de"; # host = "xc.hs-mittweida.de";
# tls.useStartTls = true;
# }; # };
# signature = { # signature = {
# text = '' # text = ''
# -- # MatNr: ${mnr}
# MatNr: ${secrets.email.hsmw.mnr} # SemGr: ${semgr}
# SemGr: ${secrets.email.hsmw.semgr}
# About Me: https://nx2.site/about-me # About Me: https://nx2.site/about-me
# Contact: https://nx2.site/contact # Contact: https://nx2.site/contact
# GPG: https://nx2.site/gpg # GPG: https://nx2.site/gpg
@@ -85,9 +162,44 @@ lib.mkIf (host != "NxACE")
# }; # };
# thunderbird = { # thunderbird = {
# enable = true; # enable = true;
# profiles = [ "default" ]; # 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; {
address = "${un}@stud.tu-darmstadt.de";
userName = tuid;
realName = "Lennart J. Kurzweg";
imap = {
port = 993;
host = "imap.stud.tu-darmstadt.de";
};
smtp = {
port = 465;
host = "smtp.tu-darmstadt.de";
tls.enable = true;
};
signature = {
text = ''
Field: MSc. AI/ML
MNr: ${mnr}
TU-ID: ${tuid}
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 "fgl" ''
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,170 +1,16 @@
{pkgs, secrets, user, inputs, ...}: { { pkgs, ... }@all: with all; {
programs.firefox = { programs.firefox.profiles."{hyper.user}".settings = {
enable = true; "widget.use-xdg-desktop-portal.file-picker" = 1;
package = pkgs.firefox; };
profiles.${user} = { home = {
# extensions = with inputs.firefox-addons; [ packages = with pkgs; [
# ublock-origin firefox
# darkreader
# bitwarden
# flagfox
# sponsorblock
# languagetool
# istilldontcareaboutcookies
# return-youtube-dislikes
# ];
extensions = [ inputs.firefox-addons.darkreader ];
bookmarks = [
{
name = "Github Code Search";
keyword = "cs";
url = "https://github.com/search?type=code&auto_enroll=true";
}
]; ];
settings = { file = {
"accessibility.typeaheadfind.flashBar" = 0; ".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
"app.normandy.first_run" = false; ".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice;
"app.normandy.migrationsApplied" = 12;
"app.normandy.user_id" = "25f4d747-3c5e-40e8-b520-caed34976e7a";
"browser.aboutConfig.showWarning" = false;
"browser.bookmarks.addedImportButton" = true;
"browser.bookmarks.editDialog.confirmationHintShowCount" = 1;
"browser.bookmarks.restore_default_bookmarks" = false;
"browser.bookmarks.showMobileBookmarks" = true;
"browser.contentblocking.category" = "standard";
"browser.contextual-services.contextId" = "{7fc76500-3ce1-4c39-8fa5-8e9964c04ecc}";
"browser.download.lastDir" = "/home/nx2/Documents";
"browser.download.panel.shown" = true;
"browser.download.viewableInternally.typeWasRegistered.avif" = true;
"browser.download.viewableInternally.typeWasRegistered.webp" = true;
"browser.eme.ui.firstContentShown" = true;
"browser.engagement.ctrlTab.has-used" = true;
"browser.engagement.downloads-button.has-used" = true;
"browser.engagement.fxa-toolbar-menu-button.has-used" = true;
"browser.laterrun.bookkeeping.sessionCount" = 1;
"browser.migration.version" = 144;
"browser.newtabpage.activity-stream.impressionId" = "{a6561b3f-3884-4b37-b9c1-c67e80f5792a}";
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.activity-stream.topSitesRows" = 2;
"browser.newtabpage.pinned" = "[{\"url\":\"https://www.youtube.com/\",\"label\":\"youtube\",\"baseDomain\":\"youtube.com\"},{\"url\":\"https://www.twitch.tv/\",\"baseDomain\":\"twitch.tv\"},{\"url\":\"https://nx2.site/\",\"label\":\"nx2\",\"baseDomain\":\"nx2.site\"},{\"url\":\"https://feddit.de\",\"label\":\"Lemmy\",\"baseDomain\":\"feddit.de\"},{\"url\":\"https://ieji.de\",\"label\":\"Mastadon\",\"baseDomain\":\"ieji.de\"},{\"url\":\"https://www.hs-mittweida.de/\",\"label\":\"HSMW\",\"baseDomain\":\"hs-mittweida.de\"},{\"url\":\"http://wiki.hyprland.org/\",\"label\":\"hyprland\",\"baseDomain\":\"wiki.hyprland.org\"},{\"url\":\"https://wiki.archlinux.org\",\"label\":\"ArchWiki\",\"baseDomain\":\"wiki.archlinux.org\"},{\"url\":\"https://chat.openai.com/\",\"label\":\"ChatGPT\",\"baseDomain\":\"chat.openai.com\"},{\"url\":\"https://www.nerdfonts.com/cheat-sheet\",\"label\":\"Nerdfonts\",\"baseDomain\":\"nerdfonts.com\"},{\"url\":\"http://127.0.0.1:8384/\",\"label\":\"Syncthing\",\"baseDomain\":\"127.0.0.1\"},{\"url\":\"https://lutris.net/\",\"label\":\"Lutris\",\"baseDomain\":\"lutris.net\"},{\"url\":\"https://www.namecheap.com/\",\"label\":\"Namecheap\",\"baseDomain\":\"namecheap.com\"},{\"url\":\"https://hub.docker.com/\",\"label\":\"Docker Hub\",\"baseDomain\":\"hub.docker.com\"},{\"url\":\"https://www.netflix.com/\",\"label\":\"Netflix\",\"baseDomain\":\"netflix.com\"},{\"url\":\"https://www.amazon.de/Amazon-Video/b/?&node=3010075031&ref=dvm_MLP_ROWEU_DE_1\",\"label\":\"Prime Video\"},{\"url\":\"https://translate.google.com/\",\"label\":\"Google Translate\",\"baseDomain\":\"translate.google.com\"}]";
"browser.newtabpage.storageVersion" = 1;
"browser.pageActions.persistedActions" = "{\"ids\":[\"bookmark\",\"_802a552e-13d1-4683-a40a-1e5325fba4bb_\"],\"idsInUrlbar\":[\"_802a552e-13d1-4683-a40a-1e5325fba4bb_\",\"bookmark\"],\"idsInUrlbarPreProton\":[],\"version\":1}";
"browser.pagethumbnails.storage_version" = 3;
"browser.pdfjs.feature-tour" = "{\"screen\":\"\",\"complete\":true}";
"browser.policies.applied" = true;
"browser.proton.toolbar.version" = 3;
"browser.rights.3.shown" = true;
"browser.search.region" = "DE";
"browser.startup.couldRestoreSession.count" = 2;
"browser.startup.homepage_override.mstone" = "126.0";
"browser.theme.toolbar-theme" = 0;
"browser.translations.neverTranslateLanguages" = "de";
"browser.translations.panelShown" = true;
"browser.uiCustomization.state" = "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[\"sponsorblocker_ajay_app-browser-action\",\"_d8b32864-153d-47fb-93ea-c273c4d1ef17_-browser-action\",\"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action\",\"linkhints_lydell_github_io-browser-action\",\"languagetool-webextension_languagetool_org-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"_de22fd49-c9ab-4359-b722-b3febdc3a0b0_-browser-action\",\"amptra_keepa_com-browser-action\",\"pywalfox_frewacom_org-browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"customizableui-special-spring1\",\"urlbar-container\",\"customizableui-special-spring2\",\"save-to-pocket-button\",\"downloads-button\",\"fxa-toolbar-menu-button\",\"unified-extensions-button\",\"ublock0_raymondhill_net-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"addon_darkreader_org-browser-action\",\"_d7742d87-e61d-4b78-b8a1-b469842139fa_-browser-action\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"PersonalToolbar\":[\"import-button\",\"personal-bookmarks\"]},\"seen\":[\"save-to-pocket-button\",\"developer-button\",\"_d8b32864-153d-47fb-93ea-c273c4d1ef17_-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"addon_darkreader_org-browser-action\",\"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action\",\"linkhints_lydell_github_io-browser-action\",\"sponsorblocker_ajay_app-browser-action\",\"languagetool-webextension_languagetool_org-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"_de22fd49-c9ab-4359-b722-b3febdc3a0b0_-browser-action\",\"amptra_keepa_com-browser-action\",\"_d7742d87-e61d-4b78-b8a1-b469842139fa_-browser-action\",\"pywalfox_frewacom_org-browser-action\"],\"dirtyAreaCache\":[\"nav-bar\",\"PersonalToolbar\",\"toolbar-menubar\",\"TabsToolbar\",\"unified-extensions-area\"],\"currentVersion\":20,\"newElementCount\":2}";
"browser.urlbar.placeholderName" = "Google";
"browser.urlbar.placeholderName.private" = "Google";
"browser.urlbar.quicksuggest.migrationVersion" = 2;
"browser.urlbar.quicksuggest.scenario" = "history";
"browser.urlbar.tipShownCount.searchTip_onboard" = 4;
"browser.urlbar.tipShownCount.searchTip_redirect" = 1;
"datareporting.policy.dataSubmissionPolicyAcceptedVersion" = 2;
"devtools.debugger.prefs-schema-version" = 11;
"devtools.everOpened" = true;
"devtools.inspector.activeSidebar" = "animationinspector";
"devtools.inspector.selectedSidebar" = "animationinspector";
"devtools.netmonitor.columnsData" = "[{\"name\":\"status\",\"minWidth\":30,\"width\":5.56},{\"name\":\"method\",\"minWidth\":30,\"width\":5.56},{\"name\":\"domain\",\"minWidth\":30,\"width\":11.11},{\"name\":\"file\",\"minWidth\":30,\"width\":27.78},{\"name\":\"url\",\"minWidth\":30,\"width\":25},{\"name\":\"initiator\",\"minWidth\":30,\"width\":11.11},{\"name\":\"type\",\"minWidth\":30,\"width\":5.56},{\"name\":\"transferred\",\"minWidth\":30,\"width\":11.11},{\"name\":\"contentSize\",\"minWidth\":30,\"width\":5.56},{\"name\":\"waterfall\",\"minWidth\":150,\"width\":16.67}]";
"devtools.netmonitor.msg.visibleColumns" = "[\"data\",\"time\"]";
"devtools.toolbox.host" = "window";
"devtools.toolbox.sidebar.width" = 1406;
"devtools.toolsidebar-height.inspector" = 350;
"devtools.toolsidebar-width.inspector" = 816;
"devtools.toolsidebar-width.inspector.splitsidebar" = 513;
"distribution.iniFile.exists.appversion" = "126.0";
"distribution.iniFile.exists.value" = true;
"distribution.nixos.bookmarksProcessed" = true;
"doh-rollout.doneFirstRun" = true;
"doh-rollout.home-region" = "DE";
"dom.forms.autocomplete.formautofill" = true;
"dom.push.userAgentID" = "d5b33ca6eafc45e5b8ce2161eb075680";
"extensions.activeThemeID" = "{9b84b6b4-07c4-4b4b-ba21-394d86f6e9ee}";
"extensions.blocklist.pingCountVersion" = -1;
"extensions.databaseSchema" = 36;
"extensions.getAddons.databaseSchema" = 6;
"extensions.lastAppBuildId" = "20240509170740";
"extensions.lastAppVersion" = "126.0";
"extensions.lastPlatformVersion" = "126.0";
"extensions.pendingOperations" = false;
"extensions.pictureinpicture.enable_picture_in_picture_overrides" = true;
"extensions.quarantinedDomains.list" = "autoatendimento.bb.com.br,ibpf.sicredi.com.br,ibpj.sicredi.com.br,internetbanking.caixa.gov.br,www.ib12.bradesco.com.br,www2.bancobrasil.com.br";
"extensions.systemAddonSet" = "{\"schema\":1,\"addons\":{}}";
"extensions.ui.dictionary.hidden" = true;
"extensions.ui.extension.hidden" = false;
"extensions.ui.lastCategory" = "addons://list/extension";
"extensions.ui.locale.hidden" = true;
"extensions.ui.sitepermission.hidden" = true;
"extensions.webcompat.enable_shims" = true;
"extensions.webcompat.perform_injections" = true;
"extensions.webcompat.perform_ua_overrides" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.addon@darkreader.org" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.amptra@keepa.com" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.jid1-D7momAzRw417Ag@jetpack" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.jid1-KKzOGWgsW3Ao4Q@jetpack" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.languagetool-webextension@languagetool.org" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.linkhints@lydell.github.io" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.screenshots@mozilla.org" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.sponsorBlocker@ajay.app" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.uBlock0@raymondhill.net" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.{446900e4-71c2-419f-a6a7-df9c091e268b}" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.{762f9885-5a13-4abd-9c77-433dcd38b8fd}" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.{802a552e-13d1-4683-a40a-1e5325fba4bb}" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.{d8b32864-153d-47fb-93ea-c273c4d1ef17}" = true;
"extensions.webextensions.ExtensionStorageIDB.migrated.{de22fd49-c9ab-4359-b722-b3febdc3a0b0}" = true;
"extensions.webextensions.uuids" = "{\"formautofill@mozilla.org\":\"62543e0a-fb48-4cb5-bb50-7bc1d34123eb\",\"pictureinpicture@mozilla.org\":\"72b053a7-04e4-443d-9eb0-788fee741317\",\"screenshots@mozilla.org\":\"b0da1868-7ce5-4126-836c-cb27f7c90fd1\",\"webcompat-reporter@mozilla.org\":\"53128b30-09e3-498f-b327-8297bca2a694\",\"webcompat@mozilla.org\":\"e3fce76c-5b97-4ed2-a127-5f54ea2b55a6\",\"default-theme@mozilla.org\":\"edf40636-48ae-479c-bb15-d2c1c594f4f3\",\"addons-search-detection@mozilla.com\":\"65723b37-68b8-4463-964e-000a9efc4bee\",\"google@search.mozilla.org\":\"e8fd2d91-fda9-450d-9410-c475b13cd126\",\"wikipedia@search.mozilla.org\":\"2cb739cf-5028-4ba1-8df8-a6b4035d3e3f\",\"bing@search.mozilla.org\":\"2836d1bb-c71f-451a-a7c9-5ed0304a71fb\",\"ddg@search.mozilla.org\":\"8280c1b4-90bb-4ca8-b1e3-9c64c1cb4740\",\"{d8b32864-153d-47fb-93ea-c273c4d1ef17}\":\"6cd42543-07ad-499d-ac1f-f755b26bc2c5\",\"uBlock0@raymondhill.net\":\"d57779a5-82b8-40d3-8a7b-05b25c9e86ac\",\"{802a552e-13d1-4683-a40a-1e5325fba4bb}\":\"ac3677b0-913d-4025-a37c-5cad38597584\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\":\"6978384a-6166-415d-ab6e-a6adfbe6731d\",\"addon@darkreader.org\":\"b691cdc2-fb80-4767-9baf-bc63d916deb6\",\"{762f9885-5a13-4abd-9c77-433dcd38b8fd}\":\"6830a911-9fbf-4c6a-b07b-0293a16f919d\",\"linkhints@lydell.github.io\":\"040ed779-4e1a-4be8-bb2f-1202d6406573\",\"jid1-q4sG8pYhq8KGHs@jetpack\":\"1c3283fc-303b-4984-aa6a-3d599b7dc543\",\"sponsorBlocker@ajay.app\":\"22d4703c-dabe-4d7c-95c7-3d1527e19ef6\",\"jid1-D7momAzRw417Ag@jetpack\":\"fd28819b-1fe8-401b-8d1b-ba42808f4983\",\"{ceb74424-e8e6-4023-b972-a12e50e17fcb}\":\"ef19aad8-0b64-49d3-84f0-af90c440df49\",\"languagetool-webextension@languagetool.org\":\"b3622472-5123-41be-8b48-f2040b0d2424\",\"jid1-KKzOGWgsW3Ao4Q@jetpack\":\"283cf64b-0d7a-4fd6-8579-876ba162e3eb\",\"{de22fd49-c9ab-4359-b722-b3febdc3a0b0}\":\"4c6ae857-dccb-4a09-a2eb-8351afef4cb9\",\"amptra@keepa.com\":\"85562121-cb4f-4138-a608-d61bd0c2852a\",\"{bc5ae657-5db8-4f8a-b558-e7343e127fee}\":\"d5468646-933b-4941-9ab2-007faf58f8c1\",\"{9b84b6b4-07c4-4b4b-ba21-394d86f6e9ee}\":\"6e250173-0b11-41a3-b3f9-f1527394f0c6\"}";
"gecko.handlerService.defaultHandlersVersion" = 1;
"identity.fxaccounts.account.device.name" = "nx2s Firefox on NxXPS";
"identity.fxaccounts.account.telemetry.sanitized_uid" = "13f64fe3ab835d96147cefb0f5c11287";
"identity.fxaccounts.lastSignedInUserHash" = "u2qaIKiezOjW/0+5BuKsVe+1+U7k3SSH4qAuEPoL7Tc=";
"identity.fxaccounts.toolbar.accessed" = true;
"media.eme.enabled" = true;
"media.gmp-gmpopenh264.abi" = "x86_64-gcc3";
"media.gmp-gmpopenh264.hashValue" = "53a58bfb4c8124ad4f7655b99bfdea290033a085e0796b19245b33b91c0948fdac9f0c3e817130b352493a65d9a7a0fc8a7c1eedc618cdaa2b4580734a11cd9c";
"media.gmp-gmpopenh264.version" = "2.3.2";
"media.gmp-manager.buildID" = "20240509170740";
"media.gmp-widevinecdm.abi" = "x86_64-gcc3";
"media.gmp-widevinecdm.hashValue" = "661ad969099a89a278384f56a17ae912c3542d585ea4981f3b9a3c6e1a07f8da6ffad9db29cee194bf7834adc3ca258c775cd2b0980e3e6cb7ee8b39600dad58";
"media.gmp-widevinecdm.version" = "4.10.2710.0";
"media.gmp.storage.version.observed" = 1;
"media.videocontrols.picture-in-picture.video-toggle.has-used" = true;
"network.dns.disablePrefetch" = true;
"network.http.speculative-parallel-limit" = 0;
"network.predictor.enabled" = false;
"network.prefetch-next" = false;
"network.proxy.type" = 4;
"nimbus.syncdefaultsstore.upgradeDialog" = "{\"slug\":\"upgrade-spotlight-rollout\",\"branch\":{\"slug\":\"treatment\",\"ratio\":1,\"feature\":{\"value\":null,\"enabled\":true,\"featureId\":\"upgradeDialog\"},\"features\":null},\"active\":true,\"experimentType\":\"rollout\",\"source\":\"rs-loader\",\"userFacingName\":\"Upgrade Spotlight Rollout\",\"userFacingDescription\":\"Experimenting on onboarding content when you upgrade Firefox.\",\"lastSeen\":\"2024-04-09T08:41:11.293Z\",\"featureIds\":[\"upgradeDialog\"],\"prefs\":[],\"isRollout\":true}";
"nimbus.syncdefaultsstore.upgradeDialog.enabled" = false;
"pdfjs.enabledCache.state" = true;
"pdfjs.migrationVersion" = 2;
"pref.privacy.disable_button.view_passwords" = false;
"privacy.purge_trackers.date_in_cookie_database" = "0";
"privacy.sanitize.pending" = "[{\"id\":\"newtab-container\",\"itemsToClear\":[],\"options\":{}}]";
"security.sandbox.content.tempDirSuffix" = "83e3690e-e3e1-4bf5-b085-737b3a2792c9";
"services.settings.clock_skew_seconds" = 0;
"services.sync.username" = secrets.email.gmail-online.mail;
"signon.autofillForms" = false;
"signon.rememberSignons" = false;
"storage.vacuum.last.index" = 2;
"toolkit.telemetry.cachedClientID" = "d2c7964b-01ee-49bf-94a9-329bd47d7606";
"toolkit.telemetry.pioneer-new-studies-available" = true;
"toolkit.telemetry.previousBuildID" = "20240509170740";
"toolkit.telemetry.reportingpolicy.firstRun" = false;
}; };
}; };
};
# xdg.mimeApps.defaultApplications = {
# "text/html" = ["firefox.desktop"];
# "text/xml" = ["firefox.desktop"];
# "x-scheme-handler/http" = ["firefox.desktop"];
# "x-scheme-handler/https" = ["firefox.desktop"];
# };
} }
# 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,92 @@
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 : linear-gradient(180deg,rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 100%) !important;
}
.tabbrowser-tab[selected="true"] {
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,226 @@
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 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;
}
#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 {
}
}
@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,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 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;
# }
# }

78
home-modules/fish.nix Executable file → Normal file
View File

@@ -1,11 +1,9 @@
{ config, pkgs, lib, system, user, allowed, secrets, ... }: { pkgs, ... }@all: with all;
lib.mkIf (user != "tv")
{ {
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
@@ -18,18 +16,20 @@ lib.mkIf (user != "tv")
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' ') $(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) $(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/')
$(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) $(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/')
$(echo -e "$logo" | sed -n 10p): $(yazi --version) $(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1) $(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
" "
echo -e "$msg" echo -e "$msg"
'') '')
@@ -39,22 +39,28 @@ lib.mkIf (user != "tv")
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";
nn = "nano"; nn = "nano";
m = "micro"; hxx = "hx .";
p = "python"; p = "python";
ipy = "ipython"; ipy = "ipython";
c = "codium"; c = "codium";
cc = "codium .";
code = "codium";
g = "git"; g = "git";
lzg = "lazygit"; lzg = "lazygit";
# gst = "git status"; # gst = "git status";
@@ -76,23 +82,43 @@ lib.mkIf (user != "tv")
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}'';
code = "codium";
# ya = "yazi"; # function # ya = "yazi"; # function
# nxfiglet = "figlet"; # nxfiglet = "figlet";
}; };
interactiveShellInit = '' interactiveShellInit = /* fish */ ''
set -g fish_greeting set -g fish_greeting
if not set -q IN_NIX_SHELL if not set -q IN_NIX_SHELL
nxfetch if set -q SESSION_FROM_DE
set tmp (mktemp -t "yazi-cwd.XXXXX")
yazi --cwd-file="$tmp"
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
builtin cd -- "$cwd"
end
rm -f -- "$tmp"
end
nxfetch
set -e SESSION_FROM_DE
end end
# ${pkgs.starship}/bin/starship init fish | source
# ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
''; '';
functions = { functions = {
take = /* bash */ ''
mkdir $argv
cd $argv
'';
nx_backup = let
destination = if hyper.host == "NxNORTH" then "${hyper.home}/shared/" else "${hyper.home}/backups/";
in pkgs.lib.mkIf (hyper.host == "NxXPS" || hyper.host == "NxNORTH") ''
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}
'';
# gpg = ''; # gpg = '';
# set bold \e[1m # set bold \e[1m
# set green \e[32m # set green \e[32m

23
home-modules/games.nix Executable file → Normal file
View File

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

30
home-modules/gestures.nix Executable file → Normal file
View File

@@ -1,32 +1,16 @@
{ config, pkgs, lib, host, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host == "NxXPS") lib.mkIf (hyper.host == "NxXPS")
{ {
home.packages = [ home.packages = with pkgs; [
pkgs.libinput-gestures libinput-gestures
pkgs.ydotool
]; ];
home.file.".config/libinput/gestures".text = '' home.file.".config/libinput-gestures.conf".text = ''
# Swipe threshold (0-100) # Swipe threshold (0-100)
swipe_threshold 0 swipe_threshold 0
# Gestures # Gestures
gesture swipe left 3 echo key k:276 | dotool gesture swipe right 3 ydotool key 158:1 158:0 # back
gesture swipe right 3 echo key k:275 | dotool gesture swipe left 3 ydotool key 159:1 159:0 # forward
''; '';
# systemd.user.services = {
# ydotoold = {
# Unit = {
# Description = "An auto-input utility for wayland";
# Documentation = [ "man:ydotool(1)" "man:ydotoold(8)" ];
# };
# Service = {
# ExecStart = "/run/current-system/sw/bin/ydotoold --socket-path /tmp/ydotool_socket ";
# };
# Install = {
# WantedBy = ["default.target"];
# };
# };
# };
} }

48
home-modules/ghostty.nix Normal file
View File

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

10
home-modules/gimp.nix Normal file
View File

@@ -0,0 +1,10 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
# (gimp-with-plugins.override {
# plugins = with gimpPlugins; [ bimp ];
# })
gimp
];
}

62
home-modules/git.nix Executable file → Normal file
View File

@@ -1,45 +1,15 @@
{ pkgs, lib, user, rice, ... }: { pkgs, ... }@all: with all;
lib.mkIf (user != "tv")
{ {
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/shared/nx-obsidian-vault"
"$HOME/shared/HSMW/Praxis/BCAM/bolt-llmserver"
"$HOME/shared/HSMW/Praxis/BCAM/bcam-tools"
"$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;
package = pkgs.gitFull;
userName = ''Lennart J. Kurzweg (Nx2)''; userName = ''Lennart J. Kurzweg (Nx2)'';
userEmail = "git@nx2.site"; userEmail = "git@${hyper.domain}";
delta = { delta = {
enable = true; enable = true;
options = { options = {
@@ -49,20 +19,36 @@ lib.mkIf (user != "tv")
whitespace-error-style = "22 reverse"; whitespace-error-style = "22 reverse";
}; };
}; };
extraConfig = {
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
};
}; };
programs.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; {
lightTheme = false; lightTheme = false;
activeBorderColor = [ border "bold"]; activeBorderColor = [ foreground "bold" ];
inactiveBorderColor = [ black.bright ]; inactiveBorderColor = [ border ];
optionsTextColor = [ blue.base ]; optionsTextColor = [ tertiary.base ];
selectedLineBgColor = [ foreground ]; selectedLineBgColor = [ secondary.base ];
selectedRangeByColor = [ magenta.bright ]; selectedRangeByColor = [ weird.bright ];
showRandomTip = true; showRandomTip = true;
animateExplosion = true; animateExplosion = true;
cherryPickedCommitFgColor = [ accent.base ]; # Foreground color of copied commit
cherryPickedCommitBgColor = [ secondary.dark ]; # Background color of copied commit
markedBaseCommitFgColor = [ accent.base ]; # Foreground color of marked base commit (for rebase)
markedBaseCommitBgColor = [ secondary.dark ]; # Background color of marked base commit (for rebase)
unstagedChangesColor = [ negative.base ]; # Color for file with unstaged changes
defaultFgColor = [ "default" ]; # Default text color
}; };
}; };
}; };

View File

@@ -1,64 +1,46 @@
{ pkgs, pkgs-unstable, ... }: { pkgs, ... }@all: with all; {
{ home.packages = with pkgs; [ pinentry-all ];
# there also is a system module programs.gpg = {
home.packages = with pkgs; [
gnupg
gpg-tui
] ++ ( with pkgs-unstable; [
pinentry-all
]);
# services.pcscd.enable = true;
services.gpg-agent = {
enable = true; enable = true;
package = pkgs.gnupg;
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
min2sec = min: (min * 60);
in {
enable = false;
verbose = true; verbose = true;
sshKeys = [ sshKeys = [
"97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey "97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey
]; ];
enableSshSupport = true; enableSshSupport = true;
enableFishIntegration = true; enableFishIntegration = true;
# pinentryPackage = pkgs.pinentry-gtk2; defaultCacheTtlSsh = min2sec 60;
}; defaultCacheTtl = min2sec 30;
extraConfig = ''
home.file.".gnupg/gpg.conf".text = '' allow-loopback-pinentry
# 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
''; '';
};
} }

220
home-modules/gtk.nix Executable file → Normal file
View File

@@ -1,72 +1,198 @@
{ config, pkgs, pkgs-unstable, lib, user, ... }: { pkgs, ... }@all: with all;
let let
theme-name = "Catppuccin-Macchiato-Compact-Pink-Dark"; # theme-name = "Colloid-Pink-Dark-Compact";
theme-package = pkgs.catppuccin-gtk.override { # theme-package = pkgs.colloid-gtk-theme.override {
accents = [ "pink" ]; # themeVariants = [ "pink" ];
size = "compact"; # colorVariants = [ "dark" ];
tweaks = [ "rimless" "black" ]; # sizeVariants = [ "compact" ];
variant = "macchiato"; # tweaks = [ "black" ];
}; # };
in
lib.mkIf (user != "tv") # theme-name = "catppuccin-macchiato-pink-compact+rimless,black";
{ # theme-package = pkgs.catppuccin-gtk.override {
home.packages = with pkgs; [ # accents = [ "pink" ];
# size = "compact";
# tweaks = [ "rimless" "black" ];
# variant = "macchiato";
# };
theme-name = "Materia-dark-compact";
theme-package = pkgs.materia-theme-transparent;
# theme-name = "numix";
# theme-name = "adw-gtk3-dark";
# theme-package = pkgs.adw-gtk3;
# theme-package = let
# theme-string = with rice.color; let
# h = rice.lib.nohash;
# d = rice.lib.float-to-drune;
# in /* ini */ ''
# BG=${h background}
# FG=${h foreground}
# SEL_BG=${h accent.base}
# SEL_FG=${h black.base}
# ACCENT_BG=${h accent.base}
# TXT_BG=${h black.dark}
# TXT_FG=${h foreground}
# HDR_BG=${h background}
# HDR_FG=${h foreground}
# BTN_BG=${h accent.dark}
# BTN_FG=${h foreground}
# HDR_BTN_BG=${h accent.dark}
# HDR_BTN_FG=${h foreground}
# WM_BORDER_FOCUS=${h border}
# WM_BORDER_UNFOCUS=${h accent.dark}
# ROUNDNESS=${builtins.toString rice.rounding}
# ROUNDNESS_GTK2_HIDPI=${builtins.toString rice.rounding}
# OUTLINE_WIDTH=${builtins.toString rice.border-width}
# BTN_OUTLINE_OFFSET=-3
# BTN_OUTLINE_WIDTH=1
# SPACING=${builtins.toString rice.gap-size}
# GRADIENT=0.0
# CINNAMON_OPACITY=${builtins.toString rice.transparency}
# INACTIVE_FG=${h foreground}
# INACTIVE_TXT_FG=${h foreground}
# INACTIVE_HDR_FG=${h foreground}
# ICONS_DARK=${h accent.dark}
# ICONS_MEDIUM=${h accent.base}
# ICONS_LIGHT=${h accent.bright}
# ICONS_LIGHT_FOLDER=${h accent.base}
# ICONS_SYMBOLIC_ACTION=${h accent.base}
# ICONS_SYMBOLIC_PANEL=${h accent.base}
# ICONS_STYLE=icons_papirus
# CARET1_FG=${h white.dark}
# CARET2_FG=${h black.bright}
# CARET_SIZE=0.04
# MENU_BG=${h accent.dark}
# MENU_FG=${h foreground}
# OUTLINE_WIDTH=${builtins.toString rice.border-width}
# SPOTIFY_PROTO_BG=${h accent.dark}
# SPOTIFY_PROTO_FG=${h foreground}
# SPOTIFY_PROTO_SEL=${h blue.base}
# BASE16_GENERATE_DARK=False
# BASE16_INVERT_TERMINAL=False
# BASE16_MILD_TERMINAL=False
# UNITY_DEFAULT_LAUNCHER_STYLE=False
# '';
# # theme-source-pkg = pkgs.materia-theme;
# theme-source-pkg = pkgs.themix-gui;
# in pkgs.stdenv.mkDerivation {
# name = "oomox-gtk";
# version = theme-source-pkg.version;
# src = theme-source-pkg.src;
# dontBuild = true;
# nativeBuildInputs = with pkgs; [
# glib
# libxml2
# bc
# ];
# buildInputs = with pkgs; [
# gnome-themes-extra
# gdk-pixbuf
# librsvg
# sassc
# inkscape
# optipng
# ];
# propagatedUserEnvPkgs = with pkgs; [
# gtk-engine-murrine
# ];
# # installPhase = ''
# # mkdir -p $out/share/themes/materia
# # patchShebangs .
# # ./change_color.sh -o materia -t $out/share/themes <(echo -e "${theme-string}")
# # '';
# installPhase = ''
# mkdir -p $out/share/icons/icons_papirus
# mkdir -p $out/share/icons/icons_numix
# mkdir -p $out/share/icons/icons_suruplus
# echo "${theme-string}" > $out/oomox.colors
# pushd plugins/icons_papirus
# patchShebangs .
# ./change_color.sh -o icons_papirus -d $out/share/icons/icons_papirus $out/oomox.colors
# popd
# pushd plugins/icons_numix
# patchShebangs .
# ./change_color.sh -o icons_numix -d $out/share/icons/icons_numix $out/oomox.colors
# popd
# pushd plugins/icons_suruplus
# patchShebangs .
# ./change_color.sh -o icons_suruplus -d $out/share/icons/icons_suruplus $out/oomox.colors
# popd
# mkdir -p $out/share/themes/numix
# pushd plugins/theme_oomox
# patchShebangs .
# HOME=$out ./change_color.sh -o numix -m all -t $out/share/themes $out/oomox.colors
# popd
# '';
# meta = {
# description = "custom theme utility";
# homepage = "https://github.com/themix-project/themix-gui";
# maintainers = [ ];
# };
# };
in {
home = {
packages = with pkgs; [
# gnome.gnome-themes-extra # gnome.gnome-themes-extra
# gnome.adwaita-icon-theme adwaita-icon-theme
gnome.gnome-tweaks gnome-tweaks
gtk3 gtk3
gtk4 gtk4
catppuccin-gtk # catppuccin-gtk
bibata-cursors
] ++ [ ] ++ [
# pkgs-unstable.themix-gui # pkgs-unstable.themix-gui
]; ];
sessionVariables.GTK_THEME = theme-name;
pointerCursor = {
home.sessionVariables.GTK_THEME = theme-name; gtk.enable = true;
x11.enable = true;
} // rice.cursor;
};
gtk = { gtk = {
enable = true; enable = true;
theme = { theme = {
name = theme-name; name = theme-name;
package = theme-package; package = theme-package;
}; };
gtk3.extraConfig = { gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
gtk-application-prefer-dark-theme = 1; gtk3 = {
}; extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4.extraConfig = { # extraCss = with rice.color; /* css */ ''
gtk-application-prefer-dark-theme = 1; # wnck-pager {
}; # color: ${black.bright};
cursorTheme = { # background-color: ${background};
name = "Catppuccin-Mocha-Pink-Cursors"; # }
package = pkgs.catppuccin-cursors.mochaPink;
size = 20;
};
};
home.pointerCursor = { # wnck-pager:selected {
gtk.enable = true; # color: ${background};
x11.enable = true; # background-color: ${accent.base};
package = pkgs.catppuccin-cursors.mochaPeach; # }
name = "Catppuccin-Mocha-Pink-Cursors"; # '';
size = 20; # window.background {
# background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
# }
# .background, .view, .surface, .frame, box, window.decoration, stack {
# background-color: transparent;
# }
};
gtk4 = {
extraConfig.gtk-application-prefer-dark-theme = 1;
extraCss = config.gtk.gtk3.extraCss;
};
cursorTheme = rice.cursor;
}; };
xdg.configFile = { xdg.configFile = {
"gtk-4.0/assets".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/assets"; "gtk-4.0/assets".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/assets";
"gtk-4.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk.css"; "gtk-4.0/gtk.css".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/gtk.css";
"gtk-4.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk-dark.css"; "gtk-4.0/gtk-dark.css".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/gtk-dark.css";
}; };
dconf = { dconf = {
enable = true; enable = true;
settings = { settings = {
"org/gnome/desktop/interface" = { "org/gnome/desktop/interface" = {
color-scheme = "prefer-dark"; color-scheme = "prefer-dark";
gtk-theme = theme-name; # gtk-theme = theme-name;
}; };
}; };
}; };
} }

View File

@@ -1,15 +1,20 @@
{ pkgs, pkgs-unstable, rice, ... }: { pkgs, ... }@all: with all; {
{
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
nixfmt # nix formater # nixfmt-classic # nix formater
nil # nix language server # nil # nix language server
python311Packages.python-lsp-server # nixd # specified in nixd.nix
gopls
delve
jdt-language-server
lldb # debugger for llvm stuff lldb # debugger for llvm stuff
yaml-language-server # yaml yaml-language-server # yaml
] ++ (with pkgs-unstable; [ marksman # markdown
helix vale-ls # style-checker lsp (needs vale)
]); ltex-ls # Ltex (language tool)
vscode-langservers-extracted
bash-language-server
];
sessionVariables = { sessionVariables = {
EDITOR = "hx"; EDITOR = "hx";
VISUAL = "hx"; VISUAL = "hx";
@@ -18,61 +23,290 @@
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";
editor = { editor = {
scrolloff = 5;
mouse = true;
# default-yank-register = "\"";
middle-click-paste = false;
scroll-lines = 3;
shell = ["sh" "-c"];
line-number = "relative";
cursorline = true;
cursorcolumn = true;
# continue-comments = false;
auto-completion = true;
# path-completion = true;
auto-format = false;
idle-timeout = 250;
completion-timeout = 5;
preview-completion-insert = true;
completion-trigger-len = 1;
auto-info = true;
true-color = true; # is detected automatically if set to false
undercurl = false; # is detected automatically if set to false
rulers = [];
bufferline = "always";
color-modes = true;
text-width = 120;
workspace-lsp-roots = [];
default-line-ending = "native";
insert-final-newline = false;
popup-border = "all";
indent-heuristic = "hybrid";
jump-label-alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
# clip-board-provider = # selected automatically
# end-of-line-diagnostics = "hint";
statusline = {
left = [ "mode"
"spinner"
"file-name"
"read-only-indicator"
"file-type"
"version-control"
];
center = [
"position-percentage"
"total-line-numbers"
"register"
];
right = [
"spinner"
"diagnostics"
"selections"
"primary-selection-length"
"register"
"position"
"file-encoding"
];
# separator = " ";
mode = {
normal = "NORMAL";
insert = "INSERT";
select = "SELECT";
};
};
lsp = {
enable = true;
display-messages = false;
auto-signature-help = true;
display-inlay-hints = true;
};
cursor-shape = { cursor-shape = {
normal = "block"; normal = "block";
insert = "bar"; insert = "bar";
select = "underline"; select = "underline";
}; };
soft-wrap = { file-picker = {
enable = true; hidden = false; # Enables ignoring hidden files
follow-symlinks = true; # Follow symlinks instead of ignoring them
deduplicate-links = true; # Ignore symlinks that point at files already shown in the picker
parents = true; # Enables reading ignore files from parent directories
ignore = true; # Enables reading .ignore files
git-ignore = true; # Enables reading .gitignore files
git-global = true; # Enables reading global .gitignore, whose path is specified in git's config: core.excludesfile option
git-exclude = true; # Enables reading .git/info/exclude files
# max-depth unset = ; # Set with an integer value for maximum depth to recurse
};
auto-pairs = {
"(" = ")";
"{" = "}";
"[" = "]";
"\"" = "\"";
"`" = "`";
"<" = ">";
# "/* " = " */";
};
auto-save = {
focus-lost = false;
after-delay = {
enable = false;
timeout = 3000;
};
};
search = {
smart-case = true;
wrap-around = true;
};
whitespace = {
render = {
skip-levels = "none";
space = "none";
nbsp = "none";
nnbsp = "none";
tab = "none";
newline = "none";
tabpad = "none";
};
characters = {
skip-levels = 1;
space = "·";
nbsp = "";
nnbsp = "";
tab = "";
newline = "";
tabpad = "·";
};
}; };
line-number = "relative";
color-modes = true;
bufferline = "always";
popup-border = "all";
completion-trigger-len = 1;
completion-timeout = 5;
file-picker.hidden = false;
middle-click-paste = false;
cursorline = true;
indent-guides = { indent-guides = {
render = true; render = true;
character = ""; character = "";
skip-levels = 0;
}; };
lsp.display-inlay-hints = true; gutters = [
statusline.center = [ "position-percentage" ]; "diagnostics"
true-color = true; "spacer"
whitespace.characters = { "line-numbers"
newline = ""; "spacer"
tab = ""; "diff"
skip-levels = 1; ];
# line-numbers = {};
# layout.minwidth = 3;
# diagnostics = {};
# diff = {};
# spacer = {};
soft-wrap = {
enable = true;
max-wrap = 20;
max-indent-retain = 40;
wrap-indicator = "";
wrap-at-text-width = false;
};
smart-tab = {
enable = false;
supersede-menu = false;
};
inline-diagnostics = {
cursor-line = "warning";
other-lines = "disable";
prefix-len = 1;
# max-wrap = set above
max-diagnostics = 20;
}; };
}; };
keys.normal = { keys = {
C-g = [":new" ":insert-output lazygit" ":buffer-close!" ":redraw"]; normal = {
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
"C-i" = [ ":pipe fgl" "toggle_comments" ];
"A-`" = [ "no_op" ];
"`" = [ "no_op" ];
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
};
select = {
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
}; };
}; };
languages.language = [{ };
languages = {
language = [
{
name = "nix"; name = "nix";
language-servers = [ "nixd" ];
}
{
name = "latex";
language-servers = [ "texlab" "language-tool" ];
}
{
name = "typst";
language-servers = [ "language-tool" "tinymist" ];
}
{
name = "markdown";
language-servers = [ "language-tool" "marksman" ];
file-types = [ "md" "MD" ];
scope = "text.<name>";
}
{
name = "python";
language-servers = [ "pyright" "ruff" ];
formatter = {
command = "ruff";
args = [
"format"
"--line-length"
"120"
"-"
];
};
debugger = {
name = "debugpy";
transport = "stdio";
command = "python";
args = [ "-m" "debugpy.adapter" ];
templates = [{
name = "source";
request = "launch";
completion = [{
name = "entrypoint";
completion = "filename";
default = ".";
}]; }];
args = {
mode = "debug";
program = "{0}";
};
}];
};
}
{
name = "go";
language-servers = [
"gopls"
# "llm"
];
# formatter = {
# command = "gofmt";
# };
}
];
language-server = {
"nixd" = {
command = "nixd";
};
"style-check" = {
command = lib.getExe pkgs.vale-ls;
};
"language-tool" = {
command = "${pkgs.ltex-ls}/bin/ltex-ls";
};
"ruff" = {
command = "ruff-lsp";
config.settings.args = [
# Set line length
"--line-length"
"240"
# Enable custom ruff rules
# "--select" lib.concatStringsSep [ ]
];
};
"llm" = {
command = lib.getExe pkgs.helix-gpt;
args = [
"--handler"
"ollama"
"--ollamaModel"
"codellama:7b"
];
};
};
};
themes = { themes = {
base16 = with rice.color; { base16 = with rice.color; {
"attributes" = foreground; "attributes" = foreground;
"comment" = { "comment" = {
"fg" = white.dark; fg = black.bright;
"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" = blue.dark; "constructor" = weird.base;
"debug" = yellow.base; "debug" = yellow.base;
"diagnostic.modifiers" = [ "underlined" ]; "diagnostic.modifiers" = [ "underline" ];
"diff.delta" = blue.bright; "diff.delta" = blue.bright;
"diff.minus" = negative.bright; "diff.minus" = negative.bright;
"diff.plus" = positive.bright; "diff.plus" = positive.bright;
@@ -80,143 +314,141 @@
"function" = secondary.bright; "function" = secondary.bright;
"hint" = tertiary.bright; "hint" = tertiary.bright;
"info" = foreground; "info" = foreground;
"keyword" = secondary.base; "keyword" = special.base;
"keyword.modifiers" = [ "italic" ];
"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.dark; "type" = red.base;
"variable" = accent.base; "variable" = accent.base;
"variableother.member" = foreground; "variableother.member" = foreground;
"warning" = red.base; "warning" = red.base;
"markup.heading" = accent.base;
"markup.bold" = { "markup.bold" = {
"fg" = foreground; fg = tertiary.bright;
"modifiers" = [ "bold" ]; modifiers = [ "bold" ];
}; };
"markup.heading" = foreground;
"italic" = { "italic" = {
"fg" = foreground; fg = secondary.bright;
"modifiers" = [ "italic" ]; modifiers = [ "italic" ];
}; };
"markup.linktext" = foreground; "markup.linktext" = accent.base;
"markup.linkurl" = { "markup.linkurl" = {
"fg" = foreground; fg = tertiary.dark;
"modifiers" = [ "underlined" ]; modifiers = [ "underlined" ];
};
"markup.list" = foreground;
"markup.quote" = foreground;
"markup.raw" = foreground;
"markup.strikethrough" = {
"modifiers" = [ "crossed_out" ];
}; };
"markup.list" = accent.bright;
"markup.quote" = weird.bright;
"markup.raw" = special.bright;
"markup.strikethrough".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 = black.base;
}; };
"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 = black.base;
}; };
"ui.cursor.match" = { # Matching bracket etc. "ui.cursor.match" = { # Matching bracket etc.
"bg" = green.dark; bg = green.dark;
"modifiers" = [ "reversed" ]; modifiers = [ ];
}; };
"ui.gutter" = { "ui.gutter" = {
"bg" = black.base; bg = black.base;
}; };
"ui.help" = { "ui.help" = {
"fg" = green.base; fg = green.base;
"bg" = black.base; bg = black.base;
}; };
"ui.linenr" = { "ui.linenr" = {
"fg" = white.dark; fg = white.dark;
"bg" = black.base; bg = black.base;
}; };
"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 = black.base;
}; };
"ui.menu.scroll" = { "ui.menu.scroll" = {
"fg" = yellow.dark; fg = yellow.dark;
"bg" = background; bg = background;
}; };
"ui.menu.selected" = { "ui.menu.selected" = {
"fg" = red.base; fg = red.base;
"bg" = blue.dark; bg = blue.dark;
}; };
"ui.popup" = { "ui.popup" = {
"bg" = black.base; bg = black.base;
}; };
"ui.selection" = { "ui.selection" = {
"bg" = white.dark; bg = white.dark;
}; };
"ui.selection.primary" = { "ui.selection.primary" = {
"bg" = black.bright; bg = black.bright;
}; };
"ui.statusline" = { "ui.statusline" = {
"fg" = blue.bright; fg = blue.bright;
"bg" = black.base; bg = black.base;
}; };
"ui.statusline.inactive" = { "ui.statusline.inactive" = {
"fg" = red.bright; fg = red.bright;
"bg" = red.dark; bg = red.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 = black.bright;
}; };
"ui.virtual.inlay-hint" = { "ui.virtual.inlay-hint" = {
"fg" = black.bright; fg = subtle.base;
bg = subtle.dark;
}; };
"ui.virtual.ruler" = { "ui.virtual.ruler" = {
"bg" = background; bg = background;
};
"ui.virtual.jump-label" = {
fg = special.base;
underline = {
style = "dotted";
};
}; };
"ui.window" = { "ui.window" = {
"bg" = black.base; bg = black.base;
}; };
}; };
}; };

149
home-modules/hyprland-autoname-workspaces.nix Executable file → Normal file
View File

@@ -1,62 +1,83 @@
{pkgs-unstable, lib, user, ... }: { pkgs, ... }@all: with all;
lib.mkIf (user != "tv")
{ {
home.packages = [ home = {
pkgs-unstable.hyprland-autoname-workspaces packages = with pkgs; [ hyprland-autoname-workspaces ];
]; file.".config/hyprland-autoname-workspaces/config.toml".text = let
icons = /* toml */ ''
DEFAULT = "{class}"
"Alacritty" = ""
"Bitwarden" = ""
"blueman-manager" = "󰂯"
"chatterino" = ""
"Chromium" = ""
"chromium-browser" = ""
"code" = "󰨞"
"code-oss" = "󰨞"
"codium" = "󰨞"
"codium-url-handler" = "󰨞"
"com.mitchellh.ghostty" = "󰊠"
"com.obsproject.Studio" = ""
"discord" = "󰙯"
"Element" = "󰘨"
"epicgameslauncher.exe" = "󰯷"
".*.exe" = ""
"firefox" = "󰈹"
"galaxyclient.exe" = "󰮡"
"\\.?[gG]imp-.*" = ""
"F?imv.*" = "󰋩"
"KiCad" = ""
"kitty" = ""
"libreoffice-calc" = ""
"libreoffice-writer" = ""
"lutris" = "󰊗"
"mpv" = ""
"obsidian" = "󰠮"
"org.inkscape.Inkscape" = "󰕙"
"org.remmina.Remmina" = "󰢹"
"org.prismlauncher.*" = "󰍳"
"pavucontrol" = "󰕾"
"pcbnew" = ""
"Signal" = "󱅵"
"spotify" = ""
"Spotify" = ""
"steam" = "󰓓"
"thunar" = ""
"thunderbird" = ""
"Tor Browser" = "󰾔"
"vesktop" = "󰙯"
"virt-manager" = ""
"VirtualBox" = ""
"VirtualBox Machine" = ""
"VirtualBox Manager" = ""
"VSCodium" = "󰨞"
"Xsane" = "󰈈"
"zathura" = "󰈦"
"zoom" = "󰬡"
'';
in /* toml */ ''
version = "1.1.15"
home.file.".config/hyprland-autoname-workspaces/config.toml".text = '' [format]
version = "1.1.14" dedup = false
dedup_inactive_fullscreen = false
delim = " "
workspace = "{id}:{clients}"
workspace_empty = "{id}"
client = "{icon}"
client_fullscreen = "F{icon}"
client_active = "<u>{icon}</u>"
client_dup = "{icon}x{counter}"
client_dup_active = "<u>{icon}</u>{delim}{icon}x{counter_unfocused}"
client_dup_fullscreen = "F{icon}{delim}{icon}x{counter_unfocused}"
[exclude]
"steam" = "^(Friends List.*)?$"
"fcitx" = ".*"
[class] [class]
VirtualBox = "" ${icons}
steam = "󰓓"
"VirtualBox Manager" = ""
"com.obsproject.Studio" = ""
"[Ff]irefox" = "󰈹"
"[Tt]hunderbird" = ""
pcbnew = ""
".*.exe" = ""
Element = "󰘨"
Signal = "󱅵"
Gimp = ""
VSCodium = "󰨞"
"[sS]potify" = ""
virt-manager = ""
lutris = "󰊗"
DEFAULT = "{class}"
"epicgameslauncher.exe" = "󰯷"
"[Cc]ode" = "󰨞"
"galaxyclient.exe" = "󰮡"
pavucontrol = "󰕾"
"Tor Browser" = "󰾔"
mpv = ""
chatterino = ""
libreoffice-writer = ""
kitty = ""
"cyberpunk2077.exe" = "󰾲"
KiCad = ""
"[tT]hunar" = ""
"riotclientux.exe" = "󰰌"
libreoffice-calc = ""
"org.remmina.Remmina" = "󰢹"
"org.inkscape.Inkscape" = "󰕙"
"VirtualBox Machine" = ""
Bitwarden = ""
"[gG]imp-.*" = ""
Chromium = ""
obsidian = "󰠮"
"leagueclientux.exe" = "󰰌"
zathura = "󰈦"
code-oss = "󰨞"
discord = "󰙯"
vesktop = "󰙯"
blueman-manager = "󰂯"
Alacritty = ""
zoom = "󰬡"
[class_active] [class_active]
"(?i)ExampleOneTerm" = "icon"
[initial_class] [initial_class]
@@ -79,26 +100,6 @@ lib.mkIf (user != "tv")
[initial_title_in_initial_class] [initial_title_in_initial_class]
[initial_title_in_initial_class_active] [initial_title_in_initial_class_active]
[exclude]
aProgram = "^$"
"" = "^$"
"(?i)fcitx" = ".*"
"[Ss]team" = "^(Friends List.*)?$"
"explorer.exe" = ".*"
"(?i)TestApp" = ""
[format]
dedup = false
dedup_inactive_fullscreen = false
delim = " "
workspace = "{id}:{clients}"
workspace_empty = "{id}"
client = "{icon}"
client_fullscreen = "{icon}"
client_active = "{icon}"
client_dup = "{icon}{counter_sup}"
client_dup_active = "*{icon}*{delim}{icon}{counter_unfocused_sup}"
client_dup_fullscreen = "[{icon}]{delim}{icon}{counter_unfocused_sup}"
''; '';
};
} }

749
home-modules/hyprland.nix Executable file → Normal file
View File

@@ -1,85 +1,57 @@
{ 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-exec = "ghostty --command=";
monitors = { monitors = {
xps = { xps = {
main = { main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1080"; scale = "1.0"; };
name = "eDP-1"; second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "1920x0"; scale = "1.0"; };
resolution = "1920x1200"; third = { name = "DP-6"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
position = "0x0";
scale = "1.0";
};
second = {
name = "DP-3";
resolution = "1920x1080";
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 = "1920x0";
scale = "1.0";
}; };
left = { ace.main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; };
name = "HDMI-A-2";
resolution = "1920x1080";
position = "0x360";
scale = "1.0";
}; };
# right = { in {
# name = "HDMI-A-2"; home.packages = with pkgs; [
# resolution = "1920x1080"; xdg-desktop-portal-hyprland
# position = "4480x360"; hyprland-protocols
# scale = "1.0"; hyprlock
# }; hypridle
}; hyprshot
ace = { hyprpicker
main = { hyprcursor
name = "HDMI-A-1"; grim
resolution = "3840x2160"; slurp
position = "0x0";
scale = "1.0";
};
};
};
in
lib.mkIf (user != "tv")
{
home.packages = [
# hyprland itself is a system package
pkgs.hyprland-protocols
pkgs-unstable.hyprlock
pkgs-unstable.hypridle
pkgs.grim
pkgs.slurp
]; ];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
# package = pkgs-unstable.hyprland; # package = pkgs-unstable.hyprland;
package = inputs.hyprland.packages.${pkgs.system}.hyprland; package = pkgs.hyprland;
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
xwayland.enable = true; xwayland.enable = true;
systemd.enable = true; systemd.enable = true;
plugins = [ plugins = [
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo # inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo
# inputs.hyprfocus.packages.${pkgs.system}.hyprfocus # inputs.hyprfocus.packages.${pkgs.system}.hyprfocus
# inputs.hycov.packages.${pkgs.system}.hycov # inputs.hycov.packages.${pkgs.system}.hycov
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace # pkgs.hyprlandPlugins.hyprspace
# inputs.hyprspace.packages.${pkgs.system}.Hyprspace
]; ];
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}"
@@ -87,15 +59,13 @@ lib.mkIf (user != "tv")
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}" "${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
])); ]));
workspace = workspace = let
let 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);
d1 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.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);
d2 = if host == "NxXPS" then monitors.xps.second.name else (if host == "NxNORTH" then monitors.north.left.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.main.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);
# d3 = if host == "NxXPS" then monitors.xps.main.name else (if 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"
"12, monitor:${d1}" "12, monitor:${d1}"
"13, monitor:${d1}" "13, monitor:${d1}"
@@ -116,8 +86,8 @@ lib.mkIf (user != "tv")
"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}"
@@ -127,6 +97,10 @@ lib.mkIf (user != "tv")
"38, monitor:${d3}" "38, monitor:${d3}"
"39, monitor:${d3}" "39, monitor:${d3}"
"30, monitor:${d3}, ${compact}" "30, monitor:${d3}, ${compact}"
] ++ [
# no gaps when only
"w[tv1], gapsout:0, gapsin:0"
"f[1], gapsout:0, gapsin:0"
]; ];
# "device:logitech-wireless-mouse-mx-master-1" = { # "device:logitech-wireless-mouse-mx-master-1" = {
@@ -134,12 +108,14 @@ lib.mkIf (user != "tv")
# }; # };
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"
"__GLX_VENDOR_LIBRARY_NAME,nvidia" "__GLX_VENDOR_LIBRARY_NAME,nvidia"
"WLR_NO_HARDWARE_CURSORS,1" "WLR_NO_HARDWARE_CURSORS,1"
"HYPRCURSOR_THEME,${config.gtk.cursorTheme.name}"
"HYPRCURSOR_SIZE,${toString config.gtk.cursorTheme.size}"
] else []; ] else [];
input = { input = {
@@ -156,8 +132,8 @@ lib.mkIf (user != "tv")
gaps_in = builtins.div rice.gap-size 2; gaps_in = builtins.div rice.gap-size 2;
gaps_out = rice.gap-size; gaps_out = rice.gap-size;
border_size = rice.border-width; border_size = rice.border-width;
"col.active_border" = "rgba(${rice.lib.nohash rice.color.border}ff) rgba(${rice.lib.nohash rice.color.border2}ff) 90deg"; "col.active_border" = "rgba(${rice.lib.nohash rice.color.border2}ff) rgba(${rice.lib.nohash rice.color.border}ff) 90deg";
"col.inactive_border" = "rgba(${rice.lib.nohash rice.color.background}ff) rgba(${rice.lib.nohash rice.color.border2}ff) 90deg"; "col.inactive_border" = "rgba(${rice.lib.nohash rice.color.background}ff) rgba(${rice.lib.nohash rice.color.border}ff) 90deg";
# cursor_inactive_timeout = 10; # cursor_inactive_timeout = 10;
@@ -168,12 +144,12 @@ lib.mkIf (user != "tv")
decoration = { decoration = {
rounding = rice.rounding; rounding = rice.rounding;
drop_shadow = false; # drop_shadow = false;
shadow_range = "20"; # shadow_range = "20";
shadow_offset = "0 0"; # shadow_offset = "0 0";
shadow_render_power = "4"; # shadow_render_power = "4";
"col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)"; # "col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)";
"col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)"; # "col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)";
active_opacity = "1.0"; active_opacity = "1.0";
inactive_opacity = "1.0"; inactive_opacity = "1.0";
@@ -185,7 +161,7 @@ lib.mkIf (user != "tv")
blur = { blur = {
enabled = true; enabled = true;
size = "3"; size = "10";
passes = "2"; passes = "2";
xray = false; xray = false;
vibrancy = 0.5; vibrancy = 0.5;
@@ -195,10 +171,11 @@ lib.mkIf (user != "tv")
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"
@@ -222,12 +199,10 @@ lib.mkIf (user != "tv")
dwindle = { dwindle = {
preserve_split = true; # you probably want this preserve_split = true; # you probably want this
no_gaps_when_only = false;
}; };
master = { # master = {
new_is_master = true; # };
};
misc = { misc = {
disable_hyprland_logo = true; disable_hyprland_logo = true;
@@ -236,69 +211,82 @@ lib.mkIf (user != "tv")
}; };
exec-once = [ exec-once = [
"hyprpm reload -n " "waybar"
"waybar " "swww-daemon"
"hyprpaper -n "
"swww init"
"= /home/nx2/scripts/swww-randomize.sh"
"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"
"ibus engine xkb:de::deu" # "ibus engine xkb:de::deu"
"libinput-gestures" "libinput-gestures"
# "hyprswitch --daemon"
]; ];
windowrulev2 = [ windowrulev2 = [
"opacity ${transparency},class:^(com.chatterino.*)$" "bordercolor rgba(${rice.lib.nohash rice.color.special.bright}ff), pinned:1"
"opacity ${transparency},class:^(chatterino)$"
"bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
];
windowrule = [ "bordersize 0, floating:0, onworkspace:w[tv1]"
# "opacity ${transparency}, firefox" "rounding 0, floating:0, onworkspace:w[tv1]"
"opacity ${transparency}, code-oss" "bordersize 0, floating:0, onworkspace:f[1]"
"opacity ${transparency}, VSCodium" "rounding 0, floating:0, onworkspace:f[1]"
"opacity ${transparency}, Code" ] ++ [
"opacity ${transparency}, neovide" "center 1,class:^(gimp)$"
"opacity ${transparency}, obsidian"
"opacity ${transparency}, zathura" "float, class:^(ibus-ui.*)$"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty" "float, class:^(ibus-ui-gtk3)$"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Kitty" "float, class:^(imv)$"
"opacity ${transparency}, discord" "float, class:^(org.kde.polkit-kde-authentication-agent-1)$"
"opacity ${transparency}, vesktop" "float, class:^(presenter)$" # sent
"opacity ${transparency}, Element" "float, class:^(thunderbird)$"
"opacity ${transparency}, thunderbird" "float, title:^(Compact folders)$"
"opacity ${transparency}, lutris" "float, title:^(Ibus-ui.*)$"
"opacity ${transparency}, element" "float, title:^(Ibus-ui-gtk3)$"
"opacity ${transparency}, ^([sS]potify)$" "float, title:^(Page Info .*)$"
"opacity ${transparency}, virt-manager" "float, title:^(Picture-in-Picture)$"
"opacity ${transparency}, thunar" "float, title:^(wlogout)$"
"fullscreen, class:^(imv)$"
"fullscreen, class:^(sent)$"
"fullscreen, class:^(wlogout)$"
"noanim, class:^(imv)$"
"noanim, class:^(presenter)$" # sent
"opacity ${transparency}, class:^(Code)$"
"opacity ${transparency}, class:^(code-oss)$"
"opacity ${transparency}, class:^(discord)$"
# "opacity ${transparency}, class:^(vesktop)$"
# "opacity ${transparency}, class:^(Element)$"
"opacity ${transparency}, class:^(lutris)$"
"opacity ${transparency}, class:^(neovide)$"
# "opacity ${transparency}, class:^(obsidian)$"
"opacity ${transparency}, class:^(VSCodium)$"
"opacity ${transparency}, title:^(wlogout)$" "opacity ${transparency}, title:^(wlogout)$"
"opaque, title:^(GNU Image Manipulation Program)$" "opaque, title:^(GNU Image Manipulation Program)$"
"float, title:^(Picture-in-Picture)$" "opaque, fullscreen:1"
"float, title:^(Ibus-ui.*)$"
"float, ^(ibus-ui.*)$"
"float, ^(ibus-ui-gtk3)$"
"float, title:^(Ibus-ui-gtk3)$"
"pin, title:^(Picture-in-Picture)$" "pin, title:^(Picture-in-Picture)$"
"float, org.kde.polkit-kde-authentication-agent-1"
"float, title:^(wlogout)$" "tile, class:^(sent)$"
"float, imv"
"float, title:^(Page Info .*)$" "workspace 100, class:^(gamescope)$"
"tile, sent"
"fullscreen, wlogout" "float, title:^(terminal-file-picker)$"
"workspace 14, lutris" "dimaround, title:^(terminal-file-picker)$"
"workspace 100, title:^(Apex Legends)$" "center, title:^(terminal-file-picker)$"
"workspace 100, ^(cyberpunk2077.exe)$" "size 80% 80%, title:^(terminal-file-picker)$"
"workspace 100, title:^(No Man.s Sky)$" "size: 30% 30%, initialTitle:^(Select Calendar)$"
"workspace 100, gamescope"
]; ];
layerrule = [ layerrule = [
"blur,waybar" "blur,waybar"
"blur,bar-0" # hyprpanel
"blur,bar-1"
"blur,bar-2"
"blur,bar-3"
"blur,bar-4"
"dimaround,rofi" "dimaround,rofi"
"blur,rofi" "blur,rofi"
"xray,rofi" "xray,rofi"
@@ -315,22 +303,23 @@ lib.mkIf (user != "tv")
########################################################################### ###########################################################################
## 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," "SUPER, F6, exec, ${terminal-exec}'htop'"
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120'' "SUPER, F7, exec, ${terminal-exec}'nmtui'"
# "SUPER, F9, hyprload,reload" ''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, submap_indicator set '󰸉 '"
"SUPER, F9, submap, color"
# "SUPER, F10, hyprload,update" # "SUPER, F10, hyprload,update"
"SUPER, F11, exec, waybar" "SUPER, F11, exec, waybar"
"SUPER SHIFT, F11, exec, pkill waybar " "SUPER SHIFT, F11, exec, pkill waybar "
"SUPER, F12, exec, hyprland-autoname-workspaces" "SUPER, F12, exec, hyprland-autoname-workspaces"
"SUPER SHIFT, F12, exec, pkill -9 hyprland-autoname-workspaces " "SUPER SHIFT, F12, exec, pkill -9 hyprland-aut"
########################################################################### ###########################################################################
## ROW 1: ## ROW 1:
@@ -364,43 +353,46 @@ lib.mkIf (user != "tv")
########################################################################### ###########################################################################
## 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"
"ALT, TAB, focuscurrentorlast" "ALT, TAB, focuscurrentorlast"
# "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, 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, kitty" "SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}"
"SUPER SHIFT, T, exec, kitty -e sh -c 'ssh nxace'" "SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'"
"SUPER, Z, swapactiveworkspaces, HDMI-A-1 HDMI-A-2" "SUPER, Z, exec, zathura"
"SUPER, U, exec, thunderbird " "SUPER, U, exec, [tile] thunderbird "
# "SUPER, I, " "SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
"SUPER, O, exec, obsidian " "SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'"
"SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'"
# "SUPER, O, exec, obsidian "
"SUPER, P, pin " "SUPER, P, pin "
# "SUPER, Ü," # "SUPER, Ü,"
# "SUPER, +," # "SUPER, +,"
# "SUPER, Enter," "SUPER, Enter, exec, SESSION_FROM_DE=TRUE ${terminal}"
########################################################################### ###########################################################################
## 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, exec, xrandr --verbose --output 'DP-1' --primary && lutris" # "SUPER, G,"
"SUPER SHIFT, G, exec, /home/nx2/scripts/cursor-lock-toggle.sh" "SUPER, H, movefocus, l"
# "SUPER SHIFT CTRL, G, exec, /home/nx2/scripts/disable-side-monitors.sh" "SUPER, J, movefocus, d"
"SUPER, H, exec, chatterino" "SUPER, K, movefocus, u"
"SUPER, J, focusmonitor, $left" "SUPER, L, movefocus, r"
"SUPER, K, focusmonitor, $main"
"SUPER, L, focusmonitor, $right"
# "SUPER, Ö," # "SUPER, Ö,"
# "SUPER, Ä," # "SUPER, Ä,"
# "SUPER, #," # "SUPER, #,"
@@ -409,13 +401,14 @@ lib.mkIf (user != "tv")
## 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, codium," "SUPER, C, exec, chatterino"
"SUPER SHIFT, C, exec, hyprpicker -n -a"
"SUPER, V, togglefloating, " "SUPER, V, togglefloating, "
"SUPER, B, exec, bitwarden-desktop" # "SUPER, B, exec, bitwarden"
"SUPER, N, togglesplit" "SUPER, N, 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, comma, exec, /home/nx2/scripts/change-language.sh" # "SUPER, comma, exec, /home/nx2/scripts/change-language.sh"
@@ -427,7 +420,7 @@ lib.mkIf (user != "tv")
# 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, , "
@@ -447,9 +440,11 @@ lib.mkIf (user != "tv")
########################################################################### ###########################################################################
## MEGA KEYS: ## MEGA KEYS:
'' , Print, exec, grim -g "$(slurp)"'' ", Print, execr, submap_indicator set '󰄀 '"
"SUPER, Next, resizeactive, 100 -100" ", Print, submap, screenshot"
"SUPER, Prior, resizeactive, -100 100"
# "SUPER, Next, resizeactive, 5% 5%" # binde
# "SUPER, Prior, resizeactive, -5% -5%" # binde
########################################################################### ###########################################################################
## FN KEYS: ## FN KEYS:
@@ -479,6 +474,44 @@ lib.mkIf (user != "tv")
bindl = [ bindl = [
# ",switch:on:Lid Switch, exec, hyprlock &" # ",switch:on:Lid Switch, exec, hyprlock &"
]; ];
binde = [
# "SUPER, TAB, exec, hyprswitch --daemon --do-initial-execute"
"SUPER, Next, resizeactive, 10% 10%"
"SUPER, Prior, resizeactive, -10% -10%"
];
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;
};
};
}; };
@@ -489,346 +522,102 @@ lib.mkIf (user != "tv")
# 'Y8b. 88 88 88''Yb. 88 88 8888888 888888P' 'Y8b. # 'Y8b. 88 88 88''Yb. 88 88 8888888 888888P' 'Y8b.
# db 8D 88. .88 88 8D 88 88 88' '88 88 db 8D # db 8D 88. .88 88 8D 88 88 88' '88 88 db 8D
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y' # '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
extraConfig = '' extraConfig = let
action_simple = { mods ? "", key, cmd }: ''
bind=${mods},${key},execr,submap_indicator unset
bind=${mods},${key},${cmd}
bind=${mods},${key},submap,reset
'';
extra_workspace = { key, wsnumber }: ''
bind=,${key},execr,submap_indicator unset
bind=,${key},workspace,${wsnumber}
bind=,${key},submap,reset
bind=SUPER,${key},execr,submap_indicator unset
bind=SUPER,${key},workspace,${wsnumber}
bind=SUPER,${key},submap,reset
bind=SUPER SHIFT,${key},execr, submap_indicator unset
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
bind=SUPER SHIFT,${key},submap,reset
'';
in ''
submap = browserSM submap = browserSM
bind = , W, exec, waybar_mode unset ${action_simple { key = "A"; cmd = "exec,firefox https://www.amazon.de/b?node=3010075031&ref_=nav_ya_signin";}}
bind = , W, exec, hyprctl dispatch exec firefox ${action_simple { key = "C"; cmd = "exec,firefox https://calendar.google.com";}}
bind = , W, submap, reset ${action_simple { key = "D"; cmd = "exec,firefox https://www.disneyplus.com/home";}}
${action_simple { key = "H"; cmd = "exec,firefox https://www.hs-mittweida.de";}}
bind = , Y, exec, waybar_mode unset ${action_simple { key = "I"; cmd = "exec,firefox https://www.imdb.com";}}
bind = , Y, exec, firefox https://youtube.com ${action_simple { key = "L"; cmd = "exec,firefox https://feddit.de";}}
bind = , Y, submap, reset ${action_simple { key = "M"; cmd = "exec,firefox https://ieji.de/home";}}
${action_simple { key = "N"; cmd = "exec,firefox https://Netflix.com";}}
bind = , T, exec, waybar_mode unset ${action_simple { key = "R"; cmd = "exec,firefox https://reddit.com";}}
bind = , T, exec, hyprctl dispatch exec firefox https://twitch.tv ${action_simple { key = "S"; cmd = "exec,firefox 127.0.0.1:8384/";}}
bind = , T, submap, reset ${action_simple { key = "T"; cmd = "exec,hyprctl dispatch exec firefox https://twitch.tv";}}
${action_simple { key = "udiaeresis"; cmd = "exec,firefox https://translate.google.com";}}
bind = , R, exec, waybar_mode unset ${action_simple { key = "W"; cmd = "exec,hyprctl dispatch exec firefox";}}
bind = , R, exec, firefox https://reddit.com ${action_simple { key = "X"; cmd = "exec,firefox https://nx2.site";}}
bind = , R, submap, reset ${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
bind = , C, exec, waybar_mode unset ${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
bind = , C, exec, firefox https://calendar.google.com bind=,Z,exec,submap_indicator set ' '
bind = , C, submap, reset bind=,Z,submap,tuda
bind=,Z,submap,reset
bind = , Ü, exec, waybar_mode unset bind=,Escape,exec,submap_indicator unset
bind = , Ü, exec, firefox https://translate.google.com bind=,Escape,submap,reset
bind = , Ü, submap, reset
bind = , N, exec, waybar_mode unset
bind = , N, exec, firefox https://Netflix.com
bind = , N, submap, reset
bind = , A, exec, waybar_mode unset
bind = , A, exec, firefox https://www.amazon.de/b?node=3010075031&ref_=nav_ya_signin
bind = , A, submap, reset
bind = , D, exec, waybar_mode unset
bind = , D, exec, firefox https://www.disneyplus.com/home
bind = , D, submap, reset
bind = , H, exec, waybar_mode unset
bind = , H, exec, firefox https://www.hs-mittweida.de
bind = , H, submap, reset
bind = , X, exec, waybar_mode unset
bind = , X, exec, firefox https://nx2.site
bind = , X, submap, reset
bind = , L, exec, waybar_mode unset
bind = , L, exec, firefox https://feddit.de
bind = , L, submap, reset
bind = , I, exec, waybar_mode unset
bind = , I, exec, firefox https://www.imdb.com
bind = , I, submap, reset
bind = , M, exec, waybar_mode unset
bind = , M, exec, firefox https://ieji.de/home
bind = , M, submap, reset
bind = , S, exec, waybar_mode unset
bind = , S, exec, firefox 127.0.0.1:8384/
bind = , S, submap, reset
bind = , Escape, exec, waybar_mode unset
bind = , Escape, submap, reset
submap = reset submap = reset
submap = scrL submap = scrL
bind = , 1, execr, waybar_mode unset ${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 = , 1, workspace, 21 bind = , A, execr, submap_indicator unset
bind = , 1, submap, reset
bind = SUPER, 1, execr, waybar_mode unset
bind = SUPER, 1, workspace, 21
bind = SUPER, 1, submap, reset
bind = SUPER SHIFT, 1, execr, waybar_mode unset
bind = SUPER SHIFT, 1, movetoworkspace, 21
bind = SUPER SHIFT, 1, submap, reset
bind = , 2, execr, waybar_mode unset
bind = , 2, workspace, 22
bind = , 2, submap, reset
bind = SUPER, 2, execr, waybar_mode unset
bind = SUPER, 2, workspace, 22
bind = SUPER, 2, submap, reset
bind = SUPER SHIFT, 2, execr, waybar_mode unset
bind = SUPER SHIFT, 2, movetoworkspace, 22
bind = SUPER SHIFT, 2, submap, reset
bind = , 3, execr, waybar_mode unset
bind = , 3, workspace, 23
bind = , 3, submap, reset
bind = SUPER, 3, execr, waybar_mode unset
bind = SUPER, 3, workspace, 23
bind = SUPER, 3, submap, reset
bind = SUPER SHIFT, 3, execr, waybar_mode unset
bind = SUPER SHIFT, 3, movetoworkspace, 23
bind = SUPER SHIFT, 3, submap, reset
bind = , 4, execr, waybar_mode unset
bind = , 4, workspace, 24
bind = , 4, submap, reset
bind = SUPER, 4, execr, waybar_mode unset
bind = SUPER, 4, workspace, 24
bind = SUPER, 4, submap, reset
bind = SUPER SHIFT, 4, execr, waybar_mode unset
bind = SUPER SHIFT, 4, movetoworkspace, 24
bind = SUPER SHIFT, 4, submap, reset
bind = , 5, execr, waybar_mode unset
bind = , 5, workspace, 25
bind = , 5, submap, reset
bind = SUPER, 5, execr, waybar_mode unset
bind = SUPER, 5, workspace, 25
bind = SUPER, 5, submap, reset
bind = SUPER SHIFT, 5, execr, waybar_mode unset
bind = SUPER SHIFT, 5, movetoworkspace, 25
bind = SUPER SHIFT, 5, submap, reset
bind = , 6, execr, waybar_mode unset
bind = , 6, workspace, 26
bind = , 6, submap, reset
bind = SUPER, 6, execr, waybar_mode unset
bind = SUPER, 6, workspace, 26
bind = SUPER, 6, submap, reset
bind = SUPER SHIFT, 6, execr, waybar_mode unset
bind = SUPER SHIFT, 6, movetoworkspace, 26
bind = SUPER SHIFT, 6, submap, reset
bind = , 7, execr, waybar_mode unset
bind = , 7, workspace, 27
bind = , 7, submap, reset
bind = SUPER, 7, execr, waybar_mode unset
bind = SUPER, 7, workspace, 27
bind = SUPER, 7, submap, reset
bind = SUPER SHIFT, 7, execr, waybar_mode unset
bind = SUPER SHIFT, 7, movetoworkspace, 27
bind = SUPER SHIFT, 7, submap, reset
bind = , 8, execr, waybar_mode unset
bind = , 8, workspace, 28
bind = , 8, submap, reset
bind = SUPER, 8, execr, waybar_mode unset
bind = SUPER, 8, workspace, 28
bind = SUPER, 8, submap, reset
bind = SUPER SHIFT, 8, execr, waybar_mode unset
bind = SUPER SHIFT, 8, movetoworkspace, 28
bind = SUPER SHIFT, 8, submap, reset
bind = , 9, execr, waybar_mode unset
bind = , 9, workspace, 29
bind = , 9, submap, reset
bind = SUPER, 9, execr, waybar_mode unset
bind = SUPER, 9, workspace, 29
bind = SUPER, 9, submap, reset
bind = SUPER SHIFT, 9, execr, waybar_mode unset
bind = SUPER SHIFT, 9, movetoworkspace, 29
bind = SUPER SHIFT, 9, submap, reset
bind = , 0, execr, waybar_mode unset
bind = , 0, workspace, 20
bind = , 0, submap, reset
bind = SUPER, 0, execr, waybar_mode unset
bind = SUPER, 0, workspace, 20
bind = SUPER, 0, submap, reset
bind = SUPER SHIFT, 0, execr, waybar_mode unset
bind = SUPER SHIFT, 0, movetoworkspace, 20
bind = SUPER SHIFT, 0, submap, reset
bind = , A, execr, waybar_mode 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
bind = , 1, execr, waybar_mode unset ${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 = , 1, workspace, 31 bind = , Y, execr, submap_indicator unset
bind = , 1, submap, reset
bind = SUPER, 1, execr, waybar_mode unset
bind = SUPER, 1, workspace, 31
bind = SUPER, 1, submap, reset
bind = SUPER SHIFT, 1, execr, waybar_mode unset
bind = SUPER SHIFT, 1, movetoworkspace, 31
bind = SUPER SHIFT, 1, submap, reset
bind = , 2, execr, waybar_mode unset
bind = , 2, workspace, 32
bind = , 2, submap, reset
bind = SUPER, 2, execr, waybar_mode unset
bind = SUPER, 2, workspace, 32
bind = SUPER, 2, submap, reset
bind = SUPER SHIFT, 2, execr, waybar_mode unset
bind = SUPER SHIFT, 2, movetoworkspace, 32
bind = SUPER SHIFT, 2, submap, reset
bind = , 3, execr, waybar_mode unset
bind = , 3, workspace, 33
bind = , 3, submap, reset
bind = SUPER, 3, execr, waybar_mode unset
bind = SUPER, 3, workspace, 33
bind = SUPER, 3, submap, reset
bind = SUPER SHIFT, 3, execr, waybar_mode unset
bind = SUPER SHIFT, 3, movetoworkspace, 33
bind = SUPER SHIFT, 3, submap, reset
bind = , 4, execr, waybar_mode unset
bind = , 4, workspace, 34
bind = , 4, submap, reset
bind = SUPER, 4, execr, waybar_mode unset
bind = SUPER, 4, workspace, 34
bind = SUPER, 4, submap, reset
bind = SUPER SHIFT, 4, execr, waybar_mode unset
bind = SUPER SHIFT, 4, movetoworkspace, 34
bind = SUPER SHIFT, 4, submap, reset
bind = , 5, execr, waybar_mode unset
bind = , 5, workspace, 35
bind = , 5, submap, reset
bind = SUPER, 5, execr, waybar_mode unset
bind = SUPER, 5, workspace, 35
bind = SUPER, 5, submap, reset
bind = SUPER SHIFT, 5, execr, waybar_mode unset
bind = SUPER SHIFT, 5, movetoworkspace, 35
bind = SUPER SHIFT, 5, submap, reset
bind = , 6, execr, waybar_mode unset
bind = , 6, workspace, 36
bind = , 6, submap, reset
bind = SUPER, 6, execr, waybar_mode unset
bind = SUPER, 6, workspace, 36
bind = SUPER, 6, submap, reset
bind = SUPER SHIFT, 6, execr, waybar_mode unset
bind = SUPER SHIFT, 6, movetoworkspace, 36
bind = SUPER SHIFT, 6, submap, reset
bind = , 7, execr, waybar_mode unset
bind = , 7, workspace, 37
bind = , 7, submap, reset
bind = SUPER, 7, execr, waybar_mode unset
bind = SUPER, 7, workspace, 37
bind = SUPER, 7, submap, reset
bind = SUPER SHIFT, 7, execr, waybar_mode unset
bind = SUPER SHIFT, 7, movetoworkspace, 37
bind = SUPER SHIFT, 7, submap, reset
bind = , 8, execr, waybar_mode unset
bind = , 8, workspace, 38
bind = , 8, submap, reset
bind = SUPER, 8, execr, waybar_mode unset
bind = SUPER, 8, workspace, 38
bind = SUPER, 8, submap, reset
bind = SUPER SHIFT, 8, execr, waybar_mode unset
bind = SUPER SHIFT, 8, movetoworkspace, 38
bind = SUPER SHIFT, 8, submap, reset
bind = , 9, execr, waybar_mode unset
bind = , 9, workspace, 39
bind = , 9, submap, reset
bind = SUPER, 9, execr, waybar_mode unset
bind = SUPER, 9, workspace, 39
bind = SUPER, 9, submap, reset
bind = SUPER SHIFT, 9, execr, waybar_mode unset
bind = SUPER SHIFT, 9, movetoworkspace, 39
bind = SUPER SHIFT, 9, submap, reset
bind = , 0, execr, waybar_mode unset
bind = , 0, workspace, 30
bind = , 0, submap, reset
bind = SUPER, 0, execr, waybar_mode unset
bind = SUPER, 0, workspace, 30
bind = SUPER, 0, submap, reset
bind = SUPER SHIFT, 0, execr, waybar_mode unset
bind = SUPER SHIFT, 0, movetoworkspace, 30
bind = SUPER SHIFT, 0, submap, reset
bind = , Y, execr, waybar_mode 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
${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 'NxTheme' 'change_colors_json manual successfull' ''; }}
${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }}
bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset
submap = reset
submap = tuda
${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 = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
bind = , Escape, execr, submap_indicator unset
bind = , Escape, 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 = "R"; cmd = ''exec,hyprshot -m region''; }}
bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset
submap = reset
plugin {
hyprexpo {
columns = 5
gap_size = ${builtins.toString rice.gap-size}
bg_col = rgb(${builtins.substring 1 6 rice.color.background})
workspace_method = first 10 # [center/first] [workspace] e.g. first 1 or center m+1
enable_gesture = false # laptop touchpad, 4 fingers
gesture_distance = 300 # how far is the "max"
gesture_positive = true # positive = swipe down. Negative = swipe up.
}
}
plugin {
overview {
panelColor = rgba(00000088)
workspaceActiveBackground = rgba(00ff00ff)
workspaceInactiveBackground = rgba(0000ffff)
# workspaceActiveBorder =
# workspaceInactiveBorder =
dragAlpha = 0.5
panelHeight = 200
workspaceMargin = 30
workspaceBorderSize = 3
centerAligned = true
overrideGaps = false
gapsIn = 0
gapsOut = 0
hideBackgroundLayers = false
drawActiveWorkspace = true
autoDrag = true
autoScroll = true
exitOnClick = false
switchOnDrop = false
exitOnSwitch = trueß
showNewWorkspace = true
showEmptyWorkspace = false
}
}
''; '';
}; };
home.file = home.file = let
let m = if hyper.host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
m = if 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 {
monitor = ${m} monitor = ${m}
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
path = /home/nx2/Pictures/nix-wall.png path = /home/nx2/Pictures/wallpapers/nix-wall.png
blur_size = 4 blur_size = 4
blur_passes = 3 # 0 disables blurring blur_passes = 3 # 0 disables blurring
noise = 0.0117 noise = 0.0117

49
home-modules/kitty.nix Executable file → Normal file
View File

@@ -1,36 +1,31 @@
{ config, pkgs, rice, lib, user, ... }: { rice, ... }:
lib.mkIf (user != "tv")
{ {
home.packages = with pkgs; [
kitty
];
programs.kitty = { programs.kitty = {
enable = true; enable = true;
font = { font = {
name = rice.font.code.name2; name = rice.font.code.name;
package = rice.font.code.package; package = rice.font.code.package;
}; };
settings = { settings = with rice.color; {
background = rice.color.background; background = background;
foreground = rice.color.foreground; foreground = foreground;
cursor = rice.color.foreground; cursor = foreground;
color0 = rice.color.black.base; color0 = black.base;
color8 = rice.color.black.bright; color8 = black.bright;
color1 = rice.color.red.base; color1 = red.base;
color9 = rice.color.red.bright; color9 = red.bright;
color2 = rice.color.green.base; color2 = green.base;
color10 = rice.color.green.bright; color10 = green.bright;
color3 = rice.color.yellow.base; color3 = yellow.base;
color11 = rice.color.yellow.bright; color11 = yellow.bright;
color4 = rice.color.blue.base; color4 = blue.base;
color12 = rice.color.blue.bright; color12 = blue.bright;
color5 = rice.color.magenta.base; color5 = magenta.base;
color13 = rice.color.magenta.bright; color13 = magenta.bright;
color6 = rice.color.cyan.base; color6 = cyan.base;
color14 = rice.color.cyan.bright; color14 = cyan.bright;
color7 = rice.color.white.base; color7 = white.base;
color15 = rice.color.white.bright; color15 = white.bright;
background_opacity = builtins.toString rice.transparency; background_opacity = builtins.toString rice.transparency;
window_padding_width = 5; window_padding_width = 5;
remember_window_size = false; remember_window_size = false;

5
home-modules/latex.nix Executable file → Normal file
View File

@@ -1,7 +1,8 @@
{ config, pkgs, lib, host, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE") lib.mkIf (hyper.host != "NxACE")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
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; })
]; ];
} }

29
home-modules/mako.nix Executable file → Normal file
View File

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

87
home-modules/matrix.nix Normal file
View File

@@ -0,0 +1,87 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
# cinny-desktop
(weechat.override {
configure = { availablePlugins, ... }: {
scripts = with pkgs.weechatScripts; [
weechat-matrix
];
};
})
];
sops.secrets."weechat/passphrase" = { path = "%r/secrets/weechat/passphrase"; };
home.file = {
".config/weechat/sec.conf".text = ''
[crypt]
cipher = aes256
hash_algo = sha256
passphrase_command = "cat $XDG_RUNTIME_DIR/secrets/weechat/passphrase"
salt = on
[data]
__passphrase__ = on
matrix_nx2site_password = "AD1FDBA557C3C2BA41A0BAAD43FBE91E35830A7779A82DE4C3C34204133459512B2008E83A5FDDA9C1209F9DEF833819DF5E9726AEB01162B421864DD3F08F4F9900DADB"
'';
".config/weechat/matrix.conf".text = ''
[network]
autoreconnect_delay_growing = 2
autoreconnect_delay_max = 600
debug_buffer = off
debug_category = all
debug_level = error
fetch_backlog_on_pgup = on
lag_min_show = 500
lag_reconnect = 90
lazy_load_room_users = off
max_backlog_sync_events = 10
max_initial_sync_events = 30
max_nicklist_users = 5000
print_unconfirmed_messages = on
read_markers_conditions = "''${markers_enabled}"
resending_ignores_devices = on
typing_notice_conditions = "''${typing_enabled}"
[look]
bar_item_typing_notice_prefix = "Typing: "
busy_sign = ""
code_block_margin = 2
code_blocks = on
disconnect_sign = ""
encrypted_room_sign = "🔐"
encryption_warning_sign = " "
human_buffer_names = off
markdown_input = on
max_typing_notice_item_length = 50
new_channel_position = none
pygments_style = "native"
quote_wrap = 67
redactions = strikethrough
server_buffer = merge_with_core
[color]
error_message_bg = default
error_message_fg = darkgray
nick_prefixes = "admin=lightgreen;mod=lightgreen;power=yellow"
quote_bg = default
quote_fg = lightgreen
unconfirmed_message_bg = default
unconfirmed_message_fg = darkgray
untagged_code_bg = default
untagged_code_fg = blue
[server]
nx2site.autoconnect = off
nx2site.address = "nx2.site"
nx2site.port = 443
nx2site.proxy = ""
nx2site.ssl_verify = on
nx2site.username = "nx2"
nx2site.password = "''${sec.data.matrix_nx2site_password}"
nx2site.device_name = "Weechat@${hyper.host}"
nx2site.autoreconnect_delay = 10
nx2site.sso_helper_listening_port = 0
'';
};
}

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

@@ -0,0 +1,80 @@
{ 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
];
bindings = {
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
# "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);
}
'';
}

6
home-modules/nh.nix Executable file → Normal file
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";
}; };
}; };
} }

6
home-modules/nixd.nix Normal file
View File

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

35
home-modules/nvidia.nix Normal file
View File

@@ -0,0 +1,35 @@
{ pkgs, ... }@all: with all;
lib.mkIf (hyper.nvidia.enable == true)
{
home = {
packages = with pkgs; [
nvtopPackages.full
];
sessionVariables = {
NIXOS_OZONE_WL = "1"; # Hint electron apps to use wayland
WLR_NO_HARDWARE_CURSORS = "1"; # Fix cursor rendering issue on wlr nvidia.
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland";
XDG_SESSION_DESKTOP = "Hyprland";
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
LIBVA_DRIVER_NAME = "nvidia";
__GL_GSYNC_ALLOWED = "1";
__GL_VRR_ALLOWED = "0";
WLR_DRM_NO_ATOMIC = "1";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
QT_QPA_PLATFORM = "wayland";
QT_QPA_PLATFORMTHEME = "qt5ct";
GDK_SCALE = "2";
ELECTRON_OZONE_PLATFORM_HINT = "auto";
NVD_BACKEND = "direct";
};
};
}

9
home-modules/nx-gcal-event.nix Executable file → Normal file
View File

@@ -1,9 +1,6 @@
{ config, pkgs, secrets, lib, user, ... }: { pkgs, ... }@all: with all; let
let
sep = " "; sep = " ";
in in {
lib.mkIf (user != "tv")
{
home = { home = {
file."${config.xdg.dataHome}/nx-gcal-event-credentials.json".text = '' file."${config.xdg.dataHome}/nx-gcal-event-credentials.json".text = ''
{ {
@@ -26,7 +23,7 @@ lib.mkIf (user != "tv")
# (pkgs.python311.withPackages (python-pkgs: [ # (pkgs.python311.withPackages (python-pkgs: [
# python-pkgs.google # python-pkgs.google
# ])) # ]))
(writeScriptBin "nx_gcal_event" '' (writeScriptBin "nx_gcal_event" /* python */ ''
#!${pkgs.python3}/bin/python3 #!${pkgs.python3}/bin/python3
import datetime import datetime
import os import os

View File

@@ -0,0 +1,66 @@
{ pkgs, ... }@all: with all;
{
home.packages = [
(pkgs.writeShellApplication {
name = "nx_backup";
runtimeInputs = [ ];
text = let
web-root = hyper.webroot;
gitea-backup = "/var/backup/gitea";
postgres-backup = "/var/backup/postgresql";
in /* bash */ ''
DIRECTORIES=(
"${web-root}"
"${gitea-backup}"
"${postgres-backup}"
)
NOW=$(date +%Y_%m_%d-%H_%M)
TEMP_BAK_DIR=$(mktemp -d)
TEMP_WORKING_DIR=$(mktemp -d)
ZIP_NAME="nx2site-backup-''${NOW}.zip"
ZIP_FILE="$TEMP_WORKING_DIR/$ZIP_NAME"
ENCRYPTED_NAME="''${ZIP_NAME}.asc"
ENCRYPTED_FILE="$TEMP_WORKING_DIR/$ENCRYPTED_NAME"
DESTINATION="/vault/$ENCRYPTED_NAME"
WEBROOT="${web-root}"
echo "Fixing Permissions of Gitea dump"
sudo chmod -R g+r "${gitea-backup}"
echo "Fixing Permissions of Postgres dump"
sudo chmod -R g+r "${postgres-backup}"
sudo chmod g+x "${postgres-backup}"
echo "Fixing Ownership of Postgres dump"
sudo chown -R postgres:postgres "${postgres-backup}"
echo "Copying files to backup to tempoary directory $TEMP_BAK_DIR ..."
for DIR in "''${DIRECTORIES[@]}"; do
rsync -aR "$DIR" "$TEMP_BAK_DIR"
done
# Create the zip file
echo "Adding files to $ZIP_NAME ..."
zip -qr "$ZIP_FILE" "$TEMP_BAK_DIR"
# Encrypt the zip file using GPG
echo "Encryping file with gpg"
gpg -e -r gpg@nx2.site -o "$ENCRYPTED_FILE" "$ZIP_FILE"
echo "Moving file to Destination $DESTINATION"
mv "$ENCRYPTED_FILE" "$DESTINATION"
echo "Updating latest-bakup path in $WEBROOT"
echo "$DESTINATION" > "$WEBROOT/latest-backup"
echo "Cleaning up tempoary files and directories"
rm -rf "$TEMP_BAK_DIR" "$TEMP_WORKING_DIR" "$ZIP_FILE"
echo "Backup and encryption complete: $DESTINATION"
echo "Space remaining:"
dysk
'';
})
];
}

99
home-modules/nx2site.nix Normal file
View File

@@ -0,0 +1,99 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
(writeShellApplication {
name = "nxmd";
text = let
ascii_size = (pkgs.writers.writePython3Bin "ascii_size" {
# libraries = with pkgs.python311Packages; [ ];
flakeIgnore = [];
} /* python */ ''
from sys import argv
with open(argv[1], "r", encoding='utf-8') as f:
raw = f.read()
sraw = raw.split("\n")
linestart = 0
lineend = 0
started = False
for linenum in range(len(sraw)):
if sraw[linenum].strip() == "```ascii":
linestart = linenum
started = True
if started and sraw[linenum].strip() == "```":
lineend = linenum
break
maxwidth = 0
for linenum in range(linestart, lineend):
linewidth = len(sraw[linenum])
if linewidth > maxwidth:
maxwidth = linewidth
print(f"Maximum length of the `ascii` code clock is {maxwidth} characters.")
px = (1 / maxwidth) * 1500
vw = (1 / maxwidth) * 150
snew = sraw
snew[3] = "aaw: " + str(round(vw, 2))
snew[4] = "aawm: " + str(round(px, 2))
new = "\n".join(snew)
with open(argv[1], "w", encoding='utf-8') as f:
f.write(new)
print(f"The resulting font sizes are {px}px (aawm) and {vw}vw (aam).")
print(f"You can now use the push operation on {argv[1]}.")
''
);
in /* 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"))))}')
nxdate="$(date +'%A the ')"
nxdate="$nxdate""$ord"
nxdate="$nxdate""$(date +' of %B %Y')"
if [[ $# -eq 0 ]]; then
echo "Error: No arguments provided."
echo "Usage: $0 push <markdown-file>"
exit 1
fi
if [[ "$1" == "push" ]]; then
if [[ ! "$2" =~ \.md$ ]]; then
echo "Error: Second argument must be a markdown (.md) file"
echo "Usage: $0 push <markdown-file>"
exit 1
fi
pandoc \
"$2" \
--highlight-style=breezeDark \
--standalone \
--mathjax \
--ascii \
--template /var/nginx/assets/template.html \
--metadata pdate="$nxdate" \
--verbose --from markdown-markdown_in_html_blocks+raw_html \
-o /var/nginx/webroot/"$(basename "$2" .md )".html
echo pushed "$2"
elif [[ "$1" == "ascii-size" ]]; then
if [[ ! "$2" =~ \.md$ ]]; then
echo "Error: Second argument must be a markdown (.md) file"
echo "Usage: $0 ascii-size <markdown-file>"
exit 1
fi
${ascii_size}/bin/ascii_size "$2"
else
echo "Error: First argument must be 'push'"
echo "Usage: $0 push <markdown-file>"
exit 1
fi
'';
})
];
}

51
home-modules/nxgs.nix Normal file
View File

@@ -0,0 +1,51 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
ghostscript
(writeShellApplication rec {
name = "nxgs";
text = /* bash */ ''
print_help() {
echo "Usage: ${name} {flip <file(s)>|rotate <file(s)>|merge <Out File Name> <files>}"
}
if [ $# -lt 1 ]; then
print_help; exit 1;
fi
case "$1" in
flip)
for FILE in "''${@:2}"; do
NXGSTEMP=$(mktemp)
gs -o "$NXGSTEMP" -sDEVICE=pdfwrite -c "<</Orientation 2>> setpagedevice" -f "$FILE"
mv "$NXGSTEMP" "$FILE"
done
;;
rotate)
for FILE in "''${@:2}"; do
NXGSTEMP=$(mktemp)
gs -o "$NXGSTEMP" -sDEVICE=pdfwrite -c "<</Orientation 1>> setpagedevice" -f "$FILE"
mv "$NXGSTEMP" "$FILE"
done
;;
merge)
gs -dBATCH -dNOPAUSE -q -sOUTPUTFILE="$3" -sDEVICE=pdfwrite "''${@:3}"
;;
interactive-merge)
echo -n "Enter Name of the merged file without extension: "; read -r MERGED
NXGSTEMP=$(mktemp)
echo "''${@:2}" | tr " " "\n" > "$NXGSTEMP"
$EDITOR "$NXGSTEMP"
mapfile -t FILES < "$NXGSTEMP"
gs -dBATCH -dNOPAUSE -q -sOUTPUTFILE="''${MERGED}.pdf" -sDEVICE=pdfwrite "''${FILES[@]}"
rm "$NXGSTEMP"
;;
*)
echo "Error: Unknown command '$1'"
print_help
exit 1
;;
esac
exit 0
'';
})
];
}

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

3
home-modules/office.nix Executable file → Normal file
View File

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

38
home-modules/ollama.nix Normal file
View File

@@ -0,0 +1,38 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
ollama
(writers.writePython3Bin "ooo" {
libraries = [ pkgs.python3Packages.ollama ];
flakeIgnore = [ "E501" "E305" "E701" "E704" "E302" "E114" "F841" "E121" ];
} /* python */ ''
import sys
import ollama
if len(sys.argv) < 2:
print("Usage: ./ooo.py <system_message>")
sys.exit(1)
system_message = sys.argv[1]
input_text = sys.stdin.read()
try:
response = ollama.chat(model='gemma3:4b', messages=[
{
'role': 'system',
'content': system_message,
},
{
'role': 'user',
'content': input_text,
},
])
print(response['message']['content'])
sys.exit(0)
except Exception as e:
print(f"An error occurred: {e}", file=sys.stderr)
sys.exit(1)
'')
];
}

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

@@ -0,0 +1,29 @@
{ pkgs, ... }@all: with all; {
home = {
packages = with pkgs; [
opencode
];
file.".config/opencode/opencode.json".text = let
model = "qwen2.5-coder:7b";
in builtins.toJSON {
"$schema" = "https://opencode.ai/config.json";
model = "ollama/${model}";
theme = "matrix";
provider = {
ollama = {
name = "Ollama (local)";
npm = "@ai-sdk/openai-compatible";
options = {
baseURL = "http://localhost:11434/v1";
};
models = {
"${model}" = {
tools = true;
};
};
};
};
};
};
}

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,18 @@
{ 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
];
}

View File

@@ -0,0 +1,20 @@
{ pkgs, hyper, ... }: {
home.packages = with pkgs; [
chromium
gnome-clocks
gnome-calculator
gnome-characters
gnome-2048
element-desktop
qbittorrent
wl-clipboard
xfce.thunar
] ++ (if (hyper.host != "NxACE") then [
signal-desktop
unstable.code-cursor-fhs
obsidian
zoom-us
inkscape
audacity
] else []);
}

View File

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

14
home-modules/pnx.nix Executable file → Normal file
View File

@@ -1,5 +1,5 @@
{ config, pkgs, lib, system, user, host, allowed, 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
'') '')
@@ -22,9 +22,9 @@ lib.mkIf (host != "NxACE")
".vpn/ljk-pnx-pass.txt".text = secrets.pnxVpn.pass; ".vpn/ljk-pnx-pass.txt".text = secrets.pnxVpn.pass;
# Remmina # Remmina
".local/share/remmina/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina".source = ./pnx/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina; ".local/share/remmina/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina".source = ./assets/pnx/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina;
".local/share/remmina/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina".source = ./pnx/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina; ".local/share/remmina/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina".source = ./assets/pnx/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina;
".local/share/remmina/pnx_rdp_srv-phoenix2_192-168-1-101.remmina".source = ./pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina; ".local/share/remmina/pnx_rdp_srv-phoenix2_192-168-1-101.remmina".source = ./assets/pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina;
".local/share/remmina/pnx_rdp_srv-remote_192-168-1-21.remmina".source = ./pnx/pnx_rdp_srv-remote_192-168-1-21.remmina; ".local/share/remmina/pnx_rdp_srv-remote_192-168-1-21.remmina".source = ./assets/pnx/pnx_rdp_srv-remote_192-168-1-21.remmina;
}; };
} }

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

@@ -0,0 +1,17 @@
{ pkgs, ... }@all: with all;
{
home = {
packages = with pkgs; [
glibc_multi
glib
gcc
# pkgsi686Linux.glibc
clang-tools
];
sessionVariables = with pkgs; {
LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib:${pkgs.glibc.dev}/include:${glibc_multi.dev}/include";
C_INCLUDE_PATH = "${llvmPackages.libclang.lib}/lib:${pkgs.glibc.dev}/include:${glibc_multi.dev}/include";
CLANG_RESOURCE_DIR = "${llvmPackages.clang-unwrapped}";
};
};
}

View File

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

View File

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

View File

@@ -0,0 +1,7 @@
{ pkgs, ... }@all: with all; {
programs.go = {
enable = true;
package = pkgs.go;
goPath = "${config.xdg.dataHome}/go";
};
}

View File

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

View File

@@ -0,0 +1,7 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
nodejs
typescript-language-server
];
}

View File

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

25
home-modules/programming/python.nix Executable file → Normal file
View File

@@ -1,19 +1,22 @@
{ config, pkgs, lib, user, ... }: { pkgs, ... }@all: with all;
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
black
]); ]);
in in {
lib.mkIf (user != "tv") packages = [
{
home.packages = [
python-with-packages python-with-packages
]; ] ++ (with pkgs; [
python311Packages.python-lsp-server
home.sessionVariables = { ruff
pyright
]);
sessionVariables = {
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}"; PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
}; };
};
} }

View File

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

7
home-modules/qt.nix Executable file → Normal file
View File

@@ -1,7 +1,8 @@
{ pkgs, lib, user, ... }: { ... }:
lib.mkIf (user != "tv")
{ {
qt = { qt = {
platformTheme = "gtk"; enable = true;
platformTheme.name = "qtct";
style.name = "adwaita-dark";
}; };
} }

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

48
home-modules/rofi.nix Executable file → Normal file
View File

@@ -1,13 +1,12 @@
{ config, pkgs, rice, lib, user, ... }: { pkgs, ... }@all: with all;
let
trdr = "${rice.lib.float-to-drune rice.transparency}";
in
lib.mkIf (user != "tv")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
rofi-wayland rofi-wayland
]; ];
home.file.".config/rofi/config.rasi".text = '' home.file = let
trdr = "${rice.lib.float-to-drune rice.transparency}";
in with rice.color; {
".config/rofi/config.rasi".text = ''
configuration { configuration {
show-icons: false; show-icons: false;
display-drun: ""; display-drun: "";
@@ -16,9 +15,9 @@ lib.mkIf (user != "tv")
} }
* { * {
font: "${rice.font.code.name2} 12"; font: "${rice.font.code.name} 12";
foreground: ${rice.color.foreground}; foreground: ${foreground};
background-color: ${rice.color.background}${trdr}; background-color: ${background}${trdr};
padding: 0px; padding: 0px;
margin: 0px; margin: 0px;
spacing: 0px; spacing: 0px;
@@ -26,10 +25,10 @@ lib.mkIf (user != "tv")
} }
#window { #window {
background-color: ${rice.color.background}${trdr}; background-color: ${background}${trdr};
border: ${builtins.toString rice.border-width}px; border: ${builtins.toString rice.border-width}px;
border-radius: ${builtins.toString rice.rounding}; border-radius: ${builtins.toString rice.rounding};
border-color: ${rice.color.blue.base}; border-color: ${border};
} }
#mainbox { #mainbox {
border: 0; border: 0;
@@ -39,7 +38,7 @@ lib.mkIf (user != "tv")
border: 0px; border: 0px;
} }
#textbox { #textbox {
text-color: ${rice.color.foreground}; text-color: ${foreground};
} }
#listview { #listview {
fixed-height: 0; fixed-height: 0;
@@ -53,12 +52,13 @@ lib.mkIf (user != "tv")
#element { #element {
border: 0; border: 0;
padding: 0px ; padding: 0px;
border-radius: ${if rice.rounding > 0 then "2" else "0"}px;
} }
#element.normal.normal { background-color: ${rice.color.background}${trdr}; text-color: ${rice.color.foreground}; } #element.normal.normal { background-color: ${background}${trdr}; text-color: ${accent.base}; }
#element.selected.normal { background-color: ${rice.color.blue.base}${trdr}; text-color: ${rice.color.background}; } #element.selected.normal { background-color: ${tertiary.base}${trdr}; text-color: ${background}; }
#element.alternate.normal { background-color: ${rice.color.black.base}${trdr}; text-color: ${rice.color.foreground}; } #element.alternate.normal { background-color: ${background}${trdr}; text-color: ${secondary.base}; }
#scrollbar { #scrollbar {
@@ -71,35 +71,36 @@ lib.mkIf (user != "tv")
border: ${builtins.toString rice.border-width}px dash; border: ${builtins.toString rice.border-width}px dash;
} }
#button.selected { #button.selected {
text-color: ${rice.color.foreground}; text-color: ${foreground};
} }
#inputbar { #inputbar {
spacing: 0; spacing: 0;
text-color: ${rice.color.background}; text-color: ${background};
background-color: ${rice.color.red.base}${trdr}; background-color: ${accent.base}${trdr};
padding: 0; padding: 0;
margine-bottom: 2px;
children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
} }
#prompt { #prompt {
spacing: 0; spacing: 0;
background-color: transparent; background-color: transparent;
text-color: ${rice.color.foreground}; text-color: ${foreground};
} }
#textbox-prompt-colon { #textbox-prompt-colon {
expand: false; expand: false;
str: ">"; str: ">";
margin: 0px 0.3em 0em 0em ; margin: 0px 0.3em 0em 0em ;
text-color: ${rice.color.background}; text-color: ${background};
background-color: transparent; background-color: transparent;
} }
#case-indicator { #case-indicator {
spacing: 0; spacing: 0;
text-color: ${rice.color.foreground}; text-color: ${foreground};
background-color: transparent; background-color: transparent;
} }
#entry { #entry {
spacing: 0; spacing: 0;
text-color: ${rice.color.background}; text-color: ${background};
background-color: transparent; background-color: transparent;
placeholder: ""; placeholder: "";
} }
@@ -109,4 +110,5 @@ lib.mkIf (user != "tv")
text-color: inherit; text-color: inherit;
} }
''; '';
};
} }

View File

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

22
home-modules/sent.nix Normal file
View File

@@ -0,0 +1,22 @@
{ pkgs, ... }@all: with all;
let
my-sent = pkgs.sent.override {
patches = [
./sent.patch
];
};
in
{
home = {
packages = [
my-sent
(pkgs.writeShellApplication {
name = "nxsent";
text = with rice.color; let
in /* bash */ ''
echo "$@" | sent -c "${accent.base}" -b "${background}"
'';
})
];
};
}

71
home-modules/sent.patch Normal file
View File

@@ -0,0 +1,71 @@
From 3a348cc15a97df8e8784b129800293dcfba28f3f Mon Sep 17 00:00:00 2001
From: Sunur Efe Vural <efe@efe.kim>
Date: Wed, 13 Feb 2019 14:28:17 -0500
Subject: [PATCH] Commandline Options
A simple patch that adds extra commandline options to sent.
---
sent.1 | 11 +++++++++++
sent.c | 11 ++++++++++-
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/sent.1 b/sent.1
index fabc614..5d55bf4 100644
--- a/sent.1
+++ b/sent.1
@@ -5,6 +5,9 @@
.Nd simple plaintext presentation tool
.Sh SYNOPSIS
.Nm
+.Op Fl f Ar font
+.Op Fl c Ar fgcolor
+.Op Fl b Ar bgcolor
.Op Fl v
.Op Ar file
.Sh DESCRIPTION
@@ -21,6 +24,14 @@ few minutes.
.Bl -tag -width Ds
.It Fl v
Print version information to stdout and exit.
+.It Fl f Ar font
+Defines the
+.Ar font
+when sent is run.
+.It Fl c Ar fgcolor
+Defines the foreground color when sent is run.
+.It Fl b Ar bgcolor
+Defines the background color when sent is run.
.El
.Sh USAGE
.Bl -tag -width Ds
diff --git a/sent.c b/sent.c
index c50a572..0b36e32 100644
--- a/sent.c
+++ b/sent.c
@@ -675,7 +675,7 @@ configure(XEvent *e)
void
usage()
{
- die("usage: %s [file]", argv0);
+ die("usage: %s [-c fgcolor] [-b bgcolor] [-f font] [file]", argv0);
}
int
@@ -687,6 +687,15 @@ main(int argc, char *argv[])
case 'v':
fprintf(stderr, "sent-"VERSION"\n");
return 0;
+ case 'f':
+ fontfallbacks[0] = EARGF(usage());
+ break;
+ case 'c':
+ colors[0] = EARGF(usage());
+ break;
+ case 'b':
+ colors[1] = EARGF(usage());
+ break;
default:
usage();
} ARGEND
--
2.20.1

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

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