Compare commits

...

137 Commits

Author SHA1 Message Date
913f2042bd wildfire: 447 current 2025-07-27 10:12:37 25.05.20250718.f01fe91 6.15.7 * 2025-07-27 10:12:45 +02:00
74c4a48db8 wildfire: 446 current 2025-07-22 13:32:24 25.05.20250718.f01fe91 6.15.7 *
astroterm
2025-07-22 13:34:22 +02:00
69d9144b20 wildfire: 445 current 2025-07-22 12:16:09 25.05.20250718.f01fe91 6.15.7 *
astroterm, pastel
2025-07-22 13:34:14 +02:00
d3c4071dc1 hurricane: 187 current 2025-07-18 13:36:35 25.05.20250708.88983d4 6.15.5 * 2025-07-21 10:22:32 +02:00
f292971380 wildfire: 444 current 2025-07-20 11:38:02 25.05.20250718.f01fe91 6.15.7 *
update
2025-07-20 11:38:48 +02:00
a6b93796fd wildfire: 437 current 2025-07-19 08:54:29 25.05.20250715.32a4e87 6.15.6 *
discord

wildfire: 438 current  2025-07-19 09:07:37  25.05.20250715.32a4e87  6.15.6                          *

discord

wildfire: 439 current  2025-07-19 10:05:06  25.05.20250715.32a4e87  6.15.6                          *

wildfire: 440 current  2025-07-19 11:29:13  25.05.20250715.32a4e87  6.15.6                          *

wildfire: 441 current  2025-07-19 11:48:59  25.05.20250715.32a4e87  6.15.6                          *

Revert "wildfire: 441 current  2025-07-19 11:48:59  25.05.20250715.32a4e87  6.15.6                          *"

This reverts commit 8ddbcd337d812ec64577a12210ac7c011c5a5f01.

wildfire: 442 current  2025-07-19 13:18:46  25.05.20250715.32a4e87  6.15.6                          *

wildfire: 443 current  2025-07-19 13:19:38  25.05.20250715.32a4e87  6.15.6                          *
2025-07-19 13:20:53 +02:00
137b555c2d wildfire: 436 current 2025-07-19 07:08:30 25.05.20250715.32a4e87 6.15.6 *
UPDATE
2025-07-19 07:09:05 +02:00
8e93931704 wildfire: 435 current 2025-07-15 21:37:14 25.05.20250708.88983d4 6.15.5 *
eza fix
2025-07-15 21:42:45 +02:00
a728e7db18 hurricane: 184 current 2025-07-14 14:31:08 25.05.20250708.88983d4 6.15.5 *
wireshark
hurricane: 184 current  2025-07-14 14:31:08  25.05.20250708.88983d4     6.15.5                          *

hurricane: 185 current  2025-07-14 14:38:12  25.05.20250708.88983d4     6.15.5                          *

hurricane: 186 current  2025-07-14 14:41:20  25.05.20250708.88983d4     6.15.5                          *
2025-07-14 14:43:30 +02:00
bcc74c81e4 hurricane: 183 current 2025-07-09 16:08:16 25.05.20250708.88983d4 6.15.5 *
logitech wireless support
2025-07-09 16:12:57 +02:00
a5a7c958f6 hurricane: 178 current 2025-07-09 14:21:17 25.05.20250708.88983d4 6.15.5 *
file user-dirs and bookmarks

hurricane: 180 current  2025-07-09 15:19:03  25.05.20250708.88983d4     6.15.5                          *

hurricane: 181 current  2025-07-09 15:23:45  25.05.20250708.88983d4     6.15.5                          *
2025-07-09 15:33:14 +02:00
d2a1cad978 hurricane: 177 current 2025-07-09 13:13:01 25.05.20250708.88983d4 6.15.5 *
FINALLY GOOD KERNEL

hurricane: 179 current  2025-07-09 15:03:40  25.05.20250708.88983d4     6.15.5                          *

update
2025-07-09 15:33:14 +02:00
ebc131de84 hurricane: 176 current 2025-07-09 10:58:44 25.05.20250705.29e2900 6.15.4 *
firefox settings
2025-07-09 11:08:07 +02:00
24034ab5fe hurricane: 175 current 2025-07-09 09:43:53 25.05.20250705.29e2900 6.15.4 *
mouse and keybord settings
2025-07-09 10:10:33 +02:00
0e34e1f6a3 wildfire: 431 current 2025-07-08 07:41:32 25.05.20250705.29e2900 6.15.4 *
update
wildfire: 432 current  2025-07-08 19:26:58  25.05.20250705.29e2900  6.15.4                          *

update

wildfire: 433 current  2025-07-09 08:42:44  25.05.20250705.29e2900  6.15.4                          *
2025-07-09 08:43:09 +02:00
dd04918131 hurricane: 174 current 2025-07-08 14:38:00 25.05.20250705.29e2900 6.15.4 *
fix ssh in ghostty
2025-07-08 19:36:56 +02:00
33ac2d0d6f hurricane: 173 current 2025-07-08 11:43:02 25.05.20250705.29e2900 6.15.4 *
Fix chsfg VPN
2025-07-08 19:36:54 +02:00
8440cb3fd8 wildfire: 429 current 2025-07-07 09:54:23 25.05.20250705.29e2900 6.15.4 *
change OpenWebUI port
2025-07-07 21:26:18 +02:00
2fbb1e5090 wildfire: 427 current 2025-07-06 13:16:38 25.05.20250703.7a732ed 6.15.4 *
still the kernel with ghostty bug, dont use

wildfire: 428 current  2025-07-07 09:25:11  25.05.20250705.29e2900  6.15.4                          *

same as before

wildfire: 430 current  2025-07-07 21:17:27  25.05.20250705.29e2900  6.15.4                          *
2025-07-07 21:26:18 +02:00
936fe86b14 wildfire: 426 current 2025-07-06 12:46:52 25.05.20250620.b2485d5 6.15.3 *
gruvbox GRUB theme
2025-07-06 12:51:29 +02:00
e0b3197cc6 wildfire: 425 current 2025-07-06 11:48:38 25.05.20250620.b2485d5 6.15.3 *
disable automatic upgrades
2025-07-06 11:49:46 +02:00
fdedb45591 wildfire: 424 current 2025-07-06 11:46:04 25.05.20250620.b2485d5 6.15.3 *
thunderbird policies
2025-07-06 11:49:34 +02:00
5d0651bc6b cursor settings 2025-07-04 22:13:28 +02:00
353a8cb7b5 eza hyperlinks 2025-07-04 20:57:58 +02:00
ef46a07662 hurricane: 168 current 2025-07-04 18:13:34 25.05.20250620.b2485d5 6.15.3 *
hyprland reccomendation
2025-07-04 19:08:36 +02:00
5e87ff00a6 hurricane: 159 current 2025-07-04 15:30:30 25.05.20250620.b2485d5 6.15.3 *
bat & eza (cat & ls alt)

hurricane: 162 current  2025-07-04 16:07:16  25.05.20250620.b2485d5     6.15.3                          *

eza
hurricane: 163 current  2025-07-04 16:24:40  25.05.20250620.b2485d5     6.15.3                          *

hurricane: 164 current  2025-07-04 16:36:17  25.05.20250620.b2485d5     6.15.3                          *

eza and bat
2025-07-04 19:08:35 +02:00
d7d6dce3ee dark cursor 2025-07-04 14:18:27 +02:00
17fc44cf55 fastfetch readme 2025-07-04 13:13:17 +02:00
bce3ea80d4 hurricane: 155 current 2025-07-04 12:31:25 25.05.20250620.b2485d5 6.15.3 *
Fastfetch
hurricane: 156 current  2025-07-04 12:35:21  25.05.20250620.b2485d5     6.15.3                          *

hurricane: 157 current  2025-07-04 12:40:53  25.05.20250620.b2485d5     6.15.3                          *
2025-07-04 12:41:18 +02:00
f484e7ff14 hurricane: 154 current 2025-07-04 11:03:50 25.05.20250620.b2485d5 6.15.3 *
disable idle
2025-07-04 11:29:41 +02:00
77d0f6e4b3 hurricane: 152 current 2025-07-03 15:57:35 25.05.20250620.b2485d5 6.15.3 *
fix screenshot (no animation)
2025-07-03 16:03:36 +02:00
ce1fa15053 hurricane: 150 current 2025-07-02 11:32:42 25.05.20250620.b2485d5 6.15.3 * 2025-07-02 11:32:49 +02:00
e06f0f2b30 fix port opening on wrong host 2025-07-02 10:30:18 +02:00
ec38db785c wildfire: 408 current 2025-06-30 23:43:55 25.05.20250629.b43c397 6.15.4 *
replace systemd-boot with epic GRUB

wildfire: 410 current  2025-07-01 18:59:46  25.05.20250629.b43c397  6.15.4                          *

disable cryptodisk (grub)

grub not on /efi

wildfire: 416 current  2025-07-01 21:25:46  25.05.20250620.b2485d5  6.15.3                          *

no config generation limit wildfire: 417 current  2025-07-01 21:28:25  25.05.20250620.b2485d5  6.15.3                          *
2025-07-01 21:57:57 +02:00
823d721ac7 wildfire: 409 current 2025-07-01 18:32:46 25.05.20250629.b43c397 6.15.4 *
allow port 3000
2025-07-01 21:17:32 +02:00
eda9b91af4 move garbage collect logic to nix module 2025-07-01 20:29:39 +02:00
581a63a196 optimise nix store 2025-07-01 20:29:39 +02:00
c32c800237 hurricane: 147 current 2025-06-30 17:20:01 25.05.20250629.b43c397 6.15.4 *
fix pgadmin
2025-07-01 20:29:39 +02:00
d3200def3b hurricane: 144 current 2025-06-30 16:54:06 25.05.20250629.b43c397 6.15.4 *
power management
hurricane: 145 current  2025-06-30 16:57:44  25.05.20250629.b43c397     6.15.4                          *
2025-07-01 20:29:39 +02:00
15db902e00 hurricane: 143 current 2025-06-30 16:28:57 25.05.20250629.b43c397 6.15.4 *
add pgadmin and reduce blur
2025-07-01 20:29:39 +02:00
a9bf46a138 hurricane: 142 current 2025-06-30 15:28:43 25.05.20250629.b43c397 6.15.4 *
bluetooth working
2025-07-01 20:29:39 +02:00
6bca877aee hurricane: 141 current 2025-06-30 15:19:31 25.05.20250629.b43c397 6.15.4 *
waybar
2025-07-01 20:29:39 +02:00
bf545db1d9 redhat telemtry 2025-06-30 15:11:50 +02:00
d5b04e1c8d hurricane: 139 current 2025-06-30 14:16:08 25.05.20250620.b2485d5 6.15.3 *
add postgresql15
2025-06-30 14:18:44 +02:00
ad8e84bb43 hurricane: 138 current 2025-06-30 12:44:23 25.05.20250620.b2485d5 6.15.3 *
abbreviations
2025-06-30 12:46:26 +02:00
1273474d17 hurricane: 137 current 2025-06-30 11:43:13 25.05.20250620.b2485d5 6.15.3 *
waybar calendar
2025-06-30 12:43:45 +02:00
61d08d1cea hurricane: 136 current 2025-06-30 11:08:27 25.05.20250620.b2485d5 6.15.3 *
add slack
2025-06-30 11:08:52 +02:00
2f2e316287 hurricane: 134 current 2025-06-30 10:49:08 25.05.20250620.b2485d5 6.15.3 *
finally fucking fix default browser
hurricane: 135 current  2025-06-30 10:55:19  25.05.20250620.b2485d5     6.15.3                          *
2025-06-30 10:56:57 +02:00
33591f9dab wallpapers and waybar fix
wildfire: 404 current  2025-06-29 22:20:26  25.05.20250620.b2485d5  6.15.3                          *
2025-06-29 22:21:09 +02:00
c389e93b03 bg blur 2025-06-29 21:24:04 +02:00
3ed9534d00 hypridle 2025-06-29 21:16:51 +02:00
69ea9a05dc hurricane: 129 current 2025-06-29 21:03:24 25.05.20250620.b2485d5 6.15.3 *
waybar
hurricane: 130 current  2025-06-29 21:05:15  25.05.20250620.b2485d5     6.15.3                          *
2025-06-29 21:06:21 +02:00
8cb30719fa much improve waybar styling 2025-06-29 20:48:54 +02:00
2d0a133dd9 cava config, hyprland changes 2025-06-29 18:51:28 +02:00
c18beb0483 hurricane: 126 current 2025-06-29 12:25:16 25.05.20250620.b2485d5 6.15.3 *
waybar cava
2025-06-29 12:27:18 +02:00
a69ccdc6a2 hurricane: 124 current 2025-06-28 19:54:13 25.05.20250620.b2485d5 6.15.3 *
add audio apps
2025-06-28 19:54:59 +02:00
a492a1fe63 hurricane: 123 current 2025-06-28 19:46:29 25.05.20250620.b2485d5 6.15.3 *
waybar improvements
2025-06-28 19:53:36 +02:00
89bdb526f0 hurricane: 122 current 2025-06-28 13:24:35 25.05.20250620.b2485d5 6.15.3 *
big waybar fixes
2025-06-28 19:52:48 +02:00
5b196f09df waybar config< 2025-06-27 16:24:12 +02:00
f7d0307486 code-cursor fonts 2025-06-27 16:14:51 +02:00
7f38c0a50d wildfire: 337 current 2025-06-26 22:14:02 25.05.20250620.b2485d5 6.15.3 *
VPN config
2025-06-26 22:15:42 +02:00
54fcfdb5d3 waybar WIP 2025-06-26 21:38:17 +02:00
b5f1989145 hurricane: 89 current 2025-06-26 20:17:54 25.05.20250620.b2485d5 6.15.3 *
hurricane: 90 current  2025-06-26 20:24:18  25.05.20250620.b2485d5     6.15.3                          *

hurricane: 91 current  2025-06-26 20:29:03  25.05.20250620.b2485d5     6.15.3                          *

vpn config

dont put address or endpoint in allowed IPs!

Revert "hurricane: 90 current  2025-06-26 20:24:18  25.05.20250620.b2485d5     6.15.3                          *"

This reverts commit b067ce371692e26e45d3d134dda8d56a3168c3bb.
2025-06-26 21:02:49 +02:00
928279221c hurricane: 83 current 2025-06-26 19:17:42 25.05.20250620.b2485d5 6.15.3 *
gitkraken config wip
hurricane: 85 current  2025-06-26 19:38:29  25.05.20250620.b2485d5     6.15.3                          *

git config

hurricane: 86 current  2025-06-26 19:43:59  25.05.20250620.b2485d5     6.15.3                          *

gitkraken config
2025-06-26 19:52:50 +02:00
673cdddadd hurricane: 82 current 2025-06-26 19:04:06 25.05.20250620.b2485d5 6.15.3 *
remove starship dir sub
2025-06-26 19:39:46 +02:00
2cad1c43d4 hurricane: 81 current 2025-06-26 17:32:17 25.05.20250620.b2485d5 6.15.3 *
VPN prefixs
2025-06-26 17:45:27 +02:00
260a6b4c74 Revert "hurricane: 77 current 2025-06-26 16:44:16 25.05.20250620.b2485d5 6.15.3 *"
This reverts commit 3089d2bdb4.
2025-06-26 16:48:55 +02:00
3089d2bdb4 hurricane: 77 current 2025-06-26 16:44:16 25.05.20250620.b2485d5 6.15.3 *
VPN prefix simplification
2025-06-26 16:45:20 +02:00
9432b4d51e hurricane: 74 current 2025-06-26 15:38:16 25.05.20250620.b2485d5 6.15.3 *
laptop lid close turn off screen
2025-06-26 15:39:28 +02:00
8e84b64f4b disable hyprland background 2025-06-26 12:07:19 +02:00
785af88cc2 fix redundant hyprpaper,hypridle,hyprsynset 2025-06-26 11:36:24 +02:00
529c409985 simpler ssh config 2025-06-26 11:21:38 +02:00
e33f18e990 VPN updates
vpn interface names

