Compare commits

...

222 Commits

Author SHA1 Message Date
Lennart J. Kurzweg (Nx2)
9c0094949e flake bump 2025-06-22 14:52:48 +02:00
Lennart J. Kurzweg (Nx2)
8e3ec6c603 cleanup 2025-06-22 14:52:42 +02:00
Lennart J. Kurzweg (Nx2)
78f6fb64d0 yazi gs nx2site ace 2025-06-22 14:52:35 +02:00
Lennart J. Kurzweg (Nx2)
244e40a746 git robots.txt 2025-06-22 14:52:15 +02:00
Lennart J. Kurzweg (Nx2)
7b9f009a27 gpg-tui 2025-06-22 14:52:03 +02:00
Lennart J. Kurzweg (Nx2)
4fdc4becf0 also use cache.nix 2025-06-22 14:51:55 +02:00
Lennart J. Kurzweg (Nx2)
6d2f90486f remove dart-sass 2025-06-18 15:31:20 +02:00
Lennart J. Kurzweg (Nx2)
d6d4a1f3b5 refactor 2025-06-18 15:31:01 +02:00
Lennart J. Kurzweg (Nx2)
04dcba2d3f unfix xps kernel 2025-06-18 13:43:43 +02:00
Lennart J. Kurzweg (Nx2)
d2d1ce7830 overlays refactor 2025-06-17 19:48:31 +02:00
Lennart J. Kurzweg (Nx2)
fbd045d53e fixed xps kernel bcz of nvidia build failure 2025-06-17 18:51:55 +02:00
Lennart J. Kurzweg (Nx2)
027dee164d Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-17 18:02:53 +02:00
Lennart J. Kurzweg (Nx2)
e651b39126 new eduroam password 2025-06-17 18:02:26 +02:00
Lennart J. Kurzweg (Nx2)
5a242c60a5 versitile ooo 2025-06-17 18:02:02 +02:00
Lennart J. Kurzweg (Nx2)
be9f5c23e8 opaque element 2025-06-17 18:01:53 +02:00
Lennart J. Kurzweg (Nx2)
c5a0f61faa remove nixondroid input 2025-06-17 15:45:10 +02:00
Lennart J. Kurzweg (Nx2)
786648990f Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-17 15:11:29 +02:00
Lennart J. Kurzweg (Nx2)
30f5ee6a3a no nixondroid + deploy hugo 2025-06-17 15:11:27 +02:00
Lennart J. Kurzweg (Nx2)
7544b0dbac Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-15 21:36:39 +02:00
Lennart J. Kurzweg (Nx2)
68eb400210 flake bump 2025-06-15 21:36:37 +02:00
Lennart J. Kurzweg (Nx2)
7952492672 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-10 19:57:38 +02:00
Lennart J. Kurzweg (Nx2)
fa3348c5c2 sops ace fix 2025-06-10 19:57:23 +02:00
Lennart J. Kurzweg (Nx2)
8a47706856 stui 2025-06-10 19:57:04 +02:00
Lennart J. Kurzweg (Nx2)
cc9026297e ace colors 2025-06-10 19:56:59 +02:00
Lennart J. Kurzweg (Nx2)
bf30ac72d1 flake bump 2025-06-10 19:56:08 +02:00
Lennart J. Kurzweg (Nx2)
10344ce639 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-10 19:39:19 +02:00
Lennart J. Kurzweg (Nx2)
a76fe844c6 ghossty using module 2025-06-10 19:36:21 +02:00
Lennart J. Kurzweg (Nx2)
feb6d269de chromium rename 2025-06-10 19:36:03 +02:00
Lennart J. Kurzweg (Nx2)
76e83f6498 more fixes 2025-06-10 19:35:53 +02:00
Lennart J. Kurzweg (Nx2)
46ad89fe0d new version fixes 2025-06-10 19:34:56 +02:00
Lennart J. Kurzweg (Nx2)
c186666394 chatterino path fix 2025-06-10 19:33:34 +02:00
Lennart J. Kurzweg (Nx2)
6b8d1d277b blacker black 2025-06-10 19:33:16 +02:00
Lennart J. Kurzweg (Nx2)
2c358380e4 flake fix 2025-06-10 19:32:59 +02:00
Lennart J. Kurzweg (Nx2)
935beadb3b add .ignore 2025-06-10 19:30:09 +02:00
Lennart J. Kurzweg (Nx2)
5775bc88d6 lanazboote fix 2025-06-10 19:30:01 +02:00
Lennart J. Kurzweg (Nx2)
3285d23223 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-06 13:52:54 +02:00
Lennart J. Kurzweg (Nx2)
a8629627ea no printlastlog sshd 2025-06-06 13:52:04 +02:00
Lennart J. Kurzweg (Nx2)
68c749474e lr euma 2025-06-06 13:51:51 +02:00
Lennart J. Kurzweg (Nx2)
e0b43bcbe5 dysk 2025-06-06 13:51:42 +02:00
Lennart J. Kurzweg (Nx2)
10e1941c5a nix-on-droid untested 2025-06-05 20:34:31 +02:00
Lennart J. Kurzweg (Nx2)
2d697c079d merge 2025-06-02 14:51:38 +02:00
Lennart J. Kurzweg (Nx2)
ed18e8bd51 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-05-31 15:04:44 +02:00
Lennart J. Kurzweg (Nx2)
a9670b5896 streamlink secret 2025-05-31 15:04:07 +02:00
Lennart J. Kurzweg (Nx2)
b5e66bbf43 yazi cache 2025-05-31 15:03:48 +02:00
Lennart J. Kurzweg (Nx2)
e1f74665c1 stable nvidia 2025-05-31 15:03:29 +02:00
Lennart J. Kurzweg (Nx2)
c8903a6b56 no ruff lsp 2025-05-31 15:01:33 +02:00
Lennart J. Kurzweg (Nx2)
b1258be64b minecraft 2025-05-31 15:01:06 +02:00
Lennart J. Kurzweg (Nx2)
7b08304f78 streamlink try 2025-05-31 15:00:21 +02:00
Lennart J. Kurzweg (Nx2)
d439996d0c js lsp 2025-05-31 14:59:17 +02:00
Lennart J. Kurzweg (Nx2)
c566e4f40a refactor fix 2025-05-31 14:58:44 +02:00
Lennart J. Kurzweg (Nx2)
272ae1cd55 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-05-31 13:48:40 +02:00
Lennart J. Kurzweg (Nx2)
c4052ec34d dev ssl 2025-05-31 13:42:32 +02:00
Lennart J. Kurzweg (Nx2)
f4f80ffbde games on Ace - mindustry 2025-05-31 13:42:27 +02:00
Lennart J. Kurzweg (Nx2)
2de110149f calendar dicos ++ 2025-05-31 13:40:37 +02:00
Lennart J. Kurzweg (Nx2)
b0ab87bbab linux_6.12 ACE 2025-05-31 13:39:47 +02:00
Lennart J. Kurzweg (Nx2)
edde9bd52b proxy dev 2025-05-31 13:38:19 +02:00
Lennart J. Kurzweg (Nx2)
bf56cc88bf gitea theme 2025-05-31 13:36:19 +02:00
Lennart J. Kurzweg (Nx2)
393d7f4fc4 campuszeit 2025-05-31 13:35:52 +02:00
Lennart J. Kurzweg (Nx2)
2ecb4ce65a chatterino token 2025-05-31 13:35:43 +02:00
Lennart J. Kurzweg (Nx2)
88e73a3ea8 helix colors for windows terminal 2025-05-28 14:49:20 +00:00
Lennart J. Kurzweg (Nx2)
8be84ff0a9 dicos git 2025-05-28 14:49:09 +00:00
Lennart J. Kurzweg (Nx2)
9d3418bec2 htop 2025-05-28 14:48:08 +00:00
Lennart J. Kurzweg (Nx2)
68cb4377b7 New Flake Style XPS fix 2025-05-27 12:12:36 +02:00
Lennart J. Kurzweg (Nx2)
ce140cf4f2 merge + fix nixpkgs versions 2025-05-27 07:55:00 +00:00
Lennart J. Kurzweg (Nx2)
a60e90ab8f New Flake Style + WSL + NixOnDroid 2025-05-27 07:15:44 +00:00
Lennart J. Kurzweg (Nx2)
89adbab83b Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-05-26 14:46:53 +02:00
Lennart J. Kurzweg (Nx2)
09837534ea fix vesktop multi gpu 2025-05-26 14:46:42 +02:00
Lennart J. Kurzweg (Nx2)
a769f9eb1f zathura hotkey 2025-05-26 14:46:13 +02:00
Lennart J. Kurzweg (Nx2)
031215cb4f waybar fix center, no event 2025-05-26 14:45:40 +02:00
Lennart J. Kurzweg (Nx2)
b36e420e89 yazi js edit 2025-05-26 14:45:18 +02:00
Lennart J. Kurzweg (Nx2)
0a52deb024 js lsp 2025-05-26 14:44:39 +02:00
Lennart J. Kurzweg (Nx2)
d3b5bb0d60 chatterino new 2025-05-26 14:44:28 +02:00
Lennart J. Kurzweg (Nx2)
5a1c9eeacb 25.05 xps 2025-05-26 14:44:16 +02:00
Lennart J. Kurzweg (Nx2)
b9d8a339d2 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-04-11 14:00:18 +02:00
Lennart J. Kurzweg (Nx2)
9fe46133da yazi ++ 2025-04-11 13:59:00 +02:00
Lennart J. Kurzweg (Nx2)
f35172fde1 clarify delete event 2025-04-11 13:58:35 +02:00
Lennart J. Kurzweg (Nx2)
6b79aca0be fix autoname 2025-04-11 13:58:17 +02:00
Lennart J. Kurzweg (Nx2)
9788b83d82 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-04-11 12:40:55 +02:00
Lennart J. Kurzweg (Nx2)
366644f5d2 chatterino cleanup 2025-04-11 12:40:49 +02:00
Lennart J. Kurzweg (Nx2)
3891119804 inline diagnostics 2025-04-11 12:40:33 +02:00
Lennart J. Kurzweg (Nx2)
e8284be564 feiertage hessen 2025-04-11 12:40:21 +02:00
Lennart J. Kurzweg (Nx2)
6c6dd819a8 nxace no obsidian 2025-03-31 01:51:39 +02:00
Lennart J. Kurzweg (Nx2)
014fca20a9 nxace default kernel 2025-03-31 01:51:29 +02:00
Lennart J. Kurzweg (Nx2)
2b51508030 nxace no games 2025-03-31 01:51:15 +02:00
Lennart J. Kurzweg (Nx2)
7e8f5f6751 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-03-31 01:26:54 +02:00
Lennart J. Kurzweg (Nx2)
61a788961d calendar
lr + dicos description + cleanup
2025-03-31 01:26:42 +02:00
Lennart J. Kurzweg (Nx2)
8a8780ff71 hugo 2025-03-31 01:24:45 +02:00
Lennart J. Kurzweg (Nx2)
921f8fc6a7 dyn_dns 2025-03-31 01:23:45 +02:00
Lennart J. Kurzweg (Nx2)
977837f81e Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-03-31 00:44:56 +02:00
Lennart J. Kurzweg (Nx2)
17bbc58503 flake bump 2025-03-31 00:44:53 +02:00
Lennart J. Kurzweg (Nx2)
61fa0dd7fd systemctl-tui 2025-03-31 00:44:44 +02:00
Lennart J. Kurzweg (Nx2)
f08777fdab ollama simplification 2025-03-31 00:44:32 +02:00
Lennart J. Kurzweg (Nx2)
7a6f6aac82 inputMethod syntax new style 2025-03-31 00:44:06 +02:00
Lennart J. Kurzweg (Nx2)
86ce0ac9d4 xps linux latest 2025-03-31 00:42:27 +02:00
Lennart J. Kurzweg (Nx2)
e08b0e8184 yazi refactor + update fix 2025-03-31 00:42:18 +02:00
Lennart J. Kurzweg (Nx2)
02c48e8eaa display change 2025-03-31 00:23:57 +02:00
Lennart J. Kurzweg (Nx2)
0876ec355e better helix markup 2025-03-31 00:23:44 +02:00
Lennart J. Kurzweg (Nx2)
28dd018961 gimp3 incomming 2025-03-30 23:59:39 +02:00
Lennart J. Kurzweg (Nx2)
ce363cafe1 eza refactor 2025-03-30 23:59:04 +02:00
Lennart J. Kurzweg (Nx2)
67202e47e3 LR calendar 2025-03-30 23:58:52 +02:00
Lennart J. Kurzweg (Nx2)
d7d9b8e39c Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-03-02 19:50:36 +01:00
Lennart J. Kurzweg (Nx2)
1a52cafa66 better dyndns 2025-03-02 19:50:34 +01:00
Lennart J. Kurzweg (Nx2)
b3a419de26 local ip changes 2025-03-02 19:49:26 +01:00
Lennart J. Kurzweg (Nx2)
0b3931ff86 hugo 2025-03-02 19:49:09 +01:00
Lennart J. Kurzweg (Nx2)
2b854183ac Merge 2025-03-01 12:35:17 +01:00
Lennart J. Kurzweg (Nx2)
18013b83df chatterifo oauth 2025-03-01 12:34:19 +01:00
Lennart J. Kurzweg (Nx2)
6b4a76dd4a fix and refactor dynamic-dns 2025-02-22 13:43:35 +01:00
Lennart J. Kurzweg (Nx2)
c15bf8c58e little formatting 2025-02-22 13:43:16 +01:00
Lennart J. Kurzweg (Nx2)
60a839663a radicale fix 2025-02-22 11:33:43 +01:00
Lennart J. Kurzweg (Nx2)
ee72de3539 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-02-22 11:33:07 +01:00
Lennart J. Kurzweg (Nx2)
73281b62d9 yazi orphans 2025-02-22 11:33:03 +01:00
Lennart J. Kurzweg (Nx2)
e5e7164a93 force reload event hotkey 2025-02-22 11:32:18 +01:00
Lennart J. Kurzweg (Nx2)
3ed506a924 handball wm is over 2025-02-22 11:31:55 +01:00
Lennart J. Kurzweg (Nx2)
33503c4485 chatterino update 2025-02-22 11:31:45 +01:00
Lennart J. Kurzweg (Nx2)
5c8e50aa9f Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-02-21 10:57:02 +01:00
Lennart J. Kurzweg (Nx2)
c9106e8484 calendar++ 2025-02-21 10:46:12 +01:00
Lennart J. Kurzweg (Nx2)
62b40404c7 flake bump 2025-02-17 11:33:16 +01:00
Lennart J. Kurzweg (Nx2)
07a320147d 0.8 2025-02-17 11:33:09 +01:00
Lennart J. Kurzweg (Nx2)
34cdfc4def calendar waybar 2025-02-17 11:32:54 +01:00
Lennart J. Kurzweg (Nx2)
545b61a79f better hyprland rules 2025-02-17 11:31:59 +01:00
Lennart J. Kurzweg (Nx2)
feb2f93360 flake bump 2025-01-31 12:44:31 +01:00
Lennart J. Kurzweg (Nx2)
8fb93e5f2b Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-01-30 13:42:56 +01:00
Lennart J. Kurzweg (Nx2)
e5e3eaaff4 cleanup firefox userchrome 2025-01-30 13:42:38 +01:00
Lennart J. Kurzweg (Nx2)
4bc88c8d13 hyprland display NxXPS 2025-01-30 13:42:26 +01:00
Lennart J. Kurzweg (Nx2)
a5c8d284ee calendar-lec 2025-01-30 13:41:27 +01:00
Lennart J. Kurzweg (Nx2)
c2f151e03e nx2site-backup 2025-01-30 13:41:12 +01:00
Lennart J. Kurzweg (Nx2)
b0b643f164 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-01-27 22:29:12 +01:00
Lennart J. Kurzweg (Nx2)
99c07ec5fb yt-dlp 2025-01-27 22:23:19 +01:00
Lennart J. Kurzweg (Nx2)
3f553d27e1 pv 2025-01-27 22:23:10 +01:00
Lennart J. Kurzweg (Nx2)
a6a17574b8 weird fix 2025-01-27 22:22:48 +01:00
Lennart J. Kurzweg (Nx2)
78359c710f gitea-dump fix 2025-01-27 22:22:28 +01:00
Lennart J. Kurzweg (Nx2)
2206e5472b calendar public 2025-01-27 22:20:27 +01:00
Lennart J. Kurzweg (Nx2)
9c96585401 audiobookshelf 2025-01-27 22:19:32 +01:00
Lennart J. Kurzweg (Nx2)
ac36fa13ac paperless update 2025-01-27 22:18:57 +01:00
Lennart J. Kurzweg (Nx2)
b4586e8661 chmod 2025-01-27 22:17:00 +01:00
Lennart J. Kurzweg (Nx2)
5a6199a8a9 comment unknow options 2025-01-19 22:37:40 +01:00
Lennart J. Kurzweg (Nx2)
5e34285db2 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-01-19 22:09:08 +01:00
Lennart J. Kurzweg (Nx2)
9612646c55 qbt in home 2025-01-19 22:09:05 +01:00
Lennart J. Kurzweg (Nx2)
7324904db9 helix all options 2025-01-19 22:08:46 +01:00
Lennart J. Kurzweg (Nx2)
132c169e24 sleeker zathura 2025-01-19 22:07:14 +01:00
Lennart J. Kurzweg (Nx2)
207961e397 better yazi bindings 2025-01-19 22:06:58 +01:00
Lennart J. Kurzweg (Nx2)
73339cfc50 waybar ws opaque 2025-01-19 22:06:32 +01:00
Lennart J. Kurzweg (Nx2)
94559de7ae better thunderbird css 2025-01-19 11:43:24 +01:00
Lennart J. Kurzweg (Nx2)
89fa46aa6d calendar ++ 2025-01-19 11:43:15 +01:00
Lennart J. Kurzweg (Nx2)
0fbb54a04a adbfs 2025-01-13 20:05:02 +01:00
Lennart J. Kurzweg (Nx2)
9619164eb4 paperless non-admin fix 2025-01-13 20:04:49 +01:00
Lennart J. Kurzweg (Nx2)
343fc2ac4e second screen change 2025-01-13 20:03:19 +01:00
Lennart J. Kurzweg (Nx2)
9c98199ee3 scanning 2025-01-13 19:59:04 +01:00
Lennart J. Kurzweg (Nx2)
3652cdfca9 nxgs 2025-01-13 19:58:22 +01:00
Lennart J. Kurzweg (Nx2)
2699268b81 take 2025-01-13 19:56:35 +01:00
Lennart J. Kurzweg (Nx2)
e4d0326a74 flake bump 2025-01-04 13:54:13 +01:00
Lennart J. Kurzweg (Nx2)
8525adecf4 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-01-04 13:53:51 +01:00
Lennart J. Kurzweg (Nx2)
c381580cca fix hyprland-autoname-workspaces 2025-01-04 13:53:06 +01:00
Lennart J. Kurzweg (Nx2)
aea641cd9c no helix bg 2025-01-04 13:52:34 +01:00
Lennart J. Kurzweg (Nx2)
2179dbf1d8 calendar 2025-01-04 13:52:21 +01:00
Lennart J. Kurzweg (Nx2)
6f5f70f439 new ppl pw 2025-01-02 21:44:37 +01:00
Lennart J. Kurzweg (Nx2)
d40175d4a5 6 11 2025-01-02 21:44:27 +01:00
Lennart J. Kurzweg (Nx2)
34eba60193 radicale 2025-01-02 21:44:15 +01:00
Lennart J. Kurzweg (Nx2)
57230a32c3 nextcloud (deactivated) 2025-01-02 21:43:20 +01:00
Lennart J. Kurzweg (Nx2)
d9146432e4 flake bump 2024-12-27 12:56:50 +01:00
Lennart J. Kurzweg (Nx2)
447e6edd56 radicale (untested) 2024-12-27 12:56:33 +01:00
Lennart J. Kurzweg (Nx2)
aa58ca79bb ghostty (unfinished) 2024-12-27 12:56:17 +01:00
Lennart J. Kurzweg (Nx2)
a2692f6837 chatterino, fix, rice, colorslum[27u[27u[27u[27u[27u 2024-12-27 12:55:51 +01:00
Lennart J. Kurzweg (Nx2)
c031de7fec in the thick of it 2024-12-27 12:54:11 +01:00
Lennart J. Kurzweg (Nx2)
918342fdf3 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-23 13:04:25 +01:00
Lennart J. Kurzweg (Nx2)
d8f623f1a0 postgres 12 -> 16 2024-12-23 13:03:45 +01:00
Lennart J. Kurzweg (Nx2)
6a4460d089 new syncthing ID for tessa 2024-12-23 13:00:22 +01:00
Lennart J. Kurzweg (Nx2)
e61954442f flake bump 2024-12-23 12:59:32 +01:00
Lennart J. Kurzweg (Nx2)
f5aa965369 update option name (opengl -> graphics) 2024-12-23 12:59:22 +01:00
Lennart J. Kurzweg (Nx2)
eb812dc9e0 nix without llm 2024-12-23 12:58:31 +01:00
Lennart J. Kurzweg (Nx2)
6d4d118685 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-19 15:19:51 +01:00
Lennart J. Kurzweg (Nx2)
94a78942f8 helix-gpt is to slow 2024-12-19 15:19:47 +01:00
Lennart J. Kurzweg (Nx2)
5c2437cee1 renaming node to js also in imports 2024-12-19 15:19:31 +01:00
Lennart J. Kurzweg (Nx2)
fa8875c0ee Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-15 15:36:15 +01:00
Lennart J. Kurzweg (Nx2)
2040ce3ea0 fixup 2024-12-15 15:33:39 +01:00
Lennart J. Kurzweg (Nx2)
d9822a7a91 gitea (theme&++) 2024-12-15 15:31:43 +01:00
Lennart J. Kurzweg (Nx2)
d2e0b9d2d3 paperless 2024-12-15 15:14:52 +01:00
Lennart J. Kurzweg (Nx2)
ccdd036935 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-15 14:53:43 +01:00
Lennart J. Kurzweg (Nx2)
5d36be3804 flake bump 2024-12-15 14:50:36 +01:00
Lennart J. Kurzweg (Nx2)
2640b00b05 better zahtura scrolling 2024-12-15 14:37:58 +01:00
Lennart J. Kurzweg (Nx2)
9087100c42 qt 2024-12-15 14:35:54 +01:00
Lennart J. Kurzweg (Nx2)
5c9a92c68e helic cleanup + java 2024-12-15 14:35:43 +01:00
Lennart J. Kurzweg (Nx2)
1fd894a3b3 cleanup 2024-12-15 14:28:51 +01:00
Lennart J. Kurzweg (Nx2)
09316011ab helix-gpt 2024-12-15 14:23:20 +01:00
Lennart J. Kurzweg (Nx2)
fdce6c3d57 go 2024-12-15 14:22:31 +01:00
Lennart J. Kurzweg (Nx2)
1be03c39ad Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-12-02 21:48:54 +01:00
Lennart J. Kurzweg (Nx2)
a0c098ea1f Better "special" window handeling 2024-12-02 21:44:24 +01:00
Lennart J. Kurzweg (Nx2)
9a4e3d7a78 flake bump 2024-12-02 21:33:52 +01:00
Lennart J. Kurzweg (Nx2)
1005cc522d gnome-calendar 2024-12-02 21:05:13 +01:00
Lennart J. Kurzweg (Nx2)
729e7e5f0e gnu parallel 2024-12-02 21:04:55 +01:00
Lennart J. Kurzweg (Nx2)
79cbdc9f69 health-reminder++ 2024-12-02 21:04:41 +01:00
Lennart J. Kurzweg (Nx2)
c6ca7c95f4 zathura++ 2024-12-02 21:04:14 +01:00
Lennart J. Kurzweg (Nx2)
e878158b71 better yazi 2024-12-02 21:03:48 +01:00
Lennart J. Kurzweg (Nx2)
ed5f0784d1 longer mako 2024-12-02 21:03:28 +01:00
Lennart J. Kurzweg (Nx2)
051648954a gtk tryouts 2024-12-02 21:03:20 +01:00
Lennart J. Kurzweg (Nx2)
f5538e69a5 better color changing (maual) 2024-12-02 21:00:01 +01:00
Lennart J. Kurzweg (Nx2)
a82660b049 Gimp 2024-12-02 20:59:20 +01:00
Lennart J. Kurzweg (Nx2)
f828268b14 24.11 Vicuna 2024-12-02 20:59:00 +01:00
Lennart J. Kurzweg (Nx2)
02c7814ce4 better/less userChrome 2024-12-02 20:49:33 +01:00
Lennart J. Kurzweg (Nx2)
e36ffd828b chatterino update 2024-12-02 20:46:51 +01:00
Lennart J. Kurzweg (Nx2)
219a19a3a8 fonts (no name2) 2024-12-02 20:46:32 +01:00
Lennart J. Kurzweg (Nx2)
683913e0fe rice syntax 2024-12-02 20:42:49 +01:00
Lennart J. Kurzweg (Nx2)
837e64c377 wallpaper to color hotkey syntax fix 2024-11-21 22:55:09 +01:00
Lennart J. Kurzweg (Nx2)
f8497f5538 health reminder syntax fix 2 2024-11-21 22:33:47 +01:00
Lennart J. Kurzweg (Nx2)
9c2a69aa03 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-11-21 22:28:42 +01:00
Lennart J. Kurzweg (Nx2)
a8c3a12089 xps to linux_6_11 2024-11-21 22:27:48 +01:00
Lennart J. Kurzweg (Nx2)
b8199c24ef health reminder syntax fix 2024-11-21 22:27:28 +01:00
Lennart J. Kurzweg (Nx2)
971cea5418 steam 2024-11-21 22:19:14 +01:00
Lennart J. Kurzweg (Nx2)
d12b9ddf2f Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2024-11-21 22:17:48 +01:00
Lennart J. Kurzweg (Nx2)
e4ec830aaa better health reminder 2024-11-21 22:07:53 +01:00
Lennart J. Kurzweg (Nx2)
ebb1da3fc2 typo 2024-11-21 22:07:36 +01:00
Lennart J. Kurzweg (Nx2)
80e06b3f49 more userChrome 2024-11-21 22:07:31 +01:00
Lennart J. Kurzweg (Nx2)
605381b553 waybar prettier battery 2024-11-21 22:07:07 +01:00
Lennart J. Kurzweg (Nx2)
298d31e21a submaps als functions + TUDa submap 2024-11-21 22:06:55 +01:00
Lennart J. Kurzweg (Nx2)
947b824796 hyprland nxcolor-functions better 2024-11-21 22:06:03 +01:00
Lennart J. Kurzweg (Nx2)
edbe4e7f66 moved NORTH screen 2024-11-20 01:27:20 +01:00
Lennart J. Kurzweg (Nx2)
dbccb827ad games also on ACE 2024-11-20 01:25:42 +01:00
Lennart J. Kurzweg (Nx2)
f5af726382 nx2site gitea and vaultwarden (working) 2024-11-20 01:24:57 +01:00
Lennart J. Kurzweg (Nx2)
e95332cedb Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles 2024-11-15 14:10:50 +01:00
Lennart J. Kurzweg (Nx2)
6a7d8fe4be nx2site002 (unready) 2024-11-15 14:10:48 +01:00
Lennart J. Kurzweg (Nx2)
37eb70db63 Merge branch 'master' of ssh://ssh.nx2.site:20022/nx2/dotfiles 2024-11-14 01:21:42 +01:00
Lennart J. Kurzweg (Nx2)
77e9aa4ddd games 2024-11-14 01:21:34 +01:00
152 changed files with 4717 additions and 3375 deletions

0
.gitattributes vendored Executable file → Normal file
View File

0
.gitignore vendored Executable file → Normal file
View File

15
.ignore Normal file
View File

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

View File

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

120
configuration.nix Executable file → Normal file
View File

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

View File

@@ -4,6 +4,8 @@
"discord" "discord"
"spotify" "spotify"
"obsidian" "obsidian"
"steam"
"steam-unwrapped"
"zoom-us" "zoom-us"
"zoom" "zoom"
@@ -35,6 +37,8 @@
"libnvjitlink" "libnvjitlink"
"libcusparse" "libcusparse"
"libnpp" "libnpp"
"vscode-extension-mhutchie-git-graph"
]; ];
inecure = [ inecure = [

View File

@@ -1,13 +1,13 @@
{ {
"base": { "base": {
"foreground": "#eedce2", "foreground": "#fefefe",
"background": "#221016" "background": "#020202"
}, },
"to_alter": { "to_alter": {
"accent": "#ac5271", "accent": "#aaaaff",
"secondary": "#f20c5b", "secondary": "#aaeeff",
"tertiary": "#d5a287", "tertiary": "#aaffaa",
"special": "#51ac8d", "special": "#aaffaa",
"weird": "#0cf2a3" "weird": "#ffffaa"
} }
} }

View File

@@ -6,15 +6,14 @@ pkgs: rec {
rounding = 3; rounding = 3;
gap-size = 5; gap-size = 5;
border-width = 2; border-width = 2;
color = color = let
let
dark = (-0.5); dark = (-0.5);
bright = (0.5); bright = (0.5);
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; }; alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
alter = let f = lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; }; alter = let f = lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
# ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)); # ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json));
ccolor = builtins.mapAttrs alter-set { ccolor = builtins.mapAttrs alter-set {
black = "#111111"; # "#111111" "#001100"; black = "#040404"; # "#111111" "#001100";
white = "#dddddd"; # "#dddddd" "#66dd66"; white = "#dddddd"; # "#dddddd" "#66dd66";
blue = "#4444dd"; # "#3333dd" "#003300"; blue = "#4444dd"; # "#3333dd" "#003300";
cyan = "#44dddd"; # "#11dddd" "#00dd55"; cyan = "#44dddd"; # "#11dddd" "#00dd55";
@@ -26,7 +25,7 @@ pkgs: rec {
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter; facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base; fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
fcolor = facolor // fbcolor; fcolor = facolor // fbcolor;
xcolor = with ccolor; with fcolor; rec { xcolor = with ccolor; with fcolor; {
background = "#000000"; background = "#000000";
# foreground = "#dddddd"; # foreground = "#dddddd";
# accent = blue; # accent = blue;
@@ -42,9 +41,8 @@ pkgs: rec {
in ccolor // fcolor // xcolor; in ccolor // fcolor // xcolor;
font = { font = {
code = { code = {
name = "JetBrainsMono-NF"; name = "JetBrainsMono Nerd Font";
name2 = "JetBrainsMono Nerd Font"; package = pkgs.nerd-fonts.jetbrains-mono;
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
# name = "CascadiaCove-NF"; # name = "CascadiaCove-NF";
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; }); # package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
}; };

573
flake.lock generated Executable file → Normal file
View File

@@ -1,26 +1,5 @@
{ {
"nodes": { "nodes": {
"Hyprspace": {
"inputs": {
"hyprland": [
"hyprland"
],
"systems": "systems"
},
"locked": {
"lastModified": 1728710667,
"narHash": "sha256-9HR9EePhzweUAUPUccByNYxKQzfFAnxfu2BXTLqOLZQ=",
"owner": "KZDKM",
"repo": "Hyprspace",
"rev": "e8406a7708bceb3b5bedf56b67490dbe3d27e6f8",
"type": "github"
},
"original": {
"owner": "KZDKM",
"repo": "Hyprspace",
"type": "github"
}
},
"aquamarine": { "aquamarine": {
"inputs": { "inputs": {
"hyprutils": [ "hyprutils": [
@@ -41,11 +20,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728902391, "lastModified": 1750372185,
"narHash": "sha256-44bnoY0nAvbBQ/lVjmn511yL39Sv7SknV0BDxn34P3Q=", "narHash": "sha256-lVBKxd9dsZOH1fA6kSE5WNnt8e+09fN+NL/Q3BjTWHY=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "aquamarine", "repo": "aquamarine",
"rev": "9874e08eec85b5542ca22494e127b0cdce46b786", "rev": "7cef49d261cbbe537e8cb662485e76d29ac4cbca",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -55,30 +34,12 @@
} }
}, },
"crane": { "crane": {
"inputs": {
"flake-compat": [
"lanzaboote",
"flake-compat"
],
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [
"lanzaboote",
"nixpkgs"
],
"rust-overlay": [
"lanzaboote",
"rust-overlay"
]
},
"locked": { "locked": {
"lastModified": 1681177078, "lastModified": 1731098351,
"narHash": "sha256-ZNIjBDou2GOabcpctiQykEQVkI8BDwk7TyvlWlI4myE=", "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=",
"owner": "ipetkov", "owner": "ipetkov",
"repo": "crane", "repo": "crane",
"rev": "0c9f468ff00576577d83f5019a66c557ede5acf6", "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -106,11 +67,27 @@
"flake-compat_2": { "flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1673956053, "lastModified": 1696426674,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -120,24 +97,6 @@
} }
}, },
"flake-parts": { "flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1727826117,
"narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"lanzaboote", "lanzaboote",
@@ -145,11 +104,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1680392223, "lastModified": 1730504689,
"narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=", "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5", "rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -163,29 +122,11 @@
"systems": "systems_3" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1681202837, "lastModified": 1731533236,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -225,11 +166,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1660459072, "lastModified": 1709087332,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "gitignore.nix", "repo": "gitignore.nix",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -245,16 +186,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726989464, "lastModified": 1749154018,
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", "narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", "rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.05", "ref": "release-25.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@@ -275,11 +216,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728669738, "lastModified": 1749155331,
"narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=", "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprcursor", "repo": "hyprcursor",
"rev": "0264e698149fcb857a66a53018157b41f8d97bb0", "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -288,25 +229,56 @@
"type": "github" "type": "github"
} }
}, },
"hyprgraphics": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1750371717,
"narHash": "sha256-cNP+bVq8m5x2Rl6MTjwfQLCdwbVmKvTH7yqVc1SpiJM=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "15c6f8f3a567fec9a0f732cd310a7ff456deef88",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprgraphics",
"type": "github"
}
},
"hyprland": { "hyprland": {
"inputs": { "inputs": {
"aquamarine": "aquamarine", "aquamarine": "aquamarine",
"hyprcursor": "hyprcursor", "hyprcursor": "hyprcursor",
"hyprgraphics": "hyprgraphics",
"hyprland-protocols": "hyprland-protocols", "hyprland-protocols": "hyprland-protocols",
"hyprland-qtutils": "hyprland-qtutils",
"hyprlang": "hyprlang", "hyprlang": "hyprlang",
"hyprutils": "hyprutils", "hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner", "hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks", "pre-commit-hooks": "pre-commit-hooks",
"systems": "systems_2", "systems": "systems",
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1729629261, "lastModified": 1750589353,
"narHash": "sha256-IJtor2qFpsZkCm4UMnCHOSosW9GXKZVOm7DILtJJgoM=", "narHash": "sha256-ESfhPjQ6E/JUdFknr+HTHqZU5ZcwlTODemMTxApg1D0=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "29997ef4ba8ef0a80390e80199998d1390177454", "rev": "dd33128c2f127f39c30cca72addb1970b8936d07",
"revCount": 5366, "revCount": 6213,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@@ -334,11 +306,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1729596320, "lastModified": 1750503578,
"narHash": "sha256-sBPr6O2Ad916f+L7biAjmJVx4TLDITC4joKgeOT47V8=", "narHash": "sha256-/qnR7/GvGP1cGtOOm4OGJRtkVejn75/jsvJpiqE1ZDk=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-plugins", "repo": "hyprland-plugins",
"rev": "4d7f0b5d8b952f31f7d2e29af22ab0a55ca5c219", "rev": "8b4405ab46cafc471d5b09ff7258676dc9aaca59",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -359,11 +331,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728345020, "lastModified": 1749046714,
"narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-protocols", "repo": "hyprland-protocols",
"rev": "a7c183800e74f337753de186522b9017a07a8cee", "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -372,6 +344,74 @@
"type": "github" "type": "github"
} }
}, },
"hyprland-qt-support": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprland-qtutils",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"hyprland-qtutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-qtutils",
"systems"
]
},
"locked": {
"lastModified": 1749154592,
"narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=",
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"type": "github"
}
},
"hyprland-qtutils": {
"inputs": {
"hyprland-qt-support": "hyprland-qt-support",
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-qtutils",
"hyprlang",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1750371812,
"narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"type": "github"
}
},
"hyprlang": { "hyprlang": {
"inputs": { "inputs": {
"hyprutils": [ "hyprutils": [
@@ -388,11 +428,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728168612, "lastModified": 1750371198,
"narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -401,23 +441,24 @@
"type": "github" "type": "github"
} }
}, },
"hyprswitch": { "hyprspace": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "hyprland": [
"nixpkgs": "nixpkgs_2" "hyprland"
],
"systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1725107917, "lastModified": 1747531250,
"narHash": "sha256-6on3nwb3gB4t+P/2IExgGhVLVgAkF6ZiE5x+qcQHEXU=", "narHash": "sha256-uDhXNURTJgQSpiaCgzqAizbblpcEWEB1WGWEqtCnLLM=",
"owner": "h3rmt", "owner": "KZDKM",
"repo": "hyprswitch", "repo": "Hyprspace",
"rev": "f478c394ad6db5ba268f80052f1eb2366366b21e", "rev": "511d399120bdcafb43e57ca5ff35167c2bba6db8",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "h3rmt", "owner": "KZDKM",
"ref": "release", "repo": "Hyprspace",
"repo": "hyprswitch",
"type": "github" "type": "github"
} }
}, },
@@ -433,11 +474,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728941256, "lastModified": 1750371096,
"narHash": "sha256-WRypmcZ2Bw94lLmcmxYokVOHPJSZ7T06V49QZ4tkZeQ=", "narHash": "sha256-JB1IeJ41y7kWc/dPGV6RMcCUM0Xj2NEK26A2Ap7EM9c=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprutils", "repo": "hyprutils",
"rev": "fd4be8b9ca932f7384e454bcd923c5451ef2aa85", "rev": "38f3a211657ce82a1123bf19402199b67a410f08",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -458,11 +499,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726874836, "lastModified": 1750371869,
"narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=", "narHash": "sha256-lGk4gLjgZQ/rndUkzmPYcgbHr8gKU5u71vyrjnwfpB4=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwayland-scanner", "repo": "hyprwayland-scanner",
"rev": "500c81a9e1a76760371049a8d99e008ea77aa59e", "rev": "aa38edd6e3e277ae6a97ea83a69261a5c3aab9fd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -475,34 +516,53 @@
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts",
"flake-utils": "flake-utils", "nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs_3",
"pre-commit-hooks-nix": "pre-commit-hooks-nix", "pre-commit-hooks-nix": "pre-commit-hooks-nix",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1682802423, "lastModified": 1737639419,
"narHash": "sha256-Fb5TeRTdvUlo/5Yi2d+FC8a6KoRLk2h1VE0/peMhWPs=", "narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "lanzaboote", "repo": "lanzaboote",
"rev": "64b903ca87d18cef2752c19c098af275c6e51d63", "rev": "a65905a09e2c43ff63be8c0e86a93712361f871e",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "v0.3.0", "ref": "v0.4.2",
"repo": "lanzaboote", "repo": "lanzaboote",
"type": "github" "type": "github"
} }
}, },
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat_3",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1749574455,
"narHash": "sha256-fm2/8KPOYvvIAnNVtjDlTt/My00lIbZQ+LMrfQIWVzs=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "917af390377c573932d84b5e31dd9f2c1b5c0f09",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "main",
"repo": "NixOS-WSL",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1728888510, "lastModified": 1750365781,
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=", "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -514,11 +574,11 @@
}, },
"nixpkgs-latest": { "nixpkgs-latest": {
"locked": { "locked": {
"lastModified": 1729631290, "lastModified": 1750591067,
"narHash": "sha256-zVL79jvDihxcnq9FKkAoILYWxGmxCw1DGdBnpv/B+3s=", "narHash": "sha256-E1cW8nG5JceZnbgd8mVAvIEa/PQpAEN7/FknHNUQBn0=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1f9d2cf67508efd9b5e81cdf7af556bbbfe02377", "rev": "38e5187aeea047f16faa4f03a110c69e353b8396",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -528,25 +588,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-lib": {
"locked": {
"lastModified": 1727825735,
"narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1720386169, "lastModified": 1730741070,
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7", "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -556,45 +604,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1678872516,
"narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_3": {
"locked": {
"lastModified": 1729357638,
"narHash": "sha256-66RHecx+zohbZwJVEPF7uuwHeqf8rykZTMCTqIrOew4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1729413321, "lastModified": 1750365781,
"narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -605,26 +621,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1711588226, "lastModified": 1731919951,
"narHash": "sha256-nd7goEu+nH/WZ/uCxvbWzSYqzZZn25kWTeKfANOhCjU=", "narHash": "sha256-vOM6ETpl1yu9KLi/icTmLJIPbbdJCdAVYUXZceO/Ce4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "7232f19f7fb710e3554cafaa9d8e93cff8273b59",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1682741954,
"narHash": "sha256-RPZxzRu8XU0YD2WeYUFYzJy5yAvWUsxkuK+zWw+6WVk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "373e9eb4c42b2fc0611d794de5ea715a35d72393", "rev": "04386ac325a813047fc314d4b4d838a5b1e3c7fe",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -634,28 +635,44 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1729449015, "lastModified": 1749173751,
"narHash": "sha256-Gf04dXB0n4q0A9G5nTGH3zuMGr6jtJppqdeljxua1fo=", "narHash": "sha256-ENY3y3v6S9ZmLDDLI3LUT8MXmfXg/fSt2eA4GCnMVCE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "89172919243df199fe237ba0f776c3e3e3d72367", "rev": "ed29f002b6d6e5e7e32590deb065c34a31dc3e91",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1750400657,
"narHash": "sha256-3vkjFnxCOP6vm5Pm13wC/Zy6/VYgei/I/2DWgW4RFeA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b2485d56967598da068b5a6946dadda8bfcbcd37",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
"ref": "nixos-24.05", "ref": "nixos-25.05",
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1729265718, "lastModified": 1747312588,
"narHash": "sha256-4HQI+6LsO3kpWTYuVGIzhJs1cetFcwT7quWCk/6rqeo=", "narHash": "sha256-MmJvj6mlWzeRwKGLcwmZpKaOPZ5nJb/6al5CXqJsgjo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ccc0c2126893dd20963580b6478d1a10a4512185", "rev": "b1bebd0fe266bbd1820019612ead889e96a8fa2d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -665,22 +682,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_6": {
"locked": {
"lastModified": 1727348695,
"narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": { "pre-commit-hooks": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@@ -688,15 +689,14 @@
"nixpkgs": [ "nixpkgs": [
"hyprland", "hyprland",
"nixpkgs" "nixpkgs"
], ]
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1728778939, "lastModified": 1749636823,
"narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=", "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "ff68f91754be6f3427e4986d7949e6273659be1d", "rev": "623c56286de5a3193aa38891a6991b28f9bab056",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -711,23 +711,19 @@
"lanzaboote", "lanzaboote",
"flake-compat" "flake-compat"
], ],
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"gitignore": "gitignore_2", "gitignore": "gitignore_2",
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-stable": "nixpkgs-stable_2" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1681413034, "lastModified": 1731363552,
"narHash": "sha256-/t7OjNQcNkeWeSq/CFLYVBfm+IEnkjoSm9iKvArnUUI=", "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=",
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "d3de8f69ca88fb6f8b09e5b598be5ac98d28ede5", "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -738,37 +734,32 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"Hyprspace": "Hyprspace",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"hyprland-plugins": "hyprland-plugins", "hyprland-plugins": "hyprland-plugins",
"hyprswitch": "hyprswitch", "hyprspace": "hyprspace",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_4",
"nixpkgs-latest": "nixpkgs-latest", "nixpkgs-latest": "nixpkgs-latest",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"yazi": "yazi", "yazi": "yazi"
"zen-browser": "zen-browser"
} }
}, },
"rust-overlay": { "rust-overlay": {
"inputs": { "inputs": {
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1682129965, "lastModified": 1731897198,
"narHash": "sha256-1KRPIorEL6pLpJR04FwAqqnt4Tzcm4MqD84yhlD+XSk=", "narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "2c417c0460b788328220120c698630947547ee83", "rev": "0be641045af6d8666c11c2c40e45ffc9667839b5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -785,11 +776,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1729391507, "lastModified": 1747363019,
"narHash": "sha256-as0I9xieJUHf7kiK2a9znDsVZQTFWhM1pLivII43Gi0=", "narHash": "sha256-N4dwkRBmpOosa4gfFkFf/LTD8oOcNkAyvZ07JvRDEf0=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "784981a9feeba406de38c1c9a3decf966d853cca", "rev": "0e624f2b1972a34be1a9b35290ed18ea4b419b6f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -802,15 +793,14 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ]
"nixpkgs-stable": "nixpkgs-stable_3"
}, },
"locked": { "locked": {
"lastModified": 1729587807, "lastModified": 1750119275,
"narHash": "sha256-YOc4033a/j1TbdLfkaSOSX2SrvlmuM+enIFoveNTCz4=", "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "26642e8f193f547e72d38cd4c0c4e45b49236d27", "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -864,21 +854,6 @@
"type": "github" "type": "github"
} }
}, },
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"xdph": { "xdph": {
"inputs": { "inputs": {
"hyprland-protocols": [ "hyprland-protocols": [
@@ -907,11 +882,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728166987, "lastModified": 1750372504,
"narHash": "sha256-w6dVTguAn9zJ+7aPOhBQgDz8bn6YZ7b56cY8Kg5HJRI=", "narHash": "sha256-VBeZb1oqZM1cqCAZnFz/WyYhO8aF/ImagI7WWg/Z3Og=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "fb9c8d665af0588bb087f97d0f673ddf0d501787", "rev": "400308fc4f9d12e0a93e483c2e7a649e12af1a92",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -922,16 +897,16 @@
}, },
"yazi": { "yazi": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_5",
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {
"lastModified": 1729473414, "lastModified": 1750515839,
"narHash": "sha256-ffiEVFCUMnShcSa4hvCbT1EQeu7c2lVOk6OdaxjiUmU=", "narHash": "sha256-I3FdBExb2eaLVD76Vkl9TFy/snKrE+od0x6vtTMcqXc=",
"owner": "sxyazi", "owner": "sxyazi",
"repo": "yazi", "repo": "yazi",
"rev": "0e118b5b3a5baacf7fe62971e2bfe2b0ad972bab", "rev": "3a9591a3d9d8f4c9fb990274e967bdef89177d14",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -939,24 +914,6 @@
"repo": "yazi", "repo": "yazi",
"type": "github" "type": "github"
} }
},
"zen-browser": {
"inputs": {
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1727721329,
"narHash": "sha256-QYlWZwUSwrM7BuO+dXclZIwoPvBIuJr6GpFKv9XKFPI=",
"owner": "MarceColl",
"repo": "zen-browser-flake",
"rev": "e6ab73f405e9a2896cce5956c549a9cc359e5fcc",
"type": "github"
},
"original": {
"owner": "MarceColl",
"repo": "zen-browser-flake",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

90
flake.nix Executable file → Normal file
View File

@@ -2,70 +2,96 @@
description = "Multisystem NixOS Flake of Lennart J. Kurzweg"; description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
inputs = { inputs = {
nixpkgs = { url = "nixpkgs/nixos-24.05"; }; nixpkgs = { url = "nixpkgs/nixos-25.05"; };
nixpkgs-unstable = { url = "nixpkgs/nixos-unstable"; }; nixpkgs-unstable = { url = "nixpkgs/nixos-unstable"; };
nixpkgs-latest = { url = "github:nixos/nixpkgs?ref=master"; }; nixpkgs-latest = { url = "github:nixos/nixpkgs?ref=master"; };
home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; };
home-manager = { url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; };
nixos-wsl = { url = "github:nix-community/NixOS-WSL/main"; };
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; }; lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.2"; };
hyprland = { url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; }; hyprland = { url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; };
hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; }; hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; };
Hyprspace = { url = "github:KZDKM/Hyprspace"; inputs.hyprland.follows = "hyprland"; }; hyprspace = { url = "github:KZDKM/Hyprspace"; inputs.hyprland.follows = "hyprland"; };
hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
# firefox-addons = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; inputs.nixpkgs.follows = "nixpkgs"; }; yazi = { url = "github:sxyazi/yazi"; };
yazi.url = "github:sxyazi/yazi";
zen-browser.url = "github:MarceColl/zen-browser-flake";
}; };
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-latest, home-manager, ... }@inputs: let outputs = { ... }@inputs: with inputs; let
system = "x86_64-linux"; system = "x86_64-linux";
config = { allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
hyper-base = rec {
inherit system;
user = "nx2"; user = "nx2";
domain = "nx2.site"; domain = "nx2.site";
home = "/home/${user}/";
webroot = "/var/lib/hugo/nx2site/public";
pkgs-version = "25.05";
};
config = { allowUnfree = true; allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; }; pkgs = import nixpkgs {
inherit system config;
overlays = [
(final: prev: {
unstable = import nixpkgs-unstable { inherit system config; };
latest = import nixpkgs-latest { inherit system config; };
version = "25.05";
})
];
};
pkgs = import nixpkgs { inherit system config; }; nvidia-base = import ./flake-modules/nvidia.nix;
pkgs-unstable = import nixpkgs-unstable { inherit system config; };
pkgs-latest = import nixpkgs-latest { inherit system config; };
nvidia-set = import ./flake-modules/nvidia.nix;
secrets = import ./git-crypt/secrets.nix; secrets = import ./git-crypt/secrets.nix;
rice = import ./flake-modules/rice.nix pkgs; rice = import ./flake-modules/rice.nix pkgs;
in { in {
nixosConfigurations = let nixosConfigurations = let
make-nixos-system = host: nixpkgs.lib.nixosSystem { make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
inherit system; inherit pkgs;
modules = [ ./configuration.nix ]; modules = [ ./configuration.nix ];
specialArgs = let specialArgs = let
nvidia = nvidia-set // { hyper = hyper-base // { inherit host; nvidia = (nvidia-base // nvidia-settings); };
enable = if (host == "NxXPS" || host == "NxNORTH") then true else false; in { inherit inputs hyper rice secrets; };
prime = if (host == "NxXPS") then true else false;
}; };
in { inherit inputs user host domain pkgs-unstable pkgs-latest secrets rice nvidia; }; make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
inherit pkgs;
modules = [ ./nixos-wsl.nix ];
specialArgs = let
hyper = hyper-base // { inherit host; };
in { inherit inputs hyper rice; };
}; };
in { in {
NxXPS = make-nixos-system "NxXPS"; NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; };
NxNORTH = make-nixos-system "NxNORTH"; NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; };
NxACE = make-nixos-system "NxACE"; NxACE = make-nixos-system "NxACE" { enable = false; };
NxWSL = make-nixos-wsl-system "NxWSL";
}; };
homeConfigurations = let homeConfigurations = let
make-home-configuration = host: user: home-manager.lib.homeManagerConfiguration { make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
modules = [ ./home.nix ]; modules = [ ./home.nix ];
extraSpecialArgs = let extraSpecialArgs = let
nvidia = nvidia-set // { hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
enable = if (host == "NxXPS" || host == "NxNORTH") then true else false; in { inherit pkgs inputs hyper rice secrets; };
prime = if (host == "NxXPS") then true else false;
}; };
in { inherit inputs system user host domain pkgs-unstable pkgs-latest rice secrets nvidia; }; make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [ ./shell-only.nix ];
extraSpecialArgs = let
hyper = hyper-base // { inherit host; };
in { inherit pkgs inputs hyper rice secrets; };
}; };
in { in {
"${user}@NxXPS" = make-home-configuration "NxXPS" user; "${hyper-base.user}@NxXPS" = make-home-configuration "NxXPS" hyper-base.user { enable = true; prime = true; };
"${user}@NxNORTH" = make-home-configuration "NxNORTH" user; "${hyper-base.user}@NxNORTH" = make-home-configuration "NxNORTH" hyper-base.user { enable = true; prime = false; };
"${user}@NxACE" = make-home-configuration "NxACE" user; "${hyper-base.user}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; };
"${hyper-base.user}@NxWSL" = make-shell-configuration "NxWSL" hyper-base.user;
}; };
}; };
} }

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

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

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

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

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

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

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

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

