Compare commits

...

163 Commits

Author SHA1 Message Date
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
124 changed files with 4411 additions and 2068 deletions

0
.gitattributes vendored Executable file → Normal file
View File

0
.gitignore vendored Executable file → Normal file
View File

29
configuration.nix Executable file → Normal file
View File

@@ -1,11 +1,13 @@
{ pkgs, inputs, lib, host, ... }:
{ pkgs, hyper, inputs, ... }:
{
imports = ([
inputs.sops-nix.nixosModules.sops
./system-modules/adb.nix
./system-modules/auto-mount.nix
./system-modules/calendar.nix
./system-modules/hardware-configuration.nix
./system-modules/fuse.nix
./system-modules/games.nix
./system-modules/nvidia.nix
./system-modules/users.nix
./system-modules/sound.nix
@@ -30,6 +32,7 @@
./system-modules/nvidia.nix
./system-modules/ollama.nix
./system-modules/qmk.nix
./system-modules/scanning.nix
./system-modules/sops.nix
./system-modules/sound.nix
./system-modules/sshd.nix
@@ -37,12 +40,24 @@
./system-modules/users.nix
./system-modules/virtualisation.nix
./system-modules/ydotool.nix
]) ++ (if (host == "NxACE") then [
]) ++ (if (hyper.host == "NxACE") then [
./system-modules/nx2site.nix
./system-modules/hugo.nix
./system-modules/postgres.nix
./system-modules/nx2site/proxy.nix
# ./system-modules/nx2site/gitea.nix
# ./system-modules/nx2site/vaultwarden.nix
./system-modules/nx2site/audiobookshelf.nix
# ./system-modules/nx2site/dyn_dns.nix
./system-modules/nx2site/gitea.nix
./system-modules/nx2site/open-web-calendar.nix
./system-modules/nx2site/radicale.nix
# ./system-modules/nx2site/nextcloud.nix
./system-modules/nx2site/vaultwarden.nix
./system-modules/nx2site/paperless.nix
./system-modules/calendar-publish.nix
./system-modules/calendar-lec.nix
./system-modules/calendar-lr.nix
./system-modules/calendar-dicos.nix
] else []);
# Set your time zone.
@@ -99,6 +114,7 @@
blueman
dmidecode
file
parallel
# ]) ++ (with pkgs-unstable; [
# # sendme
]);
@@ -115,7 +131,10 @@
xwayland.enable = true;
};
system.stateVersion = "24.05";
systemd.extraConfig = "DefaultLimitNOFILE=2048";
boot.tmp.useTmpfs = false;
system.stateVersion = "25.05";
nixpkgs.config.allowUnfree = true;

View File

@@ -1,13 +1,13 @@
{
"base": {
"foreground": "#eedce2",
"background": "#221016"
"foreground": "#dbd2f8",
"background": "#0f062c"
},
"to_alter": {
"accent": "#ac5271",
"secondary": "#f20c5b",
"tertiary": "#d5a287",
"special": "#51ac8d",
"weird": "#0cf2a3"
"accent": "#724ce5",
"secondary": "#ff3271",
"tertiary": "#ffc932",
"special": "#bfe54b",
"weird": "#e54b8b"
}
}

View File