vpn config fix
2025-06-26 11:21:38 +02:00
901ca3cedb ssh settings reorder 2025-06-24 20:44:16 +02:00
2fcb964b16 cursor settings 2025-06-24 19:49:08 +02:00
fd4fa0add6 wildfire: 331 current 2025-06-24 19:26:24 25.05.20250620.b2485d5 6.15.3 *
initial VPN config
2025-06-24 19:28:16 +02:00
6f4c1543e1 wildfire background 2025-06-24 19:20:47 +02:00
fe586d4a56 restructure home manager configs 2025-06-24 18:47:45 +02:00
6ca250dbaf wildfire: 325 current 2025-06-24 18:12:08 25.05.20250620.b2485d5 6.15.3 * 2025-06-24 18:12:14 +02:00
2d7fe550ff wildfire: 324 current 2025-06-24 18:09:13 25.05.20250620.b2485d5 6.15.3 *
SSH, fail2ban, aliases
2025-06-24 18:10:12 +02:00
be9e1666a8 wildfire: 320 current 2025-06-24 17:09:39 25.05.20250620.b2485d5 6.15.3 *
Starship and fish: wildfire: 321 current  2025-06-24 17:16:10  25.05.20250620.b2485d5  6.15.3                          *

wildfire: 322 current  2025-06-24 17:20:47  25.05.20250620.b2485d5  6.15.3                          *

wildfire: 323 current  2025-06-24 17:23:19  25.05.20250620.b2485d5  6.15.3                          *
2025-06-24 17:25:43 +02:00
b2ef22eff1 wildfire: 317 current 2025-06-24 16:31:59 25.05.20250620.b2485d5 6.15.3 *
workspaces: wildfire: 318 current  2025-06-24 16:33:12  25.05.20250620.b2485d5  6.15.3                          *

wildfire: 319 current  2025-06-24 16:38:18  25.05.20250620.b2485d5  6.15.3                          *
2025-06-24 16:40:47 +02:00
a4eb496e7e wildfire: 314 current 2025-06-24 15:36:30 25.05.20250620.b2485d5 6.15.3 *
wildfire: 315 current  2025-06-24 15:38:16  25.05.20250620.b2485d5  6.15.3                          *

wildfire: 316 current  2025-06-24 16:05:25  25.05.20250620.b2485d5  6.15.3                          *
2025-06-24 16:40:18 +02:00
cfe5589b69 wildfire: 312 current 2025-06-22 16:24:06 25.05.20250620.b2485d5 6.15.3 *
btop settings
2025-06-22 16:34:52 +02:00
c51cc53913 laptop media keys
hurricane: 57 current  2025-06-22 15:34:24  25.05.20250620.b2485d5     6.15.3                          *

media keys
hurricane: 58 current  2025-06-22 15:36:29  25.05.20250620.b2485d5     6.15.3                          *
2025-06-22 15:38:16 +02:00
b3bc7cd041 epic workspace gestures 2025-06-22 15:10:17 +02:00
b644924e3d hurricane: 54 current 2025-06-22 14:54:03 25.05.20250620.b2485d5 6.15.3 *
fix graphics config
2025-06-22 15:10:09 +02:00
0316b4ffc7 hurricane: 50 current 2025-06-22 14:42:50 25.05.20250620.b2485d5 6.15.3 *
input settings
hurricane: 51 current  2025-06-22 14:45:23  25.05.20250620.b2485d5     6.15.3                          *
2025-06-22 14:45:56 +02:00
d4997929fb repeat delay and media keys 2025-06-22 14:27:59 +02:00
cbbcda49da remove xterm 2025-06-22 14:27:45 +02:00
c233099b99 backgrounds 2025-06-22 14:27:35 +02:00
5de7f5f391 wildfire: 310 current 2025-06-22 13:26:06 25.05.20250620.b2485d5 6.15.3 * 2025-06-22 13:26:12 +02:00
e050b0969b hurricane: 47 current 2025-06-22 13:22:03 25.05.20250620.b2485d5 6.15.3 *
UPDATE
2025-06-22 13:22:42 +02:00
8356a5e4c6 hurricane: 46 current 2025-06-22 13:14:37 25.05.20250617.36ab78d 6.15.2 * 2025-06-22 13:14:40 +02:00
6d61866827 hurricane: 44 current 2025-06-22 13:11:44 25.05.20250617.36ab78d 6.15.2 * 2025-06-22 13:11:48 +02:00
c63fa48614 wildfire: 309 current 2025-06-22 12:56:39 25.05.20250617.36ab78d 6.15.2 *
Graphics config
2025-06-22 13:07:44 +02:00
1a2b1f157b wildfire: 306 current 2025-06-21 15:47:48 25.05.20250617.36ab78d 6.15.2 *
cursor issues
wildfire: 307 current  2025-06-21 15:53:10  25.05.20250617.36ab78d  6.15.2                          *
2025-06-22 13:07:32 +02:00
78c6e978b3 wildfire: 305 current 2025-06-21 15:32:32 25.05.20250617.36ab78d 6.15.2 *
add keyring
2025-06-21 15:34:27 +02:00
ec8512746b finally fix fucking firejail bs
needs noblacklist AND whitelist...
2025-06-21 15:22:19 +02:00
8ffe52a3ca nextcloud fix?
issue client starting twice...
2025-06-21 15:22:19 +02:00
8bf092e498 hypridle settings 2025-06-21 13:00:10 +02:00
98b45e9dd8 video player 2025-06-21 12:37:12 +02:00
34c79edf41 hyprsunset 2025-06-21 12:37:02 +02:00
6eaa1f6835 add image programs 2025-06-21 12:17:09 +02:00
b4fcc4ca7c dont make things transparent when in fullscreen 2025-06-21 11:33:01 +02:00
d0d8776121 hyprland rounding 2025-06-21 11:31:49 +02:00
1666a0225b hyprlock blur 2025-06-21 09:43:38 +02:00
3f7df29793 wildfire: 282 current 2025-06-21 07:53:42 25.05.20250617.36ab78d 6.15.2 *
screenshot
2025-06-21 09:41:18 +02:00
6fffe45227 wildfire: 281 current 2025-06-21 07:40:17 25.05.20250617.36ab78d 6.15.2 *
fix clipboard manager
2025-06-21 07:42:16 +02:00
46bf2e8e99 wildfire: 268 current 2025-06-20 19:40:32 25.05.20250617.36ab78d 6.15.2 *
Cursor theme. wildfire: 280 current  2025-06-20 22:20:02  25.05.20250617.36ab78d  6.15.2                          *
2025-06-20 22:21:20 +02:00
7dcd8a60f0 Clipboard manager 2025-06-20 19:30:06 +02:00
ac75745f93 wildfire: 267 current 2025-06-20 17:55:44 25.05.20250617.36ab78d 6.15.2 *
Hypridle
2025-06-20 17:57:32 +02:00
4f7e4dc4c2 wildfire: 266 current 2025-06-20 17:22:52 25.05.20250617.36ab78d 6.15.2 *
fix flake inputs
2025-06-20 17:24:56 +02:00
69c8716a6f wildfire: 265 current 2025-06-20 16:44:59 25.05.20250617.36ab78d 6.15.2 *
normal rofi, add hyprpicker
2025-06-20 17:24:56 +02:00
46b4ba80a9 hyprland monitors refactor config 2025-06-20 16:28:31 +02:00
e53fc2a8c2 wildfire: 258 current 2025-06-20 15:46:22 25.05.20250617.36ab78d 6.15.2 *
remove flake check
2025-06-20 16:28:31 +02:00
b76b4e8266 wildfire: 257 current 2025-06-20 15:45:49 25.05.20250617.36ab78d 6.15.2 *
increase blur
2025-06-20 16:28:31 +02:00
472977c771 wildfire: 254 current 2025-06-20 14:25:24 25.05.20250617.36ab78d 6.15.2 *
wildfire: 255 current  2025-06-20 14:26:40  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 256 current  2025-06-20 14:28:25  25.05.20250617.36ab78d  6.15.2                          *
2025-06-20 16:28:31 +02:00
c3c2fb9098 wildfire: 252 current 2025-06-20 13:53:42 25.05.20250617.36ab78d 6.15.2 *
vim settings
2025-06-20 15:47:41 +02:00
f873a626a9 wildfire: 251 current 2025-06-20 13:43:28 25.05.20250617.36ab78d 6.15.2 *
rofi color fixes
2025-06-20 13:46:34 +02:00
e32525eb0f fix colors hyprland 2025-06-20 13:17:44 +02:00
00ea956f6a wildfire: 242 current 2025-06-20 13:02:09 25.05.20250617.36ab78d 6.15.2 *
smarter rebuild GC
2025-06-20 13:02:42 +02:00
6f9f670e8e wildfire: 241 current 2025-06-20 12:41:45 25.05.20250617.36ab78d 6.15.2 *
hyprland and rofi (theme) colors WIP
2025-06-20 13:01:41 +02:00
56a9bf3270 wildfire: 233 current 2025-06-20 11:15:55 25.05.20250617.36ab78d 6.15.2 *
hyprland opacity: wildfire: 234 current  2025-06-20 11:22:33  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 235 current  2025-06-20 11:34:16  25.05.20250617.36ab78d  6.15.2                          *
2025-06-20 11:36:05 +02:00
f6c529400a wildfire: 232 current 2025-06-20 11:04:26 25.05.20250617.36ab78d 6.15.2 *
comments
2025-06-20 11:06:12 +02:00
89fb45d61f wildfire: 230 current 2025-06-20 10:11:39 25.05.20250617.36ab78d 6.15.2 *
hyprland gaps

wildfire: 231 current  2025-06-20 10:16:08  25.05.20250617.36ab78d  6.15.2                          *

hyprland smart split
2025-06-20 11:03:04 +02:00
0b78f3aa91 wildfire: 229 current 2025-06-20 10:07:32 25.05.20250617.36ab78d 6.15.2 * 2025-06-20 11:03:04 +02:00
7533a9a2f3 fix monitor wildfire 2025-06-20 11:03:04 +02:00
e2471a64ed wildfire: 227 current 2025-06-20 09:43:01 25.05.20250617.36ab78d 6.15.2 *
starship
2025-06-20 11:03:04 +02:00
ef25eaf5a4 wildfire: 212 current 2025-06-19 23:48:35 25.05.20250617.36ab78d 6.15.2 *
Rofi edits:
wildfire: 213 current  2025-06-20 00:16:32  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 214 current  2025-06-20 00:20:09  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 215 current  2025-06-20 00:27:19  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 224 current  2025-06-20 01:04:30  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 225 current  2025-06-20 01:09:42  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 226 current  2025-06-20 01:15:01  25.05.20250617.36ab78d  6.15.2                          *
2025-06-20 11:03:04 +02:00
81094efac3 cursor terminal config
wildfire: 217 current  2025-06-20 00:41:58  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 218 current  2025-06-20 00:45:47  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 219 current  2025-06-20 00:47:06  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 220 current  2025-06-20 00:50:10  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 221 current  2025-06-20 00:53:03  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 222 current  2025-06-20 00:55:34  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 223 current  2025-06-20 00:56:58  25.05.20250617.36ab78d  6.15.2                          *
2025-06-20 09:35:03 +02:00
d205b28f4f rofi and btop settings 2025-06-19 23:45:14 +02:00
51f82ed57a code-cursor config WIP
wildfire: 209 current  2025-06-19 23:30:43  25.05.20250617.36ab78d  6.15.2                          *

wildfire: 210 current  2025-06-19 23:35:09  25.05.20250617.36ab78d  6.15.2                          *
2025-06-19 23:36:36 +02:00
335362ea57 add btop-rocm to wildfire 2025-06-19 23:29:30 +02:00
4a80288d99 refactor 2025-06-19 22:49:03 +02:00
33211f4378 add direnv and some comments 2025-06-19 22:48:47 +02:00
39ff370014 ghostty bg 2025-06-19 22:48:22 +02:00
58 changed files with 2349 additions and 691 deletions

10
.vscode/settings.json vendored
View File

@@ -1,4 +1,7 @@
{
"[nix]": {
"editor.defaultFormatter": "jnoortheen.nix-ide"
},
"nix.enableLanguageServer": true,
"nix.serverPath": "nil",
"nix.formatterPath": "alejandra",
@@ -6,10 +9,11 @@
"nil": {
"formatting": {
"command": ["alejandra"]
},
"flake": {
"autoArchive": true,
"autoEvalInputs": true
}
}
},
"[nix]": {
"editor.defaultFormatter": "jnoortheen.nix-ide"
}
}

View File

@@ -2,6 +2,8 @@
A modular, flake-based NixOS configuration supporting multiple hosts with shared and host-specific configurations.
![fastfetch screenshot](screenshots/fastfetch.png)
## 🏗️ Structure Overview
```
@@ -13,7 +15,7 @@ nix-config/
├── modules/ # Shared configuration modules
│ ├── common.nix # Base system configuration
│ ├── programs.nix # System-wide packages and programs
│ ├── home/ # Home Manager configurations
│ ├── hm/ # Home Manager configurations
│ └── desktops/ # Desktop environment configurations
└── rebuild-nix-system.sh # Helper script for system rebuilds
```
@@ -73,7 +75,7 @@ Hyprland desktop environment setup:
- **Theming**: Gruvbox theme with consistent fonts
- **Tools**: Screenshot tools, clipboard manager, file manager
### `modules/home/`
### `modules/hm/`
Home Manager configurations:
@@ -135,7 +137,7 @@ nix flake update
### User Packages
- Managed through Home Manager
- Per-user configurations in `modules/home/`
- Per-user configurations in `modules/hm/`
## 🔄 Development Workflow

349
flake.lock generated
View File