Binary file not shown.

View File

View File

View File

View File

View File

View File

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

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

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

View File

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

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

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

860
home-modules/chatterino.nix Executable file → Normal file
View File

@@ -1,51 +1,32 @@
{ pkgs, lib, rice, user, secrets, ... }: { pkgs, ... }@all: with all;
let let
channels = [ channels = [
"Caedrel" "Caedrel"
"NoWay4u_Sir" # "agurin"
"zackrawrr" # "asmongold"
"agurin"
"asmongold"
"Broeki"
"Broxah"
# "Caedrel" # "Caedrel"
"chrissyofficial" # "EintrachtSpandau"
"EintrachtSpandau"
"GamesDoneQuick" "GamesDoneQuick"
"gdolphn" "gdolphn"
"GRONKH" "GRONKH"
"handofblood" "handofblood"
"HisWattson" "HisWattson"
"imls"
"iskall85"
"Jankos" "Jankos"
"Karni" # "KuruHS"
"KuruHS"
"kutcherlol"
"LCK"
"LCS"
"LEC" "LEC"
"lol_nemesis" "lol_nemesis"
"loltyler1" # "NASA"
"LPL" "NoWay4u_Sir"
"maxim"
"NASA"
"NNOPrime"
# "NoWay4u_Sir"
"OfficialMikeShinoda" "OfficialMikeShinoda"
"ow_esports"
"PrimeGaming"
"PrimeLeague"
"Rekkles" "Rekkles"
"riotgames" "riotgames"
"Sola" "thebausffs"
"ThePrimeagen" "ThePrimeagen"
"Tolkin" "Tolkin"
"Trick2g" # "TSM_ImperialHal"
"TSM_ImperialHal" "velja_lol"
"Xisuma" # "Xisuma"
# "zackrawrr" "zackrawrr"
]; ];
tabber = channel-name: { tabber = channel-name: {
highlightsEnabled = true; highlightsEnabled = true;
@@ -62,10 +43,16 @@ let
}; };
}; };
in { in {
sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; };
home = { home = {
packages = with pkgs; [ chatterino2 ]; packages = with pkgs; [
chatterino2
streamlink
mpv
];
file = { file = {
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; '' ".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
{ {
"accounts": { "accounts": {
"current": "${username}", "current": "${username}",
@@ -95,10 +82,8 @@ in {
"showUptime": true, "showUptime": true,
"showViewerCount": true "showViewerCount": true
}, },
"tabVisibility": 1, "tabVisibility": 0,
"theme": { "theme": { "name": "nxtheme.json" }
"name": "Black"
}
}, },
"behaviour": { "behaviour": {
"pauseOnHoverDuration": 5.0, "pauseOnHoverDuration": 5.0,
@@ -112,615 +97,87 @@ in {
}, },
"highlighting": { "highlighting": {
"badges": [ "badges": [
{ { "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" },
"alert": false, { "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" },
"color": "#7f7f3f49", { "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" },
"displayName": "Broadcaster", { "alert": false, "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
"name": "broadcaster", { "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" }
"showInMentions": false,
"sound": false,
"soundUrl": ""
},
{
"alert": false,
"color": "#7f7f3f49",
"displayName": "Admin",
"name": "admin",
"showInMentions": false,
"sound": false,
"soundUrl": ""
},
{
"alert": false,
"color": "#7f7f3f49",
"displayName": "Staff",
"name": "staff",
"showInMentions": false,
"sound": false,
"soundUrl": ""
},
{
"alert": false,
"displayName": "Moderator",
"name": "moderator",
"showInMentions": false,
"sound": false,
"soundUrl": ""
},
{
"alert": false,
"color": "#7f7f3578",
"displayName": "VIP",
"name": "vip",
"showInMentions": false,
"sound": false,
"soundUrl": ""
}
], ],
"selfMessageHighlight": { "selfMessageHighlight": { "color": "#73008cff", "enabled": true }
"color": "#73008cff",
"enabled": true
}
}, },
"hotkeys": { "hotkeys": {
"addedDefaults": [ "addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
"change channel",
"close popup window", "change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" },
"create clip", "close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
"delete", "create clip": { "action": "createClip", "arguments": [], "category": "split", "keySequence": "Alt+X" },
"emote picker", "delete": { "action": "delete", "arguments": [], "category": "split", "keySequence": "Ctrl+W" },
"focus down", "emote picker": { "action": "openEmotesPopup", "arguments": [], "category": "splitInput", "keySequence": "Ctrl+E" },
"focus left", "focus down": { "action": "focus", "arguments": [ "down" ], "category": "split", "keySequence": "Alt+Down" },
"focus right", "focus left": { "action": "focus", "arguments": [ "left" ], "category": "split", "keySequence": "Alt+Left" },
"focus up", "focus right": { "action": "focus", "arguments": [ "right" ], "category": "split", "keySequence": "Alt+Right" },
"go to end of input", "focus up": { "action": "focus", "arguments": [ "up" ], "category": "split", "keySequence": "Alt+Up" },
"go to end of input with selection", "go to end of input": { "action": "cursorToEnd", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "End" },
"go to start of input", "go to end of input with selection": { "action": "cursorToEnd", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+End" },
"go to start of input with selection", "go to start of input": { "action": "cursorToStart", "arguments": [ "withoutSelection" ], "category": "splitInput", "keySequence": "Home" },
"new popup window", "go to start of input with selection": { "action": "cursorToStart", "arguments": [ "withSelection" ], "category": "splitInput", "keySequence": "Shift+Home" },
"new popup window from tab", "new popup window": { "action": "popup", "arguments": [ "split" ], "category": "window", "keySequence": "Ctrl+N" },
"new split", "new popup window from tab": { "action": "popup", "arguments": [ "window" ], "category": "window", "keySequence": "Ctrl+Shift+N" },
"new tab", "new split": { "action": "newSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+T" },
"next message", "new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" },
"open debug popup", "next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" },
"open quick switcher", "open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" },
"open settings", "open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" },
"popup accept", "open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" },
"popup focus search box", "popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" },
"popup reject", "popup focus search box": { "action": "search", "arguments": [], "category": "popupWindow", "keySequence": "Ctrl+F" },
"popup scroll down", "popup reject": { "action": "reject", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
"popup scroll up", "popup scroll down": { "action": "scrollPage", "arguments": [ "down" ], "category": "popupWindow", "keySequence": "PgDown" },
"popup select last tab", "popup scroll up": { "action": "scrollPage", "arguments": [ "up" ], "category": "popupWindow", "keySequence": "PgUp" },
"popup select next tab", "popup select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "popupWindow", "keySequence": "Ctrl+9" },
"popup select previous tab", "popup select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "popupWindow", "keySequence": "Ctrl+Tab" },
"popup select tab #1", "popup select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "popupWindow", "keySequence": "Ctrl+Shift+Tab" },
"popup select tab #2", "popup select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "popupWindow", "keySequence": "Ctrl+1" },
"popup select tab #3", "popup select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "popupWindow", "keySequence": "Ctrl+2" },
"popup select tab #4", "popup select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "popupWindow", "keySequence": "Ctrl+3" },
"popup select tab #5", "popup select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "popupWindow", "keySequence": "Ctrl+4" },
"popup select tab #6", "popup select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "popupWindow", "keySequence": "Ctrl+5" },
"popup select tab #7", "popup select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "popupWindow", "keySequence": "Ctrl+6" },
"popup select tab #8", "popup select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "popupWindow", "keySequence": "Ctrl+7" },
"previous message", "popup select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "popupWindow", "keySequence": "Ctrl+8" },
"reconnect", "previous message": { "action": "previousMessage", "arguments": [], "category": "splitInput", "keySequence": "Up" },
"reload emotes", "reconnect": { "action": "reconnect", "arguments": [], "category": "split", "keySequence": "Ctrl+F5" },
"remove tab", "reload emotes": { "action": "reloadEmotes", "arguments": [], "category": "split", "keySequence": "F5" },
"reopen split", "remove tab": { "action": "removeTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+W" },
"scroll page down", "reopen split": { "action": "reopenSplit", "arguments": [], "category": "window", "keySequence": "Ctrl+G" },
"scroll page up", "scroll page down": { "action": "scrollPage", "arguments": [ "down" ], "category": "split", "keySequence": "PgDown" },
"scroll to bottom", "scroll page up": { "action": "scrollPage", "arguments": [ "up" ], "category": "split", "keySequence": "PgUp" },
"scroll to top", "scroll to bottom": { "action": "scrollToBottom", "arguments": [], "category": "split", "keySequence": "Ctrl+End" },
"select last tab", "scroll to top": { "action": "scrollToTop", "arguments": [], "category": "split", "keySequence": "Ctrl+Home" },
"select next tab", "select last tab": { "action": "openTab", "arguments": [ "last" ], "category": "window", "keySequence": "Ctrl+9" },
"select previous tab", "select next tab": { "action": "openTab", "arguments": [ "next" ], "category": "window", "keySequence": "Ctrl+Tab" },
"select tab #1", "select previous tab": { "action": "openTab", "arguments": [ "previous" ], "category": "window", "keySequence": "Ctrl+Shift+Tab" },
"select tab #2", "select tab #1": { "action": "openTab", "arguments": [ "0" ], "category": "window", "keySequence": "Ctrl+1" },
"select tab #3", "select tab #2": { "action": "openTab", "arguments": [ "1" ], "category": "window", "keySequence": "Ctrl+2" },
"select tab #4", "select tab #3": { "action": "openTab", "arguments": [ "2" ], "category": "window", "keySequence": "Ctrl+3" },
"select tab #5", "select tab #4": { "action": "openTab", "arguments": [ "3" ], "category": "window", "keySequence": "Ctrl+4" },
"select tab #6", "select tab #5": { "action": "openTab", "arguments": [ "4" ], "category": "window", "keySequence": "Ctrl+5" },
"select tab #7", "select tab #6": { "action": "openTab", "arguments": [ "5" ], "category": "window", "keySequence": "Ctrl+6" },
"select tab #8", "select tab #7": { "action": "openTab", "arguments": [ "6" ], "category": "window", "keySequence": "Ctrl+7" },
"send message", "select tab #8": { "action": "openTab", "arguments": [ "7" ], "category": "window", "keySequence": "Ctrl+8" },
"send message and keep text", "send message": { "action": "sendMessage", "arguments": [], "category": "splitInput", "keySequence": "Return" },
"show global search", "send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" },
"show search", "show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" },
"toggle live tabs only", "show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" },
"toggle local r9k", "toggle live tabs only": { "action": "setTabVisibility", "arguments": [ "toggleLiveOnly" ], "category": "window", "keySequence": "Ctrl+Shift+L" },
"toggle tab visibility", "toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" },
"zoom in", "toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" },
"zoom out", "zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" },
"zoom reset" "zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" },
], "zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" }
"change channel": {
"action": "changeChannel",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+R"
},
"close popup window": {
"action": "delete",
"arguments": [],
"category": "popupWindow",
"keySequence": "Esc"
},
"create clip": {
"action": "createClip",
"arguments": [],
"category": "split",
"keySequence": "Alt+X"
},
"delete": {
"action": "delete",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+W"
},
"emote picker": {
"action": "openEmotesPopup",
"arguments": [],
"category": "splitInput",
"keySequence": "Ctrl+E"
},
"focus down": {
"action": "focus",
"arguments": [
"down"
],
"category": "split",
"keySequence": "Alt+Down"
},
"focus left": {
"action": "focus",
"arguments": [
"left"
],
"category": "split",
"keySequence": "Alt+Left"
},
"focus right": {
"action": "focus",
"arguments": [
"right"
],
"category": "split",
"keySequence": "Alt+Right"
},
"focus up": {
"action": "focus",
"arguments": [
"up"
],
"category": "split",
"keySequence": "Alt+Up"
},
"go to end of input": {
"action": "cursorToEnd",
"arguments": [
"withoutSelection"
],
"category": "splitInput",
"keySequence": "End"
},
"go to end of input with selection": {
"action": "cursorToEnd",
"arguments": [
"withSelection"
],
"category": "splitInput",
"keySequence": "Shift+End"
},
"go to start of input": {
"action": "cursorToStart",
"arguments": [
"withoutSelection"
],
"category": "splitInput",
"keySequence": "Home"
},
"go to start of input with selection": {
"action": "cursorToStart",
"arguments": [
"withSelection"
],
"category": "splitInput",
"keySequence": "Shift+Home"
},
"new popup window": {
"action": "popup",
"arguments": [
"split"
],
"category": "window",
"keySequence": "Ctrl+N"
},
"new popup window from tab": {
"action": "popup",
"arguments": [
"window"
],
"category": "window",
"keySequence": "Ctrl+Shift+N"
},
"new split": {
"action": "newSplit",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+T"
},
"new tab": {
"action": "newTab",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+Shift+T"
},
"next message": {
"action": "nextMessage",
"arguments": [],
"category": "splitInput",
"keySequence": "Down"
},
"open debug popup": {
"action": "debug",
"arguments": [],
"category": "split",
"keySequence": "F10"
},
"open quick switcher": {
"action": "openQuickSwitcher",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+K"
},
"open settings": {
"action": "openSettings",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+P"
},
"popup accept": {
"action": "accept",
"arguments": [],
"category": "popupWindow",
"keySequence": "Return"
},
"popup focus search box": {
"action": "search",
"arguments": [],
"category": "popupWindow",
"keySequence": "Ctrl+F"
},
"popup reject": {
"action": "reject",
"arguments": [],
"category": "popupWindow",
"keySequence": "Esc"
},
"popup scroll down": {
"action": "scrollPage",
"arguments": [
"down"
],
"category": "popupWindow",
"keySequence": "PgDown"
},
"popup scroll up": {
"action": "scrollPage",
"arguments": [
"up"
],
"category": "popupWindow",
"keySequence": "PgUp"
},
"popup select last tab": {
"action": "openTab",
"arguments": [
"last"
],
"category": "popupWindow",
"keySequence": "Ctrl+9"
},
"popup select next tab": {
"action": "openTab",
"arguments": [
"next"
],
"category": "popupWindow",
"keySequence": "Ctrl+Tab"
},
"popup select previous tab": {
"action": "openTab",
"arguments": [
"previous"
],
"category": "popupWindow",
"keySequence": "Ctrl+Shift+Tab"
},
"popup select tab #1": {
"action": "openTab",
"arguments": [
"0"
],
"category": "popupWindow",
"keySequence": "Ctrl+1"
},
"popup select tab #2": {
"action": "openTab",
"arguments": [
"1"
],
"category": "popupWindow",
"keySequence": "Ctrl+2"
},
"popup select tab #3": {
"action": "openTab",
"arguments": [
"2"
],
"category": "popupWindow",
"keySequence": "Ctrl+3"
},
"popup select tab #4": {
"action": "openTab",
"arguments": [
"3"
],
"category": "popupWindow",
"keySequence": "Ctrl+4"
},
"popup select tab #5": {
"action": "openTab",
"arguments": [
"4"
],
"category": "popupWindow",
"keySequence": "Ctrl+5"
},
"popup select tab #6": {
"action": "openTab",
"arguments": [
"5"
],
"category": "popupWindow",
"keySequence": "Ctrl+6"
},
"popup select tab #7": {
"action": "openTab",
"arguments": [
"6"
],
"category": "popupWindow",
"keySequence": "Ctrl+7"
},
"popup select tab #8": {
"action": "openTab",
"arguments": [
"7"
],
"category": "popupWindow",
"keySequence": "Ctrl+8"
},
"previous message": {
"action": "previousMessage",
"arguments": [],
"category": "splitInput",
"keySequence": "Up"
},
"reconnect": {
"action": "reconnect",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+F5"
},
"reload emotes": {
"action": "reloadEmotes",
"arguments": [],
"category": "split",
"keySequence": "F5"
},
"remove tab": {
"action": "removeTab",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+Shift+W"
},
"reopen split": {
"action": "reopenSplit",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+G"
},
"scroll page down": {
"action": "scrollPage",
"arguments": [
"down"
],
"category": "split",
"keySequence": "PgDown"
},
"scroll page up": {
"action": "scrollPage",
"arguments": [
"up"
],
"category": "split",
"keySequence": "PgUp"
},
"scroll to bottom": {
"action": "scrollToBottom",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+End"
},
"scroll to top": {
"action": "scrollToTop",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+Home"
},
"select last tab": {
"action": "openTab",
"arguments": [
"last"
],
"category": "window",
"keySequence": "Ctrl+9"
},
"select next tab": {
"action": "openTab",
"arguments": [
"next"
],
"category": "window",
"keySequence": "Ctrl+Tab"
},
"select previous tab": {
"action": "openTab",
"arguments": [
"previous"
],
"category": "window",
"keySequence": "Ctrl+Shift+Tab"
},
"select tab #1": {
"action": "openTab",
"arguments": [
"0"
],
"category": "window",
"keySequence": "Ctrl+1"
},
"select tab #2": {
"action": "openTab",
"arguments": [
"1"
],
"category": "window",
"keySequence": "Ctrl+2"
},
"select tab #3": {
"action": "openTab",
"arguments": [
"2"
],
"category": "window",
"keySequence": "Ctrl+3"
},
"select tab #4": {
"action": "openTab",
"arguments": [
"3"
],
"category": "window",
"keySequence": "Ctrl+4"
},
"select tab #5": {
"action": "openTab",
"arguments": [
"4"
],
"category": "window",
"keySequence": "Ctrl+5"
},
"select tab #6": {
"action": "openTab",
"arguments": [
"5"
],
"category": "window",
"keySequence": "Ctrl+6"
},
"select tab #7": {
"action": "openTab",
"arguments": [
"6"
],
"category": "window",
"keySequence": "Ctrl+7"
},
"select tab #8": {
"action": "openTab",
"arguments": [
"7"
],
"category": "window",
"keySequence": "Ctrl+8"
},
"send message": {
"action": "sendMessage",
"arguments": [],
"category": "splitInput",
"keySequence": "Return"
},
"send message and keep text": {
"action": "sendMessage",
"arguments": [
"keepInput"
],
"category": "splitInput",
"keySequence": "Ctrl+Return"
},
"show global search": {
"action": "showGlobalSearch",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+Shift+F"
},
"show search": {
"action": "showSearch",
"arguments": [],
"category": "split",
"keySequence": "Ctrl+F"
},
"toggle live tabs only": {
"action": "setTabVisibility",
"arguments": [
"toggleLiveOnly"
],
"category": "window",
"keySequence": "Ctrl+Shift+L"
},
"toggle local r9k": {
"action": "toggleLocalR9K",
"arguments": [],
"category": "window",
"keySequence": "Ctrl+H"
},
"toggle tab visibility": {
"action": "setTabVisibility",
"arguments": [
"toggle"
],
"category": "window",
"keySequence": "Ctrl+U"
},
"zoom in": {
"action": "zoom",
"arguments": [
"in"
],
"category": "window",
"keySequence": "Ctrl++"
},
"zoom out": {
"action": "zoom",
"arguments": [
"out"
],
"category": "window",
"keySequence": "Ctrl+-"
},
"zoom reset": {
"action": "zoom",
"arguments": [
"reset"
],
"category": "window",
"keySequence": "Ctrl+0"
}
}, },
"misc": { "misc": {
"currentVersion": "2.5.1", "currentVersion": "2.5.3",
"lockNotebookLayout": false "lockNotebookLayout": false
}, },
"similarity": { "similarity": {
@@ -732,12 +189,17 @@ in {
"ui": { "ui": {
"lastSelectChannelTab": 0, "lastSelectChannelTab": 0,
"lastSelectIrcConn": -1 "lastSelectIrcConn": -1
},
"external": {
"streamlink": {
"quality": "",
"options": "--config ${hyper.home}/.config/streamlink/config"
}
} }
} }
''; '';
".local/share/chatterino/Settings/window-layout.json".text = builtins.toJSON { ".local/share/chatterino/Settings/window-layout.json".text = builtins.toJSON {
windows = [ windows = [{
{
emotePopup = { emotePopup = {
x = 0; x = 0;
y = 0; y = 0;
@@ -749,9 +211,117 @@ in {
width = 943; width = 943;
x = 0; x = 0;
y = 0; y = 0;
} }];
];
}; };
".local/share/chatterino/Themes/nxtheme.json".text = with rice.color; let
# tr = builtins.toString (rice.lib.float-to-drune rice.transparency);
nh = rice.lib.nohash;
in /* json */ ''
{
"colors": {
"accent": "${accent.base}",
"messages": {
"backgrounds": {
"alternate": "${rice.lib.alter-luminace-hex accent.dark (-0.2)}",
"regular": "${background}"
},
"disabled": "#99000000",
"highlightAnimationEnd": "#00e6e6e6",
"highlightAnimationStart": "#6ee6e6e6",
"selection": "#40ffffff",
"textColors": {
"caret": "#ffffff",
"chatPlaceholder": "#5d5555",
"link": "#4286f4",
"regular": "#ffffff",
"system": "#8c7f7f"
}
},
"scrollbars": {
"background": "#00000000",
"thumb": "${secondary.dark}",
"thumbSelected": "${secondary.base}"
},
"splits": {
"background": "${background}",
"dropPreview": "#300094ff",
"dropPreviewBorder": "${border}",
"dropTargetRect": "${background}",
"dropTargetRectBorder": "${border2}",
"header": {
"background": "${background}", "focusedBackground": "${accent.dark}",
"border": "${background}", "focusedBorder": "${secondary.base}",
"text": "${tertiary.base}", "focusedText": "${tertiary.bright}"
},
"input": {
"background": "${background}",
"text": "${foreground}"
},
"messageSeperator": "${accent.dark}",
"resizeHandle": "#70${nh accent.base}",
"resizeHandleBackground": "#20${nh secondary.dark}"
},
"tabs": {
"liveIndicator": "${special.base}",
"rerunIndicator": "${accent.base}",
"dividerLine": "${background}",
"highlighted": {
"backgrounds": { "hover": "${accent.dark}", "regular": "${secondary.dark}", "unfocused": "${black.dark}" },
"line": { "hover": "${secondary.base}", "regular": "${accent.base}", "unfocused": "${accent.dark}" },
"text": "${accent.base}"
},
"newMessage": {
"backgrounds": { "hover": "${accent.dark}", "regular": "${secondary.dark}", "unfocused": "${black.dark}" },
"line": { "hover": "${secondary.base}", "regular": "${accent.base}", "unfocused": "${accent.dark}" },
"text": "${accent.base}"
},
"regular": {
"backgrounds": { "hover": "${accent.dark}", "regular": "${background}", "unfocused": "${background}" },
"line": { "hover": "${secondary.base}", "regular": "${accent.dark}", "unfocused": "${background}" },
"text": "${accent.base}"
},
"selected": {
"backgrounds": { "hover": "${accent.dark}", "regular": "${secondary.dark}", "unfocused": "${secondary.dark}" },
"line": { "hover": "${accent.bright}", "regular": "${accent.base}", "unfocused": "${accent.dark}" },
"text": "${foreground}"
}
},
"window": {
"background": "${background}",
"text": "${foreground}"
}
},
"metadata": {
"iconTheme": "light"
},
"ctcMeta": {
"name": "nxtheme",
"createdAt": "1970-01-01T00:00:00Z",
"modifiedAt": "1970-01-01T00:00:00Z",
"simpleTabSettings": false,
"checkeredRow": true,
"messageSeparator": false
}
}
'';
".local/share/chatterino/Settings/commands.json".text = ''
{
"commands": [
{
"name": "/sl",
"func": "/streamlink",
"showInMsgContextMenu": false
}
]
}
'';
".config/streamlink/config".text = ''
twitch-api-header=Authorization=OAuth='$(cat ${config.sops.secrets."streamlink/twitch-oauth".path})'
player=mpv
player-args='--no-terminal'
twitch-low-latency
default-stream=best
'';
}; };
}; };
} }