@@ -6,8 +6,7 @@ pkgs: rec {
rounding = 3;
gap-size = 5;
border-width = 2;
color =
let
color = let
dark = (-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; };
@@ -26,7 +25,7 @@ pkgs: rec {
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
fcolor = facolor // fbcolor;
xcolor = with ccolor; with fcolor; rec {
xcolor = with ccolor; with fcolor; {
background = "#000000";
# foreground = "#dddddd";
# accent = blue;
@@ -42,9 +41,8 @@ pkgs: rec {
in ccolor // fcolor // xcolor;
font = {
code = {
name = "JetBrainsMono-NF";
name2 = "JetBrainsMono Nerd Font";
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
name = "JetBrainsMono Nerd Font";
package = pkgs.nerd-fonts.jetbrains-mono;
# name = "CascadiaCove-NF";
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
};

816
flake.lock generated Executable file → Normal file

File diff suppressed because it is too large Load Diff

101
flake.nix Executable file → Normal file
View File

@@ -2,70 +2,111 @@
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
inputs = {
nixpkgs = { url = "nixpkgs/nixos-24.05"; };
nixpkgs = { url = "nixpkgs/nixos-25.05"; };
nixpkgs-unstable = { url = "nixpkgs/nixos-unstable"; };
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"; };
nix-on-droid = { url = "github:nix-community/nix-on-droid/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; };
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; };
hyprland = { url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; };
hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; 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";
zen-browser.url = "github:MarceColl/zen-browser-flake";
yazi = { url = "github:sxyazi/yazi"; };
yazi-plugins = { url = "github:lordkekz/nix-yazi-plugins"; inputs.nixpkgs.follows = "nixpkgs"; };
zen-browser = { url = "github:MarceColl/zen-browser-flake"; };
ghostty = { url = "github:ghostty-org/ghostty"; };
};
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-latest, home-manager, ... }@inputs: let
system = "x86_64-linux";
user = "nx2";
domain = "nx2.site";
outputs = { self, ... }@inputs: with inputs; let
system = "x86_64-linux";
config = { allowUnfree = true; allowUnfreePredicate = pkg: builtins.elem (pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
pkgs = import nixpkgs { inherit system config; };
pkgs-unstable = import nixpkgs-unstable { inherit system config; };
pkgs-latest = import nixpkgs-latest { inherit system config; };
hyper-base = rec {
inherit system;
user = "nx2";
domain = "nx2.site";
home = "/home/${user}/";
};
nvidia-set = import ./flake-modules/nvidia.nix;
pkgs = import nixpkgs { inherit system config; } // {
unstable = import nixpkgs-unstable { inherit system config; };
latest = import nixpkgs-latest { inherit system config; };
version = "25.05";
};
nvidia-base = import ./flake-modules/nvidia.nix;
secrets = import ./git-crypt/secrets.nix;
rice = import ./flake-modules/rice.nix pkgs;
in {
nixosConfigurations = let
make-nixos-system = host: nixpkgs.lib.nixosSystem {
make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
inherit system;
modules = [ ./configuration.nix ];
specialArgs = let
nvidia = nvidia-set // {
enable = if (host == "NxXPS" || host == "NxNORTH") then true else false;
prime = if (host == "NxXPS") then true else false;
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
in { inherit pkgs inputs hyper rice secrets; };
};
in { inherit inputs user host domain pkgs-unstable pkgs-latest secrets rice nvidia; };
make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
inherit system;
modules = [ ./nixos-wsl.nix ];
specialArgs = let
hyper = hyper-base // { inherit host; };
in { inherit pkgs inputs hyper rice; };
};
make-nixondroid-system = host: nixpkgs.lib.nixosSystem {
inherit system;
modules = [ ./nix-on-droid.nix ];
specialArgs = let
pkgs.version = "24.05";
hyper = hyper-base // {
inherit host;
system = "aarch64-linux";
home = assert 1 == 2; "";
};
in { inherit pkgs inputs hyper rice; };
};
in {
NxXPS = make-nixos-system "NxXPS";
NxNORTH = make-nixos-system "NxNORTH";
NxACE = make-nixos-system "NxACE";
NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; };
NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; };
NxACE = make-nixos-system "NxACE" { enable = false; };
NxWSL = make-nixos-wsl-system "NxWSL";
NxS23U = make-nixondroid-system "NxS23U";
};
homeConfigurations = let
make-home-configuration = host: user: home-manager.lib.homeManagerConfiguration {
make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [ ./home.nix ];
extraSpecialArgs = let
nvidia = nvidia-set // {
enable = if (host == "NxXPS" || host == "NxNORTH") then true else false;
prime = if (host == "NxXPS") then true else false;
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
in { inherit pkgs inputs hyper rice secrets; };
};
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 {
"${user}@NxXPS" = make-home-configuration "NxXPS" user;
"${user}@NxNORTH" = make-home-configuration "NxNORTH" user;
"${user}@NxACE" = make-home-configuration "NxACE" user;
"${hyper-base.user}@NxXPS" = make-home-configuration "NxXPS" hyper-base.user { enable = true; prime = true; };
"${hyper-base.user}@NxNORTH" = make-home-configuration "NxNORTH" hyper-base.user { enable = true; prime = false; };
"${hyper-base.user}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; };
"${hyper-base.user}@NxS23U" = make-shell-configuration "NxS23U" hyper-base.user;
"${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, ... }:
lib.mkIf (host != "NxACE")
{ pkgs, hyper, ... }:
{
home.packages = with pkgs; [
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;
}

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

@@ -0,0 +1,112 @@
{ pkgs, hyper, secrets, ... }: 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 pkgs.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 (pkgs.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" = pkgs.lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars;
"calendar.week.start" = 1;
});
}

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

@@ -1,51 +1,32 @@
{ pkgs, lib, rice, user, secrets, ... }:
{ pkgs, rice, secrets, ... }:
let
channels = [
"Caedrel"
"NoWay4u_Sir"
"zackrawrr"
"agurin"
"asmongold"
"Broeki"
"Broxah"
# "agurin"
# "asmongold"
# "Caedrel"
"chrissyofficial"
"EintrachtSpandau"
# "EintrachtSpandau"
"GamesDoneQuick"
"gdolphn"
"GRONKH"
"handofblood"
"HisWattson"
"imls"
"iskall85"
"Jankos"
"Karni"
"KuruHS"
"kutcherlol"
"LCK"
"LCS"
# "KuruHS"
"LEC"
"lol_nemesis"
"loltyler1"
"LPL"
"maxim"
"NASA"
"NNOPrime"
# "NoWay4u_Sir"
# "NASA"
"NoWay4u_Sir"
"OfficialMikeShinoda"
"ow_esports"
"PrimeGaming"
"PrimeLeague"
"Rekkles"
"riotgames"
"Sola"
"thebausffs"
"ThePrimeagen"
"Tolkin"
"Trick2g"
"TSM_ImperialHal"
"Xisuma"
# "zackrawrr"
# "TSM_ImperialHal"
"velja_lol"
# "Xisuma"
"zackrawrr"
];
tabber = channel-name: {
highlightsEnabled = true;
@@ -65,7 +46,7 @@ in {
home = {
packages = with pkgs; [ chatterino2 ];
file = {
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; ''
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
{
"accounts": {
"current": "${username}",
@@ -97,7 +78,7 @@ in {
},
"tabVisibility": 1,
"theme": {
"name": "Black"
"name": "nxtheme.json"
}
},
"behaviour": {
@@ -736,8 +717,7 @@ in {
}
'';
".local/share/chatterino/Settings/window-layout.json".text = builtins.toJSON {
windows = [
{
windows = [{
emotePopup = {
x = 0;
y = 0;
@@ -749,9 +729,99 @@ in {
width = 943;
x = 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
}
}
'';
};
};
}

View File

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

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

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

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

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

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

@@ -1,27 +1,19 @@
{ pkgs, lib, host, user, rice, secrets, ... }:
lib.mkIf (host != "NxACE")
{ pkgs, hyper, rice, secrets, ... }:
pkgs.lib.mkIf (hyper.host != "NxACE")
{
home.packages = with pkgs; [
thunderbird
];
programs.thunderbird = let
inherit (lib.generators) toJSON;
inherit (pkgs.lib.generators) 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";
"lightningcalendartabs@jlx.84" = "12d48e41-412e-4d09-835a-fa6fb8c180eb";
};
in {
enable = true;
profiles = {
"${user}" = {
"${hyper.user}" = {
isDefault = true;
settings = with rice.color; {
"calendar.alarms.showmissed" = false;
@@ -49,12 +41,46 @@ lib.mkIf (host != "NxACE")
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
userChrome = with rice.color; /* css */ ''
* {
color: ${rice.lib.hex-to-rgb-comma-string foreground} !important;
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
body,
#navigation-toolbox,
#calendarContent,
#calSidebar,
#tabpanelcontainer,
#spacesToolbar,
#tabs-toolbar,
#calMinimonth,
#primaryButtonSidePanel *,
.minimonth-week,
.multiday-header-corner, .day-column-heading, calendar-header-container, calendar-event-column, .multiday-hour-box,
#view-box,
#tabs-toolbar,
#status-bar,
.calview-toggle,
#calview-toggle-item,
#folderPaneHeaderBar,
#folderPane,
#threadPaneHeaderBar,
#threadTree,
#tabs-toolbar {
color: ${foreground} !important;
font-family: ${rice.font.base.name} !important;
background-color: transparent !important;
background-image: none !important;
border: none !important;
-moz-appearance: none !important;
}
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;
}
'';
@@ -63,8 +89,7 @@ lib.mkIf (host != "NxACE")
};
accounts.email.accounts =
let
accounts.email.accounts = let
OAuth2Settings = id: {
"mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.server.server_${id}.authMethod" = 10;

View File

@@ -1,11 +1,15 @@
# { pkgs-unstable, secrets, user, system, inputs, ...}:
{ rice, user, ... }:
{ pkgs, hyper, rice, ... }:
# 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;
in {
".mozilla/firefox/${user}/chrome/userChrome.css".text = /* css */ ''
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = /* css */ ''
:root{
/* Popup panels */
--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 */
/* url(about:newtab), url(about:home) */
@-moz-document url(about:blank) {
@@ -110,20 +114,14 @@
/* new-tab */
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
:root{
--newtab-background-color-secondary: ${background} !important;
}
body, html {
background: transparent !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};
.tile, .search-handoff-button {
border: ${builtins.toString rice.border-width}px solid ${border} !important;
}
}
@@ -140,7 +138,6 @@
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(20px);
}
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
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) {
body, html, header, #repository-container-header, .bgColor-muted, section {
background-color: transparent !important;
@@ -182,7 +197,8 @@
background-color: transparent !important;
}
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;
}
}
@@ -196,13 +212,51 @@
}
}
@-moz-document domain(nx2.site) {
@-moz-document url-prefix("https://nx2.site/") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: black;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
background-color: transparent !important;
}
.modal-open, .modal-header, form.modal-content, .modal-footer {
background-color: rgba(0,0,0,0.8) !important;
backdrop-filter: blur(5px);
}
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
background-color: rgba(0,0,0,0.8) !important;
border-radius: 10px !important;
border: ${toString rice.border-width}px solid ${border} !important;
}
}
@-moz-document domain(chatgpt.com) {
body, html , .bg-token-sidebar-surface-primary {
background-color: transparent !important;
}
.bg-token-main-surface-primary {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px) !important;
border-radius: ${builtins.toString rice.rounding}px !important;
}
}
'';
};
};
}

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

@@ -1,4 +1,4 @@
{ pkgs, lib, rice, user, ... }:
{ pkgs, ... }:
{
home.packages = with pkgs; [
fish
@@ -17,18 +17,18 @@
TFM
PROMPT
" | lolcat --force)
" | lolcat --force 2> /dev/null)
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 4p): ''${XDG_CURRENT_DESKTOP^}
$(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 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 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g')
$(echo -e "$logo" | sed -n 10p): $(yazi --version | yazi --version | sed -E 's-(.*?) \(.*-\1-g')
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1)
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/')
$(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
"
echo -e "$msg"
'')
@@ -38,14 +38,17 @@
programs.fish = {
enable = true;
shellAliases = {
ls = "eza --icons --git --smart-group --group-directories-first";
ll = "eza --icons --git --smart-group --group-directories-first --long";
la = "eza --icons --git --smart-group --group-directories-first --all";
lla = "eza --icons --git --smart-group --group-directories-first --all --long";
lt = "eza --icons --git --smart-group --group-directories-first --long --tree";
ltd = "eza --icons --git --smart-group --group-directories-first --long --tree -D";
lt2 = "eza --icons --git --smart-group --group-directories-first --long --tree -L 2";
shellAliases = let
base-eza = "eza --icons --git --smart-group --group-directories-first";
in {
ls = "${base-eza}";
ll = "${base-eza} --long";
lg = "${base-eza} --group --long";
la = "${base-eza} --all";
lla = "${base-eza} --all --long";
lt = "${base-eza} --long --tree";
ltd = "${base-eza} --long --tree -D";
lt2 = "${base-eza} --long --tree -L 2";
sr = "sudo reboot";
nf = "neofetch";
nxf = "nxfetch";
@@ -85,23 +88,25 @@
# ya = "yazi"; # function
# nxfiglet = "figlet";
};
interactiveShellInit = ''
interactiveShellInit = /* fish */ ''
set -g fish_greeting
if not set -q IN_NIX_SHELL
nxfetch
# yazi
if set -q SESSION_FROM_DE
set -e SESSION_FROM_DE
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" ]
cd -- "$cwd"
builtin cd -- "$cwd"
end
rm -f -- "$tmp"
end
nxfetch
end
'';
functions = {
take = /* bash */ ''
mkdir $argv
cd $argv
'';
# gpg = '';
# set bold \e[1m
# set green \e[32m

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

@@ -1,7 +1,19 @@
{ pkgs, lib, host, ... }:
lib.mkIf (host != "NxACE")
{ pkgs, hyper, ... }:
# lib.mkIf (host == "NxNORTH" || host == "NxACE")
pkgs.lib.mkIf (hyper.host == "NxNORTH")
{
home.packages = with pkgs; [
home = {
packages = (with pkgs.unstable; [
protonup
mangohud
# 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, ... }:
lib.mkIf (host == "NxXPS")
{ pkgs, hyper, ... }:
pkgs.lib.mkIf (hyper.host == "NxXPS")
{
home.packages = with pkgs; [
libinput-gestures

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

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

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

@@ -0,0 +1,10 @@
{ pkgs, ... }:
{
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, hyper, rice, ... }:
{
home.packages = with pkgs; [
git
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)")
];
programs.git = {
enable = true;
package = pkgs.gitFull;
userName = ''Lennart J. Kurzweg (Nx2)'';
userEmail = "git@nx2.site";
userEmail = "git@${hyper.domain}";
delta = {
enable = true;
options = {
@@ -46,6 +19,14 @@
whitespace-error-style = "22 reverse";
};
};
extraConfig = {
credential = {
"https://git.da.dicos.de".username = pkgs.lib.mkIf (hyper.host =="NxWSL") "lkurzweg";
"https://git.da.dicos.de".password = pkgs.lib.mkIf (hyper.host =="NxWSL") "Test";
};
url."ssh://git@git.da.dicos.de/".insteadOf = pkgs.lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/";
pull.rebase = false; # true
};
};
programs.lazygit = {
enable = true;

View File

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

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

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

View File

@@ -1,23 +1,25 @@
{ pkgs, pkgs-unstable,lib, rice, ... }:
{ pkgs, hyper, rice, ... }:
{
home = {
packages = with pkgs; [
# nixfmt-classic # nix formater
# nil # nix language server
# nixd # specified in nixd.nix
gopls
delve
python311Packages.python-lsp-server
jdt-language-server
ruff
ruff-lsp
# ruff-lsp
pyright
lldb # debugger for llvm stuff
yaml-language-server # yaml
marksman # markdown
vale-ls # style-checker lsp (needs vale)
ltex-ls # Ltex (language tool)
] ++ (with pkgs-unstable; [
vscode-langservers-extracted
bash-language-server
helix
]);
];
sessionVariables = {
EDITOR = "hx";
VISUAL = "hx";
@@ -26,57 +28,190 @@
programs.helix = {
enable = true;
defaultEditor = true;
package = pkgs-unstable.helix;
package = pkgs.unstable.helix;
settings = {
# theme = "base16_terminal";
theme = "base16";
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 = {
normal = "block";
insert = "bar";
select = "underline";
};
soft-wrap = {
enable = true;
file-picker = {
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 = {
render = true;
character = "";
skip-levels = 0;
};
lsp.display-inlay-hints = true;
statusline.center = [ "position-percentage" ];
true-color = true;
whitespace.characters = {
newline = "";
tab = "";
skip-levels = 1;
gutters = [
"diagnostics"
"spacer"
"line-numbers"
"spacer"
"diff"
];
# 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" ];
"A-`" = [ "no_op" ];
"`" = [ "no_op" ];
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
};
select = {
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
};
keys.normal."ö" = {
"s" = [ "switch_case" ];
"u" = [ "switch_to_uppercase" ];
"l" = [ "switch_to_lowercase" ];
};
};
languages = {
language = [
{
name = "nix";
language-servers = [ "nixd" "nil" ];
language-servers = [
"nixd"
# "llm"
];
}
{
name = "latex";
@@ -89,7 +224,6 @@
file-types = [ "md" "MD" ];
scope = "text.<name>";
}
{
name = "python";
language-servers = [ "pyright" "ruff" ];
@@ -122,13 +256,23 @@
}];
};
}
{
name = "go";
language-servers = [
"gopls"
# "llm"
];
# formatter = {
# command = "gofmt";
# };
}
];
language-server = {
"nixd" = {
command = "nixd";
};
"style-check" = {
command = lib.getExe pkgs.vale-ls;
command = pkgs.lib.getExe pkgs.vale-ls;
};
"language-tool" = {
command = "${pkgs.ltex-ls}/bin/ltex-ls";
@@ -137,20 +281,19 @@
command = "ruff-lsp";
config.settings.args = [
# Set line length
# "--line-length"
# "79"
# Enable some ruff rules
# "--select"
# (
# "F,W,E,I,N,D200,D201,D202,D203,D204,D205,D206,D207,D208,D209,D210,D211,"
# + "D212,D213,D214,D215,D300,D301,D400,D401,D402,D403,D404,D405,D406,"
# + "D407,D408,D409,D410,D411,D412,D413,D414,D415,D416,D417,D418,D419,"
# + "UP,YTT,TRIO,ASYNC,B,A,COM,C4,DTZ,T10,DJ,EXE,FA,ISC,ICN001,G010,"
# + "G101,G201,G202,INP,PIE,Q,RSE,RET,SLOT,SIM,TCH,INT,ARG,PTH,TD001,"
# + "TD004,TD005,TD006,TD007,PD,PL,TRY004,TRY200,TRY201,TRY302,TRY400,"
# + "TRY401,FLY,NPY,AIR,PERF,FURB,LOG,RUF"
# )
"--line-length"
"240"
# Enable custom ruff rules
# "--select" lib.concatStringsSep [ ]
];
};
"llm" = {
command = pkgs.lib.getExe pkgs.helix-gpt;
args = [
"--handler"
"ollama"
"--ollamaModel"
"codellama:7b"
];
};
};
@@ -159,15 +302,15 @@
base16 = with rice.color; {
"attributes" = foreground;
"comment" = {
"fg" = white.dark;
"modifiers" = [ "italic" ];
fg = black.bright;
modifiers = [ "italic" ];
};
"constant" = accent.bright;
"constant.character.escape" = special.bright;
"constant.numeric" = foreground;
"constructor" = weird.base;
"debug" = yellow.base;
"diagnostic.modifiers" = [ "underlined" ];
"diagnostic.modifiers" = [ "underline" ];
"diff.delta" = blue.bright;
"diff.minus" = negative.bright;
"diff.plus" = positive.bright;
@@ -176,6 +319,7 @@
"hint" = tertiary.bright;
"info" = foreground;
"keyword" = special.base;
"keyword.modifiers" = [ "italic" ];
"label" = foreground;
"namespace" = weird.bright;
"operator" = foreground;
@@ -188,131 +332,127 @@
"markup.heading" = accent.base;
"markup.bold" = {
"fg" = tertiary.bright;
"modifiers" = [ "bold" ];
fg = tertiary.bright;
modifiers = [ "bold" ];
};
"italic" = {
"fg" = secondary.bright;
"modifiers" = [ "italic" ];
fg = secondary.bright;
modifiers = [ "italic" ];
};
"markup.linktext" = accent.base;
"markup.linkurl" = {
"fg" = tertiary.dark;
"modifiers" = [ "underlined" ];
fg = tertiary.dark;
modifiers = [ "underlined" ];
};
"markup.list" = accent.bright;
"markup.quote" = weird.bright;
"markup.raw" = special.bright;
"markup.strikethrough" = {
"modifiers" = [ "crossed_out" ];
};
"markup.strikethrough".modifiers = [ "crossed_out" ];
"diagnostic.hint" = {
"underline" = { style = "curl"; };
};
"diagnostic.info" = {
"underline" = { style = "curl"; };
};
"diagnostic.warning" = {
"underline" = { style = "curl"; };
};
"diagnostic.error" = {
"underline" = { style = "curl"; };
};
"diagnostic.hint".underline.style = "curl";
"diagnostic.info".underline.style = "curl";
"diagnostic.warning".underline.style = "curl";
"diagnostic.error".underline.style = "curl";
"ui.background" = { # general background of the editor window
"bg" = background;
# bg = background;
};
"ui.bufferline" = { # the top line ("tab"-line)
"fg" = accent.base;
"bg" = black.base;
fg = accent.base;
bg = black.base;
};
"ui.bufferline.active" = { # the active "tab"
"fg" = background;
"bg" = accent.base;
"modifiers" = [ "bold" ];
fg = background;
bg = accent.base;
modifiers = [ "bold" ];
};
"ui.cursor" = { # the cursor in Normal mode
"fg" = foreground;
"modifiers" = [ "reversed" ];
fg = foreground;
modifiers = [ "reversed" ];
};
"ui.cursorline.primary" = { # the line on which the cursor is on
"bg" = black.base;
bg = black.base;
};
"ui.cursor.match" = { # Matching bracket etc.
"bg" = green.dark;
"modifiers" = [ ];
bg = green.dark;
modifiers = [ ];
};
"ui.gutter" = {
"bg" = black.base;
bg = black.base;
};
"ui.help" = {
"fg" = green.base;
"bg" = black.base;
fg = green.base;
bg = black.base;
};
"ui.linenr" = {
"fg" = white.dark;
"bg" = black.base;
fg = white.dark;
bg = black.base;
};
"ui.linenr.selected" = {
"fg" = accent.bright;
"modifiers" = [ "bold" ];
fg = accent.bright;
modifiers = [ "bold" ];
};
"ui.menu" = {
"fg" = accent.base;
"bg" = black.base;
fg = accent.base;
bg = black.base;
};
"ui.menu.scroll" = {
"fg" = yellow.dark;
"bg" = background;
fg = yellow.dark;
bg = background;
};
"ui.menu.selected" = {
"fg" = red.base;
"bg" = blue.dark;
fg = red.base;
bg = blue.dark;
};
"ui.popup" = {
"bg" = black.base;
bg = black.base;
};
"ui.selection" = {
"bg" = white.dark;
bg = white.dark;
};
"ui.selection.primary" = {
"bg" = black.bright;
bg = black.bright;
};
"ui.statusline" = {
"fg" = blue.bright;
"bg" = black.base;
fg = blue.bright;
bg = black.base;
};
"ui.statusline.inactive" = {
"fg" = red.bright;
"bg" = red.dark;
fg = red.bright;
bg = red.dark;
};
"ui.statusline.insert" = {
"fg" = green.bright;
"bg" = green.dark;
fg = green.bright;
bg = green.dark;
};
"ui.statusline.normal" = {
"fg" = yellow.bright;
"bg" = yellow.dark;
fg = yellow.bright;
bg = yellow.dark;
};
"ui.statusline.select" = {
"fg" = cyan.bright;
"bg" = cyan.dark;
fg = cyan.bright;
bg = cyan.dark;
};
"ui.text" = foreground;
"ui.text.focus" = accent.base;
"ui.virtual.indent-guide" = {
"fg" = black.bright;
fg = black.bright;
};
"ui.virtual.inlay-hint" = {
"fg" = weird.bright;
"bg" = weird.dark;
fg = weird.dark;
bg = weird.base;
};
"ui.virtual.ruler" = {
"bg" = background;
bg = background;
};
"ui.virtual.jump-label" = {
fg = special.base;
underline = {
style = "dotted";
};
};
"ui.window" = {
"bg" = black.base;
bg = black.base;
};
};
};

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

@@ -2,60 +2,80 @@
{
home = {
packages = with pkgs; [ hyprland-autoname-workspaces ];
file.".config/hyprland-autoname-workspaces/config.toml".text = ''
version = "1.1.14"
file.".config/hyprland-autoname-workspaces/config.toml".text = let
icons = /* toml */ ''
DEFAULT = "{class}"
"Alacritty" = ""
"Bitwarden" = ""
"blueman-manager" = "󰂯"
"chatterino" = ""
"Chromium" = ""
"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]
VirtualBox = ""
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 = ""
${icons}
[class_active]
"(?i)ExampleOneTerm" = "icon"
[initial_class]
@@ -73,35 +93,11 @@
[initial_title_in_class]
[initial_title]
"Spotify Premium" = ""
[initial_title_in_class_active]
[initial_title_in_initial_class]
[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}"
'';
};
}

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

@@ -1,19 +1,21 @@
{config, pkgs, pkgs-unstable, inputs, host, user, nvidia, rice, lib, ... }:
{ config, pkgs, hyper, inputs, rice, ... }:
let
animation-speed = "5";
transparency = builtins.toString rice.transparency;
terminal = "ghostty";
terminal-exec = "ghostty --command=";
monitors = {
xps = {
main = {
name = "eDP-1";
resolution = "1920x1200";
position = "0x0";
position = "0x1080";
scale = "1.0";
};
second = {
name = "DP-3";
resolution = "1920x1080";
position = "1920x0";
position = "0x0";
scale = "1.0";
};
};
@@ -21,13 +23,13 @@ let
main = {
name = "DP-4";
resolution = "2560x1440";
position = "1920x0";
position = "1920x150";
scale = "1.0";
};
left = {
name = "HDMI-A-2";
resolution = "1920x1080";
position = "0x360";
position = "0x0";
scale = "1.0";
};
# right = {
@@ -52,6 +54,7 @@ in {
hyprland-protocols
hyprlock
hypridle
hyprpicker
hyprcursor
grim
@@ -80,10 +83,10 @@ in {
settings = {
monitor =
if host == "NxXPS" then (with monitors.xps; [
if hyper.host == "NxXPS" then (with monitors.xps; [
"${main.name}, ${main.resolution}, ${main.position}, ${main.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}"
"${left.name}, ${left.resolution}, ${left.position}, ${left.scale}"
# "${right.name}, ${right.resolution}, ${right.position}, ${right.scale}"
@@ -91,15 +94,13 @@ in {
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
]));
workspace =
let
d1 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
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 host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
# d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
workspace = 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);
d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.hyper.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 hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
in
[
in [
"11, monitor:${d1}, default:true"
"12, monitor:${d1}"
"13, monitor:${d1}"
@@ -121,7 +122,7 @@ in {
"28, monitor:${d2}"
"29, monitor:${d2}"
"20, monitor:${d2}"
"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}"
"33, monitor:${d3}"
"34, monitor:${d3}"
@@ -131,6 +132,10 @@ in {
"38, monitor:${d3}"
"39, monitor:${d3}"
"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" = {
@@ -138,7 +143,7 @@ in {
# };
env = if nvidia.enable == true then [
env = if hyper.nvidia.enable == true then [
"LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland"
"GBM_BACKEND,nvidia-drm"
@@ -174,12 +179,12 @@ in {
decoration = {
rounding = rice.rounding;
drop_shadow = false;
shadow_range = "20";
shadow_offset = "0 0";
shadow_render_power = "4";
"col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)";
"col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)";
# drop_shadow = false;
# shadow_range = "20";
# shadow_offset = "0 0";
# shadow_render_power = "4";
# "col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)";
# "col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)";
active_opacity = "1.0";
inactive_opacity = "1.0";
@@ -204,7 +209,7 @@ in {
# bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o
# bezier = "myBezier, 0.83, 0, 0.17, 1"; # io
bezier = "myBezier, 0.33, 1, 0.68, 1";
animation = let direction = if host == "NxXPS" then "slide" else "slidevert"; in [
animation = let direction = if hyper.host == "NxXPS" then "slide" else "slidevert"; in [
"windows, 1, ${animation-speed}, myBezier, slide"
"border, 1, ${animation-speed}, myBezier"
"fade, 1, ${animation-speed}, myBezier"
@@ -228,7 +233,6 @@ in {
dwindle = {
preserve_split = true; # you probably want this
no_gaps_when_only = true;
};
# master = {
@@ -255,9 +259,28 @@ in {
];
windowrulev2 = [
"opacity ${transparency},class:^(com.chatterino.*)$"
"opacity ${transparency},class:^(chatterino)$"
"bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
"noanim, class:^(presenter)$" # sent
"float, class:^(presenter)$" # sent
"noanim, class:^(imv)$"
"float, class:^(imv)$"
"fullscreen, class:^(imv)$"
# "float, initialTitle:^(Edit Item)$" # thunderbid calendar
# "dimaround on, initialTitle:^(Edit Item)$" # thunderbid calendar
"float,class:^(thunderbird)$"
# "float,class:^(thunderbird)$,title:^(.*)(Reminder)(.*)$"
# "float,class:^(thunderbird)$,title:^About(.*)$"
# "float,class:^(thunderbird)$,title:^(Check Spelling)$"
"center 1,class:^(gimp)$"
] ++ [
"bordersize 0, floating:0, onworkspace:w[tv1]"
"rounding 0, floating:0, onworkspace:w[tv1]"
"bordersize 0, floating:0, onworkspace:f[1]"
"rounding 0, floating:0, onworkspace:f[1]"
];
windowrule = [
@@ -270,16 +293,15 @@ in {
"opacity ${transparency}, obsidian"
# "opacity ${transparency}, zathura"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Kitty"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), ${terminal}"
"opacity ${transparency}, discord"
"opacity ${transparency}, vesktop"
"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}, ^([sS]potify)$"
# "opacity ${transparency}, virt-manager"
# "opacity ${transparency}, thunar"
"opacity ${transparency}, title:^(wlogout)$"
"opaque, title:^(GNU Image Manipulation Program)$"
"float, title:^(Picture-in-Picture)$"
@@ -326,20 +348,20 @@ in {
"SUPER, F1, workspace, 100"
"SUPER SHIFT, F1, movetoworkspace, 100"
# "SUPER, F2,"
"SUPER, F3, toggleopaque"
# "SUPER, F4,"
# "SUPER, F3, toggleopaque"
"SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'Cleared Saved Event!' ''"
"SUPER, F5, exec, nx_gcal_event force-lookup"
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
"SUPER, F6, exec, kitty -e 'htop'"
"SUPER, F7, exec, kitty -e '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, 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 SHIFT, F9, exec, firefox /home/${user}/.config/color-pallete.html ''
"SUPER, F6, exec, ${terminal-exec}'htop'"
"SUPER, F7, exec, ${terminal-exec}'nmtui'"
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
"SUPER, F9, execr, waybar_mode set '󰸉 '"
"SUPER, F9, submap, color"
# "SUPER, F10, hyprload,update"
"SUPER, F11, exec, waybar"
"SUPER SHIFT, F11, exec, pkill waybar "
"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:
@@ -385,18 +407,19 @@ in {
"SUPER, R, exec, rofi -show drun"
# "SUPER, T, exec, alacritty"
# "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace""
"SUPER, T, exec, SESSION_FROM_DE=TRUE kitty"
"SUPER SHIFT, T, exec, kitty -e sh -c 'ssh nxace'"
# "SUPER, Z, "
"SUPER, U, exec, thunderbird "
"SUPER, I, exec, kitty -e fish -c 'hx ~/nix-dots/ && fish'"
"SUPER SHIFT, I, exec, kitty -e fish -c 'nh home switch || read'"
"SUPER CTRL, I, exec, kitty -e fish -c 'nh os switch || read'"
"SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}"
"SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'"
"SUPER, Z, exec, zathura"
"SUPER, U, exec, [tile] thunderbird "
"SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
"SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'"
"SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'"
"SUPER, O, exec, obsidian "
"SUPER, P, pin "
# "SUPER, Ü,"
# "SUPER, +,"
# "SUPER, Enter,"
"SUPER, Enter, exec, SESSION_FROM_DE=TRUE ${terminal}"
###########################################################################
## ROW 3:
@@ -404,7 +427,7 @@ in {
"SUPER, A, execr, waybar_mode set ' 󰹑 '"
"SUPER, A, submap, scrL"
"SUPER, S, exec, spotify"
"SUPER, D, exec, vesktop"
"SUPER, D, exec, vesktop --disable-gpu-compositing"
"SUPER, F, fullscreen"
# "SUPER, G,"
"SUPER, H, movefocus, l"
@@ -424,6 +447,7 @@ in {
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
"SUPER, C, exec, chatterino"
"SUPER SHIFT, C, exec, hyprpicker -n -a"
"SUPER, V, togglefloating, "
"SUPER, B, exec, bitwarden"
"SUPER, N, togglesplit"
@@ -504,396 +528,95 @@ in {
# 'Y8b. 88 88 88''Yb. 88 88 8888888 888888P' 'Y8b.
# db 8D 88. .88 88 8D 88 88 88' '88 88 db 8D
# '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
bind = , W, exec, waybar_mode unset
bind = , W, exec, hyprctl dispatch exec firefox
bind = , W, submap, reset
bind = , Y, exec, waybar_mode unset
bind = , Y, exec, firefox https://youtube.com
bind = , Y, submap, reset
bind = , T, exec, waybar_mode unset
bind = , T, exec, hyprctl dispatch exec firefox https://twitch.tv
bind = , T, submap, reset
bind = , R, exec, waybar_mode unset
bind = , R, exec, firefox https://reddit.com
bind = , R, submap, reset
bind = , C, exec, waybar_mode unset
bind = , C, exec, firefox https://calendar.google.com
bind = , C, 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
${action_simple { key = "A"; cmd = "exec,firefox https://www.amazon.de/b?node=3010075031&ref_=nav_ya_signin";}}
${action_simple { key = "C"; cmd = "exec,firefox https://calendar.google.com";}}
${action_simple { key = "D"; cmd = "exec,firefox https://www.disneyplus.com/home";}}
${action_simple { key = "H"; cmd = "exec,firefox https://www.hs-mittweida.de";}}
${action_simple { key = "I"; cmd = "exec,firefox https://www.imdb.com";}}
${action_simple { key = "L"; cmd = "exec,firefox https://feddit.de";}}
${action_simple { key = "M"; cmd = "exec,firefox https://ieji.de/home";}}
${action_simple { key = "N"; cmd = "exec,firefox https://Netflix.com";}}
${action_simple { key = "R"; cmd = "exec,firefox https://reddit.com";}}
${action_simple { key = "S"; cmd = "exec,firefox 127.0.0.1:8384/";}}
${action_simple { key = "T"; cmd = "exec,hyprctl dispatch exec firefox https://twitch.tv";}}
${action_simple { key = "udiaeresis"; cmd = "exec,firefox https://translate.google.com";}}
${action_simple { key = "W"; cmd = "exec,hyprctl dispatch exec firefox";}}
${action_simple { key = "X"; cmd = "exec,firefox https://nx2.site";}}
${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
bind=,Z,exec,waybar_mode set ' '
bind=,Z,submap,tuda
bind=,Z,submap,reset
bind=,Escape,exec,waybar_mode unset
bind=,Escape,submap,reset
submap = reset
submap = scrL
bind = , 1, execr, waybar_mode unset
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
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
bind = , A, execr, waybar_mode unset
bind = , A, submap, reset
bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset
submap = reset
submap = scrR
bind = , 1, execr, waybar_mode unset
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
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
bind = , Y, execr, waybar_mode unset
bind = , Y, submap, reset
bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset
submap = reset
plugin {
hyprexpo {
columns = 5
gap_size = ${builtins.toString rice.gap-size}
bg_col = rgb(${builtins.substring 1 6 rice.color.background})
workspace_method = first 10 # [center/first] [workspace] e.g. first 1 or center m+1
enable_gesture = false # laptop touchpad, 4 fingers
gesture_distance = 300 # how far is the "max"
gesture_positive = true # positive = swipe down. Negative = swipe up.
}
}
plugin {
overview {
panelColor = rgba(00000088)
workspaceActiveBackground = rgba(00ff00ff)
workspaceInactiveBackground = rgba(0000ffff)
# workspaceActiveBorder =
# workspaceInactiveBorder =
dragAlpha = 0.5
panelHeight = 200
workspaceMargin = 30
workspaceBorderSize = 3
centerAligned = true
overrideGaps = false
gapsIn = 0
gapsOut = 0
hideBackgroundLayers = false
drawActiveWorkspace = true
autoDrag = true
autoScroll = true
exitOnClick = false
switchOnDrop = false
exitOnSwitch = trueß
showNewWorkspace = true
showEmptyWorkspace = false
}
}
# 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 = 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
'';
};
home.file =
let
m = if host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
in
{
home.file = let
m = if hyper.host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
in {
".config/hypr/hyprlock.conf".text = ''
background {
monitor = ${m}
# 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_passes = 3 # 0 disables blurring
noise = 0.0117

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

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

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

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

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

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

View File

@@ -1,4 +1,4 @@
{ pkgs, host, ... }:
{ pkgs, hyper, ... }:
{
home.packages = with pkgs; [
# cinny-desktop
@@ -79,7 +79,7 @@
nx2site.ssl_verify = on
nx2site.username = "nx2"
nx2site.password = "''${sec.data.matrix_nx2site_password}"
nx2site.device_name = "Weechat@${host}"
nx2site.device_name = "Weechat@${hyper.host}"
nx2site.autoreconnect_delay = 10
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, hyper, ... }:
{
home = {
packages = with pkgs-unstable; [
packages = with pkgs; [
nh
nix-output-monitor
nvd
];
sessionVariables = {
FLAKE = "${config.home.homeDirectory}/nix-dots";
NH_FLAKE = "${hyper.home}/nix-dots";
};
};
}

View File

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

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

View File

@@ -0,0 +1,67 @@
{ pkgs, ... }:
{
home.packages = [
(pkgs.writeShellApplication {
name = "nx_backup";
runtimeInputs = [ ];
text = let
web-root = "/var/nginx/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:"
df -h | head -n 1
df -h | grep -P "^/dev.+? "
'';
})
];
}

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

@@ -0,0 +1,51 @@
{ pkgs, ... }:
{
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, ... }:
lib.mkIf (host != "NxACE")
{ pkgs, hyper, ... }:
pkgs.lib.mkIf (hyper.host != "NxACE")
{
# home.packages = with pkgs; [
# obs-studio

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

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

View File

@@ -1,6 +1,7 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
ollama
(writers.writePython3Bin "ooo" {
libraries = [ pkgs.python3Packages.ollama ];
flakeIgnore = [ "E501" "E305" "E701" "E704" "E302" "E114" "F841" "E121" ];

View File

@@ -0,0 +1,38 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
bat
browsh
cmake
dig
du-dust
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, ... }:
lib.mkIf (host != "NxACE")
{ pkgs, hyper, secrets, ... }:
pkgs.lib.mkIf (hyper.host != "NxACE")
{
home.packages = [
pkgs.remmina
@@ -7,7 +7,7 @@ lib.mkIf (host != "NxACE")
(pkgs.writeShellScriptBin "connect_to_pnx" ''
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
'')

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,7 @@
{ pkgs, ... }:
{
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
];
}

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

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

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

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

@@ -14,7 +14,7 @@
}
* {
font: "${rice.font.code.name2} 12";
font: "${rice.font.code.name} 12";
foreground: ${foreground};
background-color: ${background}${trdr};
padding: 0px;

View File

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

View File

@@ -3,8 +3,6 @@ let
my-sent = pkgs.sent.override {
patches = [
./sent.patch
# /home/${user}/.local/share/sent.patch
# (builtins.toFile "/home/${user}/
];
};
in

View File

@@ -1,4 +1,4 @@
{ user, inputs, ... }:
{ hyper, inputs, ... }:
{
imports = [
inputs.sops-nix.homeManagerModules.sops
@@ -6,7 +6,7 @@
sops = {
# age.keyFile = "/home/${user}/.config/sops/age/keys.txt";
gnupg.home = "/home/${user}/.gnupg";
gnupg.home = "${hyper.home}/.gnupg";
defaultSopsFile = ../sops-secrets.yaml;
# %r is $XDG_RUNTIME_DIR

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

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

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

@@ -1,12 +1,13 @@
{ lib, rice, ... }:
{ pkgs, rice, ... }:
{
programs.starship = {
enable = true;
package = pkgs.starship;
# enableBashIntegration = true;
enableFishIntegration = true;
settings = with rice.color; {
add_newline = false;
format = lib.strings.concatMapStrings (x: "$" + x) [
format = pkgs.lib.strings.concatMapStrings (x: "$" + x) [
"jobs"
"battery"
"username"

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

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

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

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

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

@@ -1,6 +1,6 @@
{ config, pkgs, lib, user, host, rice, allowed, ... }:
{ config, pkgs, hyper, rice, ... }:
{
config = lib.mkIf (host != "NxACE") {
config = pkgs.lib.mkIf (hyper.host != "NxACE") {
home.packages = [
pkgs.vscodium
pkgs.nixpkgs-fmt
@@ -8,6 +8,36 @@
programs.vscode = {
enable = true;
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; [
jnoortheen.nix-ide
ms-python.python
@@ -23,8 +53,6 @@
mads-hartmann.bash-ide-vscode
bungcip.better-toml
arrterian.nix-env-selector
# ms-vscode-remote.remote-ssh
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "just-black";
@@ -50,66 +78,27 @@
version = "0.5.16";
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;
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 [
# Make vscode settings writable
(import
(builtins.fetchurl {
url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix";
sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8";
})
{ inherit config lib; })
# imports = if hyper.host != "NxACE" then [
# # Make vscode settings writable
# (import
# (builtins.fetchurl {
# url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix";
# sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8";
# })
# { inherit config pkgs; lib = pkgs.lib; })
(import
(builtins.fetchurl {
url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix";
sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f";
})
{ inherit config lib pkgs; })
] else [];
# (import
# (builtins.fetchurl {
# url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix";
# sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f";
# })
# { inherit config pkgs; lib = pkgs.lib; })
# ] else [];
}

View File

@@ -1,6 +1,6 @@
{ pkgs-unstable, ... }:
{ pkgs, ... }:
{
home.packages = with pkgs-unstable; [
home.packages = with pkgs; [
(writers.writePython3Bin "change_colors_json" {
libraries = with python3Packages; [ numpy pillow scikit-learn ];
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
@@ -8,6 +8,8 @@
from colorsys import hls_to_rgb, rgb_to_hls
import json
import sys
import subprocess
from time import sleep
from typing import Literal, cast
from numpy.typing import NDArray
from sklearn.cluster import KMeans
@@ -25,7 +27,7 @@ def fc(c: int) -> str:
return s
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"
self.rgb = cast(tuple[int, int, int], rgb)
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)
else:
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)
return [int(r*255), int(g*255), int(b*255)]
@@ -115,14 +117,25 @@ def extract_colors(
colors.sort(reverse=True)
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__":
img = sys.argv[1]
if sys.argv[1] == "img":
img = sys.argv[2]
palette = extract_colors(image=img, palette_size=3)
accent = ensure_color(c=palette[0], alter_sat=False)
secondary = ensure_color(c=palette[1], alter_sat=True)
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)
special = alter_hue(ilist=accent, hue=180)
foreground = alter_l(accent, 0.9)

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

@@ -1,9 +1,12 @@
{ lib, pkgs, user, rice, ... }: let
{ pkgs, hyper, rice, ... }:
let
sep = " ";
in {
home.packages =
let
waybar_mode_script = /*bash*/ ''
sops.secrets = {
"nx2site/radicale/password" = { };
};
home.packages = with pkgs; [
(writeShellApplication { name = "waybar_mode"; text = /*bash*/ ''
print_help() {
echo "Usage: waybar_mode {set <string>|unset}"
}
@@ -33,19 +36,127 @@ in {
;;
esac
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"))))}')
if [ $# -eq 0 ]; then
echo "󰃮${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
elif [ "$1" = "--no-icons" ]; then
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
fi
'';
in
with pkgs; [
(writeShellApplication { name = "waybar_mode"; text = waybar_mode_script;})
(writeShellApplication { name = "cclock"; text = cclock_script;})
'';})
(writers.writePython3Bin "caldav_event" {
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
flakeIgnore = [ "E302" "E305""E501" "E261" ];
} /* python */ ''
import os
import json
from caldav import DAVClient
from datetime import datetime, timezone
from ics import Calendar
from pytz import UTC
def get_password(password_file):
with open(password_file, "r") as file:
return file.read().strip()
def datetime_converter(obj):
if isinstance(obj, datetime):
return obj.isoformat()
return obj
def datetime_parser(dct):
for key, value in dct.items():
if isinstance(value, str):
try:
dct[key] = datetime.fromisoformat(value)
except ValueError:
pass
return dct
def load_cache(cache_file):
if os.path.exists(cache_file):
with open(cache_file, "r") as file:
return json.load(file, object_hook=datetime_parser)
return None
def save_cache(cache_file, data):
with open(cache_file, "w") as file:
json.dump(data, file, default=datetime_converter)
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 = {
@@ -64,6 +175,7 @@ in {
margin-bottom = 0;
margin-right = 0;
spacing = 10;
fixed-center = true;
modules-left = [
# "cpu"
# "memory"
@@ -78,7 +190,7 @@ in {
];
modules-right = [
"custom/mode"
"custom/ctimeremaining"
# "custom/caldav_event"
"custom/cclock"
"tray"
];
@@ -97,10 +209,12 @@ in {
exec = "cclock";
restart-interval = 60;
};
# "custom/ctimeremaining" = {
# exec = "nx_gcal_event lookup";
# restart-interval = 60;
# };
"custom/caldav_event" = {
format = "󰃰${sep}{}";
exec = "caldav_event";
restart-interval = 60;
max-width = 60;
};
"custom/mode" = {
exec = "cat /tmp/waybar-mode";
interval = "once";
@@ -163,7 +277,7 @@ 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;
min-height: 0px;
margin: 0px;
@@ -182,6 +296,7 @@ in {
#clock,
#custom-cclock,
#custom-mode,
#custom-caldav-event,
#battery,
#cpu,
#tray,
@@ -198,6 +313,10 @@ in {
color: rgb(${f accent.bright});
}
#workspaces {
font-family: ${rice.font.code.name};
}
#workspaces button {
color: rgb(${f accent.base});
padding-left: 15px;
@@ -207,7 +326,7 @@ in {
#workspaces button.active {
color: rgb(${f background});
background-color: rgba(${f accent.base},${builtins.toString rice.transparency});
background-color: rgb(${f accent.base});
}
#workspaces button:hover {
@@ -222,8 +341,8 @@ in {
color: rgb(${f red.base});
}
#window, #custom-ctimeremaining {
font-family: ${rice.font.base.name}, ${rice.font.code.name2};
#window, #custom-caldav_event {
font-family: ${rice.font.base.name}, ${rice.font.code.name};
color: rgb(${f tertiary.bright});
}
@@ -238,11 +357,14 @@ in {
color: rgb(${f green.base});;
}
#battery.critical {
color: rgb(${f red.dark});;
background: rgb(${f red.bright});
#battery.charging {
color: rgb(${f green.base});
}
#battery.critical {
background: rgb(${f negative.base});
color: rgb(${f foreground});
}
#battery.charging { color: rgb(${f green.base}); }
'';
#battery.critical:not(.charging) {

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

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

@@ -1,16 +1,185 @@
{ pkgs, system, rice, inputs, ... }:
{ pkgs, hyper, rice, inputs, ... }:
{
home.packages = with pkgs; [
# yazi
dragon
unar
];
programs.yazi = {
enable = true;
package = inputs.yazi.packages.${system}.default;
# package = pkgs.yazi;
package = inputs.yazi.packages.${hyper.system}.default;
enableFishIntegration = true;
shellWrapperName = "ya";
plugins = with inputs.yazi-plugins.packages.${hyper.system}; {
inherit
# chmod
starship;
};
# initLua = /* lua */ '' '';
keymap = {
manager.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"; }
{ 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 = {
manager = {
layout = [2 3 4];
@@ -21,19 +190,15 @@
linemode = "size";
show_hidden = false;
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 = {
"edit" = [
{ run = ''hx "$@"''; desc = "helix"; block = true; }
{ run = ''codium "$@"''; orphan = true;}
{ run = ''nano "$@"''; desc = "nano"; block = true;}
{ run = ''codium "$@"''; desc = "code"; orphan = true; }
];
"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"; }
];
"archive" = [
@@ -42,33 +207,38 @@
{ run = ''unzip "$1"''; desc = "unzip"; }
];
"image" = [
{ run = ''imv "$@"''; desc = "imv";}
{ run = ''gimp "$@"''; desc = "gimp";}
{ run = ''imv "$@"''; desc = "imv"; orphan = true; }
{ 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 = ''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" = [
{ run = ''inkscape "$@"''; desc = "inkscape";}
{ run = ''firefoc "$@"''; desc = "firefox";}
{ run = ''inkscape "$@"''; desc = "inkscape"; orphan = true; }
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
];
"font" = [
{ run = ''fontpreview "$@"''; desc = "fontpreview"; }
{ run = ''fontforge "$@"''; desc = "fortforge"; }
{ run = ''fontpreview "$@"''; desc = "fontpreview"; orphan = true; }
{ run = ''fontforge "$@"''; desc = "fortforge"; orphan = true; }
];
"document" = [
{ run = ''zathura "$@"''; desc = "zathura"; }
{ run = ''xournal "$@"''; desc = "xournal"; }
{ run = ''firefox "$@"''; desc = "firefox"; }
{ run = ''zathura "$@"''; desc = "zathura"; orphan = true; }
{ run = ''xournal "$@"''; desc = "xournal"; orphan = true; }
{ 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" = [
{ run = ''firefox "$@"''; desc = "firefox"; }
{ run = ''zen "$@"''; desc = "zen"; }
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; }
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
{ run = ''zen "$@"''; desc = "zen"; orphan = true; }
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; orphan = true; }
{ run = ''w3m "$@"''; desc = "w3m"; }
{ run = ''lynx "$@"''; desc = "lynx"; }
];
"office" = [
{ run = ''libreoffice "$@"''; desc = "libreoffice"; }
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; }
{ run = ''libreoffice "$@"''; desc = "libreoffice"; orphan = true; }
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; orphan = true; }
];
"shell" = [
{ run = ''bash -c "$@"''; desc = "bash -c"; }
@@ -87,6 +257,7 @@
{ mime = "text/htm"; use = [ "edit" "browser" ]; }
{ mime = "text/x-python"; use = "python"; }
{ mime = "text/*"; use = "edit"; }
{ mime = "text"; use = "edit"; }
{ mine = "inode/x-empty"; use = "edit"; }
{ mine = "inode/directory"; use = "edit"; }
@@ -94,9 +265,11 @@
{ mime = "image/*"; use = "image"; }
{ 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/javascript"; use = "edit"; }
{ mime = "application/json"; use = "edit"; }
{ mime = "application/ld+json"; use = "edit"; }
{ mime = "application/pdf"; use = "document"; }

View File

@@ -1,18 +1,24 @@
{ pkgs, rice, ... }:
{ rice, ... }:
{
programs.zathura = {
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-fg = foreground;
completion-highlight-bg = background;
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;
highlight-active-color = "rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5)";
highlight-color = "rgba(${rice.lib.hex-to-rgb-comma-string secondary.base},0.5)";
highlight-fg = "rgba(${rice.lib.hex-to-rgb-comma-string secondary.base},0.5)";
index-active-bg = background;
highlight-active-color = "rgba(${f accent.base},0.5)";
highlight-color = "rgba(${f secondary.base},0.5)";
highlight-fg = "rgba(${f secondary.base},0.5)";
index-fg = accent.bright;
index-bg = black.dark;
index-active-fg = background;
index-active-bg = foreground;
inputbar-bg = background;
inputbar-fg = foreground;
notification-bg = background;
@@ -31,6 +37,19 @@
n-completion-items = 9999999999999;
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

123
home.nix Executable file → Normal file
View File

@@ -1,9 +1,10 @@
{ pkgs, pkgs-unstable, host, user, inputs, ... }:
{ pkgs, hyper, inputs, ... }:
{
imports = [
./home-modules/auto-mount.nix
./home-modules/bash.nix
./home-modules/bitwarden.nix
./home-modules/calendar.nix
./home-modules/chatterino.nix
./home-modules/color-pallete.nix
./home-modules/direnv.nix
@@ -11,9 +12,10 @@
./home-modules/email.nix
./home-modules/firefox.nix
./home-modules/fish.nix
# ./home-modules/foot.nix
./home-modules/games.nix
./home-modules/gestures.nix
./home-modules/ghostty.nix
./home-modules/gimp.nix
./home-modules/git.nix
./home-modules/gpg.nix
./home-modules/gtk.nix
@@ -28,8 +30,7 @@
./home-modules/nh.nix
./home-modules/nixd.nix
./home-modules/nvidia.nix
./home-modules/nx2site.nix
# ./home-modules/nx-gcal-event.nix
./home-modules/nxgs.nix
./home-modules/obs.nix
./home-modules/office.nix
./home-modules/ollama.nix
@@ -37,10 +38,13 @@
./home-modules/pnx.nix
./home-modules/programming/c.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/qt.nix
./home-modules/rofi.nix
./home-modules/scanning.nix
./home-modules/sent.nix
./home-modules/sops.nix
./home-modules/ssh.nix
@@ -55,73 +59,88 @@
./home-modules/yazi.nix
./home-modules/zathura.nix
./home-modules/zoxide.nix
];
home.username = user;
home.homeDirectory = "/home/${user}";
home.stateVersion = "24.05";
] ++ (if (hyper.host == "NxACE") then [
./home-modules/nx2site.nix
./home-modules/nx2site-backup.nix
] else []);
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;
home.packages = with pkgs; [
bat
brightnessctl
browsh
chromium
# zathura
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
dig
du-dust
exiftool
eza
ffmpeg
figlet
fontpreview
fzf
glib
glow
gnumake
gsettings-desktop-schemas
imagemagick
imv
jq
lolcat
lynx
mediainfo
mpv
neofetch
pavucontrol
pdfgrep
piper-tts
pipes
playerctl
pv
qbittorrent
reflex
ripgrep
screen
speedtest-go
spicetify-cli
sssnake
swww
systemctl-tui
tldr
unstable.firefox
unstable.spotify
w3m
wev
wl-clipboard
xclip
xournal
ghostscript
xfce.thunar
# xournal
yt-dlp
inputs.zen-browser.packages."${system}".default
] ++ (with pkgs-unstable; [
obsidian
firefox
spotify
]) ++ (if host != "NxACE" then (with pkgs; [
] ++ (if hyper.host != "NxACE" then [
signal-desktop
obsidian
zoom-us
gimp
inkscape
]) else (with pkgs-unstable; [
] else {
]));
});
xdg = {
enable = true;
configHome = /home/${user}/.config;
cacheHome = /home/${user}/.cache;
dataHome = /home/${user}/.local/share;
stateHome = /home/${user}/.local/state;
configHome = "${hyper.home}.config";
cacheHome = "${hyper.home}.cache";
dataHome = "${hyper.home}.local/share";
stateHome = "${hyper.home}.local/state";
mimeApps = {
enable = true;
defaultApplications =
let
defaultApplications = let
browser = "firefox.desktop";
in
{
in {
"default-web-browser" = [ browser ];
"text/html" = [ browser ];
"text/htm" = [ browser ];

22
nixos-wsl.nix Normal file
View File

@@ -0,0 +1,22 @@
{ pkgs, hyper, inputs, ... }:
{
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, hyper, ... }:
{
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, ... }:
lib.mkIf (host != "NxACE")
{ pkgs, hyper, lib, ... }:
lib.mkIf (hyper.host != "NxACE")
{
environment.systemPackages = with pkgs; [
adbfs-rootless
];
programs.adb = {
enable = true;
};

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

@@ -1,7 +1,7 @@
{ config, pkgs, pkgs-unstable, lib, host, domain, inputs, ... }:
{ config, pkgs, hyper, inputs, ... }:
let
grub-theme-ascii-diana = (pkgs.fetchFromGitea {
domain = "git.${domain}";
domain = "git.${hyper.domain}";
owner = "nx2";
repo = "grub-theme-ascii-diana";
rev = "0.5.0";
@@ -9,22 +9,20 @@ let
});
in
{
imports = if host == "NxNORTH" then [
imports = if hyper.host == "NxNORTH" then [
inputs.lanzaboote.nixosModules.lanzaboote
] else [];
config = if host == "NxNORTH" then {
config = if hyper.host == "NxNORTH" then {
# I have to boot with secureboot becasue of the chinese spyware called Vanguard
environment.systemPackages = with pkgs; [ sbctl ];
boot = {
lanzaboote =
let
lanzaboote = let
windows-efi-shell-fs-alias = "HD0a65535a2";
in
{
in {
enable = true;
pkiBundle = "/etc/secureboot";
package = lib.mkForce (pkgs.writeShellApplication {
package = pkgs.lib.mkForce (pkgs.writeShellApplication {
name = "lzbt";
runtimeInputs = [
inputs.lanzaboote.packages.x86_64-linux.tool
@@ -76,13 +74,13 @@ in
# '';
# };
};
kernelPackages = pkgs-unstable.linuxPackages_zen;
kernelPackages = pkgs.linuxPackages_zen;
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1'';
};
security.polkit.enable = true;
} else if host == "NxXPS" then {
} else if hyper.host == "NxXPS" then {
boot = {
loader = {
efi.canTouchEfiVariables = true;
@@ -105,7 +103,7 @@ in
'';
};
};
kernelPackages = pkgs-unstable.linuxPackages_6_10;
kernelPackages = pkgs.linuxPackages_latest;
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
@@ -120,6 +118,7 @@ in
efiSupport = true;
};
};
kernelPackages = pkgs.linuxPackages; # default kernel of pkgs
};
};
}

View File

@@ -0,0 +1,137 @@
{ pkgs, ... }:
{
systemd.timers."nx_cal_dicos" = {
enable = true;
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "40m";
OnUnitActiveSec = "24h";
Unit = "nx_cal_dicos.service";
};
};
systemd.services."nx_cal_dicos" = {
script = let
nx_cal_dicos = (pkgs.writers.writePython3Bin "nx_cal_dicos" {
libraries = with pkgs.python3Packages; [
ics
];
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /* python */ ''
import os
from glob import glob
from ics import Calendar
from ics.event import datetime
NETTO_STUNDE = 18.46
WEEKLY = 12
week_dict = {}
latest_week = 0
latest_goal = WEEKLY
deficit = 0
def fraction_to_unicode(frac):
div, rem = divmod(frac, 1)
if rem == 0.5:
unicode = "½"
elif rem == 0.25:
unicode = "¼"
elif rem == 0.75:
unicode = "¾"
elif rem == 0:
unicode = ""
else:
unicode = rem
if div == 0:
h = ""
else:
h = int(div)
return f"{h}{unicode}"
def modify_event(event):
"""Modify the event if it contains 'DICOS' in the SUMMARY."""
global week_dict
global latest_goal
global latest_week
global deficit
if event.name is not None and "DICOS" in event.name:
length = (event.end - event.begin).seconds / 3600
money_made = divmod(length * NETTO_STUNDE, 1)
# Calculate total hours for DICOS events in the same week
year, week, _ = event.begin.isocalendar()
if week != latest_week:
try:
deficit = latest_goal - week_dict[f"{year}_{latest_week}"]
except KeyError:
deficit = 0
week_dict[f"{year}_{week}"] = length + (week_dict[f"{year}_{week}"] if f"{year}_{week}" in week_dict else 0)
progress = week_dict[f"{year}_{week}"]
goal = WEEKLY + deficit
if week != latest_week:
latest_goal = goal
latest_week = week
new_description = [event.description.split("\n")[0] or "::"]
new_description.append("")
new_description.append(f"Netto: {money_made[0]:.0f},{int(money_made[1] * 10):02d}")
new_description.append(f"This weeks porgress: ({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})")
new_description.append(f"This weeks deficit: {fraction_to_unicode(deficit)}")
event.description = "\n".join(new_description)
event.name = f"DICOS {fraction_to_unicode(length)}"
return event
def process_ics_file(filepath):
"""Read, modify, and overwrite an ICS file."""
with open(filepath, 'r') as f:
calendar = Calendar(f.read())
modified = False
for event in calendar.events:
if event.name is not None and 'DICOS' in event.name:
event = modify_event(event)
modified = True
if modified:
with open(filepath, 'w') as f:
f.writelines(calendar.serialize_iter())
def get_event_start_time(filepath):
"""Extract the event's start time from an ICS file."""
with open(filepath, 'r') as f:
calendar = Calendar(f.read())
for event in calendar.events:
return event.begin.datetime
else:
return datetime(year=1, month=1, day=1)
if __name__ == "__main__":
directory = "/var/lib/radicale/collections/collection-root/nx2/experience"
ics_files = glob(os.path.join(directory, "*.ics"))
if not ics_files:
print("No ICS files found in the directory.")
sorted_files = sorted(ics_files, key=get_event_start_time)
for ics_file in sorted_files:
process_ics_file(ics_file)
print("Processing complete.")
'');
in ''
${nx_cal_dicos}/bin/nx_cal_dicos
'';
serviceConfig = {
Type = "oneshot";
User = "radicale";
};
};
}

View File

@@ -0,0 +1,89 @@
{ config, pkgs, hyper, ... }:
{
systemd.timers."nx_cal_lec" = {
enable = true;
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "40m";
OnUnitActiveSec = "24h";
Unit = "nx_cal_lec.service";
};
};
systemd.services."nx_cal_lec" = {
script = let
nx_cal_lec = (pkgs.writers.writePython3Bin "nx_cal_lec" {
libraries = with pkgs.python3Packages; [
ical
ics
requests
dateutils
];
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /*python */ ''
from ics import Calendar
import requests
from datetime import timedelta
def adjust_events(events):
"""
Adjust overlapping events to ensure they do not conflict.
"""
sorted_events = sorted(events, key=lambda e: e.begin)
for i in range(1, len(sorted_events)):
previous_event = sorted_events[i - 1]
current_event = sorted_events[i]
if current_event.begin < previous_event.end:
# Adjust the start time of the current event to just after the previous event
current_event.begin = previous_event.end + timedelta(minutes=1)
print(f"Adjusted event '{current_event.name}' to start at {current_event.begin} and end at {current_event.end}")
return sorted_events
def fetch_and_save_ical_events(ical_url, save_path):
"""
Fetch events from an iCal URL and save them as a single combined calendar.
"""
try:
# Fetch the iCal data
response = requests.get(ical_url)
response.raise_for_status()
# Parse the iCal data
calendar = Calendar(response.text)
# Adjust events
adjusted_events = adjust_events(list(calendar.events))
# Create a new combined calendar
combined_calendar = Calendar()
for event in adjusted_events:
combined_calendar.events.add(event)
# Save the combined calendar to a single .ics file
with open(save_path, 'w') as file:
file.writelines(combined_calendar.serialize_iter())
print(f"Saved combined calendar to {save_path}")
except requests.exceptions.RequestException as e:
print(f"Error fetching iCal data: {e}")
except Exception as e:
print(f"Error processing iCal data: {e}")
if __name__ == "__main__":
# Replace with your iCal URL and target file path
ICAL_URL = "https://zlypher.github.io/lol-events/cal/league-of-legends-lec.ical"
SAVE_PATH = "${config.services.nginx.virtualHosts."${hyper.domain}".root}/lec.ics"
fetch_and_save_ical_events(ICAL_URL, SAVE_PATH)
'');
in ''
${nx_cal_lec}/bin/nx_cal_lec
'';
serviceConfig = {
Type = "oneshot";
User = hyper.user;
};
};
}

View File

@@ -0,0 +1,74 @@
{ config, pkgs, hyper, ... }:
{
systemd.timers."nx_cal_lr" = {
enable = true;
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "41m";
OnUnitActiveSec = "24h";
Unit = "nx_cal_lr.service";
};
};
systemd.services."nx_cal_lr" = {
script = let
nx_cal_lr = (pkgs.writers.writePython3Bin "nx_cal_lr" {
libraries = with pkgs.python3Packages; [
ics
requests
];
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /*python */ ''
from ics import Calendar
import requests
def filter_events(events):
return [event for event in events if ("LR" in event.name) or ("TBD" in event.name)]
def fetch_and_save_ical_events(ical_url, save_path):
"""
Fetch events from an iCal URL and save them as a single combined calendar.
"""
try:
# Fetch the iCal data
response = requests.get(ical_url)
response.raise_for_status()
# Parse the iCal data
calendar = Calendar(response.text)
# Adjust events
adjusted_events = filter_events(list(calendar.events))
# Create a new combined calendar
combined_calendar = Calendar()
for event in adjusted_events:
combined_calendar.events.add(event)
# Save the combined calendar to a single .ics file
with open(save_path, 'w') as file:
file.writelines(combined_calendar.serialize_iter())
print(f"Saved combined calendar to {save_path}")
except requests.exceptions.RequestException as e:
print(f"Error fetching iCal data: {e}")
except Exception as e:
print(f"Error processing iCal data: {e}")
if __name__ == "__main__":
# Replace with your iCal URL and target file path
ICAL_URL = "https://zlypher.github.io/lol-events/cal/league-of-legends-nlc.ical"
SAVE_PATH = "${config.services.nginx.virtualHosts."${hyper.domain}".root}/lr.ics"
fetch_and_save_ical_events(ICAL_URL, SAVE_PATH)
'');
in ''
${nx_cal_lr}/bin/nx_cal_lr
'';
serviceConfig = {
Type = "oneshot";
User = hyper.user;
};
};
}

View File

@@ -0,0 +1,138 @@
{ pkgs, hyper, ... }:
let
radicale-root = "/var/lib/radicale";
web-root = "/var/nginx/webroot";
in
{
systemd.timers."nx_cal_publish" = {
enable = true;
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "2m";
OnUnitActiveSec = "6h";
Unit = "nx_cal_publish.service";
};
};
systemd.services."nx_cal_publish" = {
script = with pkgs; let
nx_cal_publish = (writers.writePython3Bin "nx_cal_publish" {
libraries = with python3Packages; [
ical
ics
requests
dateutils
];
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /*python */ ''
import pytz
import os
from ics import Calendar, Event
from ics.grammar.parse import ContentLine
from dateutil.rrule import rrulestr
from ics.event import datetime, timedelta
def combine_ics_from_directories(directories, output_file):
"""
Combine all .ics events from a list of directories into one .ics file, supporting recurring events.
:param directories: List of directories containing .ics files.
:param output_file: Path to the output .ics file.
"""
combined_calendar = Calendar()
for directory in directories:
if not os.path.exists(directory):
print(f"Directory '{directory}' does not exist. Skipping.")
continue
for filename in os.listdir(directory):
if filename.endswith(".ics"):
file_path = os.path.join(directory, filename)
try:
with open(file_path, 'r') as file:
calendar = Calendar(file.read())
for event in calendar.events:
# Handle recurring events
rrule_line = None
for line in event.extra:
if isinstance(line, ContentLine) and line.name == "RRULE":
rrule_line = line
break
if rrule_line:
# Convert UNTIL to UTC if DTSTART is timezone-aware
rrule_params = rrule_line.value.split(";")
rrule_dict = {}
for param in rrule_params:
key, value = param.split("=")
rrule_dict[key] = value
if "UNTIL" in rrule_dict and event.begin.tzinfo:
until = datetime.fromisoformat(rrule_dict["UNTIL"])
if until.tzinfo is None: # If UNTIL is naive, make it UTC
until = until.astimezone(pytz.UTC)
rrule_dict["UNTIL"] = until.astimezone(pytz.UTC).strftime("%Y%m%dT%H%M%SZ")
# Reconstruct RRULE string
rrule_fixed = ";".join(f"{key}={value}" for key, value in rrule_dict.items())
rrule = rrulestr(rrule_fixed, dtstart=event.begin.astimezone(pytz.timezone('CET')))
# Expand recurring events and filter based on the date
for occurrence in rrule:
notTooOld = occurrence.date() >= (datetime.now().astimezone(pytz.UTC) - timedelta(days=1)).date()
notTooFuturisic = occurrence.date() < (datetime.now().astimezone(pytz.UTC) + timedelta(days=60)).date()
if notTooOld and notTooFuturisic:
new_event = Event(
name="",
begin=occurrence,
end=occurrence + (event.end - event.begin),
transparent=event.transparent or True,
)
combined_calendar.events.add(new_event)
else:
# Regular events, directly add if within date range
if event.begin.astimezone(pytz.timezone('CET')).date() >= (datetime.now().astimezone(pytz.timezone('CET')) - timedelta(days=1)).date():
new_event = Event(
name="",
begin=event.begin,
end=event.end,
transparent=event.transparent or True,
)
combined_calendar.events.add(new_event)
except Exception as e:
print(f"Error reading file '{file_path}': {e}")
exit(1)
try:
with open(output_file, 'w') as file:
file.writelines(combined_calendar.serialize_iter())
print(f"Combined .ics file saved to '{output_file}'")
except Exception as e:
print(f"Error saving combined .ics file: {e}")
if __name__ == "__main__":
# List of directories containing .ics files
DIRECTORIES = [
"${radicale-root}/collections/collection-root/${hyper.user}/preservation",
"${radicale-root}/collections/collection-root/${hyper.user}/effort",
"${radicale-root}/collections/collection-root/${hyper.user}/experience",
"${radicale-root}/collections/collection-root/${hyper.user}/exposure",
"${radicale-root}/collections/collection-root/${hyper.user}/engagement",
]
# Path to the output .ics file
OUTPUT_FILE = "${web-root}/schedule.ics"
combine_ics_from_directories(DIRECTORIES, OUTPUT_FILE)
'');
in ''
${nx_cal_publish}/bin/nx_cal_publish
'';
serviceConfig = {
Type = "oneshot";
User = hyper.user;
};
};
}

View File

@@ -0,0 +1,11 @@
{ ... }:
{
programs.dconf.enable = true;
services = {
gnome = {
evolution-data-server.enable = true; # optional to use google/nextcloud calendar
gnome-online-accounts.enable = true; # optional to use google/nextcloud calendar
gnome-keyring.enable = true;
};
};
}

0
system-modules/davmail.nix Executable file → Normal file
View File

4
system-modules/dm.nix Executable file → Normal file
View File

@@ -1,11 +1,11 @@
{ pkgs, user, ... }:
{ pkgs, hyper, ... }:
{
services.greetd = {
enable = true;
settings = rec {
hyprland = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland --remember-user-session --window-padding 5";
user = user;
user = hyper.user;
};
default_session = hyprland;
vt = 2;

4
system-modules/docker.nix Executable file → Normal file
View File

@@ -1,4 +1,4 @@
{ config, pkgs, user, ... }:
{ pkgs, hyper, ... }:
{
environment.systemPackages = with pkgs; [
@@ -12,7 +12,7 @@
# vpnKitMaxPortIdleTime = 0;
# };
};
users.users."${user}".extraGroups = [ "docker" ];
users.users."${hyper.user}".extraGroups = [ "docker" ];
networking.firewall.allowedTCPPorts = [
80
443

View File

@@ -1,4 +1,4 @@
{ pkgs, pkgs-unstable, ... }:
{ pkgs, ... }:
{
# i18n.inputMethod = {
# type = "fcitx5";
@@ -10,7 +10,8 @@
# ];
# };
i18n.inputMethod = {
enabled = "fcitx5";
enable = true;
type = "fcitx5";
fcitx5.waylandFrontend = true;
fcitx5.addons = with pkgs; [
fcitx5-gtk # alternatively, kdePackages.fcitx5-qt

View File

@@ -1,20 +1,20 @@
{
pkgs,
# pkgs-unstable,
rice,
...
}:
{ pkgs, rice, ... }:
{
fonts.packages = with pkgs; [
noto-fonts
noto-fonts-cjk
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-emoji
newcomputermodern
atkinson-hyperlegible
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
nerd-fonts.jetbrains-mono
nerd-fonts.zed-mono
nerd-fonts.profont
nerd-fonts.proggy-clean-tt
nerd-fonts.heavy-data
nerd-fonts._3270
] ++ (with rice.font; [
base.package
code.package
# ]) ++ (with pkgs-unstable; [
]);
}

0
system-modules/fuse.nix Executable file → Normal file
View File

16
system-modules/games.nix Normal file
View File

@@ -0,0 +1,16 @@
{ pkgs, hyper, ... }:
# lib.mkIf (host == "NxNORTH" || host == "NxACE")
pkgs.lib.mkIf (hyper.host == "NxNORTH")
{
programs = {
steam = {
enable = true;
};
gamemode = {
enable = true;
};
gamescope = {
enable = true;
};
};
}

26
system-modules/hardware-configuration.nix Executable file → Normal file
View File

@@ -1,4 +1,4 @@
{ config, lib, user, host, pkgs, modulesPath, ... }:
{ config, pkgs, hyper, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
@@ -13,10 +13,10 @@
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems = if host != "NxACE" then {
fileSystems = if hyper.host != "NxACE" then {
"/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; };
"/boot" = { device = "/dev/disk/by-label/EFI"; fsType = "vfat"; };
"/home/${user}/shared" = { device = "/dev/disk/by-label/shared"; fsType = "ntfs"; options = [ "uid=1000" "gid=100" ]; };
"/home/${hyper.user}/shared" = { device = "/dev/disk/by-label/shared"; fsType = "ntfs"; options = [ "uid=1000" "gid=100" ]; };
} else {
"/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; };
"/boot" = { device = "/dev/disk/by-label/EFI"; fsType = "vfat"; };
@@ -29,24 +29,24 @@
{ device = "/dev/disk/by-label/swap"; }
];
networking.useDHCP = lib.mkDefault true;
networking.useDHCP = pkgs.lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = pkgs.lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = pkgs.lib.mkDefault config.hardware.enableRedistributableFirmware;
# from nixos-hardware
services.thermald.enable = lib.mkDefault true;
boot.extraModprobeConfig = if host == "NxXPS" then ''
services.thermald.enable = pkgs.lib.mkDefault true;
boot.extraModprobeConfig = if hyper.host == "NxXPS" then ''
options iwlwifi 11n_disable=8
'' else "";
boot.initrd.kernelModules = if host == "NxXPS" then [ "i915" ] else [];
boot.initrd.kernelModules = if hyper.host == "NxXPS" then [ "i915" ] else [];
environment.variables = if host == "NxXPS" then {
VDPAU_DRIVER = lib.mkIf config.hardware.opengl.enable (lib.mkDefault "va_gl");
environment.variables = if hyper.host == "NxXPS" then {
VDPAU_DRIVER = pkgs.lib.mkIf config.hardware.graphics.enable (pkgs.lib.mkDefault "va_gl");
} else {};
hardware.opengl.extraPackages = if host == "NxXPS" then with pkgs; [
(if (lib.versionOlder (lib.versions.majorMinor lib.version) "24.05") then vaapiIntel else intel-vaapi-driver)
hardware.graphics.extraPackages = if hyper.host == "NxXPS" then with pkgs; [
(if (lib.versionOlder (lib.versions.majorMinor lib.version) "25.05") then vaapiIntel else intel-vaapi-driver)
libvdpau-va-gl
intel-media-driver
] else [];

37
system-modules/health_reminder.nix Executable file → Normal file
View File

@@ -1,5 +1,5 @@
{ config, pkgs, lib, host, ... }:
lib.mkIf (host != "NxACE")
{ pkgs, hyper, ... }:
pkgs.lib.mkIf (hyper.host != "NxACE")
{
systemd.timers."health_reminder" = {
enable = true;
@@ -11,11 +11,10 @@ lib.mkIf (host != "NxACE")
};
};
systemd.services."health_reminder" =
let
hm =
let p = /*python*/ ''
#!${pkgs.python3}/bin/python3
systemd.services."health_reminder" = let
hm = pkgs.writers.writePython3Bin "health_reminder" {
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /*python*/ ''
import random
import re
@@ -35,25 +34,21 @@ lib.mkIf (host != "NxACE")
return action
actions = [
Action("look away for %o Seconds!",300, ["10", "15"] ),
Action("Posture Check!", 90 ),
Action("Do %o Biceps curls!", 5, ["50", "100", "150"] ),
Action("Do %o Shourlder thingees", 5, ["40 + 40", "50", "60"]),
Action("Plank for %o senonds!", 5, ["60", "60", "70"] ),
Action("Strech your upper body!", 20 ),
Action("Strech your core!", 10 ),
Action("Strech your legs!", 10 ),
Action("Make Tea!", 5 ),
Action("Touch Grass!", 5 )
Action(action="look away for %o Seconds!", likelihood=300, options=["10", "15"]),
Action(action="Posture Check!", likelihood=300),
Action(action="Strech your upper body!", likelihood=20),
Action(action="Strech your core!", likelihood=10),
Action(action="Strech your legs!", likelihood=10),
Action(action="Strech your arms/hands!", likelihood=10),
Action(action="Make Tea!", likelihood=5),
Action(action="", likelihood=2),
]
total_likelihood = sum(a.likelihood for a in actions)
random_action = random.choices(actions, [a.likelihood for a in actions], k=1)[0]
print(random_action)
'';
in pkgs.writeScriptBin "health_reminder" p;
in
{
in {
script = ''
set -eu
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus"
@@ -61,7 +56,7 @@ lib.mkIf (host != "NxACE")
'';
serviceConfig = {
Type = "oneshot";
User = "nx2";
User = hyper.user;
};
};
}

0
system-modules/hsmw.nix Executable file → Normal file
View File

32
system-modules/hugo.nix Normal file
View File

@@ -0,0 +1,32 @@
{ pkgs, hyper, ... }:
let p = pkgs; in
{
environment.systemPackages = with p; [
hugo
dart-sass
];
users = {
groups = {
"hugo".name = "hugo";
};
users = {
"${hyper.user}".extraGroups = [ "hugo" ];
"nginx".extraGroups = [ "hugo" ];
"hugo" = {
isSystemUser = true;
group = "hugo";
};
};
};
systemd.services."hugo" = {
script = with p; /* shell */ ''
${hugo}/bin/hugo serve --port 8000 --bind 10.0.1.1 --baseURL http://10.0.1.1:8000 -s /var/lib/hugo/nx2site/
'';
serviceConfig = {
Type = "simple";
User = "hugo";
};
};
}

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