@@ -20,11 +20,11 @@
]
},
"locked": {
"lastModified": 1749155310,
"narHash": "sha256-t0HfHg/1+TbSra5s6nNM0o4tnb3uqWedShSpZXsUMYY=",
"lastModified": 1752743471,
"narHash": "sha256-4izhj1j7J4mE8LgljCXSIUDculqOsxxhdoC81VhqizM=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "94981cf75a9f11da0b6dd6a1abbd7c50a36ab2d3",
"rev": "e31b575d19e7cf8a8f4398e2f9cffe27a1332506",
"type": "github"
},
"original": {
@@ -78,11 +78,11 @@
]
},
"locked": {
"lastModified": 1749154018,
"narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=",
"lastModified": 1752780124,
"narHash": "sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111",
"rev": "c718918222bdb104397762dea67e6b397a7927fe",
"type": "github"
},
"original": {
@@ -137,11 +137,11 @@
]
},
"locked": {
"lastModified": 1749238452,
"narHash": "sha256-8qiKEWcxUrjpUpK+WyFNg/72C8rp70LUuyTD23T+SdQ=",
"lastModified": 1752149140,
"narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "c7225d73755a6c4c7c72f4d4f3925ea426e325a8",
"rev": "340494a38b5ec453dfc542c6226481f736cc8a9a",
"type": "github"
},
"original": {
@@ -150,62 +150,27 @@
"type": "github"
}
},
"hypridle": {
"inputs": {
"hyprland-protocols": "hyprland-protocols",
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1749162425,
"narHash": "sha256-8LFke/vOxFOW1t9fJoLmO1r4kA8oXXRe8QKKq/lsPlc=",
"owner": "hyprwm",
"repo": "hypridle",
"rev": "b2bc15baffb5182051e94787f1342464fc9d241e",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hypridle",
"type": "github"
}
},
"hyprland": {
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprgraphics": "hyprgraphics",
"hyprland-protocols": "hyprland-protocols_2",
"hyprland-protocols": "hyprland-protocols",
"hyprland-qtutils": "hyprland-qtutils",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner_2",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems",
"xdph": "xdph"
},
"locked": {
"lastModified": 1750337883,
"narHash": "sha256-mV/Fnfs4cZeOtbxLrrr93AFgDJXyN+9vsGulsg4zJWM=",
"lastModified": 1752936500,
"narHash": "sha256-StLLgYbL3U2iDezMbfr/QjUtd2a0Mb+pScDSQxFElTg=",
"owner": "hyprwm",
"repo": "hyprland",
"rev": "86b5e3bfbc99237bb28a253fbef49b9c1b7bc3a3",
"rev": "91d8a629ebfffaa46290331a74a54e249dec64fe",
"type": "github"
},
"original": {
@@ -214,83 +179,7 @@
"type": "github"
}
},
"hyprland-contrib": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
]
},
"locked": {
"lastModified": 1749933213,
"narHash": "sha256-nlmU6lpm8zGe6EnexauHr9Y/4AknE4j+ATcyjIsO1jw=",
"owner": "hyprwm",
"repo": "contrib",
"rev": "9d4963e7394485ba4735779519c59275901de6ab",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "contrib",
"type": "github"
}
},
"hyprland-plugins": {
"inputs": {
"hyprland": [
"hyprland"
],
"nixpkgs": [
"hyprland-plugins",
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland-plugins",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1750184339,
"narHash": "sha256-/QGKUdSOXJInLwlDzgtZZvPdbA+xI2z9CFbZ+iBN3j4=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "c0e675dd87d737f8ef64327291cbbb201f3764ba",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-plugins",
"type": "github"
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hypridle",
"nixpkgs"
],
"systems": [
"hypridle",
"systems"
]
},
"locked": {
"lastModified": 1749046714,
"narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-protocols_2": {
"inputs": {
"nixpkgs": [
"hyprland",
@@ -370,11 +259,11 @@
]
},
"locked": {
"lastModified": 1749155776,
"narHash": "sha256-t1PM0wxQLQwv2F2AW23uA7pm5giwmcgYEWbNIRct9r4=",
"lastModified": 1750371812,
"narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "396e8aa1c06274835b69da7f9a015fff9a9b7522",
"rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
"type": "github"
},
"original": {
@@ -399,11 +288,11 @@
]
},
"locked": {
"lastModified": 1749145882,
"narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=",
"lastModified": 1750371198,
"narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676",
"rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
"type": "github"
},
"original": {
@@ -412,82 +301,6 @@
"type": "github"
}
},
"hyprlock": {
"inputs": {
"hyprgraphics": [
"hyprland",
"hyprgraphics"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": "hyprwayland-scanner_3",
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1749162391,
"narHash": "sha256-aCiNnE26qIAxEBP6SRXjLBlIGOB18TViDreoPe96p6Q=",
"owner": "hyprwm",
"repo": "hyprlock",
"rev": "f9d8dfab7ae0aec625e7814e16f626fabec3641b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlock",
"type": "github"
}
},
"hyprpaper": {
"inputs": {
"hyprgraphics": [
"hyprland",
"hyprgraphics"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": "hyprwayland-scanner_4",
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1749539958,
"narHash": "sha256-4tMENfaUGXh5jCn4B/ubOJZHOiKsY6uKBT+Kh2uqR+w=",
"owner": "hyprwm",
"repo": "hyprpaper",
"rev": "81dc1fe4f05305319bb586a0eb6f6004a1476832",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprpaper",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
@@ -500,11 +313,11 @@
]
},
"locked": {
"lastModified": 1749819919,
"narHash": "sha256-7F/KG8dwSH9JXdlpOVrEEArS+PJSn0iEnx5eVCk89/I=",
"lastModified": 1752252310,
"narHash": "sha256-06i1pIh6wb+sDeDmWlzuPwIdaFMxLlj1J9I5B9XqSeo=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "57ab2a867d8b554ad89f29060c15efd11631db91",
"rev": "bcabcbada90ed2aacb435dc09b91001819a6dc82",
"type": "github"
},
"original": {
@@ -514,31 +327,6 @@
}
},
"hyprwayland-scanner": {
"inputs": {
"nixpkgs": [
"hypridle",
"nixpkgs"
],
"systems": [
"hypridle",
"systems"
]
},
"locked": {
"lastModified": 1749145760,
"narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"hyprwayland-scanner_2": {
"inputs": {
"nixpkgs": [
"hyprland",
@@ -550,61 +338,11 @@
]
},
"locked": {
"lastModified": 1749145760,
"narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=",
"lastModified": 1751897909,
"narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"hyprwayland-scanner_3": {
"inputs": {
"nixpkgs": [
"hyprlock",
"nixpkgs"
],
"systems": [
"hyprlock",
"systems"
]
},
"locked": {
"lastModified": 1749145760,
"narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"hyprwayland-scanner_4": {
"inputs": {
"nixpkgs": [
"hyprpaper",
"nixpkgs"
],
"systems": [
"hyprpaper",
"systems"
]
},
"locked": {
"lastModified": 1749145760,
"narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6",
"rev": "fcca0c61f988a9d092cbb33e906775014c61579d",
"type": "github"
},
"original": {
@@ -615,11 +353,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1749794982,
"narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=",
"lastModified": 1752687322,
"narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81",
"rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251",
"type": "github"
},
"original": {
@@ -631,11 +369,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1750134718,
"narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=",
"lastModified": 1752687322,
"narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c",
"rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251",
"type": "github"
},
"original": {
@@ -647,11 +385,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1750133334,
"narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=",
"lastModified": 1752866191,
"narHash": "sha256-NV4S2Lf2hYmZQ3Qf4t/YyyBaJNuxLPyjzvDma0zPp/M=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "36ab78dab7da2e4e27911007033713bab534187b",
"rev": "f01fe91b0108a7aff99c99f2e9abbc45db0adc2a",
"type": "github"
},
"original": {
@@ -671,11 +409,11 @@
]
},
"locked": {
"lastModified": 1749636823,
"narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=",
"lastModified": 1750779888,
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "623c56286de5a3193aa38891a6991b28f9bab056",
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
"type": "github"
},
"original": {
@@ -687,12 +425,7 @@
"root": {
"inputs": {
"home-manager": "home-manager",
"hypridle": "hypridle",
"hyprland": "hyprland",
"hyprland-contrib": "hyprland-contrib",
"hyprland-plugins": "hyprland-plugins",
"hyprlock": "hyprlock",
"hyprpaper": "hyprpaper",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable"
}
@@ -740,11 +473,11 @@
]
},
"locked": {
"lastModified": 1749490041,
"narHash": "sha256-R9Dn9IyUdPaJHD2Oqd7XJnnxpka6M6UYw4Ld0iA46HM=",
"lastModified": 1751300244,
"narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "3cf35e178bc192ee51e3fddfd69e531e2c106a30",
"rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a",
"type": "github"
},
"original": {

View File

@@ -6,28 +6,24 @@
nixpkgs-unstable,
home-manager,
...
}: {
}: let
specials = {
inherit inputs;
pkgs-unstable = import nixpkgs-unstable {
system = "x86_64-linux";
config.allowUnfree = true;
};
};
in {
nixosConfigurations = {
wildfire = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;
pkgs-unstable = import nixpkgs-unstable {
system = "x86_64-linux";
config.allowUnfree = true;
};
};
specialArgs = specials;
modules = [
./hosts/wildfire/configuration.nix
];
};
hurricane = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;
pkgs-unstable = import nixpkgs-unstable {
system = "x86_64-linux";
config.allowUnfree = true;
};
};
specialArgs = specials;
modules = [
./hosts/hurricane/configuration.nix
];
@@ -48,47 +44,5 @@
# hyprwm
hyprland.url = "github:hyprwm/hyprland";
hypridle = {
url = "github:hyprwm/hypridle";
inputs = {
hyprlang.follows = "hyprland/hyprlang";
hyprutils.follows = "hyprland/hyprutils";
nixpkgs.follows = "hyprland/nixpkgs";
systems.follows = "hyprland/systems";
};
};
hyprland-contrib = {
url = "github:hyprwm/contrib";
inputs.nixpkgs.follows = "hyprland/nixpkgs";
};
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
hyprlock = {
url = "github:hyprwm/hyprlock";
inputs = {
hyprgraphics.follows = "hyprland/hyprgraphics";
hyprlang.follows = "hyprland/hyprlang";
hyprutils.follows = "hyprland/hyprutils";
nixpkgs.follows = "hyprland/nixpkgs";
systems.follows = "hyprland/systems";
};
};
hyprpaper = {
url = "github:hyprwm/hyprpaper";
inputs = {
hyprgraphics.follows = "hyprland/hyprgraphics";
hyprlang.follows = "hyprland/hyprlang";
hyprutils.follows = "hyprland/hyprutils";
nixpkgs.follows = "hyprland/nixpkgs";
systems.follows = "hyprland/systems";
};
};
};
}

View File

@@ -4,32 +4,44 @@
../../modules/common.nix
../../modules/desktops/hyprland-desktop.nix
../../modules/programs.nix
./vpn.nix
];
# Extend home-manager configuration with host-specific monitor settings
home-manager.users.schulze.imports = [
./hyprland-monitors.nix
./hyprlock.nix
./hyprpaper.nix
./hm/hyprland-monitors.nix
./hm/hyprlock.nix
./hm/hyprpaper.nix
];
networking.hostName = "hurricane";
hardware = {
graphics.enable = true;
};
# Network security specific to host
networking.firewall.allowedTCPPorts = [];
networking.firewall.allowedUDPPorts = [];
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Intel GPU support
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
vaapiIntel
vpl-gpu-rt # Intel GPU support
intel-media-driver # LIBVA_DRIVER_NAME=iHD
intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
libvdpau-va-gl
];
};
# host-specific packages
environment.systemPackages = with pkgs; [
btop
];
# host-specific Systemd services
# host-specific services
services = {
# Intel CPU overheating support
thermald.enable = true;
};
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions

View File

@@ -0,0 +1,15 @@
{
# Home Manager Hyprland monitors
wayland.windowManager.hyprland.settings = {
monitor = [
"DP-3, 3440x1440@99.98, 0x0, 1" # Philips Ultrawide left
"HDMI-A-1, 3440x1440@99.98, 3440x0, 1" # Philips Ultrawide right
"eDP-1, 1920x1200@60.00, 6880x240, 1" # internal display
];
bindl = [
",switch:off:Lid Switch,exec,hyprctl keyword monitor 'eDP-1, 1920x1200@60.00, 6880x240, 1'" # enable display in hyprland when lid open
",switch:on:Lid Switch,exec,hyprctl keyword monitor 'eDP-1, disable'" # disable display in hyprland when lid closed
];
};
}

View File

@@ -1,3 +1,3 @@
{
programs.hyprlock.settings.background.path = "$HOME/git/nix-config/modules/home/images/control-panel.png";
programs.hyprlock.settings.background.path = "$HOME/git/nix-config/modules/hm/images/control-panel.png";
}

View File

@@ -0,0 +1,18 @@
{
services.hyprpaper = {
enable = true;
settings = {
preload = [
"$HOME/git/nix-config/modules/hm/images/nix.png"
"$HOME/git/nix-config/modules/hm/images/forest.png"
"$HOME/git/nix-config/modules/hm/images/moss.png"
];
wallpaper = [
", $HOME/git/nix-config/modules/hm/images/nix.png"
"DP-3, $HOME/git/nix-config/modules/hm/images/forest.png"
"HDMI-A-1, $HOME/git/nix-config/modules/hm/images/moss.png"
"eDP-1, $HOME/git/nix-config/modules/hm/images/moss.png"
];
};
};
}

View File

@@ -1,8 +0,0 @@
{
# Home Manager Hyprland monitors
wayland.windowManager.hyprland.extraConfig = ''
monitor = DP-3, 3440x1440@99.98, 0x0, auto; # Philips Ultrawide left
monitor = HDMI-A-1, 3440x1440@99.98, 3440x0, auto; # Philips Ultrawide right
monitor = eDP-1, 1920x1200@60.00, auto, auto # internal display
'';
}

View File

@@ -1,15 +0,0 @@
{
services.hyprpaper = {
enable = true;
settings = {
preload = [
"$HOME/git/nix-config/modules/home/images/nix.png"
"$HOME/git/nix-config/modules/home/images/forest.png"
];
wallpaper = [
", $HOME/git/nix-config/modules/home/images/nix.png"
"DP-3, $HOME/git/nix-config/modules/home/images/forest.png"
];
};
};
}

57
hosts/hurricane/vpn.nix Normal file
View File

@@ -0,0 +1,57 @@
{
networking.wg-quick.interfaces = {
wg-felix = {
address = ["10.8.0.4/24"];
dns = ["192.168.0.128"];
privateKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/Felix-Hurricane-pk";
peers = [
{
publicKey = "a35ZSWhBNzPFkf1RCkg4E7cNnUdGGOr4CsA0EM65H0g=";
presharedKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/Felix-Hurricane-psk";
allowedIPs = ["192.168.0.0/24"];
endpoint = "vpn.schulze.network:51820";
persistentKeepalive = 25;
}
];
};
wg-csb = {
address = ["192.168.108.17/22" "2a02:9a0:102:108::17/64"];
privateKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/CSB-Hurricane-pk";
peers = [
{
publicKey = "mTORKHkPcp9+c7VXqVfVseIOQZuJftoUYA0pBe87bDQ=";
allowedIPs = ["172.18.0.0/16" "192.168.3.0/24" "2a02:9a0:ffff::/48" "2a02:9a0:fffe::/48"];
endpoint = "prod-net-vpn1.infra.brainmill.com:51819";
persistentKeepalive = 25;
}
];
};
wg-fg = {
address = ["10.255.11.11/24" "2a02:9a0:300:fff0:11::11/64"];
privateKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/FG-Hurricane-pk";
peers = [
{
publicKey = "h/BUyzXy0Xo4KJKS/U5V4C9rDJT3fWjjiZoy0I7P+H4=";
allowedIPs = ["10.0.0.0/8" "192.168.10.0/24" "2a02:9a0:300:fff0::/64"];
endpoint = "gw1.net.chsfg.se:51821";
persistentKeepalive = 25;
}
];
};
wg-neanet = {
address = ["192.168.108.25/32" "2a09:2681:204:1::27/64"];
privateKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/Neanet-Hurricane-pk";
peers = [
{
publicKey = "nz1m0crkdarW7y+/p6hKCGncMVHlVhbz0URA6Z71RmM=";
allowedIPs = ["172.18.255.0/24" "2a09:2681:ffff:13::/64" "2a09:2681:ffff:14::/64" "2a09:2681:ffff:15::/64" "2a09:2681:ffff:16::/64"];
endpoint = "prod-jump-got1.infra.brainmill.com:51820";
persistentKeepalive = 25;
}
];
};
};
}

View File

