212 Commits

Author SHA1 Message Date
github-actions add26c628b Update README.md (auto) 2026-01-01 16:15:25 +00:00
Hadi 8a58bbbaf0 v4.0.0
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2026-01-01 17:15:04 +01:00
github-actions d8d55793eb Update KEYBINDINGS-HYPRLAND.md (auto) 2025-12-09 16:44:29 +00:00
Hadi 83bae2864e wofi -> vicinae
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-12-09 17:44:18 +01:00
Hadi 2ad13f1c9e update flake
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-12-09 17:44:11 +01:00
Hadi 9bbc356145 update
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-12-03 12:27:33 +01:00
Hadi 26fea007b1 add nuclei
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-10 22:15:59 +01:00
Hadi 56e55563a1 gogo ghostty
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-06 16:55:00 +01:00
Hadi ed679817a7 add caido & wireshark
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-04 16:15:06 +01:00
Hadi f3ffdbbace remove nextcloud
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-04 16:15:01 +01:00
Hadi f1f129c6dd remove bitwarden
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-04 16:14:44 +01:00
Hadi 121fe69f7a add readarr
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-04 16:14:40 +01:00
Hadi 2722fa31f2 edit apps
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-03 15:50:33 +01:00
Hadi c9e072899b change kitty config & switch from alacritty to kitty
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-03 15:49:02 +01:00
Hadi 499701b522 change theme
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-03 15:48:42 +01:00
Hadi f65f244d39 change theme
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-03 15:48:30 +01:00
Hadi 8d35a32efe update flake
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-11-03 15:48:26 +01:00
Hadi 245b28ad75 update git config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-10-25 22:03:13 +02:00
Hadi d9691bdb61 update flakes
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-10-25 21:53:07 +02:00
Hadi 4d9d4f2abc kitty -> alacritty
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-10-16 21:18:02 +02:00
Hadi fd2e6137ac add utils
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-10-16 21:16:33 +02:00
Hadi 69c9c99ff3 init alacritty
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-10-16 21:16:28 +02:00
github-actions 3ed7e22446 Update KEYBINDINGS-HYPRLAND.md (auto) 2025-10-13 10:06:09 +00:00
Hadi 8910fca468 update
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-10-13 12:05:57 +02:00
Hadi 29aec4ca49 get back wofi for now
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-10-13 12:05:49 +02:00
Hadi cfa774af45 update eleakxir
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-10-02 17:28:06 +02:00
Hadi a90082c9ab new secret
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-29 14:09:34 +02:00
Hadi 33fee1a1d4 update
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-25 19:53:45 +02:00
Hadi 1b5c6892fd remove git ignore on eza
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-25 19:49:26 +02:00
Hadi 277cfaf772 update
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-24 19:12:48 +02:00
Hadi d7e8223351 change eleakxir configuration
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-24 19:12:35 +02:00
Hadi f89d0852fd QOL Nvf
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-24 19:08:29 +02:00
Hadi 704b14ddb3 remove Nextcloud shortcut
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-23 19:24:41 +02:00
Hadi f3b970909f change wallpaper
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-23 19:24:35 +02:00
Hadi da146a380c change notes dir
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-23 19:24:14 +02:00
Hadi 1668774dc1 eleakxir: init
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-16 13:38:40 +02:00
Hadi 12d7f1613b update secrets
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-16 13:38:28 +02:00
Hadi cb295ec299 Merge branch 'main' of github.com:anotherhadi/nixy 2025-09-13 23:08:25 +02:00
Hadi d81dbe3912 add nixpkgs-stable
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-13 23:08:10 +02:00
github-actions 49aefae1a9 Update KEYBINDINGS-HYPRLAND.md (auto) 2025-09-13 08:34:50 +00:00
Hadi 77cd9829f3 add back the bindings
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-13 10:34:29 +02:00
Hadi a1b0ad29c8 temp fix
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-12 15:49:10 +02:00
Hadi 11debdf507 update flakes
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-12 15:48:59 +02:00
Hadi b774b07c10 working state
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-12 15:27:41 +02:00
Hadi bc2c6e667f remove unused
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-12 14:49:27 +02:00
github-actions 64133bcc1a Update SCRIPTS.md (auto) 2025-09-12 12:44:19 +00:00
Hadi 7ab918dae2 remove unused
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-12 14:44:09 +02:00
github-actions 14b0229ba8 Update KEYBINDINGS-HYPRLAND.md (auto) 2025-09-12 12:36:27 +00:00
Hadi d76f1537a9 Merge branch 'main' of github.com:anotherhadi/nixy 2025-09-12 14:36:02 +02:00
Hadi 13b3ff9dde old unused wofi bindings
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-12 14:35:51 +02:00
github-actions f34c34b26f Update KEYBINDINGS-HYPRLAND.md (auto) 2025-09-12 12:35:04 +00:00
Hadi 6d3c6e3628 change bindings
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-12 14:34:51 +02:00
Hadi 3b41e08df8 update & remove old files
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-12 14:33:02 +02:00
Hadi 0f59b1a46d add todolist
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-11 17:25:55 +02:00
Hadi 4134593cb9 edit max volume
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-11 17:25:50 +02:00
Hadi 564737edb0 change to brave browser
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-09-11 17:25:41 +02:00
Hadi 5b7c100cac let's try with ripgrep
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-29 00:21:37 +02:00
Hadi 20d700ba61 change styling & font
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-29 00:13:13 +02:00
Hadi 664d7add82 remove old calendar
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-29 00:03:23 +02:00
Hadi a9ebb64bdf remove the number of notifications
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-28 23:52:43 +02:00
Hadi a3d41dd26c edit waybar & swaync config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-28 23:50:40 +02:00
Hadi bca5274f0a add vpn module
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-28 23:29:39 +02:00
github-actions 6bc4c9a024 Update KEYBINDINGS-HYPRLAND.md (auto) 2025-08-28 21:11:45 +00:00
Hadi 7cb64cdd29 change for waybar
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-28 23:11:34 +02:00
github-actions 52f40f1dbb Update SCRIPTS.md (auto) 2025-08-28 18:59:37 +00:00
Hadi 92aef4f62c add powermode-toggle
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-28 20:59:26 +02:00
Hadi 9252a652e8 Not using duckduckgo anymore
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-25 19:55:57 +02:00
Hadi 4a443e38d1 remove walker
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-25 19:52:54 +02:00
Hadi a4a7babd9c remove walker
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-25 19:52:05 +02:00
Hadi 501ef4b42b add bindings for proton's app
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-25 19:41:21 +02:00
Hadi c104f30980 change shortcuts
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-25 19:34:31 +02:00
Hadi 731b9908ae add apps and remove nextcloud
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-25 19:32:24 +02:00
Hadi 267e177b29 remove exec once of tailscale
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-25 19:32:13 +02:00
github-actions 48edffbd54 Update SCRIPTS.md (auto) 2025-08-25 17:31:18 +00:00
Hadi e462fa2247 Merge pull request #45 from Dylouwu/feat/qol 2025-08-25 19:31:10 +02:00
Purin 9506544bf2 removed useless options in wofi
Same as last commit, you probably did it on purpose to allow easier
modification later on.

Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 16:01:11 +02:00
Purin b8d4d07835 removed caffeine in tofi as Hypridle is not used anymore
This is another change that can be ignored as hypridle can be commented
out and used again in nixy (even though it's quite clunky)

Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:57:16 +02:00
Purin da0342e33b Fix not needed anymore and allows rounding on all apps
Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:55:22 +02:00
Purin afbafc9752 removed useless packages for screenshot
Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:53:27 +02:00
Purin cbd541355f Hyprlock tweak, removed useless options and added QoL tweaks
This can be seen as a subjective change and you can ignore it if it does
not fit into your idea of nixy.

Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:43:08 +02:00
Purin 8a84ab9f9a added overrideGpg to lazygit
This allows to remove the flickering/prompting from lazygit when
committing a signed commit.

Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:33:03 +02:00
Purin 55184184de added new options when right-clicking in Thunar
Open Terminal Here and Extract here options

Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:29:32 +02:00
Purin dc9147edb2 garbage collect cleans more stuff
You might want to remove the logging

Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:24:00 +02:00
Purin dc10bf31ba changed nixy from having an upgrade to a test option
This allows you to test the configuration without building it, where as
upgrade is useless with flakes (and can be confusing with update)

Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:12:35 +02:00
Purin 8c7f7d6475 removed allowUnfree redundancy
Signed-off-by: Purin <118902463+Dylouwu@users.noreply.github.com>
2025-08-25 15:02:47 +02:00
Hadi 51ae14e927 update flake
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-23 17:18:43 +02:00
Hadi 437f2cc9a4 add vert.sh to the bookmarks
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-23 17:09:33 +02:00
Hadi 04846a3115 update flakes
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-09 20:03:43 +02:00
Hadi 6928cc67a3 Merge pull request #42 from romek-codes/systemd-extra-config-rfc-42 2025-08-09 19:38:53 +02:00
Hadi 2537136dd3 Merge branch 'main' of github.com:anotherhadi/nixy 2025-08-09 19:37:01 +02:00
Hadi 09a4b0c73b edit n4c alias
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-08-09 19:36:58 +02:00
Hadi 493604b935 Merge pull request #43 from romek-codes/fix-hyprpanel-layouts 2025-08-09 19:36:16 +02:00
romek 8eaab355a3 fix hyprpanel bar layout config 2025-08-08 23:34:38 +02:00
Romek c950e56e3c Update systemd extraConfig to rfc 42 2025-08-08 21:49:30 +02:00
Hadi 0ad27db2ac change the alias
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-29 15:20:01 +02:00
Hadi 78f0775755 change wallpaper
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-29 14:19:48 +02:00
Hadi b5bd461fb5 remove grave
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-29 14:19:44 +02:00
Hadi 267ffb1384 Merge branch 'main' of github.com:anotherhadi/nixy 2025-07-29 14:19:32 +02:00
Hadi b864cc849b update eleakxir
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-29 14:18:38 +02:00
Hadi 8dab0dd063 remove rmtrash
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-29 14:15:57 +02:00
Hadi 32a14a461f change leaks path
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-28 14:40:37 +02:00
Hadi 33e9f955ee mounting /mnt/data
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-28 14:40:33 +02:00
Hadi bb5befa151 add duckdb
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-28 14:36:38 +02:00
Hadi 885267c0eb add eleakxir
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-28 00:24:19 +02:00
Hadi cec4e34ae7 testing eleakxir prod
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-27 23:00:16 +02:00
Hadi 05a39ecf87 update flake
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-24 18:00:14 +02:00
Hadi 16b0ca1e33 add utils and cache
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-24 17:59:57 +02:00
Hadi b5e21d4b35 init walker
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-24 17:59:48 +02:00
Hadi 3ce5491157 disable hypridle
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-24 17:59:35 +02:00
Hadi 178f09cebb put back the custom dirs
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-24 17:56:36 +02:00
Hadi d63a8a83fc Merge pull request #39 from MehdiBoustani/patch-1 2025-07-21 21:17:20 +02:00
Mehdi Boustani b0beefee03 feat (hyprpanel): generic directories configuration 2025-07-21 20:40:35 +02:00
Hadi 7493c4cf8b disable recyclarr for now
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-16 20:53:15 +02:00
Hadi 072bf09e16 remove hyprpanel overlay
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-16 20:32:27 +02:00
Hadi de39437dec todo
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-16 20:32:21 +02:00
Hadi 1ae7955b91 increase download buffer size
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-16 20:32:16 +02:00
Hadi 70ac5576cc add adguard pwd secret to glance
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-16 20:23:47 +02:00
github-actions ffa38127e5 Update KEYBINDINGS-HYPRLAND.md (auto) 2025-07-16 18:14:55 +00:00
Hadi c6e1bdbfee update laptop configuration
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-16 20:14:43 +02:00
Hadi 5000be6de6 update/format configuration for jack
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-16 19:51:05 +02:00
Hadi bb2993b125 update
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-16 19:25:32 +02:00
Hadi 8e37b228a0 change secrets
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-11 10:47:09 +02:00
Hadi 62ebaa83c7 edit ssh config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-07 10:31:53 +02:00
Hadi 6f5f4a65f3 Merge branch 'main' of github.com:anotherhadi/nixy 2025-07-07 10:31:34 +02:00
Hadi d9eb0483b6 fix typescript error with svelte
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-07 10:13:45 +02:00
github-actions 29b1c479f2 Update README.md (auto) 2025-07-04 16:52:13 +00:00
Hadi e6e9799c39 Fix github callout 2025-07-04 18:51:58 +02:00
github-actions badd7ed261 Update README.md (auto) 2025-07-04 16:49:29 +00:00
Hadi 47563cf9f5 Fix github callouts 2025-07-04 18:49:06 +02:00
Hadi 3422996f46 change theme
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
2025-07-04 15:44:06 +02:00
Hadi 09dd8dc501 zen global config init
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 13d6150a4592ca4cd5e3f4950c838ae57523727c
2025-07-01 17:48:52 +02:00
Hadi cf461ddafc fix hyprpanel config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 8639b495d233014065227a3e6ea0ed564af4c592
2025-07-01 17:48:29 +02:00
Hadi 0bfcb20fda update flake & fix hyprpanel
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: eebaa0ffc17af2e314bba4c7161a9b76ffd03cd8
2025-07-01 17:36:22 +02:00
github-actions bb45ec9bdb Update README.md (auto)
Former-commit-id: 852502635cfccdd5c4b9f5c833a2c45984d5417c
2025-06-25 23:08:30 +00:00
Hadi e780728eb6 new catppuccin theme
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 677a048f271be5beceb8fe10634cad0365efa0cf
2025-06-26 01:08:11 +02:00
Hadi 49cbb8c9f3 format & add server-modules
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: ea0d931b6464252a90f71953bf774d574b15a2d0
2025-06-26 00:13:57 +02:00
Hadi cd09256f57 update flake
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 50cb11ecbc469b79ae9f43f473debf44dd1ecb85
2025-06-24 10:00:43 +02:00
Hadi 6877bc909b change render-markdown to markview
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 8d21295f5cf94a17a7b4cb7cc67f9cf7cf38a223
2025-06-23 11:38:21 +02:00
Hadi df3048021c add plymouth
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 5e67a0bcd2c02d201cf8d074b5fc29aca2e41d0e
2025-06-21 14:28:12 +02:00
Hadi 3db1a36a09 edit nvf config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 74aee44e9e6fc9310cd989049989c529b74b1da8
2025-06-21 14:27:59 +02:00
Hadi 8528be9bc9 edit nvf config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 2899b84d8f0809ba14540adce1ebebb3eb225065
2025-06-19 16:06:29 +02:00
Hadi bfa46c2179 edit nvf config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 20350cacd5f393f214438f5b19753af53b56f305
2025-06-19 15:29:24 +02:00
Hadi b0014fd3b9 update nixarr conf
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 012e81f99509ff0756c85581292fc641c0528761
2025-06-19 15:10:03 +02:00
Hadi 0f2362a70d update secrets
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 09934db50d6cae2062d79577792fe980e8e2f3ff
2025-06-19 15:09:56 +02:00
Hadi 9ed830e38c update server
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 4a0a78fcd868e0be2a195f3bebdc82087ffd8e1e
2025-06-17 15:54:12 +02:00
Hadi 9640c9742b change lazygit shortcut
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: a106c7d6be97b9e0459db1c7681a7cb34285c8ee
2025-06-17 11:30:40 +02:00
Hadi 073af0cd2e from nixvim to nvf
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: d966eafd50f111f94ffe368ce685bfeb5e32c2f6
2025-06-17 11:28:12 +02:00
Hadi c61fa68af2 update flake
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: ddb95461f8394dbae6559872816e879dfe46ae53
2025-06-17 11:27:47 +02:00
Hadi 70b280ebb5 from nixvim to nvf
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 0d6390b18f38bdba346a1f92799884d209159b33
2025-06-17 11:27:22 +02:00
Hadi ac6b12592a from tmux to kitty
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 049f6885e51fa8227f6cd7da2a4954387eb6f0d8
2025-06-17 11:27:06 +02:00
Hadi 125ce4647b add shortcut to create a new tab in kitty
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 57c170c9aad1db000706d3dfea9e60be8fc67c57
2025-06-05 15:29:21 +02:00
Hadi d5524a937f update flake
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 7525f892db2971f189ab93a4e5ad6b586269688f
2025-06-05 15:29:09 +02:00
Hadi 3fefcce082 add kitty shortcuts
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: c2b90d76340429a0d6ffbaf070b28a30d2f6a2a2
2025-06-05 14:05:51 +02:00
Hadi 5deec5df11 remove this
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 41f98c18a1d177ee310acc3f3cb68d6897760aa8
2025-06-05 14:04:13 +02:00
Hadi 37fc4afccb move LD_LIBRARY_PATH
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 5a35789f8cc7009e3310d49b27381b84aca0a475
2025-06-05 13:46:20 +02:00
Hadi 6dbbaf0d4f Merge pull request #32 from Brisingr05/remove-legacy-system-alias
Former-commit-id: b4eb50568dfc5819daf849513cd52e30e501e7bf
2025-06-02 09:48:08 +02:00
Brisingr05 0652808dd9 Remove mentions of system in flake.nix
It's a legacy alias of `nixpkgs.hostPlatform`, which is already set in each host's `hardware-configuration.nix` files.

Source: https://github.com/NixOS/nixpkgs/blob/837ff226bbd44c29303611703a4085d48f0957c9/flake.nix#L61
Former-commit-id: fb5595cb37
2025-05-31 11:00:48 +05:30
Hadi dcc5d1e278 update flakes
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 23fe9da36b
2025-05-28 14:33:47 +02:00
Hadi 69877adff8 full collect garbage
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: d60e4530f5
2025-05-28 14:33:35 +02:00
Hadi 7960678330 change chatgpt func
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: b7598a36ee
2025-05-28 10:24:07 +02:00
Hadi f427e13f18 update
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 612a978e29
2025-05-28 10:23:48 +02:00
Hadi 0cc1cdc3db Merge branch 'main' of github.com:anotherhadi/nixy
Former-commit-id: 6cb71d92ac
2025-05-26 11:16:01 +02:00
Hadi c993fc178e add trash instead of rm & improve mkdir
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 736fa52b0f
2025-05-26 11:15:42 +02:00
github-actions de550aab5c Update KEYBINDINGS-HYPRLAND.md (auto)
Former-commit-id: d87830d57e
2025-05-23 13:21:30 +00:00
Hadi 0181d9bbef update
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: a0c510f906
2025-05-23 15:21:15 +02:00
Hadi 91521e1ac2 format
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 3f1eb01070
2025-05-23 15:11:34 +02:00
Hadi a98a8b7604 don't blink when charging
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 494de74831
2025-05-20 22:02:50 +02:00
Hadi 77982c0815 update flake
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 4eba6b9767
2025-05-16 14:01:34 +02:00
Hadi 9bfc3a3d6a Use the hyprpanel module (ty gemini)
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: a6df02573c
2025-05-13 11:24:25 +02:00
Hadi 0eb5656157 fix transmission
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 29fc2d6a1b
2025-05-12 14:21:17 +02:00
Hadi 09b1792e49 Merge branch 'main' of github.com:anotherhadi/nixy
Former-commit-id: a6eb2f375e
2025-05-12 13:27:39 +02:00
Hadi 79847b4aad edit secret
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: b6d1175e71
2025-05-12 13:27:36 +02:00
Hadi 41bcd1922c Merge branch 'main' of github.com:anotherhadi/nixy
Former-commit-id: a278d7b787
2025-05-12 11:15:05 +02:00
Hadi 741815b13d edit server config
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: e1c7055db2
2025-05-12 11:13:41 +02:00
Hadi 18cd56d9a8 remove sabnzbd
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: aa72726934
2025-05-12 10:53:37 +02:00
Hadi 65c30ae3cb update secrets
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 9bef5046b4
2025-05-12 09:52:10 +02:00
Hadi 6d15eeb8bc new wallpaper
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: e9f7e9a3d0
2025-05-11 18:51:44 +02:00
Hadi adf96aebb4 add config for xarchiver
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: ac3a48dc05
2025-05-11 00:33:41 +02:00
Hadi dcc838a51f change floaterm command
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: ab6fc98de6
2025-05-11 00:33:24 +02:00
Hadi 2eadc2dae6 add bookmarks
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: e9de49e3c7
2025-05-10 20:23:38 +02:00
Hadi d38ca993f5 add #changeme
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 8dabda6194
2025-05-07 16:10:04 +02:00
Hadi 0bab55a561 update flakes
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>

Former-commit-id: 70355c96ac
2025-05-07 15:42:38 +02:00
Hadi 93078c15e6 update lazygit config
Former-commit-id: 4bc6576d7c
2025-05-07 15:39:50 +02:00
Hadi 274550929f edit nix shell prompt
Former-commit-id: 53ff7a2a94
2025-05-07 15:25:07 +02:00
Hadi 6ef2d72a03 add astro lsp
Former-commit-id: 75f499a996
2025-05-07 15:24:48 +02:00
Hadi af24da07c3 add signing key to sops
Former-commit-id: 1a771e97ac
2025-05-06 11:27:32 +02:00
Hadi dc5c30f9b9 add signing
Former-commit-id: 6a4634bb04
2025-05-06 11:20:40 +02:00
Hadi 12a8ce472e Upgrade flakes
Former-commit-id: 685f104a67
2025-05-05 10:06:59 +02:00
Hadi 1ef60281d9 Merge branch 'main' of github.com:anotherhadi/nixy
Former-commit-id: 770569c1d9
2025-05-04 16:00:10 +02:00
Hadi 7dd723717a same-tab
Former-commit-id: 38b9bcec07
2025-05-04 16:00:08 +02:00
Hadi 200aeaf833 remove apps tmp
Former-commit-id: 5a3f4dcd49
2025-05-04 15:57:28 +02:00
Hadi 6b6e68b78e test colors
Former-commit-id: 6f9ca7e044
2025-05-04 15:53:03 +02:00
Hadi e31f9b26a9 update bookmarks
Former-commit-id: 5f7c914d1e
2025-05-04 15:46:51 +02:00
Hadi 1bc0a26a0a glance config update
Former-commit-id: 72690d7d0c
2025-05-04 15:38:42 +02:00
Hadi c3b52cba74 Merge branch 'main' of github.com:anotherhadi/nixy
Former-commit-id: 6353514e49
2025-05-04 15:34:48 +02:00
Hadi f6eb9a9f46 add bookmarks glance
Former-commit-id: 7939150e37
2025-05-04 15:34:28 +02:00
Hadi 52ed9413f8 update flakes
Former-commit-id: 1d286f7c47
2025-05-04 15:34:21 +02:00
Hadi de76e2ad68 update flakes
Former-commit-id: 66b78355f8
2025-05-02 16:54:57 +02:00
Hadi d38aff93c7 update wallpaper
Former-commit-id: a4e107eafc
2025-05-02 16:05:15 +02:00
Hadi a1b2df8b84 add xarchiver
Former-commit-id: 0d235c33f4
2025-04-30 12:58:10 +02:00
Hadi 1a2c1e6d9d remove auto-kill wofi
Former-commit-id: 42464199cc
2025-04-29 23:03:05 +02:00
Hadi 7b32c15623 update theme
Former-commit-id: afde9edaea
2025-04-26 18:27:34 +02:00
Hadi d04076e30e update flake
Former-commit-id: 8260e6f7fd
2025-04-26 18:27:20 +02:00
Hadi 75d90528a6 edit keyboard-backlight
Former-commit-id: 62ceddf5f8
2025-04-26 18:27:08 +02:00
Hadi 76b2eb55f2 remove slow cache
Former-commit-id: e0fbb91516
2025-04-24 19:57:31 +02:00
Hadi 588ea13f2f fix omen perms
Former-commit-id: b7bfd6eed8
2025-04-24 11:27:54 +02:00
Hadi 028307852e tmp buffer & fix notes
Former-commit-id: 6391904287
2025-04-24 10:17:55 +02:00
Hadi d771ba97c2 Merge branch 'main' of github.com:anotherhadi/nixy
Former-commit-id: a91dc2dc22
2025-04-22 13:53:09 +02:00
Hadi 7f8569a671 hardening nginx conf
Former-commit-id: 94b9738638
2025-04-22 13:48:02 +02:00
Hadi 2f4c67a0cf set keyboard backlight on boot
Former-commit-id: f01ec00483
2025-04-22 10:08:59 +02:00
Hadi 2cf0a3b7e5 init headscale-ui
Former-commit-id: aaf3532cde
2025-04-22 10:05:58 +02:00
Hadi 46ee1a8d73 init headscale
Former-commit-id: 05891cdd1d
2025-04-22 09:51:46 +02:00
140 changed files with 3205 additions and 4769 deletions
+35 -26
View File
@@ -1,5 +1,5 @@
<div align="center">
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
<img alt="nixy logo" src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
</div>
<br>
@@ -23,25 +23,26 @@
</div>
<br>
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily customizable setup. It provides a structured way to manage your system configuration and dotfiles with minimal effort.
It includes *home-manager*, *secrets*, and *custom theming* all in one place.
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily
customizable setup. It provides a structured way to manage your system
configuration and dotfiles with minimal effort. It includes _home-manager_,
_secrets_, and _custom theming_ all in one place.
**Features:**
- 💻 Hyprland-centric: Preconfigured Hyprland ecosystem (Hyprlock, Hyprpanel, etc.)
- 💻 Hyprland & Caelestia: Preconfigured Hyprland ecosystem with Caelestia-shell (Ty to both projects!)
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
## Table of Content
{md_table_of_content}
## Gallery
## Screenshots
![Nixy helper, peaclock](.github/assets/nixy/1.png)
![Qutebrowser, pipes, shell](.github/assets/nixy/2.png)
![nvim, lazygit](.github/assets/nixy/3.png)
![spotify, cava](.github/assets/nixy/4.png)
![Home](.github/assets/rose-pine/home.png)
![Flake & Spotify](.github/assets/rose-pine/flake-spotify.png)
![Browser and notification center](.github/assets/rose-pine/browser-and-notifications.png)
## Architecture
@@ -52,50 +53,59 @@ Contains **dotfiles and settings** that apply to your user environment.
**Subfolders:**
- `programs` is a collection of apps configured with home-manager
- `scripts` is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
- `system` is some "desktop environment" configuration
### 🐧 /nixos
Those are the system-level configurations. (audio, bluetooth, gpu, bootloader, ...)
Those are the system-level configurations. (audio, bluetooth, gpu, bootloader,
...)
### 🎨 /themes
This folder contains all system themes. Mainly [stylix](https://stylix.danth.me/) configurations.
Check out the available themes and learn how to create your own in [THEMES.md](docs/THEMES.md)
This folder contains all system themes. Mainly
[stylix](https://stylix.danth.me/) configurations. Check out the available
themes and learn how to create your own in [THEMES.md](docs/THEMES.md)
### 💻 /hosts
This directory contains host-specific configurations.
Each host includes:
This directory contains host-specific configurations. Each host includes:
- `configuration.nix` for system-wide settings
- `home.nix` for user-level configuration
- `variables.nix` for global variables
- `secrets/` for sensitive data
### 🖥️ /server-modules
This folder contains server-related nixos modules. (bitwarden, nextcloud, ...)
## Installation
1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to your system:
1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to
your system:
```sh
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
```
2. Copy the `hosts/laptop` folder, rename it to match your systems hostname, and update `variables.nix` with your machines settings.
3. Copy your `hardware-configuration.nix` into your new host's folder to ensure proper hardware support.
2. Copy the `hosts/laptop` folder, rename it to match your systems hostname,
and update `variables.nix` with your machines settings.
3. Copy your `hardware-configuration.nix` into your new host's folder to ensure
proper hardware support.
4. Register your new host in `flake.nix` by adding it under nixosConfigurations.
> [!Important]
> `# CHANGEME` comments are placed throughout the config to indicate necessary modifications.
> Use the following command to quickly locate them:
> [!IMPORTANT]
> `# CHANGEME` comments are placed throughout the config to
> indicate necessary modifications. Use the following command to quickly locate
> them:
>
> ```sh
> rg "CHANGEME" ~/.config/nixos
> ```
> [!TIP]
> When you add new files, don't forget to run `git add .` to add them to the git repository
> When you add new files, don't forget to run `git add .` to add them to the git
> repository
5. Build the system
@@ -107,9 +117,8 @@ sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
- [SERVER](docs/SERVER.md): Check out the server documentation
- [THEMES](docs/THEMES.md): How themes work and how to create your own
- [SCRIPTS](docs/SCRIPTS.md): A list of available scripts and their usage
- [KEYBINDINGS-HYPRLAND](docs/KEYBINDINGS-HYPRLAND.md): Keybindings available in Hyprland
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome collection of wallpapers
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
collection of wallpapers
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
- [LICENSE](LICENSE): MIT License
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 12 KiB

+1 -1
View File
@@ -10,7 +10,7 @@ table_of_content=$(markdown-table-of-contents --start-by 2 ./.github/assets/READ
readme_content=$(cat "./.github/assets/README_template.md")
# Replace variables
readme_content=${readme_content//\{primarycolor\}/A594FD}
readme_content=${readme_content//\{primarycolor\}/A89AD1}
readme_content=${readme_content//\{backgroundcolor\}/0b0b0b}
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
-26
View File
@@ -1,26 +0,0 @@
#!/usr/bin/env bash
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
DOCS_FILE="./docs/SCRIPTS.md"
SCRIPTS_FOLDER="./home/scripts"
# search for every directory in the scripts folder:
# The docs for each scripts are in the beginning of the file prefixed by "#-" or "# -" for the title
# Inside the folders, the scripts are stored in default.nix files
echo "[//]: # (This file is autogenerated)" >"$DOCS_FILE"
echo "# Scripts" >>"$DOCS_FILE"
echo "" >>"$DOCS_FILE"
echo "Scripts are located in the 'home/scripts' folder. Home-manager add those in the user's path." >>"$DOCS_FILE"
echo "" >>"$DOCS_FILE"
for folder in "$SCRIPTS_FOLDER"/*; do
script="$folder/default.nix"
[[ -f "$script" ]] || continue
content=$(cat "$script")
content=$(echo "$content" | grep -E "^#-|^# -" | sed 's/^#- //;s/^# - //;s/#-//')
echo "$content" >>"$DOCS_FILE"
echo "" >>"$DOCS_FILE"
done
@@ -1,60 +0,0 @@
#!/usr/bin/env bash
# A script to parse the Hyprland configuration to store keybindings in a table
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
KEYBINDINGS_FILE="./docs/KEYBINDINGS-HYPRLAND.md"
function getList() {
content=$1
name=$2
list_start=$(echo "$content" | sed "/$name = \[/!d;=;Q")
list=$(echo "$content" | tail +"$list_start")
list_end=$(echo "$list" | sed '/\]/!d;=;Q')
list=$(echo "$list" | head -n"$list_end")
echo "$list"
}
[[ -f "./home/system/hyprland/bindings.nix" ]] || (echo "File ./home/system/hyprland/bindings.nix not found" && exit 1)
config=$(cat "./home/system/hyprland/bindings.nix")
# Bind
bind=$(getList "$config" "bind")
# Bindm (mouse)
bindm=$(getList "$config" "bindm")
# Bindl (lock)
bindl=$(getList "$config" "bindl")
# Bindle (lock, repetition)
bindle=$(getList "$config" "bindle")
# Join the lists:
keybindings=$(echo -e "$bind\n$bindm\n$bindl\n$bindle" | grep '"')
echo "[//]: # (This file is autogenerated)" >"$KEYBINDINGS_FILE"
echo "# Keybindings for Hyprland" >>"$KEYBINDINGS_FILE"
echo "" >>"$KEYBINDINGS_FILE"
echo "> [!NOTE]" >>"$KEYBINDINGS_FILE"
echo "> SUPER is the windows key by default" >>"$KEYBINDINGS_FILE"
echo "" >>"$KEYBINDINGS_FILE"
echo "| Description | Keybinding |" >>"$KEYBINDINGS_FILE"
echo "| -- | -- |" >>"$KEYBINDINGS_FILE"
echo "| Switch Workspace | SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
echo "| Move app to Workspace | SHIFT + SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
echo "$keybindings" | while read -r line; do
comment=$(echo "$line" | cut -d\# -f2)
line=$(echo "$line" | cut -d\# -f1)
line=${line:1:${#line}-3}
mod=$(echo "$line" | cut -d, -f1)
key=$(echo "$line" | cut -d, -f2)
# dispatcher=$(echo "$line" | cut -d, -f3)
# params=$(echo "$line" | cut -d, -f4)
[[ $mod == '$mod' ]] && mod="SUPER + "
[[ $mod == '$shiftMod' ]] && mod="SHIFT + SUPER + "
echo "| ${comment:1} | $mod$key |" >>"$KEYBINDINGS_FILE"
done
@@ -1,24 +0,0 @@
on:
push:
paths:
- 'home/system/hyprland/bindings.nix'
permissions:
contents: write
jobs:
update-readme:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v4
- name: Run a script
run: |
chmod +x ./.github/scripts/keybindings_to_markdown.sh
./.github/scripts/keybindings_to_markdown.sh
git config user.name github-actions
git config user.email github-actions@github.com
git add .
git commit -m "Update KEYBINDINGS-HYPRLAND.md (auto)" && git push
exit 0
-24
View File
@@ -1,24 +0,0 @@
on:
push:
paths:
- 'home/scripts/**'
permissions:
contents: write
jobs:
update-readme:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./
steps:
- name: Check out the repository to the runner
uses: actions/checkout@v4
- name: Run a script
run: |
chmod +x ./.github/scripts/create_scripts_docs.sh
./.github/scripts/create_scripts_docs.sh
git config user.name github-actions
git config user.email github-actions@github.com
git add .
git commit -m "Update SCRIPTS.md (auto)" && git push
exit 0
+1
View File
@@ -1 +1,2 @@
.sops.yaml
old/
+41 -31
View File
@@ -1,6 +1,6 @@
[//]: # (This file is autogenerated)
<div align="center">
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
<img alt="nixy logo" src="https://raw.githubusercontent.com/anotherhadi/nixy/main/.github/assets/logo.png" width="120px" />
</div>
<br>
@@ -10,47 +10,49 @@
<br>
<div align="center">
<a href="https://github.com/anotherhadi/nixy/stargazers">
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=A594FD&labelColor=0b0b0b&style=for-the-badge&logo=starship&logoColor=A594FD">
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=A89AD1&labelColor=0b0b0b&style=for-the-badge&logo=starship&logoColor=A89AD1">
</a>
<a href="https://github.com/anotherhadi/nixy/">
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color=A594FD&labelColor=0b0b0b&style=for-the-badge&logo=github&logoColor=A594FD">
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color=A89AD1&labelColor=0b0b0b&style=for-the-badge&logo=github&logoColor=A89AD1">
</a>
<a href="https://nixos.org">
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=0b0b0b&logo=NixOS&logoColor=A594FD&color=A594FD">
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=0b0b0b&logo=NixOS&logoColor=A89AD1&color=A89AD1">
</a>
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=0b0b0b&colorB=A594FD&logo=unlicense&logoColor=A594FD"/>
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=0b0b0b&colorB=A89AD1&logo=unlicense&logoColor=A89AD1"/>
</a>
</div>
<br>
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily customizable setup. It provides a structured way to manage your system configuration and dotfiles with minimal effort.
It includes *home-manager*, *secrets*, and *custom theming* all in one place.
**Nixy simplifies and unifies** the Hyprland ecosystem with a modular, easily
customizable setup. It provides a structured way to manage your system
configuration and dotfiles with minimal effort. It includes _home-manager_,
_secrets_, and _custom theming_ all in one place.
**Features:**
- 💻 Hyprland-centric: Preconfigured Hyprland ecosystem (Hyprlock, Hyprpanel, etc.)
- 💻 Hyprland & Caelestia: Preconfigured Hyprland ecosystem with Caelestia-shell (Ty to both projects!)
- 🎨 Consistent Theming: Base16 & Stylix-powered themes
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
- ⌨️ Vim-like Everywhere: Unified keybindings (Hyprland, nvim, vimium, etc.)
## Table of Content
- [Table of Content](#table-of-content)
- [Gallery](#gallery)
- [Screenshots](#screenshots)
- [Architecture](#architecture)
- [🏠 /home (User-level configuration)](#-home-user-level-configuration)
- [🐧 /nixos](#-nixos)
- [🎨 /themes](#-themes)
- [💻 /hosts](#-hosts)
- [🖥️ /server-modules](#-server-modules)
- [Installation](#installation)
- [Documentation](#documentation)
## Gallery
## Screenshots
![Nixy helper, peaclock](.github/assets/nixy/1.png)
![Qutebrowser, pipes, shell](.github/assets/nixy/2.png)
![nvim, lazygit](.github/assets/nixy/3.png)
![spotify, cava](.github/assets/nixy/4.png)
![Home](.github/assets/rose-pine/home.png)
![Flake & Spotify](.github/assets/rose-pine/flake-spotify.png)
![Browser and notification center](.github/assets/rose-pine/browser-and-notifications.png)
## Architecture
@@ -61,50 +63,59 @@ Contains **dotfiles and settings** that apply to your user environment.
**Subfolders:**
- `programs` is a collection of apps configured with home-manager
- `scripts` is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
- `system` is some "desktop environment" configuration
### 🐧 /nixos
Those are the system-level configurations. (audio, bluetooth, gpu, bootloader, ...)
Those are the system-level configurations. (audio, bluetooth, gpu, bootloader,
...)
### 🎨 /themes
This folder contains all system themes. Mainly [stylix](https://stylix.danth.me/) configurations.
Check out the available themes and learn how to create your own in [THEMES.md](docs/THEMES.md)
This folder contains all system themes. Mainly
[stylix](https://stylix.danth.me/) configurations. Check out the available
themes and learn how to create your own in [THEMES.md](docs/THEMES.md)
### 💻 /hosts
This directory contains host-specific configurations.
Each host includes:
This directory contains host-specific configurations. Each host includes:
- `configuration.nix` for system-wide settings
- `home.nix` for user-level configuration
- `variables.nix` for global variables
- `secrets/` for sensitive data
### 🖥️ /server-modules
This folder contains server-related nixos modules. (bitwarden, nextcloud, ...)
## Installation
1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to your system:
1. [Fork](https://github.com/anotherhadi/nixy/fork) this repo and clone it to
your system:
```sh
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
```
2. Copy the `hosts/laptop` folder, rename it to match your systems hostname, and update `variables.nix` with your machines settings.
3. Copy your `hardware-configuration.nix` into your new host's folder to ensure proper hardware support.
2. Copy the `hosts/laptop` folder, rename it to match your systems hostname,
and update `variables.nix` with your machines settings.
3. Copy your `hardware-configuration.nix` into your new host's folder to ensure
proper hardware support.
4. Register your new host in `flake.nix` by adding it under nixosConfigurations.
> [!Important]
> `# CHANGEME` comments are placed throughout the config to indicate necessary modifications.
> Use the following command to quickly locate them:
> [!IMPORTANT]
> `# CHANGEME` comments are placed throughout the config to
> indicate necessary modifications. Use the following command to quickly locate
> them:
>
> ```sh
> rg "CHANGEME" ~/.config/nixos
> ```
> [!TIP]
> When you add new files, don't forget to run `git add .` to add them to the git repository
> When you add new files, don't forget to run `git add .` to add them to the git
> repository
5. Build the system
@@ -116,9 +127,8 @@ sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
- [SERVER](docs/SERVER.md): Check out the server documentation
- [THEMES](docs/THEMES.md): How themes work and how to create your own
- [SCRIPTS](docs/SCRIPTS.md): A list of available scripts and their usage
- [KEYBINDINGS-HYPRLAND](docs/KEYBINDINGS-HYPRLAND.md): Keybindings available in Hyprland
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome collection of wallpapers
- [WALLPAPERS](https://github.com/anotherhadi/awesome-wallpapers): An awesome
collection of wallpapers
- [CONTRIBUTING](docs/CONTRIBUTING.md): How to contribute
- [LICENSE](LICENSE): MIT License
-51
View File
@@ -1,51 +0,0 @@
[//]: # (This file is autogenerated)
# Keybindings for Hyprland
> [!NOTE]
> SUPER is the windows key by default
| Description | Keybinding |
| -- | -- |
| Switch Workspace | SUPER + {Number} |
| Move app to Workspace | SHIFT + SUPER + {Number} |
| Kitty | SUPER + RETURN |
| Thunar | SUPER + E |
| Zen Browser | SUPER + B |
| Bitwarden | SUPER + K |
| Lock | SUPER + L |
| Powermenu | SUPER + X |
| Launcher | SUPER + SPACE |
| Quickmenu | SUPER + C |
| Toggle HyprFocus | SHIFT + SUPER + SPACE |
| Planify | SUPER + P |
| Close window | SUPER + Q |
| Toggle Floating | SUPER + T |
| Toggle Fullscreen | SUPER + F |
| Move focus left | SUPER + left |
| Move focus Right | SUPER + right |
| Move focus Up | SUPER + up |
| Move focus Down | SUPER + down |
| Focus previous monitor | SHIFT + SUPER + up |
| Focus next monitor | SHIFT + SUPER + down |
| Add to master | SHIFT + SUPER + left |
| Remove from master | SHIFT + SUPER + right |
| Screenshot region | SUPER + PRINT |
| Screenshot monitor | PRINT |
| Screenshot window | SHIFT + SUPER + PRINT |
| Screenshot region then edit | ALTPRINT |
| Toggle hyprpanel | SHIFT + SUPER + T |
| Clipboard picker with wofi | SHIFT + SUPER + C |
| Emoji picker with wofi | SHIFT + SUPER + E |
| Toggle night shift | SUPER + F2 |
| Toggle night shift | SUPER + F3 |
| Move Window (mouse) | SUPER + mouse:272 |
| Resize Window (mouse) | SUPER + R |
| Toggle Mute | XF86AudioMute |
| Play/Pause Song | XF86AudioPlay |
| Next Song | XF86AudioNext |
| Previous Song | XF86AudioPrev |
| Lock when closing Lid | switch:Lid Switch |
| Sound Up | XF86AudioRaiseVolume |
| Sound Down | XF86AudioLowerVolume |
| Brightness Up | XF86MonBrightnessUp |
| Brightness Down | XF86MonBrightnessDown |
-99
View File
@@ -1,99 +0,0 @@
[//]: # (This file is autogenerated)
# Scripts
Scripts are located in the 'home/scripts' folder. Home-manager add those in the user's path.
## Brightness
This module provides a set of scripts to control the brightness of the screen.
- `brightness-up` increases the brightness by 5%.
- `brightness-down` decreases the brightness by 5%.
- `brightness-set [value]` sets the brightness to the given value.
- `brightness-change [up|down] [value]` increases or decreases the brightness by the given value.
## Caffeine
Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
- `caffeine-status` - Check if hypridle is running. (0/1)
- `caffeine-status-icon` - Check if hypridle is running. (icon)
- `caffeine` - Toggle hypridle.
## Hyprfocus
A simple script to toggle focus on few windows in Hyprland.
(disable gaps, border, shadow, opacity, etc.)
- `hyprfocus-on` - Enable hyprfocus.
- `hyprfocus-off` - Disable hyprfocus.
- `hyprfocus-toggle` - Toggle hyprfocus.
## Hyprpanel
Quick scripts to toggle, reload, hide & show hyprpanel.
- `hyprpanel-toggle` - Toggle hyprpanel (hide/show).
- `hyprpanel-show` - Show hyprpanel.
- `hyprpanel-hide` - Hide hyprpanel.
- `hyprpanel-reload` - Reload hyprpanel.
## Nerdfont FZF
This module provides a script to search for Nerd Fonts icons using fzf.
- `nerdfont-fzf` - Search for Nerd Fonts icons using fzf.
## Night-Shift
Night-Shift is a feature that reduces the amount of blue light emitted by your screen, which can help reduce eye strain and improve sleep quality. This module provides a set of scripts to control Night-Shift on your system.
It use hyprsunset to control the screen temperature.
- `night-shift-on` activates Night-Shift.
- `night-shift-off` deactivates Night-Shift.
- `night-shift` toggles Night-Shift.
- `night-shift-status` checks if Night-Shift is active. (0/1)
- `night-shift-status-icon` checks if Night-Shift is active. (icon)
## Nixy
Nixy is a simple script that I use to manage my NixOS system. It's a simple script that provides a menu to rebuild, upgrade, update, collect garbage, clean boot menu, etc.
- `nixy` - UI wizard to manage the system.
- `nixy rebuild` - Rebuild the system.
- `nixy ...` - ... see the script for more commands.
## OpenVPN
OpenVPN allows you to connect/disconnect quickly to a openVPN server
- `openvpn-up` turn on the vpn
- `openvpn-down` turn down the vpn
- `openvpn-toggle` toggle the vpn
## Screenshot
This module provides a script to take screenshots using `grimblast` and `swappy`.
- `screenshot [region|window|monitor] [swappy]` - Take a screenshot of the region, window, or monitor. Optionally, use `swappy` to copy the screenshot to the clipboard.
## Sound
This module provides a set of scripts to control the volume of the default audio sink using `wpctl`.
- `sound-up` increases the volume by 5%.
- `sound-down` decreases the volume by 5%.
- `sound-set [value]` sets the volume to the given value.
- `sound-toggle` toggles the mute state of the default audio sink.
## System
Usefull quick scripts
- `menu` - Open wofi with drun mode. (wofi)
- `powermenu` - Open power dropdown menu. (wofi)
- `quickmenu` - Open a dropdown menu with shortcuts and scripts. (wofi)
- `lock` - Lock the screen. (hyprlock)
+2 -11
View File
@@ -1,5 +1,7 @@
# SERVER
> Update in comming. Early 2026
## Overview
This document describes the architecture and setup of the self-hosted **NixOS server**, which is securely accessible via **Tailscale**. The server is designed for private, secure, and easily manageable self-hosting of various services.
@@ -20,8 +22,6 @@ The server hosts several key applications:
### **Core Infrastructure**
- **NGINX**: Reverse proxy for routing traffic to services via `example.org`.
- **Bitwarden**: A self-hosted password manager for secure credential storage.
- **Nextcloud**: A private cloud solution for file synchronization and collaboration.
### **Networking & Security**
@@ -30,7 +30,6 @@ The server hosts several key applications:
### **Monitoring & Storage**
- **Glance**: An awesome dashboard! (See the screenshot above)
- **Hoarder**: A self-hostable bookmark-everything app (links, notes and images)
### **Media & Content Management**
@@ -52,11 +51,3 @@ The server hosts several key applications:
4. **Access Control**
- Only devices within the Tailscale network can reach the services.
- Firewall rules restrict access further based on necessity.
## What's Next?
I want to self-host:
- **A great todolist app**: One that is compatible with markdown & IOS
- **Cyberchef**
- **Maybe**: An app to manage finances
+5 -9
View File
@@ -3,19 +3,15 @@
Themes are defined in `themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
You can change the selected theme by changing the import statement of your host's variables.nix file.
> [!TIP]
> To apply the theme to DuckDuckGo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
## Create your theme
Create a copy of one of the existing themes and change the variables.
Wallpapers are loaded from the [nixy-wallpapers](https://github.com/anotherhadi/nixy-wallpapers) repo.
Wallpapers are loaded from the [hadi's awesome-wallpapers](https://github.com/anotherhadi/awesome-wallpapers) repo.
## Gallery
### Nixy
### Rose-pine
![nixy1](../.github/assets/nixy/1.png)
![nixy2](../.github/assets/nixy/2.png)
![nixy3](../.github/assets/nixy/3.png)
![nixy4](../.github/assets/nixy/4.png)
![Home](.github/assets/rose-pine/home.png)
![Flake & Spotify](.github/assets/rose-pine/flake-spotify.png)
![Browser and notification center](.github/assets/rose-pine/browser-and-notifications.png)
Generated
+524 -799
View File
File diff suppressed because it is too large Load Diff
+18 -20
View File
@@ -7,46 +7,45 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hyprpanel.url = "github:Jas-SinghFSU/HyprPanel";
stylix.url = "github:danth/stylix";
apple-fonts.url = "github:Lyndeno/apple-fonts.nix";
zen-browser.url = "github:0xc000022070/zen-browser-flake";
nixcord.url = "github:kaylorben/nixcord";
sops-nix.url = "github:Mic92/sops-nix";
nixarr.url = "github:rasmus-kirk/nixarr";
anyrun.url = "github:fufexan/anyrun/launch-prefix";
nvf.url = "github:notashelf/nvf";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
url =
"github:nix-community/nixvim/d81f37256d0a8691b837b74979d27bf89be8ecdd";
caelestia-shell = {
url = "github:caelestia-dots/shell";
inputs.nixpkgs.follows = "nixpkgs";
};
caelestia-cli = {
url = "github:caelestia-dots/cli";
inputs.nixpkgs.follows = "nixpkgs";
};
spicetify-nix = {
url = "github:Gerg-L/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprspace = {
url = "github:KZDKM/Hyprspace";
inputs.hyprland.follows = "hyprland";
};
search-nixos-api.url = "github:anotherhadi/search-nixos-api";
# Server
eleakxir.url = "github:anotherhadi/eleakxir";
nixarr.url = "github:rasmus-kirk/nixarr";
};
outputs = inputs@{ nixpkgs, ... }: {
outputs = inputs @ {nixpkgs, ...}: {
nixosConfigurations = {
nixy =
# CHANGEME: This should match the 'hostname' in your variables.nix file
nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
{
nixpkgs.overlays = [ inputs.hyprpanel.overlay ];
_module.args = { inherit inputs; };
nixpkgs.overlays = [];
_module.args = {
inherit inputs;
};
}
inputs.nixos-hardware.nixosModules.omen-16-n0005ne # CHANGEME: check https://github.com/NixOS/nixos-hardware
inputs.home-manager.nixosModules.home-manager
@@ -56,14 +55,13 @@
};
# Jack is my server
jack = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
{ _module.args = { inherit inputs; }; }
{_module.args = {inherit inputs;};}
inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix
inputs.sops-nix.nixosModules.sops
inputs.nixarr.nixosModules.default
inputs.search-nixos-api.nixosModules.search-nixos-api
inputs.eleakxir.nixosModules.eleakxir
./hosts/server/configuration.nix
];
};
-87
View File
@@ -1,87 +0,0 @@
{ pkgs, inputs, ... }: {
programs.anyrun = {
enable = true;
config = {
plugins = with inputs.anyrun.packages.${pkgs.system}; [
applications
shell
randr
rink
symbols
translate
];
width.fraction = 0.25;
y.fraction = 0.3;
hidePluginInfo = true;
closeOnClick = true;
};
extraCss = ''
* {
all: unset;
font-size: 1.2rem;
}
#window,
#match,
#entry,
#plugin,
#main {
background: transparent;
}
#match.activatable {
border-radius: 8px;
margin: 4px 0;
padding: 4px;
/* transition: 100ms ease-out; */
}
#match.activatable:first-child {
margin-top: 12px;
}
#match.activatable:last-child {
margin-bottom: 0;
}
#match:hover {
background: rgba(255, 255, 255, 0.05);
}
#match:selected {
background: rgba(255, 255, 255, 0.1);
}
#entry {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 8px;
padding: 4px 8px;
}
box#main {
background: rgba(0, 0, 0, 0.5);
box-shadow:
inset 0 0 0 1px rgba(255, 255, 255, 0.1),
0 30px 30px 15px rgba(0, 0, 0, 0.5);
border-radius: 20px;
padding: 12px;
}
'';
extraConfigFiles = {
"applications.ron".text = ''
Config(
desktop_actions: false,
max_entries: 5,
terminal: Some("foot"),
)
'';
"shell.ron".text = ''
Config(
prefix: ">"
)
'';
};
};
}
+3 -3
View File
@@ -1,9 +1,9 @@
# Discord is a popular chat application.
{ inputs, ... }: {
imports = [ inputs.nixcord.homeManagerModules.nixcord ];
{inputs, ...}: {
imports = [inputs.nixcord.homeModules.nixcord];
programs.nixcord = {
enable = true;
config = { frameless = true; };
config = {frameless = true;};
};
}
@@ -1,44 +0,0 @@
# A duckduckgo colorscheme generated for the Stylix theme used.
{ config, ... }:
let
accent = config.lib.stylix.colors.base0D;
background = config.lib.stylix.colors.base00;
foreground = config.lib.stylix.colors.base05;
background-alt = config.lib.stylix.colors.base01;
foreground-alt = config.lib.stylix.colors.base06;
in {
home.file.".duckduckgo-colorscheme.js".text =
# js
''
// Go to DuckDuckGo settings page, open the console, paste the code and hit enter.
// based on https://ddg.codingcodax.dev/
// Cookies string for your theme
const cookie = '7=${background}; j=${background}; 9=${foreground}; aa=${foreground-alt}; 8=${foreground}; x=${accent}; 21=${background-alt};';
// Converts cookie string into formatted JSON
const cookieToJSON = (cookieRaw) => {
const cookieJson = {};
const items = cookieRaw.split(/[ ,]+/);
items.forEach((item) => {
const parts = item.split('=');
cookieJson[parts[0]] = parts[1];
});
return cookieJson;
};
// Iterates over JSON, and adds to browser cookie store
const setCookies = (cookieJson) => {
Object.keys(cookieJson).forEach((key) => {
document.cookie = `''${key}=''${cookieJson [ key ]}`;
});
};
// Call set cookies, passing in formated cookie data
setCookies(cookieToJSON(cookie));
// All done, reload page for changes to take effect :)
location.reload();
'';
}
+2 -1
View File
@@ -1 +1,2 @@
{ imports = [ ./neofetch ./nerdfetch ]; }
# Import all fetch scripts
{imports = [./neofetch ./nerdfetch];}
+2 -2
View File
@@ -1,6 +1,6 @@
# Legacy
{ pkgs, ... }: {
home.packages = with pkgs; [ neofetch ];
{pkgs, ...}: {
home.packages = with pkgs; [neofetch];
xdg.configFile."neofetch/ascii.txt".text = ''
''${c6}
+3 -7
View File
@@ -1,7 +1,6 @@
# Nerdfetch, a simple system info script written in bash
# Source: https://github.com/ThatOneCalculator/NerdFetch
{ pkgs, ... }:
let
{pkgs, ...}: let
nerdfetch = pkgs.writeShellScriptBin "nerdfetch" ''
ostype="$(uname)"
@@ -197,9 +196,7 @@ let
flatpak) packages="$(flatpak list --app | wc -l)" ;;
brew) packages="$(printf '%s\n' "$(brew --cellar)/"* | wc -l)" ;;
port) packages="$(port installed | wc -l)" ;;
dpkg-query) packages="$(dpkg-query -f '${
"binary:Package"
}\n' -W | wc -l)" ;;
dpkg-query) packages="$(dpkg-query -f '${"binary:Package"}\n' -W | wc -l)" ;;
rpm) packages="$(rpm -qa --last | wc -l)" ;;
yum) packages="$(yum list installed | wc -l)" ;;
dnf) packages="$(dnf list installed | wc -l)" ;;
@@ -367,5 +364,4 @@ let
''${c2} \/''${c0}-____''${c2}\/''${reset} ''${lc}''${ci} ''${red}''${green}''${yellow}''${blue}''${magenta}''${cyan}''${reset}
"""
'';
in { home.packages = [ nerdfetch ]; }
in {home.packages = [nerdfetch];}
+22
View File
@@ -0,0 +1,22 @@
{
programs.ghostty = {
enable = true;
installVimSyntax = true;
enableZshIntegration = true;
settings = {
window-padding-x = 10;
window-padding-y = 10;
keybind = [
"ctrl+j=goto_split:left"
"ctrl+i=goto_split:up"
"ctrl+k=goto_split:down"
"ctrl+l=goto_split:right"
"shift+ctrl+j=new_split:left"
"shift+ctrl+i=new_split:up"
"shift+ctrl+k=new_split:down"
"shift+ctrl+l=new_split:right"
"shift+ctrl+tab=new_tab"
];
};
};
}
+30 -32
View File
@@ -1,13 +1,10 @@
# Git configuration
{ config, ... }:
let
{config, ...}: let
username = config.var.git.username;
email = config.var.git.email;
in {
programs.git = {
enable = true;
userName = username;
userEmail = email;
ignores = [
".cache/"
".DS_Store"
@@ -20,38 +17,39 @@ in {
"result"
"result-*"
];
extraConfig = {
settings = {
user.name = username;
user.email = email;
init.defaultBranch = "main";
pull.rebase = "false";
push.autoSetupRemote = true;
color.ui = "1";
};
aliases = {
essa = "push --force";
co = "checkout";
fuck = "commit --amend -m";
c = "commit -m";
ca = "commit -am";
forgor = "commit --amend --no-edit";
graph = "log --all --decorate --graph --oneline";
oops = "checkout --";
l = "log";
r = "rebase";
s = "status --short";
ss = "status";
d = "diff";
ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)";
pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)";
af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)";
st = "status";
br = "branch";
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}";
hist = ''
log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
llog = ''
log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
edit-unmerged =
"!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`";
alias = {
essa = "push --force";
co = "checkout";
fuck = "commit --amend -m";
c = "commit -m";
ca = "commit -am";
forgor = "commit --amend --no-edit";
graph = "log --all --decorate --graph --oneline";
oops = "checkout --";
l = "log";
r = "rebase";
s = "status --short";
ss = "status";
d = "diff";
ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)";
pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)";
af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)";
st = "status";
br = "branch";
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}";
hist = ''
log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
llog = ''
log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`";
};
};
};
}
@@ -1,16 +1,28 @@
# Lazygit is a simple terminal UI for git commands.
{ config, lib, ... }:
let
{
config,
lib,
...
}: let
accent = "#${config.lib.stylix.colors.base0D}";
muted = "#${config.lib.stylix.colors.base03}";
in {
programs.lazygit = {
enable = true;
settings = lib.mkForce {
disableStartupPopups = true;
notARepository = "skip";
promptToReturnFromSubprocess = false;
update.method = "never";
git = {
commit.signOff = true;
overrideGpg = true;
parseEmoji = true;
};
gui = {
theme = {
activeBorderColor = [ accent "bold" ];
inactiveBorderColor = [ muted ];
activeBorderColor = [accent "bold"];
inactiveBorderColor = [muted];
};
showListFooter = false;
showRandomTip = false;
+12
View File
@@ -0,0 +1,12 @@
# This file is used to sign git commits using an SSH key.
{
# CHANGEME: change this to your own SSH key.
home.file.".ssh/allowed_signers".text = "* ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIINhWby7lUUXQNKbRu9/UOrGjWDf3fvoAwGHomWv/+lL";
programs.git.settings = {
commit.gpgsign = true;
gpg.ssh.allowedSignersFile = "~/.ssh/allowed_signers";
gpg.format = "ssh";
user.signingkey = "~/.ssh/key.pub";
};
}
+15
View File
@@ -0,0 +1,15 @@
{
pkgs,
inputs,
...
}: {
home.packages = with pkgs; [
wireshark
nmap
john
hashcat
inputs.eleakxir.packages.${stdenv.hostPlatform.system}.leak-utils
caido
nuclei
];
}
-33
View File
@@ -1,33 +0,0 @@
# Kitty is a fast, featureful, GPU based terminal emulator
{
programs.kitty = {
enable = true;
keybindings = {
# Reset existing mappings
"ctrl+alt+tab" = "next_tab";
"ctrl+alt+shift+tab" = "previous_tab";
# Send Ctrl Tab and Ctrl + Shift + Tab for Tmux navigation
"ctrl+tab" = "send_text all \\x1b[27;5;9~";
"ctrl+shift+tab" = "send_text all \\x1b[27;6;9~";
"alt+tab" = "send_text all \\x1b[27;3;9~";
};
settings = {
scrollback_lines = 10000;
initial_window_width = 1200;
initial_window_height = 600;
update_check_interval = 0;
enable_audio_bell = false;
confirm_os_window_close = "0";
remember_window_size = "no";
disable_ligatures = "never";
url_style = "curly";
copy_on_select = "clipboard";
cursor_shape = "Underline";
cursor_underline_thickness = 3;
cursor_trail = 3;
cursor_trail_decay = "0.1 0.4";
window_padding_width = 10;
open_url_with = "default";
};
};
}
-7
View File
@@ -1,7 +0,0 @@
# Nextcloud is a suite of client-server software for creating file hosting services and using them. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server. In contrast to proprietary services, Nextcloud can be hosted on a private server, without additional cost.
{
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
}
+19
View File
@@ -0,0 +1,19 @@
{pkgs, ...}: let
nightshift-toggle =
pkgs.writeShellScriptBin "nightshift-toggle"
# bash
''
if pidof "hyprsunset"; then
pkill hyprsunset
${pkgs.libnotify}/bin/notify-send "Night Shift Disabled" "Returning to full spectrum light. Filter disabled."
else
${pkgs.hyprsunset}/bin/hyprsunset -t 4500 &
${pkgs.libnotify}/bin/notify-send "Night Shift Activated" "Welcome to the warm side. Blue light filtering is now active."
fi
'';
in {
home.packages = with pkgs; [
hyprsunset
nightshift-toggle
];
}
@@ -1,15 +1,13 @@
# - ## Nixy
#-
#- Nixy is a simple script that I use to manage my NixOS system. It's a simple script that provides a menu to rebuild, upgrade, update, collect garbage, clean boot menu, etc.
#- Nixy is a simple script that I use to manage my NixOS system. It's a simple script that provides a menu to rebuild, test, update, collect garbage, clean boot menu, etc.
#-
#- - `nixy` - UI wizard to manage the system.
#- - `nixy rebuild` - Rebuild the system.
#- - `nixy ...` - ... see the script for more commands.
{ pkgs, config, inputs, ... }:
{ pkgs, config, ... }:
let
configDirectory = config.var.configDirectory;
hostname = config.var.hostname;
nixy = pkgs.writeShellScriptBin "nixy"
# bash
@@ -24,7 +22,7 @@ let
# "icon;name;command"[]
apps=(
"󰑓;Rebuild;nixy rebuild"
"󰦗;Upgrade;nixy upgrade"
"󰐊;Test;nixy test"
"󰚰;Update;nixy update"
";Collect Garbage;nixy gc"
"󰍜;Clean Boot Menu;nixy cb"
@@ -51,14 +49,23 @@ let
[[ $1 == "" ]] && ui
if [[ $1 == "rebuild" ]];then
cd ${configDirectory} && git add .
sudo nixos-rebuild switch --flake ${configDirectory}#${hostname}
elif [[ $1 == "upgrade" ]];then
sudo nixos-rebuild switch --upgrade --flake '${configDirectory}#${hostname}'
cd ${configDirectory} && git add . && sudo nixos-rebuild switch --flake
elif [[ $1 == "test" ]];then
cd ${configDirectory} && git add . && sudo nixos-rebuild test --flake
elif [[ $1 == "update" ]];then
cd ${configDirectory} && nix flake update
elif [[ $1 == "gc" ]];then
cd ${configDirectory} && sudo nix-collect-garbage -d
echo "Starting Nix garbage collection..."
cd ${configDirectory} && \
echo "Cleaning up system garbage..." && \
sudo nix-collect-garbage -d && \
echo "Cleaning up user garbage..." && \
nix-collect-garbage -d && \
echo "Collecting garbage from Nix store..." && \
nix-store --gc && \
echo "Optimizing Nix store..." && \
nix-store --optimise
echo "Nix garbage collection complete."
elif [[ $1 == "cb" ]];then
sudo /run/current-system/bin/switch-to-configuration boot
elif [[ $1 == "listgen" ]];then
@@ -67,5 +74,4 @@ let
echo "Unknown argument"
fi
'';
in { home.packages = [ nixy ]; }
+26
View File
@@ -0,0 +1,26 @@
# NVF is a Neovim configuration that provides a minimal setup with essential plugins and configurations.
{
inputs,
pkgs,
...
}: {
imports = [
inputs.nvf.homeManagerModules.default
./options.nix
./languages.nix
./picker.nix
./snacks.nix
./keymaps.nix
./utils.nix
./mini.nix
];
programs.nvf = {
enable = true;
settings.vim = {
startPlugins = [
pkgs.vimPlugins.vim-kitty-navigator
];
};
};
}
+173
View File
@@ -0,0 +1,173 @@
{
programs.nvf.settings.vim = {
globals.mapleader = " ";
binds = {
whichKey = {
enable = true;
# TODO: registers
register = {};
};
};
keymaps = [
# General Mappings
{
key = "s";
mode = "n";
silent = true;
action = "<cmd>lua require('flash').jump()<cr>";
desc = "Flash";
}
{
key = "K";
mode = "n";
silent = true;
action = "<cmd>lua vim.lsp.buf.hover()<cr>";
desc = "LSP Hover";
}
{
key = "<C-tab>";
mode = "n";
silent = true;
action = "<cmd>bnext<cr>";
desc = "Next Buffer";
}
# Kitty navigator
{
key = "<C-h>";
mode = "n";
silent = true;
action = "<cmd>KittyNavigateLeft<cr>";
}
{
key = "<C-j>";
mode = "n";
silent = true;
action = "<cmd>KittyNavigateDown<cr>";
}
{
key = "<C-k>";
mode = "n";
silent = true;
action = "<cmd>KittyNavigateUp<cr>";
}
{
key = "<C-l>";
mode = "n";
silent = true;
action = "<cmd>KittyNavigateRight<cr>";
}
# Disable Arrow Keys in Normal Mode
{
key = "<Up>";
mode = "n";
silent = true;
action = "<Nop>";
desc = "Disable Up Arrow";
}
{
key = "<Down>";
mode = "n";
silent = true;
action = "<Nop>";
desc = "Disable Down Arrow";
}
{
key = "<Left>";
mode = "n";
silent = true;
action = "<Nop>";
desc = "Disable Left Arrow";
}
{
key = "<Right>";
mode = "n";
silent = true;
action = "<Nop>";
desc = "Disable Right Arrow";
}
# UI
{
key = "<leader>uw";
mode = "n";
silent = true;
action = "<cmd>set wrap!<cr>";
desc = "Toggle word wrapping";
}
{
key = "<leader>ul";
mode = "n";
silent = true;
action = "<cmd>set linebreak!<cr>";
desc = "Toggle linebreak";
}
{
key = "<leader>us";
mode = "n";
silent = true;
action = "<cmd>set spell!<cr>";
desc = "Toggle spellLazyGitcheck";
}
{
key = "<leader>uc";
mode = "n";
silent = true;
action = "<cmd>set cursorline!<cr>";
desc = "Toggle cursorline";
}
{
key = "<leader>un";
mode = "n";
silent = true;
action = "<cmd>set number!<cr>";
desc = "Toggle line numbers";
}
{
key = "<leader>ur";
mode = "n";
silent = true;
action = "<cmd>set relativenumber!<cr>";
desc = "Toggle relative line numbers";
}
{
key = "<leader>ut";
mode = "n";
silent = true;
action = "<cmd>set showtabline=2<cr>";
desc = "Show tabline";
}
{
key = "<leader>uT";
mode = "n";
silent = true;
action = "<cmd>set showtabline=0<cr>";
desc = "Hide tabline";
}
# Windows
{
key = "<leader>ws";
mode = "n";
silent = true;
action = "<cmd>split<cr>";
desc = "Split";
}
{
key = "<leader>wv";
mode = "n";
silent = true;
action = "<cmd>vsplit<cr>";
desc = "VSplit";
}
{
key = "<leader>wd";
mode = "n";
silent = true;
action = "<cmd>close<cr>";
desc = "Close";
}
];
};
}
+119
View File
@@ -0,0 +1,119 @@
{
lib,
pkgs,
...
}: {
programs.nvf.settings.vim = {
diagnostics = {
enable = true;
config = {
signs = {
text = {
"vim.diagnostic.severity.Error" = " ";
"vim.diagnostic.severity.Warn" = " ";
"vim.diagnostic.severity.Hint" = " ";
"vim.diagnostic.severity.Info" = " ";
};
};
underline = true;
update_in_insert = true;
virtual_text = {
format =
lib.generators.mkLuaInline
/*
lua
*/
''
function(diagnostic)
return string.format("%s", diagnostic.message)
--return string.format("%s (%s)", diagnostic.message, diagnostic.source)
end
'';
};
};
nvim-lint = {
enable = true;
};
};
syntaxHighlighting = true;
treesitter = {
enable = true;
autotagHtml = true;
context.enable = true;
highlight.enable = true;
grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
typescript # in language settings only tsx gets enabled, not typescript
];
};
lsp = {
enable = true;
trouble.enable = true;
lspSignature.enable = true;
lspconfig.enable = true;
formatOnSave = true;
inlayHints.enable = true;
null-ls.enable = true;
servers.nixd.settings.nil.nix.autoArchive = true;
otter-nvim = {
enable = true;
setupOpts = {
buffers.set_filetype = true;
lsp = {
diagnostic_update_event = [
"BufWritePost"
"InsertLeave"
];
};
};
};
lspkind.enable = true;
lspsaga = {
enable = true;
setupOpts = {
ui = {
code_action = "";
};
lightbulb = {
sign = false;
virtual_text = true;
};
breadcrumbs.enable = false;
};
};
};
languages = {
enableDAP = true;
enableExtraDiagnostics = true;
enableFormat = true;
enableTreesitter = true;
astro.enable = true;
go.enable = true;
markdown = {
enable = true;
format.type = ["prettierd"];
extensions = {
markview-nvim = {
enable = true;
};
};
extraDiagnostics.enable = true;
};
ts = {
enable = true;
extensions.ts-error-translator.enable = true;
};
css.enable = true;
svelte.enable = true;
html.enable = true;
bash.enable = true;
nix.enable = true;
tailwind.enable = true;
};
formatter = {
conform-nvim = {
enable = true;
};
};
};
}
+13
View File
@@ -0,0 +1,13 @@
{
programs.nvf.settings.vim.mini = {
starter.enable = true;
comment.enable = true;
# cursorword.enable = true;
icons.enable = true;
indentscope.enable = true;
notify.enable = true;
pairs.enable = true;
diff.enable = true;
git.enable = true;
};
}
+40
View File
@@ -0,0 +1,40 @@
{lib, ...}: {
programs.nvf.settings.vim = {
viAlias = false;
vimAlias = true;
withNodeJs = true;
# syntaxHighlighting = true;
options = {
autoindent = true;
smartindent = true;
shiftwidth = 2;
foldlevel = 99;
foldcolumn = "auto:1";
mousescroll = "ver:1,hor:1";
mousemoveevent = true;
fillchars = "eob:,fold: ,foldopen:,foldsep:,foldclose:";
signcolumn = "yes";
tabstop = 2;
softtabstop = 2;
wrap = false;
};
globals = {
navic_silence = true; # navic tries to attach multiple LSPs and fails
suda_smart_edit = 1; # use super user write automatically
neovide_scale_factor = 0.7;
neovide_cursor_animation_length = 0.1;
neovide_cursor_short_animation_length = 0;
};
clipboard = {
enable = true;
registers = "unnamedplus";
providers.wl-copy.enable = true;
};
theme = {
enable = true;
name = lib.mkForce "catppuccin";
style = lib.mkForce "mocha";
transparent = lib.mkForce true;
};
};
}
@@ -1,221 +1,256 @@
{ config, ... }: {
programs.nixvim = {
highlightOverride = {
SnacksPicker = {
bg = "none";
nocombine = true;
{
programs.nvf.settings.vim = {
utility = {
oil-nvim.enable = true;
snacks-nvim = {
setupOpts = {
picker.enabled = true;
explorer.enabled = true;
};
};
SnacksPickerBorder = {
bg = "none";
fg = "#${config.lib.stylix.colors.base0D}";
};
SnacksPickerTree = { bg = "#${config.lib.stylix.colors.base00}"; };
FloatBorder = {
bg = "#${config.lib.stylix.colors.base00}";
fg = "#${config.lib.stylix.colors.base0D}";
};
NormalFloat = { bg = "#${config.lib.stylix.colors.base00}"; };
};
plugins = {
snacks.settings = {
picker.enable = true;
explorer.enable = true;
};
oil.enable = true;
which-key.settings.spec = [
{
__unkeyed-1 = "<leader>f";
mode = "n";
group = "+find";
}
{
__unkeyed-1 = "<leader>g";
mode = "n";
group = "+git";
}
{
__unkeyed-1 = "<leader>s";
mode = "n";
group = "+search";
}
];
};
keymaps = [
# Top Pickers & Explorer
{
key = "<leader> ";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.smart()<cr>";
options.desc = "Smart Find Files";
desc = "Smart Find Files";
}
{
key = "<leader>,";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.buffers()<cr>";
options.desc = "Buffers";
desc = "Buffers";
}
{
key = "<leader>/";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.grep()<cr>";
options.desc = "Grep";
desc = "Grep";
}
{
key = "<leader>:";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.command_history()<cr>";
options.desc = "Command History";
desc = "Command History";
}
{
key = "<leader>e";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.explorer()<cr>";
options.desc = "File Explorer";
desc = "File Explorer";
}
{
key = "-";
mode = "n";
silent = true;
action = "<cmd>Oil<cr>";
options.desc = "Oil";
desc = "Oil";
}
# Find
{
key = "<leader>fb";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.buffers()<cr>";
options.desc = "Buffers";
desc = "Buffers";
}
{
key = "<leader>fc";
mode = "n";
silent = true;
action = ''
<cmd>lua Snacks.picker.files({ cwd = vim.fn.stdpath("config") })<cr>'';
options.desc = "Find Config File";
desc = "Find Config File";
}
{
key = "<leader>ff";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.files()<cr>";
options.desc = "Find Files";
desc = "Find Files";
}
{
key = "<leader>fg";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.git_files()<cr>";
options.desc = "Find Git Files";
desc = "Find Git Files";
}
{
key = "<leader>fp";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.projects()<cr>";
options.desc = "Projects";
desc = "Projects";
}
{
key = "<leader>fr";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.recent()<cr>";
options.desc = "Recent";
desc = "Recent";
}
{
key = "<leader>fn";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.notifications()<cr>";
options.desc = "Notification History";
desc = "Notification History";
}
{
key = "<leader>fe";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.icons()<cr>";
options.desc = "Emoji";
desc = "Emoji";
}
# Git
{
key = "<leader>gb";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.git_branches()<cr>";
options.desc = "Git Branches";
desc = "Git Branches";
}
{
key = "<leader>gL";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.git_log()<cr>";
options.desc = "Git Log Line";
desc = "Git Log Line";
}
{
key = "<leader>gs";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.git_status()<cr>";
options.desc = "Git Status";
desc = "Git Status";
}
{
key = "<leader>gS";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.git_stash()<cr>";
options.desc = "Git Stash";
desc = "Git Stash";
}
{
key = "<leader>gd";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.git_diff()<cr>";
options.desc = "Git Diff (Hunks)";
desc = "Git Diff (Hunks)";
}
{
key = "<leader>gf";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.git_log_file()<cr>";
options.desc = "Git Log File";
desc = "Git Log File";
}
# Grep
{
key = "<leader>sb";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.lines()<cr>";
options.desc = "Buffer Lines";
desc = "Buffer Lines";
}
{
key = "<leader>st";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.todo_comments()<cr>";
options.desc = "Todos";
desc = "Todos";
}
{
key = "<leader>sB";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.grep_buffers()<cr>";
options.desc = "Grep Open Buffers";
desc = "Grep Open Buffers";
}
{
key = "<leader>sg";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.grep()<cr>";
options.desc = "Grep";
desc = "Grep";
}
{
key = "<leader>sw";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.grep_word()<cr>";
options.desc = "Visual selection or word";
desc = "Visual selection or word";
}
{
key = "<leader>sr";
mode = "n";
silent = true;
action = "<cmd>nohlsearch<cr>";
options.desc = "Reset search";
desc = "Reset search";
}
# LSP
{
key = "gd";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.lsp_definitions()<cr>";
options.desc = "Goto Definition";
desc = "Goto Definition";
}
{
key = "gD";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.lsp_declarations()<cr>";
options.desc = "Goto Declaration";
desc = "Goto Declaration";
}
{
key = "gr";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.lsp_references()<cr>";
options.desc = "References";
options.nowait = true;
desc = "References";
nowait = true;
}
{
key = "gI";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.lsp_implementations()<cr>";
options.desc = "Goto Implementation";
desc = "Goto Implementation";
}
{
key = "gy";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.lsp_type_definitions()<cr>";
options.desc = "Goto Type Definition";
desc = "Goto Type Definition";
}
{
key = "<leader>ss";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.lsp_symbols()<cr>";
options.desc = "LSP Symbols";
desc = "LSP Symbols";
}
{
key = "<leader>sS";
mode = "n";
silent = true;
action = "<cmd>lua Snacks.picker.lsp_workspace_symbols()<cr>";
options.desc = "LSP Workspace Symbols";
desc = "LSP Workspace Symbols";
}
];
};
+19
View File
@@ -0,0 +1,19 @@
{
programs.nvf.settings.vim.utility.snacks-nvim = {
enable = true;
setupOpts = {
image = {
enabled = true;
doc = {
inline = false;
float = true;
};
};
quickfile.enabled = true;
statuscolumn.enabled = true;
zen.enabled = true;
bufdelete.enabled = true;
gitsigns.enabled = true;
};
};
}
+53
View File
@@ -0,0 +1,53 @@
{pkgs, ...}: {
programs.nvf.settings.vim = {
undoFile.enable = true;
utility = {
motion.flash-nvim.enable = true;
outline.aerial-nvim.enable = true;
};
tabline.nvimBufferline.enable = true;
notes.todo-comments.enable = true;
assistant.copilot = {
enable = true;
cmp.enable = true;
};
statusline.lualine.enable = true;
autocomplete = {
nvim-cmp = {
enable = true;
sources = {
buffer = "[Buffer]";
nvim-cmp = null;
path = "[Path]";
};
sourcePlugins = [
pkgs.vimPlugins.cmp-cmdline
];
};
};
snippets.luasnip.enable = true;
ui = {
noice.enable = true;
colorizer.enable = true;
};
git = {
enable = true;
gitsigns.enable = true;
};
terminal.toggleterm = {
enable = true;
lazygit = {
enable = true;
mappings.open = "<leader>gl";
};
};
visuals = {
rainbow-delimiters.enable = true;
nvim-scrollbar = {
enable = false;
};
};
};
}
-46
View File
@@ -1,46 +0,0 @@
{
programs.nixvim = {
autoGroups = {
highlightyank.clear = true;
q_close_windows.clear = true;
};
autoCmd = [
# highlightyank
# https://github.com/AstroNvim/AstroNvim/blob/v4.7.7/lua/astronvim/plugins/_astrocore_autocmds.lua#L206-L211
{
desc = "Highlight yanked text";
event = "TextYankPost";
group = "highlightyank";
pattern = "*";
callback.__raw = ''
function()
vim.highlight.on_yank()
end
'';
}
# q_close_windows
# https://github.com/AstroNvim/AstroNvim/blob/v4.7.7/lua/astronvim/plugins/_astrocore_autocmds.lua#L242-L255
{
desc = "Make q close help, man, quickfix, dap floats";
event = "BufWinEnter";
group = "q_close_windows";
callback.__raw = ''
function(event)
if vim.tbl_contains({ "help", "nofile", "quickfix" }, vim.bo[event.buf].buftype) then
vim.keymap.set("n", "q", "<Cmd>close<CR>", {
desc = "Close window",
buffer = event.buf,
silent = true,
nowait = true,
})
end
end
'';
}
];
};
}
-22
View File
@@ -1,22 +0,0 @@
# Nixvim is a NixOS module that installs and configures Neovim
{ inputs, ... }: {
imports = [
inputs.nixvim.homeManagerModules.nixvim
./plugins/cmp.nix
./plugins/floaterm.nix
./plugins/git.nix
./plugins/lsp.nix
./plugins/markdown.nix
./plugins/mini.nix
./plugins/picker.nix
./plugins/snacks.nix
./plugins/trouble.nix
./plugins/utils.nix
./options.nix
./keymaps.nix
./autocmds.nix
];
programs.nixvim.enable = true;
}
-156
View File
@@ -1,156 +0,0 @@
{
programs.nixvim = {
plugins.which-key = {
enable = true;
settings = {
delay = 600;
icons = {
breadcrumb = "»";
group = "+";
separator = ""; # ➜
mappings = false;
};
spec = [
# General Mappings
{
__unkeyed-1 = "<leader>u";
mode = "n";
group = "+ui";
}
{
__unkeyed-1 = "<leader>w";
mode = "n";
group = "+windows";
}
{
__unkeyed-1 = "<leader>c";
mode = "n";
group = "+code";
}
];
win = {
border = "rounded";
wo.winblend = 0;
};
};
};
keymaps = [
# General Mappings
{
key = "s";
action = "<cmd>lua require('flash').jump()<cr>";
options.desc = "Flash";
}
{
key = "K";
action = "<cmd>lua vim.lsp.buf.hover()<cr>";
options.desc = "LSP Hover";
}
{
key = "<C-tab>";
action = "<cmd>bnext<cr>";
options.desc = "Next Buffer";
}
# Tmux
{
key = "<C-h>";
action = "<cmd>TmuxNavigateLeft<cr>";
}
{
key = "<C-j>";
action = "<cmd>TmuxNavigateDown<cr>";
}
{
key = "<C-k>";
action = "<cmd>TmuxNavigateUp<cr>";
}
{
key = "<C-l>";
action = "<cmd>TmuxNavigateRight<cr>";
}
# Disable Arrow Keys in Normal Mode
{
key = "<Up>";
action = "<Nop>";
options.desc = "Disable Up Arrow";
}
{
key = "<Down>";
action = "<Nop>";
options.desc = "Disable Down Arrow";
}
{
key = "<Left>";
action = "<Nop>";
options.desc = "Disable Left Arrow";
}
{
key = "<Right>";
action = "<Nop>";
options.desc = "Disable Right Arrow";
}
# UI
{
key = "<leader>uw";
action = "<cmd>set wrap!<cr>";
options.desc = "Toggle word wrapping";
}
{
key = "<leader>ul";
action = "<cmd>set linebreak!<cr>";
options.desc = "Toggle linebreak";
}
{
key = "<leader>us";
action = "<cmd>set spell!<cr>";
options.desc = "Toggle spellLazyGitcheck";
}
{
key = "<leader>uc";
action = "<cmd>set cursorline!<cr>";
options.desc = "Toggle cursorline";
}
{
key = "<leader>un";
action = "<cmd>set number!<cr>";
options.desc = "Toggle line numbers";
}
{
key = "<leader>ur";
action = "<cmd>set relativenumber!<cr>";
options.desc = "Toggle relative line numbers";
}
{
key = "<leader>ut";
action = "<cmd>set showtabline=2<cr>";
options.desc = "Show tabline";
}
{
key = "<leader>uT";
action = "<cmd>set showtabline=0<cr>";
options.desc = "Hide tabline";
}
# Windows
{
key = "<leader>ws";
action = "<cmd>split<cr>";
options.desc = "Split";
}
{
key = "<leader>wv";
action = "<cmd>vsplit<cr>";
options.desc = "VSplit";
}
{
key = "<leader>wd";
action = "<cmd>close<cr>";
options.desc = "Close";
}
];
};
}
-141
View File
@@ -1,141 +0,0 @@
{
programs.nixvim = {
globals.mapleader = " ";
diagnostics = {
virtual_text = true;
virtual_improved = { current_line = "only"; };
};
opts = {
autoindent = true;
smartindent = true;
incsearch = true;
hlsearch = true;
wildmode = "list:longest";
scrolloff = 8;
swapfile = false;
conceallevel = 3;
clipboard = "unnamed,unnamedplus";
# Don't stop backspace at insert
backspace.__raw = ''
vim.list_extend(vim.opt.backspace:get(), { "nostop" })
'';
# Keep visual indentation on wrapped lines
breakindent = true;
# Hide command line unless needed
cmdheight = 0;
# Insert mode completion options
completeopt = [ "menu" "menuone" "noselect" ];
# Raise a dialog asking if you wish to save the current file(s)
confirm = true;
# Copy previous indentation on autoindenting
copyindent = true;
# Highlight current line
cursorline = true;
# Expand <Tab> to spaces
expandtab = true;
# Disable `~` on nonexistent lines
fillchars = { eob = " "; };
# Enable fold with all code unfolded
foldcolumn = "1";
foldenable = true;
foldlevel = 99;
foldlevelstart = 99;
# Ignore case in search patterns
ignorecase = true;
# Show substitution preview in split window
inccommand = "split";
# Infer casing on word completion
infercase = true;
# Global statusline
laststatus = 3;
# Wrap lines at 'breakat'
linebreak = true;
# Enable mouse support
mouse = "a";
# Show line numbers
number = true;
# Preserve indentation as much as possible
preserveindent = true;
# Height of the popup menu
pumheight = 10;
# Display line numbers relative to current line
relativenumber = true;
# Minimal number of lines to keep around the cursor
# This has the effect to move the view along with current line
#scrolloff = 999;
# Number of spaces to use for indentation
shiftwidth = 2;
# Disable showing modes in command line
showmode = false;
# Always show tabline
showtabline = 2;
# Show signs column
signcolumn = "yes";
# Override ignorecase if search pattern contains uppercase characters
smartcase = true;
# Number of spaces input on <Tab>
softtabstop = 2;
# Open horizontal split below (:split)
splitbelow = true;
# Open vertical split to the right (:vsplit)
splitright = true;
# Number of spaces to represent a <Tab>
tabstop = 2;
# Enables 24-bit RGB color
termguicolors = true;
# Shorter timeout duration
timeoutlen = 500;
# Set window title to the filename
title = true;
# Save undo history to undo file (in $XDG_STATE_HOME/nvim/undo)
undofile = true;
# Enable virtual edit in visual block mode
# This has the effect of selecting empty cells beyond lines boundaries
virtualedit = "block";
# Disable line wrapping
wrap = false;
# Disable making a backup before overwriting a file
writebackup = false;
};
};
}
-117
View File
@@ -1,117 +0,0 @@
{
programs.nixvim.plugins = {
luasnip.enable = true;
cmp-buffer = { enable = true; };
cmp-emoji = { enable = true; };
cmp-nvim-lsp = { enable = true; };
cmp-path = { enable = true; };
cmp_luasnip = { enable = true; };
cmp = {
enable = true;
settings = {
snippet.expand =
"function(args) require('luasnip').lsp_expand(args.body) end";
sources = [
{ name = "nvim_lsp"; }
{ name = "luasnip"; }
{
name = "buffer";
option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
}
{ name = "nvim_lua"; }
{ name = "mkdnflow"; }
{ name = "render-markdown"; }
{ name = "path"; }
];
formatting = {
fields = [ "abbr" "kind" "menu" ];
format =
# lua
''
function(_, item)
local icons = {
Namespace = "󰌗",
Text = "󰉿",
Method = "󰆧",
Function = "󰆧",
Constructor = "",
Field = "󰜢",
Variable = "󰀫",
Class = "󰠱",
Interface = "",
Module = "",
Property = "󰜢",
Unit = "󰑭",
Value = "󰎠",
Enum = "",
Keyword = "󰌋",
Snippet = "",
Color = "󰏘",
File = "󰈚",
Reference = "󰈇",
Folder = "󰉋",
EnumMember = "",
Constant = "󰏿",
Struct = "󰙅",
Event = "",
Operator = "󰆕",
TypeParameter = "󰊄",
Table = "",
Object = "󰅩",
Tag = "",
Array = "[]",
Boolean = "",
Number = "",
Null = "󰟢",
String = "󰉿",
Calendar = "",
Watch = "󰥔",
Package = "",
Copilot = "",
Codeium = "",
TabNine = "",
}
local icon = icons[item.kind] or ""
item.kind = string.format("%s %s", icon, item.kind or "")
return item
end
'';
};
window = {
completion = {
winhighlight =
"FloatBorder:CmpBorder,Normal:CmpPmenu,Search:PmenuSel";
scrollbar = false;
sidePadding = 0;
border = [ "" "" "" "" "" "" "" "" ];
};
documentation = {
border = [ "" "" "" "" "" "" "" "" ];
winhighlight =
"FloatBorder:CmpBorder,Normal:CmpPmenu,Search:PmenuSel";
};
};
mapping = {
"<C-n>" = "cmp.mapping.select_next_item()";
"<C-p>" = "cmp.mapping.select_prev_item()";
"<Down>" = "cmp.mapping.select_next_item()";
"<Up>" = "cmp.mapping.select_prev_item()";
"<C-j>" = "cmp.mapping.select_next_item()";
"<C-k>" = "cmp.mapping.select_prev_item()";
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
"<C-f>" = "cmp.mapping.scroll_docs(4)";
"<C-Space>" = "cmp.mapping.complete()";
"<C-e>" = "cmp.mapping.close()";
"<CR>" =
"cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true })";
};
};
};
};
}
-13
View File
@@ -1,13 +0,0 @@
{ config, ... }: {
programs.nixvim = {
plugins.floaterm.enable = true;
highlightOverride = {
FloatermBorder.fg = "#${config.lib.stylix.colors.base01}";
};
keymaps = [{
key = "<leader>cn";
action = "<cmd>FloatermNew --title=nixy nixy || sleep 10<cr>";
options.desc = "Nixy";
}];
};
}
-13
View File
@@ -1,13 +0,0 @@
{
programs.nixvim = {
plugins = {
gitsigns.enable = true;
snacks.settings = { lazygit.enable = true; };
};
keymaps = [{
key = "<leader>gl";
action = "<cmd>lua Snacks.lazygit()<cr>";
options.desc = "LazyGit";
}];
};
}
-39
View File
@@ -1,39 +0,0 @@
{
programs.nixvim.plugins = {
lsp-format.enable = true;
lsp = {
enable = true;
inlayHints = true;
servers = {
bashls.enable = true;
gopls.enable = true;
ts_ls.enable = true;
nixd.enable = true;
tailwindcss.enable = true;
html.enable = true;
svelte.enable = true;
};
};
none-ls = {
enable = true;
sources = {
completion = { luasnip.enable = true; };
diagnostics = {
golangci_lint.enable = true;
statix.enable = true;
};
formatting = {
gofmt.enable = true;
goimports.enable = true;
nixfmt.enable = true;
markdownlint.enable = true;
tidy.enable = true;
shellharden.enable = true;
shfmt.enable = true;
golines.enable = true;
gofumpt.enable = true;
};
};
};
};
}
-34
View File
@@ -1,34 +0,0 @@
{ config, ... }:
let
accent = "#${config.lib.stylix.colors.base0D}";
muted = "#${config.lib.stylix.colors.base03}";
in {
programs.nixvim = {
extraFiles."after/ftplugin/markdown.lua".text = ''
vim.bo.tabstop = 2
vim.bo.shiftwidth = 2
vim.bo.expandtab = true
vim.wo.cursorline = false
'';
# Plugins
plugins = {
# Render UI elements
render-markdown = {
enable = true;
settings = { completions.lsp.enabled = true; };
};
mkdnflow = {
enable = true;
mappings = {
MkdnTableNextCell = {
key = "<S-Tab>";
modes = "i";
};
MkdnTablePrevCell = false;
};
};
};
};
}
-22
View File
@@ -1,22 +0,0 @@
{ config, ... }: {
programs.nixvim = {
plugins.mini = {
enable = true;
mockDevIcons = true;
modules = {
icons = { };
# TODO: Learn how to use this
bracketed = { };
git = { };
diff = { };
starter = { };
pairs = { };
notify = { lsp_progress.enable = false; };
indentscope = { };
cursorword = { };
comment = { };
starter = { };
};
};
};
}
-40
View File
@@ -1,40 +0,0 @@
{
programs.nixvim = {
plugins.snacks = {
enable = true;
settings = {
image = {
enable = true;
doc = { inline = false; };
};
quickfile.enable = true;
statuscolumn.enable = true;
zen.enable = true;
bufdelete.enable = true;
};
};
keymaps = [
{
key = "<leader>uz";
action = "<cmd>lua Snacks.zen()<cr>";
options.desc = "Zen";
}
{
key = "<leader>ud";
action = "<cmd>lua Snacks.dim.enable()<cr>";
options.desc = "Dim";
}
{
key = "<leader>uD";
action = "<cmd>lua Snacks.dim.disable()<cr>";
options.desc = "Undim";
}
{
key = "<leader>wc";
action = "<cmd>lua Snacks.bufdelete.all()<cr>";
options.desc = "Close all buffers";
}
];
};
}
-46
View File
@@ -1,46 +0,0 @@
{ pkgs, ... }: {
home.packages = with pkgs; [ ctags ];
programs.nixvim = {
plugins = {
trouble.enable = true;
which-key.settings.spec = [{
__unkeyed-1 = "<leader>t";
mode = "n";
group = "+trouble";
}];
};
keymaps = [
{
key = "<leader>tx";
action = "<cmd>Trouble diagnostics toggle<cr>";
options.desc = "Diagnostics (Trouble)";
}
{
key = "<leader>tX";
action = "<cmd>Trouble diagnostics toggle filter.buf=0<cr>";
options.desc = "Buffer Diagnostics (Trouble)";
}
{
key = "<leader>ts";
action = "<cmd>Trouble symbols toggle focus=false<cr>";
options.desc = "Symbols (Trouble)";
}
{
key = "<leader>tl";
action = "<cmd>Trouble lsp toggle focus=false win.position=right<cr>";
options.desc = "LSP Definitions / references / ... (Trouble)";
}
{
key = "<leader>tL";
action = "<cmd>Trouble loclist toggle<cr>";
options.desc = "Location List (Trouble)";
}
{
key = "<leader>tQ";
action = "<cmd>Trouble qflist toggle<cr>";
options.desc = "Quickfix List (Trouble)";
}
];
};
}
-37
View File
@@ -1,37 +0,0 @@
{ config, lib, pkgs, ... }: {
programs.nixvim = {
nixpkgs.config.allowUnfree = true; # For copilot
highlightOverride = {
WhichKeySeparator.bg = "#${config.lib.stylix.colors.base00}";
};
plugins = {
bufferline.enable = true;
copilot-vim = {
enable = true;
# FIXME: Temp issue solving
settings.node_command = lib.getExe pkgs.nodejs_20;
};
flash.enable = true;
tmux-navigator.enable = true;
todo-comments.enable = true;
lualine = { enable = true; };
aerial.enable = true;
treesitter = {
enable = true;
nixGrammars = true;
settings = {
ensure_installed = "all";
indent.enable = true;
highlight.enable = true;
};
};
};
keymaps = [
{
key = "<leader>ct";
action = "<cmd>AerialToggle<cr>";
options.desc = "Aerial (tags)";
}
];
};
}
+19
View File
@@ -0,0 +1,19 @@
{pkgs, ...}: {
home.packages = with pkgs; [
protonvpn-gui
proton-pass
proton-authenticator
];
# Fix Proton Authenticator desktop entry
xdg.desktopEntries = {
"Proton Authenticator" = {
name = "Proton Authenticator";
exec = "env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator";
icon = "proton-authenticator";
type = "Application";
categories = ["Utility"];
terminal = false;
};
};
}
-257
View File
@@ -1,257 +0,0 @@
# Qutebrowser is a keyboard-focused browser with a minimal GUI.
# My homepage is generated using https://github.com/anotherhadi/homepage
{ pkgs, config, ... }:
let
accent = "#${config.lib.stylix.colors.base0D}";
background = "#${config.lib.stylix.colors.base00}";
foreground = "#${config.lib.stylix.colors.base05}";
muted = "#${config.lib.stylix.colors.base03}";
settings = ''
{
"config": {
"title" : "Welcome Home",
"openLinksInNewTab": false,
"locale": "fr-FR",
"colors": {
"primary": "${accent}",
"background": "${background}",
"foreground": "${foreground}",
"muted": "#${muted}"
},
"folders": [
{
"name": "Bookmarks",
"links": [
{"title": "MyNixOs", "url": "https://mynixos.com", "icon": "󱄅"},
{"title": "Github", "url": "https://github.com", "icon": ""},
{"title": "Proton", "url": "https://mail.proton.me/u/0/inbox", "icon": ""},
{"title": "Cloudflare One", "url": "https://one.dash.cloudflare.com/", "icon": ""},
{"title": "Chat GPT", "url": "https://chat.openai.com/", "icon": "󰭹"},
{"title": "Nixvim", "url": "https://nix-community.github.io/nixvim/", "icon": ""},
{"title": "Hyprland Wiki", "url": "https://wiki.hyprland.org/", "icon": "󰖬"},
{"title": "Youtube", "url": "https://youtube.com", "icon": "󰗃"},
{"title": "Figma", "url": "https://figma.com", "icon": ""},
{"title": "Server", "url": "https://home.anotherhadi.com", "icon": ""}
]
},
{
"name": "Work",
"links": [
{"title": "Outlook", "url": "https://outlook.office.com/mail/", "icon": "󰴢"},
{"title": "Office", "url": "https://www.office.com/?auth=2", "icon": "󰏆"},
{"title": "Teams", "url": "https://teams.microsoft.com/_", "icon": "󰊻"}
]
}
]
}
}
'';
homepage = pkgs.buildNpmPackage {
pname = "homepage";
version = "0.0.0";
src = pkgs.fetchFromGitHub {
owner = "anotherhadi";
repo = "homepage";
rev = "b77d35ed3596eb451bd2ec78063d7cc6e73c773d";
hash = "sha256-j/40922kfAh6zqJ4IRYpr66YXNNYsxuXwZ0aiJFJea0=";
};
# npmDepsHash = lib.fakeHash;
npmDepsHash = "sha256-bG+CHTq2Rst3JMxsjAC81KhK+G7WwsTVD1eyP87g0z4=";
buildPhase = ''
npm install
cp ${
pkgs.writeText "src/routes/config.json" settings
} src/routes/config.json
npm run build
mkdir $out
mv build $out
'';
meta = {
description = "homepage";
homepage = "https://github.com/anotherhadi/homepage";
};
};
in {
imports = [ ../duckduckgo-colorscheme ];
programs.qutebrowser = {
enable = true;
searchEngines = {
"DEFAULT" = "https://duckduckgo.com/?q={}&ia=web";
"d" = "https://duckduckgo.com/?q={}&ia=web";
"g" = "https://google.com/search?q={}";
"y" = "https://youtube.com/results?search_query={}";
"ya" = "https://yandex.com/search/?text={}";
"n" = "https://mynixos.com/search?q={}";
"nixo" = "https://search.nixos.org/options?channel=unstable&query={}";
"nixp" = "https://search.nixos.org/packages?channel=unstable&query={}";
"gt" = "https://github.com/search?q={}&type=repositories";
};
quickmarks = {
home = "${homepage}/build/index.html";
server = "https://home.anotherhadi.com";
jack = "https://home.anotherhadi.com";
mynixos = "https://mynixos.com";
github = "https://github.com";
outlook = "https://outlook.office.com/mail/";
office = "https://www.office.com/?auth=2";
teams = "https://teams.microsoft.com/_";
casa = "http://192.168.2.16:8081/#/";
proton = "https://mail.proton.me/u/0/inbox";
cloudflare-one = "https://one.dash.cloudflare.com/";
chatgpt = "https://chat.openai.com/";
nixvim = "https://nix-community.github.io/nixvim/";
hyprland = "https://wiki.hyprland.org/";
nerdfont = "https://www.nerdfonts.com/cheat-sheet";
youtube = "https://youtube.com/";
cloudflare = "https://dash.cloudflare.com/";
};
settings = {
url = {
default_page = "${homepage}/build/index.html";
start_pages = [ "${homepage}/build/index.html" ];
};
colors = {
webpage.preferred_color_scheme =
"dark"; # Enable dark mode for websites that support it
};
statusbar.show = "in-mode";
completion = {
height = "30%";
open_categories = [ "history" ];
scrollbar = {
padding = 0;
width = 0;
};
show = "always";
shrink = true;
timestamp_format = "";
web_history.max_items = 7;
};
content = {
autoplay = false;
javascript.clipboard = "access";
javascript.enabled = true;
webgl = true;
pdfjs = true;
};
downloads = {
position = "bottom";
remove_finished = 0;
};
hints = { radius = 1; };
scrolling = {
bar = "never";
smooth = true;
};
tabs = {
show = "multiple";
last_close = "close";
mode_on_change = "restore";
close_mouse_button = "right";
};
zoom.default = "100%";
qt.force_software_rendering = "chromium";
};
keyBindings = {
normal = {
"gh" = "open ${homepage}/build/index.html";
"gs" = "open https://home.anotherhadi.com";
" p" = "tab-move -";
" n" = "tab-move +";
" w" = "tab-close";
" 1" = "tab-focus 1";
" 2" = "tab-focus 2";
" 3" = "tab-focus 3";
" 4" = "tab-focus 4";
" 5" = "tab-focus 5";
" 6" = "tab-focus 6";
" 7" = "tab-focus 7";
" 8" = "tab-focus 8";
" 9" = "tab-focus 9";
" 0" = "tab-focus 10";
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
command = {
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
insert = {
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
};
extraConfig = ''
config.unbind("gm")
config.unbind("gd")
config.unbind("gb")
config.unbind("tl")
config.unbind("gt")
c.tabs.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
c.statusbar.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
config.load_autoconfig(True)
'';
};
}
+2 -2
View File
@@ -1,4 +1,4 @@
# Import all shell configurations
{
imports =
[ ./fzf.nix ./zsh.nix ./starship.nix ./zoxide.nix ./tmux.nix ./eza.nix ];
imports = [./fzf.nix ./zsh.nix ./starship.nix ./zoxide.nix ./eza.nix];
}
-1
View File
@@ -7,7 +7,6 @@
extraOptions = [
"--group-directories-first"
"--no-quotes"
"--git-ignore"
"--icons=always"
];
};
+5 -2
View File
@@ -1,6 +1,9 @@
# Fzf is a general-purpose command-line fuzzy finder.
{ config, lib, ... }:
let
{
config,
lib,
...
}: let
accent = "#" + config.lib.stylix.colors.base0D;
foreground = "#" + config.lib.stylix.colors.base05;
muted = "#" + config.lib.stylix.colors.base03;
+13 -5
View File
@@ -1,6 +1,9 @@
# starship is a minimal, fast, and extremely customizable prompt for any shell!
{ config, lib, ... }:
let
{
config,
lib,
...
}: let
accent = "#${config.lib.stylix.colors.base0D}";
background-alt = "#${config.lib.stylix.colors.base01}";
in {
@@ -17,7 +20,7 @@ in {
"$git_status"
"$character"
];
directory = { style = accent; };
directory = {style = accent;};
character = {
success_symbol = "[](${accent})";
@@ -25,6 +28,12 @@ in {
vimcmd_symbol = "[](cyan)";
};
nix_shell = {
format = "[$symbol]($style) ";
symbol = "🐚";
style = "";
};
git_branch = {
symbol = "[](${background-alt}) ";
style = "fg:${accent} bg:${background-alt}";
@@ -32,8 +41,7 @@ in {
};
git_status = {
format =
"[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218)($ahead_behind$stashed)]($style)";
format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218)($ahead_behind$stashed)]($style)";
style = "cyan";
conflicted = "";
renamed = "";
-58
View File
@@ -1,58 +0,0 @@
# Tmux is a terminal multiplexer that allows you to run multiple terminal sessions in a single window.
{ pkgs, ... }:
let
Config = pkgs.writeShellScriptBin "Config" ''
SESSION="Nixy Config"
tmux has-session -t "$SESSION" 2>/dev/null
if [ $? == 0 ]; then
tmux attach -t "$SESSION"
exit 0
fi
tmux new-session -d -s "$SESSION"
tmux send-keys -t "$SESSION" "sleep 0.2 && clear && cd ~/.config/nixos/ && vim" C-m
tmux new-window -t "$SESSION" -n "nixy"
tmux send-keys -t "$SESSION":1 "sleep 0.2 && clear && cd ~/.config/nixos/ && nixy loop" C-m
tmux new-window -t "$SESSION" -n "lazygit"
tmux send-keys -t "$SESSION":2 "sleep 0.2 && clear && cd ~/.config/nixos/ && lazygit" C-m
tmux select-window -t "$SESSION":0
tmux select-pane -t 0
tmux attach -t "$SESSION"
'';
in {
programs.tmux = {
enable = true;
mouse = true;
shell = "${pkgs.zsh}/bin/zsh";
prefix = "C-s";
terminal = "kitty";
keyMode = "vi";
extraConfig = ''
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R
set -gq allow-passthrough on
bind-key x kill-pane # skip "kill-pane 1? (y/n)" prompt
bind-key -n C-Tab next-window
bind-key -n C-S-Tab previous-window
bind-key -n M-Tab new-window
'';
plugins = with pkgs; [
tmuxPlugins.vim-tmux-navigator
# tmuxPlugins.resurrect
tmuxPlugins.sensible
tmuxPlugins.tokyo-night-tmux
];
};
home.packages = [ Config ];
}
+125 -126
View File
@@ -1,11 +1,16 @@
# My shell configuration
{ pkgs, lib, config, ... }:
let fetch = config.theme.fetch; # neofetch, nerdfetch, pfetch
{
pkgs,
lib,
config,
...
}: let
fetch = config.theme.fetch; # neofetch, nerdfetch, pfetch
in {
home.packages = with pkgs; [bat ripgrep tldr sesh];
home.packages = with pkgs; [ bat ripgrep tldr sesh ];
home.sessionPath = [ "$HOME/go/bin" ];
# Add go binaries to the PATH
home.sessionPath = ["$HOME/go/bin"];
programs.zsh = {
enable = true;
@@ -13,74 +18,22 @@ in {
autosuggestion.enable = true;
syntaxHighlighting = {
enable = true;
highlighters = [ "main" "brackets" "pattern" "regexp" "root" "line" ];
highlighters = ["main" "brackets" "pattern" "regexp" "root" "line"];
};
historySubstringSearch.enable = true;
initExtraFirst =
#bash
''
bindkey -e
${if fetch == "neofetch" then
pkgs.neofetch + "/bin/neofetch"
else if fetch == "nerdfetch" then
"nerdfetch"
else if fetch == "pfetch" then
"echo; ${pkgs.pfetch}/bin/pfetch"
else
""}
function sesh-sessions() {
session=$(sesh list -t -c | fzf --height 70% --reverse)
[[ -z "$session" ]] && return
sesh connect $session
}
function chatgptlist(){
for arg in "$@"; do
echo "$arg:"
echo "\`\`\`"
cat "$arg"
echo "\`\`\`"
echo
done
}
function n4c() {
nix develop --no-write-lock-file --refresh "github:anotherhadi/nix4cyber#''${1:-all}"
}
zle -N sesh-sessions
bindkey -M emacs '\es' sesh-sessions
bindkey -M vicmd '\es' sesh-sessions
bindkey -M viins '\es' sesh-sessions
'';
history = {
ignoreDups = true;
save = 10000;
size = 10000;
};
profileExtra = lib.optionalString (config.home.sessionPath != [ ]) ''
profileExtra = lib.optionalString (config.home.sessionPath != []) ''
export PATH="$PATH''${PATH:+:}${
lib.concatStringsSep ":" config.home.sessionPath
}"
'';
#NOTE- for btop to show gpu usage
#may want to check the driver version with:
#nix path-info -r /run/current-system | grep nvidia-x11
#and
#nix search nixpkgs nvidia_x11
sessionVariables = {
LD_LIBRARY_PATH = lib.concatStringsSep ":" [
"${pkgs.linuxPackages_latest.nvidia_x11_beta}/lib" # change the package name according to nix search result
"$LD_LIBRARY_PATH"
];
};
shellAliases = {
vim = "nvim";
vi = "nvim";
@@ -95,17 +48,15 @@ in {
sl = "ls";
open = "${pkgs.xdg-utils}/bin/xdg-open";
icat = "${pkgs.kitty}/bin/kitty +kitten icat";
ssh = "kitty +kitten ssh";
cat =
"bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
cat = "bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
mkdir = "mkdir -p";
obsidian-no-gpu =
"env ELECTRON_OZONE_PLATFORM_HINT=auto obsidian --ozone-platform=x11";
obsidian-no-gpu = "env ELECTRON_OZONE_PLATFORM_HINT=auto obsidian --ozone-platform=x11";
wireguard-import = "nmcli connection import type wireguard file";
notes =
"nvim ~/nextcloud/notes/index.md --cmd 'cd ~/nextcloud/notes' -c ':Telescope find_files'";
notes = "nvim ~/notes/index.md --cmd 'cd ~/notes' -c ':lua Snacks.picker.smart()'";
note = "notes";
tmp = "nvim /tmp/$(date | sed 's/ //g;s/\\.//g').md";
nix-shell = "nix-shell --command zsh";
@@ -128,77 +79,125 @@ in {
gcm = "git commit -m";
};
initExtra = ''
# search history based on what's typed in the prompt
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[OA" history-beginning-search-backward-end
bindkey "^[OB" history-beginning-search-forward-end
initContent =
# bash
''
bindkey -e
${
if fetch == "neofetch"
then pkgs.neofetch + "/bin/neofetch"
else if fetch == "nerdfetch"
then "nerdfetch"
else if fetch == "pfetch"
then "echo; ${pkgs.pfetch}/bin/pfetch"
else ""
}
# General completion behavior
zstyle ':completion:*' completer _extensions _complete _approximate
function sesh-sessions() {
session=$(sesh list -t -c | fzf --height 70% --reverse)
[[ -z "$session" ]] && return
sesh connect $session
}
# Use cache
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache"
function chatgptfolder(){
echo "################################"
echo "### TREE ###"
echo "################################"
${pkgs.eza}/bin/eza --tree -aF --icons never
echo -e "\n\n"
echo "##############################"
echo "### CONTENT ###"
echo "##############################"
find . -type f -not -path '*/.git/*' -print0 | while IFS= read -r -d "" file; do
echo -e "\n--- DEBUT: $file ---\n"
cat "$file"
echo -e "\n--- FIN: $file ---\n"
done
}
# Complete the alias
zstyle ':completion:*' complete true
# Autocomplete options
zstyle ':completion:*' complete-options true
function n4c() {
category=''${1:-all}
shift
args=''${*}
nix develop "github:nix4cyber/n4c#''${category}" ''${args} -c zsh
}
# Completion matching control
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
zstyle ':completion:*' keep-prefix true
zle -N sesh-sessions
bindkey -M emacs '\es' sesh-sessions
bindkey -M vicmd '\es' sesh-sessions
bindkey -M viins '\es' sesh-sessions
# Group matches and describe
zstyle ':completion:*' menu select
zstyle ':completion:*' list-grouped false
zstyle ':completion:*' list-separator '''
zstyle ':completion:*' group-name '''
zstyle ':completion:*' verbose yes
zstyle ':completion:*:matches' group 'yes'
zstyle ':completion:*:warnings' format '%F{red}%B-- No match for: %d --%b%f'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
zstyle ':completion:*:descriptions' format '[%d]'
# search history based on what's typed in the prompt
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[OA" history-beginning-search-backward-end
bindkey "^[OB" history-beginning-search-forward-end
# Colors
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
# General completion behavior
zstyle ':completion:*' completer _extensions _complete _approximate
# case insensitive tab completion
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
zstyle ':completion:*:*:-command-:*:*' group-order aliases builtins functions commands
zstyle ':completion:*' special-dirs true
zstyle ':completion:*' squeeze-slashes true
# Use cache
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache"
# Sort
zstyle ':completion:*' sort false
zstyle ":completion:*:git-checkout:*" sort false
zstyle ':completion:*' file-sort modification
zstyle ':completion:*:eza' sort false
zstyle ':completion:complete:*:options' sort false
zstyle ':completion:files' sort false
# Complete the alias
zstyle ':completion:*' complete true
${lib.optionalString config.services.gpg-agent.enable ''
gnupg_path=$(ls $XDG_RUNTIME_DIR/gnupg)
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/$gnupg_path/S.gpg-agent.ssh"
''}
# Autocomplete options
zstyle ':completion:*' complete-options true
# Allow foot to pipe command output
function precmd {
if ! builtin zle; then
print -n "\e]133;D\e\\"
fi
}
function preexec {
print -n "\e]133;C\e\\"
}
# Completion matching control
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
zstyle ':completion:*' keep-prefix true
'';
# Group matches and describe
zstyle ':completion:*' menu select
zstyle ':completion:*' list-grouped false
zstyle ':completion:*' list-separator '''
zstyle ':completion:*' group-name '''
zstyle ':completion:*' verbose yes
zstyle ':completion:*:matches' group 'yes'
zstyle ':completion:*:warnings' format '%F{red}%B-- No match for: %d --%b%f'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
zstyle ':completion:*:descriptions' format '[%d]'
# Colors
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
# case insensitive tab completion
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
zstyle ':completion:*:*:-command-:*:*' group-order aliases builtins functions commands
zstyle ':completion:*' special-dirs true
zstyle ':completion:*' squeeze-slashes true
# Sort
zstyle ':completion:*' sort false
zstyle ":completion:*:git-checkout:*" sort false
zstyle ':completion:*' file-sort modification
zstyle ':completion:*:eza' sort false
zstyle ':completion:complete:*:options' sort false
zstyle ':completion:files' sort false
${lib.optionalString config.services.gpg-agent.enable ''
gnupg_path=$(ls $XDG_RUNTIME_DIR/gnupg)
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/$gnupg_path/S.gpg-agent.ssh"
''}
# Allow foot to pipe command output
function precmd {
if ! builtin zle; then
print -n "\e]133;D\e\\"
fi
}
function preexec {
print -n "\e]133;C\e\\"
}
'';
};
}
+9 -4
View File
@@ -1,11 +1,16 @@
# Spicetify is a spotify client customizer
{ pkgs, config, lib, inputs, ... }:
let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
{
pkgs,
config,
lib,
inputs,
...
}: let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
accent = "${config.lib.stylix.colors.base0D}";
background = "${config.lib.stylix.colors.base00}";
in {
imports = [ inputs.spicetify-nix.homeManagerModules.default ];
imports = [inputs.spicetify-nix.homeManagerModules.default];
stylix.targets.spicetify.enable = false;
-8
View File
@@ -1,8 +0,0 @@
# Tailscale is a VPN service that works on top of WireGuard.
# It allows me to access my servers and devices from anywhere.
{ pkgs, ... }: {
home.packages = with pkgs; [ tailscale tailscale-systray ];
wayland.windowManager.hyprland.settings.exec-once =
[ "${pkgs.tailscale-systray}/bin/tailscale-systray" ];
}
+99 -13
View File
@@ -1,6 +1,10 @@
# Thunar is a file explorer
{ pkgs, config, ... }:
let user = config.var.username;
{
pkgs,
config,
...
}: let
user = config.var.username;
in {
# ctrl + m to toggle the menubar
home.packages = with pkgs; [
@@ -11,7 +15,7 @@ in {
xfce.thunar-volman
xfce.thunar-media-tags-plugin
p7zip
unar
xarchiver
];
gtk = {
@@ -32,32 +36,62 @@ in {
gtk.gtk3.bookmarks = [
"file:///home/${user}/Downloads Downloads"
"file:///home/${user}/Pictures Pictures"
"file:///home/${user}/nextcloud Nextcloud"
"file:///home/${user}/.config/nixos NixOS"
"file:///home/${user}/dev Development"
];
home.file.".config/xarchiver/xarchiverrc".text = ''
[xarchiver]
preferred_format=0
prefer_unzip=true
confirm_deletion=true
sort_filename_content=false
advanced_isearch=true
auto_expand=true
store_output=false
icon_size=2
show_archive_comment=false
show_sidebar=true
show_location_bar=true
show_toolbar=true
preferred_custom_cmd=
preferred_temp_dir=/tmp
preferred_extract_dir=/home/${user}/Downloads
allow_sub_dir=0
ensure_directory=true
overwrite=false
full_path=2
touch=false
fresh=false
update=false
store_path=false
updadd=true
freshen=false
recurse=true
solid_archive=false
remove_files=false
'';
home.file.".config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml".text = ''
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.1" encoding="UTF-8"?>
<channel name="thunar" version="1.0">
<property name="last-view" type="string" value="ThunarIconView"/>
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
<property name="last-window-maximized" type="bool" value="true"/>
<property name="last-separator-position" type="int" value="170"/>
<property name="last-separator-position" type="int" value="230"/>
<property name="last-statusbar-visible" type="bool" value="false"/>
<property name="last-menubar-visible" type="bool" value="false"/>
<property name="misc-single-click" type="bool" value="false"/>
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
<property name="tree-icon-emblems" type="bool" value="true"/>
<property name="misc-file-size-binary" type="bool" value="true"/>
<property name="misc-thumbnail-draw-frames" type="bool" value="false"/>
<property name="misc-text-beside-icons" type="bool" value="true"/>
<property name="misc-change-window-icon" type="bool" value="true"/>
<property name="misc-file-size-binary" type="bool" value="false"/>
<property name="misc-thumbnail-draw-frames" type="bool" value="true"/>
<property name="misc-text-beside-icons" type="bool" value="false"/>
<property name="misc-change-window-icon" type="bool" value="false"/>
<property name="hidden-bookmarks" type="array">
<value type="string" value="computer:///"/>
<value type="string" value="recent:///"/>
<value type="string" value="file:///"/>
<value type="string" value="network:///"/>
</property>
<property name="hidden-devices" type="array">
@@ -68,8 +102,60 @@ in {
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
<property name="last-show-hidden" type="bool" value="false"/>
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
<property name="last-details-view-column-widths" type="string" value="50,50,127,50,50,50,50,50,751,50,50,75,50,145"/>
<property name="last-toolbar-items" type="string" value="menu:1,back:1,forward:0,open-parent:0,open-home:0,undo:0,redo:0,zoom-in:0,zoom-out:0,zoom-reset:0,view-as-icons:0,view-as-detailed-list:0,view-as-compact-list:0,toggle-split-view:0,location-bar:1,reload:0,search:1,uca-action-1710183590071525-1:0,new-tab:0,new-window:0,view-switcher:0"/>
<property name="last-details-view-column-widths" type="string" value="50,50,118,111,50,50,50,50,993,50,50,84,50,151"/>
<property name="last-toolbar-items" type="string" value="menu:1,undo:1,back:1,forward:1,open-parent:0,open-home:0,redo:0,zoom-in:0,zoom-out:0,zoom-reset:0,location-bar:1,view-switcher:1,search:1,view-as-icons:0,view-as-detailed-list:0,view-as-compact-list:0,toggle-split-view:0,reload:0,new-tab:0,new-window:0,uca-action-1700000000000001:0"/>
<property name="last-side-pane" type="string" value="THUNAR_SIDEPANE_TYPE_SHORTCUTS"/>
<property name="last-image-preview-visible" type="bool" value="false"/>
<property name="misc-use-csd" type="bool" value="true"/>
<property name="default-view" type="string" value="ThunarIconView"/>
<property name="misc-thumbnail-max-file-size" type="uint64" value="1073741824"/>
<property name="misc-symbolic-icons-in-toolbar" type="bool" value="true"/>
<property name="misc-date-style" type="string" value="THUNAR_DATE_STYLE_SIMPLE"/>
<property name="shortcuts-icon-size" type="string" value="THUNAR_ICON_SIZE_16"/>
<property name="tree-icon-size" type="string" value="THUNAR_ICON_SIZE_16"/>
<property name="misc-symbolic-icons-in-sidepane" type="bool" value="true"/>
<property name="misc-open-new-window-as-tab" type="bool" value="false"/>
<property name="misc-full-path-in-tab-title" type="bool" value="true"/>
<property name="misc-show-delete-action" type="bool" value="false"/>
</channel>
'';
xdg.configFile."Thunar/uca.xml".text = ''
<?xml version="1.0" encoding="UTF-8"?>
<actions>
<action>
<icon>utilities-terminal</icon>
<name>Open Terminal Here</name>
<unique-id>1700000000000001</unique-id>
<command>kitty -d %f</command>
<description>Opens Kitty terminal in the selected folder</description>
<patterns>*</patterns>
<startup-notify/>
<directories/>
</action>
<action>
<icon></icon>
<name>Extract here</name>
<submenu></submenu>
<unique-id>1689618425925956-3</unique-id>
<command>xarchiver -x . %f</command>
<description>Extracts the archive into the directory it is located in.</description>
<range>*</range>
<patterns>*.tar.bz2;*.tar.gz;*.tar.xz;*.tar.Z;*.tar;*.taz;*.tb2;*.tbz;*.tbz2;*.tgz;*.txz;*.zip;*.bz2;*.docx;*.apk;*.gz;*.odt;</patterns>
<other-files/>
</action>
<action>
<icon>package-x-generic</icon>
<name>Compress here (tar.gz)</name>
<submenu></submenu>
<unique-id>1700000000000003</unique-id>
<command>tar -czvf %n.tar.gz %N</command>
<description>Creates a compressed archive (.tar.gz) of selected files/folders.</description>
<range>*</range>
<patterns>*</patterns>
<directories/>
<other-files/>
</action>
</actions>
'';
}
+12
View File
@@ -0,0 +1,12 @@
{pkgs, ...}: {
programs.vivaldi = {
enable = true;
commandLineArgs = [
"--no-default-browser-check"
];
};
home.sessionVariables = {
DEFAULT_BROWSER = "${pkgs.vivaldi}/bin/vivaldi";
};
}
@@ -1,3 +1,4 @@
# TODO: Misc section with VLC, Zathura etc
# Zathura is a PDF viewer
{
programs.zathura = {
-14
View File
@@ -1,14 +0,0 @@
# Zen is a minimalistic web browser.
{ pkgs, inputs, ... }:
let
# Create a wrapper script for zen-browser with Wayland enabled
zenWithWayland = pkgs.symlinkJoin {
name = "zen-browser-wayland";
paths = [ inputs.zen-browser.packages."${pkgs.system}".default ];
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/zen \
--set MOZ_ENABLE_WAYLAND 1
'';
};
in { home.packages = [ zenWithWayland ]; }
-40
View File
@@ -1,40 +0,0 @@
# - ## Brightness
#-
#- This module provides a set of scripts to control the brightness of the screen.
#-
#- - `brightness-up` increases the brightness by 5%.
#- - `brightness-down` decreases the brightness by 5%.
#- - `brightness-set [value]` sets the brightness to the given value.
#- - `brightness-change [up|down] [value]` increases or decreases the brightness by the given value.
{ pkgs, ... }:
let
increments = "5";
brightness-change = pkgs.writeShellScriptBin "brightness-change" ''
[[ $1 == "up" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ''${2-${increments}}%+
[[ $1 == "down" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ''${2-${increments}}%-
'';
brightness-set = pkgs.writeShellScriptBin "brightness-set" ''
${pkgs.brightnessctl}/bin/brightnessctl set ''${1-100}%
'';
brightness-up = pkgs.writeShellScriptBin "brightness-up" ''
brightness-change up ${increments}
'';
brightness-down = pkgs.writeShellScriptBin "brightness-down" ''
brightness-change down ${increments}
'';
in {
home.packages = [
pkgs.brightnessctl
brightness-change
brightness-up
brightness-down
brightness-set
];
}
-33
View File
@@ -1,33 +0,0 @@
# - ## Caffeine
#-
#- Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
#-
#- - `caffeine-status` - Check if hypridle is running. (0/1)
#- - `caffeine-status-icon` - Check if hypridle is running. (icon)
#- - `caffeine` - Toggle hypridle.
{ pkgs, ... }:
let
caffeine-status = pkgs.writeShellScriptBin "caffeine-status" ''
[[ $(pidof "hypridle") ]] && echo "0" || echo "1"
'';
caffeine-status-icon = pkgs.writeShellScriptBin "caffeine-status-icon" ''
[[ $(pidof "hypridle") ]] && echo "󰾪" || echo "󰅶"
'';
caffeine = pkgs.writeShellScriptBin "caffeine" ''
if [[ $(pidof "hypridle") ]]; then
systemctl --user stop hypridle.service
title="󰅶 Caffeine Activated"
description="Caffeine is now active! Your screen will not turn off automatically."
else
systemctl --user start hypridle.service
title="󰾪 Caffeine Deactivated"
description="Caffeine is now deactivated! Your screen will turn off automatically."
fi
notif "caffeine" "$title" "$description"
'';
in { home.packages = [ caffeine-status caffeine caffeine-status-icon ]; }
-16
View File
@@ -1,16 +0,0 @@
{
imports = [
./nixy
./sounds
./brightness
./caffeine
./hyprpanel
./hyprfocus
./night-shift
./screenshot
./nerdfont-fzf
./notification
./system
./openvpn
];
}
-47
View File
@@ -1,47 +0,0 @@
# - ## Hyprfocus
#-
#- A simple script to toggle focus on few windows in Hyprland.
#- (disable gaps, border, shadow, opacity, etc.)
#-
#- - `hyprfocus-on` - Enable hyprfocus.
#- - `hyprfocus-off` - Disable hyprfocus.
#- - `hyprfocus-toggle` - Toggle hyprfocus.
{ pkgs, ... }:
let
hyprfocus-on = pkgs.writeShellScriptBin "hyprfocus-on"
# bash
''
hyprpanel-hide
hyprctl --batch "\
keyword animations:enabled 0;\
keyword decoration:shadow:enabled 0;\
keyword decoration:blur:enabled 0;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:rounding 0;\
keyword decoration:inactive_opacity 1;\
keyword decoration:active_opacity 1"
echo "1" > /tmp/hyprfocus
'';
hyprfocus-off = pkgs.writeShellScriptBin "hyprfocus-off"
# bash
''
hyprctl reload
hyprpanel-show
rm /tmp/hyprfocus
'';
hyprfocus-toggle = pkgs.writeShellScriptBin "hyprfocus-toggle"
# bash
''
if [ -f /tmp/hyprfocus ]; then
hyprfocus-off
else
hyprfocus-on
fi
'';
in { home.packages = [ hyprfocus-on hyprfocus-off hyprfocus-toggle ]; }
-47
View File
@@ -1,47 +0,0 @@
# - ## Hyprpanel
#-
#- Quick scripts to toggle, reload, hide & show hyprpanel.
#-
#- - `hyprpanel-toggle` - Toggle hyprpanel (hide/show).
#- - `hyprpanel-show` - Show hyprpanel.
#- - `hyprpanel-hide` - Hide hyprpanel.
#- - `hyprpanel-reload` - Reload hyprpanel.
{ pkgs, ... }:
let
hyprpanel-toggle = pkgs.writeShellScriptBin "hyprpanel-toggle" ''
hyprpanel toggleWindow bar-0
hyprpanel toggleWindow bar-1
hyprpanel toggleWindow bar-2
hyprpanel toggleWindow bar-3
'';
hyprpanel-hide = pkgs.writeShellScriptBin "hyprpanel-hide" ''
status=$(hyprpanel isWindowVisible bar-0)
if [[ $status == "true" ]]; then
hyprpanel toggleWindow bar-0
fi
status=$(hyprpanel isWindowVisible bar-1)
if [[ $status == "true" ]]; then
hyprpanel toggleWindow bar-1
fi
'';
hyprpanel-show = pkgs.writeShellScriptBin "hyprpanel-show" ''
status=$(hyprpanel isWindowVisible bar-0)
if [[ $status == "false" ]]; then
hyprpanel toggleWindow bar-0
fi
status=$(hyprpanel isWindowVisible bar-1)
if [[ $status == "false" ]]; then
hyprpanel toggleWindow bar-1
fi
'';
hyprpanel-reload = pkgs.writeShellScriptBin "hyprpanel-reload" ''
[ $(pgrep "hyprpanel") ] && pkill hyprpanel
hyprctl dispatch exec hyprpanel
'';
in {
home.packages =
[ hyprpanel-toggle hyprpanel-reload hyprpanel-hide hyprpanel-show ];
}
-29
View File
@@ -1,29 +0,0 @@
# - ## Nerdfont FZF
#-
#- This module provides a script to search for Nerd Fonts icons using fzf.
#-
#- - `nerdfont-fzf` - Search for Nerd Fonts icons using fzf.
{ pkgs, config, ... }:
let
nerdfont-fzf = pkgs.writeShellScriptBin "nerdfont-fzf" ''
icons=$(${pkgs.jq}/bin/jq -r 'to_entries[] | "\(.key):\(.value.char)"' "/home/${config.var.username}/.config/nerdfont_glyphnames.json" | awk -F: '{print "\033[95m "$2" \033[0m "$1}')
fzf_result=$(echo "$icons" | ${pkgs.fzf}/bin/fzf --ansi --border none | awk '{print $1}')
if [ -z "$fzf_result" ]; then
echo "No icon selected"
exit 1
fi
echo "Copied to clipboard: $fzf_result"
${pkgs.wl-clipboard}/bin/wl-copy "$fzf_result"
'';
in {
home.packages = [ nerdfont-fzf ];
xdg.configFile."nerdfont_glyphnames.json" = {
source = pkgs.fetchurl {
url =
"https://raw.githubusercontent.com/ryanoasis/nerd-fonts/384b1825ea0037b0314f7f9c660a80c1ecdb219a/glyphnames.json";
hash = "sha256-Ps0dyFcMs51RMTthBOVSOf/lafPV/53JxuNSKlmZ7cc=";
};
};
}
-73
View File
@@ -1,73 +0,0 @@
# - ## Night-Shift
#-
#- Night-Shift is a feature that reduces the amount of blue light emitted by your screen, which can help reduce eye strain and improve sleep quality. This module provides a set of scripts to control Night-Shift on your system.
#- It use hyprsunset to control the screen temperature.
#-
#- - `night-shift-on` activates Night-Shift.
#- - `night-shift-off` deactivates Night-Shift.
#- - `night-shift` toggles Night-Shift.
#- - `night-shift-status` checks if Night-Shift is active. (0/1)
#- - `night-shift-status-icon` checks if Night-Shift is active. (icon)
{ pkgs, ... }:
let
value = "4500"; # Default value for night-shift temperature
night-shift-on = pkgs.writeShellScriptBin "night-shift-on"
# bash
''
${pkgs.hyprsunset}/bin/hyprsunset -t ${value} &
title="󰖔 Night-Shift Activated"
description="Night-Shift is now activated! Your screen will be warmer and easier on the eyes."
notif "night-shift" "$title" "$description"
'';
night-shift-off = pkgs.writeShellScriptBin "night-shift-off"
# bash
''
pkill hyprsunset
title="󰖕 Night-Shift Deactivated"
description="Night-Shift is now deactivated! Your screen will return to normal."
notif "night-shift" "$title" "$description"
'';
night-shift = pkgs.writeShellScriptBin "night-shift"
# bash
''
if pidof "hyprsunset"; then
night-shift-off
else
night-shift-on
fi
'';
night-shift-status = pkgs.writeShellScriptBin "night-shift-status"
# bash
''
if pidof "hyprsunset"; then
echo "1"
else
echo "0"
fi
'';
night-shift-status-icon = pkgs.writeShellScriptBin "night-shift-status-icon"
# bash
''
if pidof "hyprsunset"; then
echo "󰖔"
else
echo "󰖕"
fi
'';
in {
home.packages = [
pkgs.hyprsunset
night-shift-on
night-shift-off
night-shift
night-shift-status
night-shift-status-icon
];
}
-26
View File
@@ -1,26 +0,0 @@
{ pkgs, ... }:
let
notif = pkgs.writeShellScriptBin "notif" # bash
''
# Shell script to send custom notifications
# Usage: notif "sender_id" "message" ["description"]
NOTIF_FOLDER="/tmp/notif"
sender_id=$1 # To overwrite existing notifications
title=$2
description=$3
[[ -d "$NOTIF_FOLDER" ]] || mkdir $NOTIF_FOLDER
[[ -f "$NOTIF_FOLDER/$sender_id" ]] || (echo "0" > "$NOTIF_FOLDER/$sender_id")
old_notification_id=$(cat "$NOTIF_FOLDER/$sender_id")
[[ -z "$old_notification_id" ]] && old_notification_id=0
${pkgs.libnotify}/bin/notify-send \
--replace-id="$old_notification_id" --print-id \
--app-name="$sender_id" \
"$title" \
"$description" \
> "$NOTIF_FOLDER/$sender_id"
'';
in { home.packages = [ pkgs.libnotify notif ]; }
-37
View File
@@ -1,37 +0,0 @@
# - ## OpenVPN
#-
#- OpenVPN allows you to connect/disconnect quickly to a openVPN server
#-
#- - `openvpn-up` turn on the vpn
#- - `openvpn-down` turn down the vpn
#- - `openvpn-toggle` toggle the vpn
{ pkgs, ... }:
let
id = "home"; # ID of the connection
password-file = "/home/hadi/.config/vpn-password";
openvpn-up = pkgs.writeShellScriptBin "openvpn-up"
# bash
''
nmcli con up id ${id} passwd-file ${password-file}
notif "VPN" "VPN activated" "The OpenVPN connection to ${id} has been activated"
'';
openvpn-down = pkgs.writeShellScriptBin "openvpn-down"
# bash
''
nmcli con down id ${id}
notif "VPN" "VPN deactivated" "The OpenVPN connection to ${id} has been deactivated"
'';
openvpn-toggle = pkgs.writeShellScriptBin "openvpn-toggle"
# bash
''
if nmcli connection show --active | grep -q "${id}"; then
openvpn-down
else
openvpn-up
fi
'';
in { home.packages = [ openvpn-up openvpn-down openvpn-toggle ]; }
-34
View File
@@ -1,34 +0,0 @@
# - ## Screenshot
#-
#- This module provides a script to take screenshots using `grimblast` and `swappy`.
#-
#- - `screenshot [region|window|monitor] [swappy]` - Take a screenshot of the region, window, or monitor. Optionally, use `swappy` to copy the screenshot to the clipboard.
{ pkgs, ... }:
let
screenshot = pkgs.writeShellScriptBin "screenshot" ''
if [[ $2 == "swappy" ]];then
folder="/tmp"
else
folder="$HOME/Pictures"
fi
filename="$(date +%Y-%m-%d_%H:%M:%S).png"
if [[ $1 == "window" ]];then
mode="active"
elif [[ $1 == "region" ]];then
mode="area"
elif [[ $1 == "monitor" ]];then
mode="output"
fi
${pkgs.grimblast}/bin/grimblast --notify --freeze copysave $mode "$folder/$filename" || exit 1
if [[ $2 == "swappy" ]];then
${pkgs.swappy}/bin/swappy -f "$folder/$filename" -o "$HOME/Pictures/$filename"
exit 0
fi
'';
in {
home.packages =
[ pkgs.hyprshot screenshot pkgs.slurp pkgs.grim pkgs.grimblast ];
}
-38
View File
@@ -1,38 +0,0 @@
# - ## Sound
#-
#- This module provides a set of scripts to control the volume of the default audio sink using `wpctl`.
#-
#- - `sound-up` increases the volume by 5%.
#- - `sound-down` decreases the volume by 5%.
#- - `sound-set [value]` sets the volume to the given value.
#- - `sound-toggle` toggles the mute state of the default audio sink.
{ pkgs, ... }:
let
increments = "5";
sound-change = pkgs.writeShellScriptBin "sound-change" ''
[[ $1 == "mute" ]] && wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
[[ $1 == "up" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ ''${2-${increments}}%+
[[ $1 == "down" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ ''${2-${increments}}%-
[[ $1 == "set" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ ''${2-100}%
'';
sound-up = pkgs.writeShellScriptBin "sound-up" ''
sound-change up ${increments}
'';
sound-set = pkgs.writeShellScriptBin "sound-set" ''
sound-change set ''${1-100}
'';
sound-down = pkgs.writeShellScriptBin "sound-down" ''
sound-change down ${increments}
'';
sound-toggle = pkgs.writeShellScriptBin "sound-toggle" ''
sound-change mute
'';
in {
home.packages = [ sound-change sound-up sound-down sound-toggle sound-set ];
}
-118
View File
@@ -1,118 +0,0 @@
# - ## System
#-
#- Usefull quick scripts
#-
#- - `menu` - Open wofi with drun mode. (wofi)
#- - `powermenu` - Open power dropdown menu. (wofi)
#- - `quickmenu` - Open a dropdown menu with shortcuts and scripts. (wofi)
#- - `lock` - Lock the screen. (hyprlock)
{ pkgs, ... }:
let
menu = pkgs.writeShellScriptBin "menu"
# bash
''
if pgrep wofi; then
pkill wofi
else
wofi -p " Apps" --show drun &
# Quit when not focused anymore
sleep 0.2
while true; do
window=$(hyprctl activewindow | grep "wofi")
if [[ ! $window ]]; then
pkill wofi
break
fi
sleep 0.2
done
fi
'';
powermenu = pkgs.writeShellScriptBin "powermenu"
# bash
''
if pgrep wofi; then
pkill wofi
# if pgrep tofi; then
# pkill tofi
else
options=(
"󰌾 Lock"
"󰍃 Logout"
" Suspend"
"󰑐 Reboot"
"󰿅 Shutdown"
)
selected=$(printf '%s\n' "''${options[@]}" | wofi -p " Powermenu" --dmenu)
# selected=$(printf '%s\n' "''${options[@]}" | tofi --prompt-text "> ")
selected=''${selected:2}
case $selected in
"Lock")
${pkgs.hyprlock}/bin/hyprlock
;;
"Logout")
hyprctl dispatch exit
;;
"Suspend")
systemctl suspend
;;
"Reboot")
systemctl reboot
;;
"Shutdown")
systemctl poweroff
;;
esac
fi
'';
quickmenu = pkgs.writeShellScriptBin "quickmenu"
# bash
''
if pgrep wofi; then
pkill wofi
# if pgrep tofi; then
# pkill tofi
else
options=(
"󰅶 Caffeine"
"󰖔 Night-shift"
" Nixy"
"󰈊 Hyprpicker"
"󰖂 Toggle VPN"
)
selected=$(printf '%s\n' "''${options[@]}" | wofi -p " Quickmenu" --dmenu)
# selected=$(printf '%s\n' "''${options[@]}" | tofi --prompt-text "> ")
selected=''${selected:2}
case $selected in
"Caffeine")
caffeine
;;
"Night-shift")
night-shift
;;
"Nixy")
kitty zsh -c nixy
;;
"Hyprpicker")
sleep 0.2 && ${pkgs.hyprpicker}/bin/hyprpicker -a
;;
"Toggle VPN")
openvpn-toggle
;;
esac
fi
'';
lock = pkgs.writeShellScriptBin "lock"
# bash
''
${pkgs.hyprlock}/bin/hyprlock
'';
in { home.packages = [ menu powermenu lock quickmenu ]; }
@@ -0,0 +1,49 @@
{
pkgs,
config,
...
}: let
rounding = config.theme.rounding + config.theme.gaps-out;
inherit (config.stylix) fonts;
in {
home.packages = with pkgs; [
papirus-icon-theme
];
programs.caelestia.settings = {
paths.sessionGif = ./session-gif-hacker-cat.gif;
background.enabled = false;
appearance = {
transparency = {
enable = true;
base = 0.85;
layers = 0.4;
};
font.family = {
material = "Material Symbols Rounded";
mono = fonts.monospace.name;
sans = fonts.sansSerif.name;
};
};
utilities = {
enabled = true;
maxToasts = 4;
toasts = {
audioInputChanged = true;
audioOutputChanged = true;
capsLockChanged = false;
chargingChanged = true;
configLoaded = false;
dndChanged = true;
gameModeChanged = true;
numLockChanged = false;
nowPlaying = false;
kbLayoutChanged = false;
};
};
border = {
inherit rounding;
thickness = 8;
};
};
}
+69
View File
@@ -0,0 +1,69 @@
{
programs.caelestia.settings.bar = {
clock.showIcon = false;
popouts.activeWindow = false;
persistent = true;
status = {
showBattery = true;
showMicrophone = false;
showLockStatus = false;
showBluetooth = true;
showAudio = true;
showKbLayout = false;
showNetwork = true;
};
workspaces = {
activeIndicator = true;
activeLabel = "󰪥 ";
activeTrail = false;
label = " ";
occupiedBg = true;
occupiedLabel = "󰪥 ";
rounded = true;
showWindows = false;
shown = 5;
};
entries = [
{
id = "logo";
enabled = true;
}
{
id = "workspaces";
enabled = true;
}
{
id = "spacer";
enabled = true;
}
{
id = "activeWindow";
enabled = true;
}
{
id = "spacer";
enabled = true;
}
{
id = "tray";
enabled = true;
}
{
id = "clock";
enabled = true;
}
{
id = "statusIcons";
enabled = true;
}
{
id = "power";
enabled = true;
}
];
tray = {
background = false;
recolour = false;
};
};
}
+58
View File
@@ -0,0 +1,58 @@
{
wayland.windowManager.hyprland.settings = {
bindin = [
# Launcher
"$mod, mouse:272, global, caelestia:launcherInterrupt"
"$mod, mouse:273, global, caelestia:launcherInterrupt"
"$mod, mouse:274, global, caelestia:launcherInterrupt"
"$mod, mouse:275, global, caelestia:launcherInterrupt"
"$mod, mouse:276, global, caelestia:launcherInterrupt"
"$mod, mouse:277, global, caelestia:launcherInterrupt"
"$mod, mouse_up, global, caelestia:launcherInterrupt"
"$mod, mouse_down, global, caelestia:launcherInterrupt"
];
bind = [
# Launcher
"$mod, SPACE, global, caelestia:launcher"
"$mod, X, global, caelestia:session" # Powermenu
# Misc
"$mod, L, global, caelestia:lock"
"$mod, N, exec, caelestia shell drawers toggle sidebar"
# Utilities
"$mod+Shift, SPACE, exec, caelestia shell gameMode toggle" # Toggle Focus/Game mode
"$mod+Shift, S, global, caelestia:screenshotFreeze" # Capture region (freeze)
"$mod+Shift+Alt, S, global, caelestia:screenshot" # Capture region
"$mod+Alt, R, exec, caelestia record -s" # Record screen with sound
"Ctrl+Alt, R, exec, caelestia record" # Record screen
"$mod+Shift+Alt, R, exec, caelestia record -r" # Record region
"$mod+Shift, E, exec, pkill fuzzel || caelestia emoji -p"
];
bindl = [
# Brightness
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
"$mod, F2, exec, nightshift-toggle"
"$mod, F3, exec, nightshift-toggle"
# Media
", XF86AudioPlay, global, caelestia:mediaToggle"
", XF86AudioPause, global, caelestia:mediaToggle"
", XF86AudioNext, global, caelestia:mediaNext"
", XF86AudioPrev, global, caelestia:mediaPrev"
", XF86AudioStop, global, caelestia:mediaStop"
# Sound
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
# Utilities
", Print, exec, caelestia screenshot" # Full screen capture > clipboard
];
bindle = [
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
];
};
}
+62
View File
@@ -0,0 +1,62 @@
# Caelestia Shell Home Manager Configuration
# See https://github.com/caelestia-dots/shell
{
pkgs,
inputs,
...
}: {
imports = [
inputs.caelestia-shell.homeManagerModules.default
./bindings.nix
./bar.nix
./launcher.nix
./appearance.nix
./scheme.nix
];
programs.caelestia = {
enable = true;
systemd.enable = false;
settings = {
services.weatherLocation = "Paris";
general = {
apps = {
terminal = ["ghostty"];
audio = ["pavucontrol"];
explorer = ["thunar"];
};
idle = {
timeouts = [];
};
};
};
cli = {
enable = true;
settings.theme = {
enableTerm = false;
enableDiscord = false;
enableSpicetify = false;
enableBtop = false;
enableCava = false;
enableHypr = false;
enableGtk = false;
enableQt = false;
};
};
};
home.packages = with pkgs; [
gpu-screen-recorder
];
wayland.windowManager.hyprland.settings.exec-once = [
"uwsm app -- caelestia resizer -d"
"uwsm app -- caelestia shell -d"
"caelestia scheme set -n custom"
];
services.cliphist = {
enable = true;
allowImages = true;
};
}
+124
View File
@@ -0,0 +1,124 @@
{
programs.caelestia.settings = {
session.commands = {
logout = ["loginctl" "terminate-user" ""];
shutdown = ["systemctl" "poweroff"];
hibernate = ["systemctl" "hibernate"];
reboot = ["systemctl" "reboot"];
};
launcher = {
actionPrefix = "/";
actions = [
{
name = "Calculator";
icon = "calculate";
description = "Do simple math equations (powered by Qalc)";
command = ["autocomplete" "calc"];
enabled = true;
dangerous = false;
}
{
name = "Shutdown";
icon = "power_settings_new";
description = "Shutdown the system";
command = ["systemctl" "poweroff"];
enabled = true;
dangerous = true;
}
{
name = "Reboot";
icon = "cached";
description = "Reboot the system";
command = ["systemctl" "reboot"];
enabled = true;
dangerous = true;
}
{
name = "Logout";
icon = "exit_to_app";
description = "Log out of the current session";
command = ["loginctl" "terminate-user" ""];
enabled = true;
dangerous = true;
}
{
name = "Lock";
icon = "lock";
description = "Lock the current session";
command = ["loginctl" "lock-session"];
enabled = true;
dangerous = false;
}
{
name = "Sleep";
icon = "bedtime";
description = "Suspend then hibernate";
command = ["systemctl" "suspend-then-hibernate"];
enabled = true;
dangerous = false;
}
{
name = "Restart caelestia";
icon = "cached";
description = "Restart caelestia";
command = ["hyprctl" "dispatch" "exec" "caelestia-shell kill | sleep 1 | caelestia-shell"];
enabled = true;
dangerous = false;
}
{
name = "Emoji Picker";
icon = "mood";
description = "Toggle the emoji picker";
command = ["caelestia" "emoji" "-p"];
enabled = true;
dangerous = false;
}
{
name = "Clipboard History";
icon = "content_paste";
description = "Toggle the clipboard history";
command = ["caelestia" "clipboard"];
enabled = true;
dangerous = false;
}
{
name = "Delete from Clipboard History";
icon = "content_paste_off";
description = "Delete a line from the clipboard history";
command = ["caelestia" "clipboard"];
enabled = true;
dangerous = false;
}
{
name = "Night Shift";
icon = "moon_stars";
description = "Toggle Night Shift, the blue light filter";
command = ["nightshift-toggle"];
enabled = true;
dangerous = false;
}
{
name = "Hyprpicker";
icon = "colorize";
description = "Pick an hex color";
command = ["hyprpicker" "-a"];
enabled = true;
dangerous = false;
}
];
dragThreshold = 50;
enableDangerousActions = false;
maxShown = 7;
specialPrefix = "@";
useFuzzy = {
apps = false;
actions = false;
schemes = false;
variants = false;
wallpapers = false;
};
showOnHover = false;
hiddenApps = [];
};
};
}
+132
View File
@@ -0,0 +1,132 @@
# This Nix module customizes the color scheme of the Caelestia CLI application using the Stylix base16 color palette.
{
pkgs,
inputs,
config,
...
}: let
colors = config.lib.stylix.colors;
customSchemeFile = pkgs.writeText "custom-dark.txt" ''
primary_paletteKeyColor ${colors.base0D}
secondary_paletteKeyColor ${colors.base04}
tertiary_paletteKeyColor ${colors.base08}
neutral_paletteKeyColor ${colors.base03}
neutral_variant_paletteKeyColor ${colors.base03}
background ${colors.base00}
onBackground ${colors.base05}
surface ${colors.base00}
surfaceDim ${colors.base00}
surfaceBright ${colors.base02}
surfaceContainerLowest ${colors.base01}
surfaceContainerLow ${colors.base01}
surfaceContainer ${colors.base01}
surfaceContainerHigh ${colors.base02}
surfaceContainerHighest ${colors.base02}
onSurface ${colors.base05}
surfaceVariant ${colors.base02}
onSurfaceVariant ${colors.base04}
inverseSurface ${colors.base05}
inverseOnSurface ${colors.base00}
outline ${colors.base03}
outlineVariant ${colors.base02}
shadow ${colors.base00}
scrim ${colors.base00}
surfaceTint ${colors.base0D}
primary ${colors.base0D}
onPrimary ${colors.base00}
primaryContainer ${colors.base0D}
onPrimaryContainer ${colors.base05}
inversePrimary ${colors.base0D}
secondary ${colors.base0C}
onSecondary ${colors.base00}
secondaryContainer ${colors.base02}
onSecondaryContainer ${colors.base0C}
tertiary ${colors.base08}
onTertiary ${colors.base00}
tertiaryContainer ${colors.base08}
onTertiaryContainer ${colors.base00}
error ${colors.base08}
onError ${colors.base00}
errorContainer ${colors.base08}
onErrorContainer ${colors.base05}
primaryFixed ${colors.base0D}
primaryFixedDim ${colors.base0D}
onPrimaryFixed ${colors.base00}
onPrimaryFixedVariant ${colors.base00}
secondaryFixed ${colors.base0C}
secondaryFixedDim ${colors.base0C}
onSecondaryFixed ${colors.base00}
onSecondaryFixedVariant ${colors.base02}
tertiaryFixed ${colors.base08}
tertiaryFixedDim ${colors.base08}
onTertiaryFixed ${colors.base00}
onTertiaryFixedVariant ${colors.base00}
term0 ${colors.base00}
term1 ${colors.base08}
term2 ${colors.base0B}
term3 ${colors.base0A}
term4 ${colors.base0D}
term5 ${colors.base0E}
term6 ${colors.base0C}
term7 ${colors.base05}
term8 ${colors.base03}
term9 ${colors.base08}
term10 ${colors.base0B}
term11 ${colors.base0A}
term12 ${colors.base0D}
term13 ${colors.base0E}
term14 ${colors.base0C}
term15 ${colors.base07}
rosewater ${colors.base06}
flamingo ${colors.base0F}
pink ${colors.base0E}
mauve ${colors.base0D}
red ${colors.base08}
maroon ${colors.base08}
peach ${colors.base09}
yellow ${colors.base0A}
green ${colors.base0B}
teal ${colors.base0C}
sky ${colors.base0C}
sapphire ${colors.base0C}
blue ${colors.base0D}
lavender ${colors.base0D}
klink ${colors.base0D}
klinkSelection ${colors.base0D}
kvisited ${colors.base0E}
kvisitedSelection ${colors.base0E}
knegative ${colors.base08}
knegativeSelection ${colors.base08}
kneutral ${colors.base0A}
kneutralSelection ${colors.base0A}
kpositive ${colors.base0B}
kpositiveSelection ${colors.base0B}
text ${colors.base05}
subtext1 ${colors.base04}
subtext0 ${colors.base03}
overlay2 ${colors.base03}
overlay1 ${colors.base03}
overlay0 ${colors.base02}
surface2 ${colors.base02}
surface1 ${colors.base01}
surface0 ${colors.base01}
base ${colors.base00}
mantle ${colors.base00}
crust ${colors.base00}
success ${colors.base0B}
onSuccess ${colors.base00}
successContainer ${colors.base0B}
onSuccessContainer ${colors.base05}
'';
customCli = inputs.caelestia-cli.packages.${pkgs.stdenv.hostPlatform.system}.default.overrideAttrs (oldAttrs: {
postUnpack = ''
mkdir -p $sourceRoot/src/caelestia/data/schemes/custom/main
cp ${customSchemeFile} $sourceRoot/src/caelestia/data/schemes/custom/main/dark.txt
echo "Custom scheme added to source"
'';
});
in {
programs.caelestia.cli.package = customCli;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

-17
View File
@@ -1,17 +0,0 @@
# Clipman allows you to save and retrieve clipboard history.
{ pkgs, ... }:
let
clipboard-clear = pkgs.writeShellScriptBin "clipboard-clear" ''
clipman clear --all
'';
clipboard = pkgs.writeShellScriptBin "clipboard" ''
clipman pick --tool=wofi
'';
in {
wayland.windowManager.hyprland.settings.exec-once =
[ "${clipboard-clear}" "wl-paste -t text --watch clipman store" ];
home.packages = with pkgs; [ clipman clipboard clipboard-clear ];
services.clipman.enable = true;
}
-29
View File
@@ -1,29 +0,0 @@
# Hypridle is a daemon that listens for user activity and runs commands when the user is idle.
{ pkgs, lib, ... }: {
services.hypridle = {
enable = true;
settings = {
general = {
ignore_dbus_inhibit = false;
lock_cmd = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
before_sleep_cmd = "loginctl lock-session";
after_sleep_cmd = "hyprctl dispatch dpms on";
};
listener = [
{
timeout = 600;
on-timeout = "pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
}
{
timeout = 660;
on-timeout = "systemctl suspend";
}
];
};
};
systemd.user.services.hypridle.Unit.After =
lib.mkForce "graphical-session.target";
}
+13 -14
View File
@@ -1,19 +1,18 @@
{ config, ... }:
let
{config, ...}: let
animationSpeed = config.theme.animation-speed;
animationDuration = if animationSpeed == "slow" then
"4"
else if animationSpeed == "medium" then
"2.5"
else
"1.5";
borderDuration = if animationSpeed == "slow" then
"10"
else if animationSpeed == "medium" then
"6"
else
"3";
animationDuration =
if animationSpeed == "slow"
then "4"
else if animationSpeed == "medium"
then "2.5"
else "1.5";
borderDuration =
if animationSpeed == "slow"
then "10"
else if animationSpeed == "medium"
then "6"
else "3";
in {
wayland.windowManager.hyprland.settings = {
animations = {
+33 -55
View File
@@ -1,65 +1,43 @@
{ pkgs, ... }: {
{pkgs, ...}: {
wayland.windowManager.hyprland.settings = {
bind = [
"$mod,RETURN, exec, uwsm app -- ${pkgs.kitty}/bin/kitty" # Kitty
"$mod,E, exec, uwsm app -- ${pkgs.xfce.thunar}/bin/thunar" # Thunar
"$mod,B, exec, uwsm app -- zen-beta" # Zen Browser
"$mod,K, exec, uwsm app -- ${pkgs.bitwarden}/bin/bitwarden" # Bitwarden
"$mod,L, exec, uwsm app -- ${pkgs.hyprlock}/bin/hyprlock" # Lock
"$mod,X, exec, powermenu" # Powermenu
"$mod,SPACE, exec, menu" # Launcher
"$mod,C, exec, quickmenu" # Quickmenu
"$shiftMod,SPACE, exec, hyprfocus-toggle" # Toggle HyprFocus
"$mod,P, exec, uwsm app -- ${pkgs.planify}/bin/io.github.alainm23.planify" # Planify
"$mod" = "SUPER";
"$shiftMod" = "SUPER_SHIFT";
"$mod,Q, killactive," # Close window
"$mod,T, togglefloating," # Toggle Floating
"$mod,F, fullscreen" # Toggle Fullscreen
"$mod,left, movefocus, l" # Move focus left
"$mod,right, movefocus, r" # Move focus Right
"$mod,up, movefocus, u" # Move focus Up
"$mod,down, movefocus, d" # Move focus Down
"$shiftMod,up, focusmonitor, -1" # Focus previous monitor
"$shiftMod,down, focusmonitor, 1" # Focus next monitor
"$shiftMod,left, layoutmsg, addmaster" # Add to master
"$shiftMod,right, layoutmsg, removemaster" # Remove from master
bind =
[
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
"$mod,E, exec, uwsm app -- ${pkgs.xfce.thunar}/bin/thunar" # Thunar
"$mod,B, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi" # Browser (Vivaldi)
"$mod,K, exec, uwsm app -- ${pkgs.proton-pass}/bin/proton-pass" # Proton Pass
"$mod,V, exec, uwsm app -- ${pkgs.protonvpn-gui}/bin/protonvpn-app" # Proton VPN
"$mod,A, exec, uwsm app -- env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator" # Proton Auth
"$mod,M, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=jnpecgipniidlgicjocehkhajgdnjekh" # Proton Mail (PWA)
"$mod,C, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=ojibjkjikcpjonjjngfkegflhmffeemk" # Proton Calendar (PWA)
"$mod,I, exec, uwsm app -- ${pkgs.vivaldi}/bin/vivaldi --profile-directory=Default --app-id=lcfjlhjhpmdjimnbkdfjnkojodddgfmd" # Proton Lumo (PWA)
"$mod,PRINT, exec, screenshot region" # Screenshot region
",PRINT, exec, screenshot monitor" # Screenshot monitor
"$shiftMod,PRINT, exec, screenshot window" # Screenshot window
"ALT,PRINT, exec, screenshot region swappy" # Screenshot region then edit
"$shiftMod,T, exec, hyprpanel-toggle" # Toggle hyprpanel
"$shiftMod,C, exec, clipboard" # Clipboard picker with wofi
"$shiftMod,E, exec, ${pkgs.wofi-emoji}/bin/wofi-emoji" # Emoji picker with wofi
"$mod,F2, exec, night-shift" # Toggle night shift
"$mod,F3, exec, night-shift" # Toggle night shift
] ++ (builtins.concatLists (builtins.genList (i:
let ws = i + 1;
in [
"$mod,code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT,code:1${toString i}, movetoworkspace, ${toString ws}"
]) 9));
"$mod,Q, killactive," # Close window
"$mod,T, togglefloating," # Toggle Floating
"$mod,F, fullscreen" # Toggle Fullscreen
"$mod,left, movefocus, l" # Move focus left
"$mod,right, movefocus, r" # Move focus Right
"$mod,up, movefocus, u" # Move focus Up
"$mod,down, movefocus, d" # Move focus Down
"$shiftMod,up, focusmonitor, -1" # Focus previous monitor
"$shiftMod,down, focusmonitor, 1" # Focus next monitor
"$shiftMod,left, layoutmsg, addmaster" # Add to master
"$shiftMod,right, layoutmsg, removemaster" # Remove from master
]
++ (builtins.concatLists (builtins.genList (i: let
ws = i + 1;
in [
"$mod,code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT,code:1${toString i}, movetoworkspace, ${toString ws}"
])
9));
bindm = [
"$mod,mouse:272, movewindow" # Move Window (mouse)
"$mod,R, resizewindow" # Resize Window (mouse)
];
bindl = [
",XF86AudioMute, exec, sound-toggle" # Toggle Mute
",XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause" # Play/Pause Song
",XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next" # Next Song
",XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous" # Previous Song
",switch:Lid Switch, exec, ${pkgs.hyprlock}/bin/hyprlock" # Lock when closing Lid
];
bindle = [
",XF86AudioRaiseVolume, exec, sound-up" # Sound Up
",XF86AudioLowerVolume, exec, sound-down" # Sound Down
",XF86MonBrightnessUp, exec, brightness-up" # Brightness Up
",XF86MonBrightnessDown, exec, brightness-down" # Brightness Down
];
};
}
+27 -56
View File
@@ -1,6 +1,10 @@
# So best window tiling manager
{ pkgs, config, inputs, lib, ... }:
let
# Hyprland is a dynamic tiling Wayland compositor that is highly customizable and performant.
{
pkgs,
config,
lib,
...
}: let
border-size = config.theme.border-size;
gaps-in = config.theme.gaps-in;
gaps-out = config.theme.gaps-out;
@@ -9,30 +13,28 @@ let
rounding = config.theme.rounding;
blur = config.theme.blur;
keyboardLayout = config.var.keyboardLayout;
background = "rgb(" + config.lib.stylix.colors.base00 + ")";
background = "rgba(" + config.lib.stylix.colors.base00 + "77)";
in {
imports = [
./animations.nix
./bindings.nix
./polkitagent.nix
./keyboard-backlight.nix # CHANGEME: This is for my laptop only
# FIXME: Broken on unstable
# ./hyprspace.nix
./keyboard-backlight.nix # CHANGEME: This is for omen laptop only
];
home.packages = with pkgs; [
qt5.qtwayland
qt6.qtwayland
libsForQt5.qt5ct
qt6ct
qt6Packages.qt6ct
hyprland-qtutils
adw-gtk3
hyprshot
hyprpicker
swappy
imv
wf-recorder
wlr-randr
wl-clipboard
brightnessctl
gnome-themes-extra
libva
@@ -57,14 +59,8 @@ in {
portalPackage = null;
settings = {
"$mod" = "SUPER";
"$shiftMod" = "SUPER_SHIFT";
exec-once = [
"dbus-update-activation-environment --systemd --all &"
"systemctl --user enable --now hyprpaper.service &"
"systemctl --user enable --now hypridle.service &"
"systemctl --user enable --now nextcloud-client.service &"
];
monitor = [
@@ -123,7 +119,10 @@ in {
render_power = 3;
};
blur = {
enabled = if blur then "true" else "false";
enabled =
if blur
then "true"
else "false";
size = 18;
};
};
@@ -134,7 +133,17 @@ in {
mfact = 0.5;
};
gestures = { workspace_swipe = true; };
gesture = "3, horizontal, workspace";
windowrule = [
"match:class proton-authenticator, float on"
"match:class proton-authenticator, suppress_event maximize"
"match:class proton-authenticator, center on"
"match:class proton-authenticator, size 500 400"
"match:class protonvpn-app, float on"
"match:class protonvpn-app, center on"
"match:class protonvpn-app, size 500 400"
];
misc = {
vfr = true;
@@ -142,45 +151,8 @@ in {
disable_splash_rendering = true;
disable_autoreload = true;
focus_on_activate = true;
new_window_takes_over_fullscreen = 2;
};
windowrulev2 = [
"float, tag:modal"
"pin, tag:modal"
"center, tag:modal"
# telegram media viewer
"float, title:^(Media viewer)$"
# Bitwarden extension
"float, title:^(.*Bitwarden Password Manager.*)$"
# gnome calculator
"float, class:^(org.gnome.Calculator)$"
"size 360 490, class:^(org.gnome.Calculator)$"
# make Firefox/Zen PiP window floating and sticky
"float, title:^(Picture-in-Picture)$"
"pin, title:^(Picture-in-Picture)$"
# idle inhibit while watching videos
"idleinhibit focus, class:^(mpv|.+exe|celluloid)$"
"idleinhibit focus, class:^(zen)$, title:^(.*YouTube.*)$"
"idleinhibit fullscreen, class:^(zen)$"
"dimaround, class:^(gcr-prompter)$"
"dimaround, class:^(xdg-desktop-portal-gtk)$"
"dimaround, class:^(polkit-gnome-authentication-agent-1)$"
"dimaround, class:^(zen)$, title:^(File Upload)$"
# fix xwayland apps
"rounding 0, xwayland:1"
"center, class:^(.*jetbrains.*)$, title:^(Confirm Exit|Open Project|win424|win201|splash)$"
"size 640 400, class:^(.*jetbrains.*)$, title:^(splash)$"
];
layerrule = [ "noanim, launcher" "noanim, ^ags-.*" ];
input = {
kb_layout = keyboardLayout;
@@ -196,7 +168,6 @@ in {
clickfinger_behavior = true;
};
};
};
};
}
-20
View File
@@ -1,20 +0,0 @@
# Hyprspace is a hyprland plugin that provides a workspaces overview (three-finger swipe up) and a workspace switcher (three-finger down).
{ inputs, pkgs, ... }: {
wayland.windowManager.hyprland = {
plugins = [ inputs.hyprspace.packages.${pkgs.system}.Hyprspace ];
settings = {
plugin = {
overview = {
centerAligned = true;
hideTopLayers = true;
hideOverlayLayers = true;
showNewWorkspace = true;
exitOnClick = true;
exitOnSwitch = true;
drawActiveWorkspace = true;
autoDrag = false;
};
};
};
};
}
+16 -6
View File
@@ -1,6 +1,11 @@
# Turn the keyboard red/off when the battery is low
{ pkgs, config, ... }:
let
# Include this one only if you have a omen laptop with RGB keyboard
{
pkgs,
config,
...
}: let
alert-when-low-battery = false;
keyboard-backlight = pkgs.writeShellScriptBin "keyboard-backlight" ''
function set_keyboard_backlight {
local color=$1
@@ -10,9 +15,14 @@ let
echo $color > /sys/devices/platform/hp-wmi/rgb_zones/zone03
}
state="white"
set_keyboard_backlight ${config.lib.stylix.colors.base0D}
if [ "${toString alert-when-low-battery}" = "false" ]; then
exit 0
fi
while true; do
BATTERY_LEVEL=$(cat /sys/class/power_supply/BAT*/capacity)
if [[ $BATTERY_LEVEL -le 10 ]]; then
IS_CHARGING=$(cat /sys/class/power_supply/BAT*/status)
if [[ $BATTERY_LEVEL -le 10 && $IS_CHARGING != "Charging" ]]; then
if [[ $state == "red" ]];then
state="white"
set_keyboard_backlight "000000"
@@ -27,6 +37,6 @@ let
sleep 2
done
'';
in {
wayland.windowManager.hyprland.settings.exec-once = [ keyboard-backlight ];
}
command = "bash ${keyboard-backlight}/bin/keyboard-backlight &";
in {wayland.windowManager.hyprland.settings.exec-once = [command];}
+3 -4
View File
@@ -1,7 +1,6 @@
# HyprPolkitAgent is a simple polkit agent for wayland compositors
{ pkgs, ... }: {
home.packages = with pkgs; [ hyprpolkitagent ];
{pkgs, ...}: {
home.packages = with pkgs; [hyprpolkitagent];
wayland.windowManager.hyprland.settings.exec-once =
[ "systemctl --user start hyprpolkitagent" ];
wayland.windowManager.hyprland.settings.exec-once = ["systemctl --user start hyprpolkitagent"];
}
-87
View File
@@ -1,87 +0,0 @@
# Hyprlock is a lockscreen for Hyprland
{ config, lib, ... }:
let
foreground = "rgba(${config.theme.textColorOnWallpaper}ee)";
font = config.stylix.fonts.serif.name;
in {
programs.hyprlock = {
enable = true;
settings = {
general = {
grace = 5;
no_fade_in = false;
disable_loading_bar = false;
};
# BACKGROUND
background = {
monitor = "";
blur_passes = 0;
contrast = 0.8916;
brightness = 0.7172;
vibrancy = 0.1696;
vibrancy_darkness = 0.0;
};
label = [
{
# Day-Month-Date
monitor = "";
text = ''cmd[update:1000] echo -e "$(date +"%A, %B %d")"'';
color = foreground;
font_size = 28;
font_family = font + " Bold";
position = "0, 490";
halign = "center";
valign = "center";
}
# Time
{
monitor = "";
text = ''cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"'';
color = foreground;
font_size = 160;
font_family = "steelfish outline regular";
position = "0, 370";
halign = "center";
valign = "center";
}
# USER
{
monitor = "";
text = " $USER";
color = foreground;
outline_thickness = 2;
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true;
font_size = 18;
font_family = font + " Bold";
position = "0, -180";
halign = "center";
valign = "center";
}
];
# INPUT FIELD
input-field = lib.mkForce {
monitor = "";
size = "300, 60";
outline_thickness = 2;
dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2; # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true;
outer_color = "rgba(25, 25, 25, 0)";
inner_color = "rgba(25, 25, 25, 0.1)";
font_color = foreground;
fade_on_empty = false;
font_family = font + " Bold";
placeholder_text = "<i>🔒 Enter Password</i>";
hide_input = false;
position = "0, -250";
halign = "center";
valign = "center";
};
};
};
}
-206
View File
@@ -1,206 +0,0 @@
# Hyprpanel is the bar on top of the screen
# Display informations like workspaces, battery, wifi, ...
{ inputs, config, ... }:
let
transparentButtons = config.theme.bar.transparentButtons;
accent = "#${config.lib.stylix.colors.base0D}";
accent-alt = "#${config.lib.stylix.colors.base03}";
background = "#${config.lib.stylix.colors.base00}";
background-alt = "#${config.lib.stylix.colors.base01}";
foreground = "#${config.lib.stylix.colors.base05}";
foregroundOnWallpaper = "#${config.theme.textColorOnWallpaper}";
font = "${config.stylix.fonts.serif.name}";
fontSize = "${toString config.stylix.fonts.sizes.desktop}";
rounding = config.theme.rounding;
border-size = config.theme.border-size;
gaps-out = config.theme.gaps-out;
gaps-in = config.theme.gaps-in;
floating = config.theme.bar.floating;
transparent = config.theme.bar.transparent;
position = config.theme.bar.position;
notificationOpacity = 90;
location = config.var.location;
in {
imports = [ inputs.hyprpanel.homeManagerModules.hyprpanel ];
programs.hyprpanel = {
enable = true;
hyprland.enable = true;
overwrite.enable = true;
overlay.enable = true;
settings = {
layout = {
"bar.layouts" = {
"*" = {
"left" = [ "dashboard" "workspaces" "windowtitle" ];
"middle" = [ "media" "cava" ];
"right" = [
"systray"
"volume"
"bluetooth"
"battery"
"network"
"clock"
"notifications"
];
};
};
};
};
override = {
"theme.font.name" = "${font}";
"theme.font.size" = "${fontSize}px";
"theme.bar.outer_spacing" =
"${if floating && transparent then "0" else "8"}px";
"theme.bar.buttons.y_margins" =
"${if floating && transparent then "0" else "8"}px";
"theme.bar.buttons.spacing" = "0.3em";
"theme.bar.buttons.radius" = "${
if transparent then toString rounding else toString (rounding - 8)
}px";
"theme.bar.floating" = "${if floating then "true" else "false"}";
"theme.bar.buttons.padding_x" = "0.8rem";
"theme.bar.buttons.padding_y" = "0.4rem";
"theme.bar.buttons.workspaces.hover" = "${accent-alt}";
"theme.bar.buttons.workspaces.active" = "${accent}";
"theme.bar.buttons.workspaces.available" = "${accent-alt}";
"theme.bar.buttons.workspaces.occupied" = "${accent-alt}";
"theme.bar.margin_top" =
"${if position == "top" then toString (gaps-in * 2) else "0"}px";
"theme.bar.margin_bottom" =
"${if position == "top" then "0" else toString (gaps-in * 2)}px";
"theme.bar.margin_sides" = "${toString gaps-out}px";
"theme.bar.border_radius" = "${toString rounding}px";
"bar.launcher.icon" = "";
"theme.bar.transparent" = "${if transparent then "true" else "false"}";
"bar.workspaces.show_numbered" = false;
"bar.workspaces.workspaces" = 5;
"bar.workspaces.hideUnoccupied" = false;
"bar.windowtitle.label" = true;
"bar.volume.label" = false;
"bar.network.truncation_size" = 12;
"bar.bluetooth.label" = false;
"bar.clock.format" = "%a %b %d %I:%M %p";
"bar.notifications.show_total" = true;
"theme.notification.border_radius" = "${toString rounding}px";
"theme.osd.enable" = true;
"theme.osd.orientation" = "vertical";
"theme.osd.location" = "left";
"theme.osd.radius" = "${toString rounding}px";
"theme.osd.margins" = "0px 0px 0px 10px";
"theme.osd.muted_zero" = true;
"menus.clock.weather.location" = "${location}";
"menus.clock.weather.unit" = "metric";
"menus.dashboard.powermenu.confirmation" = false;
"menus.dashboard.powermenu.avatar.image" = "~/.face.icon";
"menus.dashboard.shortcuts.left.shortcut1.icon" = "";
"menus.dashboard.shortcuts.left.shortcut1.command" = "zen";
"menus.dashboard.shortcuts.left.shortcut1.tooltip" = "Zen";
"menus.dashboard.shortcuts.left.shortcut2.icon" = "󰅶";
"menus.dashboard.shortcuts.left.shortcut2.command" = "caffeine";
"menus.dashboard.shortcuts.left.shortcut2.tooltip" = "Caffeine";
"menus.dashboard.shortcuts.left.shortcut3.icon" = "󰖔";
"menus.dashboard.shortcuts.left.shortcut3.command" = "night-shift";
"menus.dashboard.shortcuts.left.shortcut3.tooltip" = "Night-shift";
"menus.dashboard.shortcuts.left.shortcut4.icon" = "";
"menus.dashboard.shortcuts.left.shortcut4.command" = "menu";
"menus.dashboard.shortcuts.left.shortcut4.tooltip" = "Search Apps";
"menus.dashboard.shortcuts.right.shortcut1.icon" = "";
"menus.dashboard.shortcuts.right.shortcut1.command" = "hyprpicker -a";
"menus.dashboard.shortcuts.right.shortcut1.tooltip" = "Color Picker";
"menus.dashboard.shortcuts.right.shortcut3.icon" = "󰄀";
"menus.dashboard.shortcuts.right.shortcut3.command" =
"screenshot region swappy";
"menus.dashboard.shortcuts.right.shortcut3.tooltip" = "Screenshot";
"theme.bar.menus.monochrome" = true;
"wallpaper.enable" = false;
"theme.bar.menus.background" = "${background}";
"theme.bar.menus.cards" = "${background-alt}";
"theme.bar.menus.card_radius" = "${toString rounding}px";
"theme.bar.menus.label" = "${foreground}";
"theme.bar.menus.text" = "${foreground}";
"theme.bar.menus.border.size" = "${toString border-size}px";
"theme.bar.menus.border.color" = "${accent}";
"theme.bar.menus.border.radius" = "${toString rounding}px";
"theme.bar.menus.popover.text" = "${foreground}";
"theme.bar.menus.popover.background" = "${background-alt}";
"theme.bar.menus.listitems.active" = "${accent}";
"theme.bar.menus.icons.active" = "${accent}";
"theme.bar.menus.switch.enabled" = "${accent}";
"theme.bar.menus.check_radio_button.active" = "${accent}";
"theme.bar.menus.buttons.default" = "${accent}";
"theme.bar.menus.buttons.active" = "${accent}";
"theme.bar.menus.iconbuttons.active" = "${accent}";
"theme.bar.menus.progressbar.foreground" = "${accent}";
"theme.bar.menus.slider.primary" = "${accent}";
"theme.bar.menus.tooltip.background" = "${background-alt}";
"theme.bar.menus.tooltip.text" = "${foreground}";
"theme.bar.menus.dropdownmenu.background" = "${background-alt}";
"theme.bar.menus.dropdownmenu.text" = "${foreground}";
"theme.bar.background" = "${background
+ (if transparentButtons && transparent then "00" else "")}";
"theme.bar.buttons.style" = "default";
"theme.bar.buttons.monochrome" = true;
"theme.bar.buttons.text" = if transparent && transparentButtons then
"${foregroundOnWallpaper}"
else
"${foreground}";
"theme.bar.buttons.background" =
"${(if transparent then background else background-alt)
+ (if transparentButtons then "00" else "")}";
"theme.bar.buttons.icon" = "${accent}";
"theme.bar.buttons.notifications.background" = "${background-alt}";
"theme.bar.buttons.hover" = "${background}";
"theme.bar.buttons.notifications.hover" = "${background}";
"theme.bar.buttons.notifications.total" = "${accent}";
"theme.bar.buttons.notifications.icon" = "${accent}";
"theme.osd.bar_color" = "${accent}";
"theme.osd.bar_overflow_color" = "${accent-alt}";
"theme.osd.icon" = "${background}";
"theme.osd.icon_container" = "${accent}";
"theme.osd.label" = "${accent}";
"theme.osd.bar_container" = "${background-alt}";
"theme.bar.menus.menu.media.background.color" = "${background-alt}";
"theme.bar.menus.menu.media.card.color" = "${background-alt}";
"theme.bar.menus.menu.media.card.tint" = 90;
"bar.customModules.updates.pollingInterval" = 1440000;
"bar.media.show_active_only" = true;
"theme.bar.location" = "${position}";
"bar.workspaces.numbered_active_indicator" = "color";
"bar.workspaces.monitorSpecific" = false;
"bar.workspaces.applicationIconEmptyWorkspace" = "";
"bar.workspaces.showApplicationIcons" = true;
"bar.workspaces.showWsIcons" = true;
"theme.bar.dropdownGap" = "4.5em";
"theme.bar.menus.shadow" =
"${if transparent then "0 0 0 0" else "0px 0px 3px 1px #16161e"}";
"bar.customModules.cava.showIcon" = false;
"bar.customModules.cava.stereo" = true;
"bar.customModules.cava.showActiveOnly" = true;
"menus.power.lowBatteryNotification" = true;
"notifications.position" = "top right";
"notifications.showActionsOnHover" = true;
"theme.notification.enableShadow" = true;
"theme.notification.opacity" = notificationOpacity;
"theme.notification.background" = "${background-alt}";
"theme.notification.actions.background" = "${accent}";
"theme.notification.actions.text" = "${foreground}";
"theme.notification.label" = "${accent}";
"theme.notification.border" = "${background-alt}";
"theme.notification.text" = "${foreground}";
"theme.notification.labelicon" = "${accent}";
"theme.notification.close_button.background" = "${background-alt}";
"theme.notification.close_button.label" = "#f38ba8";
};
};
}
+5 -1
View File
@@ -1,5 +1,5 @@
# Hyprpaper is used to set the wallpaper on the system
{ lib, ... }: {
{lib, ...}: {
# The wallpaper is set by stylix
services.hyprpaper = {
enable = true;
@@ -11,4 +11,8 @@
};
systemd.user.services.hyprpaper.Unit.After =
lib.mkForce "graphical-session.target";
wayland.windowManager.hyprland.settings.exec-once = [
"systemctl --user enable --now hyprpaper.service"
];
}
+26 -24
View File
@@ -1,21 +1,23 @@
{ pkgs, lib, ... }:
with lib;
let
# Mime type associations for the system.
{lib, ...}:
with lib; let
defaultApps = {
browser = [ "zen-beta.desktop" ];
text = [ "org.gnome.TextEditor.desktop" ];
image = [ "imv-dir.desktop" ];
audio = [ "mpv.desktop" ];
video = [ "mpv.desktop" ];
directory = [ "thunar.desktop" ];
office = [ "libreoffice.desktop" ];
pdf = [ "zathura.desktop" ];
terminal = [ "kitty.desktop" ];
discord = [ "discord.desktop" ];
# check desktop files here: `ls $(echo $XDG_DATA_DIRS| sed "s/:/ /g")`
browser = ["vivaldi-stable.desktop"];
text = ["org.gnome.TextEditor.desktop"];
image = ["imv-dir.desktop"];
audio = ["mpv.desktop"];
video = ["mpv.desktop"];
directory = ["thunar.desktop"];
office = ["libreoffice.desktop"];
pdf = ["zathura.desktop"];
terminal = ["kitty.desktop"];
discord = ["discord.desktop"];
archive = ["xarchiver.desktop"];
};
mimeMap = {
text = [ "text/plain" ];
text = ["text/plain"];
image = [
"image/bmp"
"image/gif"
@@ -46,7 +48,7 @@ let
"video/x-matroska"
"video/x-msvideo"
];
directory = [ "inode/directory" ];
directory = ["inode/directory"];
browser = [
"text/html"
"x-scheme-handler/about"
@@ -66,15 +68,15 @@ let
"application/vnd.ms-powerpoint"
"application/rtf"
];
pdf = [ "application/pdf" ];
terminal = [ "terminal" ];
# archive = [
# "application/zip"
# "application/rar"
# "application/7z"
# "application/*tar"
# ];
discord = [ "x-scheme-handler/discord" ];
pdf = ["application/pdf"];
terminal = ["terminal"];
archive = [
"application/zip"
"application/rar"
"application/7z"
"application/*tar"
];
discord = ["x-scheme-handler/discord"];
};
associations = with lists;
-108
View File
@@ -1,108 +0,0 @@
# Wofi is a launcher for Wayland, inspired by rofi.
{ config, pkgs, lib, ... }:
let
accent = "#${config.lib.stylix.colors.base0D}";
background = "#${config.lib.stylix.colors.base00}";
background-alt = "#${config.lib.stylix.colors.base01}";
foreground = "#${config.lib.stylix.colors.base05}";
font = config.stylix.fonts.serif.name;
rounding = config.theme.rounding;
font-size = config.stylix.fonts.sizes.popups;
in {
home.packages = with pkgs; [ wofi-emoji ];
programs.wofi = {
enable = true;
settings = {
allow_markup = true;
width = 650;
show = "drun";
prompt = "Apps";
normal_window = true;
layer = "top";
height = "325px";
orientation = "vertical";
halign = "fill";
line_wrap = "off";
dynamic_lines = false;
allow_images = true;
image_size = 24;
exec_search = false;
hide_search = false;
parse_search = false;
insensitive = true;
hide_scroll = true;
no_actions = true;
sort_order = "default";
gtk_dark = true;
filter_rate = 100;
key_expand = "Tab";
key_exit = "Escape";
};
style = lib.mkForce
# css
''
* {
font-family: "${font}";
font-weight: 600;
font-size: ${toString font-size}px;
}
#window {
background-color: ${background};
color: ${foreground};
border-radius: ${toString rounding}px;
}
#outer-box {
padding: 20px;
}
#input {
background-color: ${background-alt};
border: 0px solid ${accent};
color: ${foreground};
padding: 8px 12px;
}
#scroll {
margin-top: 20px;
}
#inner-box {}
#img {
padding-right: 8px;
}
#text {
color: ${foreground};
}
#text:selected {
color: ${foreground};
}
#entry {
padding: 6px;
}
#entry:selected {
background-color: ${accent};
color: ${foreground};
}
#unselected {}
#selected {}
#input,
#entry:selected {
border-radius: ${toString rounding}px;
}
'';
};
}
+3 -2
View File
@@ -1,4 +1,4 @@
{ config, ... }: {
{config, ...}: {
imports = [
# Mostly system related configuration
../../nixos/nvidia.nix # CHANGEME: Remove this line if you don't have an Nvidia GPU
@@ -13,8 +13,9 @@
../../nixos/utils.nix
../../nixos/tailscale.nix
../../nixos/hyprland.nix
../../nixos/docker.nix
../../nixos/omen.nix # For my laptop only
../../nixos/omen.nix # CHANGEME: For my laptop only, remove this (OMEN 16)
# You should let those lines as is
./hardware-configuration.nix
+22 -19
View File
@@ -1,30 +1,33 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
config,
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "uas" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "uas" "usbhid" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/6320d3c6-0231-45ec-817a-c6f0e39aab73";
fsType = "ext4";
};
fileSystems."/" = {
device = "/dev/disk/by-uuid/6320d3c6-0231-45ec-817a-c6f0e39aab73";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/5251-9B85";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/5251-9B85";
fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
};
swapDevices = [ ];
swapDevices = [];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's

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