View File

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

View File

@@ -5,17 +5,18 @@
<div class="color-container" style="border-color: ${color-set.base}"> <div class="color-container" style="border-color: ${color-set.base}">
<div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.bright}"> ${color-name}.dark </p> <p style="color: ${color-set.bright}"> ${color-name}.dark </p>
<p style="color: ${color-set.bright}"> ${color-set.dark} </p>
</div> </div>
<div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
<p class="dynamic-text"> ${color-name}.base </p> <p class="dynamic-text"> ${color-name}.base </p>
<p class="dynamic-text"> ${color-set.base} </p>
</div> </div>
<div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.dark}"> ${color-name}.bright </p> <p style="color: ${color-set.dark}"> ${color-name}.bright </p>
<p style="color: ${color-set.dark}"> ${color-set.bright} </p>
</div> </div>
</div> </div>
''; '';
in /* html */ '' in /* html */ ''
<!DOCTYPE html> <!DOCTYPE html>
<head> <head>
@@ -37,7 +38,7 @@
color: ${foreground}; color: ${foreground};
width: fit-content; width: fit-content;
margin: 10px auto 10px auto; margin: 10px auto 10px auto;
background: ${background}; background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
border: ${builtins.toString rice.border-width}px solid ${border}; border: ${builtins.toString rice.border-width}px solid ${border};
border-radius: ${builtins.toString rice.rounding}px; border-radius: ${builtins.toString rice.rounding}px;
padding: ${builtins.toString rice.gap-size}px; padding: ${builtins.toString rice.gap-size}px;
@@ -46,7 +47,7 @@
margin: ${builtins.toString rice.gap-size}px; margin: ${builtins.toString rice.gap-size}px;
} }
.color-container { .color-container {
font-family: ${rice.font.code.name2}; font-family: ${rice.font.code.name};
display: flex; display: flex;
gap: ${builtins.toString rice.gap-size}px; gap: ${builtins.toString rice.gap-size}px;
margin: ${builtins.toString rice.gap-size}px; margin: ${builtins.toString rice.gap-size}px;
@@ -66,18 +67,20 @@
${cb accent "accent" 100} ${cb accent "accent" 100}
${cb secondary "secondary" 100} ${cb secondary "secondary" 100}
${cb tertiary "tertiary" 100} ${cb tertiary "tertiary" 100}
${cb weird "weird" 75} ${cb weird "weird" 100}
${cb special "special" 75} ${cb special "special" 100}
${cb positive "positive" 30} <br>
${cb negative "negative" 30} ${cb positive "positive" 70}
${cb black "black" 25} ${cb negative "negative" 70}
${cb white "white" 25} <br>
${cb blue "blue" 25} ${cb black "black" 50}
${cb cyan "cyan" 25} ${cb white "white" 50}
${cb green "green" 25} ${cb blue "blue" 50}
${cb magenta "magenta" 25} ${cb cyan "cyan" 50}
${cb red "red" 25} ${cb green "green" 50}
${cb yellow "yellow" 25} ${cb magenta "magenta" 50}
${cb red "red" 50}
${cb yellow "yellow" 50}
</body> </body>
<script> <script>
function getLuminance(color) { function getLuminance(color) {

2
home-modules/direnv.nix Executable file → Normal file
View File

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

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

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

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

@@ -1,27 +1,19 @@
{ pkgs, lib, host, user, rice, secrets, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE") lib.mkIf (hyper.host != "NxACE")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
thunderbird thunderbird
]; ];
programs.thunderbird = let programs.thunderbird = let
inherit (lib.generators) toJSON; inherit (lib.generators) toJSON;
extensions = toJSON {} { extensions = toJSON {} {
"default-theme@mozilla.org" = "5787f490-29b8-436e-a111-640da8590790";
"google@search.mozilla.org" = "cc340383-7068-4b32-a10f-9f19334bfebc";
"ddg@search.mozilla.org" = "0c340210-f7ab-48e8-9778-600ed5d00160";
"amazondotcom@search.mozilla.org" = "881d8fdf-5772-4e33-81ff-faac2d1fa92c";
"wikipedia@search.mozilla.org" = "7ea3d39d-3eea-430f-9bd7-f902d8124d45";
"bing@search.mozilla.org" = "f480cce8-68af-4082-908e-f8996153352b";
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d"; "addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
"lightningcalendartabs@jlx.84" = "12d48e41-412e-4d09-835a-fa6fb8c180eb";
}; };
in { in {
enable = true; enable = true;
profiles = { profiles = {
"${user}" = { "${hyper.user}" = {
isDefault = true; isDefault = true;
settings = with rice.color; { settings = with rice.color; {
"calendar.alarms.showmissed" = false; "calendar.alarms.showmissed" = false;
@@ -49,12 +41,46 @@ lib.mkIf (host != "NxACE")
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
}; };
userChrome = with rice.color; /* css */ '' userChrome = with rice.color; /* css */ ''
* { body,
color: ${rice.lib.hex-to-rgb-comma-string foreground} !important; #navigation-toolbox,
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; #calendarContent,
#calSidebar,
#tabpanelcontainer,
#spacesToolbar,
#tabs-toolbar,
#calMinimonth,
#primaryButtonSidePanel *,
.minimonth-week,
.multiday-header-corner, .day-column-heading, calendar-header-container, calendar-event-column, .multiday-hour-box,
#view-box,
#tabs-toolbar,
#status-bar,
.calview-toggle,
#calview-toggle-item,
#folderPaneHeaderBar,
#folderPane,
#threadPaneHeaderBar,
#threadTree,
#tabs-toolbar {
color: ${foreground} !important;
font-family: ${rice.font.base.name} !important;
background-color: transparent !important;
background-image: none !important;
border: none !important; border: none !important;
-moz-appearance: none !important;
} }
treechildren::-moz-tree-row(odd), treechildren::-moz-tree-row(even) { .minimonth-nav-section {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
border: ${builtins.toString rice.border-width}px solid ${border};
}
.button,
.button-primary,
.tab-content[selected] {
background-color: ${accent.base};
color: ${background};
background-image: none;
}
html {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important; background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
} }
''; '';
@@ -63,8 +89,7 @@ lib.mkIf (host != "NxACE")
}; };
accounts.email.accounts = accounts.email.accounts = let
let
OAuth2Settings = id: { OAuth2Settings = id: {
"mail.smtpserver.smtp_${id}.authMethod" = 10; "mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.server.server_${id}.authMethod" = 10; "mail.server.server_${id}.authMethod" = 10;

View File

@@ -1,11 +1,15 @@
# { pkgs-unstable, secrets, user, system, inputs, ...}: { pkgs, ... }@all: with all;
{ rice, user, ... }:
# browser.tabs.allow_transparent_browser # browser.tabs.allow_transparent_browser
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
{ {
home.file = with rice.color; let home = {
packages = with pkgs; [
firefox
];
file = with rice.color; let
blur = builtins.toString 20; blur = builtins.toString 20;
in { in {
".mozilla/firefox/${user}/chrome/userChrome.css".text = /* css */ '' ".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = /* css */ ''
:root{ :root{
/* Popup panels */ /* Popup panels */
--arrowpanel-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important; --arrowpanel-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
@@ -91,7 +95,7 @@
} }
''; '';
".mozilla/firefox/${user}/chrome/userContent.css".text = /* css */ '' ".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = /* css */ ''
/* Removes the white loading page */ /* Removes the white loading page */
/* url(about:newtab), url(about:home) */ /* url(about:newtab), url(about:home) */
@-moz-document url(about:blank) { @-moz-document url(about:blank) {
@@ -110,20 +114,14 @@
/* new-tab */ /* new-tab */
@-moz-document url-prefix(about:home), url-prefix(about:newtab) { @-moz-document url-prefix(about:home), url-prefix(about:newtab) {
:root{
--newtab-background-color-secondary: ${background} !important;
}
body, html { body, html {
background: transparent !important; background: transparent !important;
} }
} .tile, .search-handoff-button {
border: ${builtins.toString rice.border-width}px solid ${border} !important;
@-moz-document domain(youtube.com) {
#background, #chips-wrapper, ytd-mini-guide-entry-renderer {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
border: ${builtins.toString rice.border-width} solid ${border};
}
body, html, ytd-app, ytd-mini-guide-renderer, div#content-container, #guide-content.ytd-app, #guide-wrapper, div#contentContainer {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
} }
} }
@@ -140,7 +138,6 @@
@-moz-document domain(reddit.com) { @-moz-document domain(reddit.com) {
header { header {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important; background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(20px);
} }
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{ body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
background-color: transparent !important; background-color: transparent !important;
@@ -171,6 +168,24 @@
} }
} }
@media (prefers-color-scheme: dark) {
:root .theme-system {
--color-bg: transtparent !important;
--color-text: ${rice.color.foreground}
}
}
@-moz-document domain(developer.mozilla.org) {
html, body {
background-color: transparent !important;
}
.top-navigation, .article-actions-container {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(github.com) { @-moz-document domain(github.com) {
body, html, header, #repository-container-header, .bgColor-muted, section { body, html, header, #repository-container-header, .bgColor-muted, section {
background-color: transparent !important; background-color: transparent !important;
@@ -182,7 +197,8 @@
background-color: transparent !important; background-color: transparent !important;
} }
header, footer { header, footer {
background-color: rgba(0,0,0,0.5) !important; background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px; border-radius: ${builtins.toString rice.rounding}px;
} }
} }
@@ -196,13 +212,51 @@
} }
} }
@-moz-document domain(nx2.site) { @-moz-document url-prefix("https://nx2.site/") {
html { html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important; background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important; background-repeat: repeat !important;
background-size: 2vmin 2vmin !important; background-size: 2vmin 2vmin !important;
} }
} }
@-moz-document url-prefix("pw.nx2.site") {
html {
background: black;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
background-color: transparent !important;
}
.modal-open, .modal-header, form.modal-content, .modal-footer {
background-color: rgba(0,0,0,0.8) !important;
backdrop-filter: blur(5px);
}
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
background-color: rgba(0,0,0,0.8) !important;
border-radius: 10px !important;
border: ${toString rice.border-width}px solid ${border} !important;
}
}
@-moz-document domain(chatgpt.com) {
body, html , .bg-token-sidebar-surface-primary {
background-color: transparent !important;
}
.bg-token-main-surface-primary {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px) !important;
border-radius: ${builtins.toString rice.rounding}px !important;
}
}
''; '';
}; };
};
} }

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