@@ -4,29 +4,28 @@
../../modules/common.nix
../../modules/desktops/hyprland-desktop.nix
../../modules/programs.nix
./vpn.nix
];
# Extend home-manager configuration with host-specific monitor settings
home-manager.users.schulze.imports = [
./hyprland-monitors.nix
./hyprlock.nix
./hyprpaper.nix
./hm/hyprland-monitors.nix
./hm/hyprlock.nix
./hm/hyprpaper.nix
];
# Encrypted drive
boot.initrd.luks.devices."luks-1728f038-43a6-4e0d-b7dd-19a4c1083605".device = "/dev/disk/by-uuid/1728f038-43a6-4e0d-b7dd-19a4c1083605";
networking.hostName = "wildfire";
hardware = {
steam-hardware.enable = true;
graphics.enable = true;
};
# AMD GPU kernel module
boot.initrd.kernelModules = ["amdgpu"];
# AMD GPU support
boot.initrd.kernelModules = ["amdgpu"]; # AMD GPU kernel module
hardware.graphics.extraPackages = with pkgs; [
rocmPackages.clr.icd # OpenCL
amdvlk # AMDVLK drivers can be used in addition to the Mesa RADV drivers
];
# Network security specific to host
networking.firewall.allowedTCPPorts = [];
networking.firewall.allowedTCPPorts = [
3773 # OpenWebUI
];
networking.firewall.allowedUDPPorts = [];
# host-specific packages
@@ -37,17 +36,21 @@
prismlauncher
davinci-resolve
ardour
btop-rocm
];
# host-specific Systemd services
systemd.services.lact = {
description = "AMDGPU Control Daemon";
after = ["multi-user.target"];
wantedBy = ["multi-user.target"];
serviceConfig = {
ExecStart = "${pkgs.lact}/bin/lact daemon";
systemd = {
packages = with pkgs; [lact];
services.lact = {
description = "AMDGPU Control Daemon";
after = ["multi-user.target"];
wantedBy = ["multi-user.target"];
serviceConfig = {
ExecStart = "${pkgs.lact}/bin/lact daemon";
};
enable = true;
};
enable = true;
};
# This value determines the NixOS release from which the default

View File

@@ -22,7 +22,9 @@
fsType = "ext4";
};
boot.initrd.luks.devices."luks-be9995ed-6b36-4f4d-a374-28a85fc50ed8".device = "/dev/disk/by-uuid/be9995ed-6b36-4f4d-a374-28a85fc50ed8";
# Encrypted drive
boot.initrd.luks.devices."luks-1728f038-43a6-4e0d-b7dd-19a4c1083605".device = "/dev/disk/by-uuid/1728f038-43a6-4e0d-b7dd-19a4c1083605"; # SWAP partition
boot.initrd.luks.devices."luks-be9995ed-6b36-4f4d-a374-28a85fc50ed8".device = "/dev/disk/by-uuid/be9995ed-6b36-4f4d-a374-28a85fc50ed8"; # main partition
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/B7CE-982B";

View File

@@ -0,0 +1,7 @@
{
# Home Manager Hyprland monitors
wayland.windowManager.hyprland.settings.monitor = [
"DP-3, 2560x1440@143.97, 1920x-360, 1, vrr, 1"
"HDMI-A-1, 1920x1080@60.00, 0x0, 1"
];
}

View File

@@ -1,3 +1,3 @@
{
programs.hyprlock.settings.background.path = "$HOME/git/nix-config/modules/home/images/sky.png";
programs.hyprlock.settings.background.path = "$HOME/git/nix-config/modules/hm/images/sky.png";
}

View File

@@ -0,0 +1,17 @@
{
services.hyprpaper = {
enable = true;
settings = {
preload = [
"$HOME/git/nix-config/modules/hm/images/nix.png"
"$HOME/git/nix-config/modules/hm/images/sunset-rocks.png"
"$HOME/git/nix-config/modules/hm/images/mountains.png"
];
wallpaper = [
", $HOME/git/nix-config/modules/hm/images/nix.png"
"DP-3, $HOME/git/nix-config/modules/hm/images/mountains.png"
"HDMI-A-1, $HOME/git/nix-config/modules/hm/images/sunset-rocks.png"
];
};
};
}

View File

@@ -1,7 +0,0 @@
{
# Home Manager Hyprland monitors
wayland.windowManager.hyprland.extraConfig = ''
monitor = DP-3, 2560x1440@143.97, 1920x-360, auto;
monitor = HDMI-A-1, 1920x1080@60, 0x0, auto;
'';
}

View File

@@ -1,15 +0,0 @@
{
services.hyprpaper = {
enable = true;
settings = {
preload = [
"$HOME/git/nix-config/modules/home/images/nix.png"
"$HOME/git/nix-config/modules/home/images/sunset-rocks.png"
];
wallpaper = [
", $HOME/git/nix-config/modules/home/images/nix.png"
"DP-3, $HOME/git/nix-config/modules/home/images/sunset-rocks.png"
];
};
};
}

57
hosts/wildfire/vpn.nix Normal file
View File

@@ -0,0 +1,57 @@
{
networking.wg-quick.interfaces = {
wg-felix = {
address = ["10.8.0.5/24"];
dns = ["192.168.0.128"];
privateKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/Felix-Wildfire-pk";
peers = [
{
publicKey = "a35ZSWhBNzPFkf1RCkg4E7cNnUdGGOr4CsA0EM65H0g=";
presharedKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/Felix-Wildfire-psk";
allowedIPs = ["192.168.0.0/24"];
endpoint = "vpn.schulze.network:51820";
persistentKeepalive = 25;
}
];
};
wg-csb = {
address = ["192.168.108.27/22" "2a02:9a0:102:108::b/64"];
privateKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/CSB-Wildfire-pk";
peers = [
{
publicKey = "mTORKHkPcp9+c7VXqVfVseIOQZuJftoUYA0pBe87bDQ=";
allowedIPs = ["172.18.0.0/16" "192.168.3.0/24" "2a02:9a0:ffff::/48" "2a02:9a0:fffe::/48"];
endpoint = "prod-net-vpn1.infra.brainmill.com:51819";
persistentKeepalive = 25;
}
];
};
# wg-fg = {
# address = ["10.255.11.11/24" "2a02:9a0:300:fff0:11::11/64"];
# privateKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/FG-Wildfire-pk";
# peers = [
# {
# publicKey = "h/BUyzXy0Xo4KJKS/U5V4C9rDJT3fWjjiZoy0I7P+H4=";
# allowedIPs = ["10.0.0.0/8" "192.168.10.0/24" "2a02:9a0:300:fff0::/48"];
# endpoint = "gw1.net.chsfg.se:51821";
# persistentKeepalive = 25;
# }
# ];
# };
#
# wg-neanet = {
# address = ["192.168.108.25/32" "2a09:2681:204:1::27/64"];
# privateKeyFile = "/home/schulze/Nextcloud/secrets/wireguard/Neanet-Wildfire-pk";
# peers = [
# {
# publicKey = "nz1m0crkdarW7y+/p6hKCGncMVHlVhbz0URA6Z71RmM=";
# allowedIPs = ["2a09:2681:204:1::/64" "2a09:2681:ffff:13::/64" "2a09:2681:ffff:14::/64" "2a09:2681:ffff:15::/64" "2a09:2681:ffff:16::/64" "172.18.255.0/24"];
# endpoint = "prod-jump-got1.infra.brainmill.com:51820";
# persistentKeepalive = 25;
# }
# ];
# };
};
}

View File

@@ -2,9 +2,12 @@
# This module contains the base settings that every system should have
{
pkgs,
pkgs-unstable,
inputs,
...
}: {
}: let
colors = import ./gruvbox-theme.nix;
in {
imports = [
# Import Home Manager as a NixOS module for user-specific configurations
inputs.home-manager.nixosModules.home-manager
@@ -20,15 +23,33 @@
# Use system packages instead of separate user packages (saves space)
useGlobalPkgs = true;
useUserPackages = true;
# Pass unstable packages to home-manager modules
extraSpecialArgs = {
pkgs-unstable = pkgs-unstable;
};
# User-specific Home Manager configurations
users.schulze.imports = [
./home/hyprland.nix # Hyprland window manager user config
./home/home-manager.nix # Base user environment
./home/hyprlock.nix # Hyprlock screen lock user config
./home/rofi.nix # Rofi theme/config
./home/ghostty.nix # Ghostty config
./home/gtk.nix # GTK theme
./home/nextcloud.nix # Nextcloud autostart
./hm/home-manager.nix # Base user environment
./hm/hyprland.nix # Hyprland window manager user config
./hm/hyprlock.nix # Hyprlock screen lock user config
./hm/hypridle.nix # Hypridle idle daemon user config
./hm/cursor.nix # Mouse cursor config
./hm/rofi.nix # Rofi theme/config
./hm/ghostty.nix # Ghostty config
./hm/gtk.nix # GTK theme
./hm/nextcloud.nix # Nextcloud autostart
./hm/code-cursor.nix # Cursor config
./hm/vim.nix # Vim config
./hm/hyprsunset.nix # Hyprsunset night mode
./hm/btop.nix # Btop config
./hm/ssh.nix # SSH config
./hm/gitkraken.nix # GitKraken config
./hm/waybar.nix # Waybar config
./hm/cava.nix # Audio visualizer config
./hm/fastfetch.nix # Fastfetch config
./hm/eza.nix # Eza config (ls alternative)
./hm/user-dirs.nix # XDG User directories config
./hm/discord.nix # Discord config
];
};
@@ -40,7 +61,7 @@
users.schulze = {
isNormalUser = true;
description = "Felix Schulze";
extraGroups = ["networkmanager" "wheel" "docker" "plugdev"];
extraGroups = ["networkmanager" "wheel" "docker" "plugdev" "wireshark"];
shell = pkgs.fish;
};
groups.libvirtd.members = ["schulze"];
@@ -50,9 +71,33 @@
# BOOT CONFIGURATION
# ================================
boot = {
# Use systemd-boot (modern UEFI bootloader)
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
loader = {
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot";
};
# Use GRUB (modern UEFI bootloader)
grub = {
enable = true;
efiSupport = true;
device = "nodev";
enableCryptodisk = false; # ← GRUB lives on the unencrypted ESP
memtest86.enable = true; # Enable memtest86 for hardware testing
# Styling
theme = pkgs.stdenv.mkDerivation {
pname = "nix-gruv-grub";
version = "1";
src = pkgs.fetchFromGitHub {
owner = "Atif-Mahmud";
repo = "nix-gruv-grub";
rev = "269507de98ecd4fd9c57aa06bf5d8132d6949a06";
hash = "sha256-UEPZxyT09Z0PiOka/Dh4m8VvqF4l+01eZVbRkPJduDk=";
};
installPhase = "cp -r tartarus/ $out";
};
};
};
# Always use the latest kernel for best hardware support
kernelPackages = pkgs.linuxPackages_latest;
};
@@ -69,13 +114,6 @@
firewall.enable = true;
};
# ================================
# SECURITY HARDENING
# ================================
# Disable core dumps to prevent potential security exploits
# and improve system performance during crashes
systemd.coredump.enable = false;
# ================================
# LOCALIZATION
# ================================
@@ -96,6 +134,8 @@
LC_PAPER = "sv_SE.UTF-8";
LC_TELEPHONE = "sv_SE.UTF-8";
LC_TIME = "sv_SE.UTF-8";
LC_ALL = "sv_SE.UTF-8";
LC_CTYPE = "sv_SE.UTF-8";
};
};
@@ -118,16 +158,40 @@
pulse.enable = true; # PulseAudio compatibility
wireplumber.enable = true; # Session manager
};
playerctld.enable = true; # Playerctl daemon for media controls
# Antivirus protection with automatic updates
clamav = {
daemon.enable = true; # Background virus scanning
updater.enable = true; # Automatic signature updates
};
# Enable GNOME keyring for password management
gnome.gnome-keyring.enable = true;
# Bluetooth support
blueman.enable = true;
};
# ================================
# SECURITY & PERMISSIONS
# HARDWARE
# ================================
hardware = {
# Bluetooth support
bluetooth.enable = true;
# Logitech Unifying Receiver support
logitech.wireless = {
enable = true;
enableGraphical = true;
};
};
# power management tool which allows for managing hibernate and suspend states
powerManagement.enable = true;
# ================================
# PERMISSIONS
# ================================
# Enable real-time scheduling for audio applications (low-latency audio)
security.rtkit.enable = true;
@@ -140,23 +204,23 @@
# Allow installation of proprietary/unfree software
nixpkgs.config.allowUnfree = true;
# Enable modern Nix features (flakes and new CLI)
nix.settings.experimental-features = ["nix-command" "flakes"];
nix = {
settings.experimental-features = ["nix-command" "flakes"]; # Enable modern Nix features (flakes and new CLI)
# ================================
# AUTOMATIC MAINTENANCE
# ================================
# Configure automatic system updates for security
system.autoUpgrade = {
enable = true;
flake = inputs.self.outPath; # Use this flake for updates
flags = [
"--update-input"
"nixpkgs" # Update nixpkgs input
"-L" # Print build logs for transparency
];
dates = "02:00"; # Run at 2 AM
randomizedDelaySec = "45min"; # Random delay to avoid server load
# Optimise the Nix store automatically to recover space
optimise = {
automatic = true;
dates = ["03:45"];
persistent = true; # Run missed optimisations
};
# Garbage collect the Nix store automatically to recover space
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 60d";
persistent = true; # Run missed GC
};
};
# ================================
@@ -174,16 +238,37 @@
];
# ================================
# BROWSER OPTIMIZATIONS
# ENVIRONMENT VARIABLES
# ================================
# Improve touchscreen and scrolling support in Firefox
environment.sessionVariables = {
# Improve touchscreen and scrolling support in Firefox
MOZ_USE_XINPUT2 = "1";
# Screenshot directory for Hyprshot
HYPRSHOT_DIR = "$HOME/Nextcloud/Home-sync/Pictures/Screenshots";
};
# ================================
# SANDBOXED APPLICATIONS
# SECURITY HARDENING
# ================================
# Enable fail2ban for brute force protection
services.fail2ban = {
enable = true;
# Ban IP after 3 failures
maxretry = 3;
bantime = "1h"; # Ban IPs for one hour on the first ban
bantime-increment = {
enable = true; # Enable increment of bantime after each violation
multipliers = "1 2 4 8 16 32 64";
maxtime = "168h"; # Do not ban for more than 1 week
overalljails = true; # Calculate the bantime based on all the violations
};
};
# Disable core dumps to prevent potential security exploits
# and improve system performance during crashes
systemd.coredump.enable = false;
# SANDBOXED APPLICATIONS
# Enable Firejail for application sandboxing (security)
programs.firejail = {
enable = true;
@@ -197,8 +282,6 @@
"--ignore=private-dev"
# Enable desktop notifications
"--dbus-user.talk=org.freedesktop.Notifications"
# Allow access to downloads
"--whitelist=/home/schulze/Nextcloud/Home-sync/Downloads"
];
};
chromium = {
@@ -207,10 +290,23 @@
};
};
};
environment.etc = {
"firejail/firefox.local".text = ''
# Custom Firejail profile for firefox
# Allow access to downloads
noblacklist ''${HOME}/Nextcloud
whitelist ''${HOME}/Nextcloud
# Enable native notifications.
dbus-user.talk org.freedesktop.Notifications
# Allow inhibiting screensavers.
dbus-user.talk org.freedesktop.ScreenSaver
# Allow screensharing under Wayland.
dbus-user.talk org.freedesktop.portal.Desktop
'';
};
# ================================
# HARDWARE SECURITY (YUBIKEY)
# ================================
# Enable Yubikey support for SSH and GPG
services.yubikey-agent.enable = true;
# Enable U2F authentication for login

View File

@@ -1,8 +1,11 @@
{...}: {
{pkgs, ...}: {
services.xserver = {
# Enable the X11 windowing system (needed even for Wayland sessions)
enable = true;
# Exclude xterm from the list of packages to install
excludePackages = [pkgs.xterm];
# Enable the GNOME Desktop Environment.
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;

View File

@@ -13,6 +13,7 @@
xserver = {
enable = true;
displayManager.gdm.enable = false; # Disable GDM in favor of regreet
excludePackages = [pkgs.xterm]; # Exclude xterm from the list of packages to install
};
# Lightweight Wayland-native display manager
@@ -21,6 +22,9 @@
# Power management services for laptops and desktops
upower.enable = true; # Battery and power device monitoring
power-profiles-daemon.enable = true; # CPU frequency scaling
# Hypridle, idle daemon
hypridle.enable = true;
};
# ================================
@@ -58,6 +62,9 @@
binPath = "/run/current-system/sw/bin/Hyprland";
};
};
# Waybar status bar & panel
waybar.enable = true;
};
# ================================
@@ -65,8 +72,18 @@
# ================================
xdg = {
# Set default applications for file types
mime.defaultApplications = {
"default-web-browser" = ["firefox.desktop"];
mime = {
enable = true;
defaultApplications = {
"default-web-browser" = "firefox.desktop";
"application/pdf" = "firefox.desktop";
"application/xhtml+xml" = "firefox.desktop";
"text/html" = "firefox.desktop";
"text/xml" = "firefox.desktop";
"x-scheme-handler/ftp" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
};
};
# XDG Desktop Portal for Wayland integration
@@ -79,6 +96,10 @@
# ================================
# ENVIRONMENT VARIABLES
# ================================
# global variables set on shell initialization
environment.variables = {
};
# session variables
environment.sessionVariables = {
# Set Firefox as default browser
BROWSER = "${pkgs.lib.getBin pkgs.firefox}";
@@ -92,11 +113,11 @@
# Essential tools for a functional Hyprland desktop
environment.systemPackages = with pkgs; [
# ---- CORE HYPRLAND WORKFLOW ----
waybar # Status bar/panel
rofi-wayland # Application launcher and dmenu replacement
rofi # Application launcher and dmenu replacement (rofi has native wayland support)
mako # Notification daemon
hyprpaper # Wallpaper daemon
hyprlock # Screen lock utility
hyprpicker # Color picker
waybar-mpris # MPRIS support for waybar
# ---- CLIPBOARD & INPUT ----
wl-clipboard # Clipboard utilities for Wayland
@@ -104,14 +125,13 @@
# ---- SYSTEM CONTROL ----
pavucontrol # GUI audio mixer and control
blueman # Bluetooth manager with system tray
networkmanagerapplet # Network management system tray
brightnessctl # Screen brightness control (laptops)
wlsunset # Blue light filter/night mode
# ---- SCREENSHOT & RECORDING ----
grim # Screenshot tool for Wayland
slurp # Screen area selection for screenshots
hyprshot # Screenshot tool for Hyprland
swappy # Screenshot editing and annotation
wf-recorder # Screen recording for Wayland

View File

@@ -39,38 +39,38 @@
gruvbox-rgb = {
# Backgrounds
bg0 = "40, 40, 40";
bg0_h = "29, 32, 33";
bg0_s = "50, 48, 47";
bg1 = "60, 56, 54";
bg2 = "80, 73, 69";
bg3 = "102, 92, 84";
bg4 = "124, 111, 100";
bg0 = "40,40,40";
bg0_h = "29,32,33";
bg0_s = "50,48,47";
bg1 = "60,56,54";
bg2 = "80,73,69";
bg3 = "102,92,84";
bg4 = "124,111,100";
# Foregrounds
fg0 = "251, 241, 199";
fg1 = "235, 219, 178";
fg2 = "213, 196, 161";
fg3 = "189, 174, 147";
fg4 = "168, 153, 132";
fg0 = "251,241,199";
fg1 = "235,219,178";
fg2 = "213,196,161";
fg3 = "189,174,147";
fg4 = "168,153,132";
# Normal colors
red = "204, 36, 29";
green = "152, 151, 26";
yellow = "215, 153, 33";
blue = "69, 133, 136";
purple = "177, 98, 134";
aqua = "104, 157, 106";
orange = "214, 93, 14";
gray = "146, 131, 116";
red = "204,36,29";
green = "152,151,26";
yellow = "215,153,33";
blue = "69,133,136";
purple = "177,98,134";
aqua = "104,157,106";
orange = "214,93,14";
gray = "146,131,116";
# Bright colors
bright_red = "251, 73, 52";
bright_green = "184, 187, 38";
bright_yellow = "250, 189, 47";
bright_blue = "131, 165, 152";
bright_purple = "211, 134, 155";
bright_aqua = "142, 192, 124";
bright_orange = "254, 128, 25";
bright_green = "184,187,38";
bright_yellow = "250,189,47";
bright_blue = "131,165,152";
bright_purple = "211,134,155";
bright_aqua = "142,192,124";
bright_orange = "254,128,25";
};
}

10
modules/hm/btop.nix Normal file
View File

@@ -0,0 +1,10 @@
{
programs.btop = {
enable = true;
settings = {
color_theme = "gruvbox_dark_v2";
theme_background = false;
update_ms = 1000;
};
};
}

22
modules/hm/cava.nix Normal file
View File

@@ -0,0 +1,22 @@
let
colors = import ../gruvbox-theme.nix;
in {
programs.cava = {
enable = true;
settings = {
general = {
framerate = 60;
bar_spacing = 0;
};
input.method = "pipewire";
output.channels = "mono";
color = {
gradient = 1;
gradient_count = 2;
gradient_color_1 = "'${colors.gruvbox.aqua}'";
gradient_color_2 = "'${colors.gruvbox.orange}'";
};
smoothing.noise_reduction = 0.8;
};
};
}

View File

@@ -0,0 +1,69 @@
{
pkgs,
pkgs-unstable,
...
}: {
# Cursor configuration
programs.vscode = {
enable = true;
package = pkgs-unstable.code-cursor;
profiles.default.enableUpdateCheck = false;
profiles.default.enableExtensionUpdateCheck = false;
profiles.default.extensions = with pkgs.vscode-extensions; [
ms-python.python # Python language
ms-python.vscode-pylance # Python LS
ms-python.black-formatter # Python formatter
dbaeumer.vscode-eslint # ESLint JS
esbenp.prettier-vscode # Prettier code formatting
bradlc.vscode-tailwindcss # Tailwind IntelliSense
unifiedjs.vscode-mdx # MDX language
waderyan.gitblame # Git blame
jdinhlife.gruvbox # Gruvbox theme
vscode-icons-team.vscode-icons # Icons
golang.go # Go language
budparr.language-hugo-vscode # HUGO language
bungcip.better-toml # TOML
jnoortheen.nix-ide # Nix language
redhat.vscode-yaml # YAML
ms-vscode.hexeditor # Hex editor
# Manually install these (not available as nixpkgs)
# pgourlain.erlang # Erlang language # not available
# csstools.postcss # PostCSS language # not available
];
profiles.default.userSettings = {
# IDE
"terminal.external.linuxExec" = "ghostty";
"terminal.explorerKind" = "external";
"terminal.integrated.rescaleOverlappingGlyphs" = false;
"terminal.integrated.fontFamily" = "'Intel One Mono', 'Symbols Nerd Font Mono'";
"files.autoSave" = "onFocusChange";
"explorer.confirmDragAndDrop" = false;
"workbench.colorTheme" = "Gruvbox Dark Medium";
"workbench.iconTheme" = "vscode-icons";
"editor.fontFamily" = "'Intel One Mono', 'Symbols Nerd Font Mono', 'monospace', monospace";
"editor.tabSize" = 2;
"editor.wordWrap" = "on";
"editor.fontLigatures" = "'ss01'";
"editor.formatOnSave" = true;
"editor.minimap.enabled" = true;
"editor.defaultFormatter" = "esbenp.prettier-vscode";
# Extensions
"prettier.printWidth" = 120;
"prettier.proseWrap" = "always";
"vsicons.dontShowNewVersionMessage" = true;
"redhat.telemetry.enabled" = false;
"sonarlint.pathToNodeExecutable" = "/run/current-system/sw/bin/node";
# Cursor
"cursor.cpp.enablePartialAccepts" = true;
"cursor.diffs.useCharacterLevelDiffs" = true;
};
};
}

10
modules/hm/cursor.nix Normal file
View File

@@ -0,0 +1,10 @@
{pkgs, ...}: {
home.pointerCursor = {
enable = true;
size = 32;
#name = "capitaine-cursors-themed";
#package = pkgs.capitaine-cursors-themed;
name = "capitaine-cursors";
package = pkgs.capitaine-cursors;
};
}

203
modules/hm/discord.nix Normal file
View File

@@ -0,0 +1,203 @@
{
programs.vesktop = {
enable = true;
settings = {
appBadge = false;
arRPC = true;
checkUpdates = false;
customTitleBar = false;
disableMinSize = true;
minimizeToTray = true;
tray = true;
staticTitle = true;
hardwareAcceleration = true;
discordBranch = "stable";
enableSplashScreen = false;
};
vencord = {
themes = {
"gruvbox-medium-dark" = ''
:root, body, html, #root, #app, #app-mount {
background: transparent!important;
}
.theme-dark,
.theme-light {
--header-primary: #ebdbb2;
--header-secondary: #a89984;
--text-normal: #ebdbb2;
--text-muted: #928374;
--text-link: #458588;
--channels-default: #fbf1c7;
--interactive-normal: #d5c4a1;
--interactive-hover: #83a598;
--interactive-active: #83a598;
--interactive-muted: #bdae93;
--background-base-lowest: #28282890;
--background-base-lower: #28282810;
--background-surface-high: #32302f90;
--background-primary: #28282810;
--background-secondary: #28282810;
--background-secondary-alt: #32302f;
--background-tertiary: #1d2021;
--background-accent: #1d2021;
--background-floating: #18191c90;
--background-mobile-primary: #36393f50;
--background-mobile-secondary: #2f313650;
--background-modifier-hover: rgba(79, 84, 92, 0.16);
--background-modifier-active: rgba(79, 84, 92, 0.24);
--background-modifier-selected: rgba(79, 84, 92, 0.32);
--background-modifier-accent: hsla(0, 0%, 100%, 0.06);
--background-mentioned: rgba(250, 166, 26, 0.05);
--background-mentioned-hover: rgba(250, 166, 26, 0.08);
--background-message-hover: rgba(4, 4, 5, 0.07);
--background-help-warning: rgba(250, 166, 26, 0.1);
--background-help-info: rgba(0, 176, 244, 0.1);
--scrollbar-thin-thumb: #202225;
--scrollbar-thin-track: transparent;
--scrollbar-auto-thumb: #1d2021;
--scrollbar-auto-track: #3c383610;
--scrollbar-auto-scrollbar-color-thumb: #202225;
--scrollbar-auto-scrollbar-color-track: #2f313610;
--elevation-stroke: 0 0 0 1px rgba(4, 4, 5, 0.15);
--elevation-low: 0 1px 0 rgba(4, 4, 5, 0.2), 0 1.5px 0 rgba(6, 6, 7, 0.05),
0 2px 0 rgba(4, 4, 5, 0.05);
--elevation-medium: 0 4px 4px rgba(0, 0, 0, 0.16);
--elevation-high: 0 8px 16px rgba(0, 0, 0, 0.24);
--logo-primary: #fff;
--focus-primary: #00b0f4;
--radio-group-dot-foreground: #000000;
--guild-header-text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4);
--channeltextarea-background: #3c3836;
--activity-card-background: #202225;
--textbox-markdown-syntax: #8e9297;
--deprecated-card-bg: rgba(32, 34, 37, 0.6);
--deprecated-card-editable-bg: rgba(32, 34, 37, 0.3);
--deprecated-store-bg: #36393f;
--deprecated-quickswitcher-input-background: #3c3836;
--deprecated-quickswitcher-input-placeholder: hsla(0, 0%, 100%, 0.3);
--deprecated-text-input-bg: rgba(0, 0, 0, 0.1);
--deprecated-text-input-border: rgba(0, 0, 0, 0.3);
--deprecated-text-input-border-hover: #040405;
--deprecated-text-input-border-disabled: #202225;
--deprecated-text-input-prefix: #dcddde;
--red-faded: #fb4934;
--red-intense: #cc241d;
--rs-online-color: #689d6a;
--rs-idle-color: #d79921;
--rs-dnd-color: #cc241d;
--rs-streaming-color: #b16286;
--rs-offline-color: #504945;
--rs-invisible-color: #1d2021;
}
[class*="guilds"][class*="guilds"] {
background-color: transparent;
}
[class*="lookFilled"][class*="colorBrand"] {
color: var(--text-normal);
background-color: var(--background-floating); /* settings buttons */
}
[class*="lookFilled"][class*="colorRed"] {
color: var(--text-normal);
background-color: var(--red-faded); /* disable account */
}
[class*="lookOutlined"][class*="colorRed"] {
color: var(--red-intense);
border-color: var(--red-intense); /* 2fa delete account */
}
[class*="lookFilled"][class*="colorGrey"] {
color: var(--text-normal);
background-color: var(--background-floating); /* edit buttons */
}
[class*="wrapper"][class*="selected"] [class*="childWrapper"],
[class*="wrapper"]:hover [class*="childWrapper"] {
color: var(--text-normal);
background-color: var(--background-floating); /* discord logo */
}
[class*="colorDefault"][class*="focused"] {
background-color: #282828;
color: var(--text-normal); /* right-click menu */
}
#friends,
.da-itemCard,
.da-nowPlayingScroller,
.da-peopleList,
[class*="appMount"],
[class*="applicationStore"],
[class*="article"],
[class*="body"],
[class*="channels"],
[class*="chat"],
[class*="chat"] form,
[class*="container"],
[class*="content"],
[class*="enabled"]:hover,
[class*="footer"],
[class*="gameLibrary"],
[class*="guildsWrapper"],
[class*="header"],
[class*="headerBar"],
[class*="memberListItem"]:not([class*="popoutDisabled"]):hover,
[class*="members"],
[class*="messagesWrapper"],
[class*="nowPlayingColumn"],
[class*="peopleList"],
[class*="root"],
[class*="title"],
[class*="typeWindows"],
[class*="video"] {
background-color: transparent !important;
}
[class*="circleIconButton"] {
color: #fe8019;
background-color: var(--background-floating); /* add/search servers */
}
[class*="circleIconButton"][class*="selected"] {
color: #d65d0e;
background-color: var(
--background-floating
); /* add/search servers selected */
}
.theme-dark [class*="root"] {
background-color: var(--background-accent); /* screen share menu */
}
.theme-dark [class*="footer"] {
background-color: var(--background-floating);
}
.ml2-deleted [class*="markup"],
.ml2-deleted [class*="markup"] .hljs,
.ml2-deleted [class*="container"] * {
color: var(--red-faded) !important;
}
'';
};
settings = {
enabledThemes = ["gruvbox-medium-dark.css"];
autoUpdate = false;
autoUpdateNotification = false;
disableMinSize = true;
transparent = true;
frameless = true;
plugins = {
MessageLogger = {
enabled = true;
ignoreSelf = true;
};
FakeNitro.enabled = true;
};
};
};
};
}

111
modules/hm/eza.nix Normal file
View File

@@ -0,0 +1,111 @@
{
programs.eza = {
enable = true;
icons = "auto";
git = true;
extraOptions = ["--group-directories-first"];
enableFishIntegration = true;
theme = {
colourful = true;
filekinds = {
normal = {foreground = "#ebdbb2";};
directory = {foreground = "#83a598";};
symlink = {foreground = "#8ec07c";};
pipe = {foreground = "#928374";};
block_device = {foreground = "#fb4934";};
char_device = {foreground = "#fb4934";};
socket = {foreground = "#665c54";};
special = {foreground = "#d3869b";};
executable = {foreground = "#b8bb26";};
mount_point = {foreground = "#fe8019";};
};
perms = {
user_read = {foreground = "#ebdbb2";};
user_write = {foreground = "#fabd2f";};
user_execute_file = {foreground = "#b8bb26";};
user_execute_other = {foreground = "#b8bb26";};
group_read = {foreground = "#ebdbb2";};
group_write = {foreground = "#fabd2f";};
group_execute = {foreground = "#b8bb26";};
other_read = {foreground = "#bdae93";};
other_write = {foreground = "#fabd2f";};
other_execute = {foreground = "#b8bb26";};
special_user_file = {foreground = "#d3869b";};
special_other = {foreground = "#928374";};
attribute = {foreground = "#bdae93";};
};
size = {
major = {foreground = "#bdae93";};
minor = {foreground = "#8ec07c";};
number_byte = {foreground = "#ebdbb2";};
number_kilo = {foreground = "#ebdbb2";};
number_mega = {foreground = "#83a598";};
number_giga = {foreground = "#d3869b";};
number_huge = {foreground = "#d3869b";};
unit_byte = {foreground = "#bdae93";};
unit_kilo = {foreground = "#83a598";};
unit_mega = {foreground = "#d3869b";};
unit_giga = {foreground = "#d3869b";};
unit_huge = {foreground = "#fe8019";};
};
users = {
user_you = {foreground = "#ebdbb2";};
user_root = {foreground = "#fb4934";};
user_other = {foreground = "#d3869b";};
group_yours = {foreground = "#ebdbb2";};
group_other = {foreground = "#928374";};
group_root = {foreground = "#fb4934";};
};
links = {
normal = {foreground = "#8ec07c";};
multi_link_file = {foreground = "#fe8019";};
};
git = {
new = {foreground = "#b8bb26";};
modified = {foreground = "#fabd2f";};
deleted = {foreground = "#fb4934";};
renamed = {foreground = "#8ec07c";};
typechange = {foreground = "#d3869b";};
ignored = {foreground = "#928374";};
conflicted = {foreground = "#cc241d";};
};
git_repo = {
branch_main = {foreground = "#ebdbb2";};
branch_other = {foreground = "#d3869b";};
git_clean = {foreground = "#b8bb26";};
git_dirty = {foreground = "#fb4934";};
};
security_context = {
colon = {foreground = "#928374";};
user = {foreground = "#ebdbb2";};
role = {foreground = "#d3869b";};
typ = {foreground = "#665c54";};
range = {foreground = "#d3869b";};
};
file_type = {
image = {foreground = "#fabd2f";};
video = {foreground = "#fb4934";};
music = {foreground = "#b8bb26";};
lossless = {foreground = "#8ec07c";};
crypto = {foreground = "#928374";};
document = {foreground = "#ebdbb2";};
compressed = {foreground = "#d3869b";};
temp = {foreground = "#cc241d";};
compiled = {foreground = "#83a598";};
build = {foreground = "#928374";};
source = {foreground = "#83a598";};
};
punctuation = {foreground = "#928374";};
date = {foreground = "#fabd2f";};
inode = {foreground = "#bdae93";};
blocks = {foreground = "#a89984";};
header = {foreground = "#ebdbb2";};
octal = {foreground = "#8ec07c";};
flags = {foreground = "#d3869b";};
symlink_path = {foreground = "#8ec07c";};
control_char = {foreground = "#83a598";};
broken_symlink = {foreground = "#fb4934";};
broken_path_overlay = {foreground = "#928374";};
};
};
}

158
modules/hm/fastfetch.nix Normal file
View File

@@ -0,0 +1,158 @@
{
programs.fastfetch = {
enable = true;
settings = {
display = {
separator = " ";
};
modules = [
{
type = "title";
key = "";
format = "{user-name}@{host-name}";
keyColor = "blue";
}
{
type = "os";
key = "";
keyColor = "blue";
}
{
type = "kernel";
key = "";
keyColor = "blue";
}
{
type = "packages";
key = "󰏖";
keyColor = "blue";
}
{
type = "media";
key = "󰝚";
keyColor = "blue";
}
{
type = "localip";
key = "󰩟";
compact = true;
keyColor = "blue";
}
{
type = "publicip";
key = "󰩠";
keyColor = "blue";
timeout = 1000;
}
{
type = "uptime";
key = "󰅐";
keyColor = "blue";
}
"break"
{
type = "host";
key = "󰌢";
keyColor = "green";
}
{
type = "cpu";
key = "󰻠";
keyColor = "green";
}
{
type = "gpu";
key = "󰍛";
keyColor = "green";
}
{
type = "disk";
key = "";
keyColor = "green";
}
{
type = "memory";
key = "";
keyColor = "green";
}
{
type = "swap";
key = "󰓡";
keyColor = "green";
}
{
type = "display";
key = "󰍹";
keyColor = "green";
}
{
type = "battery";
key = "";
keyColor = "green";
}
{
type = "poweradapter";
key = "";
keyColor = "green";
}
{
type = "gamepad";
key = "";
keyColor = "green";
}
{
type = "bluetooth";
key = "";
keyColor = "green";
}
{
type = "sound";
key = "";
keyColor = "green";
}
"break"
{
type = "shell";
key = "";
keyColor = "yellow";
}
{
type = "terminal";
key = "";
keyColor = "yellow";
}
{
type = "terminalfont";
key = "";
keyColor = "yellow";
}
{
type = "de";
key = "";
keyColor = "yellow";
}
{
type = "wm";
key = "";
keyColor = "yellow";
}
{
type = "lm";
key = "󰧨";
keyColor = "yellow";
}
{
type = "theme";
key = "󰉼";
keyColor = "yellow";
}
{
type = "icons";
key = "󰀻";
keyColor = "yellow";
}
];
};
};
}

View File

@@ -5,7 +5,7 @@
settings = {
"font-family" = "Intel One Mono";
"theme" = "GruvboxDark";
"background-opacity" = 0.4;
"background-opacity" = 0.6;
};
};
}