@@ -1,4 +1,4 @@
{ pkgs, lib, rice, user, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
fish fish
@@ -17,18 +17,18 @@
TFM TFM
PROMPT PROMPT
" | lolcat --force) " | lolcat --force 2> /dev/null)
msg=" msg="
$(echo -e "$logo" | sed -n 3p): $(cat /etc/*-release | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev) $(echo -e "$logo" | sed -n 3p): $(cat /etc/*-release | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev)
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^} $(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
$(echo -e "$logo" | sed -n 5p): ''${TERM^} $(echo -e "$logo" | sed -n 5p): ''${TERM^}
$(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g') $(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g')
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev) $(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/')
$(echo -e "$logo" | sed -n 8p): ''$(uname -r) $(echo -e "$logo" | sed -n 8p): ''$(uname -r)
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g') $(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/')
$(echo -e "$logo" | sed -n 10p): $(yazi --version | yazi --version | sed -E 's-(.*?) \(.*-\1-g') $(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1) $(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
" "
echo -e "$msg" echo -e "$msg"
'') '')
@@ -38,14 +38,17 @@
programs.fish = { programs.fish = {
enable = true; enable = true;
shellAliases = { shellAliases = let
ls = "eza --icons --git --smart-group --group-directories-first"; base-eza = "eza --icons --git --smart-group --group-directories-first";
ll = "eza --icons --git --smart-group --group-directories-first --long"; in {
la = "eza --icons --git --smart-group --group-directories-first --all"; ls = "${base-eza}";
lla = "eza --icons --git --smart-group --group-directories-first --all --long"; ll = "${base-eza} --long";
lt = "eza --icons --git --smart-group --group-directories-first --long --tree"; lg = "${base-eza} --group --long";
ltd = "eza --icons --git --smart-group --group-directories-first --long --tree -D"; la = "${base-eza} --all";
lt2 = "eza --icons --git --smart-group --group-directories-first --long --tree -L 2"; lla = "${base-eza} --all --long";
lt = "${base-eza} --long --tree";
ltd = "${base-eza} --long --tree -D";
lt2 = "${base-eza} --long --tree -L 2";
sr = "sudo reboot"; sr = "sudo reboot";
nf = "neofetch"; nf = "neofetch";
nxf = "nxfetch"; nxf = "nxfetch";
@@ -80,28 +83,31 @@
lzd = "lazydocker"; lzd = "lazydocker";
d = "docker"; d = "docker";
dcmp = "docker compose"; dcmp = "docker compose";
stui = "sudo systemctl-tui";
# nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}''; # nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}'';
# ya = "yazi"; # function # ya = "yazi"; # function
# nxfiglet = "figlet"; # nxfiglet = "figlet";
}; };
interactiveShellInit = '' interactiveShellInit = /* fish */ ''
set -g fish_greeting set -g fish_greeting
if not set -q IN_NIX_SHELL if not set -q IN_NIX_SHELL
nxfetch
# yazi
if set -q SESSION_FROM_DE if set -q SESSION_FROM_DE
set -e SESSION_FROM_DE
set tmp (mktemp -t "yazi-cwd.XXXXX") set tmp (mktemp -t "yazi-cwd.XXXXX")
yazi $argv --cwd-file="$tmp" yazi --cwd-file="$tmp"
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ] if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
cd -- "$cwd" builtin cd -- "$cwd"
end end
rm -f -- "$tmp" rm -f -- "$tmp"
end end
nxfetch
end end
''; '';
functions = { functions = {
take = /* bash */ ''
mkdir $argv
cd $argv
'';
# gpg = ''; # gpg = '';
# set bold \e[1m # set bold \e[1m
# set green \e[32m # set green \e[32m

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

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

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

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

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

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

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

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

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

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

View File

@@ -1,14 +1,12 @@
{ pkgs, pkgs-unstable, ... }: { pkgs, ... }@all: with all;
{ {
# there also is a system module # there also is a system module
home.packages = (with pkgs; [ home.packages = with pkgs; [
gnupg gnupg
gpg-tui gpg-tui
]) ++ ( with pkgs-unstable; [
pinentry-all pinentry-all
]); ];
# services.pcscd.enable = true;
services.gpg-agent = let services.gpg-agent = let
min2sec = min: (min * 60); min2sec = min: (min * 60);
in { in {

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

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

View File

@@ -1,23 +1,24 @@
{ pkgs, pkgs-unstable,lib, rice, ... }: { pkgs, ... }@all: with all;
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
# nixfmt-classic # nix formater # nixfmt-classic # nix formater
# nil # nix language server # nil # nix language server
# nixd # specified in nixd.nix # nixd # specified in nixd.nix
gopls
delve
python311Packages.python-lsp-server python311Packages.python-lsp-server
jdt-language-server
ruff ruff
ruff-lsp
pyright pyright
lldb # debugger for llvm stuff lldb # debugger for llvm stuff
yaml-language-server # yaml yaml-language-server # yaml
marksman # markdown marksman # markdown
vale-ls # style-checker lsp (needs vale) vale-ls # style-checker lsp (needs vale)
ltex-ls # Ltex (language tool) ltex-ls # Ltex (language tool)
] ++ (with pkgs-unstable; [ vscode-langservers-extracted
bash-language-server bash-language-server
helix ];
]);
sessionVariables = { sessionVariables = {
EDITOR = "hx"; EDITOR = "hx";
VISUAL = "hx"; VISUAL = "hx";
@@ -26,57 +27,190 @@
programs.helix = { programs.helix = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
package = pkgs-unstable.helix; package = pkgs.unstable.helix;
settings = { settings = {
# theme = "base16_terminal"; # theme = "base16_terminal";
theme = "base16"; theme = "base16";
editor = { editor = {
scrolloff = 5;
mouse = true;
# default-yank-register = "\"";
middle-click-paste = false;
scroll-lines = 3;
shell = ["sh" "-c"];
line-number = "relative";
cursorline = true;
cursorcolumn = true;
# continue-comments = false;
auto-completion = true;
# path-completion = true;
auto-format = false;
idle-timeout = 250;
completion-timeout = 5;
preview-completion-insert = true;
completion-trigger-len = 1;
auto-info = true;
true-color = true; # is detected automatically if set to false
undercurl = false; # is detected automatically if set to false
rulers = [];
bufferline = "always";
color-modes = true;
text-width = 120;
workspace-lsp-roots = [];
default-line-ending = "native";
insert-final-newline = false;
popup-border = "all";
indent-heuristic = "hybrid";
jump-label-alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
# clip-board-provider = # selected automatically
# end-of-line-diagnostics = "hint";
statusline = {
left = [ "mode"
"spinner"
"file-name"
"read-only-indicator"
"file-type"
"version-control"
];
center = [
"position-percentage"
"total-line-numbers"
"register"
];
right = [
"spinner"
"diagnostics"
"selections"
"primary-selection-length"
"register"
"position"
"file-encoding"
];
# separator = " ";
mode = {
normal = "NORMAL";
insert = "INSERT";
select = "SELECT";
};
};
lsp = {
enable = true;
display-messages = false;
auto-signature-help = true;
display-inlay-hints = true;
};
cursor-shape = { cursor-shape = {
normal = "block"; normal = "block";
insert = "bar"; insert = "bar";
select = "underline"; select = "underline";
}; };
soft-wrap = { file-picker = {
enable = true; hidden = false; # Enables ignoring hidden files
follow-symlinks = true; # Follow symlinks instead of ignoring them
deduplicate-links = true; # Ignore symlinks that point at files already shown in the picker
parents = true; # Enables reading ignore files from parent directories
ignore = true; # Enables reading .ignore files
git-ignore = true; # Enables reading .gitignore files
git-global = true; # Enables reading global .gitignore, whose path is specified in git's config: core.excludesfile option
git-exclude = true; # Enables reading .git/info/exclude files
# max-depth unset = ; # Set with an integer value for maximum depth to recurse
};
auto-pairs = {
"(" = ")";
"{" = "}";
"[" = "]";
"\"" = "\"";
"`" = "`";
"<" = ">";
# "/* " = " */";
};
auto-save = {
focus-lost = false;
after-delay = {
enable = false;
timeout = 3000;
};
};
search = {
smart-case = true;
wrap-around = true;
};
whitespace = {
render = {
skip-levels = "none";
space = "none";
nbsp = "none";
nnbsp = "none";
tab = "none";
newline = "none";
tabpad = "none";
};
characters = {
skip-levels = 1;
space = "·";
nbsp = "";
nnbsp = "";
tab = "";
newline = "";
tabpad = "·";
};
}; };
line-number = "relative";
color-modes = true;
bufferline = "always";
popup-border = "all";
completion-trigger-len = 1;
completion-timeout = 5;
file-picker.hidden = false;
middle-click-paste = false;
cursorline = true;
indent-guides = { indent-guides = {
render = true; render = true;
character = ""; character = "";
skip-levels = 0;
}; };
lsp.display-inlay-hints = true; gutters = [
statusline.center = [ "position-percentage" ]; "diagnostics"
true-color = true; "spacer"
whitespace.characters = { "line-numbers"
newline = ""; "spacer"
tab = ""; "diff"
skip-levels = 1; ];
# line-numbers = {};
# layout.minwidth = 3;
# diagnostics = {};
# diff = {};
# spacer = {};
soft-wrap = {
enable = true;
max-wrap = 20;
max-indent-retain = 40;
wrap-indicator = "";
wrap-at-text-width = false;
};
smart-tab = {
enable = false;
supersend-menu = false;
};
inline-diagnostics = {
cursor-line = "hint";
other-lines = "disable";
prefix-len = 1;
# max-wrap = set above
max-diagnostics = 20;
}; };
}; };
keys.normal = { keys = {
normal = {
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ]; "C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
"A-`" = [ "no_op" ]; "A-`" = [ "no_op" ];
"`" = [ "no_op" ]; "`" = [ "no_op" ];
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
};
select = {
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
}; };
keys.normal."ö" = {
"s" = [ "switch_case" ];
"u" = [ "switch_to_uppercase" ];
"l" = [ "switch_to_lowercase" ];
}; };
}; };
languages = { languages = {
language = [ language = [
{ {
name = "nix"; name = "nix";
language-servers = [ "nixd" "nil" ]; language-servers = [
"nixd"
# "llm"
];
} }
{ {
name = "latex"; name = "latex";
@@ -89,7 +223,6 @@
file-types = [ "md" "MD" ]; file-types = [ "md" "MD" ];
scope = "text.<name>"; scope = "text.<name>";
} }
{ {
name = "python"; name = "python";
language-servers = [ "pyright" "ruff" ]; language-servers = [ "pyright" "ruff" ];
@@ -122,6 +255,16 @@
}]; }];
}; };
} }
{
name = "go";
language-servers = [
"gopls"
# "llm"
];
# formatter = {
# command = "gofmt";
# };
}
]; ];
language-server = { language-server = {
"nixd" = { "nixd" = {
@@ -137,20 +280,19 @@
command = "ruff-lsp"; command = "ruff-lsp";
config.settings.args = [ config.settings.args = [
# Set line length # Set line length
# "--line-length" "--line-length"
# "79" "240"
# Enable custom ruff rules
# Enable some ruff rules # "--select" lib.concatStringsSep [ ]
# "--select" ];
# ( };
# "F,W,E,I,N,D200,D201,D202,D203,D204,D205,D206,D207,D208,D209,D210,D211," "llm" = {
# + "D212,D213,D214,D215,D300,D301,D400,D401,D402,D403,D404,D405,D406," command = lib.getExe pkgs.helix-gpt;
# + "D407,D408,D409,D410,D411,D412,D413,D414,D415,D416,D417,D418,D419," args = [
# + "UP,YTT,TRIO,ASYNC,B,A,COM,C4,DTZ,T10,DJ,EXE,FA,ISC,ICN001,G010," "--handler"
# + "G101,G201,G202,INP,PIE,Q,RSE,RET,SLOT,SIM,TCH,INT,ARG,PTH,TD001," "ollama"
# + "TD004,TD005,TD006,TD007,PD,PL,TRY004,TRY200,TRY201,TRY302,TRY400," "--ollamaModel"
# + "TRY401,FLY,NPY,AIR,PERF,FURB,LOG,RUF" "codellama:7b"
# )
]; ];
}; };
}; };
@@ -159,15 +301,15 @@
base16 = with rice.color; { base16 = with rice.color; {
"attributes" = foreground; "attributes" = foreground;
"comment" = { "comment" = {
"fg" = white.dark; fg = black.bright;
"modifiers" = [ "italic" ]; modifiers = [ "italic" ];
}; };
"constant" = accent.bright; "constant" = accent.bright;
"constant.character.escape" = special.bright; "constant.character.escape" = special.bright;
"constant.numeric" = foreground; "constant.numeric" = foreground;
"constructor" = weird.base; "constructor" = weird.base;
"debug" = yellow.base; "debug" = yellow.base;
"diagnostic.modifiers" = [ "underlined" ]; "diagnostic.modifiers" = [ "underline" ];
"diff.delta" = blue.bright; "diff.delta" = blue.bright;
"diff.minus" = negative.bright; "diff.minus" = negative.bright;
"diff.plus" = positive.bright; "diff.plus" = positive.bright;
@@ -176,6 +318,7 @@
"hint" = tertiary.bright; "hint" = tertiary.bright;
"info" = foreground; "info" = foreground;
"keyword" = special.base; "keyword" = special.base;
"keyword.modifiers" = [ "italic" ];
"label" = foreground; "label" = foreground;
"namespace" = weird.bright; "namespace" = weird.bright;
"operator" = foreground; "operator" = foreground;
@@ -188,131 +331,127 @@
"markup.heading" = accent.base; "markup.heading" = accent.base;
"markup.bold" = { "markup.bold" = {
"fg" = tertiary.bright; fg = tertiary.bright;
"modifiers" = [ "bold" ]; modifiers = [ "bold" ];
}; };
"italic" = { "italic" = {
"fg" = secondary.bright; fg = secondary.bright;
"modifiers" = [ "italic" ]; modifiers = [ "italic" ];
}; };
"markup.linktext" = accent.base; "markup.linktext" = accent.base;
"markup.linkurl" = { "markup.linkurl" = {
"fg" = tertiary.dark; fg = tertiary.dark;
"modifiers" = [ "underlined" ]; modifiers = [ "underlined" ];
}; };
"markup.list" = accent.bright; "markup.list" = accent.bright;
"markup.quote" = weird.bright; "markup.quote" = weird.bright;
"markup.raw" = special.bright; "markup.raw" = special.bright;
"markup.strikethrough" = { "markup.strikethrough".modifiers = [ "crossed_out" ];
"modifiers" = [ "crossed_out" ];
};
"diagnostic.hint" = { "diagnostic.hint".underline.style = "curl";
"underline" = { style = "curl"; }; "diagnostic.info".underline.style = "curl";
}; "diagnostic.warning".underline.style = "curl";
"diagnostic.info" = { "diagnostic.error".underline.style = "curl";
"underline" = { style = "curl"; };
};
"diagnostic.warning" = {
"underline" = { style = "curl"; };
};
"diagnostic.error" = {
"underline" = { style = "curl"; };
};
"ui.background" = { # general background of the editor window "ui.background" = { # general background of the editor window
"bg" = background; # bg = background;
}; };
"ui.bufferline" = { # the top line ("tab"-line) "ui.bufferline" = { # the top line ("tab"-line)
"fg" = accent.base; fg = accent.base;
"bg" = black.base; bg = black.base;
}; };
"ui.bufferline.active" = { # the active "tab" "ui.bufferline.active" = { # the active "tab"
"fg" = background; fg = background;
"bg" = accent.base; bg = accent.base;
"modifiers" = [ "bold" ]; modifiers = [ "bold" ];
}; };
"ui.cursor" = { # the cursor in Normal mode "ui.cursor" = { # the cursor in Normal mode
"fg" = foreground; fg = foreground;
"modifiers" = [ "reversed" ]; modifiers = [ "reversed" ];
}; };
"ui.cursorline.primary" = { # the line on which the cursor is on "ui.cursorline.primary" = { # the line on which the cursor is on
"bg" = black.base; bg = black.base;
}; };
"ui.cursor.match" = { # Matching bracket etc. "ui.cursor.match" = { # Matching bracket etc.
"bg" = green.dark; bg = green.dark;
"modifiers" = [ ]; modifiers = [ ];
}; };
"ui.gutter" = { "ui.gutter" = {
"bg" = black.base; bg = black.base;
}; };
"ui.help" = { "ui.help" = {
"fg" = green.base; fg = green.base;
"bg" = black.base; bg = black.base;
}; };
"ui.linenr" = { "ui.linenr" = {
"fg" = white.dark; fg = white.dark;
"bg" = black.base; bg = black.base;
}; };
"ui.linenr.selected" = { "ui.linenr.selected" = {
"fg" = accent.bright; fg = accent.bright;
"modifiers" = [ "bold" ]; modifiers = [ "bold" ];
}; };
"ui.menu" = { "ui.menu" = {
"fg" = accent.base; fg = accent.base;
"bg" = black.base; bg = black.base;
}; };
"ui.menu.scroll" = { "ui.menu.scroll" = {
"fg" = yellow.dark; fg = yellow.dark;
"bg" = background; bg = background;
}; };
"ui.menu.selected" = { "ui.menu.selected" = {
"fg" = red.base; fg = red.base;
"bg" = blue.dark; bg = blue.dark;
}; };
"ui.popup" = { "ui.popup" = {
"bg" = black.base; bg = black.base;
}; };
"ui.selection" = { "ui.selection" = {
"bg" = white.dark; bg = white.dark;
}; };
"ui.selection.primary" = { "ui.selection.primary" = {
"bg" = black.bright; bg = black.bright;
}; };
"ui.statusline" = { "ui.statusline" = {
"fg" = blue.bright; fg = blue.bright;
"bg" = black.base; bg = black.base;
}; };
"ui.statusline.inactive" = { "ui.statusline.inactive" = {
"fg" = red.bright; fg = red.bright;
"bg" = red.dark; bg = red.dark;
}; };
"ui.statusline.insert" = { "ui.statusline.insert" = {
"fg" = green.bright; fg = green.bright;
"bg" = green.dark; bg = green.dark;
}; };
"ui.statusline.normal" = { "ui.statusline.normal" = {
"fg" = yellow.bright; fg = yellow.bright;
"bg" = yellow.dark; bg = yellow.dark;
}; };
"ui.statusline.select" = { "ui.statusline.select" = {
"fg" = cyan.bright; fg = cyan.bright;
"bg" = cyan.dark; bg = cyan.dark;
}; };
"ui.text" = foreground; "ui.text" = foreground;
"ui.text.focus" = accent.base; "ui.text.focus" = accent.base;
"ui.virtual.indent-guide" = { "ui.virtual.indent-guide" = {
"fg" = black.bright; fg = black.bright;
}; };
"ui.virtual.inlay-hint" = { "ui.virtual.inlay-hint" = {
"fg" = weird.bright; fg = weird.dark;
"bg" = weird.dark; bg = weird.base;
}; };
"ui.virtual.ruler" = { "ui.virtual.ruler" = {
"bg" = background; bg = background;
};
"ui.virtual.jump-label" = {
fg = special.base;
underline = {
style = "dotted";
};
}; };
"ui.window" = { "ui.window" = {
"bg" = black.base; bg = black.base;
}; };
}; };
}; };

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

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

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