251
modules/hm/gitkraken.nix Normal file
View File

@@ -0,0 +1,251 @@
{
home.file.".gitkraken/themes/gruvbox-dark-medium.jsonc".text = ''
{
"meta": {
"name": "Gruvbox Dark Medium",
"scheme": "dark" // must be "light" or "dark"
},
"themeValues": {
// values applied to the entire app
"root": {
// All dark gruvbox colours from https://github.com/morhetz/gruvbox
// Contrast variants are excluded (this theme aims to be a 'medium' implementation)
".gruvbox-dark-red-a": "#CC241D",
".gruvbox-dark-red-b": "#FB4934",
".gruvbox-dark-green-a": "#98971A",
".gruvbox-dark-green-b": "#B8BB26",
".gruvbox-dark-yellow-a": "#D79921",
".gruvbox-dark-yellow-b": "#FABD2F",
".gruvbox-dark-blue-a": "#458588",
".gruvbox-dark-blue-b": "#83A598",
".gruvbox-dark-purple-a": "#B16286",
".gruvbox-dark-purple-b": "#D3869B",
".gruvbox-dark-aqua-a": "#689D6A",
".gruvbox-dark-aqua-b": "#8EC07C",
".gruvbox-dark-gray-a": "#928374",
".gruvbox-dark-gray-b": "#A89984",
".gruvbox-dark-bg0": "#282828",
".gruvbox-dark-bg1": "#3C3836",
".gruvbox-dark-bg2": "#504945",
".gruvbox-dark-bg3": "#665C54",
".gruvbox-dark-bg4": "#7C6F64",
".gruvbox-dark-fg4": "@.gruvbox-dark-gray-b",
".gruvbox-dark-fg3": "#BDAE93",
".gruvbox-dark-fg2": "#D5C4A1",
".gruvbox-dark-fg1": "#EBDBB2",
".gruvbox-dark-fg0": "#FBF1C7",
".gruvbox-dark-orange-a": "#D65D0E",
".gruvbox-dark-orange-b": "#FE8019",
".gruvbox-dark-bg": "@.gruvbox-dark-bg0",
".gruvbox-dark-fg": "@.gruvbox-dark-fg1",
".gruvbox-dark-gray": "@.gruvbox-dark-gray-a",
// Core colors
// TODO remove these eventually once they are not used
"white":"@.gruvbox-dark-fg0",
"black":"@.gruvbox-dark-bg",
"red": "@.gruvbox-dark-red-a",
"orange": "@.gruvbox-dark-orange-a",
"yellow": "@.gruvbox-dark-yellow-a",
"green": "@.gruvbox-dark-green-a",
"teal": "@.gruvbox-dark-aqua-a",
"blue": "@.gruvbox-dark-blue-a",
"ltblue": "@.gruvbox-dark-blue-b",
"purple": "@.gruvbox-dark-purple-a",
// Background and panels
"app__bg0": "@.gruvbox-dark-bg0",
"toolbar__bg0": "darken(@.gruvbox-dark-bg0, 4%)",
"toolbar__bg1": "@.gruvbox-dark-bg0",
"toolbar__bg2": "@.gruvbox-dark-bg0",
"panel__bg0": "@.gruvbox-dark-bg0",
"panel__bg1": "@.gruvbox-dark-bg0",
"panel__bg2": "@.gruvbox-dark-bg2",
"glass": "#00000033",
"glass-inverse-10": "#FFFFFF1A",
"glass-inverse-5": "#FFFFFF0D",
"input__bg": "darken(@.gruvbox-dark-bg0, 3%)",
"input-bg-warn-color": "fade(@orange, 60%)",
"panel-border": "@.gruvbox-dark-bg1",
"section-border": "@.gruvbox-dark-bg1",
"subtle-border": "@.gruvbox-dark-bg1",
"modal-overlay-color": "rgba(0,0,0,.5)",
// Graph colors
"graph-color-0": "@.gruvbox-dark-blue-b",
"graph-color-1": "@.gruvbox-dark-yellow-b",
"graph-color-2": "@.gruvbox-dark-purple-b",
"graph-color-3": "@.gruvbox-dark-aqua-b",
"graph-color-4": "@.gruvbox-dark-red-b",
"graph-color-5": "@.gruvbox-dark-orange-b",
"graph-color-6": "@.gruvbox-dark-blue-a",
"graph-color-7": "@.gruvbox-dark-yellow-a",
"graph-color-8": "@.gruvbox-dark-purple-a",
"graph-color-9": "@.gruvbox-dark-aqua-a",
"stats-added-color": "#347d39",
"stats-deleted-color": "#c93c37",
"stats-files-color": "#e2c08d",
// Text colors
"text-selected": "@.gruvbox-dark-fg0",
"text-normal": "@.gruvbox-dark-fg1",
"text-secondary": "@.gruvbox-dark-fg2",
"text-disabled": "@.gruvbox-dark-gray",
"text-accent": "@.gruvbox-dark-orange-b",
"text-inverse": "@.gruvbox-dark-gray",
"text-bright": "@.gruvbox-dark-fg0",
"text-dimmed": "fade(@text-normal, 20%)",
"text-dimmed-selected": "fade(@text-dimmed, 50%)",
"text-selected-row": "@text-selected",
// First Time UX Variables
// "gkftux-teal": "#A7FBFF",
// "gkftux-bg": "#0D1017",
// "gkftux-getstarted-bg": "rgba(255,255,255, 0)",
// "gkftux-getstarted-bg-hover": "rgba(255,255,255,0.11)",
// "gkftux-getstarted-border": "rgba(54, 57, 63, 1)",
// "gkftux-getstarted-icon": "rgba(108, 108, 108, 1)",
// "gkftux-repo-tab-border": "#36393F",
// "gkftux-repo-tab-border-selected": "@gkftux-teal",
// "gkftux-repo-tab-bg": "transparent",
// "gkftux-repo-tab-bg-selected": "#1C1E23",
// "gkftux-repo-tab-icon": "fade(@gkftux-teal, 50%)",
// "gkftux-repo-tab-icon-selected": "@gkftux-teal",
// Buttons
"btn-text": "@text-normal",
"btn-text-hover": "@text-selected",
"default-border": "@text-normal",
"default-bg": "transparent",
"default-hover": "transparent",
"default-border-hover": "@text-selected",
"primary-border": "@blue",
"primary-bg": "fade(@blue, 20%)",
"primary-hover": "fade(@blue, 60%)",
"success-border": "@green",
"success-bg": "fade(@green, 20%)",
"success-hover": "fade(@green, 60%)",
"warning-border": "@orange",
"warning-bg": "fade(@orange, 20%)",
"warning-hover": "fade(@orange, 60%)",
"danger-border": "@red",
"danger-bg": "fade(@red, 20%)",
"danger-hover": "fade(@red, 60%)",
"hover-row": "fade(@blue, 10%)",
"danger-row": "fade(@red, 60%)",
"selected-row": "fade(@blue, 20%)",
"selected-row-border": "none",
"warning-row": "fade(@orange, 60%)",
// Actions
"droppable": "fade(@yellow, 30%)",
"drop-target": "fade(@green, 50%)",
"input--disabled": "fade(#000000, 10%)",
"link-color": "@.gruvbox-dark-orange-a",
"link-color-bright": "@.gruvbox-dark-orange-b",
"form-control-focus": "@blue",
"scroll-thumb-border": "transparent",
"scroll-thumb-bg": "fade(@.gruvbox-dark-fg1, 15%)",
"scroll-thumb-bg-light": "fade(@.gruvbox-dark-bg1, 15%)",
"wip-status": "fade(@blue, 40%)",
"card__bg": "@.gruvbox-dark-bg3",
"card-shadow": "rgba(0,0,0,.2)",
"statusbar__warning-bg": "mixLess(@graph-color-7, @app__bg0, 50%)",
"label__yellow-color": "@.gruvbox-dark-yellow-b",
"label__light-blue-color": "@.gruvbox-dark-blue-b",
"label__purple-color": "@.gruvbox-dark-purple-b",
"filtering": "fade(@blue, 50%)",
"soloing": "fade(@orange, 50%)",
"checked-out": "fade(@green, 30%)",
"soloed": "fade(@orange, 30%)",
"filter-match": "fade(@blue, 50%)",
"clone__progress": "fade(@blue, 70%)",
"toolbar__prompt": "fade(@blue, 20%)",
"verified": "fade(@green, 30%)",
"unverified": "fade(#ffffff, 10%)",
"drop-sort-border": "@green",
// Terminal
"terminal__repo-name-color": "turquoise",
"terminal__repo-branch-color": "violet",
"terminal__repo-tag-color": "lightcoral",
"terminal__repo-upstream-color": "yellowgreen",
"terminal__background": "@.gruvbox-dark-bg",
"terminal__cursor": "@.gruvbox-dark-fg4",
"terminal__cursorAccent": "#000000",
"terminal__foreground": "@.gruvbox-dark-fg",
"terminal__selection": "darken(@.gruvbox-dark-orange-b, 35%)",
"terminal__black": "@.gruvbox-dark-bg2",
"terminal__red": "@.gruvbox-dark-red-a",
"terminal__green": "@.gruvbox-dark-green-a",
"terminal__yellow": "@.gruvbox-dark-yellow-a",
"terminal__blue": "@.gruvbox-dark-blue-a",
"terminal__magenta": "@.gruvbox-dark-purple-a",
"terminal__cyan": "@.gruvbox-dark-aqua-a",
"terminal__white": "@.gruvbox-dark-fg1",
"terminal__brightBlack": "@.gruvbox-dark-bg4",
"terminal__brightRed": "@.gruvbox-dark-red-b",
"terminal__brightGreen": "@.gruvbox-dark-green-b",
"terminal__brightYellow": "@.gruvbox-dark-yellow-b",
"terminal__brightBlue": "@.gruvbox-dark-blue-b",
"terminal__brightMagenta": "@.gruvbox-dark-purple-b",
"terminal__brightCyan": "@.gruvbox-dark-aqua-b",
"terminal__brightWhite": "@.gruvbox-dark-fg0",
// Code editor
"code-bg": "@app__bg0",
"code-foreground": "@text-normal",
"code-blame-color-0": "@graph-color-0",
"code-blame-color-1": "@graph-color-1",
"code-blame-color-2": "@graph-color-2",
"code-blame-color-3": "@graph-color-3",
"code-blame-color-4": "@graph-color-4",
"code-blame-color-5": "@graph-color-5",
"code-blame-color-6": "@graph-color-6",
"code-blame-color-7": "@graph-color-7",
"code-blame-color-8": "@graph-color-8",
"code-blame-color-9": "@graph-color-9",
"added-line": "fade(darken(@.gruvbox-dark-green-a, 10%), 25%)",
"deleted-line": "fade(darken(@.gruvbox-dark-red-a, 5%), 25%)",
"modified-line": "fade(#000000, 25%)",
// Merge Conflicts
"conflict-info-color": "@.gruvbox-dark-blue-b",
"conflict-left-border-color": "@.gruvbox-dark-blue-b",
"conflict-left-color": "fade(@conflict-left-border-color, 25%)",
"conflict-right-border-color": "@.gruvbox-dark-yellow-b",
"conflict-right-color": "fade(@conflict-right-border-color, 25%)",
"conflict-output-border-color": "@.gruvbox-dark-purple-a",
"conflict-output-color": "fade(@conflict-output-border-color, 25%)"
},
// Override specific values just for the toolbar
"toolbar": {
"text-selected": "@.gruvbox-dark-fg0",
"text-normal": "@.gruvbox-dark-fg1",
"text-secondary": "@.gruvbox-dark-fg2",
"text-disabled": "@.gruvbox-dark-gray",
"section-border": "@.gruvbox-dark-bg2",
"input__bg": "rgba(0,0,0,.20)",
"link-color": "@.gruvbox-dark-orange-a",
"btn-text": "var(--text-normal)"
},
// Override specific values just for the tabs bar
"tabsbar": {
"text-selected": "@.gruvbox-dark-fg0",
"text-normal": "@.gruvbox-dark-fg1",
"text-secondary": "@.gruvbox-dark-fg3",
"text-disabled": "@.gruvbox-dark-gray",
"section-border": "@.gruvbox-dark-bg2",
"input__bg": "rgba(0,0,0,.20)",
"link-color": "@.gruvbox-dark-orange-a",
"btn-text": "var(--text-normal)"
}
}
}
'';
}

View File

@@ -14,10 +14,6 @@
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
cursorTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
};
# ================================

26
modules/hm/hypridle.nix Normal file
View File

@@ -0,0 +1,26 @@
{
services.hypridle = {
enable = true;
settings = {
general = {
ignore_dbus_inhibit = false;
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
lock_cmd = "pidof hyprlock || hyprlock";
};
listener = [
{
timeout = 300; # 5min.
on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = "brightnessctl -r"; # monitor backlight restore.
}
{
timeout = 900; # 15min.
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
}
# no automatic screen off or sleep. causes issues i cant be arsed to fix. use `systemctl suspend` instead.
];
};
};
}

183
modules/hm/hyprland.nix Normal file
View File

@@ -0,0 +1,183 @@
let
colors = import ../gruvbox-theme.nix;
in {
# Hyprland settings
wayland.windowManager.hyprland = {
enable = true;
systemd.enable = false;
settings = {
exec-once = [
"hyprctl setcursor capitaine-cursors 32" # Set mouse cursor
"wl-paste --type text --watch cliphist store" # Stores only text data
"wl-paste --type image --watch cliphist store" # Stores only image data
];
misc = {
disable_hyprland_logo = true; # disables the random Hyprland logo / anime girl background. :(
disable_splash_rendering = true;
};
input = {
kb_layout = "se";
kb_variant = "";
kb_model = "";
kb_options = "";
kb_rules = "";
kb_file = "";
follow_mouse = 1;
sensitivity = 0;
accel_profile = "flat";
repeat_delay = 300;
repeat_rate = 30;
touchpad = {
natural_scroll = true;
clickfinger_behavior = true;
};
};
gestures = {
workspace_swipe = true;
workspace_swipe_forever = true;
workspace_swipe_direction_lock = false;
workspace_swipe_distance = 200;
workspace_swipe_min_speed_to_force = 0;
};
"$mod" = "SUPER";
"$terminal" = "ghostty";
"$filemanager" = "nautilus";
"$menu" = "rofi -show-icons -show drun";
general = {
gaps_in = 6;
gaps_out = "10,15,15,15";
border_size = 1;
"col.active_border" = "rgba(${colors.gruvbox-rgb.bright_orange},1.0) rgba(${colors.gruvbox-rgb.red},1.0) 45deg";
"col.inactive_border" = "rgba(${colors.gruvbox-rgb.bg4},0.66)";
layout = "dwindle";
allow_tearing = false;
};
decoration = {
rounding = 10;
rounding_power = 3.5;
blur = {
enabled = true;
new_optimizations = true;
ignore_opacity = true;
xray = false;
size = 3;
passes = 3;
popups = true;
};
shadow = {
enabled = true;
range = 8;
render_power = 4;
color = "rgba(0,0,0,.5)";
};
};
animations = {
enabled = true;
bezier = [
"fluid, 0.15, 0.85, 0.25, 1"
"snappy, 0.3, 1, 0.4, 1"
];
animation = [
"windows, 1, 3, fluid, popin 5%"
"windowsOut, 1, 2.5, snappy"
"fade, 1, 4, snappy"
"workspaces, 1, 1.7, snappy, slidevert"
"layers, 1, 2, snappy, popin 70%"
];
};
dwindle = {
pseudotile = true;
preserve_split = true;
smart_split = true;
};
# Layer rules
layerrule = [
"blur, waybar" # Blur waybar
"ignorezero, waybar"
"ignorealpha 0.5, waybar"
"noanim, hyprpicker" # fix screenshot border visible
"noanim, selection" # fix screenshot border visible
];
# Window rules
windowrulev2 = [
# Nice transparency for some apps (unless in fullscreen)
"opacity 0.9,fullscreen:0,class:^(cursor)$"
"opacity 0.9,fullscreen:0,class:^(firefox)$"
"opacity 0.9,fullscreen:0,class:^(GitKraken)$"
"opacity 0.9,fullscreen:0,class:^(obsidian)$"
# Keep Rofi focused
"stayfocused, class:^(Rofi)$"
];
# Bindings
bind =
[
"$mod, RETURN, exec, $terminal" # Open terminal
"$mod, C, killactive" # Kill active window
"$mod, E, exec, $filemanager" # Open file manager
"$mod, SPACE, exec, $menu" # Show menu (rofi)
"$mod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy" # Show Clipboard history
", PRINT, exec, hyprshot -m region" # Screenshot region
"$mod, PRINT, exec, hyprshot -m window" # Screenshot window
"$mod, F, togglefloating" # Make active window floating
"$mod, L, exec, hyprlock" # Lock screen
# Move focus with mainMod + arrow keys
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
# Workspace navigation
"$mod, J, workspace, r+1" # vim motions Down
"$mod, K, workspace, r-1" # vim motions Up
]
++ (
# workspaces
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (builtins.genList (
i: let
ws = i + 1;
in [
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
]
)
9)
);
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
# l -> do stuff even when locked
# e -> repeats when key is held
bindle = [
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+ --limit 1"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-"
", XF86MonBrightnessUp, exec, brightnessctl set +10%"
", XF86MonBrightnessDown, exec, brightnessctl set 10%-"
];
bindl = [
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
];
};
};
}

View File

@@ -6,8 +6,9 @@ in {
settings = {
background = {
# Background image is set in host specific configuration
#path = "$HOME/git/nixos/modules/home/images/sky.png";
blur_passes = 2;
#path = "$HOME/git/nixos/modules/hm/images/sky.png";
blur_size = 2;
blur_passes = 3;
contrast = 1;
brightness = 0.5;
vibrancy = 0.2;

19
modules/hm/hyprsunset.nix Normal file
View File

@@ -0,0 +1,19 @@
{
services.hyprsunset = {
enable = true;
transitions = {
sunrise = {
calendar = "*-*-* 06:00:00";
requests = [
["identity"]
];
};
sunset = {
calendar = "*-*-* 20:00:00";
requests = [
["temperature" "3000"]
];
};
};
};
}

BIN
modules/hm/images/moss.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
modules/hm/images/mountains.png (Stored with Git LFS) Normal file

Binary file not shown.

6
modules/hm/nextcloud.nix Normal file
View File

@@ -0,0 +1,6 @@
{
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
}

137
modules/hm/rofi.nix Normal file
View File

@@ -0,0 +1,137 @@
{config, ...}: let
colors = import ../gruvbox-theme.nix;
in {
programs.rofi = {
enable = true;
modes = [
"drun"
"window"
];
terminal = "ghostty";
font = "Intel One Mono 14";
location = "center";
theme = let
inherit (config.lib.formats.rasi) mkLiteral;
in {
"*" = {
margin = 0;
padding = 0;
spacing = 0;
bg0 = mkLiteral "${colors.gruvbox.bg0}9A";
bg1 = mkLiteral "${colors.gruvbox.bg1}";
bg2 = mkLiteral "${colors.gruvbox.bg2}9A";
bg3 = mkLiteral "${colors.gruvbox.bg3}9A";
fg0 = mkLiteral "${colors.gruvbox.fg0}";
fg1 = mkLiteral "${colors.gruvbox.fg1}";
fg2 = mkLiteral "${colors.gruvbox.fg2}";
fg3 = mkLiteral "${colors.gruvbox.fg3}";
blue = mkLiteral "${colors.gruvbox.blue}";
orange = mkLiteral "${colors.gruvbox.orange}";
brightOrange = mkLiteral "${colors.gruvbox.bright_orange}";
brightBlue = mkLiteral "${colors.gruvbox.bright_blue}9A";
red = mkLiteral "${colors.gruvbox.red}";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@fg0";
};
"window" = {
background-color = mkLiteral "@bg0";
#transparency = mkLiteral "'real'";
width = mkLiteral "480";
border-radius = mkLiteral "8px";
border = mkLiteral "1px";
border-color = mkLiteral "@red";
};
"mainbox" = {
padding = mkLiteral "12px";
#children = mkLiteral "[inputbar, listview]";
};
"inputbar" = {
background-color = mkLiteral "@bg1";
border-color = mkLiteral "@orange";
border = mkLiteral "2px";
border-radius = mkLiteral "4px";
padding = mkLiteral "8px 16px";
spacing = mkLiteral "8px";
children = mkLiteral "[prompt, entry]";
};
"prompt" = {
text-color = mkLiteral "@brightOrange";
};
"entry" = {
placeholder = "Search";
placeholder-color = mkLiteral "@fg3";
};
"message" = {
margin = mkLiteral "12px 0 0";
border-radius = mkLiteral "4px";
border-color = mkLiteral "@bg2";
background-color = mkLiteral "@bg2";
};
"textbox" = {
padding = mkLiteral "8px 24px";
};
"listview" = {
background-color = mkLiteral "transparent";
margin = mkLiteral "12px 0 0";
lines = 10;
columns = 1;
};
"element" = {
padding = mkLiteral "8px 16px";
spacing = mkLiteral "8px";
border-radius = mkLiteral "4px";
#spacing = mkLiteral "8px";
};
"element normal active" = {
text-color = mkLiteral "@bg3";
};
"element alternate active" = {
text-color = mkLiteral "@bg3";
};
"element selected normal, element selected active" = {
background-color = mkLiteral "@brightBlue";
border = mkLiteral "2px";
border-color = mkLiteral "@blue";
};
"element-icon" = {
size = mkLiteral "1em";
vertical-align = mkLiteral "0.5";
};
"element-text" = {
text-color = mkLiteral "inherit";
#padding = mkLiteral "10px";
};
"element selected" = {
#text-color = mkLiteral "@bg1";
#border-color = mkLiteral "@orange";
};
"element-text.selected" = {
#background-color = mkLiteral "@orange-alt";
#text-color = mkLiteral "@orange";
};
};
};
}

81
modules/hm/ssh.nix Normal file
View File

@@ -0,0 +1,81 @@
{
programs.ssh = {
enable = true;
serverAliveInterval = 60;
serverAliveCountMax = 2;
matchBlocks = {
"*" = {
sendEnv = ["TERM"];
setEnv = {
TERM = "xterm-256color"; # Fix ghostty issue
};
};
"d10.csb.brainmill.com" = {
forwardAgent = true;
};
"prod-admin-jump1.infra.csbnet.se" = {
forwardAgent = true;
};
"prod-jump-got1.infra.brainmill.com" = {
user = "schulze-local";
forwardAgent = true;
};
"gw1.net.chsfg.se" = {
forwardAgent = true;
};
"gw2.net.chsfg.se" = {
forwardAgent = true;
};
"cv11-stor-gw.net.chsfg.se" = {
proxyCommand = "ssh prod-admin-jump1.infra.csbnet.se /bin/nc %h 22";
hostname = "176.10.244.136";
user = "root";
port = 8822;
};
"tp2-core1.net.chsfg.se" = {
hostname = "192.168.10.52";
user = "nvg";
};
"gw-shg9d-ctk.net.chsfg.se" = {
hostname = "83.218.70.146";
user = "admin";
};
"lp5-core1.net.chsfg.se" = {
hostname = "192.168.10.51";
user = "nvg";
};
"sw-fys-kt11-serv1.net.chsfg.se" = {
hostname = "10.2.13.10";
};
"sw-fys-kt11-kansli1.net.chsfg.se" = {
hostname = "10.2.13.11";
};
"sw-fys-kt11-kansli2.net.chsfg.se" = {
hostname = "10.2.13.12";
};
"sw-fys-kt11-reception1.net.chsfg.se" = {
hostname = "10.2.13.13";
};
"sw-fys-kt11-reception2.net.chsfg.se" = {
hostname = "10.2.13.14";
};
"sw-fys-gg39-kom.net.chsfg.se" = {
hostname = "10.1.13.10";
};
"sw-fys-gg39-skap.net.chsfg.se" = {
hostname = "10.1.13.11";
};
"sw-fys-ev1.net.chsfg.se" = {
hostname = "10.62.13.10";
};
"192.168.10.20" = {
hostname = "192.168.10.20";
user = "manager";
};
"192.168.10.50" = {
hostname = "192.168.10.50";
};
};
};
}

18
modules/hm/user-dirs.nix Normal file
View File

@@ -0,0 +1,18 @@
{config, ...}: {
xdg.userDirs = {
enable = true;
desktop = "${config.home.homeDirectory}/Nextcloud/Home-sync/Desktop";
documents = "${config.home.homeDirectory}/Nextcloud/Home-sync/Documents";
download = "${config.home.homeDirectory}/Nextcloud/Home-sync/Downloads";
music = "${config.home.homeDirectory}/Nextcloud/Home-sync/Music";
pictures = "${config.home.homeDirectory}/Nextcloud/Home-sync/Pictures";
publicShare = "${config.home.homeDirectory}/Nextcloud/Home-sync/Public";
templates = "${config.home.homeDirectory}/Nextcloud/Home-sync/Templates";
videos = "${config.home.homeDirectory}/Nextcloud/Home-sync/Videos";
};
gtk.gtk3.bookmarks = [
"file://${config.home.homeDirectory}/Nextcloud/Home-sync/Downloads"
"file://${config.home.homeDirectory}/Nextcloud/Home-sync/Documents"
"file://${config.home.homeDirectory}/Nextcloud/Home-sync/Pictures"
];
}

10
modules/hm/vim.nix Normal file
View File

@@ -0,0 +1,10 @@
{
programs.vim = {
enable = true;
defaultEditor = true;
settings = {
number = true;
relativenumber = true;
};
};
}

402
modules/hm/waybar.nix Normal file
View File

@@ -0,0 +1,402 @@
{
programs.waybar = {
enable = true;
systemd.target = "graphical-session.target";
settings = [
{
output = ["DP-3" "eDP-1"];
spacing = 8;
"modules-left" = ["hyprland/workspaces" "mpris" "cava"];
"modules-center" = ["hyprland/window"];
"modules-right" = ["idle_inhibitor" "wireplumber" "backlight" "load" "power-profiles-daemon" "battery" "clock" "tray"];
"hyprland/workspaces" = {
"all-outputs" = false;
};
"hyprland/window" = {
format = "{title}";
"max-length" = 60;
"all-outputs" = true;
"separate-outputs" = true;
};
load = {
format = " {load1}";
"on-click" = "btop";
};
backlight = {
format = "{icon} {percent}%";
"format-icons" = ["" "" "" "" "" "" "" "" ""];
};
clock = {
"tooltip-format" = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
format = " {:%H:%M}";
"format-alt" = " {:%a %F}";
};
cava = {
framerate = 60;
autosens = 1;
sensitivity = 2;
bars = 12;
"lower_cutoff_freq" = 50;
"higher_cutoff_freq" = 10000;
method = "pipewire";
source = "auto";
stereo = false;
"bar_delimiter" = 0;
"noise_reduction" = 0.7;
"input_delay" = 2;
"hide_on_silence" = true;
"sleep_timer" = 3;
"format-icons" = [" " "" "" "" "" "" "" "" ""];
actions = {"on-click-right" = "mode";};
};
"idle_inhibitor" = {
format = "{icon}";
"format-icons" = {
activated = "";
deactivated = "";
};
};
tray = {
"icon-size" = 14;
spacing = 10;
};
"power-profiles-daemon" = {
"format" = "{icon}";
"tooltip-format" = "Power profile: {profile}\nDriver: {driver}";
"tooltip" = true;
"format-icons" = {
"default" = "";
"performance" = "";
"balanced" = "";
"power-saver" = "";
};
};
battery = {
interval = 60;
states = {
good = 100;
normal = 90;
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
"format-full" = "{icon} {capacity}%";
"format-charging" = "󰂄 {capacity}%";
"format-plugged" = " {capacity}%";
"format-alt" = "{icon} {time}";
"format-icons" = ["󰁻" "󰁼" "󰁾" "󰂀" "󰂂" "󰁹"];
};
mpris = {
format = "{status_icon} {dynamic}";
interval = 1;
"dynamic-len" = 60;
"status-icons" = {
playing = "";
paused = "";
stopped = "";
};
"dynamic-order" = ["title" "artist"];
};
wireplumber = {
"scroll-step" = 1;
format = "{icon} {volume}%";
"format-bluetooth" = "{icon} {volume}% ";
"format-bluetooth-muted" = " {icon}";
"format-muted" = "";
"format-icons" = {
headphone = "";
"hands-free" = "󰂑";
headset = "󰂑";
phone = "";
portable = "";
car = "";
default = ["" "" ""];
};
"on-click" = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
"on-click-right" = "pavucontrol";
};
}
{
output = ["HDMI-A-1"];
spacing = 8;
"modules-left" = ["hyprland/workspaces"];
"modules-center" = ["hyprland/window"];
"modules-right" = ["clock"];
"hyprland/workspaces" = {
"all-outputs" = false;
};
"hyprland/window" = {
format = "{title}";
"max-length" = 60;
"all-outputs" = true;
"separate-outputs" = true;
};
clock = {
"tooltip-format" = "<tt><small>{calendar}</small></tt>";
format = " {:%H:%M}";
"format-alt" = " {:%a %F}";
};
cava = {
framerate = 60;
autosens = 1;
sensitivity = 2;
bars = 12;
"lower_cutoff_freq" = 50;
"higher_cutoff_freq" = 10000;
method = "pipewire";
source = "auto";
stereo = false;
"bar_delimiter" = 0;
"noise_reduction" = 0.7;
"input_delay" = 2;
"hide_on_silence" = true;
"sleep_timer" = 3;
"format-icons" = [" " "" "" "" "" "" "" "" ""];
actions = {"on-click-right" = "mode";};
};
mpris = {
format = "{status_icon} {dynamic}";
interval = 1;
"dynamic-len" = 60;
"status-icons" = {
playing = "";
paused = "";
stopped = "";
};
"dynamic-order" = ["title" "artist"];
};
}
];
style = ''
/* colors */
/* Gruvbox Dark */
@define-color lightbg #fbf1c7;
@define-color bg #282828;
@define-color fglight #282828;
@define-color bg1 #3c3836;
@define-color bg2 #504945;
@define-color bg3 #665c54;
@define-color bg4 #7c6f64;
@define-color fg #ebdbb2;
@define-color red #cc241d;
@define-color green #98971a;
@define-color yellow #d79921;
@define-color blue #458588;
@define-color purple #b16286;
@define-color aqua #689d6a;
@define-color gray #a89984;
@define-color brgray #928374;
@define-color brred #fb4934;
@define-color brgreen #b8bb26;
@define-color bryellow #fabd2f;
@define-color brblue #83a598;
@define-color brpurple #d3869b;
@define-color braqua #8ec07c;
@define-color orange #d65d0e;
@define-color brorange #fe8019;
@define-color tooltipbg rgba(40, 40, 40, 0.9);
* {
font-size: 14px;
border-radius: 6px;
}
tooltip {
font-family: Intel One Mono, Symbols Nerd Font Mono,monospace;
background-color: @tooltipbg;
border-radius: 6px;
border: 1px solid @bg3;
}
tooltip label {
color: @fg;
text-shadow: none;
}
window#waybar {
font-family: Intel One Mono, Symbols Nerd Font Mono, monospace;
background-color: transparent;
border-bottom: 0px;
color: @fg;
transition-property: background-color;
transition-duration: .2s;
}
window#waybar.hidden {
opacity: 0.2;
}
window#waybar.empty #window {
background-color: transparent;
padding: 0;
border: none;
}
.modules-left,
.modules-center,
.modules-right {
margin: 10px 16px 0;
}
button {
border: none;
}
#workspaces {
background-color: transparent;
border: 1px solid alpha(@bg4,.6);
}
#workspaces button {
padding: 0 6px;
background: alpha(@bg,.6);
color: @fg;
border-radius: 0;
transition-property: background-color;
transition-duration: .2s;
}
#workspaces button:first-child {
border-radius: 6px 0 0 6px;
}
#workspaces button:last-child {
border-radius: 0 6px 6px 0;
}
#workspaces button:first-child:last-child {
border-radius: 6px;
}
#workspaces button:hover, #workspaces button.active:hover {
color: @yellow;
background: alpha(@bg4,.6);
box-shadow: inherit;
text-shadow: inherit;
}
#workspaces button.active {
color: @orange;
background: alpha(@fg,.6);
}
#workspaces button.urgent {
background: alpha(@purple,.6);
}
#idle_inhibitor,
#cava,
#scratchpad,
#mode,
#clock,
#battery,
#backlight,
#custom-weather,
#custom-audio_idle_inhibitor,
#wireplumber,
#tray,
#mpris,
#power-profiles-daemon,
#load {
color: @fg;
padding: 0 15px;
background: alpha(@bg,.6);
border: 1px solid alpha(@bg4,.6);
}
#window {
padding: 0 15px;
color: @bg1;
background: alpha(@fg,.6);
border: 1px solid alpha(@bg4,.6);
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#cava {
padding: 0 6px;
}
#cava.silent {
background-color: transparent;
color: transparent;
padding: 0;
}
#power-profiles-daemon.performance {
background: alpha(@red,.6);
color: @fg;
}
#power-profiles-daemon.balanced {
background: alpha(@blue,.6);
color: @fg;
}
#power-profiles-daemon.power-saver {
background: alpha(@green,.6);
color: @fg;
}
#battery.charging, #battery.plugged, #battery.good {
background: alpha(@green,.6);
color: @fg;
}
#battery.warning {
background: alpha(@yellow,.6);
color: @fglight;
}
@keyframes blink {
to {
background: alpha(@bg,.6);
color: @fg;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background: alpha(@red,.6);
color: @fg;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#wireplumber.muted {
background: alpha(@blue,.6);
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
}
#mpris.playing {
background: alpha(@blue,.6);
color: @fg;
}
#tray menu {
font-family: sans-serif;
}
'';
};
}