@@ -1,33 +1,47 @@
{config, pkgs, pkgs-unstable, inputs, host, user, nvidia, rice, lib, ... }: { pkgs, ... }@all: with all;
let let
animation-speed = "5"; animation-speed = "5";
transparency = builtins.toString rice.transparency; transparency = builtins.toString rice.transparency;
monitors = { terminal = "ghostty";
terminal-exec = "ghostty --command=";
monitors = let
docked = false;
in {
xps = { xps = {
main = { main = if docked then {
name = "eDP-1"; name = "DP-5";
resolution = "1920x1200";
position = "0x0";
scale = "1.0";
};
second = {
name = "DP-3";
resolution = "1920x1080"; resolution = "1920x1080";
position = "1920x0"; position = "1920x0";
scale = "1.0"; scale = "1.0";
} else {
name = "eDP-1";
resolution = "1920x1200";
position = "0x1080";
scale = "1.0";
};
second = if docked then {
name = "DP-6";
resolution = "1920x1080";
position = "0x0";
scale = "1.0";
} else {
name = "DP-3";
resolution = "1920x1080";
position = "0x0";
scale = "1.0";
}; };
}; };
north = { north = {
main = { main = {
name = "DP-4"; name = "DP-4";
resolution = "2560x1440"; resolution = "2560x1440";
position = "1920x0"; position = "1920x150";
scale = "1.0"; scale = "1.0";
}; };
left = { left = {
name = "HDMI-A-2"; name = "HDMI-A-2";
resolution = "1920x1080"; resolution = "1920x1080";
position = "0x360"; position = "0x0";
scale = "1.0"; scale = "1.0";
}; };
# right = { # right = {
@@ -52,6 +66,8 @@ in {
hyprland-protocols hyprland-protocols
hyprlock hyprlock
hypridle hypridle
hyprshot
hyprpicker
hyprcursor hyprcursor
grim grim
@@ -59,8 +75,8 @@ in {
# ]) ++ (with pkgs-unstable; [ # ]) ++ (with pkgs-unstable; [
]) ++ (with inputs; [ # ]) ++ (with inputs; [
hyprswitch.packages.x86_64-linux.default # hyprswitch.packages.x86_64-linux.default
]); ]);
@@ -75,15 +91,16 @@ in {
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo # inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo
# inputs.hyprfocus.packages.${pkgs.system}.hyprfocus # inputs.hyprfocus.packages.${pkgs.system}.hyprfocus
# inputs.hycov.packages.${pkgs.system}.hycov # inputs.hycov.packages.${pkgs.system}.hycov
# inputs.Hyprspace.packages.${pkgs.system}.Hyprspace pkgs.hyprlandPlugins.hyprspace
# inputs.hyprspace.packages.${pkgs.system}.Hyprspace
]; ];
settings = { settings = {
monitor = monitor =
if host == "NxXPS" then (with monitors.xps; [ if hyper.host == "NxXPS" then (with monitors.xps; [
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}" "${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
"${second.name}, ${second.resolution}, ${second.position}, ${second.scale}" "${second.name}, ${second.resolution}, ${second.position}, ${second.scale}"
]) else (if host == "NxNORTH" then (with monitors.north; [ ]) else (if hyper.host == "NxNORTH" then (with monitors.north; [
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}" "${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
"${left.name}, ${left.resolution}, ${left.position}, ${left.scale}" "${left.name}, ${left.resolution}, ${left.position}, ${left.scale}"
# "${right.name}, ${right.resolution}, ${right.position}, ${right.scale}" # "${right.name}, ${right.resolution}, ${right.position}, ${right.scale}"
@@ -91,15 +108,13 @@ in {
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}" "${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
])); ]));
workspace = workspace = let
let d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
d1 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name); d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
d2 = if host == "NxXPS" then monitors.xps.second.name else (if host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name); d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name); # d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
# d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false"; compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
in in [
[
"11, monitor:${d1}, default:true" "11, monitor:${d1}, default:true"
"12, monitor:${d1}" "12, monitor:${d1}"
"13, monitor:${d1}" "13, monitor:${d1}"
@@ -120,8 +135,8 @@ in {
"27, monitor:${d2}" "27, monitor:${d2}"
"28, monitor:${d2}" "28, monitor:${d2}"
"29, monitor:${d2}" "29, monitor:${d2}"
"20, monitor:${d2}" "20, monitor:${d2}, ${compact}"
"31, monitor:${d3}, default:${let x = if host == "NxNORTH" then "true" else "false"; in x}" "31, monitor:${d3}, default:${let x = if hyper.host == "NxNORTH" then "true" else "false"; in x}"
"32, monitor:${d3}" "32, monitor:${d3}"
"33, monitor:${d3}" "33, monitor:${d3}"
"34, monitor:${d3}" "34, monitor:${d3}"
@@ -131,6 +146,10 @@ in {
"38, monitor:${d3}" "38, monitor:${d3}"
"39, monitor:${d3}" "39, monitor:${d3}"
"30, monitor:${d3}, ${compact}" "30, monitor:${d3}, ${compact}"
] ++ [
# no gaps when only
"w[tv1], gapsout:0, gapsin:0"
"f[1], gapsout:0, gapsin:0"
]; ];
# "device:logitech-wireless-mouse-mx-master-1" = { # "device:logitech-wireless-mouse-mx-master-1" = {
@@ -138,7 +157,7 @@ in {
# }; # };
env = if nvidia.enable == true then [ env = if hyper.nvidia.enable == true then [
"LIBVA_DRIVER_NAME,nvidia" "LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland" "XDG_SESSION_TYPE,wayland"
"GBM_BACKEND,nvidia-drm" "GBM_BACKEND,nvidia-drm"
@@ -174,12 +193,12 @@ in {
decoration = { decoration = {
rounding = rice.rounding; rounding = rice.rounding;
drop_shadow = false; # drop_shadow = false;
shadow_range = "20"; # shadow_range = "20";
shadow_offset = "0 0"; # shadow_offset = "0 0";
shadow_render_power = "4"; # shadow_render_power = "4";
"col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)"; # "col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)";
"col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)"; # "col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)";
active_opacity = "1.0"; active_opacity = "1.0";
inactive_opacity = "1.0"; inactive_opacity = "1.0";
@@ -191,7 +210,7 @@ in {
blur = { blur = {
enabled = true; enabled = true;
size = "3"; size = "10";
passes = "2"; passes = "2";
xray = false; xray = false;
vibrancy = 0.5; vibrancy = 0.5;
@@ -201,10 +220,11 @@ in {
animations = { animations = {
enabled = true; enabled = true;
# bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o
# bezier = "myBezier, 0.83, 0, 0.17, 1"; # io # bezier = "myBezier, 0.83, 0, 0.17, 1"; # io
bezier = "myBezier, 0.33, 1, 0.68, 1"; # bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
animation = let direction = if host == "NxXPS" then "slide" else "slidevert"; in [ # bezier = "myBezier, 0.33, 1, 0.68, 1";
animation = let direction = if hyper.host == "NxXPS" then "slide" else "slidevert"; in [
"windows, 1, ${animation-speed}, myBezier, slide" "windows, 1, ${animation-speed}, myBezier, slide"
"border, 1, ${animation-speed}, myBezier" "border, 1, ${animation-speed}, myBezier"
"fade, 1, ${animation-speed}, myBezier" "fade, 1, ${animation-speed}, myBezier"
@@ -228,7 +248,6 @@ in {
dwindle = { dwindle = {
preserve_split = true; # you probably want this preserve_split = true; # you probably want this
no_gaps_when_only = true;
}; };
# master = { # master = {
@@ -255,52 +274,54 @@ in {
]; ];
windowrulev2 = [ windowrulev2 = [
"opacity ${transparency},class:^(com.chatterino.*)$"
"opacity ${transparency},class:^(chatterino)$"
"bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1" "bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
];
windowrule = [ "bordersize 0, floating:0, onworkspace:w[tv1]"
# "opacity ${transparency}, firefox" "rounding 0, floating:0, onworkspace:w[tv1]"
"opacity ${transparency}, code-oss" "bordersize 0, floating:0, onworkspace:f[1]"
"opacity ${transparency}, VSCodium" "rounding 0, floating:0, onworkspace:f[1]"
"opacity ${transparency}, Code" ] ++ [
# "opacity ${transparency}, sent" "center 1,class:^(gimp)$"
"opacity ${transparency}, neovide"
"opacity ${transparency}, obsidian" "float, class:^(ibus-ui.*)$"
# "opacity ${transparency}, zathura" "float, class:^(ibus-ui-gtk3)$"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty" "float, class:^(imv)$"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Kitty" "float, class:^(org.kde.polkit-kde-authentication-agent-1)$"
"opacity ${transparency}, discord" "float, class:^(presenter)$" # sent
"opacity ${transparency}, vesktop" "float, class:^(thunderbird)$"
"opacity ${transparency}, Element"
"opacity ${transparency}, thunderbird"
"opacity ${transparency}, lutris"
"opacity ${transparency}, element"
"opacity ${transparency}, ^([sS]potify)$"
"opacity ${transparency}, virt-manager"
"opacity ${transparency}, thunar"
"opacity ${transparency}, title:^(wlogout)$"
"opaque, title:^(GNU Image Manipulation Program)$"
"float, title:^(Picture-in-Picture)$"
"float, title:^(Ibus-ui.*)$"
"float, ^(ibus-ui.*)$"
"float, ^(ibus-ui-gtk3)$"
"float, title:^(Ibus-ui-gtk3)$"
"pin, title:^(Picture-in-Picture)$"
"float, org.kde.polkit-kde-authentication-agent-1"
"float, title:^(wlogout)$"
"float, imv"
"float, title:^(Page Info .*)$"
"float, title:^(Compact folders)$" "float, title:^(Compact folders)$"
"tile, sent" "float, title:^(Ibus-ui.*)$"
"fullscreen, wlogout" "float, title:^(Ibus-ui-gtk3)$"
"fullscreen, sent" "float, title:^(Page Info .*)$"
"workspace 14, lutris" "float, title:^(Picture-in-Picture)$"
"workspace 100, title:^(Apex Legends)$" "float, title:^(wlogout)$"
"workspace 100, ^(cyberpunk2077.exe)$"
"workspace 100, title:^(No Man.s Sky)$" "fullscreen, class:^(imv)$"
"workspace 100, gamescope" "fullscreen, class:^(sent)$"
"fullscreen, class:^(wlogout)$"
"noanim, class:^(imv)$"
"noanim, class:^(presenter)$" # sent
"opacity ${transparency}, class:^(Code)$"
"opacity ${transparency}, class:^(code-oss)$"
"opacity ${transparency}, class:^(discord)$"
"opacity ${transparency}, class:^(vesktop)$"
# "opacity ${transparency}, class:^(Element)$"
"opacity ${transparency}, class:^(lutris)$"
"opacity ${transparency}, class:^(neovide)$"
"opacity ${transparency}, class:^(obsidian)$"
"opacity ${transparency}, class:^(vesktop)$"
"opacity ${transparency}, class:^(VSCodium)$"
"opacity ${transparency}, title:^(wlogout)$"
"opaque, title:^(GNU Image Manipulation Program)$"
"pin, title:^(Picture-in-Picture)$"
"tile, class:^(sent)$"
"workspace 100, class:^(gamescope)$"
]; ];
@@ -322,24 +343,23 @@ in {
########################################################################### ###########################################################################
## ROW 0: ## ROW 0:
bind = [ bind = [
"SUPER SHIFT, Escape, exit, "
"SUPER, F1, workspace, 100" "SUPER, F1, workspace, 100"
"SUPER SHIFT, F1, movetoworkspace, 100" "SUPER SHIFT, F1, movetoworkspace, 100"
# "SUPER, F2," # "SUPER, F2,"
"SUPER, F3, toggleopaque" # "SUPER, F3, toggleopaque"
# "SUPER, F4," "SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'Cleared Saved Event!' ''"
"SUPER, F5, exec, nx_gcal_event force-lookup" "SUPER, F5, exec, nx_gcal_event force-lookup"
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate" "SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
"SUPER, F6, exec, kitty -e 'htop'" "SUPER, F6, exec, ${terminal-exec}'htop'"
"SUPER, F7, exec, kitty -e 'nmtui'" "SUPER, F7, exec, ${terminal-exec}'nmtui'"
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120'' ''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
''SUPER, F9, exec, kitty -e sh -c 'change_colors_json $(swww query | sed -n 1p | sed -e "s-.*image: --g") && nh home switch && firefox /home/${user}/.config/color-pallete.html' '' "SUPER, F9, execr, waybar_mode set '󰸉 '"
''SUPER SHIFT, F9, exec, firefox /home/${user}/.config/color-pallete.html '' "SUPER, F9, submap, color"
# "SUPER, F10, hyprload,update" # "SUPER, F10, hyprload,update"
"SUPER, F11, exec, waybar" "SUPER, F11, exec, waybar"
"SUPER SHIFT, F11, exec, pkill waybar " "SUPER SHIFT, F11, exec, pkill waybar "
"SUPER, F12, exec, hyprland-autoname-workspaces" "SUPER, F12, exec, hyprland-autoname-workspaces"
"SUPER SHIFT, F12, exec, pkill -9 hyprland-autoname-workspaces " "SUPER SHIFT, F12, exec, pkill -9 hyprland-aut"
########################################################################### ###########################################################################
## ROW 1: ## ROW 1:
@@ -373,8 +393,8 @@ in {
########################################################################### ###########################################################################
## ROW 2: ## ROW 2:
#bind = SUPER, TAB, hycov:toggleoverview # "SUPER, TAB, hycov:toggleoverview"
# "SUPER, TAB, overview:toggle" "SUPER, TAB, overview:toggle"
# "SUPER, TAB, hyprexpo:expo, toggle" # "SUPER, TAB, hyprexpo:expo, toggle"
"ALT, TAB, focuscurrentorlast" "ALT, TAB, focuscurrentorlast"
# "SUPER, TAB, exec, hyprswitch --daemon" # "SUPER, TAB, exec, hyprswitch --daemon"
@@ -385,18 +405,19 @@ in {
"SUPER, R, exec, rofi -show drun" "SUPER, R, exec, rofi -show drun"
# "SUPER, T, exec, alacritty" # "SUPER, T, exec, alacritty"
# "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace"" # "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace""
"SUPER, T, exec, SESSION_FROM_DE=TRUE kitty" "SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}"
"SUPER SHIFT, T, exec, kitty -e sh -c 'ssh nxace'" "SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'"
# "SUPER, Z, " "SUPER, Z, exec, zathura"
"SUPER, U, exec, thunderbird " "SUPER, U, exec, [tile] thunderbird "
"SUPER, I, exec, kitty -e fish -c 'hx ~/nix-dots/ && fish'" "SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
"SUPER SHIFT, I, exec, kitty -e fish -c 'nh home switch || read'" "SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'"
"SUPER CTRL, I, exec, kitty -e fish -c 'nh os switch || read'" "SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'"
"SUPER, O, exec, obsidian " "SUPER, O, exec, obsidian "
"SUPER, P, pin " "SUPER, P, pin "
# "SUPER, Ü," # "SUPER, Ü,"
# "SUPER, +," # "SUPER, +,"
# "SUPER, Enter," "SUPER, Enter, exec, SESSION_FROM_DE=TRUE ${terminal}"
########################################################################### ###########################################################################
## ROW 3: ## ROW 3:
@@ -404,7 +425,8 @@ in {
"SUPER, A, execr, waybar_mode set ' 󰹑 '" "SUPER, A, execr, waybar_mode set ' 󰹑 '"
"SUPER, A, submap, scrL" "SUPER, A, submap, scrL"
"SUPER, S, exec, spotify" "SUPER, S, exec, spotify"
"SUPER, D, exec, vesktop" # "SUPER, D, exec, vesktop --disable-gpu-compositing"
"SUPER, D, exec, discord"
"SUPER, F, fullscreen" "SUPER, F, fullscreen"
# "SUPER, G," # "SUPER, G,"
"SUPER, H, movefocus, l" "SUPER, H, movefocus, l"
@@ -424,6 +446,7 @@ in {
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3" "SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh " # "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
"SUPER, C, exec, chatterino" "SUPER, C, exec, chatterino"
"SUPER SHIFT, C, exec, hyprpicker -n -a"
"SUPER, V, togglefloating, " "SUPER, V, togglefloating, "
"SUPER, B, exec, bitwarden" "SUPER, B, exec, bitwarden"
"SUPER, N, togglesplit" "SUPER, N, togglesplit"
@@ -457,7 +480,9 @@ in {
########################################################################### ###########################################################################
## MEGA KEYS: ## MEGA KEYS:
'' , Print, exec, grim -g "$(slurp)"'' ", Print, execr, waybar_mode set '󰄀 '"
", Print, submap, screenshot"
# "SUPER, Next, resizeactive, 5% 5%" # binde # "SUPER, Next, resizeactive, 5% 5%" # binde
# "SUPER, Prior, resizeactive, -5% -5%" # binde # "SUPER, Prior, resizeactive, -5% -5%" # binde
@@ -494,6 +519,39 @@ in {
"SUPER, Next, resizeactive, 10% 10%" "SUPER, Next, resizeactive, 10% 10%"
"SUPER, Prior, resizeactive, -10% -10%" "SUPER, Prior, resizeactive, -10% -10%"
]; ];
plugin = {
overview = {
# panelHeight =
# panelBorderWidth =
onBottom = false; # whether if panel should be on bottom instead of top
# workspaceMargin = # spacing of workspaces with eachother and the edge of the panel
# reservedArea = # padding on top of the panel, for Macbook camera notch
workspaceBorderSize = rice.border-width; #
centerAligned = true; # whether if workspaces should be aligned at the center (KDE / macOS style) or at the left (Windows style)
hideBackgroundLayers = true; # do not draw background and bottom layers in overview
hideTopLayers = false; # do not draw top layers in overview
hideOverlayLayers = false; # do not draw overlay layers in overview
hideRealLayers = false; # whether to hide layers in actual workspace
drawActiveWorkspace = true; # draw the active workspace in overview as-is
overrideGaps = false; # whether if overview should override the layout gaps in the current workspace using the following values
# gapsIn = #
# gapsOut = #
affectStrut = false; # whether the panel should push window aside, disabling this option also
dots_center = true;
autoDrag = true; # mouse click always drags window when overview is open
autoScroll = true; # mouse scroll on active workspace area always switch workspace
exitOnClick = true; # mouse click without dragging exits overview
switchOnDrop = true; # switch to the workspace when a window is droppped into it
exitOnSwitch = true; # overview exits when overview is switched by clicking on workspace view or by switchOnDrop
showNewWorkspace = false; # add a new empty workspace at the end of workspaces view
showEmptyWorkspace = false; # show empty workspaces that are inbetween non-empty workspaces
showSpecialWorkspace = false; # defaults to false
disableGestures = true;
reverseSwipe = true; # reverses the direction of swipe gesture, for macOS peeps?
exitKey = true;
};
};
}; };
@@ -504,396 +562,102 @@ in {
# 'Y8b. 88 88 88''Yb. 88 88 8888888 888888P' 'Y8b. # 'Y8b. 88 88 88''Yb. 88 88 8888888 888888P' 'Y8b.
# db 8D 88. .88 88 8D 88 88 88' '88 88 db 8D # db 8D 88. .88 88 8D 88 88 88' '88 88 db 8D
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y' # '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
extraConfig = '' extraConfig = let
action_simple = { mods ? "", key, cmd }: ''
bind=${mods},${key},execr,waybar_mode unset
bind=${mods},${key},${cmd}
bind=${mods},${key},submap,reset
'';
extra_workspace = { key, wsnumber }: ''
bind=,${key},execr,waybar_mode unset
bind=,${key},workspace,${wsnumber}
bind=,${key},submap,reset
bind=SUPER,${key},execr,waybar_mode unset
bind=SUPER,${key},workspace,${wsnumber}
bind=SUPER,${key},submap,reset
bind=SUPER SHIFT,${key},execr, waybar_mode unset
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
bind=SUPER SHIFT,${key},submap,reset
'';
in ''
submap = browserSM submap = browserSM
bind = , W, exec, waybar_mode unset ${action_simple { key = "A"; cmd = "exec,firefox https://www.amazon.de/b?node=3010075031&ref_=nav_ya_signin";}}
bind = , W, exec, hyprctl dispatch exec firefox ${action_simple { key = "C"; cmd = "exec,firefox https://calendar.google.com";}}
bind = , W, submap, reset ${action_simple { key = "D"; cmd = "exec,firefox https://www.disneyplus.com/home";}}
${action_simple { key = "H"; cmd = "exec,firefox https://www.hs-mittweida.de";}}
bind = , Y, exec, waybar_mode unset ${action_simple { key = "I"; cmd = "exec,firefox https://www.imdb.com";}}
bind = , Y, exec, firefox https://youtube.com ${action_simple { key = "L"; cmd = "exec,firefox https://feddit.de";}}
bind = , Y, submap, reset ${action_simple { key = "M"; cmd = "exec,firefox https://ieji.de/home";}}
${action_simple { key = "N"; cmd = "exec,firefox https://Netflix.com";}}
bind = , T, exec, waybar_mode unset ${action_simple { key = "R"; cmd = "exec,firefox https://reddit.com";}}
bind = , T, exec, hyprctl dispatch exec firefox https://twitch.tv ${action_simple { key = "S"; cmd = "exec,firefox 127.0.0.1:8384/";}}
bind = , T, submap, reset ${action_simple { key = "T"; cmd = "exec,hyprctl dispatch exec firefox https://twitch.tv";}}
${action_simple { key = "udiaeresis"; cmd = "exec,firefox https://translate.google.com";}}
bind = , R, exec, waybar_mode unset ${action_simple { key = "W"; cmd = "exec,hyprctl dispatch exec firefox";}}
bind = , R, exec, firefox https://reddit.com ${action_simple { key = "X"; cmd = "exec,firefox https://nx2.site";}}
bind = , R, submap, reset ${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
bind = , C, exec, waybar_mode unset ${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
bind = , C, exec, firefox https://calendar.google.com bind=,Z,exec,waybar_mode set ' '
bind = , C, submap, reset bind=,Z,submap,tuda
bind=,Z,submap,reset
bind = , Ü, exec, waybar_mode unset
bind = , Ü, exec, firefox https://translate.google.com
bind = , Ü, submap, reset
bind = , N, exec, waybar_mode unset
bind = , N, exec, firefox https://Netflix.com
bind = , N, submap, reset
bind = , A, exec, waybar_mode unset
bind = , A, exec, firefox https://www.amazon.de/b?node=3010075031&ref_=nav_ya_signin
bind = , A, submap, reset
bind = , D, exec, waybar_mode unset
bind = , D, exec, firefox https://www.disneyplus.com/home
bind = , D, submap, reset
bind = , H, exec, waybar_mode unset
bind = , H, exec, firefox https://www.hs-mittweida.de
bind = , H, submap, reset
bind = , X, exec, waybar_mode unset
bind = , X, exec, firefox https://nx2.site
bind = , X, submap, reset
bind = , L, exec, waybar_mode unset
bind = , L, exec, firefox https://feddit.de
bind = , L, submap, reset
bind = , I, exec, waybar_mode unset
bind = , I, exec, firefox https://www.imdb.com
bind = , I, submap, reset
bind = , M, exec, waybar_mode unset
bind = , M, exec, firefox https://ieji.de/home
bind = , M, submap, reset
bind = , S, exec, waybar_mode unset
bind = , S, exec, firefox 127.0.0.1:8384/
bind = , S, submap, reset
bind=,Escape,exec,waybar_mode unset bind=,Escape,exec,waybar_mode unset
bind=,Escape,submap,reset bind=,Escape,submap,reset
submap = reset submap = reset
submap = scrL submap = scrL
bind = , 1, execr, waybar_mode unset ${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
bind = , 1, workspace, 21
bind = , 1, submap, reset
bind = SUPER, 1, execr, waybar_mode unset
bind = SUPER, 1, workspace, 21
bind = SUPER, 1, submap, reset
bind = SUPER SHIFT, 1, execr, waybar_mode unset
bind = SUPER SHIFT, 1, movetoworkspace, 21
bind = SUPER SHIFT, 1, submap, reset
bind = , 2, execr, waybar_mode unset
bind = , 2, workspace, 22
bind = , 2, submap, reset
bind = SUPER, 2, execr, waybar_mode unset
bind = SUPER, 2, workspace, 22
bind = SUPER, 2, submap, reset
bind = SUPER SHIFT, 2, execr, waybar_mode unset
bind = SUPER SHIFT, 2, movetoworkspace, 22
bind = SUPER SHIFT, 2, submap, reset
bind = , 3, execr, waybar_mode unset
bind = , 3, workspace, 23
bind = , 3, submap, reset
bind = SUPER, 3, execr, waybar_mode unset
bind = SUPER, 3, workspace, 23
bind = SUPER, 3, submap, reset
bind = SUPER SHIFT, 3, execr, waybar_mode unset
bind = SUPER SHIFT, 3, movetoworkspace, 23
bind = SUPER SHIFT, 3, submap, reset
bind = , 4, execr, waybar_mode unset
bind = , 4, workspace, 24
bind = , 4, submap, reset
bind = SUPER, 4, execr, waybar_mode unset
bind = SUPER, 4, workspace, 24
bind = SUPER, 4, submap, reset
bind = SUPER SHIFT, 4, execr, waybar_mode unset
bind = SUPER SHIFT, 4, movetoworkspace, 24
bind = SUPER SHIFT, 4, submap, reset
bind = , 5, execr, waybar_mode unset
bind = , 5, workspace, 25
bind = , 5, submap, reset
bind = SUPER, 5, execr, waybar_mode unset
bind = SUPER, 5, workspace, 25
bind = SUPER, 5, submap, reset
bind = SUPER SHIFT, 5, execr, waybar_mode unset
bind = SUPER SHIFT, 5, movetoworkspace, 25
bind = SUPER SHIFT, 5, submap, reset
bind = , 6, execr, waybar_mode unset
bind = , 6, workspace, 26
bind = , 6, submap, reset
bind = SUPER, 6, execr, waybar_mode unset
bind = SUPER, 6, workspace, 26
bind = SUPER, 6, submap, reset
bind = SUPER SHIFT, 6, execr, waybar_mode unset
bind = SUPER SHIFT, 6, movetoworkspace, 26
bind = SUPER SHIFT, 6, submap, reset
bind = , 7, execr, waybar_mode unset
bind = , 7, workspace, 27
bind = , 7, submap, reset
bind = SUPER, 7, execr, waybar_mode unset
bind = SUPER, 7, workspace, 27
bind = SUPER, 7, submap, reset
bind = SUPER SHIFT, 7, execr, waybar_mode unset
bind = SUPER SHIFT, 7, movetoworkspace, 27
bind = SUPER SHIFT, 7, submap, reset
bind = , 8, execr, waybar_mode unset
bind = , 8, workspace, 28
bind = , 8, submap, reset
bind = SUPER, 8, execr, waybar_mode unset
bind = SUPER, 8, workspace, 28
bind = SUPER, 8, submap, reset
bind = SUPER SHIFT, 8, execr, waybar_mode unset
bind = SUPER SHIFT, 8, movetoworkspace, 28
bind = SUPER SHIFT, 8, submap, reset
bind = , 9, execr, waybar_mode unset
bind = , 9, workspace, 29
bind = , 9, submap, reset
bind = SUPER, 9, execr, waybar_mode unset
bind = SUPER, 9, workspace, 29
bind = SUPER, 9, submap, reset
bind = SUPER SHIFT, 9, execr, waybar_mode unset
bind = SUPER SHIFT, 9, movetoworkspace, 29
bind = SUPER SHIFT, 9, submap, reset
bind = , 0, execr, waybar_mode unset
bind = , 0, workspace, 20
bind = , 0, submap, reset
bind = SUPER, 0, execr, waybar_mode unset
bind = SUPER, 0, workspace, 20
bind = SUPER, 0, submap, reset
bind = SUPER SHIFT, 0, execr, waybar_mode unset
bind = SUPER SHIFT, 0, movetoworkspace, 20
bind = SUPER SHIFT, 0, submap, reset
bind = , A, execr, waybar_mode unset bind = , A, execr, waybar_mode unset
bind = , A, submap, reset bind = , A, submap, reset
bind = , Escape, execr, waybar_mode unset bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
submap = scrR submap = scrR
bind = , 1, execr, waybar_mode unset ${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
bind = , 1, workspace, 31
bind = , 1, submap, reset
bind = SUPER, 1, execr, waybar_mode unset
bind = SUPER, 1, workspace, 31
bind = SUPER, 1, submap, reset
bind = SUPER SHIFT, 1, execr, waybar_mode unset
bind = SUPER SHIFT, 1, movetoworkspace, 31
bind = SUPER SHIFT, 1, submap, reset
bind = , 2, execr, waybar_mode unset
bind = , 2, workspace, 32
bind = , 2, submap, reset
bind = SUPER, 2, execr, waybar_mode unset
bind = SUPER, 2, workspace, 32
bind = SUPER, 2, submap, reset
bind = SUPER SHIFT, 2, execr, waybar_mode unset
bind = SUPER SHIFT, 2, movetoworkspace, 32
bind = SUPER SHIFT, 2, submap, reset
bind = , 3, execr, waybar_mode unset
bind = , 3, workspace, 33
bind = , 3, submap, reset
bind = SUPER, 3, execr, waybar_mode unset
bind = SUPER, 3, workspace, 33
bind = SUPER, 3, submap, reset
bind = SUPER SHIFT, 3, execr, waybar_mode unset
bind = SUPER SHIFT, 3, movetoworkspace, 33
bind = SUPER SHIFT, 3, submap, reset
bind = , 4, execr, waybar_mode unset
bind = , 4, workspace, 34
bind = , 4, submap, reset
bind = SUPER, 4, execr, waybar_mode unset
bind = SUPER, 4, workspace, 34
bind = SUPER, 4, submap, reset
bind = SUPER SHIFT, 4, execr, waybar_mode unset
bind = SUPER SHIFT, 4, movetoworkspace, 34
bind = SUPER SHIFT, 4, submap, reset
bind = , 5, execr, waybar_mode unset
bind = , 5, workspace, 35
bind = , 5, submap, reset
bind = SUPER, 5, execr, waybar_mode unset
bind = SUPER, 5, workspace, 35
bind = SUPER, 5, submap, reset
bind = SUPER SHIFT, 5, execr, waybar_mode unset
bind = SUPER SHIFT, 5, movetoworkspace, 35
bind = SUPER SHIFT, 5, submap, reset
bind = , 6, execr, waybar_mode unset
bind = , 6, workspace, 36
bind = , 6, submap, reset
bind = SUPER, 6, execr, waybar_mode unset
bind = SUPER, 6, workspace, 36
bind = SUPER, 6, submap, reset
bind = SUPER SHIFT, 6, execr, waybar_mode unset
bind = SUPER SHIFT, 6, movetoworkspace, 36
bind = SUPER SHIFT, 6, submap, reset
bind = , 7, execr, waybar_mode unset
bind = , 7, workspace, 37
bind = , 7, submap, reset
bind = SUPER, 7, execr, waybar_mode unset
bind = SUPER, 7, workspace, 37
bind = SUPER, 7, submap, reset
bind = SUPER SHIFT, 7, execr, waybar_mode unset
bind = SUPER SHIFT, 7, movetoworkspace, 37
bind = SUPER SHIFT, 7, submap, reset
bind = , 8, execr, waybar_mode unset
bind = , 8, workspace, 38
bind = , 8, submap, reset
bind = SUPER, 8, execr, waybar_mode unset
bind = SUPER, 8, workspace, 38
bind = SUPER, 8, submap, reset
bind = SUPER SHIFT, 8, execr, waybar_mode unset
bind = SUPER SHIFT, 8, movetoworkspace, 38
bind = SUPER SHIFT, 8, submap, reset
bind = , 9, execr, waybar_mode unset
bind = , 9, workspace, 39
bind = , 9, submap, reset
bind = SUPER, 9, execr, waybar_mode unset
bind = SUPER, 9, workspace, 39
bind = SUPER, 9, submap, reset
bind = SUPER SHIFT, 9, execr, waybar_mode unset
bind = SUPER SHIFT, 9, movetoworkspace, 39
bind = SUPER SHIFT, 9, submap, reset
bind = , 0, execr, waybar_mode unset
bind = , 0, workspace, 30
bind = , 0, submap, reset
bind = SUPER, 0, execr, waybar_mode unset
bind = SUPER, 0, workspace, 30
bind = SUPER, 0, submap, reset
bind = SUPER SHIFT, 0, execr, waybar_mode unset
bind = SUPER SHIFT, 0, movetoworkspace, 30
bind = SUPER SHIFT, 0, submap, reset
bind = , Y, execr, waybar_mode unset bind = , Y, execr, waybar_mode unset
bind = , Y, submap, reset bind = , Y, submap, reset
bind = , Escape, execr, waybar_mode unset bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
submap = color
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'change_colors_json img successfull' ''; }}
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'change_colors_json manual successfull' ''; }}
${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }}
bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset
submap = reset
submap = tuda
${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }}
${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }}
${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset
submap = reset
submap = screenshot
plugin { ${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
hyprexpo { ${action_simple { key = "M"; cmd = ''exec,hyprshot -m output''; }}
columns = 5 ${action_simple { key = "R"; cmd = ''exec,hyprshot -m region''; }}
gap_size = ${builtins.toString rice.gap-size} bind = , Escape, execr, waybar_mode unset
bg_col = rgb(${builtins.substring 1 6 rice.color.background}) bind = , Escape, submap, reset
workspace_method = first 10 # [center/first] [workspace] e.g. first 1 or center m+1
enable_gesture = false # laptop touchpad, 4 fingers
gesture_distance = 300 # how far is the "max"
gesture_positive = true # positive = swipe down. Negative = swipe up.
}
}
plugin {
overview {
panelColor = rgba(00000088)
workspaceActiveBackground = rgba(00ff00ff)
workspaceInactiveBackground = rgba(0000ffff)
# workspaceActiveBorder =
# workspaceInactiveBorder =
dragAlpha = 0.5
panelHeight = 200
workspaceMargin = 30
workspaceBorderSize = 3
centerAligned = true
overrideGaps = false
gapsIn = 0
gapsOut = 0
hideBackgroundLayers = false
drawActiveWorkspace = true
autoDrag = true
autoScroll = true
exitOnClick = false
switchOnDrop = false
exitOnSwitch = trueß
showNewWorkspace = true
showEmptyWorkspace = false
}
}
# allows repeated switching with same keypress that starts the submap
binde = SUPER, TAB, exec, hyprswitch --daemon --do-initial-execute
bind = SUPER, TAB, submap, switch
bind = SUPER, TAB, exec, waybar_mode set "sw"
# allows repeated switching with same keypress that starts the submap
binde = SUPER SHIFT, TAB, exec, hyprswitch --daemon --do-initial-execute -r
bind = SUPER SHIFT, TAB, submap, switch
bind = SUPER, TAB, exec, waybar_mode set "swr"
submap = switch
# allow repeated window switching in submap (same keys as repeating while starting)
binde = SUPER, TAB, exec, hyprswitch --daemon
binde = SUPER SHIFT, TAB, exec, hyprswitch --daemon -r
# switch to specific window offset
bind = , 1, exec, hyprswitch --daemon --offset=1
bind = , 2, exec, hyprswitch --daemon --offset=2
bind = , 3, exec, hyprswitch --daemon --offset=3
bind = , 4, exec, hyprswitch --daemon --offset=4
bind = , 5, exec, hyprswitch --daemon --offset=5
bind = , 6, exec, hyprswitch --daemon --offset=6
bind = , 7, exec, hyprswitch --daemon --offset=7
bind = , 8, exec, hyprswitch --daemon --offset=8
bind = , 8, exec, hyprswitch --daemon --offset=8
bind = , 9, exec, hyprswitch --daemon --offset=9
bind = SUPER $reverse, 1, exec, hyprswitch --daemon --offset=1 -r
bind = SUPER $reverse, 2, exec, hyprswitch --daemon --offset=2 -r
bind = SUPER $reverse, 3, exec, hyprswitch --daemon --offset=3 -r
bind = SUPER $reverse, 4, exec, hyprswitch --daemon --offset=4 -r
bind = SUPER $reverse, 5, exec, hyprswitch --daemon --offset=5 -r
bind = SUPER $reverse, 6, exec, hyprswitch --daemon --offset=6 -r
bind = SUPER $reverse, 7, exec, hyprswitch --daemon --offset=7 -r
bind = SUPER $reverse, 8, exec, hyprswitch --daemon --offset=8 -r
bind = SUPER $reverse, 9, exec, hyprswitch --daemon --offset=9 -r
bind = SUPER $reverse, 5, exec, hyprswitch --daemon --offset=5 -r
# exit submap and stop hyprswitch
bindrt = SUPER, SUPER_L, exec, hyprswitch --stop-daemon
bindrt = SUPER, SUPER_L, submap, reset
bindrt = SUPER, SUPER_L, exec, waybar_mode unset
# if it somehow doesn't close on releasing $switch_release, escape can kill
bindr = ,escape, exec, pkill hyprswitch
bindr = ,escape, submap, reset
submap = reset submap = reset
''; '';
}; };
home.file = home.file = let
let m = if hyper.host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
m = if host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name; in {
in
{
".config/hypr/hyprlock.conf".text = '' ".config/hypr/hyprlock.conf".text = ''
background { background {
monitor = ${m} monitor = ${m}
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
path = /home/nx2/Pictures/nix-wall.png path = /home/nx2/Pictures/wallpapers/nix-wall.png
blur_size = 4 blur_size = 4
blur_passes = 3 # 0 disables blurring blur_passes = 3 # 0 disables blurring
noise = 0.0117 noise = 0.0117

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

@@ -3,7 +3,7 @@
programs.kitty = { programs.kitty = {
enable = true; enable = true;
font = { font = {
name = rice.font.code.name2; name = rice.font.code.name;
package = rice.font.code.package; package = rice.font.code.package;
}; };
settings = with rice.color; { settings = with rice.color; {

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

@@ -1,5 +1,5 @@
{ config, pkgs, lib, host, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE") lib.mkIf (hyper.host != "NxACE")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
texlab # LSP texlab # LSP

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

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

View File

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

6
home-modules/nh.nix Executable file → Normal file
View File

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

View File

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

View File

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

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

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

View File

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

View File

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

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

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

View File

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

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

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

View File

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

View File

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

View File

@@ -0,0 +1,15 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
brightnessctl
blueman
fontpreview
gsettings-desktop-schemas
imv
pavucontrol
# playerctl
swww
wev
wl-clipboard
xclip
];
}

View File

@@ -0,0 +1,16 @@
{ pkgs, hyper, ... }: {
home.packages = with pkgs; [
chromium
element-desktop
mpv
qbittorrent
unstable.spotify
wl-clipboard
xfce.thunar
] ++ (if (hyper.host != "NxACE") then [
signal-desktop
obsidian
zoom-us
inkscape
] else []);
}

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }@all: with all;
{ {
home = let home = let
python-with-packages = pkgs.python3.withPackages (pp: with pp; [ python-with-packages = pkgs.python3.withPackages (pp: with pp; [

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

@@ -1,6 +1,8 @@
{ pkgs, lib, user, ... }: { ... }:
{ {
qt = { qt = {
platformTheme = "gtk"; enable = true;
platformTheme.name = "qtct";
style.name = "adwaita-dark";
}; };
} }

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

@@ -1,4 +1,5 @@
{ pkgs, rice, ... }: { { pkgs, ... }@all: with all;
{
home.packages = with pkgs; [ home.packages = with pkgs; [
rofi-wayland rofi-wayland
]; ];
@@ -14,7 +15,7 @@
} }
* { * {
font: "${rice.font.code.name2} 12"; font: "${rice.font.code.name} 12";
foreground: ${foreground}; foreground: ${foreground};
background-color: ${background}${trdr}; background-color: ${background}${trdr};
padding: 0px; padding: 0px;

View File

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

View File

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

View File

@@ -1,12 +1,12 @@
{ user, inputs, ... }: { pkgs, ... }@all: with all;
{ {
imports = [ imports = [
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops
]; ];
sops = { sops = {
# age.keyFile = "/home/${user}/.config/sops/age/keys.txt"; age.keyFile = lib.mkIf (hyper.host == "NxACE") "${hyper.home}.age_nx2_key_13.txt";
gnupg.home = "/home/${user}/.gnupg"; gnupg.home = lib.mkIf (hyper.host != "NxACE") "${hyper.home}.gnupg";
defaultSopsFile = ../sops-secrets.yaml; defaultSopsFile = ../sops-secrets.yaml;
# %r is $XDG_RUNTIME_DIR # %r is $XDG_RUNTIME_DIR

18
home-modules/ssh.nix Executable file → Normal file
View File

@@ -1,27 +1,27 @@
{ pkgs, domain, ... }: { pkgs, ... }@all: with all;
{ {
home = { home = {
packages = with pkgs; [ sshfs ]; packages = with pkgs; [ sshfs ];
file.".ssh/config".text = '' file.".ssh/config".text = ''
HOST nxace HOST nxace
HostName ssh.${domain} HostName ssh.${hyper.domain}
User nx2 User ${hyper.user}
Port 50022 Port 50022
HOST nxacel HOST nxacel
HostName 192.168.178.32 HostName 10.0.1.1
User nx2 User ${hyper.user}
Port 50022 Port 50022
HOST nxrpil HOST nxrpil
HostName 192.168.178.31 HostName 10.0.1.31
User nx2 User ${hyper.user}
Port 22 Port 22
HOST nxgit HOST nxgit
HostName ssh.${domain} HostName ssh.${hyper.domain}
User git User git
Port 20022 Port 50022
''; '';
}; };
} }

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

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

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

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

View File

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

4
home-modules/virt-manager.nix Executable file → Normal file
View File

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

107
home-modules/vscode.nix Executable file → Normal file
View File

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

View File

@@ -1,6 +1,6 @@
{ pkgs-unstable, ... }: { pkgs, ... }@all: with all;
{ {
home.packages = with pkgs-unstable; [ home.packages = with pkgs; [
(writers.writePython3Bin "change_colors_json" { (writers.writePython3Bin "change_colors_json" {
libraries = with python3Packages; [ numpy pillow scikit-learn ]; libraries = with python3Packages; [ numpy pillow scikit-learn ];
flakeIgnore = [ "E302" "E305" "E226" "E501" ]; flakeIgnore = [ "E302" "E305" "E226" "E501" ];
@@ -8,6 +8,8 @@
from colorsys import hls_to_rgb, rgb_to_hls from colorsys import hls_to_rgb, rgb_to_hls
import json import json
import sys import sys
import subprocess
from time import sleep
from typing import Literal, cast from typing import Literal, cast
from numpy.typing import NDArray from numpy.typing import NDArray
from sklearn.cluster import KMeans from sklearn.cluster import KMeans
@@ -25,7 +27,7 @@ def fc(c: int) -> str:
return s return s
class Color(object): class Color(object):
def __init__(self, rgb: tuple[int, ...], frequency: float): def __init__(self, rgb: tuple[int, ...], frequency: float = 1):
assert len(rgb) == 3, "RGB values must be a tuple of length 3" assert len(rgb) == 3, "RGB values must be a tuple of length 3"
self.rgb = cast(tuple[int, int, int], rgb) self.rgb = cast(tuple[int, int, int], rgb)
self.freq: float = frequency self.freq: float = frequency
@@ -71,7 +73,7 @@ def ensure_color(c: Color, alter_sat: bool) -> list[int]:
new_sat = min((sat**0.5) + 0.4, 1) new_sat = min((sat**0.5) + 0.4, 1)
else: else:
new_sat = sat new_sat = sat
new_lum = max(lum, 0.5) new_lum = 0.6
r, g, b = hls_to_rgb(h=hue, l=new_lum, s=new_sat) r, g, b = hls_to_rgb(h=hue, l=new_lum, s=new_sat)
return [int(r*255), int(g*255), int(b*255)] return [int(r*255), int(g*255), int(b*255)]
@@ -115,14 +117,25 @@ def extract_colors(
colors.sort(reverse=True) colors.sort(reverse=True)
return Palette(colors) return Palette(colors)
def hyprpicker() -> Color:
ret = str(subprocess.run(["${pkgs.hyprpicker}/bin/hyprpicker", "-n", "-f", "rgb"], capture_output=True).stdout)[2:-3]
return Color([int(c) for c in ret.split(" ")])
if __name__ == "__main__": if __name__ == "__main__":
img = sys.argv[1] if sys.argv[1] == "img":
img = sys.argv[2]
palette = extract_colors(image=img, palette_size=3) palette = extract_colors(image=img, palette_size=3)
accent = ensure_color(c=palette[0], alter_sat=False) accent = ensure_color(c=palette[0], alter_sat=False)
secondary = ensure_color(c=palette[1], alter_sat=True) secondary = ensure_color(c=palette[1], alter_sat=True)
tertiary = ensure_color(c=palette[2], alter_sat=False) tertiary = ensure_color(c=palette[2], alter_sat=False)
elif sys.argv[1] == "manual":
accent = ensure_color(c=hyprpicker(), alter_sat=False)
sleep(0.1)
secondary = ensure_color(c=hyprpicker(), alter_sat=True)
sleep(0.1)
tertiary = ensure_color(c=hyprpicker(), alter_sat=False)
weird = alter_hue(ilist=accent, hue=80) weird = alter_hue(ilist=accent, hue=80)
special = alter_hue(ilist=accent, hue=180) special = alter_hue(ilist=accent, hue=180)
foreground = alter_l(accent, 0.9) foreground = alter_l(accent, 0.9)

169
home-modules/waybar.nix Executable file → Normal file
View File

@@ -1,9 +1,11 @@
{ lib, pkgs, user, rice, ... }: let { pkgs, hyper, ... }@all: with all; let
sep = " "; sep = " ";
in { in {
home.packages = sops.secrets = {
let "nx2site/radicale/password" = { };
waybar_mode_script = /*bash*/ '' };
home.packages = with pkgs; [
(writeShellApplication { name = "waybar_mode"; text = /*bash*/ ''
print_help() { print_help() {
echo "Usage: waybar_mode {set <string>|unset}" echo "Usage: waybar_mode {set <string>|unset}"
} }
@@ -33,19 +35,127 @@ in {
;; ;;
esac esac
exit 0 exit 0
''; '';})
cclock_script = /*bash*/ '' (writeShellApplication { name = "cclock"; text = /*bash*/ ''
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}') ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
if [ $# -eq 0 ]; then if [ $# -eq 0 ]; then
echo "󰃮${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')" echo "󰃮${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
elif [ "$1" = "--no-icons" ]; then elif [ "$1" = "--no-icons" ]; then
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')" echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
fi fi
''; '';})
in (writers.writePython3Bin "caldav_event" {
with pkgs; [ libraries = with pkgs.python3Packages; [ caldav ics pytz ];
(writeShellApplication { name = "waybar_mode"; text = waybar_mode_script;}) flakeIgnore = [ "E302" "E305""E501" "E261" ];
(writeShellApplication { name = "cclock"; text = cclock_script;}) } /* python */ ''
import os
import json
from caldav import DAVClient
from datetime import datetime, timezone
from ics import Calendar
from pytz import UTC
def get_password(password_file):
with open(password_file, "r") as file:
return file.read().strip()
def datetime_converter(obj):
if isinstance(obj, datetime):
return obj.isoformat()
return obj
def datetime_parser(dct):
for key, value in dct.items():
if isinstance(value, str):
try:
dct[key] = datetime.fromisoformat(value)
except ValueError:
pass
return dct
def load_cache(cache_file):
if os.path.exists(cache_file):
with open(cache_file, "r") as file:
return json.load(file, object_hook=datetime_parser)
return None
def save_cache(cache_file, data):
with open(cache_file, "w") as file:
json.dump(data, file, default=datetime_converter)
def get_ongoing_or_next_event(url, username, password):
now = datetime.now(timezone.utc)
try:
client = DAVClient(url, username=username, password=password)
principal = client.principal()
calendars = principal.calendars()
next_event_dict = {
'event_name': "fake",
'event_begin': datetime(9000, 1, 1, tzinfo=UTC), # in the year 9000
'event_end': datetime(9000, 1, 1, 8, tzinfo=UTC),
}
for calendar in calendars:
for event in calendar.events():
calendar_parsed = Calendar(event.data)
for ics_event in calendar_parsed.events:
event_dict = {}
event_dict['event_name'] = ics_event.name or "(No Title)"
event_dict['event_begin'] = ics_event.begin.astimezone(timezone.utc)
event_dict['event_end'] = ics_event.end.astimezone(timezone.utc)
if event_dict['event_begin'] <= now and now <= event_dict['event_end']:
return event_dict
elif event_dict['event_begin'] >= now and next_event_dict['event_begin'] > event_dict['event_begin']:
next_event_dict = event_dict
return next_event_dict
except Exception as e:
print(f"Error accessing {url}: {e}")
return None
if __name__ == "__main__":
password_file = "/home/nx2/.config/sops-nix/secrets/nx2site/radicale/password" # Path to password file
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
url = "https://dav.${hyper.domain}/"
username = "${hyper.user}"
password = get_password(password_file)
event_dict = load_cache(cache_file)
now = datetime.now(timezone.utc).timestamp()
if event_dict is None or event_dict['event_begin'].timestamp() <= now and now < event_dict['event_end'].timestamp():
event_dict = get_ongoing_or_next_event(url, username, password)
if event_dict is None:
print("No upcoming events found.")
exit(0)
cache_data = {
"event_name": event_dict['event_name'] if event_dict is not None else None,
"event_begin": event_dict['event_begin'] if event_dict is not None else None,
"event_end": event_dict['event_end'] if event_dict is not None else None
}
save_cache(cache_file, cache_data)
if event_dict:
event_start = event_dict['event_begin'].timestamp()
event_end = event_dict['event_end'].timestamp()
if event_start <= now <= event_end:
time_remaining = event_end - now
hours, rem = divmod(int(time_remaining), 3600)
minutes, _ = divmod(rem, 60)
print(f"{event_dict['event_name']} ends in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}")
else:
time_until_start = event_start - now
hours, rem = divmod(int(time_until_start), 3600)
minutes, _ = divmod(rem, 60)
print(f"{event_dict['event_name']} starts in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}")
else:
print("No upcoming events found.")
'')
]; ];
programs.waybar = { programs.waybar = {
@@ -64,6 +174,7 @@ in {
margin-bottom = 0; margin-bottom = 0;
margin-right = 0; margin-right = 0;
spacing = 10; spacing = 10;
fixed-center = true;
modules-left = [ modules-left = [
# "cpu" # "cpu"
# "memory" # "memory"
@@ -78,7 +189,7 @@ in {
]; ];
modules-right = [ modules-right = [
"custom/mode" "custom/mode"
"custom/ctimeremaining" # "custom/caldav_event"
"custom/cclock" "custom/cclock"
"tray" "tray"
]; ];
@@ -97,10 +208,12 @@ in {
exec = "cclock"; exec = "cclock";
restart-interval = 60; restart-interval = 60;
}; };
# "custom/ctimeremaining" = { "custom/caldav_event" = {
# exec = "nx_gcal_event lookup"; format = "󰃰${sep}{}";
# restart-interval = 60; exec = "caldav_event";
# }; restart-interval = 60;
max-width = 60;
};
"custom/mode" = { "custom/mode" = {
exec = "cat /tmp/waybar-mode"; exec = "cat /tmp/waybar-mode";
interval = "once"; interval = "once";
@@ -163,7 +276,7 @@ in {
}; };
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in '' style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in ''
* { * {
font-family: ${rice.font.code.name2}; font-family: ${rice.font.code.name};
font-size: 1em; font-size: 1em;
min-height: 0px; min-height: 0px;
margin: 0px; margin: 0px;
@@ -182,6 +295,7 @@ in {
#clock, #clock,
#custom-cclock, #custom-cclock,
#custom-mode, #custom-mode,
#custom-caldav-event,
#battery, #battery,
#cpu, #cpu,
#tray, #tray,
@@ -198,6 +312,10 @@ in {
color: rgb(${f accent.bright}); color: rgb(${f accent.bright});
} }
#workspaces {
font-family: ${rice.font.code.name};
}
#workspaces button { #workspaces button {
color: rgb(${f accent.base}); color: rgb(${f accent.base});
padding-left: 15px; padding-left: 15px;
@@ -207,7 +325,7 @@ in {
#workspaces button.active { #workspaces button.active {
color: rgb(${f background}); color: rgb(${f background});
background-color: rgba(${f accent.base},${builtins.toString rice.transparency}); background-color: rgb(${f accent.base});
} }
#workspaces button:hover { #workspaces button:hover {
@@ -222,8 +340,8 @@ in {
color: rgb(${f red.base}); color: rgb(${f red.base});
} }
#window, #custom-ctimeremaining { #window, #custom-caldav_event {
font-family: ${rice.font.base.name}, ${rice.font.code.name2}; font-family: ${rice.font.base.name}, ${rice.font.code.name};
color: rgb(${f tertiary.bright}); color: rgb(${f tertiary.bright});
} }
@@ -238,11 +356,14 @@ in {
color: rgb(${f green.base});; color: rgb(${f green.base});;
} }
#battery.critical { #battery.charging {
color: rgb(${f red.dark});; color: rgb(${f green.base});
background: rgb(${f red.bright}); }
#battery.critical {
background: rgb(${f negative.base});
color: rgb(${f foreground});
} }
#battery.charging { color: rgb(${f green.base}); }
''; '';
#battery.critical:not(.charging) { #battery.critical:not(.charging) {

2
home-modules/wlogout.nix Executable file → Normal file
View File

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

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

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

228
home-modules/yazi.nix Executable file → Normal file
View File

@@ -1,18 +1,184 @@
{ pkgs, ... }@all: with all;
{ pkgs, system, rice, inputs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
# yazi
dragon
unar unar
]; ];
programs.yazi = { programs.yazi = {
enable = true; enable = true;
package = inputs.yazi.packages.${system}.default; # package = pkgs.yazi;
package = inputs.yazi.packages.${hyper.system}.default;
enableFishIntegration = true; enableFishIntegration = true;
shellWrapperName = "ya";
# plugins = with inputs.yazi-plugins.packages.${hyper.system}; { };
# initLua = /* lua */ '' '';
keymap = {
mgr.keymap = [
{ on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; }
{ on = "q"; run = "quit"; desc = "Exit the process"; }
{ on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; }
{ on = "<C-w>"; run = "close"; desc = "Close the current tab, or quit if it is last tab"; }
{ on = "<C-z>"; run = "suspend"; desc = "Suspend the process"; }
# Hopping
{ on = "k"; run = "arrow -1"; desc = "Move cursor up"; }
{ on = "j"; run = "arrow 1"; desc = "Move cursor down"; }
{ on = "<Up>"; run = "arrow -1"; desc = "Move cursor up"; }
{ on = "<Down>"; run = "arrow 1"; desc = "Move cursor down"; }
{ on = "<C-u>"; run = "arrow -50%"; desc = "Move cursor up half page"; }
{ on = "<C-d>"; run = "arrow 50%"; desc = "Move cursor down half page"; }
{ on = "<C-b>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
{ on = [ "g" "g" ]; run = "arrow down"; desc = "Move cursor to the top"; }
{ on = [ "g" "e" ]; run = "arrow up"; desc = "Move cursor to the end"; }
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
(pkgs.lib.mkIf (hyper.host == "NxACE") { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
{ on = [ "g" "n" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
{ on = [ "g" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; }
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) directory"; }
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
{ on = [ "g" "t" ]; run = "cd /tmp"; desc = "Go to the /tmp directory"; }
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
# Navigation
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
{ on = "l"; run = "enter"; desc = "Enter the child directory"; }
{ on = "<Left>"; run = "leave"; desc = "Go back to the parent directory"; }
{ on = "<Right>"; run = "enter"; desc = "Enter the child directory"; }
{ on = "H"; run = "back"; desc = "Go back to the previous directory"; }
{ on = "L"; run = "forward"; desc = "Go forward to the next directory"; }
# Seeking
{ on = "K"; run = "seek -5"; desc = "Seek up 5 units in the preview"; }
{ on = "J"; run = "seek 5"; desc = "Seek down 5 units in the preview"; }
# Selection
{ on = "<Space>"; run = [ "toggle --state=none" "arrow 1" ]; desc = "Toggle the current selection state"; }
{ on = "v"; run = "visual_mode"; desc = "Enter visual mode (selection mode)"; }
{ on = "V"; run = "visual_mode --unset"; desc = "Enter visual mode (unset mode)"; }
{ on = "<C-a>"; run = "toggle_all --state=on"; desc = "Select all files"; }
{ on = "<C-n>"; run = "toggle_all --state=off"; desc = "Deselect all files"; }
{ on = "<C-r>"; run = "toggle_all --state=none"; desc = "Inverse selection of all files"; }
# Operation
{ on = "o"; run = "open"; desc = "Open selected files"; }
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; }
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
{ on = "P"; run = "paste --force"; desc = "Paste yanked (overwrite if exists)"; }
{ on = "-"; run = "link"; desc = "Symlink the absolute path of yanked files"; }
{ on = "_"; run = "link --relative"; desc = "Symlink the relative path of yanked files"; }
{ on = "<C-->"; run = "hardlink"; desc = "Hardlink yanked files"; }
{ on = "Y"; run = "unyank"; desc = "Cancel the yank status"; }
{ on = "X"; run = "unyank"; desc = "Cancel the yank status"; }
{ on = "d"; run = "remove"; desc = "Trash selected files"; }
{ on = "D"; run = "remove --permanently"; desc = "Permanently delete selected files"; }
{ on = "a"; run = "create"; desc = "Create a file (ends with / for directories)"; }
{ on = "r"; run = "rename --cursor=before_ext"; desc = "Rename selected file(s)"; }
{ on = ";"; run = "shell --interactive"; desc = "Run a shell command"; }
{ on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; }
{ on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; }
{ on = "s"; run = "search fd"; desc = "Search files by name using fd"; }
{ on = "S"; run = "search rg"; desc = "Search files by content using ripgrep"; }
{ on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; }
{ on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; }
{ on = "Z"; run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; }
# Linemode
{ on = [ "m" "s" ]; run = "linemode size"; desc = "Set linemode to size"; }
{ on = [ "m" "p" ]; run = "linemode permissions"; desc = "Set linemode to permissions"; }
{ on = [ "m" "c" ]; run = "linemode ctime"; desc = "Set linemode to ctime"; }
{ on = [ "m" "m" ]; run = "linemode mtime"; desc = "Set linemode to mtime"; }
{ on = [ "m" "o" ]; run = "linemode owner"; desc = "Set linemode to owner"; }
{ on = [ "m" "n" ]; run = "linemode none"; desc = "Set linemode to none"; }
# Copy
{ on = [ "c" "c" ]; run = "copy path"; desc = "Copy the file path"; }
{ on = [ "c" "d" ]; run = "copy dirname"; desc = "Copy the directory path"; }
{ on = [ "c" "f" ]; run = "copy filename"; desc = "Copy the filename"; }
{ on = [ "c" "n" ]; run = "copy name_without_ext"; desc = "Copy the filename without extension"; }
# Filter
{ on = "f"; run = "filter --smart"; desc = "Filter files"; }
# Find
{ on = "/"; run = "find --smart"; desc = "Find next file"; }
{ on = "?"; run = "find --previous --smart"; desc = "Find previous file"; }
{ on = "n"; run = "find_arrow"; desc = "Go to the next found"; }
{ on = "N"; run = "find_arrow --previous"; desc = "Go to the previous found"; }
# Sorting
{ on = [ "," "m" ]; run = [ "sort modified --reverse=no" "linemode mtime" ]; desc = "Sort by modified time"; }
{ on = [ "," "M" ]; run = [ "sort modified --reverse" "linemode mtime" ]; desc = "Sort by modified time (reverse)"; }
{ on = [ "," "c" ]; run = [ "sort created --reverse=no" "linemode ctime" ]; desc = "Sort by created time"; }
{ on = [ "," "C" ]; run = [ "sort created --reverse" "linemode ctime" ]; desc = "Sort by created time (reverse)"; }
{ on = [ "," "e" ]; run = "sort extension --reverse=no"; desc = "Sort by extension"; }
{ on = [ "," "E" ]; run = "sort extension --reverse"; desc = "Sort by extension (reverse)"; }
{ on = [ "," "a" ]; run = "sort alphabetical --reverse=no"; desc = "Sort alphabetically"; }
{ on = [ "," "A" ]; run = "sort alphabetical --reverse"; desc = "Sort alphabetically (reverse)"; }
{ on = [ "," "n" ]; run = "sort natural --reverse=no"; desc = "Sort naturally"; }
{ on = [ "," "N" ]; run = "sort natural --reverse"; desc = "Sort naturally (reverse)"; }
{ on = [ "," "s" ]; run = [ "sort size --reverse=no" "linemode size" ]; desc = "Sort by size"; }
{ on = [ "," "S" ]; run = [ "sort size --reverse" "linemode size" ]; desc = "Sort by size (reverse)"; }
# Tab
{ on = "t"; run = "tab_create --current"; desc = "Create a new tab with CWD"; }
{ on = "<C-w>"; run = "close"; desc = "Close the current tab"; }
{ on = "1"; run = "tab_switch 0"; desc = "Switch to the first tab"; }
{ on = "2"; run = "tab_switch 1"; desc = "Switch to the second tab"; }
{ on = "3"; run = "tab_switch 2"; desc = "Switch to the third tab"; }
{ on = "4"; run = "tab_switch 3"; desc = "Switch to the fourth tab"; }
{ on = "5"; run = "tab_switch 4"; desc = "Switch to the fifth tab"; }
{ on = "6"; run = "tab_switch 5"; desc = "Switch to the sixth tab"; }
{ on = "7"; run = "tab_switch 6"; desc = "Switch to the seventh tab"; }
{ on = "8"; run = "tab_switch 7"; desc = "Switch to the eighth tab"; }
{ on = "9"; run = "tab_switch 8"; desc = "Switch to the ninth tab"; }
{ on = "<C-1>"; run = "tab_swap 0"; desc = "Swap current tab with the first tab"; }
{ on = "<C-2>"; run = "tab_swap 1"; desc = "Swap current tab with the second tab"; }
{ on = "<C-3>"; run = "tab_swap 2"; desc = "Swap current tab with the third tab"; }
{ on = "<C-4>"; run = "tab_swap 3"; desc = "Swap current tab with the fourth tab"; }
{ on = "<C-5>"; run = "tab_swap 4"; desc = "Swap current tab with the fifth tab"; }
{ on = "<C-5>"; run = "tab_swap 4"; desc = "Swap current tab with "; }
{ on = "<C-6>"; run = "tab_swap 5"; desc = "Swap current tab with the sixth tab"; }
{ on = "<C-6>"; run = "tab_swap 5"; desc = "Swap current tab with "; }
{ on = "<C-7>"; run = "tab_swap 6"; desc = "Swap current tab with the seventh tab"; }
{ on = "<C-7>"; run = "tab_swap 6"; desc = "Swap current tab with tab"; }
{ on = "<C-8>"; run = "tab_swap 7"; desc = "Swap current tab with the eighth tab"; }
{ on = "<C-8>"; run = "tab_swap 7"; desc = "Swap current tab with b"; }
{ on = "<C-9>"; run = "tab_swap 8"; desc = "Swap current tab with the ninth tab"; }
{ on = "<C-9>"; run = "tab_swap 8"; desc = "Swap current tab with "; }
{ on = "["; run = "tab_switch -1 --relative"; desc = "Switch to the previous tab"; }
{ on = "["; run = "tab_switch -1 --relative"; desc = "Switch to thtab"; }
{ on = "]"; run = "tab_switch 1 --relative"; desc = "Switch to the next tab"; }
{ on = "]"; run = "tab_switch 1 --relative"; desc = "Switch ttab"; }
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab with previous tab"; }
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab wittab"; }
{ on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; }
# Tasks
{ on = "w"; run = "tasks_show"; desc = "Show task manager"; }
];
tasks.keymap = [
# Task
{ on = "w"; run = "close"; desc = "Close Task View"; }
{ on = "q"; run = "close"; desc = "Close Task View"; }
{ on = "<Esc>"; run = "close"; desc = "Close Task View"; }
{ on = "c"; run = "cancel"; desc = "Cancel Task"; }
{ on = "i"; run = "inspect"; desc = "Inspect Task"; }
{ on = "j"; run = "arrow -1"; desc = "Up in list"; }
{ on = "k"; run = "arrow 1"; desc = "Down in list"; }
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
];
help.keymap = [
# Help
{ on = "~"; run = "help"; desc = "Open help"; }
{ on = "?"; run = "help"; desc = "Open help"; }
{ on = "<F1>"; run = "help"; desc = "Open help"; }
];
};
settings = { settings = {
manager = { mgr = {
layout = [2 3 4]; layout = [2 3 4];
sort_by = "natural"; sort_by = "natural";
sort_sensitive = true; sort_sensitive = true;
@@ -21,19 +187,15 @@
linemode = "size"; linemode = "size";
show_hidden = false; show_hidden = false;
show_symlink = true; show_symlink = true;
append_keymap = [
{ on = [ "<C-g>" ]; run = "lazygit"; desc = "Run Lazygit in current directory"; }
{ on = [ "<C-D>" ]; run = ''shell 'dragon -x -i -T "$1"' --confirm''; }
];
}; };
opener = { opener = {
"edit" = [ "edit" = [
{ run = ''hx "$@"''; desc = "helix"; block = true; } { run = ''hx "$@"''; desc = "helix"; block = true; }
{ run = ''codium "$@"''; orphan = true;} { run = ''codium "$@"''; desc = "code"; orphan = true; }
{ run = ''nano "$@"''; desc = "nano"; block = true;}
]; ];
"play" = [ "play" = [
{ run = ''mpv "$@"''; } { run = ''mpv "$@"''; desc = "mpv"; orphan = true; }
{ run = ''mpv --vf=negate "$@"''; desc = "mpv inverted"; orphan = true; }
{ run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo"; } { run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo"; }
]; ];
"archive" = [ "archive" = [
@@ -42,33 +204,38 @@
{ run = ''unzip "$1"''; desc = "unzip"; } { run = ''unzip "$1"''; desc = "unzip"; }
]; ];
"image" = [ "image" = [
{ run = ''imv "$@"''; desc = "imv";} { run = ''imv "$@"''; desc = "imv"; orphan = true; }
{ run = ''gimp "$@"''; desc = "gimp";} { run = ''gimp "$@"''; desc = "gimp"; orphan = true; }
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper"; } { run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper"; }
{ run = ''exiftool "$@"; echo "Press enter to exit"; read''; desc = "View Exif Data"; }
{ run = ''for f in "$@"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
]; ];
"svg" = [ "svg" = [
{ run = ''inkscape "$@"''; desc = "inkscape";} { run = ''inkscape "$@"''; desc = "inkscape"; orphan = true; }
{ run = ''firefoc "$@"''; desc = "firefox";} { run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
]; ];
"font" = [ "font" = [
{ run = ''fontpreview "$@"''; desc = "fontpreview"; } { run = ''fontpreview "$@"''; desc = "fontpreview"; orphan = true; }
{ run = ''fontforge "$@"''; desc = "fortforge"; } { run = ''fontforge "$@"''; desc = "fortforge"; orphan = true; }
]; ];
"document" = [ "document" = [
{ run = ''zathura "$@"''; desc = "zathura"; } { run = ''zathura "$@"''; desc = "zathura"; orphan = true; }
{ run = ''xournal "$@"''; desc = "xournal"; } { run = ''xournal "$@"''; desc = "xournal"; orphan = true; }
{ run = ''firefox "$@"''; desc = "firefox"; } { run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
{ run = ''nxgs flip "$@"''; desc = "nxgs flip"; }
{ run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; }
{ run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; }
]; ];
"browser" = [ "browser" = [
{ run = ''firefox "$@"''; desc = "firefox"; } { run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
{ run = ''zen "$@"''; desc = "zen"; } { run = ''zen "$@"''; desc = "zen"; orphan = true; }
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; } { run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; orphan = true; }
{ run = ''w3m "$@"''; desc = "w3m"; } { run = ''w3m "$@"''; desc = "w3m"; }
{ run = ''lynx "$@"''; desc = "lynx"; } { run = ''lynx "$@"''; desc = "lynx"; }
]; ];
"office" = [ "office" = [
{ run = ''libreoffice "$@"''; desc = "libreoffice"; } { run = ''libreoffice "$@"''; desc = "libreoffice"; orphan = true; }
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; } { run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; orphan = true; }
]; ];
"shell" = [ "shell" = [
{ run = ''bash -c "$@"''; desc = "bash -c"; } { run = ''bash -c "$@"''; desc = "bash -c"; }
@@ -87,6 +254,7 @@
{ mime = "text/htm"; use = [ "edit" "browser" ]; } { mime = "text/htm"; use = [ "edit" "browser" ]; }
{ mime = "text/x-python"; use = "python"; } { mime = "text/x-python"; use = "python"; }
{ mime = "text/*"; use = "edit"; } { mime = "text/*"; use = "edit"; }
{ mime = "text"; use = "edit"; }
{ mine = "inode/x-empty"; use = "edit"; } { mine = "inode/x-empty"; use = "edit"; }
{ mine = "inode/directory"; use = "edit"; } { mine = "inode/directory"; use = "edit"; }
@@ -94,9 +262,11 @@
{ mime = "image/*"; use = "image"; } { mime = "image/*"; use = "image"; }
{ mime = "image/svg"; use = [ "image" "edit" ]; } { mime = "image/svg"; use = [ "image" "edit" ]; }
{ mime = "video/*"; use = "video"; } { mime = "video/*"; use = "play"; }
{ mime = "audio/*"; use = "play"; }
{ mime = "application/x-httpd-php"; use = [ "edit" "browser" ]; } { mime = "application/x-httpd-php"; use = [ "edit" "browser" ]; }
{ mime = "application/javascript"; use = "edit"; }
{ mime = "application/json"; use = "edit"; } { mime = "application/json"; use = "edit"; }
{ mime = "application/ld+json"; use = "edit"; } { mime = "application/ld+json"; use = "edit"; }
{ mime = "application/pdf"; use = "document"; } { mime = "application/pdf"; use = "document"; }
@@ -120,7 +290,7 @@
]; ];
}; };
theme = with rice.color; { theme = with rice.color; {
manager = { mgr = {
cwd = { fg = foreground; bg = background; }; cwd = { fg = foreground; bg = background; };
hovered = { fg = background; bg = accent.base; }; hovered = { fg = background; bg = accent.base; };
preview_hovered = { underline = false; }; preview_hovered = { underline = false; };

View File

@@ -1,18 +1,24 @@
{ pkgs, rice, ... }: { rice, ... }:
{ {
programs.zathura = { programs.zathura = {
enable = true; enable = true;
options = with rice.color; { options = let
f = rice.lib.hex-to-rgb-comma-string;
t = builtins.toString rice.transparency;
in with rice.color; {
completion-bg = background; completion-bg = background;
completion-fg = foreground; completion-fg = foreground;
completion-highlight-bg = background; completion-highlight-bg = background;
completion-highlight-fg = accent.base; completion-highlight-fg = accent.base;
default-bg = "rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency})"; default-bg = "rgba(${f background},${t})";
default-fg = foreground; default-fg = foreground;
highlight-active-color = "rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5)"; highlight-active-color = "rgba(${f accent.base},0.5)";
highlight-color = "rgba(${rice.lib.hex-to-rgb-comma-string secondary.base},0.5)"; highlight-color = "rgba(${f secondary.base},0.5)";
highlight-fg = "rgba(${rice.lib.hex-to-rgb-comma-string secondary.base},0.5)"; highlight-fg = "rgba(${f secondary.base},0.5)";
index-active-bg = background; index-fg = accent.bright;
index-bg = black.dark;
index-active-fg = background;
index-active-bg = foreground;
inputbar-bg = background; inputbar-bg = background;
inputbar-fg = foreground; inputbar-fg = foreground;
notification-bg = background; notification-bg = background;
@@ -31,6 +37,19 @@
n-completion-items = 9999999999999; n-completion-items = 9999999999999;
exec-command = "open"; exec-command = "open";
page-padding = rice.border-width;
#stop at page boundries
scroll-page-aware = true;
smooth-scroll = true;
scroll-full-overlap = 0.01;
scroll-step = 100;
};
mappings = {
h = ''feedkeys "<C-Left>"'';
j = ''feedkeys "<C-Down>"'';
k = ''feedkeys "<C-Up>"'';
l = ''feedkeys "<C-Right>"'';
}; };
}; };
} }

0
home-modules/zoxide.nix Executable file → Normal file
View File

117
home.nix Executable file → Normal file
View File

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

24
nix-on-droid.nix Normal file
View File

@@ -0,0 +1,24 @@
{ pkgs, ... }@all: with all;
{
# Simply install just the packages
environment.packages = with pkgs; [
helix
git
lazygit
yazi
];
# Backup etc files instead of failing to activate generation if a file already exists in /etc
environment.etcBackupExtension = ".bak";
# Read the changelog before changing this value
system.stateVersion = pkgs.version;
# Set up nix for flakes
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
# Set your time zone
time.timeZone = "Europe/Berlin";
}

22
nixos-wsl.nix Normal file
View File

@@ -0,0 +1,22 @@
{ pkgs, ... }@all: with all;
{
imports = [
inputs.nixos-wsl.nixosModules.default
./system-modules/users.nix
./system-modules/gc.nix
./system-modules/docker.nix
./system-modules/gpg.nix
./system-modules/networking.nix
./system-modules/nixd.nix
# ./system-modules/sops.nix
# ./system-modules/sshd.nix
# ./system-modules/syncthing.nix
];
system.stateVersion = pkgs.version;
# system.stateVersion = "24.11";
wsl = {
defaultUser = hyper.user;
enable = true;
};
nix.settings.experimental-features = [ "nix-command" "flakes" ];
}

0
nxlib/ricelib.nix Executable file → Normal file
View File

44
shell-only.nix Normal file
View File

@@ -0,0 +1,44 @@
{ pkgs, ... }@all: with all;
{
imports = [
./home-modules/bash.nix
./home-modules/color-pallete.nix
./home-modules/direnv.nix
./home-modules/fish.nix
./home-modules/git.nix
./home-modules/gpg.nix
./home-modules/helix.nix
./home-modules/latex.nix
./home-modules/nh.nix
./home-modules/nixd.nix
./home-modules/nxgs.nix
./home-modules/pandoc.nix
./home-modules/programming/c.nix
./home-modules/programming/gleam.nix
./home-modules/programming/go.nix
./home-modules/programming/java.nix
./home-modules/programming/js.nix
./home-modules/programming/python.nix
# ./home-modules/sops.nix
./home-modules/ssh.nix
./home-modules/starship.nix
./home-modules/vale.nix
./home-modules/yazi.nix
./home-modules/zoxide.nix
./home-modules/pkgs-list/shell.nix
];
home.username = hyper.user;
# home.homeDirectory = hyper.home; # for some reason you cant use hyper.home here
home.homeDirectory = "/home/${hyper.user}";
home.stateVersion = pkgs.version;
xdg = {
enable = true;
configHome = "${hyper.home}/.config";
cacheHome = "${hyper.home}/.cache";
dataHome = "${hyper.home}/.local/share";
stateHome = "${hyper.home}/.local/state";
};
programs.home-manager.enable = true;
}

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,9 @@
{ host, lib, ... }: { pkgs, ... }@all: with all;
lib.mkIf (host != "NxACE") lib.mkIf (hyper.host != "NxACE")
{ {
environment.systemPackages = with pkgs; [
adbfs-rootless
];
programs.adb = { programs.adb = {
enable = true; enable = true;
}; };

View File

@@ -0,0 +1,19 @@
{ pkgs, ... }: {
environment.systemPackages = with pkgs; ([
git
git-crypt
lazygit # home-manager module is bugged
wget
curlHTTP3
zip
unzip
p7zip
unar
vim
htop
openssl
dmidecode
file
]);
}

View File

@@ -0,0 +1,10 @@
{ pkgs, ... }@all: with all; {
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
package = pkgs.bluez5-experimental;
settings.Policy.AutoEnable = "true";
settings.General.Enable = "Source,Sink,Media,Socket";
};
services.blueman.enable = true;
}

101
system-modules/boot.nix Executable file → Normal file
View File

@@ -1,89 +1,29 @@
{ config, pkgs, pkgs-unstable, lib, host, domain, inputs, ... }: { pkgs, ... }@all: with all;
let let
grub-theme-ascii-diana = (pkgs.fetchFromGitea { grub-theme-ascii-diana = (pkgs.fetchFromGitea {
domain = "git.${domain}"; domain = "git.${hyper.domain}";
owner = "nx2"; owner = "nx2";
repo = "grub-theme-ascii-diana"; repo = "grub-theme-ascii-diana";
rev = "0.5.0"; rev = "0.5.0";
hash = "sha256-e+55NYsSsWY6GPbYUtdVEB9krueuCAWT3Ce/Ghops1g="; hash = "sha256-e+55NYsSsWY6GPbYUtdVEB9krueuCAWT3Ce/Ghops1g=";
}); });
in device-boot = if hyper.host == "NxNORTH" then {
{ kernelPackages = pkgs.linuxPackages_zen;
imports = if host == "NxNORTH" then [
inputs.lanzaboote.nixosModules.lanzaboote
] else [];
config = if host == "NxNORTH" then {
# I have to boot with secureboot becasue of the chinese spyware called Vanguard
environment.systemPackages = with pkgs; [ sbctl ]; environment.systemPackages = with pkgs; [ sbctl ];
boot = { lanzaboote = {
lanzaboote =
let
windows-efi-shell-fs-alias = "HD0a65535a2";
in
{
enable = true; enable = true;
pkiBundle = "/etc/secureboot"; pkiBundle = "/var/lib/sbctl";
package = lib.mkForce (pkgs.writeShellApplication {
name = "lzbt";
runtimeInputs = [
inputs.lanzaboote.packages.x86_64-linux.tool
pkgs.coreutils
pkgs.sbctl
];
# https://forum.endeavouros.com/t/tutorial-add-a-systemd-boot-loader-menu-entry-for-a-windows-installation-using-a-separate-esp-partition/37431
text = /*bash*/ ''
# execute normal lanazboote functionality
lzbt "$@"
# Create windows.nsh file
ESP='${config.boot.loader.efi.efiSysMountPoint}'
echo "${windows-efi-shell-fs-alias}:EFI\Microsoft\Boot\Bootmgfw.efi" > "$ESP/windows.nsh"
# cp efi-shell boot file
# systemd-boot will automatically add an entry for it
cp -f '${pkgs.edk2-uefi-shell.efi}' "$ESP/shellx64.efi"
# should exist already
mkdir -p "$ESP/loader/entries"
# sign shell file
sbctl sign -s "$ESP/shellx64.efi"
# Create windows.conf boot entry
cat << EOF > "$ESP/loader/entries/windows.conf"
title Windows-Hack
efi /shellx64.efi
options -nointerrupt -noconsolein -noconsoleout windows.nsh
EOF
'';
});
}; };
loader.systemd-boot = { loader.systemd-boot = {
enable = false; # let lanzaboote install systemd-boot enable = false; # let lanzaboote install systemd-boot
consoleMode = "max"; consoleMode = "max";
configurationLimit = 10; configurationLimit = 10;
# extraEntries = {
# "Windo7s-11.conf" = ''
# Windows eleven
# search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi
# chainloader (''${root})/EFI/Microsoft/Boot/bootmgfw.efi
# '';
# "Firmware.conf" = ''
# Firmware
# fwsetup
# '';
# "Shutdown.conf" = ''
# title Shutdown
# halt
# '';
# };
}; };
kernelPackages = pkgs-unstable.linuxPackages_zen; } else if hyper.host == "NxXPS" then {
kernelPackages = pkgs.linuxPackages_latest;
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
kernelModules = [ "v4l2loopback" ]; kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1''; extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
};
security.polkit.enable = true;
} else if host == "NxXPS" then {
boot = {
loader = { loader = {
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
grub = { grub = {
@@ -105,21 +45,26 @@ in
''; '';
}; };
}; };
kernelPackages = pkgs-unstable.linuxPackages_6_10; } else if hyper.host == "NxACE" then {
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; kernelPackages = pkgs.linuxPackages_6_12;
kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
};
} else { # NxACE
boot = {
loader = { loader = {
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
grub = { grub = {
enable = true; enable = true;
device = "nodev"; device = "nodev";
devices = [];
efiSupport = true; efiSupport = true;
}; };
}; };
}; } else assert 1 == "Unknown host"; {};
}; in {
imports = if hyper.host == "NxNORTH" then [
inputs.lanzaboote.nixosModules.lanzaboote
] else [];
config.boot = {
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1'';
tmp.useTmpfs = false;
} // device-boot;
} }

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