View File

@@ -1,103 +0,0 @@
{
# Hyprland settings
wayland.windowManager.hyprland = {
enable = true;
settings = {
exec-once = [
"hyprpaper"
];
input = {
kb_layout = "se";
kb_variant = "";
kb_model = "";
kb_options = "";
kb_rules = "";
kb_file = "";
follow_mouse = 1;
sensitivity = 0;
};
"$mod" = "SUPER";
"$terminal" = "ghostty";
"$filemanager" = "nautilus";
"$menu" = "rofi -show drun";
general = {
gaps_in = 4;
gaps_out = 4;
border_size = 1;
"col.active_border" = "rgba(fe8019ff) rgba(cc241dff) 45deg";
"col.inactive_border" = "rgba(7c6f64aa)";
layout = "dwindle";
allow_tearing = false;
};
decoration = {
rounding = 8;
rounding_power = 3.5;
blur = {
enabled = true;
xray = true;
size = 3;
passes = 4;
};
};
animations = {
enabled = true;
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
animation = [
"windows, 1, 7, myBezier"
"windowsOut, 1, 7, default, popin 80%"
"border, 1, 10, default"
"borderangle, 1, 8, default"
"fade, 1, 7, default"
"workspaces, 1, 6, default"
];
};
dwindle = {
pseudotile = true;
preserve_split = true;
};
# Bindings
bind =
[
"$mod, RETURN, exec, $terminal"
"$mod, C, killactive"
"$mod, E, exec, $filemanager"
"$mod, SPACE, exec, $menu"
", Print, exec, grimblast copy area"
"$mod, V, togglefloating"
"$mod, J, togglesplit, " # dwindle
"$mod, L, exec, hyprlock"
# Move focus with mainMod + arrow keys
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
]
++ (
# workspaces
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (builtins.genList (
i: let
ws = i + 1;
in [
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
]
)
9)
);
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
};
};
}

BIN
modules/home/images/statue.png (Stored with Git LFS)

Binary file not shown.

View File

@@ -1,11 +0,0 @@
{lib, ...}: {
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
systemd.user.services.nextcloud-client = {
Unit = {
After = lib.mkForce "graphical-session.target";
};
};
}

View File

@@ -1,12 +0,0 @@
{
programs.rofi = {
enable = true;
theme = "gruvbox-dark";
font = "Intel One Mono";
modes = [
"drun"
"window"
];
terminal = "\${pkgs.ghostty}/bin/ghostty";
};
}

View File

@@ -14,6 +14,9 @@
in {
# Common packages for ALL systems
environment.systemPackages = with pkgs; [
# misc
xdg-user-dirs
# networking
wget
whois
@@ -37,6 +40,7 @@ in {
alejandra
fzf
fastfetch
astroterm # Star map/planetarium
# Development
pkgs-unstable.code-cursor
@@ -49,6 +53,8 @@ in {
nodejs_22
pnpm
cypress
pgadmin4-desktopmode
postgresql_15
beam26Packages.erlang
beam26Packages.erlfmt
beam26Packages.erlang-ls
@@ -63,54 +69,105 @@ in {
ghostty
obsidian
nextcloud-client
signal-desktop
slack
libreoffice-fresh
tor-browser
ungoogled-chromium
plexamp
remmina
# Visual
inkscape
krita
darktable
imagemagick
# Audio / Visual
loupe # Image viewer
pastel # generate, analyze, convert and manipulate colors
inkscape # Vector editor
krita # Image editor
kdePackages.kolourpaint # Simple Image editor
darktable # Raw editor
imagemagick # Image processing
mpv # Video player
cava # Audio visualizer
wireplumber # Audio server
pavucontrol # Audio control
];
programs = {
# CLI tools
command-not-found = {
enable = true;
dbPath = "/run/current-system/sw/bin/sqlite3";
};
# CLI
# Zoxide for quick directory navigation
zoxide = {
enable = true;
flags = ["--cmd cd"];
};
# Friendly shell
fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting # Disable greeting
'';
shellAliases = {
"eza" = "eza --icons=always --color-scale --hyperlink";
};
shellAbbrs = {
# Common abbreviations
".." = "cd ..";
"..." = "cd ../..";
"...." = "cd ../../../";
"....." = "cd ../../../../";
"cp" = "cp -v";
"ls" = "ls -lah";
"la" = "eza -la";
"l" = "eza -l";
"cat" = "bat -pp";
"tree" = "eza -lT";
"mkdir" = "mkdir -p";
"mv" = "mv -v";
"rm" = "rm -v";
# Specific program abbreviations
"astroterm" = "astroterm --fps 60 --speed 60 --metadata --unicode --color --city Göteborg --label-thresh 1 --threshold 4";
# Work abbreviations
"jumpc" = "ssh prod-admin-jump1.infra.csbnet.se";
"jumpn" = "ssh prod-jump-got1.infra.brainmill.com";
"proxc" = "ssh -L1337:172.18.200.21:8006 prod-admin-jump1.infra.csbnet.se";
"proxn" = "ssh -L1338:[2a09:2681:ffff:13::104]:8006 prod-jump-got1.infra.brainmill.com";
"ups1c" = "ssh -L1339:172.18.79.1:80 prod-admin-jump1.infra.csbnet.se";
"ups2c" = "ssh -L1340:172.18.79.3:80 prod-admin-jump1.infra.csbnet.se";
};
};
# Starship shell prompt
starship = {
enable = true;
transientPrompt.enable = true;
presets = ["nerd-font-symbols" "gruvbox-rainbow"];
settings = {
add_newline = false;
directory = {
fish_style_pwd_dir_length = 1;
};
};
};
# Direnv for automatic environment loading
direnv = {
enable = true;
enableFishIntegration = true;
};
# Cat replacement
bat = {
enable = true;
settings = {
theme = "gruvbox-dark";
};
};
# Vim editor
vim = {
enable = true;
defaultEditor = true;
@@ -123,17 +180,24 @@ in {
git = {
enable = true;
lfs.enable = true;
config = {
user.name = "Felix Schulze";
user.email = "admin@schulze.network";
init.defaultBranch = "main";
pull.rebase = true;
push.autoSetupRemote = true;
};
};
java.enable = true;
# programs
firefox = {
enable = true;
nativeMessagingHosts.packages = [pkgs.ff2mpv];
policies = {
/*
---- POLICIES ----
*/
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
@@ -142,14 +206,45 @@ in {
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
FirefoxHome = {
Snippets = false;
TopSites = false;
SponsoredTopSites = false;
SponsoredPocket = false;
};
HttpsOnlyMode = "force_enabled";
DNSOverHTTPS = {
Enabled = true;
ProviderURL = "https://dns.schulze.network/dns-query";
Locked = true;
Fallback = true;
};
PasswordManagerEnabled = false;
/*
---- PREFERENCES ----
*/
Preferences = {
"extensions.activeThemeID" = {
Value = "{21ab01a8-2464-4824-bccb-6db15659347e}";
Status = "locked";
};
"sidebar.animation.duration-ms" = {
Value = 50;
Status = "locked";
};
"sidebar.animation.expand-on-hover.duration-ms" = {
Value = 50;
Status = "locked";
};
"sidebar.verticalTabs" = lock-true;
"sidebar.position_start" = lock-false;
};
/*
---- EXTENSIONS ----
*/
# Check about:support for extension/add-on ID strings.
# Valid strings for installation_mode are "allowed", "blocked",
# "force_installed" and "normal_installed".
# Valid strings for installation_mode are "allowed", "blocked", "force_installed" and "normal_installed".
ExtensionSettings = {
"*".installation_mode = "normal_installed";
# uBlock Origin:
@@ -163,25 +258,45 @@ in {
installation_mode = "force_installed";
};
};
/*
---- PREFERENCES ----
*/
Preferences = {
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
"extensions.activeThemeID" = {
Value = "{21ab01a8-2464-4824-bccb-6db15659347e}";
Status = "locked";
};
};
thunderbird = {
enable = true;
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
DisablePocket = true;
DNSOverHTTPS = {
Enable = true;
Provider = "dns.schulze.network";
Locked = false;
Fallback = true;
};
ExtensionSettings = {
"cloud@johannes-endres.de" = {
installation_mode = "force_installed";
install_url = "https://addons.thunderbird.net/thunderbird/downloads/latest/filelink-nextcloud-owncloud/addon-987761-latest.xpi";
};
"dkim_verifier@pl" = {
installation_mode = "force_installed";
install_url = "https://addons.thunderbird.net/thunderbird/downloads/latest/dkim-verifier/addon-438634-latest.xpi";
};
"gruvbox-dark@calch.themes.thunderbird.net" = {
installation_mode = "force_installed";
install_url = "https://addons.thunderbird.net/thunderbird/downloads/latest/gruvbox-dark-thunderbird/addon-987835-latest.xpi";
};
};
};
};
thunderbird.enable = true;
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
wireshark = {
enable = true;
package = pkgs.wireshark;
};
};
# enable and configure Docker

View File

@@ -49,7 +49,7 @@ git diff -U0 '*.nix'
echo "NixOS Rebuilding configuration for host: $NIXOS_HOST..."
# First, run a check to see if the flake is valid
nix flake check 2>&1 | grep -i --color error && exit 1
# nix flake check 2>&1 | grep -i --color error && exit 1 # This just takes too long
# Rebuild the system
mkdir -p logs
@@ -60,8 +60,3 @@ current=$(nixos-rebuild list-generations | grep current)
# Commit all changes witih the generation metadata
git commit -am "$NIXOS_HOST: $current"
# Clean up old generations older than 180 days
sudo nix-collect-garbage --delete-older-than 180d &>logs/nixos-gc.log || (cat logs/nixos-gc.log | grep --color error && exit 1)

BIN
screenshots/fastfetch.png (Stored with Git LFS) Normal file

Binary file not shown.