From 5716264ab0e8f665e9e8ecca464b55f17d48cf38 Mon Sep 17 00:00:00 2001 From: azikx Date: Fri, 18 Oct 2024 16:16:37 +0900 Subject: [PATCH] =?UTF-8?q?update=20=EF=8C=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 21 + README.md | 67 + flake.lock | 989 ++++++ flake.nix | 54 + home/default.nix | 14 + home/programs/cli/btop/default.nix | 11 + home/programs/cli/cava/default.nix | 22 + home/programs/cli/default.nix | 16 + home/programs/cli/eza/default.nix | 7 + home/programs/cli/fastfetch/default.nix | 67 + home/programs/cli/fzf/default.nix | 8 + home/programs/cli/git/default.nix | 12 + home/programs/cli/helix/default.nix | 54 + home/programs/cli/helix/languages.nix | 34 + home/programs/cli/helix/theme.nix | 171 + home/programs/cli/micro/default.nix | 65 + home/programs/cli/pkgs.nix | 23 + home/programs/cli/yazi/binds.nix | 177 + home/programs/cli/yazi/default.nix | 101 + home/programs/cli/yazi/lua.nix | 100 + home/programs/cli/yazi/plugins.nix | 76 + home/programs/cli/yazi/starship.nix | 42 + home/programs/cli/yazi/theme.nix | 2979 +++++++++++++++++ home/programs/cli/zoxide/default.nix | 8 + .../custom-pkgs/anicliru/anicli-api.nix | 34 + .../custom-pkgs/anicliru/anicli-ru.nix | 31 + .../programs/custom-pkgs/anicliru/chompjs.nix | 26 + .../programs/custom-pkgs/anicliru/eggella.nix | 29 + home/programs/custom-pkgs/default.nix | 7 + home/programs/default.nix | 1 + home/programs/gui/ayugram/default.nix | 107 + home/programs/gui/default.nix | 15 + home/programs/gui/floorp/default.nix | 65 + home/programs/gui/floorp/search.nix | 33 + home/programs/gui/floorp/settings.nix | 9 + home/programs/gui/floorp/user/chrome.nix | 4 + home/programs/gui/floorp/user/content.nix | 6 + home/programs/gui/floorp/user/default.nix | 1 + home/programs/gui/floorp/user/tabcenter.nix | 112 + home/programs/gui/floorp/user/tcr.nix | 4 + home/programs/gui/mpv/default.nix | 86 + home/programs/gui/obs-studio/default.nix | 11 + home/programs/gui/pkgs.nix | 37 + home/programs/gui/qbittorrent/default.nix | 35 + home/programs/gui/qutebrowser/default.nix | 1 + home/programs/gui/spotify/default.nix | 46 + home/programs/gui/swayimg/default.nix | 219 ++ home/programs/misc/dconf.nix | 8 + home/programs/misc/default.nix | 9 + home/programs/misc/env.nix | 6 + home/programs/misc/nix.nix | 23 + home/programs/misc/nwg.nix | 6 + home/programs/misc/xdg.nix | 37 + home/programs/shells/default.nix | 8 + home/programs/shells/fish/default.nix | 81 + home/programs/shells/starship.nix | 65 + home/programs/shells/zsh/default.nix | 20 + home/themes/default.nix | 8 + home/themes/gtk.nix | 21 + home/themes/qt/default.nix | 1 + home/themes/qt/qt.nix | 6 + home/themes/qt/qt5ct.nix | 48 + home/themes/qt/qt6ct.nix | 48 + home/themes/stylix/paradise.nix | 27 + home/themes/stylix/stylix.nix | 48 + home/window-managers/default.nix | 20 + home/window-managers/hyprland/binds.nix | 161 + home/window-managers/hyprland/default.nix | 11 + home/window-managers/hyprland/plugins.nix | 36 + home/window-managers/hyprland/rules.nix | 40 + home/window-managers/hyprland/settings.nix | 122 + home/window-managers/misc/default.nix | 7 + home/window-managers/misc/mako/default.nix | 18 + home/window-managers/misc/swaync/default.nix | 30 + home/window-managers/misc/waybar/default.nix | 145 + home/window-managers/misc/waybar/style.nix | 116 + home/window-managers/swayfx/binds.nix | 127 + home/window-managers/swayfx/default.nix | 10 + home/window-managers/swayfx/settings.nix | 84 + home/window-managers/terminals/default.nix | 1 + .../terminals/foot/default.nix | 16 + .../window-managers/terminals/kitty/binds.nix | 50 + .../terminals/kitty/colors.nix | 36 + .../terminals/kitty/default.nix | 44 + host/default.nix | 7 + host/misc/default.nix | 12 + host/misc/locale.nix | 18 + host/misc/nh.nix | 8 + host/misc/nix.nix | 30 + host/misc/pkgs.nix | 36 + host/misc/security.nix | 22 + host/misc/user.nix | 12 + host/misc/zapret.nix | 20 + host/system/boot.nix | 56 + host/system/default.nix | 10 + host/system/disks.nix | 29 + host/system/hardware.nix | 30 + host/system/network.nix | 13 + host/system/services.nix | 27 + host/system/sound.nix | 12 + host/themes/paradise.nix | 22 + host/themes/stylix.nix | 18 + 102 files changed, 7963 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home/default.nix create mode 100644 home/programs/cli/btop/default.nix create mode 100644 home/programs/cli/cava/default.nix create mode 100644 home/programs/cli/default.nix create mode 100644 home/programs/cli/eza/default.nix create mode 100644 home/programs/cli/fastfetch/default.nix create mode 100644 home/programs/cli/fzf/default.nix create mode 100644 home/programs/cli/git/default.nix create mode 100644 home/programs/cli/helix/default.nix create mode 100644 home/programs/cli/helix/languages.nix create mode 100644 home/programs/cli/helix/theme.nix create mode 100644 home/programs/cli/micro/default.nix create mode 100644 home/programs/cli/pkgs.nix create mode 100644 home/programs/cli/yazi/binds.nix create mode 100644 home/programs/cli/yazi/default.nix create mode 100644 home/programs/cli/yazi/lua.nix create mode 100644 home/programs/cli/yazi/plugins.nix create mode 100644 home/programs/cli/yazi/starship.nix create mode 100644 home/programs/cli/yazi/theme.nix create mode 100644 home/programs/cli/zoxide/default.nix create mode 100644 home/programs/custom-pkgs/anicliru/anicli-api.nix create mode 100644 home/programs/custom-pkgs/anicliru/anicli-ru.nix create mode 100644 home/programs/custom-pkgs/anicliru/chompjs.nix create mode 100644 home/programs/custom-pkgs/anicliru/eggella.nix create mode 100644 home/programs/custom-pkgs/default.nix create mode 100644 home/programs/default.nix create mode 100644 home/programs/gui/ayugram/default.nix create mode 100644 home/programs/gui/default.nix create mode 100644 home/programs/gui/floorp/default.nix create mode 100644 home/programs/gui/floorp/search.nix create mode 100644 home/programs/gui/floorp/settings.nix create mode 100644 home/programs/gui/floorp/user/chrome.nix create mode 100644 home/programs/gui/floorp/user/content.nix create mode 100644 home/programs/gui/floorp/user/default.nix create mode 100644 home/programs/gui/floorp/user/tabcenter.nix create mode 100644 home/programs/gui/floorp/user/tcr.nix create mode 100644 home/programs/gui/mpv/default.nix create mode 100644 home/programs/gui/obs-studio/default.nix create mode 100644 home/programs/gui/pkgs.nix create mode 100644 home/programs/gui/qbittorrent/default.nix create mode 100644 home/programs/gui/qutebrowser/default.nix create mode 100644 home/programs/gui/spotify/default.nix create mode 100644 home/programs/gui/swayimg/default.nix create mode 100644 home/programs/misc/dconf.nix create mode 100644 home/programs/misc/default.nix create mode 100644 home/programs/misc/env.nix create mode 100644 home/programs/misc/nix.nix create mode 100644 home/programs/misc/nwg.nix create mode 100644 home/programs/misc/xdg.nix create mode 100644 home/programs/shells/default.nix create mode 100644 home/programs/shells/fish/default.nix create mode 100644 home/programs/shells/starship.nix create mode 100644 home/programs/shells/zsh/default.nix create mode 100644 home/themes/default.nix create mode 100644 home/themes/gtk.nix create mode 100644 home/themes/qt/default.nix create mode 100644 home/themes/qt/qt.nix create mode 100644 home/themes/qt/qt5ct.nix create mode 100644 home/themes/qt/qt6ct.nix create mode 100644 home/themes/stylix/paradise.nix create mode 100644 home/themes/stylix/stylix.nix create mode 100644 home/window-managers/default.nix create mode 100644 home/window-managers/hyprland/binds.nix create mode 100644 home/window-managers/hyprland/default.nix create mode 100644 home/window-managers/hyprland/plugins.nix create mode 100644 home/window-managers/hyprland/rules.nix create mode 100644 home/window-managers/hyprland/settings.nix create mode 100644 home/window-managers/misc/default.nix create mode 100644 home/window-managers/misc/mako/default.nix create mode 100644 home/window-managers/misc/swaync/default.nix create mode 100644 home/window-managers/misc/waybar/default.nix create mode 100644 home/window-managers/misc/waybar/style.nix create mode 100644 home/window-managers/swayfx/binds.nix create mode 100644 home/window-managers/swayfx/default.nix create mode 100644 home/window-managers/swayfx/settings.nix create mode 100644 home/window-managers/terminals/default.nix create mode 100644 home/window-managers/terminals/foot/default.nix create mode 100644 home/window-managers/terminals/kitty/binds.nix create mode 100644 home/window-managers/terminals/kitty/colors.nix create mode 100644 home/window-managers/terminals/kitty/default.nix create mode 100644 host/default.nix create mode 100644 host/misc/default.nix create mode 100644 host/misc/locale.nix create mode 100644 host/misc/nh.nix create mode 100644 host/misc/nix.nix create mode 100644 host/misc/pkgs.nix create mode 100644 host/misc/security.nix create mode 100644 host/misc/user.nix create mode 100644 host/misc/zapret.nix create mode 100644 host/system/boot.nix create mode 100644 host/system/default.nix create mode 100644 host/system/disks.nix create mode 100644 host/system/hardware.nix create mode 100644 host/system/network.nix create mode 100644 host/system/services.nix create mode 100644 host/system/sound.nix create mode 100644 host/themes/paradise.nix create mode 100644 host/themes/stylix.nix diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2e2fbac --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Parasrah + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e74a5a --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +
+

❄️【 NIXOS DOTFILES 】❄️

+
+ +
+ Software + + + | Name | Desciption | + | ------------- | ------------- | + | Desktop utilites | + | [hyprland](https://github.com/hyprwm/hyprland) | Best window manager | + | [kitty](https://github.com/kovidgoyal/kitty) | Very good terminal with image preview | + | [foot](https://codeberg.org/dnkl/foot) | Simplest terminal | + | [grimblast](https://github.com/hyprwm/contrib/tree/main/grimblast) | Screenshoter | + | [nwg-drawer](https://github.com/nwg-piotr/nwg-drawer) | Gnome-like launcher | + | [waybar](https://github.com/Alexays/Waybar) | Bar for waylands | + | CLI utilites | + | [fish](https://github.com/fish-shell/fish-shell) | Just working shell | + | [fastfetch](https://github.com/fastfetch-cli/fastfetch) | Fetch for be cool rices | + | [yazi](https://github.com/sxyazi/yazi) | Rusted file-manager great!!! | + | [joshuto](https://github.com/kamiyaa/joshuto) | Rusted file-manager | + | [helix](https://github.com/helix-editor/helix) | Best text editor with vi-like keys | + | [micro](https://github.com/zyedidia/micro) | Simplest fucking text editor | + | [cava](https://github.com/karlstav/cava) | Sound visualizer | + | [eza](https://github.com/eza-community/eza) | Rusted ls with icons | + | [lutgen](https://github.com/ozwaldorf/lutgen-rs) | Rusted lut | + | [nvtop](https://github.com/Syllo/nvtop) | Top for GPU | + | [btop](https://github.com/aristocratos/btop) | Very informated top | + | [doas](https://wiki.archlinux.org/title/Doas) | sudo from bsd systems | + | GUI utilites | + | [firefox](https://github.com/mozilla) | Customizable browser | + | [bottles](https://github.com/bottlesdevs/Bottles) | Wine launcher | + | [nemo](https://github.com/linuxmint/nemo) | File manager from Cinnamon | + | [obsidian](https://obsidian.md) | Markdown | + | [onlyoffice](https://github.com/ONLYOFFICE/DesktopEditors) | Office suite | + | [prismlauncher](https://github.com/PrismLauncher/PrismLauncher) | Fuckm all my homies plays this shit man | + | [vesktop](https://github.com/Vencord/Vesktop) | Wayland Discord client | + | [qbittorrent](https://github.com/qbittorrent/qBittorrent) | Torrents))))) hahah)))) | + | [ayugram](https://github.com/AyuGram/AyuGramDesktop) | Telegram client with ghost mode | + | [file-Roller](https://gitlab.gnome.org/GNOME/file-roller) | Archiver | + | [mpv](https://github.com/mpv-player/mpv) | Simplest video player | + | [anime4k](https://github.com/bloc97/Anime4K) | Anime upscaler | + | [swayimg](https://github.com/artemsen/swayimg) | Simple image viewer | + | Misc | + | [nix-tree](https://github.com/utdemir/nix-tree) | Tree for your generations&derivations | + | [prefetch-github](https://github.com/seppeljordan/nix-prefetch-github) | Tool for fetching github repo | + | [tenki](https://github.com/ckaznable/tenki) | TUI clock with effects | + | [confetty](https://github.com/maaslalani/confetty) | Confetty and fireworks in terminal | + | [jetbrains](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/JetBrainsMono) | Nerded JetBrains | + + + - IDK WHAT ALSO DUDES +
+ +## [WALLPAPERS](https://git.sr.ht/~azikx/wallpapers) & [USERSTYLES](https://git.sr.ht/~azikx/userstyles) + +![aye](https://git.sr.ht/~azikx/wallpapers/blob/main/dotfiles/fetch.png) + +![ауе](https://git.sr.ht/~azikx/wallpapers/blob/main/dotfiles/furryfox.png) + +![ауе](https://git.sr.ht/~azikx/wallpapers/blob/main/dotfiles/top.png) + +![ауе](https://git.sr.ht/~azikx/wallpapers/blob/main/dotfiles/yazi.png) + +#### ENGLISH OR SPANISH??? WHOEVER MOVES IS GAY))))))) +#### THANKS FOR [hezaki](https://codeberg.org/Hezaki/Touka/), HONORED BROTHER, FOR THE EMPEROR diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..fe0baf0 --- /dev/null +++ b/flake.lock @@ -0,0 +1,989 @@ +{ + "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728326504, + "narHash": "sha256-dQXAj+4d6neY7ldCiH6gNym3upP49PVxRzEPxXlD9Aw=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "65dd97b5d21e917295159bbef1d52e06963f4eb0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "ayugram-desktop": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1728599021, + "narHash": "sha256-smnxp3ceDH/DFIy0ANm8E1WC78UoC0LKTtl90EynJjc=", + "owner": "kaeeraa", + "repo": "ayugram-desktop", + "rev": "f126f1529ffd818905232ad6054d21999c2a2cdd", + "type": "github" + }, + "original": { + "owner": "kaeeraa", + "ref": "release", + "repo": "ayugram-desktop", + "type": "github" + } + }, + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1708890466, + "narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "665b3c6748534eb766c777298721cece9453fdae", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1622559957, + "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1725860795, + "narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "7f795bf75d38e0eea9fed287264067ca187b88a9", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1716150083, + "narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "type": "github" + } + }, + "firefox-addons": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "dir": "pkgs/firefox-addons", + "lastModified": 1728792245, + "narHash": "sha256-u3DIFQ26jtO9kgxSXMVYYdjSF8VArR0jA0N7ns1wWoo=", + "owner": "rycee", + "repo": "nur-expressions", + "rev": "8064396aa8c2491dcecbedf9c71140936f032056", + "type": "gitlab" + }, + "original": { + "dir": "pkgs/firefox-addons", + "owner": "rycee", + "repo": "nur-expressions", + "type": "gitlab" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1629284811, + "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": [ + "stylix", + "systems" + ] + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1689549921, + "narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "lastModified": 1713702291, + "narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "46.1", + "repo": "gnome-shell", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1728726232, + "narHash": "sha256-8ZWr1HpciQsrFjvPMvZl0W+b0dilZOqXPoKa2Ux36bc=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "d57112db877f07387ce7104b5ac346ede556d2d7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1724435763, + "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1727821604, + "narHash": "sha256-hNw5J6xatedqytYowx0mJKgctjA4lQARZFdgnzM2RpM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "d60e1e01e6e6633ef1c87148b9137cc1dd39263d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprfocus": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nix-filter": "nix-filter" + }, + "locked": { + "lastModified": 1717066948, + "narHash": "sha256-R1ZgNhQkoS6ZHRRKB+j5vYgRANfYO//sHbrD7moUTx0=", + "owner": "pyt0xic", + "repo": "hyprfocus", + "rev": "aa7262d3a4564062f97b9cfdad47fd914cfb80f2", + "type": "github" + }, + "original": { + "owner": "pyt0xic", + "repo": "hyprfocus", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs_2", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_2", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1728752206, + "narHash": "sha256-r5xU/LqU4TrUOIouhYqrTZc1VY1zLQOOzbLsFCDlfpI=", + "ref": "refs/heads/main", + "rev": "1822707c7e7394ce8c7572f2fe890763a307f499", + "revCount": 5332, + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728345020, + "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "a7c183800e74f337753de186522b9017a07a8cee", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728168612, + "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1727300645, + "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1726874836, + "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "nix-filter": { + "locked": { + "lastModified": 1694857738, + "narHash": "sha256-bxxNyLHjhu0N8T3REINXQ2ZkJco0ABFPn6PIe2QUfqo=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "41fd48e00c22b4ced525af521ead8792402de0ea", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1728018373, + "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "bc947f541ae55e999ffdb4013441347d83b00feb", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1728627514, + "narHash": "sha256-r+SF9AnHrTg+bk6YszoKfV9lgyw+yaFUQe0dOjI0Z2o=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "c505ebf777526041d792a49d5f6dd4095ea391a7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1728018373, + "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bc947f541ae55e999ffdb4013441347d83b00feb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1728492678, + "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1725194671, + "narHash": "sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w+ROpMfuw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b833ff01a0d694b910daca6e2ff4a3f26dee478c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1722415718, + "narHash": "sha256-5US0/pgxbMksF92k1+eOa8arJTJiPvsdZj9Dl+vJkM4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c3392ad349a5227f4a3464dce87bcc5046692fce", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur": { + "locked": { + "lastModified": 1728794320, + "narHash": "sha256-5Dm+961fOsneg5nX6gBCHPHMdwF6/JbV5p0Zvmi6ybU=", + "owner": "nix-community", + "repo": "NUR", + "rev": "15bee9bde462e0e47e7d34c78d50bb0cc718c6e4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1728092656, + "narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "1211305a5b237771e13fcca0c51e60ad47326a9a", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "ayugram-desktop": "ayugram-desktop", + "firefox-addons": "firefox-addons", + "home-manager": "home-manager", + "hyprfocus": "hyprfocus", + "hyprland": "hyprland", + "nixpkgs": "nixpkgs_3", + "nixpkgs-stable": "nixpkgs-stable_2", + "nur": "nur", + "spicetify-nix": "spicetify-nix", + "stylix": "stylix", + "walls": "walls", + "yazi": "yazi" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "yazi", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1721441897, + "narHash": "sha256-gYGX9/22tPNeF7dR6bWN5rsrpU4d06GnQNNgZ6ZiXz0=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "b7996075da11a2d441cfbf4e77c2939ce51506fd", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "b7996075da11a2d441cfbf4e77c2939ce51506fd", + "type": "github" + } + }, + "spicetify-nix": { + "inputs": { + "flake-compat": "flake-compat_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1728792969, + "narHash": "sha256-TwQNBUFNmvr7rSOH5onI2Rj6FoJ6wWzdnMH6P4mwyps=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "1f3c6931100c64f6747d47f8a7b8d7a75fc5844e", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_3", + "gnome-shell": "gnome-shell", + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_4", + "systems": "systems_3", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-tmux": "tinted-tmux" + }, + "locked": { + "lastModified": 1728640680, + "narHash": "sha256-JH2+RXJNooFtZIN6ZhaGZWn2KChMrso4H7Fkp1Ujrdo=", + "owner": "danth", + "repo": "stylix", + "rev": "f95022bb6e74f726a87975aec982a5aa9fad8691", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1696725948, + "narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1716423189, + "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "eb39e141db14baef052893285df9f266df041ff8", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "eb39e141db14baef052893285df9f266df041ff8", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1696725902, + "narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "walls": { + "flake": false, + "locked": { + "lastModified": 1728910152, + "narHash": "sha256-oVCgidnAX+DeDbh9xO3csjtIXdRIlDcU7eUFrKZExUg=", + "ref": "main", + "rev": "4204be45bd4348bb40a9cb65bff4cfe0b09fa442", + "revCount": 5, + "type": "git", + "url": "https://git.pub.solar/azikx/wallpapers" + }, + "original": { + "ref": "main", + "type": "git", + "url": "https://git.pub.solar/azikx/wallpapers" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728166987, + "narHash": "sha256-w6dVTguAn9zJ+7aPOhBQgDz8bn6YZ7b56cY8Kg5HJRI=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "fb9c8d665af0588bb087f97d0f673ddf0d501787", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, + "yazi": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_5", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1728738312, + "narHash": "sha256-4LckVgl1UyyU+1HePzl9Xr0qkCqtF2ZFX+NFoimm66U=", + "owner": "sxyazi", + "repo": "yazi", + "rev": "13e307eab27cdea1ddbfb97d62c24daf48ce7938", + "type": "github" + }, + "original": { + "owner": "sxyazi", + "repo": "yazi", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..d0c7e70 --- /dev/null +++ b/flake.nix @@ -0,0 +1,54 @@ +{ + outputs = { nixpkgs, home-manager, ... }@inputs: + let + nxsys = nixpkgs.lib.nixosSystem; + hmsys = home-manager.lib.homeManagerConfiguration; + in { + nixosConfigurations.karbur = nxsys { + specialArgs = { inherit inputs; }; + modules = [ ./host ]; + }; + + homeConfigurations.dragora = hmsys { + pkgs = nixpkgs.legacyPackages."x86_64-linux"; + extraSpecialArgs = { inherit inputs; }; + modules = [ ./home ]; + }; + }; + + inputs = { + # REPOSITORIES NIXPKGS + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05"; + + # ONE LINE SOFTWARE + ayugram-desktop.url = "github:kaeeraa/ayugram-desktop/release?submodules=1"; + hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + stylix.url = "github:danth/stylix"; + yazi.url = "github:sxyazi/yazi"; + + # TWO LINE SOFTWARE + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + spicetify-nix = { + url = "github:Gerg-L/spicetify-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + firefox-addons = { + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # HYPRlAND + hyprfocus = { + url = "github:pyt0xic/hyprfocus"; + inputs.hyprland.follows = "hyprland"; + }; + walls = { + url = "git+https://git.pub.solar/azikx/wallpapers?ref=main"; + flake = false; + }; + }; +} diff --git a/home/default.nix b/home/default.nix new file mode 100644 index 0000000..c447733 --- /dev/null +++ b/home/default.nix @@ -0,0 +1,14 @@ +{ + imports = [ ./window-managers ./programs ./themes ]; + + home = { + username = "dragora"; + homeDirectory = "/home/dragora"; + stateVersion = "24.05"; + }; + manual = { + html.enable = false; + json.enable = false; + manpages.enable = false; + }; +} diff --git a/home/programs/cli/btop/default.nix b/home/programs/cli/btop/default.nix new file mode 100644 index 0000000..eab50e7 --- /dev/null +++ b/home/programs/cli/btop/default.nix @@ -0,0 +1,11 @@ +{ ... }: { + programs.btop = { + enable = true; + settings = { + color_theme = "TTY"; + theme_background = true; + vim_keys = true; + rounded_corners = true; + }; + }; +} diff --git a/home/programs/cli/cava/default.nix b/home/programs/cli/cava/default.nix new file mode 100644 index 0000000..abbefbe --- /dev/null +++ b/home/programs/cli/cava/default.nix @@ -0,0 +1,22 @@ +{ config, ... }: { + programs.cava = { + enable = true; + settings = { + general = { + # framerate = 24; + # bars = 0; + # bar_width = 1; + # bar_spacing = 1; + }; + color = with config.lib.stylix.colors; { + gradient = 1; + gradient_color_1 = "'#${base0E}'"; + gradient_color_2 = "'#${base0D}'"; + gradient_color_3 = "'#${base0C}'"; + gradient_color_4 = "'#${base0B}'"; + gradient_color_5 = "'#${base0A}'"; + gradient_color_6 = "'#${base09}'"; + }; + }; + }; +} diff --git a/home/programs/cli/default.nix b/home/programs/cli/default.nix new file mode 100644 index 0000000..94c496d --- /dev/null +++ b/home/programs/cli/default.nix @@ -0,0 +1,16 @@ +{ + imports = [ + ./pkgs.nix + + ./eza + ./fzf + ./fastfetch + ./zoxide + ./cava + ./btop + ./micro + ./git + ./helix + ./yazi + ]; +} diff --git a/home/programs/cli/eza/default.nix b/home/programs/cli/eza/default.nix new file mode 100644 index 0000000..05421a7 --- /dev/null +++ b/home/programs/cli/eza/default.nix @@ -0,0 +1,7 @@ +{ ... }: { + programs.eza = { + enable = true; + icons = true; + extraOptions = [ "--group-directories-first" ]; + }; +} diff --git a/home/programs/cli/fastfetch/default.nix b/home/programs/cli/fastfetch/default.nix new file mode 100644 index 0000000..9e9b153 --- /dev/null +++ b/home/programs/cli/fastfetch/default.nix @@ -0,0 +1,67 @@ +{ ... }: { + programs.fastfetch = { + enable = true; + settings = { + logo = { + type = "builtin"; + source = "nixos_small"; + padding = { + left = 1; + right = 2; + top = 1; + }; + color = { + "1" = "cyan"; + "2" = "blue"; + }; + }; + display = { + separator = ": "; + color = { + keys = "cyan"; + title = "blue"; + }; + size = { + ndigits = 2; + maxPrefix = "GB"; + }; + }; + modules = [ + { + type = "title"; + color = { + user = "cyan"; + at = "cyan"; + host = "cyan"; + }; + } + { + type = "uptime"; + key = "UPT "; + format = "{2} hours, {3} mins"; + } + { + type = "packages"; + key = "PKG "; + } + { + type = "shell"; + key = "SHL "; + format = "{6} {4}"; + } + { + type = "wm"; + key = "DWM "; + format = "{2} / {3}"; + } + { + type = "memory"; + key = "MEM "; + format = "{} / {}"; + } + { type = "break"; } + { type = "colors"; } + ]; + }; + }; +} diff --git a/home/programs/cli/fzf/default.nix b/home/programs/cli/fzf/default.nix new file mode 100644 index 0000000..92f4abb --- /dev/null +++ b/home/programs/cli/fzf/default.nix @@ -0,0 +1,8 @@ +{ ... }: { + programs.fzf = { + enable = true; + # defaultOptions = [ + # "--margin 1" + # ]; + }; +} diff --git a/home/programs/cli/git/default.nix b/home/programs/cli/git/default.nix new file mode 100644 index 0000000..f736411 --- /dev/null +++ b/home/programs/cli/git/default.nix @@ -0,0 +1,12 @@ +{ ... }: { + programs.git = { + enable = true; + userName = "azikx"; + userEmail = "irongidra@gmail.com"; + extraConfig = { + color.ui = true; + init.defaultBranch = "main"; + safe.directory = "/home/dragora/.flake"; + }; + }; +} diff --git a/home/programs/cli/helix/default.nix b/home/programs/cli/helix/default.nix new file mode 100644 index 0000000..8019260 --- /dev/null +++ b/home/programs/cli/helix/default.nix @@ -0,0 +1,54 @@ +{ ... }: { + imports = [ ./theme.nix ./languages.nix ]; + programs.helix = { + enable = true; + defaultEditor = true; + settings = { + theme = "themo"; + editor = { + line-number = "relative"; + mouse = true; + cursorline = true; + auto-completion = true; + completion-replace = true; + auto-info = true; + auto-pairs = true; + true-color = true; + color-modes = true; + bufferline = "multiple"; + indent-guides = { + render = true; + character = "»"; + }; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + soft-wrap = { + enable = true; + max-wrap = 25; + wrap-indicator = "┆ "; + }; + statusline = { + left = [ "mode" "spinner" "file-name" "read-only-indicator" ]; + center = [ ]; + right = [ + "file-type" + "separator" + "spacer" + "position-percentage" + "position" + "separator" + "total-line-numbers" + ]; + separator = "|"; + mode.normal = "NORMAL"; + mode.insert = "INSERT"; + mode.select = "SELECT"; + }; + file-picker = { hidden = false; }; + }; + }; + }; +} diff --git a/home/programs/cli/helix/languages.nix b/home/programs/cli/helix/languages.nix new file mode 100644 index 0000000..d380f4d --- /dev/null +++ b/home/programs/cli/helix/languages.nix @@ -0,0 +1,34 @@ +{ pkgs, ... }: { + programs.helix.languages = { + language = [{ + name = "nix"; + language-servers = [ "nixd" "nil" ]; + indent = { + tab-width = 2; + unit = " "; + }; + auto-format = true; + formatter.command = "${pkgs.nixfmt-classic}/bin/nixfmt"; + }]; + language-server = { nixd = { command = "nixd"; }; }; + }; + + # LSP PACKGAES + home.packages = with pkgs; [ + # NIX LSP + nil + nixd + + # MARKDOWN LSP + marksman + markdown-oxide + + # OTHER LSP + yaml-language-server + vscode-langservers-extracted + rust-analyzer + python312Packages.python-lsp-server + lua-language-server + taplo + ]; +} diff --git a/home/programs/cli/helix/theme.nix b/home/programs/cli/helix/theme.nix new file mode 100644 index 0000000..a5adcb5 --- /dev/null +++ b/home/programs/cli/helix/theme.nix @@ -0,0 +1,171 @@ +{ config, lib, ... }: { + programs.helix.themes = with config.lib.stylix.colors; + lib.mkForce { + themo = let + BASE00 = "#${base00}"; + BASE01 = "#${base01}"; + BASE02 = "#${base02}"; + BASE03 = "#${base03}"; + BASE04 = "#${base04}"; + BASE05 = "#${base05}"; + BASE06 = "#${base06}"; + BASE07 = "#${base07}"; + BASE08 = "#${base08}"; + BASE09 = "#${base09}"; + BASE0A = "#${base0A}"; + BASE0B = "#${base0B}"; + BASE0C = "#${base0C}"; + BASE0D = "#${base0D}"; + BASE0E = "#${base0E}"; + BASE0F = "#${base0F}"; + in { + "attributes" = BASE09; + "comment" = { + fg = BASE03; + modifiers = [ "italic" ]; + }; + "constant" = BASE09; + "constant.character.escape" = BASE0C; + "constant.numeric" = BASE09; + "constructor" = BASE0D; + "debug" = BASE03; + "diagnostic" = { modifiers = [ "underlined" ]; }; + "diff.delta" = BASE09; + "diff.minus" = BASE08; + "diff.plus" = BASE0B; + "error" = BASE08; + "function" = BASE0D; + "hint" = BASE03; + "info" = BASE0D; + "keyword" = BASE0E; + "label" = BASE0E; + "namespace" = BASE0E; + "operator" = BASE05; + "special" = BASE0D; + "string" = BASE0B; + "type" = BASE0A; + "variable" = BASE08; + "variable.other.member" = BASE0B; + "warning" = BASE09; + + "markup.bold" = { + fg = BASE0A; + modifiers = [ "bold" ]; + }; + "markup.heading" = BASE0D; + "markup.italic" = { + fg = BASE0E; + modifiers = [ "italic" ]; + }; + "markup.link.text" = BASE08; + "markup.link.url" = { + fg = BASE09; + modifiers = [ "underlined" "italic" ]; + }; + "markup.list" = BASE08; + "markup.quote" = BASE0C; + "markup.raw" = BASE0B; + "markup.strikethrough" = { modifiers = [ "crossed_out" ]; }; + + "diagnostic.hint" = { underline = { style = "curl"; }; }; + "diagnostic.info" = { underline = { style = "curl"; }; }; + "diagnostic.warning" = { underline = { style = "curl"; }; }; + "diagnostic.error" = { underline = { style = "curl"; }; }; + + "ui.background" = { bg = BASE00; }; + "ui.bufferline.active" = { + fg = BASE00; + bg = BASE0E; + modifiers = [ "bold" ]; + }; + "ui.bufferline" = { + fg = BASE04; + bg = BASE00; + }; + "ui.cursor" = { + fg = BASE0A; + modifiers = [ "reversed" ]; + }; + "ui.cursor.insert" = { + fg = BASE0A; + modifiers = [ "reversed" ]; + }; + "ui.cursorline.primary" = { + fg = BASE05; + bg = BASE01; + }; + "ui.cursor.match" = { + fg = BASE0A; + modifiers = [ "reversed" ]; + }; + "ui.cursor.select" = { + fg = BASE0A; + modifiers = [ "reversed" ]; + }; + "ui.gutter" = { bg = BASE00; }; + "ui.help" = { + fg = BASE06; + bg = BASE01; + }; + "ui.linenr" = { + fg = BASE03; + bg = BASE00; + }; + "ui.linenr.selected" = { + fg = BASE04; + bg = BASE01; + modifiers = [ "bold" ]; + }; + "ui.menu" = { + fg = BASE05; + bg = BASE01; + }; + "ui.menu.scroll" = { + fg = BASE03; + bg = BASE01; + }; + "ui.menu.selected" = { + fg = BASE01; + bg = BASE04; + }; + "ui.popup" = { bg = BASE01; }; + "ui.selection" = { bg = BASE02; }; + "ui.selection.primary" = { bg = BASE02; }; + "ui.statusline" = { + fg = BASE04; + bg = BASE01; + }; + "ui.statusline.inactive" = { + bg = BASE01; + fg = BASE03; + modifiers = [ "bold" ]; + }; + "ui.statusline.insert" = { + fg = BASE00; + bg = BASE0B; + modifiers = [ "bold" ]; + }; + "ui.statusline.normal" = { + fg = BASE00; + bg = BASE0D; + modifiers = [ "bold" ]; + }; + "ui.statusline.select" = { + fg = BASE00; + bg = BASE0F; + modifiers = [ "bold" ]; + }; + "ui.text" = BASE05; + "ui.text.focus" = BASE05; + "ui.virtual.indent-guide" = { fg = BASE03; }; + "ui.virtual.wrap" = { fg = BASE03; }; + "ui.virtual.inlay-hint" = { fg = BASE03; }; + "ui.virtual.ruler" = { bg = BASE01; }; + "ui.virtual.jump-label" = { + fg = BASE0A; + modifiers = [ "bold" ]; + }; + "ui.window" = { bg = BASE01; }; + }; + }; +} diff --git a/home/programs/cli/micro/default.nix b/home/programs/cli/micro/default.nix new file mode 100644 index 0000000..ead59d9 --- /dev/null +++ b/home/programs/cli/micro/default.nix @@ -0,0 +1,65 @@ +{ pkgs, ... }: { + programs.micro = { + enable = true; + settings = { + clipboard = "terminal"; + colorscheme = "base16"; + autosu = true; + mkparents = true; + scrollbar = true; + softwrap = true; + status = false; + statusline = false; + statusformatl = "q"; + savehistory = true; + saveundo = true; + }; + }; + xdg.configFile."micro/colorschemes/base16.micro".text = '' + color-link comment "bold white" + color-link constant "cyan" + color-link constant.bool "bold cyan" + color-link constant.bool.true "bold green" + color-link constant.bool.false "bold red" + color-link constant.string "yellow" + color-link constant.string.url "underline blue, white" + #color-link constant.number "constant" + color-link constant.specialChar "bold magenta" + color-link identifier "bold red" + color-link identifier.macro "bold red" + color-link identifier.var "bold blue" + #color-link identifier.class "bold green" + color-link identifier.class "bold white" + color-link statement "bold yellow" + color-link symbol "red" + color-link symbol.brackets "blue" + color-link symbol.tag "bold blue" + color-link symbol.tag.extended "bold green" + color-link preproc "bold cyan" + color-link type "green" + color-link type.keyword "bold green" + color-link special "magenta" + color-link ignore "default" + color-link error "bold ,brightred" + color-link todo "underline black,brightyellow" + color-link hlsearch "white,darkgreen" + color-link indent-char ",brightgreen" + color-link line-number "white" + color-link line-number.scrollbar "green" + color-link statusline "white,blue" + color-link tabbar "white,blue" + color-link current-line-number "red" + color-link current-line-number.scroller "red" + color-link diff-added "green" + color-link diff-modified "yellow" + color-link diff-deleted "red" + color-link gutter-error ",red" + color-link gutter-warning "red" + color-link color-column "cyan" + color-link underlined.url "underline blue, white" + color-link divider "blue" + color-link match-brace "black,cyan" + color-link tab-error "brightred" + color-link trailingws "brightred" + ''; +} diff --git a/home/programs/cli/pkgs.nix b/home/programs/cli/pkgs.nix new file mode 100644 index 0000000..d0291e0 --- /dev/null +++ b/home/programs/cli/pkgs.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + bat + fzf + + openvpn + nix-tree + nix-prefetch-github + + nvtopPackages.amd + btop + + bluetuith + tenki + lutgen + pulsemixer + + trashy + fuc + zip + atool + ]; +} diff --git a/home/programs/cli/yazi/binds.nix b/home/programs/cli/yazi/binds.nix new file mode 100644 index 0000000..e5e48e0 --- /dev/null +++ b/home/programs/cli/yazi/binds.nix @@ -0,0 +1,177 @@ +{ ... }: { + programs.yazi.keymap = { + manager = { + prepend_keymap = [ + # MAIN + { + on = "q"; + run = "close"; + desc = "Close yazi"; + } + { + on = "l"; + run = "plugin --sync smart-enter"; + desc = "Enter/open"; + } + { + on = "!"; + run = "shell '$SHELL' --block --confirm"; + desc = "Open shell"; + } + { + on = ""; + run = "close"; + desc = "Escape"; + } + { + on = ""; + run = "plugin --sync smart-enter"; + desc = "Enter/open"; + } + { + on = ""; + run = "plugin --sync smart-enter"; + desc = "Enter/open"; + } + + # VISUAL + { + on = [ "v" "m" ]; + run = "plugin --sync max-preview"; + desc = "Maximize preview"; + } + { + on = [ "v" "p" ]; + run = "plugin --sync hide-preview"; + desc = "Hide preview"; + } + { + on = [ "v" "v" ]; + run = "visual_mode"; + desc = "Visual/select mode"; + } + { + on = [ "v" "V" ]; + run = "visual_mode --unset"; + desc = "Visual unset"; + } + { + on = [ "v" "a" ]; + run = "select_all --state=true"; + desc = "Select all"; + } + { + on = [ "v" "r" ]; + run = "select_all --state=none"; + desc = "Unselect all"; + } + { + on = [ "v" "h" ]; + run = "hidden toggle"; + desc = "Hidden toggle"; + } + + # DELETION + { + on = [ "d" "d" ]; + run = "remove"; + desc = "Trash file"; + } + { + on = [ "d" "D" ]; + run = "remove --permanently"; + desc = "Delete"; + } + { + on = [ "D" "d" ]; + run = "remove --force"; + desc = "Trash (force)"; + } + { + on = [ "D" "D" ]; + run = "remove --permanently --force"; + desc = "Delete (force)"; + } + + # CREATE + { + on = [ "a" "f" ]; + run = "create"; + desc = "Create file"; + } + { + on = [ "a" "d" ]; + run = "create --dir"; + desc = "Create directory"; + } + { + on = [ "a" "n" ]; + run = "create default.nix"; + desc = "Create default.nix"; + } + + # RENAME + { + on = [ "r" "R" ]; + run = "rename"; + desc = "Rename"; + } + { + on = [ "r" "r" ]; + run = "rename --empty=before_ext"; + desc = "Rename (namefile)"; + } + { + on = [ "r" "n" ]; + run = "rename --empty=stem"; + desc = "Rename (delete namefile)"; + } + { + on = [ "r" "e" ]; + run = "rename --empty=ext"; + desc = "Rename (extension)"; + } + { + on = [ "r" "a" ]; + run = "rename --empty=all"; + desc = "Rename (delete all)"; + } + + # NAVIGATE + { + on = [ "c" "d" ]; + run = "cd --interactive"; + desc = "Change directory"; + } + { + on = [ "g" "f" ]; + run = "cd ~/.flake"; + desc = "CD to flake"; + } + { + on = [ "g" "H" ]; + run = "cd ~/.flake/host"; + desc = "CD to flake_host"; + } + { + on = [ "g" "h" ]; + run = "cd ~/.flake/home"; + desc = "CD to flake_home"; + } + ]; + }; + completion = { + prepend_keymap = [ + { + on = ""; + run = "arrow 1"; + } + { + on = ""; + run = "arrow -1"; + } + # { on = "C-l"; run = "lose --submit" "close_input --submit" ; } + ]; + }; + }; +} diff --git a/home/programs/cli/yazi/default.nix b/home/programs/cli/yazi/default.nix new file mode 100644 index 0000000..dba7249 --- /dev/null +++ b/home/programs/cli/yazi/default.nix @@ -0,0 +1,101 @@ +{ pkgs, inputs, ... }: +let ypkg = inputs.yazi.packages.${pkgs.system}.default; +in { + imports = [ ./binds.nix ./theme.nix ./lua.nix ./plugins.nix ./starship.nix ]; + programs.yazi = { + enable = true; + package = ypkg; + settings = { + manager = { + ratio = [ 1 4 4 ]; + show_hidden = false; + sort_by = "natural"; + sort_dir_first = true; + sort_reverse = false; + linemode = "size"; + show_symlink = true; + }; + preview = { + wrap = "yes"; + tab_size = 1; + image_filter = "lanczos3"; + image_quality = 90; + max_height = 1000; + max_width = 1000; + }; + opener = { + edit = [{ + run = "hx $@"; + block = true; + }]; + play = [{ + run = "mpv $@"; + orphan = true; + }]; + open = [{ run = "xdg-open $@"; }]; + }; + open = { + rules = [ + { + mime = "text/*"; + use = "edit"; + } + { + mime = "video/*"; + use = "play"; + } + { + mime = "audio/*"; + use = "play"; + } + { + mime = "image/*"; + use = "open"; + } + ]; + }; + plugin = { + prepend_previewers = [ + { + mime = "application/*zip"; + run = "ouch"; + } + { + mime = "application/x-tar"; + run = "ouch"; + } + { + mime = "application/x-bzip2"; + run = "ouch"; + } + { + mime = "application/x-7z-compressed"; + run = "ouch"; + } + { + mime = "application/x-rar"; + run = "ouch"; + } + { + mime = "application/x-xz"; + run = "ouch"; + } + + { + name = "*.md"; + run = "glow"; + } + ]; + }; + }; + }; + home.packages = with pkgs; [ + ffmpegthumbnailer + p7zip + jq + poppler_min + imagemagick + glow + ouch + ]; +} diff --git a/home/programs/cli/yazi/lua.nix b/home/programs/cli/yazi/lua.nix new file mode 100644 index 0000000..ad217f6 --- /dev/null +++ b/home/programs/cli/yazi/lua.nix @@ -0,0 +1,100 @@ +{ ... }: { + programs.yazi.initLua = '' + require("no-status"):setup() + -- require("starship"):setup() + require("starship"):setup({ config_file = "/home/megamozg/.config/yazi/star.toml" }) + + -- require("yatline"):setup({ + -- section_separator = { open = "", close = "" }, + -- part_separator = { open = "", close = "" }, + -- inverse_separator = { open = "", close = "" }, + -- + -- style_a = { + -- fg = "black", + -- bg_mode = { + -- normal = "cyan", + -- select = "yellow", + -- un_set = "blue" + -- } + -- }, + -- style_b = { bg = "black", fg = "white" }, + -- style_c = { bg = "black", fg = "white" }, + -- + -- permissions_t_fg = "green", + -- permissions_r_fg = "yellow", + -- permissions_w_fg = "red", + -- permissions_x_fg = "cyan", + -- permissions_s_fg = "darkgray", + -- + -- tab_width = 20, + -- tab_use_inverse = false, + -- + -- selected = { icon = "󰻭", fg = "yellow" }, + -- copied = { icon = "", fg = "green" }, + -- cut = { icon = "", fg = "red" }, + -- + -- total = { icon = "󰮍", fg = "yellow" }, + -- succ = { icon = "", fg = "green" }, + -- fail = { icon = "", fg = "red" }, + -- found = { icon = "󰮕", fg = "blue" }, + -- processed = { icon = "󰐍", fg = "green" }, + -- + -- show_background = true, + -- + -- display_header_line = true, + -- display_status_line = true, + -- + -- header_line = { + -- left = { + -- section_a = { -- EDGE LEFT + -- -- {type = "line", custom = false, name = "tabs", params = {"left"}}, + -- {type = "string", custom = false, name = "tab_path"}, + -- }, + -- section_b = { -- LEFT CENTER + -- }, + -- section_c = { -- RIGHT LEFT + -- } + -- }, + -- right = { + -- section_a = { -- EDGE RIGHT + -- -- {type = "line", custom = false, name = "tabs", params = {"right"}}, + -- }, + -- section_b = { -- CENTER RIGHT + -- }, + -- section_c = { -- LEFT RIGHT + -- } + -- } + -- }, + -- + -- status_line = { + -- left = { + -- section_a = { + -- }, + -- section_b = { + -- }, + -- section_c = { + -- } + -- }, + -- right = { + -- section_a = { + -- }, + -- section_b = { + -- }, + -- section_c = { + -- } + -- } + -- }, + -- }) + + require("full-border"):setup { + type = ui.Border.ROUNDED, + } + + Header:children_add(function() + if ya.target_family() ~= "unix" then + return ui.Line {} + end + return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ": "):fg("red") + end, 500, Header.LEFT) + ''; +} diff --git a/home/programs/cli/yazi/plugins.nix b/home/programs/cli/yazi/plugins.nix new file mode 100644 index 0000000..98816a5 --- /dev/null +++ b/home/programs/cli/yazi/plugins.nix @@ -0,0 +1,76 @@ +{ pkgs, ... }: +let + yazi-plugins = pkgs.fetchFromGitHub { + owner = "yazi-rs"; + repo = "plugins"; + rev = "74a837c6eafba59e22dc3d8d8ec630934580c70c"; + hash = "sha256-h+CoRLRyC+fJogfAoOw7twXSRkUotbgnS3gBFvlxNlw="; + }; +in { + # PLUGINS FROM REPO + programs.yazi.plugins = { + # BUILTINED + chmod = "${yazi-plugins}/chmod.yazi"; + max-preview = "${yazi-plugins}/max-preview.yazi"; + no-status = "${yazi-plugins}/no-status.yazi"; + hide-preview = "${yazi-plugins}/hide-preview.yazi"; + full-border = "${yazi-plugins}/full-border.yazi"; + + # FETCHED + ouch = pkgs.fetchFromGitHub { + owner = "ndtoan96"; + repo = "ouch.yazi"; + rev = "251da6930ca8b7ee0384810086c3bf644caede3e"; + hash = "sha256-yLt9aY6hUIOdBI5bMdCs7VYFJGyD3WIkmPxvWKNCskA="; + }; + glow = pkgs.fetchFromGitHub { + owner = "Reledia"; + repo = "glow.yazi"; + rev = "4e016fa2357e5e7e9b1a4881e1492d73a0a2f2cc"; + hash = "sha256-d73C8s8p85c0xfq8Nfzlnp83JUakMPbviQDFCX0G+qE="; + }; + ffmpeg = pkgs.fetchFromGitHub { + owner = "Tyarel8"; + repo = "video-ffmpeg.yazi"; + rev = "fe26a18f9b32880e10b686df5c4559d9af2bce6b"; + hash = "sha256-PIsetF42mlxDv7hEBgjt4FdryDhWTAF/o0Z3Z1G8HJE="; + }; + relative = pkgs.fetchFromGitHub { + owner = "dedukun"; + repo = "relative-motions.yazi"; + rev = "89d0cb9c84a7bba98d2e7ca4bac706d2458d0c06"; + hash = "sha256-qtjAgH+NS4YFVIwq+x2sC90y4vDSXNI8pGXIZ3FuQMU="; + }; + enter = pkgs.fetchFromGitHub { + owner = "ourongxing"; + repo = "fast-enter.yazi"; + rev = "dd498123cb0696d7fa50b32d2268fb8c2084a4a4"; + hash = "sha256-jjluqFboFXV4yqBMvW7WhO61Urn2FQ/O31PqlaCxB2c="; + }; + starship = pkgs.fetchFromGitHub { + owner = "Rolv-Apneseth"; + repo = "starship.yazi"; + rev = "77a65f5a367f833ad5e6687261494044006de9c3"; + hash = "sha256-sAB0958lLNqqwkpucRsUqLHFV/PJYoJL2lHFtfHDZF8="; + }; + yatline = pkgs.fetchFromGitHub { + owner = "imsi32"; + repo = "yatline.yazi"; + rev = "7b56434864d6a0b5d547fed2339b99346a018522"; + hash = "sha256-4qxBAXFyPBQhSU24xL7fzhgM5e8Cq7BigEp4GPxSjD4="; + }; + }; + + # CUSTOM PLUGINS + xdg.configFile = { + # SMART ENTER + "yazi/plugins/smart-enter.yazi/init.lua".text = '' + return { + entry = function() + local h = cx.active.current.hovered + ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true }) + end, + } + ''; + }; +} diff --git a/home/programs/cli/yazi/starship.nix b/home/programs/cli/yazi/starship.nix new file mode 100644 index 0000000..292761b --- /dev/null +++ b/home/programs/cli/yazi/starship.nix @@ -0,0 +1,42 @@ +{ ... }: { + xdg.configFile = { + "yazi/star.toml".text = '' + # format = """ + # $hostname\ + # $username\ + # $directory\ + # """ + + format = """ + $directory\ + $git_branch\ + $git_status\ + $git_metrics\ + """ + + [directory] + style = "bold fg:green" + format = "in [$path ]($style)" + truncation_length = 3 + truncation_symbol = "…/" + read_only = '[󰌾]' + read_only_style = 'bold fg:red' + + [git_branch] + style = "bold fg:yellow" + + [git_status] + style = "bold fg:red" + + [git_metrics] + added_style = "bold fg:blue" + deleted_style = "bold fg:red" + + [directory.substitutions] + "Documents" = "󰈙 " + "Downloads" = " " + "Music" = " " + "Pictures" = " " + ''; + }; +} diff --git a/home/programs/cli/yazi/theme.nix b/home/programs/cli/yazi/theme.nix new file mode 100644 index 0000000..e6f3b82 --- /dev/null +++ b/home/programs/cli/yazi/theme.nix @@ -0,0 +1,2979 @@ +{ lib, config, ... }: { + programs.yazi.theme = with config.lib.stylix.colors; + lib.mkForce { + manager = { + cwd = { fg = "#${base0B}"; }; + + hovered = { + fg = "#${base00}"; + bg = "#${base0D}"; + bold = true; + }; + preview_hovered = { underline = false; }; + + tab_active = { + fg = "#${base01}"; + bg = "#${base0E}"; + }; + tab_inactive = { + fg = "#${base06}"; + bg = "#${base00}"; + }; + tab_width = 1; + + border_style = { fg = "#${base00}"; }; + + marker_selected = { + bg = "#${base0C}"; + fg = "#${base00}"; + bold = true; + }; + marker_copied = { + bg = "#${base0B}"; + fg = "#${base00}"; + bold = true; + }; + marker_cut = { + bg = "#${base0A}"; + fg = "#${base00}"; + bold = true; + }; + }; + which = { + cols = 3; + mask = { bg = "#${base01}"; }; + }; + filetype = { + rules = [ + { + mime = "{audio,video}/*"; + fg = "#${base0C}"; + } + { + name = "*"; + fg = "#${base06}"; + } + { + name = "*/"; + fg = "#${base06}"; + } + ]; + }; + icon = { + exts = [ + { + name = "3gp"; + text = ""; + fg = "#${base06}"; + } + { + name = "3mf"; + text = "󰆧"; + fg = "#${base06}"; + } + { + name = "7z"; + text = ""; + fg = "#${base06}"; + } + { + name = "a"; + text = ""; + fg = "#${base06}"; + } + { + name = "aac"; + text = ""; + fg = "#${base06}"; + } + { + name = "ai"; + text = ""; + fg = "#${base06}"; + } + { + name = "aif"; + text = ""; + fg = "#${base06}"; + } + { + name = "aiff"; + text = ""; + fg = "#${base06}"; + } + { + name = "android"; + text = ""; + fg = "#${base06}"; + } + { + name = "ape"; + text = ""; + fg = "#${base06}"; + } + { + name = "apk"; + text = ""; + fg = "#${base06}"; + } + { + name = "app"; + text = ""; + fg = "#${base06}"; + } + { + name = "applescript"; + text = ""; + fg = "#${base06}"; + } + { + name = "asc"; + text = "󰦝"; + fg = "#${base06}"; + } + { + name = "ass"; + text = "󰨖"; + fg = "#${base06}"; + } + { + name = "astro"; + text = ""; + fg = "#${base06}"; + } + { + name = "awk"; + text = ""; + fg = "#${base06}"; + } + { + name = "azcli"; + text = ""; + fg = "#${base06}"; + } + { + name = "bak"; + text = "󰁯"; + fg = "#${base06}"; + } + { + name = "bash"; + text = ""; + fg = "#${base06}"; + } + { + name = "bat"; + text = ""; + fg = "#${base06}"; + } + { + name = "bazel"; + text = ""; + fg = "#${base06}"; + } + { + name = "bib"; + text = "󱉟"; + fg = "#${base06}"; + } + { + name = "bicep"; + text = ""; + fg = "#${base06}"; + } + { + name = "bicepparam"; + text = ""; + fg = "#${base06}"; + } + { + name = "bin"; + text = ""; + fg = "#${base06}"; + } + { + name = "blade.php"; + text = ""; + fg = "#${base06}"; + } + { + name = "blend"; + text = "󰂫"; + fg = "#${base06}"; + } + { + name = "blp"; + text = "󰺾"; + fg = "#${base06}"; + } + { + name = "bmp"; + text = ""; + fg = "#${base06}"; + } + { + name = "brep"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "bz"; + text = ""; + fg = "#${base06}"; + } + { + name = "bz2"; + text = ""; + fg = "#${base06}"; + } + { + name = "bz3"; + text = ""; + fg = "#${base06}"; + } + { + name = "bzl"; + text = ""; + fg = "#${base06}"; + } + { + name = "c"; + text = ""; + fg = "#${base06}"; + } + { + name = "c++"; + text = ""; + fg = "#${base06}"; + } + { + name = "cache"; + text = ""; + fg = "#${base06}"; + } + { + name = "cast"; + text = ""; + fg = "#${base06}"; + } + { + name = "cbl"; + text = "⚙"; + fg = "#${base06}"; + } + { + name = "cc"; + text = ""; + fg = "#${base06}"; + } + { + name = "ccm"; + text = ""; + fg = "#${base06}"; + } + { + name = "cfg"; + text = ""; + fg = "#${base06}"; + } + { + name = "cjs"; + text = ""; + fg = "#${base06}"; + } + { + name = "clj"; + text = ""; + fg = "#${base06}"; + } + { + name = "cljc"; + text = ""; + fg = "#${base06}"; + } + { + name = "cljd"; + text = ""; + fg = "#${base06}"; + } + { + name = "cljs"; + text = ""; + fg = "#${base06}"; + } + { + name = "cmake"; + text = ""; + fg = "#${base06}"; + } + { + name = "cob"; + text = "⚙"; + fg = "#${base06}"; + } + { + name = "cobol"; + text = "⚙"; + fg = "#${base06}"; + } + { + name = "coffee"; + text = ""; + fg = "#${base06}"; + } + { + name = "conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "config.ru"; + text = ""; + fg = "#${base06}"; + } + { + name = "cp"; + text = ""; + fg = "#${base06}"; + } + { + name = "cpp"; + text = ""; + fg = "#${base06}"; + } + { + name = "cppm"; + text = ""; + fg = "#${base06}"; + } + { + name = "cpy"; + text = "⚙"; + fg = "#${base06}"; + } + { + name = "cr"; + text = ""; + fg = "#${base06}"; + } + { + name = "crdownload"; + text = ""; + fg = "#${base06}"; + } + { + name = "cs"; + text = "󰌛"; + fg = "#${base06}"; + } + { + name = "csh"; + text = ""; + fg = "#${base06}"; + } + { + name = "cshtml"; + text = "󱦗"; + fg = "#${base06}"; + } + { + name = "cson"; + text = ""; + fg = "#${base06}"; + } + { + name = "csproj"; + text = "󰪮"; + fg = "#${base06}"; + } + { + name = "css"; + text = ""; + fg = "#${base06}"; + } + { + name = "csv"; + text = ""; + fg = "#${base06}"; + } + { + name = "cts"; + text = ""; + fg = "#${base06}"; + } + { + name = "cu"; + text = ""; + fg = "#${base06}"; + } + { + name = "cue"; + text = "󰲹"; + fg = "#${base06}"; + } + { + name = "cuh"; + text = ""; + fg = "#${base06}"; + } + { + name = "cxx"; + text = ""; + fg = "#${base06}"; + } + { + name = "cxxm"; + text = ""; + fg = "#${base06}"; + } + { + name = "d"; + text = ""; + fg = "#${base06}"; + } + { + name = "d.ts"; + text = ""; + fg = "#${base06}"; + } + { + name = "dart"; + text = ""; + fg = "#${base06}"; + } + { + name = "db"; + text = ""; + fg = "#${base06}"; + } + { + name = "dconf"; + text = ""; + fg = "#${base06}"; + } + { + name = "desktop"; + text = ""; + fg = "#${base06}"; + } + { + name = "diff"; + text = ""; + fg = "#${base06}"; + } + { + name = "dll"; + text = ""; + fg = "#${base06}"; + } + { + name = "doc"; + text = "󰈬"; + fg = "#${base06}"; + } + { + name = "Dockerfile"; + text = "󰡨"; + fg = "#${base06}"; + } + { + name = "docx"; + text = "󰈬"; + fg = "#${base06}"; + } + { + name = "dot"; + text = "󱁉"; + fg = "#${base06}"; + } + { + name = "download"; + text = ""; + fg = "#${base06}"; + } + { + name = "drl"; + text = ""; + fg = "#${base06}"; + } + { + name = "dropbox"; + text = ""; + fg = "#${base06}"; + } + { + name = "dump"; + text = ""; + fg = "#${base06}"; + } + { + name = "dwg"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "dxf"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "ebook"; + text = ""; + fg = "#${base06}"; + } + { + name = "edn"; + text = ""; + fg = "#${base06}"; + } + { + name = "eex"; + text = ""; + fg = "#${base06}"; + } + { + name = "ejs"; + text = ""; + fg = "#${base06}"; + } + { + name = "el"; + text = ""; + fg = "#${base06}"; + } + { + name = "elc"; + text = ""; + fg = "#${base06}"; + } + { + name = "elf"; + text = ""; + fg = "#${base06}"; + } + { + name = "elm"; + text = ""; + fg = "#${base06}"; + } + { + name = "eln"; + text = ""; + fg = "#${base06}"; + } + { + name = "env"; + text = ""; + fg = "#${base06}"; + } + { + name = "eot"; + text = ""; + fg = "#${base06}"; + } + { + name = "epp"; + text = ""; + fg = "#${base06}"; + } + { + name = "epub"; + text = ""; + fg = "#${base06}"; + } + { + name = "erb"; + text = ""; + fg = "#${base06}"; + } + { + name = "erl"; + text = ""; + fg = "#${base06}"; + } + { + name = "ex"; + text = ""; + fg = "#${base06}"; + } + { + name = "exe"; + text = ""; + fg = "#${base06}"; + } + { + name = "exs"; + text = ""; + fg = "#${base06}"; + } + { + name = "f#"; + text = ""; + fg = "#${base06}"; + } + { + name = "f3d"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "f90"; + text = "󱈚"; + fg = "#${base06}"; + } + { + name = "fbx"; + text = "󰆧"; + fg = "#${base06}"; + } + { + name = "fcbak"; + text = ""; + fg = "#${base06}"; + } + { + name = "fcmacro"; + text = ""; + fg = "#${base06}"; + } + { + name = "fcmat"; + text = ""; + fg = "#${base06}"; + } + { + name = "fcparam"; + text = ""; + fg = "#${base06}"; + } + { + name = "fcscript"; + text = ""; + fg = "#${base06}"; + } + { + name = "fcstd"; + text = ""; + fg = "#${base06}"; + } + { + name = "fcstd1"; + text = ""; + fg = "#${base06}"; + } + { + name = "fctb"; + text = ""; + fg = "#${base06}"; + } + { + name = "fctl"; + text = ""; + fg = "#${base06}"; + } + { + name = "fdmdownload"; + text = ""; + fg = "#${base06}"; + } + { + name = "fish"; + text = ""; + fg = "#${base06}"; + } + { + name = "flac"; + text = ""; + fg = "#${base06}"; + } + { + name = "flc"; + text = ""; + fg = "#${base06}"; + } + { + name = "flf"; + text = ""; + fg = "#${base06}"; + } + { + name = "fnl"; + text = ""; + fg = "#${base06}"; + } + { + name = "fs"; + text = ""; + fg = "#${base06}"; + } + { + name = "fsi"; + text = ""; + fg = "#${base06}"; + } + { + name = "fsscript"; + text = ""; + fg = "#${base06}"; + } + { + name = "fsx"; + text = ""; + fg = "#${base06}"; + } + { + name = "gcode"; + text = "󰐫"; + fg = "#${base06}"; + } + { + name = "gd"; + text = ""; + fg = "#${base06}"; + } + { + name = "gemspec"; + text = ""; + fg = "#${base06}"; + } + { + name = "gif"; + text = ""; + fg = "#${base06}"; + } + { + name = "git"; + text = ""; + fg = "#${base06}"; + } + { + name = "glb"; + text = ""; + fg = "#${base06}"; + } + { + name = "gnumakefile"; + text = ""; + fg = "#${base06}"; + } + { + name = "go"; + text = ""; + fg = "#${base06}"; + } + { + name = "godot"; + text = ""; + fg = "#${base06}"; + } + { + name = "gql"; + text = ""; + fg = "#${base06}"; + } + { + name = "graphql"; + text = ""; + fg = "#${base06}"; + } + { + name = "gresource"; + text = ""; + fg = "#${base06}"; + } + { + name = "gv"; + text = "󱁉"; + fg = "#${base06}"; + } + { + name = "gz"; + text = ""; + fg = "#${base06}"; + } + { + name = "h"; + text = ""; + fg = "#${base06}"; + } + { + name = "haml"; + text = ""; + fg = "#${base06}"; + } + { + name = "hbs"; + text = ""; + fg = "#${base06}"; + } + { + name = "heex"; + text = ""; + fg = "#${base06}"; + } + { + name = "hex"; + text = ""; + fg = "#${base06}"; + } + { + name = "hh"; + text = ""; + fg = "#${base06}"; + } + { + name = "hpp"; + text = ""; + fg = "#${base06}"; + } + { + name = "hrl"; + text = ""; + fg = "#${base06}"; + } + { + name = "hs"; + text = ""; + fg = "#${base06}"; + } + { + name = "htm"; + text = ""; + fg = "#${base06}"; + } + { + name = "html"; + text = ""; + fg = "#${base06}"; + } + { + name = "huff"; + text = "󰡘"; + fg = "#${base06}"; + } + { + name = "hurl"; + text = ""; + fg = "#${base06}"; + } + { + name = "hx"; + text = ""; + fg = "#${base06}"; + } + { + name = "hxx"; + text = ""; + fg = "#${base06}"; + } + { + name = "ical"; + text = ""; + fg = "#${base06}"; + } + { + name = "icalendar"; + text = ""; + fg = "#${base06}"; + } + { + name = "ico"; + text = ""; + fg = "#${base06}"; + } + { + name = "ics"; + text = ""; + fg = "#${base06}"; + } + { + name = "ifb"; + text = ""; + fg = "#${base06}"; + } + { + name = "ifc"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "ige"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "iges"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "igs"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "image"; + text = ""; + fg = "#${base06}"; + } + { + name = "img"; + text = ""; + fg = "#${base06}"; + } + { + name = "import"; + text = ""; + fg = "#${base06}"; + } + { + name = "info"; + text = ""; + fg = "#${base06}"; + } + { + name = "ini"; + text = ""; + fg = "#${base06}"; + } + { + name = "ino"; + text = ""; + fg = "#${base06}"; + } + { + name = "ipynb"; + text = ""; + fg = "#${base06}"; + } + { + name = "iso"; + text = ""; + fg = "#${base06}"; + } + { + name = "ixx"; + text = ""; + fg = "#${base06}"; + } + { + name = "java"; + text = ""; + fg = "#${base06}"; + } + { + name = "jl"; + text = ""; + fg = "#${base06}"; + } + { + name = "jpeg"; + text = ""; + fg = "#${base06}"; + } + { + name = "jpg"; + text = ""; + fg = "#${base06}"; + } + { + name = "js"; + text = ""; + fg = "#${base06}"; + } + { + name = "json"; + text = ""; + fg = "#${base06}"; + } + { + name = "json5"; + text = ""; + fg = "#${base06}"; + } + { + name = "jsonc"; + text = ""; + fg = "#${base06}"; + } + { + name = "jsx"; + text = ""; + fg = "#${base06}"; + } + { + name = "jwmrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "jxl"; + text = ""; + fg = "#${base06}"; + } + { + name = "kbx"; + text = "󰯄"; + fg = "#${base06}"; + } + { + name = "kdb"; + text = ""; + fg = "#${base06}"; + } + { + name = "kdbx"; + text = ""; + fg = "#${base06}"; + } + { + name = "kdenlive"; + text = ""; + fg = "#${base06}"; + } + { + name = "kdenlivetitle"; + text = ""; + fg = "#${base06}"; + } + { + name = "kicad_dru"; + text = ""; + fg = "#${base06}"; + } + { + name = "kicad_mod"; + text = ""; + fg = "#${base06}"; + } + { + name = "kicad_pcb"; + text = ""; + fg = "#${base06}"; + } + { + name = "kicad_prl"; + text = ""; + fg = "#${base06}"; + } + { + name = "kicad_pro"; + text = ""; + fg = "#${base06}"; + } + { + name = "kicad_sch"; + text = ""; + fg = "#${base06}"; + } + { + name = "kicad_sym"; + text = ""; + fg = "#${base06}"; + } + { + name = "kicad_wks"; + text = ""; + fg = "#${base06}"; + } + { + name = "ko"; + text = ""; + fg = "#${base06}"; + } + { + name = "kpp"; + text = ""; + fg = "#${base06}"; + } + { + name = "kra"; + text = ""; + fg = "#${base06}"; + } + { + name = "krz"; + text = ""; + fg = "#${base06}"; + } + { + name = "ksh"; + text = ""; + fg = "#${base06}"; + } + { + name = "kt"; + text = ""; + fg = "#${base06}"; + } + { + name = "kts"; + text = ""; + fg = "#${base06}"; + } + { + name = "lck"; + text = ""; + fg = "#${base06}"; + } + { + name = "leex"; + text = ""; + fg = "#${base06}"; + } + { + name = "less"; + text = ""; + fg = "#${base06}"; + } + { + name = "lff"; + text = ""; + fg = "#${base06}"; + } + { + name = "lhs"; + text = ""; + fg = "#${base06}"; + } + { + name = "lib"; + text = ""; + fg = "#${base06}"; + } + { + name = "license"; + text = ""; + fg = "#${base06}"; + } + { + name = "liquid"; + text = ""; + fg = "#${base06}"; + } + { + name = "lock"; + text = ""; + fg = "#${base06}"; + } + { + name = "log"; + text = "󰌱"; + fg = "#${base06}"; + } + { + name = "lrc"; + text = "󰨖"; + fg = "#${base06}"; + } + { + name = "lua"; + text = ""; + fg = "#${base06}"; + } + { + name = "luac"; + text = ""; + fg = "#${base06}"; + } + { + name = "luau"; + text = ""; + fg = "#${base06}"; + } + { + name = "m"; + text = ""; + fg = "#${base06}"; + } + { + name = "m3u"; + text = "󰲹"; + fg = "#${base06}"; + } + { + name = "m3u8"; + text = "󰲹"; + fg = "#${base06}"; + } + { + name = "m4a"; + text = ""; + fg = "#${base06}"; + } + { + name = "m4v"; + text = ""; + fg = "#${base06}"; + } + { + name = "magnet"; + text = ""; + fg = "#${base06}"; + } + { + name = "makefile"; + text = ""; + fg = "#${base06}"; + } + { + name = "markdown"; + text = ""; + fg = "#${base06}"; + } + { + name = "material"; + text = "󰔉"; + fg = "#${base06}"; + } + { + name = "md"; + text = ""; + fg = "#${base06}"; + } + { + name = "md5"; + text = "󰕥"; + fg = "#${base06}"; + } + { + name = "mdx"; + text = ""; + fg = "#${base06}"; + } + { + name = "mint"; + text = "󰌪"; + fg = "#${base06}"; + } + { + name = "mjs"; + text = ""; + fg = "#${base06}"; + } + { + name = "mk"; + text = ""; + fg = "#${base06}"; + } + { + name = "mkv"; + text = ""; + fg = "#${base06}"; + } + { + name = "ml"; + text = ""; + fg = "#${base06}"; + } + { + name = "mli"; + text = ""; + fg = "#${base06}"; + } + { + name = "mm"; + text = ""; + fg = "#${base06}"; + } + { + name = "mo"; + text = "∞"; + fg = "#${base06}"; + } + { + name = "mobi"; + text = ""; + fg = "#${base06}"; + } + { + name = "mov"; + text = ""; + fg = "#${base06}"; + } + { + name = "mp3"; + text = ""; + fg = "#${base06}"; + } + { + name = "mp4"; + text = ""; + fg = "#${base06}"; + } + { + name = "mpp"; + text = ""; + fg = "#${base06}"; + } + { + name = "msf"; + text = ""; + fg = "#${base06}"; + } + { + name = "mts"; + text = ""; + fg = "#${base06}"; + } + { + name = "mustache"; + text = ""; + fg = "#${base06}"; + } + { + name = "nfo"; + text = ""; + fg = "#${base06}"; + } + { + name = "nim"; + text = ""; + fg = "#${base06}"; + } + { + name = "nix"; + text = ""; + fg = "#${base06}"; + } + { + name = "nswag"; + text = ""; + fg = "#${base06}"; + } + { + name = "nu"; + text = ">"; + fg = "#${base06}"; + } + { + name = "o"; + text = ""; + fg = "#${base06}"; + } + { + name = "obj"; + text = "󰆧"; + fg = "#${base06}"; + } + { + name = "ogg"; + text = ""; + fg = "#${base06}"; + } + { + name = "opus"; + text = ""; + fg = "#${base06}"; + } + { + name = "org"; + text = ""; + fg = "#${base06}"; + } + { + name = "otf"; + text = ""; + fg = "#${base06}"; + } + { + name = "out"; + text = ""; + fg = "#${base06}"; + } + { + name = "part"; + text = ""; + fg = "#${base06}"; + } + { + name = "patch"; + text = ""; + fg = "#${base06}"; + } + { + name = "pck"; + text = ""; + fg = "#${base06}"; + } + { + name = "pcm"; + text = ""; + fg = "#${base06}"; + } + { + name = "pdf"; + text = ""; + fg = "#${base06}"; + } + { + name = "php"; + text = ""; + fg = "#${base06}"; + } + { + name = "pl"; + text = ""; + fg = "#${base06}"; + } + { + name = "pls"; + text = "󰲹"; + fg = "#${base06}"; + } + { + name = "ply"; + text = "󰆧"; + fg = "#${base06}"; + } + { + name = "pm"; + text = ""; + fg = "#${base06}"; + } + { + name = "png"; + text = ""; + fg = "#${base06}"; + } + { + name = "po"; + text = ""; + fg = "#${base06}"; + } + { + name = "pot"; + text = ""; + fg = "#${base06}"; + } + { + name = "pp"; + text = ""; + fg = "#${base06}"; + } + { + name = "ppt"; + text = "󰈧"; + fg = "#${base06}"; + } + { + name = "prisma"; + text = ""; + fg = "#${base06}"; + } + { + name = "pro"; + text = ""; + fg = "#${base06}"; + } + { + name = "ps1"; + text = "󰨊"; + fg = "#${base06}"; + } + { + name = "psb"; + text = ""; + fg = "#${base06}"; + } + { + name = "psd"; + text = ""; + fg = "#${base06}"; + } + { + name = "psd1"; + text = "󰨊"; + fg = "#${base06}"; + } + { + name = "psm1"; + text = "󰨊"; + fg = "#${base06}"; + } + { + name = "pub"; + text = "󰷖"; + fg = "#${base06}"; + } + { + name = "pxd"; + text = ""; + fg = "#${base06}"; + } + { + name = "pxi"; + text = ""; + fg = "#${base06}"; + } + { + name = "py"; + text = ""; + fg = "#${base06}"; + } + { + name = "pyc"; + text = ""; + fg = "#${base06}"; + } + { + name = "pyd"; + text = ""; + fg = "#${base06}"; + } + { + name = "pyi"; + text = ""; + fg = "#${base06}"; + } + { + name = "pyo"; + text = ""; + fg = "#${base06}"; + } + { + name = "pyx"; + text = ""; + fg = "#${base06}"; + } + { + name = "qm"; + text = ""; + fg = "#${base06}"; + } + { + name = "qml"; + text = ""; + fg = "#${base06}"; + } + { + name = "qrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "qss"; + text = ""; + fg = "#${base06}"; + } + { + name = "query"; + text = ""; + fg = "#${base06}"; + } + { + name = "r"; + text = "󰟔"; + fg = "#${base06}"; + } + { + name = "rake"; + text = ""; + fg = "#${base06}"; + } + { + name = "rar"; + text = ""; + fg = "#${base06}"; + } + { + name = "razor"; + text = "󱦘"; + fg = "#${base06}"; + } + { + name = "rb"; + text = ""; + fg = "#${base06}"; + } + { + name = "res"; + text = ""; + fg = "#${base06}"; + } + { + name = "resi"; + text = ""; + fg = "#${base06}"; + } + { + name = "rlib"; + text = ""; + fg = "#${base06}"; + } + { + name = "rmd"; + text = ""; + fg = "#${base06}"; + } + { + name = "rproj"; + text = "󰗆"; + fg = "#${base06}"; + } + { + name = "rs"; + text = ""; + fg = "#${base06}"; + } + { + name = "rss"; + text = ""; + fg = "#${base06}"; + } + { + name = "sass"; + text = ""; + fg = "#${base06}"; + } + { + name = "sbt"; + text = ""; + fg = "#${base06}"; + } + { + name = "sc"; + text = ""; + fg = "#${base06}"; + } + { + name = "scad"; + text = ""; + fg = "#${base06}"; + } + { + name = "scala"; + text = ""; + fg = "#${base06}"; + } + { + name = "scm"; + text = "󰘧"; + fg = "#${base06}"; + } + { + name = "scss"; + text = ""; + fg = "#${base06}"; + } + { + name = "sh"; + text = ""; + fg = "#${base06}"; + } + { + name = "sha1"; + text = "󰕥"; + fg = "#${base06}"; + } + { + name = "sha224"; + text = "󰕥"; + fg = "#${base06}"; + } + { + name = "sha256"; + text = "󰕥"; + fg = "#${base06}"; + } + { + name = "sha384"; + text = "󰕥"; + fg = "#${base06}"; + } + { + name = "sha512"; + text = "󰕥"; + fg = "#${base06}"; + } + { + name = "sig"; + text = "λ"; + fg = "#${base06}"; + } + { + name = "signature"; + text = "λ"; + fg = "#${base06}"; + } + { + name = "skp"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "sldasm"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "sldprt"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "slim"; + text = ""; + fg = "#${base06}"; + } + { + name = "sln"; + text = ""; + fg = "#${base06}"; + } + { + name = "slvs"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "sml"; + text = "λ"; + fg = "#${base06}"; + } + { + name = "so"; + text = ""; + fg = "#${base06}"; + } + { + name = "sol"; + text = ""; + fg = "#${base06}"; + } + { + name = "spec.js"; + text = ""; + fg = "#${base06}"; + } + { + name = "spec.jsx"; + text = ""; + fg = "#${base06}"; + } + { + name = "spec.ts"; + text = ""; + fg = "#${base06}"; + } + { + name = "spec.tsx"; + text = ""; + fg = "#${base06}"; + } + { + name = "sql"; + text = ""; + fg = "#${base06}"; + } + { + name = "sqlite"; + text = ""; + fg = "#${base06}"; + } + { + name = "sqlite3"; + text = ""; + fg = "#${base06}"; + } + { + name = "srt"; + text = "󰨖"; + fg = "#${base06}"; + } + { + name = "ssa"; + text = "󰨖"; + fg = "#${base06}"; + } + { + name = "ste"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "step"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "stl"; + text = "󰆧"; + fg = "#${base06}"; + } + { + name = "stp"; + text = "󰻫"; + fg = "#${base06}"; + } + { + name = "strings"; + text = ""; + fg = "#${base06}"; + } + { + name = "styl"; + text = ""; + fg = "#${base06}"; + } + { + name = "sub"; + text = "󰨖"; + fg = "#${base06}"; + } + { + name = "sublime"; + text = ""; + fg = "#${base06}"; + } + { + name = "suo"; + text = ""; + fg = "#${base06}"; + } + { + name = "sv"; + text = "󰍛"; + fg = "#${base06}"; + } + { + name = "svelte"; + text = ""; + fg = "#${base06}"; + } + { + name = "svg"; + text = "󰜡"; + fg = "#${base06}"; + } + { + name = "svh"; + text = "󰍛"; + fg = "#${base06}"; + } + { + name = "swift"; + text = ""; + fg = "#${base06}"; + } + { + name = "t"; + text = ""; + fg = "#${base06}"; + } + { + name = "tbc"; + text = "󰛓"; + fg = "#${base06}"; + } + { + name = "tcl"; + text = "󰛓"; + fg = "#${base06}"; + } + { + name = "templ"; + text = ""; + fg = "#${base06}"; + } + { + name = "terminal"; + text = ""; + fg = "#${base06}"; + } + { + name = "test.js"; + text = ""; + fg = "#${base06}"; + } + { + name = "test.jsx"; + text = ""; + fg = "#${base06}"; + } + { + name = "test.ts"; + text = ""; + fg = "#${base06}"; + } + { + name = "test.tsx"; + text = ""; + fg = "#${base06}"; + } + { + name = "tex"; + text = ""; + fg = "#${base06}"; + } + { + name = "tf"; + text = ""; + fg = "#${base06}"; + } + { + name = "tfvars"; + text = ""; + fg = "#${base06}"; + } + { + name = "tgz"; + text = ""; + fg = "#${base06}"; + } + { + name = "tmux"; + text = ""; + fg = "#${base06}"; + } + { + name = "toml"; + text = ""; + fg = "#${base06}"; + } + { + name = "torrent"; + text = ""; + fg = "#${base06}"; + } + { + name = "tres"; + text = ""; + fg = "#${base06}"; + } + { + name = "ts"; + text = ""; + fg = "#${base06}"; + } + { + name = "tscn"; + text = ""; + fg = "#${base06}"; + } + { + name = "tsconfig"; + text = ""; + fg = "#${base06}"; + } + { + name = "tsx"; + text = ""; + fg = "#${base06}"; + } + { + name = "ttf"; + text = ""; + fg = "#${base06}"; + } + { + name = "twig"; + text = ""; + fg = "#${base06}"; + } + { + name = "txt"; + text = "󰈙"; + fg = "#${base06}"; + } + { + name = "txz"; + text = ""; + fg = "#${base06}"; + } + { + name = "typoscript"; + text = ""; + fg = "#${base06}"; + } + { + name = "ui"; + text = ""; + fg = "#${base06}"; + } + { + name = "v"; + text = "󰍛"; + fg = "#${base06}"; + } + { + name = "vala"; + text = ""; + fg = "#${base06}"; + } + { + name = "vh"; + text = "󰍛"; + fg = "#${base06}"; + } + { + name = "vhd"; + text = "󰍛"; + fg = "#${base06}"; + } + { + name = "vhdl"; + text = "󰍛"; + fg = "#${base06}"; + } + { + name = "vim"; + text = ""; + fg = "#${base06}"; + } + { + name = "vsh"; + text = ""; + fg = "#${base06}"; + } + { + name = "vsix"; + text = ""; + fg = "#${base06}"; + } + { + name = "vue"; + text = ""; + fg = "#${base06}"; + } + { + name = "wasm"; + text = ""; + fg = "#${base06}"; + } + { + name = "wav"; + text = ""; + fg = "#${base06}"; + } + { + name = "webm"; + text = ""; + fg = "#${base06}"; + } + { + name = "webmanifest"; + text = ""; + fg = "#${base06}"; + } + { + name = "webp"; + text = ""; + fg = "#${base06}"; + } + { + name = "webpack"; + text = "󰜫"; + fg = "#${base06}"; + } + { + name = "wma"; + text = ""; + fg = "#${base06}"; + } + { + name = "woff"; + text = ""; + fg = "#${base06}"; + } + { + name = "woff2"; + text = ""; + fg = "#${base06}"; + } + { + name = "wrl"; + text = "󰆧"; + fg = "#${base06}"; + } + { + name = "wrz"; + text = "󰆧"; + fg = "#${base06}"; + } + { + name = "x"; + text = ""; + fg = "#${base06}"; + } + { + name = "xaml"; + text = "󰙳"; + fg = "#${base06}"; + } + { + name = "xcf"; + text = ""; + fg = "#${base06}"; + } + { + name = "xcplayground"; + text = ""; + fg = "#${base06}"; + } + { + name = "xcstrings"; + text = ""; + fg = "#${base06}"; + } + { + name = "xls"; + text = "󰈛"; + fg = "#${base06}"; + } + { + name = "xlsx"; + text = "󰈛"; + fg = "#${base06}"; + } + { + name = "xm"; + text = ""; + fg = "#${base06}"; + } + { + name = "xml"; + text = "󰗀"; + fg = "#${base06}"; + } + { + name = "xpi"; + text = ""; + fg = "#${base06}"; + } + { + name = "xul"; + text = ""; + fg = "#${base06}"; + } + { + name = "xz"; + text = ""; + fg = "#${base06}"; + } + { + name = "yaml"; + text = ""; + fg = "#${base06}"; + } + { + name = "yml"; + text = ""; + fg = "#${base06}"; + } + { + name = "zig"; + text = ""; + fg = "#${base06}"; + } + { + name = "zip"; + text = ""; + fg = "#${base06}"; + } + { + name = "zsh"; + text = ""; + fg = "#${base06}"; + } + { + name = "zst"; + text = ""; + fg = "#${base06}"; + } + ]; + files = [ + { + name = "gulpfile.js"; + text = ""; + fg = "#${base06}"; + } + { + name = ".babelrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "copying.lesser"; + text = ""; + fg = "#${base06}"; + } + { + name = ".npmrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "docker-compose.yml"; + text = "󰡨"; + fg = "#${base06}"; + } + { + name = "svelte.config.js"; + text = ""; + fg = "#${base06}"; + } + { + name = "copying"; + text = ""; + fg = "#${base06}"; + } + { + name = "prettier.config.ts"; + text = ""; + fg = "#${base06}"; + } + { + name = "gruntfile.babel.js"; + text = ""; + fg = "#${base06}"; + } + { + name = ".SRCINFO"; + text = "󰣇"; + fg = "#${base06}"; + } + { + name = ".xinitrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "docker-compose.yaml"; + text = "󰡨"; + fg = "#${base06}"; + } + { + name = "nuxt.config.ts"; + text = "󱄆"; + fg = "#${base06}"; + } + { + name = "build"; + text = ""; + fg = "#${base06}"; + } + { + name = ".editorconfig"; + text = ""; + fg = "#${base06}"; + } + { + name = "nuxt.config.mjs"; + text = "󱄆"; + fg = "#${base06}"; + } + { + name = ".gitlab-ci.yml"; + text = ""; + fg = "#${base06}"; + } + { + name = "PKGBUILD"; + text = ""; + fg = "#${base06}"; + } + { + name = ".bash_profile"; + text = ""; + fg = "#${base06}"; + } + { + name = ".bashrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "compose.yml"; + text = "󰡨"; + fg = "#${base06}"; + } + { + name = "eslint.config.cjs"; + text = ""; + fg = "#${base06}"; + } + { + name = "go.mod"; + text = ""; + fg = "#${base06}"; + } + { + name = ".mailmap"; + text = "󰊢"; + fg = "#${base06}"; + } + { + name = "gtkrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "go.work"; + text = ""; + fg = "#${base06}"; + } + { + name = "justfile"; + text = ""; + fg = "#${base06}"; + } + { + name = "kritadisplayrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "commitlint.config.js"; + text = "󰜘"; + fg = "#${base06}"; + } + { + name = ".env"; + text = ""; + fg = "#${base06}"; + } + { + name = "PrusaSlicerGcodeViewer.ini"; + text = ""; + fg = "#${base06}"; + } + { + name = "r"; + text = "󰟔"; + fg = "#${base06}"; + } + { + name = "license"; + text = ""; + fg = "#${base06}"; + } + { + name = ".gitignore"; + text = ""; + fg = "#${base06}"; + } + { + name = "tailwind.config.js"; + text = "󱏿"; + fg = "#${base06}"; + } + { + name = ".prettierrc.yml"; + text = ""; + fg = "#${base06}"; + } + { + name = ".zprofile"; + text = ""; + fg = "#${base06}"; + } + { + name = ".zshenv"; + text = ""; + fg = "#${base06}"; + } + { + name = "xmonad.hs"; + text = ""; + fg = "#${base06}"; + } + { + name = ".eslintignore"; + text = ""; + fg = "#${base06}"; + } + { + name = "tsconfig.json"; + text = ""; + fg = "#${base06}"; + } + { + name = ".prettierrc.json5"; + text = ""; + fg = "#${base06}"; + } + { + name = ".ds_store"; + text = ""; + fg = "#${base06}"; + } + { + name = "gulpfile.coffee"; + text = ""; + fg = "#${base06}"; + } + { + name = "R"; + text = "󰟔"; + fg = "#${base06}"; + } + { + name = ".zshrc"; + text = ""; + fg = "#${base06}"; + } + { + name = ".prettierrc.toml"; + text = ""; + fg = "#${base06}"; + } + { + name = ".gvimrc"; + text = ""; + fg = "#${base06}"; + } + { + name = ".xsession"; + text = ""; + fg = "#${base06}"; + } + { + name = ".justfile"; + text = ""; + fg = "#${base06}"; + } + { + name = ".gitconfig"; + text = ""; + fg = "#${base06}"; + } + { + name = "gradle-wrapper.properties"; + text = ""; + fg = "#${base06}"; + } + { + name = "ionic.config.json"; + text = ""; + fg = "#${base06}"; + } + { + name = "cantorrc"; + text = ""; + fg = "#${base06}"; + } + { + name = ".gleam"; + text = ""; + fg = "#${base06}"; + } + { + name = "package-lock.json"; + text = ""; + fg = "#${base06}"; + } + { + name = "package.json"; + text = ""; + fg = "#${base06}"; + } + { + name = "hyprland.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "gulpfile.babel.js"; + text = ""; + fg = "#${base06}"; + } + { + name = ".nvmrc"; + text = ""; + fg = "#${base06}"; + } + { + name = ".prettierignore"; + text = ""; + fg = "#${base06}"; + } + { + name = "ext_typoscript_setup.txt"; + text = ""; + fg = "#${base06}"; + } + { + name = "QtProject.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "avif"; + text = ""; + fg = "#${base06}"; + } + { + name = "mix.lock"; + text = ""; + fg = "#${base06}"; + } + { + name = "build.gradle"; + text = ""; + fg = "#${base06}"; + } + { + name = "gemfile$"; + text = ""; + fg = "#${base06}"; + } + { + name = ".vimrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "i18n.config.ts"; + text = "󰗊"; + fg = "#${base06}"; + } + { + name = "gulpfile.ts"; + text = ""; + fg = "#${base06}"; + } + { + name = "build.zig.zon"; + text = ""; + fg = "#${base06}"; + } + { + name = "checkhealth"; + text = "󰓙"; + fg = "#${base06}"; + } + { + name = "xmobarrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "_vimrc"; + text = ""; + fg = "#${base06}"; + } + { + name = ".luaurc"; + text = ""; + fg = "#${base06}"; + } + { + name = "kdenlive-layoutsrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "gradlew"; + text = ""; + fg = "#${base06}"; + } + { + name = "xsettingsd.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "vlcrc"; + text = "󰕼"; + fg = "#${base06}"; + } + { + name = "xorg.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "xmobarrc.hs"; + text = ""; + fg = "#${base06}"; + } + { + name = "workspace"; + text = ""; + fg = "#${base06}"; + } + { + name = ".gitattributes"; + text = ""; + fg = "#${base06}"; + } + { + name = "favicon.ico"; + text = ""; + fg = "#${base06}"; + } + { + name = "go.sum"; + text = ""; + fg = "#${base06}"; + } + { + name = "pom.xml"; + text = ""; + fg = "#${base06}"; + } + { + name = "webpack"; + text = "󰜫"; + fg = "#${base06}"; + } + { + name = "vagrantfile$"; + text = ""; + fg = "#${base06}"; + } + { + name = "unlicense"; + text = ""; + fg = "#${base06}"; + } + { + name = "tmux.conf.local"; + text = ""; + fg = "#${base06}"; + } + { + name = "settings.gradle"; + text = ""; + fg = "#${base06}"; + } + { + name = ".dockerignore"; + text = "󰡨"; + fg = "#${base06}"; + } + { + name = "sym-lib-table"; + text = ""; + fg = "#${base06}"; + } + { + name = "_gvimrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "kdenliverc"; + text = ""; + fg = "#${base06}"; + } + { + name = "kdeglobals"; + text = ""; + fg = "#${base06}"; + } + { + name = ".prettierrc.yaml"; + text = ""; + fg = "#${base06}"; + } + { + name = "rmd"; + text = ""; + fg = "#${base06}"; + } + { + name = "tailwind.config.mjs"; + text = "󱏿"; + fg = "#${base06}"; + } + { + name = "sxhkdrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "robots.txt"; + text = "󰚩"; + fg = "#${base06}"; + } + { + name = "tailwind.config.ts"; + text = "󱏿"; + fg = "#${base06}"; + } + { + name = "prettier.config.mjs"; + text = ""; + fg = "#${base06}"; + } + { + name = "mpv.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "py.typed"; + text = ""; + fg = "#${base06}"; + } + { + name = "PrusaSlicer.ini"; + text = ""; + fg = "#${base06}"; + } + { + name = "procfile"; + text = ""; + fg = "#${base06}"; + } + { + name = "rakefile"; + text = ""; + fg = "#${base06}"; + } + { + name = "kritarc"; + text = ""; + fg = "#${base06}"; + } + { + name = ".Xresources"; + text = ""; + fg = "#${base06}"; + } + { + name = "prettier.config.js"; + text = ""; + fg = "#${base06}"; + } + { + name = "commitlint.config.ts"; + text = "󰜘"; + fg = "#${base06}"; + } + { + name = "weston.ini"; + text = ""; + fg = "#${base06}"; + } + { + name = "eslint.config.js"; + text = ""; + fg = "#${base06}"; + } + { + name = "cmakelists.txt"; + text = ""; + fg = "#${base06}"; + } + { + name = ".git-blame-ignore-revs"; + text = ""; + fg = "#${base06}"; + } + { + name = "config"; + text = ""; + fg = "#${base06}"; + } + { + name = "nuxt.config.cjs"; + text = "󱄆"; + fg = "#${base06}"; + } + { + name = "node_modules"; + text = ""; + fg = "#${base06}"; + } + { + name = "makefile"; + text = ""; + fg = "#${base06}"; + } + { + name = "lxqt.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "i18n.config.js"; + text = "󰗊"; + fg = "#${base06}"; + } + { + name = "FreeCAD.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "prettier.config.cjs"; + text = ""; + fg = "#${base06}"; + } + { + name = "tmux.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "kalgebrarc"; + text = ""; + fg = "#${base06}"; + } + { + name = "i3status.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = ".settings.json"; + text = ""; + fg = "#${base06}"; + } + { + name = "containerfile"; + text = "󰡨"; + fg = "#${base06}"; + } + { + name = "i3blocks.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "lxde-rc.xml"; + text = ""; + fg = "#${base06}"; + } + { + name = "gradle.properties"; + text = ""; + fg = "#${base06}"; + } + { + name = "hypridle.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = "gruntfile.ts"; + text = ""; + fg = "#${base06}"; + } + { + name = "gruntfile.js"; + text = ""; + fg = "#${base06}"; + } + { + name = "dockerfile"; + text = "󰡨"; + fg = "#${base06}"; + } + { + name = "groovy"; + text = ""; + fg = "#${base06}"; + } + { + name = "hyprlock.conf"; + text = ""; + fg = "#${base06}"; + } + { + name = ".prettierrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "gnumakefile"; + text = ""; + fg = "#${base06}"; + } + { + name = "commit_editmsg"; + text = ""; + fg = "#${base06}"; + } + { + name = "fp-lib-table"; + text = ""; + fg = "#${base06}"; + } + { + name = "fp-info-cache"; + text = ""; + fg = "#${base06}"; + } + { + name = "eslint.config.ts"; + text = ""; + fg = "#${base06}"; + } + { + name = "nuxt.config.js"; + text = "󱄆"; + fg = "#${base06}"; + } + { + name = "platformio.ini"; + text = ""; + fg = "#${base06}"; + } + { + name = ".nuxtrc"; + text = "󱄆"; + fg = "#${base06}"; + } + { + name = "gruntfile.coffee"; + text = ""; + fg = "#${base06}"; + } + { + name = "eslint.config.mjs"; + text = ""; + fg = "#${base06}"; + } + { + name = "compose.yaml"; + text = "󰡨"; + fg = "#${base06}"; + } + { + name = "bspwmrc"; + text = ""; + fg = "#${base06}"; + } + { + name = "brewfile"; + text = ""; + fg = "#${base06}"; + } + { + name = ".eslintrc"; + text = ""; + fg = "#${base06}"; + } + { + name = ".gtkrc-2.0"; + text = ""; + fg = "#${base06}"; + } + { + name = ".Xauthority"; + text = ""; + fg = "#${base06}"; + } + { + name = ".prettierrc.json"; + text = ""; + fg = "#${base06}"; + } + { + name = ".npmignore"; + text = ""; + fg = "#${base06}"; + } + { + name = ".gitmodules"; + text = ""; + fg = "#${base06}"; + } + ]; + }; + }; +} diff --git a/home/programs/cli/zoxide/default.nix b/home/programs/cli/zoxide/default.nix new file mode 100644 index 0000000..6a61eb3 --- /dev/null +++ b/home/programs/cli/zoxide/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: { + programs.zoxide = { + enable = true; + enableFishIntegration = true; + enableZshIntegration = true; + options = [ "--cmd cd" ]; + }; +} diff --git a/home/programs/custom-pkgs/anicliru/anicli-api.nix b/home/programs/custom-pkgs/anicliru/anicli-api.nix new file mode 100644 index 0000000..b4dab3b --- /dev/null +++ b/home/programs/custom-pkgs/anicliru/anicli-api.nix @@ -0,0 +1,34 @@ +{ lib, fetchPypi, python3Packages, python3 }: + +python3Packages.buildPythonApplication rec { + pname = "anicli_api"; + version = "0.6.11"; + pyproject = true; + + src = fetchPypi { + pname = "anicli_api"; + inherit version; + hash = "sha256-1jfPl+Vh7c4zWjQJ/qdvFOhXBvVTX4iqShxoMtbN6j4="; + }; + + build-system = with python3Packages; [ poetry-core ]; + + dependencies = with python3Packages; [ + (python3.withPackages + (ps: with ps; [ httpx ] ++ httpx.optional-dependencies.http2)) + (pkgs.callPackage ./chompjs.nix { }) + attrs + parsel + tqdm + ]; + + dontCheckRuntimeDeps = true; + + meta = with lib; { + description = "anicli-api"; + homepage = "https://github.com/vypivshiy/anicli-api"; # DEAD + maintainers = with maintainers; [ DADA30000 azikx ]; + mainProgram = "anicli-api"; + platforms = platforms.unix; + }; +} diff --git a/home/programs/custom-pkgs/anicliru/anicli-ru.nix b/home/programs/custom-pkgs/anicliru/anicli-ru.nix new file mode 100644 index 0000000..cf84623 --- /dev/null +++ b/home/programs/custom-pkgs/anicliru/anicli-ru.nix @@ -0,0 +1,31 @@ +{ lib, pkgs, fetchPypi, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "ani-cli-ru"; + version = "5.0.12"; + pyproject = true; + + src = fetchPypi { + pname = "anicli_ru"; + inherit version; + hash = "sha256-s8uI0ch+SPqthHy+d0jcB6o5/Zqx89JHM68Q00nwCFA="; + }; + + build-system = with python3Packages; [ hatchling setuptools ]; + + dependencies = [ + python3Packages.hatchling + (pkgs.callPackage ./eggella.nix { }) + (pkgs.callPackage ./anicli-api.nix { }) + ]; + + meta = with lib; { + description = + "Script to watch anime from terminal with russian translation, written in python."; + homepage = "https://github.com/vypivshiy/ani-cli-ru"; # DEAD + license = with licenses; [ gpl3Plus ]; + maintainers = with maintainers; [ DADA30000 azikx ]; + mainProgram = "anicli-ru"; + platforms = platforms.unix; + }; +} diff --git a/home/programs/custom-pkgs/anicliru/chompjs.nix b/home/programs/custom-pkgs/anicliru/chompjs.nix new file mode 100644 index 0000000..5d1c0d2 --- /dev/null +++ b/home/programs/custom-pkgs/anicliru/chompjs.nix @@ -0,0 +1,26 @@ +{ lib, pkgs, fetchPypi, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "chompjs"; + version = "1.3.0"; + pyproject = true; + + src = fetchPypi { + pname = "chompjs"; + inherit version; + hash = "sha256-isCzF1XpOTSPsq8cwBw1fbUMhU+j1QbOeSGPwV8FaGg="; + }; + + build-system = with python3Packages; [ setuptools ]; + + dependencies = with python3Packages; [ setuptools ]; + + meta = with lib; { + description = "chompjs"; + homepage = "https://github.com/Nykakin/chompjs"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ DADA30000 ]; + mainProgram = "chompjs"; + platforms = platforms.unix; + }; +} diff --git a/home/programs/custom-pkgs/anicliru/eggella.nix b/home/programs/custom-pkgs/anicliru/eggella.nix new file mode 100644 index 0000000..992c03d --- /dev/null +++ b/home/programs/custom-pkgs/anicliru/eggella.nix @@ -0,0 +1,29 @@ +{ lib, pkgs, fetchPypi, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "eggella"; + version = "0.1.7"; + pyproject = true; + + src = fetchPypi { + pname = "eggella"; + inherit version; + hash = "sha256-8Vo39BePA86wcLKs/F+u2N7tpIpPrEyEPp3POszy050="; + }; + + build-system = with python3Packages; [ hatchling setuptools ]; + + dependencies = [ + python3Packages.prompt-toolkit + python3Packages.rich + python3Packages.typer + ]; + + meta = with lib; { + description = "Framework for easy creating REPL applications."; + homepage = "https://github.com/vypivshiy/eggella"; # DEAD + maintainers = with maintainers; [ DADA30000 azikx ]; + mainProgram = "eggella"; + platforms = platforms.unix; + }; +} diff --git a/home/programs/custom-pkgs/default.nix b/home/programs/custom-pkgs/default.nix new file mode 100644 index 0000000..822e21c --- /dev/null +++ b/home/programs/custom-pkgs/default.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + home.packages = with pkgs; + [ + (callPackage ./anicliru/anicli-ru.nix { }) + # (callPackage ./torrserver/default.nix { }) + ]; +} diff --git a/home/programs/default.nix b/home/programs/default.nix new file mode 100644 index 0000000..b864dfb --- /dev/null +++ b/home/programs/default.nix @@ -0,0 +1 @@ +{ imports = [ ./custom-pkgs ./shells ./misc ./cli ./gui ]; } diff --git a/home/programs/gui/ayugram/default.nix b/home/programs/gui/ayugram/default.nix new file mode 100644 index 0000000..74928dd --- /dev/null +++ b/home/programs/gui/ayugram/default.nix @@ -0,0 +1,107 @@ +{ ... }: { + home.file = { + ".local/share/AyuGramDesktop/tdata/ayu_settings.json".text = '' + { + "appIcon": "chibi2", + "channelBottomButton": 0, + "collapseSimilarChannels": true, + "deletedMark": "deleted", + "disableAds": true, + "disableCustomBackgrounds": false, + "disableNotificationsDelay": false, + "disableStories": false, + "editedMark": "edited", + "gifConfirmation": false, + "hideAllChatsFolder": true, + "hideFromBlocked": false, + "hideNotificationBadge": false, + "hideNotificationCounters": false, + "hideSimilarChannels": false, + "increaseWebviewHeight": false, + "increaseWebviewWidth": false, + "localPremium": true, + "markReadAfterAction": true, + "monoFont": "JetBrainsMono Nerd Font Mono", + "recentStickersCount": 40, + "saveDeletedMessages": true, + "saveMessagesHistory": true, + "sendOfflinePacketAfterOnline": false, + "sendOnlinePackets": true, + "sendReadMessages": true, + "sendReadStories": false, + "sendUploadProgress": true, + "showGhostToggleInDrawer": true, + "showGhostToggleInTray": true, + "showHideMessageInContextMenu": 2, + "showLReadToggleInDrawer": true, + "showMessageDetailsInContextMenu": 2, + "showMessageSeconds": false, + "showMessageShot": true, + "showPeerId": 2, + "showReactionsPanelInContextMenu": 0, + "showSReadToggleInDrawer": true, + "showStreamerToggleInDrawer": false, + "showStreamerToggleInTray": false, + "showUserMessagesInContextMenu": 2, + "showViewsPanelInContextMenu": 2, + "simpleQuotesAndReplies": false, + "spoofWebviewAsAndroid": false, + "stickerConfirmation": false, + "useScheduledMessages": false, + "voiceConfirmation": false + } + ''; + ".local/share/AyuGramDesktop/tdata/shortcuts-custom.json".text = '' + [ + { + "command": "quit_telegram", + "keys": "alt+q" + }, + { + "command": "folder1", + "keys": "alt+1" + }, + { + "command": "folder2", + "keys": "alt+2" + }, + { + "command": "folder3", + "keys": "alt+3" + }, + { + "command": "show_archive", + "keys": "alt+0" + }, + { + "command": "search", + "keys": "alt+/" + }, + { + "command": "show_contacts", + "keys": "alt+g" + }, + { + "command": "next_chat", + "keys": "alt+j" + }, + { + "command": "previous_chat", + "keys": "alt+k" + }, + { + "command": "next_folder", + "keys": "alt+l" + }, + { + "command": "previous_folder", + "keys": "alt+h" + }, + { + "command": "media_playpause", + "keys": "alt+p" + } + ] + ''; + }; +} diff --git a/home/programs/gui/default.nix b/home/programs/gui/default.nix new file mode 100644 index 0000000..214d640 --- /dev/null +++ b/home/programs/gui/default.nix @@ -0,0 +1,15 @@ +{ + imports = [ + ./spotify + ./obs-studio + ./ayugram + # ./firefox + ./floorp + ./qbittorrent + ./qutebrowser + ./mpv + ./swayimg + + ./pkgs.nix + ]; +} diff --git a/home/programs/gui/floorp/default.nix b/home/programs/gui/floorp/default.nix new file mode 100644 index 0000000..8c34919 --- /dev/null +++ b/home/programs/gui/floorp/default.nix @@ -0,0 +1,65 @@ +{ pkgs, inputs, ... }: { + imports = [ + ./user + + ./settings.nix + # ./search.nix + ]; + programs.floorp = { + enable = true; + package = pkgs.floorp; + languagePacks = [ "ru" ]; + profiles.megamozg = { + id = 0; + name = "dragora"; + isDefault = true; + extensions = with inputs.firefox-addons.packages."x86_64-linux"; [ + #VERY IMPORTANT + ublock-origin + sponsorblock + darkreader + vimium-c + censor-tracker + + # MISC + tabcenter-reborn + firefox-color + stylus + translate-web-pages + ]; + }; + policies = { + CaptivePortal = false; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + # DisableFirefoxAccounts = true; + DisableFormHistory = true; + DisplayBookmarksToolbar = false; + DontCheckDefaultBrowser = true; + DisableProfileRefresh = true; + PromptForDownloadLocation = false; + NetworkPrediction = false; + showSearchBar = true; + DisableSetDesktopBackground = true; + LegacyProfiles = true; + ManualAppUpdateOnly = true; + DisableFirefoxScreenshots = true; + HardwareAcceleration = true; + FirefoxHome = { + Pocket = false; + Snippets = false; + }; + SanitizeOnShutdown = { + Cache = true; + History = false; + Cookies = false; + Downloads = true; + FormData = true; + Sessions = true; + OfflineApps = true; + }; + PasswordManagerEnabled = true; + }; + }; +} diff --git a/home/programs/gui/floorp/search.nix b/home/programs/gui/floorp/search.nix new file mode 100644 index 0000000..2ea6f79 --- /dev/null +++ b/home/programs/gui/floorp/search.nix @@ -0,0 +1,33 @@ +{ pkgs, ... }: { + programs.firefox.profiles.dragora = { + search = { + force = true; + default = "Google"; + engines = { + "Nix Packages" = { + urls = [{ + template = "https://search.nixos.org/packages?channel=unstable"; + params = [ + { + name = "type"; + value = "packages"; + } + { + name = "query"; + value = "{searchTerms}"; + } + ]; + }]; + icon = + "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@np" ]; + }; + + "Bing".metaData.hidden = true; + "DuckDuckGo".metaData.hidden = true; + "Wikipedia (en)".metaData.hidden = true; + "Google".metaData.alias = "@g"; + }; + }; + }; +} diff --git a/home/programs/gui/floorp/settings.nix b/home/programs/gui/floorp/settings.nix new file mode 100644 index 0000000..cc3e8de --- /dev/null +++ b/home/programs/gui/floorp/settings.nix @@ -0,0 +1,9 @@ +{ ... }: { + programs.floorp.profiles.megamozg.settings = { + # OTHER + "layers.acceleration.force-enabled" = true; + "gfx.webrender.all" = true; + "svg.context-properties.content.enabled" = true; + "ui.key.menuAccessKeyFocuses" = false; + }; +} diff --git a/home/programs/gui/floorp/user/chrome.nix b/home/programs/gui/floorp/user/chrome.nix new file mode 100644 index 0000000..b8a5a16 --- /dev/null +++ b/home/programs/gui/floorp/user/chrome.nix @@ -0,0 +1,4 @@ +{ ... }: { + programs.floorp.profiles.megamozg.userChrome = + " * {\n font-family: \"JetBrainsMono Nerd Font\" !important;\n font-size: 12pt !important; \n }\n"; +} diff --git a/home/programs/gui/floorp/user/content.nix b/home/programs/gui/floorp/user/content.nix new file mode 100644 index 0000000..ef23f41 --- /dev/null +++ b/home/programs/gui/floorp/user/content.nix @@ -0,0 +1,6 @@ +{ ... }: +let repo = "https://github.com/axax-loll/fuji-wallpapers/blob/main"; +in { + programs.floorp.profiles.megamozg.userContent = + " @-moz-document url(about:home), url(about:newtab), url(about:privatebrowsing) {\n .click-target-container *, .top-sites-list * {\n color: #fff !important ;\n text-shadow: 2px 2px 2px #222 !important ;\n }\n body::before {\n content: \"\" ;\n z-index: -1 ;\n position: fixed ;\n top: 0 ;\n left: 0 ;\n background: #0F0F0F no-repeat url(\"${repo}/synth.png?raw=true\") center ;\n background-size: cover ;\n width: 100vw ;\n height: 100vh ;\n }\n .logo { background-image: url(\"${repo}/logo.png?raw=true\") !important; }\n .search-wrapper input { background: #0F0F0F !important; }\n #PlacesToolbarItems {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n }\n"; +} diff --git a/home/programs/gui/floorp/user/default.nix b/home/programs/gui/floorp/user/default.nix new file mode 100644 index 0000000..083c4f1 --- /dev/null +++ b/home/programs/gui/floorp/user/default.nix @@ -0,0 +1 @@ +{ imports = [ ./chrome.nix ./tcr.nix ]; } diff --git a/home/programs/gui/floorp/user/tabcenter.nix b/home/programs/gui/floorp/user/tabcenter.nix new file mode 100644 index 0000000..f59d69a --- /dev/null +++ b/home/programs/gui/floorp/user/tabcenter.nix @@ -0,0 +1,112 @@ +{ ... }: +{ + css = '' + :root { + + /* These colours are (mainly) used by the + Container Tabs Plugin */ + --uc-identity-colour-blue: #8DA3B9; + --uc-identity-colour-turquoise: #8AA6A2; + --uc-identity-colour-green: #8C977D; + --uc-identity-colour-yellow: #D9BC8C; + --uc-identity-colour-orange: #D9BC8C; + --uc-identity-colour-red: #B66467; + --uc-identity-colour-pink: #A988B0; + --uc-identity-colour-purple: #A988B0; + + /* Cascades main Colour Scheme */ + --uc-base-colour: #151515; + --uc-highlight-colour: #1F1F1F; + --uc-inverted-colour: #E8E3E3; + --uc-muted-colour: #BBB6B6; + --uc-accent-colour: var(--uc-identity-colour-purple); + --uc-shadow-colour: #151515; + +} + + +#topmenu { display: none !important; } + + +#tablist-wrapper, +#pinnedtablist { background: var(--uc-base-colour); } + +.tab:hover, +.tab.active { background: var(--uc-highlight-colour); } + + + +#tablist-wrapper .tab-title-wrapper { + + opacity: 0; + transform: translateX(-10px); + + transition: all 200ms ease; + transition-delay: 0ms; + +} + + +body:hover #tablist-wrapper .tab-title-wrapper { + + opacity: 1; + transform: translateX(0); + + transition-delay: 50ms; + +} + + + +.tab, +.tab.active { border-bottom: none !important; } + + + +#pinnedtablist:not(.compact) .tab { padding: 6px; } +#tablist .tab { padding: 0 0 0 6px; } + + + +.tab { overflow: visible; } + + + +#pinnedtablist:not(.compact) .tab[data-identity-color] .tab-context::before, +#tablist .tab[data-identity-color] .tab-context::before { + + position: absolute; + top: 4px; bottom: 4px; + + width: 2px; + + background: var(--identity-color); + + content: ''; + +} + +#tablist .tab[data-identity-color] .tab-context::before { left: -3px; } + + +#pinnedtablist:not(.compact) .tab .tab-pin, +.tab-close, +.tab-loading-burst { display: none; } + +#pinnedtablist:not(.compact) .tab[data-identity-color] .tab-context { box-shadow: none !important; } + +[data-identity-color="blue"] { --identity-color: var(--uc-identity-colour-blue); } +[data-identity-color="turquoise"] { --identity-color: var(--uc-identity-colour-turquoise); } +[data-identity-color="green"] { --identity-color: var(--uc-identity-colour-green); } +[data-identity-color="yellow"] { --identity-color: var(--uc-identity-colour-yellow); } +[data-identity-color="orange"] { --identity-color: var(--uc-identity-colour-orange); } +[data-identity-color="red"] { --identity-color: var(--uc-identity-colour-red); } +[data-identity-color="pink"] { --identity-color: var(--uc-identity-colour-pink); } +[data-identity-color="purple"] { --identity-color: var(--uc-identity-colour-purple); } + +.can-scroll-top #tablist { mask: linear-gradient(transparent, var(--uc-shadow-colour) 40px); } +.can-scroll-bottom #tablist { mask: linear-gradient(var(--uc-shadow-colour) calc(100% - 40px), transparent); } +.can-scroll-bottom.can-scroll-top #tablist { mask: linear-gradient(transparent, var(--uc-shadow-colour) 40px calc(100% - 40px), transparent); } +#topshadow, #bottomshadow { display: none; } + ''; +} diff --git a/home/programs/gui/floorp/user/tcr.nix b/home/programs/gui/floorp/user/tcr.nix new file mode 100644 index 0000000..43300a6 --- /dev/null +++ b/home/programs/gui/floorp/user/tcr.nix @@ -0,0 +1,4 @@ +{ ... }: { + programs.floorp.profiles.megamozg.userChrome = + " #TabsToolbar { display: none !important; }\n #nav-bar { width: 100vw !important; }\n \n #browser { position: relative; }\n #sidebar-box[sidebarcommand*=\"tabcenter\"] #sidebar-header { display: none; }\n \n #sidebar-box[sidebarcommand*=\"tabcenter\"]:not([hidden]) {\n \n display: block;\n \n position: absolute;\n top: 0; bottom: 0;\n z-index: 1;\n \n min-width: 50px !important; max-width: 50px !important;\n \n border-right: none;\n \n transition: all 0.8s ease;\n \n overflow: hidden;\n \n }\n \n [sidebarcommand*=\"tabcenter\"] #sidebar,\n #sidebar-box[sidebarcommand*=\"tabcenter\"]:hover { min-width: 10vw !important; width: 30vw !important; max-width: 250px !important; }\n \n [sidebarcommand*=\"tabcenter\"] #sidebar { height: 100%; max-height: 100%; }\n \n #sidebar-box[sidebarcommand*=\"tabcenter\"]:not([hidden]) ~ #appcontent { margin-left: 50px; }\n #main-window[inFullscreen][inDOMFullscreen] #appcontent { margin-left: 0; }\n /* Removes gap between active tab highlight and edge of bar */\n #sidebar-box[sidebarcommand=\"tabcenter-reborn_ariasuni-sidebar-action\"] #sidebar-header, #sidebar-box[sidebarcommand=\"tabcenter-reborn_ariasuni-sidebar-action\"] ~ #sidebar-splitter {\n display: none;\n }\n"; +} diff --git a/home/programs/gui/mpv/default.nix b/home/programs/gui/mpv/default.nix new file mode 100644 index 0000000..7f22578 --- /dev/null +++ b/home/programs/gui/mpv/default.nix @@ -0,0 +1,86 @@ +{ pkgs, ... }: { + programs.mpv = { + enable = true; + scripts = with pkgs.mpvScripts; [ thumbnail sponsorblock-minimal ]; + scriptOpts = { + sponsorblock-minimal = { + sponsorblock_minimal-server = + "https://sponsor.ajay.app/api/skipSegments"; + sponsorblock_minimal-categories = [ "sponsor" ]; + }; + mpv_thumbnail_script = { + autogenerate = "yes"; + autogenerate_max_duration = "3600"; + prefer_mpv = "yes"; + mpv_no_sub = "no"; + thumbnail_width = 200; + thumbnail_height = 200; + thumbnail_count = 150; + thumbnail_network = "no"; + background_color = "282828"; + }; + }; + config = { + fs = "yes"; + osc = "no"; + glsl-shaders = + "${pkgs.anime4k}/Anime4K_Clamp_Highlights.glsl:${pkgs.anime4k}/Anime4K_Restore_CNN_VL.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; + }; + bindings = { + WHEEL_UP = "add volume 2"; + WHEEL_DOWN = "add volume -2"; + "Shift+WHEEL_UP" = "add volume 5"; + "Shift+WHEEL_DOWN" = "add volume -5"; + + RIGHT = "seek 5"; + l = "seek 5"; + "д" = "seek 5"; + + LEFT = "seek -5"; + h = "seek -5"; + "р" = "seek -5"; + + UP = "add volume 2"; + k = "add volume 2"; + "л" = "add volume 2"; + + DOWN = "add volume -2"; + j = "add volume -2"; + "о" = "add volume -2"; + + "Shift+RIGHT" = "seek 10"; + "Shift+LEFT" = "seek -10"; + + "Shift+UP" = "add volume 5"; + "Shift+DOWN" = "add volume -5"; + + q = "quit"; + "й" = "quit"; + Q = "quit-watch-later"; + + SPACE = "cycle pause"; + p = "cycle pause"; + "з" = "cycle pause"; + + m = "cycle mute"; + "ь" = "cycle mute"; + + o = "show-progress"; + "щ" = "show-progress"; + + f = "cycle fullscreen"; + "а" = "cycle fullscreen"; + ESC = "set fullscreen no"; + }; + extraInput = '' + CTRL+1 no-osd change-list glsl-shaders set "${pkgs.anime4k}/Anime4K_Clamp_Highlights.glsl:${pkgs.anime4k}/Anime4K_Restore_CNN_VL.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)" + CTRL+2 no-osd change-list glsl-shaders set "${pkgs.anime4k}/Anime4K_Clamp_Highlights.glsl:${pkgs.anime4k}/Anime4K_Restore_CNN_Soft_VL.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)" + CTRL+3 no-osd change-list glsl-shaders set "${pkgs.anime4k}/Anime4K_Clamp_Highlights.glsl:${pkgs.anime4k}/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)" + CTRL+4 no-osd change-list glsl-shaders set "${pkgs.anime4k}/Anime4K_Clamp_Highlights.glsl:${pkgs.anime4k}/Anime4K_Restore_CNN_VL.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${pkgs.anime4k}/Anime4K_Restore_CNN_M.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)" + CTRL+5 no-osd change-list glsl-shaders set "${pkgs.anime4k}/Anime4K_Clamp_Highlights.glsl:${pkgs.anime4k}/Anime4K_Restore_CNN_Soft_VL.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${pkgs.anime4k}/Anime4K_Restore_CNN_Soft_M.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)" + CTRL+6 no-osd change-list glsl-shaders set "${pkgs.anime4k}/Anime4K_Clamp_Highlights.glsl:${pkgs.anime4k}/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${pkgs.anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${pkgs.anime4k}/Anime4K_Restore_CNN_M.glsl:${pkgs.anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)" + + CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared" + ''; + }; +} diff --git a/home/programs/gui/obs-studio/default.nix b/home/programs/gui/obs-studio/default.nix new file mode 100644 index 0000000..086e0d0 --- /dev/null +++ b/home/programs/gui/obs-studio/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: { + programs.obs-studio = { + enable = true; + package = pkgs.obs-studio; + plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-vkcapture + input-overlay + ]; + }; +} diff --git a/home/programs/gui/pkgs.nix b/home/programs/gui/pkgs.nix new file mode 100644 index 0000000..069f24d --- /dev/null +++ b/home/programs/gui/pkgs.nix @@ -0,0 +1,37 @@ +{ pkgs, inputs, ... }: { + imports = [ inputs.nur.hmModules.nur ]; + home.packages = with pkgs; [ + home-manager + + vesktop + tor-browser + qbittorrent-enhanced + + xdg-user-dirs + onlyoffice-bin + + nemo-with-extensions + nemo-fileroller + nemo-emblems + gvfs + + obsidian + + popsicle + ventoy + + swayimg + anime4k + + bottles + cartridges + mangohud + steam-tui + + (prismlauncher.override { + jdks = [ temurin-bin-21 temurin-bin-17 temurin-bin-8 ]; + }) + + inputs.ayugram-desktop.packages.${pkgs.system}.default + ]; +} diff --git a/home/programs/gui/qbittorrent/default.nix b/home/programs/gui/qbittorrent/default.nix new file mode 100644 index 0000000..6618bdd --- /dev/null +++ b/home/programs/gui/qbittorrent/default.nix @@ -0,0 +1,35 @@ +{ ... }: { + xdg.configFile = { + # COLORSCHEME + "qBittorrent/themes/default/config.json".text = '' + { + "colors.dark": { + "Log.BannedPeer": "#b66467", + "Log.Critical": "#b66467", + "Log.Info": "#8da3b9", + "Log.TimeStamp": "#bbb6b6", + "Log.Warning": "#d9bc8c", + "TransferList.CheckingDownloading": "#8c977d", + "TransferList.CheckingResumeData": "#8c977d", + "TransferList.CheckingUploading": "#8c977d", + "TransferList.Downloading": "#d9bc8c", + "TransferList.DownloadingMetadata": "#d9bc8c", + "TransferList.Error": "#b66467", + "TransferList.ForcedDownloading": "#d9bc8c", + "TransferList.ForcedDownloadingMetadata": "#d9bc8c", + "TransferList.ForcedUploading": "#d9bc8c", + "TransferList.MissingFiles": "#b66467", + "TransferList.Moving": "#8aa6a2", + "TransferList.PausedDownloading": "#a988b0", + "TransferList.PausedUploading": "#a988b0", + "TransferList.QueuedDownloading": "#d9bc8c", + "TransferList.QueuedUploading": "#d9bc8c", + "TransferList.StalledDownloading": "#8c977d", + "TransferList.StalledUploading": "#bbb6b6", + "TransferList.Uploading": "#bbb6b6" + }, + "version": 2 + } + ''; + }; +} diff --git a/home/programs/gui/qutebrowser/default.nix b/home/programs/gui/qutebrowser/default.nix new file mode 100644 index 0000000..08d982b --- /dev/null +++ b/home/programs/gui/qutebrowser/default.nix @@ -0,0 +1 @@ +{ ... }: { programs.qutebrowser = { enable = true; }; } diff --git a/home/programs/gui/spotify/default.nix b/home/programs/gui/spotify/default.nix new file mode 100644 index 0000000..a88b6c1 --- /dev/null +++ b/home/programs/gui/spotify/default.nix @@ -0,0 +1,46 @@ +{ pkgs, config, inputs, ... }: +let spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; +in { + imports = [ inputs.spicetify-nix.homeManagerModules.default ]; + programs.spicetify = { + enable = true; + theme = spicePkgs.themes.sleek; + colorScheme = "custom"; + customColorScheme = with config.lib.stylix.colors; { + # BASE 16 SCHEME + text = "${base07}"; + subtext = "${base06}"; + sidebar-text = "${base07}"; + main = "${base00}"; + sidebar = "${base02}"; + player = "${base00}"; + card = "${base00}"; + shadow = "${base00}"; + selected-row = "${base0C}"; + button = "${base0B}"; + button-active = "${base0B}"; + button-disabled = "${base03}"; + tab-active = "${base0A}"; + notification = "${base0A}"; + notification-error = "${base08}"; + misc = "${base02}"; + }; + enabledExtensions = with spicePkgs.extensions; [ + # OFFICIAL + fullAppDisplay + shuffle + + #COMMUNITY + adblockify + adblock + + historyShortcut + beautifulLyrics + playlistIcons + betterGenres + powerBar + seekSong + history + ]; + }; +} diff --git a/home/programs/gui/swayimg/default.nix b/home/programs/gui/swayimg/default.nix new file mode 100644 index 0000000..ea1ba10 --- /dev/null +++ b/home/programs/gui/swayimg/default.nix @@ -0,0 +1,219 @@ +{ config, ... }: { + xdg.configFile = with config.lib.stylix.colors; { + "swayimg/config".text = '' + ################################################################################ + # General configuration + ################################################################################ + [general] + # Mode at startup (viewer/gallery) + mode = viewer + # Window position (parent or absolute coordinates, e.g. 100,200) + position = parent + # Window size (fullscreen/parent/image, or absolute size, e.g. 800,600) + size = fullscreen + # Action performed by SIGUSR1 signal (same format as for key bindings) + sigusr1 = reload + # Action performed by SIGUSR2 signal (same format as for key bindings) + sigusr2 = next_file + # Application ID and window class name + app_id = swayimg + + ################################################################################ + # Viewer mode configuration + ################################################################################ + [viewer] + # Window background color (RGBA) + window = #000000ff + # Background for transparent images (grid/RGBA) + transparency = grid + # Default image scale (optimal/fit/width/height/fill/real) + scale = optimal + # Fix position of the image on the window surface (yes/no) + fixed = yes + # Anti-aliasing (yes/no) + antialiasing = no + # Run slideshow at startup (yes/no) + slideshow = no + # Slideshow image display time (seconds) + slideshow_time = 3 + # Number of previously viewed images to store in cache + history = 1 + # Number of preloaded images (read ahead) + preload = 1 + + ################################################################################ + # Gallery mode configuration + ################################################################################ + [gallery] + # Max size of the thumbnail (pixels) + size = 200 + # Max number of thumbnails in cache, 0 to unlimit + cache = 100 + # Fill the entire tile with thumbnail (yes/no) + fill = yes + # Use anti-aliasing for thumbnails (yes/no) + antialiasing = yes + # Background color of the window (RGBA) + window = #${base00}ff + # Background color of the tile (RGBA) + background = #${base01}ff + # Background color of the selected tile (RGBA) + select = #${base02}ff + # Border color of the selected tile (RGBA) + border = #${base0E}ff + # Shadow color of the selected tile (RGBA) + shadow = #${base00}a0 + + ################################################################################ + # Image list configuration + ################################################################################ + [list] + # Default order (none/alpha/reverse/random) + order = alpha + # Looping list of images (yes/no) + loop = yes + # Read directories recursively (yes/no) + recursive = no + # Open all files in the start directory (yes/no) + all = yes + + ################################################################################ + # Font configuration + ################################################################################ + [font] + # Font name + name = JetBrainsMono NerdFont + # Font size (pt) + size = 14 + # Font color (RGBA) + color = #${base06}ff + # Shadow color (RGBA) + shadow = #${base00}a0 + + ################################################################################ + # Image meta info scheme (format, size, EXIF, etc) + ################################################################################ + [info] + # Show on startup (yes/no) + show = yes + # Timeout to hide info (seconds, 0 to always show) + info_timeout = 5 + # Timeout to hide status message (seconds) + status_timeout = 3 + + # Display scheme for viewer mode (position = content) + [info.viewer] + top_left = none + top_right = index + bottom_left = none + bottom_right = none + + # Display scheme for gallery mode (position = content) + [info.gallery] + top_left = none + top_right = index + bottom_left = none + bottom_right = none + + ################################################################################ + # Viewer mode key binding configuration: key = action [parameters] + ################################################################################ + [keys.viewer] + F1 = help + Home = first_file + g = first_file + End = last_file + Shift+g = last_file + Prior = prev_file + Next = next_file + h = zoom +10 + j = next_file + k = prev_file + l = zoom -10 + Space = next_file + Shift+d = prev_dir + d = next_dir + Shift+o = prev_frame + o = next_frame + c = skip_file + Shift+s = slideshow + s = animation + f = fullscreen + Return = mode + Left = step_left 10 + Right = step_right 10 + Up = step_up 10 + Down = step_down 10 + Equal = zoom +10 + Plus = zoom +10 + Minus = zoom -10 + w = zoom width + Shift+w = zoom height + z = zoom fit + Shift+z = zoom fill + 0 = zoom real + BackSpace = zoom optimal + bracketleft = rotate_left + bracketright = rotate_right + m = flip_vertical + Shift+m = flip_horizontal + a = antialiasing + r = reload + i = info + Shift+Delete = exec rm "%"; skip_file + Escape = exit + q = exit + # Mouse related + ScrollLeft = step_right 5 + ScrollRight = step_left 5 + ScrollUp = step_up 5 + ScrollDown = step_down 5 + Ctrl+ScrollUp = zoom +10 + Ctrl+ScrollDown = zoom -10 + Shift+ScrollUp = prev_file + Shift+ScrollDown = next_file + Alt+ScrollUp = prev_frame + Alt+ScrollDown = next_frame + + ################################################################################ + # Gallery mode key binding configuration: key = action [parameters] + ################################################################################ + [keys.gallery] + F1 = help + + Home = first_file + g = first_file + + End = last_file + Shift+g = last_file + + Left = step_left + Right = step_right + Up = step_up + Down = step_down + + h = step_left + j = step_down + k = step_up + l = step_right + Prior = page_up + Next = page_down + + c = skip_file + f = fullscreen + Return = mode + a = antialiasing + r = reload + + i = info + Shift+Delete = exec rm "%"; skip_file + Escape = exit + q = exit + # Mouse related + ScrollLeft = step_right + ScrollRight = step_left + ScrollUp = step_up + ScrollDown = step_down + ''; + }; +} diff --git a/home/programs/misc/dconf.nix b/home/programs/misc/dconf.nix new file mode 100644 index 0000000..04de62d --- /dev/null +++ b/home/programs/misc/dconf.nix @@ -0,0 +1,8 @@ +{ ... }: { + dconf = { + enable = true; + settings = { + "org/gnome/desktop/wm/preferences" = { button-layout = ""; }; + }; + }; +} diff --git a/home/programs/misc/default.nix b/home/programs/misc/default.nix new file mode 100644 index 0000000..c5a27e9 --- /dev/null +++ b/home/programs/misc/default.nix @@ -0,0 +1,9 @@ +{ + imports = [ + ./dconf.nix + ./nwg.nix + ./nix.nix + ./xdg.nix + # ./env.nix + ]; +} diff --git a/home/programs/misc/env.nix b/home/programs/misc/env.nix new file mode 100644 index 0000000..219b175 --- /dev/null +++ b/home/programs/misc/env.nix @@ -0,0 +1,6 @@ +{ ... }: { + home.sessionVariables = { + MICRO_TRUECOLOR = "1"; + QT_QPA_PLATFORMTHEME = "qt5ct"; + }; +} diff --git a/home/programs/misc/nix.nix b/home/programs/misc/nix.nix new file mode 100644 index 0000000..b0cee90 --- /dev/null +++ b/home/programs/misc/nix.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: { + nix = { + package = pkgs.nix; + settings = { + warn-dirty = false; + experimental-features = [ "nix-command" "flakes" ]; + extra-experimental-features = [ "nix-command" "flakes" ]; + builders-use-substitutes = true; + auto-optimise-store = true; + extra-substituters = + [ "https://yazi.cachix.org" "https://cache.garnix.io" ]; + extra-trusted-public-keys = [ + "yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + ]; + trusted-users = [ "dragora" "@wheel" ]; + }; + }; + nixpkgs.config = { + allowBroken = true; + allowUnfree = true; + }; +} diff --git a/home/programs/misc/nwg.nix b/home/programs/misc/nwg.nix new file mode 100644 index 0000000..b5b02da --- /dev/null +++ b/home/programs/misc/nwg.nix @@ -0,0 +1,6 @@ +{ pkgs, config, lib, ... }: { + xdg.configFile = with config.lib.stylix.colors; { + "nwg-drawer/drawer.css".text = + " window {\n background-color: #${base00};\n color: #eeeeee;\n }\n \n button {\n color: #${base04};\n background-color: #${base00};\n }\n \n button:hover {\n color: #${base04};\n background-color: #${base01};\n }\n"; + }; +} diff --git a/home/programs/misc/xdg.nix b/home/programs/misc/xdg.nix new file mode 100644 index 0000000..b6e15b2 --- /dev/null +++ b/home/programs/misc/xdg.nix @@ -0,0 +1,37 @@ +{ pkgs, config, ... }: +let hmdir = config.home.homeDirectory; +in { + xdg = { + portal = { + enable = true; + config.common.default = "gtk"; + extraPortals = with pkgs; [ + xdg-desktop-portal-hyprland + xdg-desktop-portal-gtk + ]; + }; + mime = { enable = true; }; + mimeApps = { + # defaultApplications = { + # "default-web-browser" = [ "floorp.desktop" ]; + # "text/html" = [ "floorp.desktop" ]; + # "x-scheme-handler/http" = [ "floorp.desktop" ]; + # "x-scheme-handler/https" = [ "floorp.desktop" ]; + # "x-scheme-handler/about" = [ "floorp.desktop" ]; + # "x-scheme-handler/unknown" = [ "floorp.desktop" ]; + # }; + }; + userDirs = { + enable = true; + createDirectories = true; + desktop = "${hmdir}/Desktop"; + documents = "${hmdir}/Documents"; + download = "${hmdir}/Downloads"; + music = "${hmdir}/Music"; + pictures = "${hmdir}/Pictures"; + publicShare = "${hmdir}/"; + templates = "${hmdir}/"; + videos = "${hmdir}/Videos"; + }; + }; +} diff --git a/home/programs/shells/default.nix b/home/programs/shells/default.nix new file mode 100644 index 0000000..b8cf816 --- /dev/null +++ b/home/programs/shells/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./starship.nix + + # ./zsh + ./fish + ]; +} diff --git a/home/programs/shells/fish/default.nix b/home/programs/shells/fish/default.nix new file mode 100644 index 0000000..b6597c5 --- /dev/null +++ b/home/programs/shells/fish/default.nix @@ -0,0 +1,81 @@ +{ ... }: { + programs.fish = { + enable = true; + shellAliases = { + e = "$EDITOR"; + sudo = "doas"; + + cp = "cpz"; + rm = "rmz"; + + c = "clear"; + x = "exit"; + + nhs = "nh home switch"; + nos = "nh os switch"; + nca = "nh clean all"; + + ls = "eza --icons=always --group-directories-first"; + lsl = "eza --icons=always -l --group-directories-first"; + lst = "eza --icons=always -T --group-directories-first"; + + ls1 = "eza --icons=always -1 --group-directories-first"; + ls11 = "eza --icons=never -1 --group-directories-first"; + lsd = "eza --icons=never -D1 --group-directories-first"; + lsf = "eza --icons=never -f1 --group-directories-first"; + + cat = "bat --theme base16"; + + ff = "fastfetch"; + of = + "nix run nixpkgs#onefetch -- -d commits churn license head --no-art --no-color-palette -t 5"; + + r = "ranger"; + y = "yazi"; + j = "joshuto"; + nxt = "nix-tree"; + + m = "micro"; + v = "nvim"; + h = "hx"; + + fsf = "fastfetch"; + cpf = "cpufetch"; + cav = "cava"; + pmx = "pulsemixer"; + blt = "bluetuith"; + + gl = "git clone"; + ga = "git add ."; + gA = "git add"; + gc = "git commit -m"; + gC = "git commit -m 'update  '"; + gp = "git push"; + gP = "git pull"; + + lut = "lutgen apply -p paradise"; + lutall = "lutgen apply -p paradise ./*"; + icat = "kitten icat"; + + btp = "btop"; + nvt = "nvtop -i"; + + ter = "tenki --mode rain --wind disable --timer-color cyan -f 80"; + tes = "tenki --mode snow --wind disable --timer-color yellow -f 80"; + tem = "tenki --mode meteor --wind disable --timer-color red -f 80"; + + rmr = "trash restore"; + rmp = "trash put"; + tre = "trash empty -all"; + + nxr = "nix run"; + nxf = "nix-prefetch-github"; + }; + interactiveShellInit = + " set fish_greeting\n [ \"$(tty)\" = /dev/tty1 ] && exec Hyprland\n"; + }; + xdg.configFile = { + "lutgen/paradise".text = + " 151515 1F1F1F 2E2E2E 424242 BBB6B6 E8E3E3 E8E3E3 E8E3E3 B66467 D9BC8C D9BC8C 8C977D 8AA6A2 8DA3B9 A988B0 BBB6B6\n"; + }; +} diff --git a/home/programs/shells/starship.nix b/home/programs/shells/starship.nix new file mode 100644 index 0000000..4d0a201 --- /dev/null +++ b/home/programs/shells/starship.nix @@ -0,0 +1,65 @@ +{ lib, ... }: { + programs.starship = { + enable = true; + settings = { + add_newline = true; + format = lib.concatStrings [ + "$shell" + "$username" + "$directory" + "$git_branch" + "$package" + "$cmd_duration" + "$line_break" + "$character" + ]; + shell = { + fish_indicator = "[fish]($style)"; + zsh_indicator = "[zsh]($style)"; + bash_indicator = "[bash]($style)"; + nu_indicator = "[nu]($style)"; + unknown_indicator = "[sh ?]"; + style = "bold fg:purple"; + disabled = false; + }; + username = { + style_user = "bold red"; + style_root = "bold red"; + format = "[$user]($style) in "; + show_always = true; + disabled = false; + }; + directory = { + format = "[$path]($style) [$read_only]($read_only_style)"; + style = "bold fg:blue"; + read_only = "[󰌾] "; + read_only_style = "bold red"; + home_symbol = "~~"; + truncation_length = 2; + truncation_symbol = "../"; + disabled = false; + }; + git_branch = { + format = "on [$symbol$branch]($style) "; + style = "bold italic fg:green"; + symbol = " "; + truncation_length = 4; + truncation_symbol = ""; + disabled = false; + }; + package = { format = "via [󰏗 $version](bold fg:yellow) "; }; + cmd_duration = { + min_time = 1000; + format = "took [$duration](bold fg:yellow)"; + disabled = false; + }; + character = { + format = "$symbol "; + success_symbol = "[❯❯❯](bold green)"; + error_symbol = "[❯❯❯](bold red)"; + vimcmd_symbol = "[❯❯❯](bold yellow)"; + disabled = false; + }; + }; + }; +} diff --git a/home/programs/shells/zsh/default.nix b/home/programs/shells/zsh/default.nix new file mode 100644 index 0000000..3b39b11 --- /dev/null +++ b/home/programs/shells/zsh/default.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: +{ + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + completionInit = "autoload -U compinit && compinit"; + zplug = { + enable = true; + plugins = [ + { name = "nix-community/nix-zsh-completions"; } + { name = " jnooree/zoxide-zsh-completion"; } + { name = "toku-sa-n/zsh-dot-up"; } + { name = "anatolykopyl/doas-zsh-plugin"; } + { name = " zshzoo/cd-ls"; } + ]; + }; + }; +} diff --git a/home/themes/default.nix b/home/themes/default.nix new file mode 100644 index 0000000..ebe2c04 --- /dev/null +++ b/home/themes/default.nix @@ -0,0 +1,8 @@ +{ + imports = [ + ./stylix/stylix.nix + ./gtk.nix + + ./qt + ]; +} diff --git a/home/themes/gtk.nix b/home/themes/gtk.nix new file mode 100644 index 0000000..88cf4c0 --- /dev/null +++ b/home/themes/gtk.nix @@ -0,0 +1,21 @@ +{ pkgs, lib, ... }: { + home.packages = with pkgs; [ + noto-fonts + noto-fonts-cjk + openmoji-color + (nerdfonts.override { fonts = [ "FiraCode" "JetBrainsMono" ]; }) + ]; + gtk = { + enable = true; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme.override { color = "yaru"; }; + }; + font = lib.mkForce { + name = "JetBrainsMono NerdFont"; + package = + pkgs.nerdfonts.override { fonts = [ "FiraCode" "JetBrainsMono" ]; }; + size = 12; + }; + }; +} diff --git a/home/themes/qt/default.nix b/home/themes/qt/default.nix new file mode 100644 index 0000000..a7ab7cd --- /dev/null +++ b/home/themes/qt/default.nix @@ -0,0 +1 @@ +{ imports = [ ./qt5ct.nix ./qt6ct.nix ./qt.nix ]; } diff --git a/home/themes/qt/qt.nix b/home/themes/qt/qt.nix new file mode 100644 index 0000000..a4c8df1 --- /dev/null +++ b/home/themes/qt/qt.nix @@ -0,0 +1,6 @@ +{ + qt = { + enable = true; + platformTheme.name = "qtct"; + }; +} diff --git a/home/themes/qt/qt5ct.nix b/home/themes/qt/qt5ct.nix new file mode 100644 index 0000000..6240f0e --- /dev/null +++ b/home/themes/qt/qt5ct.nix @@ -0,0 +1,48 @@ +{ pkgs, config, ... }: { + xdg.configFile = with config.lib.stylix.colors; { + "qt5ct/colors/paradise.conf".text = '' + [ColorScheme] + active_colors=#ff${base06}, #ff${base01}, #ff${base01}, #ff${base00}, #ff${base03}, #ff${base0C}, #ff${base06}, #ff${base06}, #${base06}, #ff${base00}, #ff${base01}, #ff${base00}, #ff${base02}, #ff${base06}, #ff${base0B}, #ff, #ff151515, #ffe8e3e3, #ff181926, #ffe8e3e3, #80151515 + disabled_colors=#ff808080, #ff1f1f1f, #ff1f1f1f, #ff151515, #ff424242, #ff6e738d, #ff808080, #ffe8e3e3, #ff808080, #ff151515, #ff1f1f1f, #ff151515, #ff2e2e2e, #ff808080, #ff8c977d, #ffed8796, #ff151515, #ffe8e3e3, #ff181926, #ffe8e3e3, #80151515 + inactive_colors=#ffe8e3e3, #ff1f1f1f, #ff1f1f1f, #ff151515, #ff424242, #ff6e738d, #ffe8e3e3, #ffe8e3e3, #ffe8e3e3, #ff151515, #ff1f1f1f, #ff151515, #ff2e2e2e, #ffbbb6b6, #ff8c977d, #ffed8796, #ff151515, #ffe8e3e3, #ff181926, #ffe8e3e3, #80151515 + ''; + "qt5ct/qt5ct.conf".text = '' + [Appearance] + color_scheme_path=/home/dragora/.config/qt5ct/colors/paradise.conf + custom_palette=true + icon_theme=Papirus-Dark + standard_dialogs=default + style=Fusion + + [Fonts] + fixed="JetBrainsMono Nerd Font Mono,12,-1,5,50,0,0,0,0,0,Regular" + general="JetBrainsMono Nerd Font,12,-1,5,50,0,0,0,0,0,Regular" + + [Interface] + activate_item_on_single_click=1 + buttonbox_layout=0 + cursor_flash_time=1000 + dialog_buttons_have_icons=1 + double_click_interval=400 + gui_effects=@Invalid() + keyboard_scheme=2 + menus_have_icons=true + show_shortcuts_in_context_menus=true + stylesheets=@Invalid() + toolbutton_style=4 + underline_shortcut=1 + wheel_scroll_lines=3 + stylesheets=${pkgs.qt5ct}/share/qt5ct/qss/scrollbar-simple.qss, ${pkgs.qt5ct}/share/qt5ct/qss/sliders-simple.qss, ${pkgs.qt5ct}/share/qt5ct/qss/tooltip-simple.qss, ${pkgs.qt5ct}/share/qt5ct/qss/traynotification-simple.qss + + [PaletteEditor] + geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2v\0\0\x2\x10\0\0\0\0\0\0\0\0\0\0\x2v\0\0\x2\x10\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2v\0\0\x2\x10) + + [SettingsWindow] + geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xad\0\0\x3\xf5\0\0\0\0\0\0\0\0\0\0\x3\xbf\0\0\x4\v\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\xad\0\0\x3\xf5) + + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; + }; +} diff --git a/home/themes/qt/qt6ct.nix b/home/themes/qt/qt6ct.nix new file mode 100644 index 0000000..d06e29d --- /dev/null +++ b/home/themes/qt/qt6ct.nix @@ -0,0 +1,48 @@ +{ pkgs, ... }: { + xdg.configFile = { + "qt6ct/colors/paradise.conf".text = '' + [ColorScheme] + active_colors=#ffe8e3e3, #ff1f1f1f, #ff1f1f1f, #ff151515, #ff424242, #ff6e738d, #ffe8e3e3, #ffe8e3e3, #ffe8e3e3, #ff151515, #ff1f1f1f, #ff151515, #ff2e2e2e, #ffbbb6b6, #ff8c977d, #ffed8796, #ff151515, #ffe8e3e3, #ff181926, #ffe8e3e3, #80151515 + disabled_colors=#ff808080, #ff1f1f1f, #ff1f1f1f, #ff151515, #ff424242, #ff6e738d, #ff808080, #ffe8e3e3, #ff808080, #ff151515, #ff1f1f1f, #ff151515, #ff2e2e2e, #ff808080, #ff8c977d, #ffed8796, #ff151515, #ffe8e3e3, #ff181926, #ffe8e3e3, #80151515 + inactive_colors=#ffe8e3e3, #ff1f1f1f, #ff1f1f1f, #ff151515, #ff424242, #ff6e738d, #ffe8e3e3, #ffe8e3e3, #ffe8e3e3, #ff151515, #ff1f1f1f, #ff151515, #ff2e2e2e, #ffbbb6b6, #ff8c977d, #ffed8796, #ff151515, #ffe8e3e3, #ff181926, #ffe8e3e3, #80151515 + ''; + "qt6ct/qt6ct.conf".text = '' + [Appearance] + color_scheme_path=/home/dragora/.config/qt6ct/colors/paradise.conf + custom_palette=true + icon_theme=Papirus-Dark + standard_dialogs=default + style=Fusion + + [Fonts] + fixed="JetBrainsMono Nerd Font Mono,12,-1,5,50,0,0,0,0,0,Regular" + general="JetBrainsMono Nerd Font,12,-1,5,50,0,0,0,0,0,Regular" + + [Interface] + activate_item_on_single_click=1 + buttonbox_layout=0 + cursor_flash_time=1000 + dialog_buttons_have_icons=1 + double_click_interval=400 + gui_effects=@Invalid() + keyboard_scheme=2 + menus_have_icons=true + show_shortcuts_in_context_menus=true + stylesheets=@Invalid() + toolbutton_style=4 + underline_shortcut=1 + wheel_scroll_lines=3 + stylesheets=${pkgs.qt6ct}/share/qt6ct/qss/scrollbar-simple.qss, ${pkgs.qt6ct}/share/qt6ct/qss/sliders-simple.qss, ${pkgs.qt6ct}/share/qt6ct/qss/tooltip-simple.qss, ${pkgs.qt6ct}/share/qt6ct/qss/traynotification-simple.qss + + [PaletteEditor] + geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x2v\0\0\x2\x10\0\0\0\0\0\0\0\0\0\0\x2v\0\0\x2\x10\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x2v\0\0\x2\x10) + + [SettingsWindow] + geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\xad\0\0\x3\xf5\0\0\0\0\0\0\0\0\0\0\x3\xbf\0\0\x4\v\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\xad\0\0\x3\xf5) + + [Troubleshooting] + force_raster_widgets=1 + ignored_applications=@Invalid() + ''; + }; +} diff --git a/home/themes/stylix/paradise.nix b/home/themes/stylix/paradise.nix new file mode 100644 index 0000000..2d75891 --- /dev/null +++ b/home/themes/stylix/paradise.nix @@ -0,0 +1,27 @@ +{ inputs, ... }: +let + wal = inputs.walls; + img = "${wal}/desktop/flower14.jpeg"; +in { + stylix = { + image = img; + base16Scheme = { + base00 = "#151515"; + base01 = "#1F1F1F"; + base02 = "#2E2E2E"; + base03 = "#424242"; + base04 = "#BBB6B6"; + base05 = "#E8E3E3"; + base06 = "#E8E3E3"; + base07 = "#E8E3E3"; + base08 = "#B66467"; + base09 = "#D9BC8C"; + base0A = "#D9BC8C"; + base0B = "#8C977D"; + base0C = "#8AA6A2"; + base0D = "#8DA3B9"; + base0E = "#A988B0"; + base0F = "#BBB6B6"; + }; + }; +} diff --git a/home/themes/stylix/stylix.nix b/home/themes/stylix/stylix.nix new file mode 100644 index 0000000..130eb65 --- /dev/null +++ b/home/themes/stylix/stylix.nix @@ -0,0 +1,48 @@ +{ config, pkgs, inputs, ... }: { + imports = [ inputs.stylix.homeManagerModules.stylix ./paradise.nix ]; + stylix = { + enable = true; + autoEnable = false; + cursor = { + name = "GoogleDot-Black"; + package = pkgs.google-cursor; + size = 21; + }; + fonts = { + serif = { + name = "JetBrainsMono NerdFont"; + package = pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; }; + }; + monospace = config.stylix.fonts.serif; + emoji = { + name = "OpenMoji Color"; + package = pkgs.noto-fonts-emoji; + }; + sizes = { + desktop = 10; + popups = 10; + applications = 12; + terminal = 12; + }; + }; + targets = { + tmux.enable = true; + fish.enable = true; + nushell.enable = true; + hyprland.enable = true; + sway.enable = true; + foot.enable = true; + kitty.enable = true; + gtk.enable = true; + nixvim.enable = true; + yazi.enable = true; + fzf.enable = true; + bat.enable = true; + mako.enable = true; + mangohud.enable = true; + vesktop.enable = true; + qutebrowser.enable = true; + firefox.enable = true; + }; + }; +} diff --git a/home/window-managers/default.nix b/home/window-managers/default.nix new file mode 100644 index 0000000..ff6db60 --- /dev/null +++ b/home/window-managers/default.nix @@ -0,0 +1,20 @@ +{ pkgs, inputs, ... }: { + imports = [ + ./hyprland + # ./swayfx + ./terminals + ./misc + ]; + home.packages = with pkgs; [ + hyprcursor + hyprpicker + hyprpaper + kitty + mako + nwg-drawer + grimblast + wf-recorder + light + wl-clipboard + ]; +} diff --git a/home/window-managers/hyprland/binds.nix b/home/window-managers/hyprland/binds.nix new file mode 100644 index 0000000..5ff2186 --- /dev/null +++ b/home/window-managers/hyprland/binds.nix @@ -0,0 +1,161 @@ +{ pkgs, config, ... }: { + wayland.windowManager.hyprland.settings = with pkgs; { + # SHORTCUTS + "$m" = "SUPER"; + "$s" = "SHIFT"; + "$a" = "ALT"; + "$c" = "CTRL"; + + "$rt" = "RETURN"; + "$sp" = "SPACE"; + "$tb" = "TAB"; + + "$nx" = "Next"; + "$pr" = "Prior"; + "$p" = "Print"; + + "$md" = "mouse_down"; + "$mu" = "mouse_up"; + + # MOUSE + bindm = [ + "$m, mouse:272, movewindow" + "$m, mouse:273, resizewindow" + "$m $s, mouse:273, resizewindow 1" + ]; + + # KEYBOARD + bind = [ + # BUILTIN COMMANDS + "$m, $sp, togglefloating" + # "$m $s, $sp, hyprexpo:expo, toggle" + "$m, Q, killactive" + "$m, C, centerwindow" + "$m, F, fullscreen" + "$m, X, pseudo" + "$m, P, pin" + + "$m, O, cyclenext" + "$m $s, O, swapnext " + + "$m, G, togglegroup" + "$m $s, G, changegroupactive" + "$m $a, G, moveoutofgroup" + + "$m, D, togglespecialworkspace, extra" + "$m $s, D, movetoworkspace, special:extra" + + "$m, S, togglespecialworkspace, magic" + "$m $s, S, movetoworkspace, special:magic" + + "$m, $md, workspace, e+1" + "$m, $mu, workspace, e-1" + + "$m, $nx, workspace, e+1" + "$m, $pr, workspace, e-1" + + # PROGRAMS + "$m, $rt, exec, kitty -T Terminal" + "$m $s, $rt, exec, kitty --class=termfloat -T Terminal" + + "$m, $tb, exec, nwg-drawer -ovl -nocats -nofs -d -c 7 -mb -49" + + "$m, V, exec, ayugram-desktop" + "$m $s, V, exec, vesktop" + + "$m, B, exec, floorp" + "$m $s, B, exec, firefox" + + "$m, N, exec, kitty -T Explorer yazi" + "$m $s, N, exec, kitty --class=tfm -T Explorer yazi" + "$m $a, N, exec, nemo" + + "$m, M, exec, spotify" + "$m $s, M, exec, obsidian" + + "$m, A, exec, kitty --class=anicliru -T Anime anicli-ru -q 1080" + + "$m, Z, exec, kitty --class=miniprogs -T Sound pulsemixer --no-mouse" + "$m $s, Z, exec, kitty --class=miniprogs -T Bluetooth bluetuith" + + "$m, T, exec, bottles" + "$m $s, T, exec, prismlauncher" + + "$m, XF86WakeUp, exec, playerctl play-pause" + "$m, XF86Go, exec, playerctl next" + "$m, Cancel, exec, playerctl previous" + + ", $p, exec, grimblast copysave area $(xdg-user-dir PICTURES)/$(date +'scr_%d-%m-%y|%H:%M:%S.png')" + "$s, $p, exec, grimblast copysave output $(xdg-user-dir PICTURES)/$(date +'scr_%d-%m-%y|%H:%M:%S.png')" + "$a, $p, exec, grimblast copysave active $(xdg-user-dir PICTURES)/$(date +'scr_%d-%m-%y|%H:%M:%S.png')" + "$a $s, $p, exec, hyprpicker -a" + ] ++ (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)); + + # HOLDING BUTTONS + binde = [ + # HJKL + "$m, H, movefocus, l" + "$m, J, movefocus, d" + "$m, K, movefocus, u" + "$m, L, movefocus, r" + + "$m $s, H, swapwindow, l" + "$m $s, J, swapwindow, d" + "$m $s, K, swapwindow, u" + "$m $s, L, swapwindow, r" + + "$m $a, H, resizeactive, -50 0" + "$m $a, J, resizeactive, 0 50" + "$m $a, K, resizeactive, 0 -50" + "$m $a, L, resizeactive, 50 0" + + "$m $c, H, moveactive, -50 0" + "$m $c, J, moveactive, 0 50" + "$m $c, K, moveactive, 0 -50" + "$m $c, L, moveactive, 50 0" + + # ARROWS + "$m, left, movefocus, l" + "$m, down, movefocus, d" + "$m, up, movefocus, u" + "$m, right, movefocus, r" + + "$m $s, left, swapwindow, l" + "$m $s, down, swapwindow, d" + "$m $s, up, swapwindow, u" + "$m $s, right, swapwindow, r" + + "$m $a, left, resizeactive, -50 0" + "$m $a, down, resizeactive, 0 50" + "$m $a, up, resizeactive, 0 -50" + "$m $a, right, resizeactive, 50 0" + + "$m $c, left, moveactive, -50 0" + "$m $c, down, moveactive, 0 50" + "$m $c, up, moveactive, 0 -50" + "$m $c, right, moveactive, 50 0" + + # BRIGHTNESS + ", XF86MonBrightnessDown, exec, doas light -U 10" + ", XF86MonBrightnessUp, exec, doas light -A 10" + + # SOUND + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + + "$s, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%+" + "$s, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-" + + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioMicMute, exec, fixf4=$(cat /sys/class/leds/platform::micmute/brightness); echo $((1-fixf4)) | doas tee /sys/class/leds/platform::micmute/brightness; wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ]; + bindl = [ + # ", switch:on:Lid Switch, exec, hyprctl keyword input:kb_variant = us && hyprlock" + ]; + }; +} diff --git a/home/window-managers/hyprland/default.nix b/home/window-managers/hyprland/default.nix new file mode 100644 index 0000000..7d790a9 --- /dev/null +++ b/home/window-managers/hyprland/default.nix @@ -0,0 +1,11 @@ +{ pkgs, inputs, ... }: +let hpkg = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}; +in { + imports = [ ./binds.nix ./rules.nix ./settings.nix ./plugins.nix ]; + wayland.windowManager.hyprland = { + enable = true; + package = hpkg.hyprland; + xwayland.enable = true; + systemd.enable = true; + }; +} diff --git a/home/window-managers/hyprland/plugins.nix b/home/window-managers/hyprland/plugins.nix new file mode 100644 index 0000000..e8660b3 --- /dev/null +++ b/home/window-managers/hyprland/plugins.nix @@ -0,0 +1,36 @@ +{ pkgs, inputs, config, ... }: { + wayland.windowManager.hyprland = with config.lib.stylix.colors; { + plugins = with inputs; [ hyprfocus.packages.${pkgs.system}.default ]; + settings.plugin = { + # FOCUS + hyprfocus = { + enabled = "yes"; + animate_floating = "yes"; + animate_workspacechange = "yes"; + focus_animation = "focus"; + bezier = [ + "bezIn, 0.5,0.0,1.0,0.5" + "bezOut, 0.0,0.5,0.5,1.0" + "overshot, 0.05, 0.9, 0.1, 1.05" + "smoothOut, 0.36, 0, 0.66, -0.56" + "smoothIn, 0.25, 1, 0.5, 1" + "realsmooth, 0.28,0.29,.69,1.08" + ]; + flash = { + flash_opacity = 0.95; + in_bezier = "realsmooth"; + in_speed = 0.5; + out_bezier = "realsmooth"; + out_speed = 3; + }; + shrink = { + shrink_percentage = 0.95; + in_bezier = "realsmooth"; + in_speed = 1; + out_bezier = "realsmooth"; + out_speed = 2; + }; + }; + }; + }; +} diff --git a/home/window-managers/hyprland/rules.nix b/home/window-managers/hyprland/rules.nix new file mode 100644 index 0000000..cf1721f --- /dev/null +++ b/home/window-managers/hyprland/rules.nix @@ -0,0 +1,40 @@ +{ config, lib, ... }: { + wayland.windowManager.hyprland.settings = with config.lib.stylix.colors; { + windowrulev2 = [ + # "rounding 8, floating:1" + # "noshadow, floating:0" + # "noanim, floating:0" + + "workspace 2 silent, class:^(firefox)$" + "workspace 2 silent, class:^(floorp)$" + "workspace 3 silent, class:^(Spotify)$" + "workspace 4 silent, class:^(com.ayugram)$" + "workspace 4 silent, class:^(vesktop)$" + "workspace 5 silent, class:^(obsidian)$" + "workspace 6 silent, class:^(anicli)$" + + "float, class:^(termfloat)$" + "size 650 430, class:^(termfloat)$" + "move center, class:^(termfloat)$" + + "float, class:^(tfm)$" + "size 800 350, class:^(tfm)$" + "move center, class:^(tfm)$" + + "float, title:^(Media viewer)$" + "fullscreen, title:^(Media viewer)$" + "size 670 540, title:^(Media viewer)$" + + "float, class:^(xdg-desktop-portal-gtk)$" + "size 807 570, class:^(xdg-desktop-portal-gtk)$" + + "nodim, class:^(mpv)$" + "float, class:^(anicliru)$" + "size 660 630, class:^(anicliru)$" + "bordercolor rgb(${base08}) rgb(${base09}) 45deg, class:^(anicliru)$" + + "bordercolor rgb(${base0E}, title:^(Картинка в картинке)$" + "noshadow, title:^(Картинка в картинке)$" + ]; + }; +} diff --git a/home/window-managers/hyprland/settings.nix b/home/window-managers/hyprland/settings.nix new file mode 100644 index 0000000..e6d57de --- /dev/null +++ b/home/window-managers/hyprland/settings.nix @@ -0,0 +1,122 @@ +{ config, lib, inputs, ... }: +let wal = inputs.walls; +in { + wayland.windowManager.hyprland = { + settings = with config.lib.stylix.colors; { + monitor = ", 1920x1080@60, auto, 1"; + env = [ "SLURP_ARGS, -b ${base00}CC -c ${base06}FF -B ${base0F}CC" ]; + exec-once = [ + "mako" + # "swaybg -i ${config.stylix.image}" + ]; + + # APPERANCE + general = { + gaps_in = 4; + gaps_out = 8; + border_size = 3; + layout = "dwindle"; + allow_tearing = false; + "col.active_border" = lib.mkForce "rgb(${base01})"; + "col.inactive_border" = lib.mkForce "rgb(${base01})"; + }; + decoration = { + rounding = 12; + drop_shadow = true; + shadow_ignore_window = true; + shadow_offset = "0 0"; + shadow_range = 10; + shadow_render_power = 8; + dim_inactive = true; + dim_strength = 0.3; + blur = { + enabled = true; + size = 18; + passes = 5; + noise = 0; + new_optimizations = true; + ignore_opacity = true; + xray = false; + vibrancy = 0.9; + popups = true; + special = true; + }; + }; + group = { + "col.border_active" = lib.mkForce "rgb(${base0C}) rgb(${base0B}) 45deg"; + "col.border_inactive" = lib.mkForce "rgb(${base01})"; + groupbar = { + gradients = false; + "col.active" = lib.mkForce "rgb(${base05})"; + "col.inactive" = lib.mkForce "rgb(${base01})"; + render_titles = false; + }; + }; + + # ANIMATIONS + animations = { + enabled = true; + first_launch_animation = false; + bezier = [ + "linear, 1, 1, 1, 1" + "over, 0, 0.1, 0.1, 0.3" + "myBezier, 0.05, 0.9, 0.1, 1.0" + ]; + animation = [ + "windowsIn, 1, 3, myBezier, popin 80%" + "windowsOut, 1, 3, myBezier, popin 80%" + "windowsMove, 1, 2, over" + + "border, 1, 3, myBezier" + "workspaces, 1, 2.7, default, slide" + "specialWorkspaceIn, 1, 1, default, fade" + "specialWorkspaceOut, 1, 1, default, fade" + + "fade, 1, 2, myBezier" + "fadeShadow, 1, 4, default" + ]; + }; + + # TRACKPOINT | TOUCHPAD | MOUSE + cursor.inactive_timeout = 1; + input = { + kb_layout = "us,ru"; + kb_options = "grp:caps_toggle"; + accel_profile = "adaptive"; + touchpad = { + natural_scroll = false; + disable_while_typing = true; + }; + }; + gestures = { + workspace_swipe = true; + workspace_swipe_fingers = 3; + workspace_swipe_create_new = true; + }; + + # WINDOW LAYOUT + dwindle = { + pseudotile = true; + preserve_split = true; + smart_resizing = true; + # no_gaps_when_only = true; + force_split = 2; + }; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + mouse_move_enables_dpms = true; + vfr = true; + vrr = 1; + animate_manual_resizes = true; + animate_mouse_windowdragging = true; + enable_swallow = true; + close_special_on_empty = true; + background_color = lib.mkForce "rgb(${base00})"; + }; + }; + extraConfig = + " device {\n name = tpps/2-elan-trackpoint\n accel_profile = flat\n }\n"; + }; +} diff --git a/home/window-managers/misc/default.nix b/home/window-managers/misc/default.nix new file mode 100644 index 0000000..2adbdd5 --- /dev/null +++ b/home/window-managers/misc/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./mako + # ./waybar + # ./swaync + ]; +} diff --git a/home/window-managers/misc/mako/default.nix b/home/window-managers/misc/mako/default.nix new file mode 100644 index 0000000..cb94b80 --- /dev/null +++ b/home/window-managers/misc/mako/default.nix @@ -0,0 +1,18 @@ +{ config, lib, ... }: { + services.mako = with config.lib.stylix.colors; { + enable = true; + icons = true; + anchor = "top-right"; + actions = false; + backgroundColor = lib.mkForce "#${base01}"; + borderColor = lib.mkForce "#${base0E}"; + borderRadius = 12; + borderSize = 2; + textColor = lib.mkForce "#${base05}"; + layer = "overlay"; + sort = "-time"; + margin = "20, 10, 20"; + maxVisible = 5; + defaultTimeout = 0; + }; +} diff --git a/home/window-managers/misc/swaync/default.nix b/home/window-managers/misc/swaync/default.nix new file mode 100644 index 0000000..2302fec --- /dev/null +++ b/home/window-managers/misc/swaync/default.nix @@ -0,0 +1,30 @@ +{ config, ... }: { + services.swaync = { + enable = false; + settings = { + positionX = "right"; + positionY = "top"; + layer = "overlay"; + control-center-layer = "top"; + layer-shell = true; + cssPriority = "application"; + control-center-margin-top = 6; + control-center-margin-bottom = 0; + control-center-margin-right = 0; + control-center-margin-left = 0; + control-center-height = 600; + control-center-width = 500; + notification-2fa-action = true; + notification-inline-replies = false; + notification-icon-size = 64; + notification-body-image-height = 100; + notification-body-image-width = 200; + timeout = 10; + hide-on-clear = true; + hide-on-action = true; + transition-time = 200; + }; + style = with config.lib.stylix.colors; + " @define-color background #${base00};\n @define-color background-alt #${base01};\n @define-color background-focus #${base02};\n @define-color border #${base03};\n @define-color red #${base08};\n @define-color orange #${base0A};\n @define-color yellow #${base09};\n @define-color green #${base0B};\n @define-color blue #${base0C};\n @define-color gray #${base05};\n @define-color black #${base00};\n @define-color white #${base06};\n\n * {\n font-family: \"JetBrainsMono Nerd Font\" !important;\n }\n\n progress, progressbar, trough {\n border: 1px solid @border;\n border-radius: 16px;\n }\n\n trough {\n background: @background-alt;\n }\n\n .notification.low, .notification.normal {\n border: 1px solid @border;\n }\n\n .notification.low progress, .notification.normal progress {\n background: @blue;\n }\n\n .notification.critical {\n border: 1px solid @red;\n }\n\n .notification.critical progress {\n background: @red;\n }\n\n .body, .time {\n color: alpha(@white, 0.7);\n }\n"; + }; +} diff --git a/home/window-managers/misc/waybar/default.nix b/home/window-managers/misc/waybar/default.nix new file mode 100644 index 0000000..cd1f335 --- /dev/null +++ b/home/window-managers/misc/waybar/default.nix @@ -0,0 +1,145 @@ +{ config, ... }: { + imports = [ ./style.nix ]; + programs.waybar = with config.lib.stylix.colors; { + enable = true; + settings = { + # BAR AT BOTTOM + mainBar = { + layer = "top"; + position = "bottom"; + height = 1; + modules-left = [ + "custom/launcher" + "custom/separatorL" + "pulseaudio" + "custom/separatorL" + "backlight" + "custom/separatorL" + "network" + "custom/separatorL" + "hyprland/language" + ]; + modules-center = [ "hyprland/workspaces" ]; + modules-right = [ + "tray" + "custom/separatorR" + "disk" + "custom/separatorR" + "clock#time" + "custom/separatorR" + "battery" + ]; + + # LEFT MODULES + "custom/launcher" = { + format = " {}"; + on-click = "nwg-drawer -ovl -nocats -nofs -d -c 7 -mb -49"; + tooltip = false; + }; + "custom/separatorL" = { + format = "|"; + interval = 1; + tooltip = false; + }; + "pulseaudio" = { + format = "{icon} {volume}%"; + format-icons = { + default = [ "" " " " " ]; + headphone = [ "" ]; + headset = [ "" ]; + }; + format-muted = " muted"; + scroll-step = 3; + on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + tooltip = false; + }; + "backlight" = { + device = "intel_backlight"; + format = "{icon}{percent}%"; + format-icons = [ "󱩎 " "󱩏 " "󱩐 " "󱩑 " "󱩒 " "󱩓 " "󱩔 " "󱩕 " "󱩖 " "󰛨 " ]; + scroll-step = 1; + tooltip = false; + }; + "network" = { + format-icons = [ "󰤯" "󰤟" "󰤢" "󰤥" "󰤨" ]; + format-wifi = "{icon} CON"; + format-ethernet = "󰈀 ETH"; + format-disconnected = "⚠ ERR"; + on-click = "kitty nmtui"; + interval = 5; + tooltip = false; + }; + "hyprland/language" = { + format = "󰌌 {}"; + format-en = "EN"; + format-ru = "RU"; + keyboard-name = "at-translated-set-2-keyboard"; + tooltip = false; + }; + "cava" = { + framerate = 24; + autosens = 1; + bars = 12; + source = "auto"; + format-icons = [ "▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ]; + actions = { on-click-right = "mode"; }; + }; + + # CENTER MODULES + "hyprland/workspaces" = { + on-click = "activate"; + format = "{icon}"; + format-icons = { + "1" = "一"; + "2" = "二"; + "3" = "三"; + "4" = "四"; + "5" = "五"; + "6" = "六"; + "7" = "七"; + "8" = "八"; + "9" = "九"; + "10" = "十"; + }; + persistent-workspaces = { "*" = [ 1 2 3 4 5 6 7 8 9 10 ]; }; + }; + + # RIGHT MODULES + "custom/separatorR" = { + format = "|"; + interval = 1; + tooltip = false; + }; + "tray" = { + icon-size = 18; + show-passive-items = true; + spacing = 8; + }; + "disk" = { + format = "{used} of {total} 󰋊"; + interval = 30; + path = "/"; + unit = "GB"; + tooltip = false; + }; + "clock#time" = { + format = "{:%H:%M}  "; + interval = 1; + tooltip = false; + }; + "battery" = { + format = "{capacity}% {icon}"; + format-alt = "{time} {icon}"; + format-charging = "{capacity}% 󱐋"; + format-icons = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; + states = { + critical = 15; + warning = 30; + }; + tooltip = false; + }; + }; + }; + }; +} diff --git a/home/window-managers/misc/waybar/style.nix b/home/window-managers/misc/waybar/style.nix new file mode 100644 index 0000000..c8ce2cb --- /dev/null +++ b/home/window-managers/misc/waybar/style.nix @@ -0,0 +1,116 @@ +{ config, ... }: { + programs.waybar.style = with config.lib.stylix.colors; '' + /* BAR ITSELF */ + * { + font-family: "JetBrainsMono Nerd Font"; + font-weight: bold; + font-size: 16px; + } + + window#waybar { + background-color: transparent; + color: #${base06}; + } + + window#waybar > box { + margin: 5px 0px 0px 0px; + background-color: #${base00}; + border-top: 0px; + border-bottom: 0; + border-style: solid; + border-color: #3C3836; + /* box-shadow: 1 1 3 1px #101010; */ + } + + /* WORKSPACES */ + #workspaces button { + background-color: #${base03}; + border-radius: 20px; + margin: 2px; + padding: 0px; + padding-right: 6px; + padding-left: 6px; + color: #${base06}; + min-height: 25px; + transition: all 0.4s ease-in-out; + } + + #workspaces button label { + color: #${base06}; + font-weight: bolder; + } + + #workspaces button.empty { + background: #${base02}; + } + + #workspaces button.active { + background: radial-gradient(circle, #${base0E} 0%, #${base0E} 50%, #${base0D} 100%); + background-size: 400% 400%; + animation: gradient 5s linear infinite; + transition: all 0.3s ease-in-out; + border-color: #${base00}; + } + + #workspaces button.active label { + color: #${base02}; + font-weight: bolder; + } + + @keyframes gradient { + 0% { background-position: 0px 50px; } + 50% { background-position: 100px 30px; } + 100% { background-position: 0px 50px; } + } + + @keyframes gradient_f { + 0% { background-position: 0px 200px; } + 50% { background-position: 200px 0px; } + 100% { background-position: 400px 200px; } + } + + @keyframes gradient_f_nh { + 0% { background-position: 0px 200px; } + 100% { background-position: 200px 200px; } + } + + /* MODULES */ + #custom-date, + #battery, + #backlight + #clock, + #pulseaudio, + #workspaces, + #window, + #language, + #text, + #custom-launcher, + #custom-separator + + #battery, + #backlight, + #custom-date, + #cava, + #network, + #disk, + #clock, + #language, + #pulseaudio, + #custom-separator, + #custom-launcher, + #tray { + color: #${base06}; + background-color: transparent; + padding: 0 0.4em; + padding-top: 0px; + padding-bottom: 2px; + border-style: solid; + min-height: 30px; + } + + #workspaces { + margin: 3 0 3 0px; + border-radius: 14 14 14 14px; + } + ''; +} diff --git a/home/window-managers/swayfx/binds.nix b/home/window-managers/swayfx/binds.nix new file mode 100644 index 0000000..eca524d --- /dev/null +++ b/home/window-managers/swayfx/binds.nix @@ -0,0 +1,127 @@ +{ lib, ... }: +let + # MODIFIERS + m = "Mod4"; + s = "Shift"; + c = "Ctrl"; + a = "Alt"; + + # BUTTUONS + rt = "Return"; + tb = "Tab"; + sp = "Space"; + gr = "grave"; + pr = "print"; + + # DISPATCHERS + ex = "exec"; + ws = "workspace"; + mv = "move"; + cn = "container"; + nm = "number"; + + # ARROWS + r = "right"; + d = "down"; + u = "up"; + l = "left"; +in { + wayland.windowManager.sway.config.keybindings = lib.mkOptionDefault { + # SWAY NATIVE CMD + "${m}+q" = "kill"; + "${m}+f" = "fullscreen"; + "${m}+${sp}" = "floating toggle"; + "${m}+c" = "${ex} swaymsg move position center"; + "${m}+w" = "${ex} killall -SIGUSR1 waybar"; + + # PROGRAMS + "${m}+${rt}" = "${ex} foot -T Terminal"; + "${m}+${s}+${rt}" = "${ex} foot -a float -T Terminal"; + "${m}+${a}+${rt}" = + "${ex} foot -w $(slurp -b '#181926CC' -c '#8bd5caFF' -w '3' -f '%wx%h') -a footz -T Terminal"; + + "${m}+${tb}" = "${ex} nwg-drawer -nocats -nofs -d -c 7 -mb -49"; + + "${m}+b" = "${ex} firefox"; + "${m}+${s}+b" = "${ex} obsidian"; + + "${m}+v" = "${ex} ayugram"; + "${m}+${s}+v" = "${ex} vesktop"; + + "${m}+m" = "${ex} spotify"; + + "${m}+t" = "${ex} transmission-gtk"; + "${m}+${s}+t" = "${ex} qbittorrent"; + + "${m}+a" = "${ex} anicli-ru -q 720"; + + "${pr}" = "grimshot savecopy anything"; + "${pr}+${s}" = "grimshot savecopy output"; + + # CONTROL + "${m}+g" = "layout tabbed"; + "${m}+${s}+g" = "layout toggle split"; + + "${m}+p" = "move scratchpad"; + "${m}+${s}+p" = "scratchpad show"; + + "${m}+Home" = "exit"; + "${m}+${s}+Home" = "reload"; + + # WORKSPACES SWITCH + "${m}+1" = "${ws} ${nm} 1"; + "${m}+2" = "${ws} ${nm} 2"; + "${m}+3" = "${ws} ${nm} 3"; + "${m}+4" = "${ws} ${nm} 4"; + "${m}+5" = "${ws} ${nm} 5"; + "${m}+6" = "${ws} ${nm} 6"; + "${m}+7" = "${ws} ${nm} 7"; + "${m}+8" = "${ws} ${nm} 8"; + "${m}+9" = "${ws} ${nm} 9"; + "${m}+0" = "${ws} ${nm} 10"; + + # WORKSPACES MOVE + "${m}+${s}+1" = "${mv} ${cn} to ${ws} ${nm} 1"; + "${m}+${s}+2" = "${mv} ${cn} to ${ws} ${nm} 2"; + "${m}+${s}+3" = "${mv} ${cn} to ${ws} ${nm} 3"; + "${m}+${s}+4" = "${mv} ${cn} to ${ws} ${nm} 4"; + "${m}+${s}+5" = "${mv} ${cn} to ${ws} ${nm} 5"; + "${m}+${s}+6" = "${mv} ${cn} to ${ws} ${nm} 6"; + "${m}+${s}+7" = "${mv} ${cn} to ${ws} ${nm} 7"; + "${m}+${s}+8" = "${mv} ${cn} to ${ws} ${nm} 8"; + "${m}+${s}+9" = "${mv} ${cn} to ${ws} ${nm} 9"; + "${m}+${s}+0" = "${mv} ${cn} to ${ws} ${nm} 10"; + + # ARROWS + # "${m}+${r}" = "move workspace to output right"; + # "${m}+${d}" = "move workspace to output down"; + # "${m}+${u}" = "move workspace to output up"; + # "${m}+${l}" = "move workspace to output left"; + + # "${m}+${s}+${r}" = "move right"; + # "${m}+${s}+${d}" = "move down"; + # "${m}+${s}+${u}" = "move up"; + # "${m}+${s}+${l}" = "move left"; + + # "${m}+${a}+${r}" = "focus right"; + # "${m}+${a}+${d}" = "focus down"; + # "${m}+${a}+${u}" = "focus up"; + # "${m}+${a}+${l}" = "focus left"; + + # HJKL + "${m}+h" = "move workspace to output left"; + "${m}+j" = "move workspace to output down"; + "${m}+k" = "move workspace to output up"; + "${m}+l" = "move workspace to output right"; + + "${m}+${s}+h" = "move left"; + "${m}+${s}+j" = "move down"; + "${m}+${s}+k" = "move up"; + "${m}+${s}+l" = "move right"; + + "${m}+${a}+h" = "focus left"; + "${m}+${a}+j" = "focus down"; + "${m}+${a}+k" = "focus up"; + "${m}+${a}+l" = "focus right"; + }; +} diff --git a/home/window-managers/swayfx/default.nix b/home/window-managers/swayfx/default.nix new file mode 100644 index 0000000..8b1634d --- /dev/null +++ b/home/window-managers/swayfx/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: { + imports = [ ./binds.nix ./settings.nix ]; + wayland.windowManager.sway = { + enable = true; + xwayland = true; + systemd.enable = true; + + package = pkgs.swayfx; + }; +} diff --git a/home/window-managers/swayfx/settings.nix b/home/window-managers/swayfx/settings.nix new file mode 100644 index 0000000..ccd2248 --- /dev/null +++ b/home/window-managers/swayfx/settings.nix @@ -0,0 +1,84 @@ +{ config, lib, ... }: +let + m = "Mod4"; + s = "Shift"; + c = "Ctrl"; + a = "Alt"; + + pr = "Print"; +in { + wayland.windowManager.sway = with config.lib.stylix.colors; { + config = { + input = { + "*" = { + xkb_layout = "us,ru"; + xkb_options = "grp:caps_toggle"; + }; + }; + startup = [ + # { command = "${...}"; } + ]; + + modifier = "Mod4"; + left = "h"; + down = "j"; + up = "k"; + right = "l"; + + bindkeysToCode = true; + workspaceAutoBackAndForth = true; + + gaps = { + inner = 4; + outer = 4; + + smartBorders = "on"; + smartGaps = true; + }; + window = { + border = 2; + titlebar = false; + hideEdgeBorders = "smart"; + }; + floating = { + border = 2; + titlebar = false; + modifier = "Mod4"; + }; + + colors = lib.mkForce { + background = "#${base00}"; + focused = { + background = "#${base00}"; + border = "#${base00}"; + childBorder = "#${base0B}"; + indicator = "#${base08}"; + text = "#${base06}"; + }; + focusedInactive = { + background = "#${base02}"; + border = "#${base00}"; + childBorder = "#${base0B}"; + indicator = "#${base08}"; + text = "#${base04}"; + }; + unfocused = { + background = "#${base00}"; + border = "#${base00}"; + childBorder = "#${base0B}"; + indicator = "#${base08}"; + text = "#${base06}"; + }; + urgent = { + background = "#${base00}"; + border = "#${base08}"; + childBorder = "#${base0B}"; + indicator = "#${base08}"; + text = "#${base06}"; + }; + }; + }; + extraConfig = + "\n # corner_radius 10\n # blur enable\n # blur_xray on\n\n # shadows enable\n # shadows_on_csd enable\n # shadow_color #${base00}\n # shadow_blur_radius 12\n\n # default_dim_inactive 0.4\n "; + }; +} diff --git a/home/window-managers/terminals/default.nix b/home/window-managers/terminals/default.nix new file mode 100644 index 0000000..f3cf7b6 --- /dev/null +++ b/home/window-managers/terminals/default.nix @@ -0,0 +1 @@ +{ imports = [ ./foot ./kitty ]; } diff --git a/home/window-managers/terminals/foot/default.nix b/home/window-managers/terminals/foot/default.nix new file mode 100644 index 0000000..304fda3 --- /dev/null +++ b/home/window-managers/terminals/foot/default.nix @@ -0,0 +1,16 @@ +{ lib, ... }: { + programs.foot = { + enable = true; + server.enable = false; + settings = { + main = { + font = lib.mkForce "JetBrainsMono Nerd Font:size=12"; + pad = "10x10 center"; + resize-by-cells = "yes"; + letter-spacing = 0; + }; + cursor = { style = "block"; }; + mouse = { hide-when-typing = "yes"; }; + }; + }; +} diff --git a/home/window-managers/terminals/kitty/binds.nix b/home/window-managers/terminals/kitty/binds.nix new file mode 100644 index 0000000..ea73cbb --- /dev/null +++ b/home/window-managers/terminals/kitty/binds.nix @@ -0,0 +1,50 @@ +{ ... }: { + programs.kitty.keybindings = { + "ctrl+shift+c" = "copy_to_clipboard"; + "ctrl+shift+v" = "paste_from_clipboard"; + + "kitty_mod+x" = "next_tab"; + "kitty_mod+shift+x" = "move_tab_forward"; + + "kitty_mod+z" = "previous_tab"; + "kitty_mod+shift+z" = "move_tab_backward"; + + "kitty_mod+enter" = "new_window"; + "kitty_mod+a" = "new_tab"; + "kitty_mod+q" = "close_window"; + + "kitty_mod+shift+=" = "set_background_opacity +0.1"; + "kitty_mod+shift+-" = "set_background_opacity -0.1"; + "kitty_mod+shift+0" = "set_background_opacity 1"; + + "kitty_mod+." = "layout_action decrease_num_full_size_windows"; + "kitty_mod+," = "layout_action increase_num_full_size_windows"; + "kitty_mod+/" = "layout_action mirror toggle"; + "kitty_mod+m" = "layout_action mirror true"; + "kitty_mod+n" = "layout_action mirror false"; + + "kitty_mod+left" = "resize_window narrower"; + "kitty_mod+right" = "resize_window wider"; + "kitty_mod+up" = "resize_window taller"; + "kitty_mod+down" = "resize_window shorter"; + "kitty_mod+home" = "resize_window reset"; + + "kitty_mod+h" = "resize_window narrower"; + "kitty_mod+l" = "resize_window wider"; + "kitty_mod+k" = "resize_window taller"; + "kitty_mod+j" = "resize_window shorter"; + "kitty_mod+g" = "resize_window reset"; + + "kitty_mod+r" = "load_config_file"; + "kitty_mod+t" = "set_tab_title"; + "kitty_mod+i" = "next_layout"; + "kitty_mod+u" = "kitten unicode_input"; + "kitty_mod+escape" = "kitty_shell overlay"; + "kitty_mod+]" = "next_window"; + "kitty_mod+[" = "previous_window"; + "kitty_mod+p" = "set_background_opacity 1"; + "kitty_mod+o" = "set_background_opacity default"; + "kitty_mod+f" = "toggle_fullscreen"; + "f11" = "toggle_fullscreen"; + }; +} diff --git a/home/window-managers/terminals/kitty/colors.nix b/home/window-managers/terminals/kitty/colors.nix new file mode 100644 index 0000000..5193220 --- /dev/null +++ b/home/window-managers/terminals/kitty/colors.nix @@ -0,0 +1,36 @@ +{ config, ... }: { + programs.kitty.settings = with config.lib.stylix.colors; { + foreground = "#${base05}"; + background = "#${base00}"; + + selection_foreground = "#${base05}"; + selection_background = "#${base02}"; + + tab_bar_background = "#${base00}"; + active_tab_foreground = "#${base00}"; + active_tab_background = "#${base0B}"; + inactive_tab_foreground = "#${base04}"; + inactive_tab_background = "#${base00}"; + + active_border_color = "#${base0E}"; + inactive_border_color = "#${base00}"; + bell_border_color = "#${base08}"; + + color0 = "#${base00}"; + color1 = "#${base08}"; + color2 = "#${base0B}"; + color3 = "#${base0A}"; + color4 = "#${base0D}"; + color5 = "#${base0E}"; + color6 = "#${base0C}"; + color7 = "#${base05}"; + color8 = "#${base03}"; + color9 = "#${base08}"; + color10 = "#${base0B}"; + color11 = "#${base0A}"; + color12 = "#${base0D}"; + color13 = "#${base0E}"; + color14 = "#${base0C}"; + color15 = "#${base07}"; + }; +} diff --git a/home/window-managers/terminals/kitty/default.nix b/home/window-managers/terminals/kitty/default.nix new file mode 100644 index 0000000..7653cf5 --- /dev/null +++ b/home/window-managers/terminals/kitty/default.nix @@ -0,0 +1,44 @@ +{ config, ... }: { + imports = [ ./binds.nix ./colors.nix ]; + programs.kitty = with config.lib.stylix.colors; { + enable = true; + environment = { + "MICRO_TRUECOLOR" = "1"; + "RANGER_LOAD_DEFAULT_RC" = "false"; + }; + settings = { + confirm_os_window_close = 0; + + tab_bar_min_tabs = 2; + tab_bar_edge = "button"; + tab_bar_style = "fade"; + tab_bar_align = "left"; + tab_powerline_style = "angled"; + tab_title_template = "{title}"; + tab_bar_margin_width = 0; + tab_fade = "0 0.5 1"; + + window_margin_width = 8; + window_padding_width = 4; + window_border_width = "0.2pt"; + single_window_padding_width = 4; + + resize_in_steps = "no"; + resize_debounce_time = 0; + + dynamic_background_opacity = true; + cursor_shape = "block"; + mouse_hide_wait = 2; + underline_hyperlinks = "always"; + enable_audio_bell = "no"; + disable_ligatures = "never"; + font_features = + "+calt +liga +ss01 +ss02 +ss03 +ss04 +ss05 +ss06 +ss07 +ss08 +ss09"; + + # clipboard_control = "read-primary read-clipboard"; + + kitty_mod = "alt"; + }; + shellIntegration.enableFishIntegration = true; + }; +} diff --git a/host/default.nix b/host/default.nix new file mode 100644 index 0000000..44f8ae0 --- /dev/null +++ b/host/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./themes/stylix.nix + ./system + ./misc + ]; +} diff --git a/host/misc/default.nix b/host/misc/default.nix new file mode 100644 index 0000000..c0aa18a --- /dev/null +++ b/host/misc/default.nix @@ -0,0 +1,12 @@ +{ + imports = [ + ./locale.nix + ./nh.nix + ./nix.nix + ./pkgs.nix + ./security.nix + ./user.nix + + ./zapret.nix + ]; +} diff --git a/host/misc/locale.nix b/host/misc/locale.nix new file mode 100644 index 0000000..4c43595 --- /dev/null +++ b/host/misc/locale.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: { + # LOCALE AND TIME SETTINGS + time.timeZone = "Asia/Chita"; + i18n = { + defaultLocale = "en_US.UTF-8"; + extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + }; +} diff --git a/host/misc/nh.nix b/host/misc/nh.nix new file mode 100644 index 0000000..50d39c3 --- /dev/null +++ b/host/misc/nh.nix @@ -0,0 +1,8 @@ +{ ... }: { + programs.nh = { # NIX HELPER + enable = true; + clean.enable = true; + clean.extraArgs = "--keep-since 4d --keep 3"; + flake = "/home/dragora/.flake"; + }; +} diff --git a/host/misc/nix.nix b/host/misc/nix.nix new file mode 100644 index 0000000..77e9c48 --- /dev/null +++ b/host/misc/nix.nix @@ -0,0 +1,30 @@ +{ pkgs, lib, ... }: { + nix = { # NIX SETTINGS + package = pkgs.nix; + settings = { + warn-dirty = false; + experimental-features = [ "nix-command" "flakes" ]; + substituters = [ + "https://yazi.cachix.org" + "https://cache.garnix.io" + "https://anyrun.cachix.org" + "https://hyprland.cachix.org" + ]; + trusted-public-keys = [ + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" + "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + ]; + trusted-users = [ "dragora" "@wheel" ]; + }; + }; + + nixpkgs = { + hostPlatform = lib.mkDefault "x86_64-linux"; + config = { # NIXPKGS SETS + allowBroken = true; + allowUnfree = true; + }; + }; +} diff --git a/host/misc/pkgs.nix b/host/misc/pkgs.nix new file mode 100644 index 0000000..7534b0f --- /dev/null +++ b/host/misc/pkgs.nix @@ -0,0 +1,36 @@ +{ pkgs, inputs, lib, ... }: +let hpkg = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}; +in { + # OS PACKAGES + nixpkgs = { hostPlatform = lib.mkDefault "x86_64-linux"; }; + environment.systemPackages = with pkgs; [ + git + helix + hyprland + home-manager + # (callPackage ./torrserver/default.nix { }) + ]; + + # PROGRAMS ENABLE + programs = { + fish.enable = true; + gamescope.enable = true; + steam = { + enable = true; + package = pkgs.steam.override { + extraEnv = { + MANGOHUD = true; + OBS_VKCAPTURE = true; + RADV_TEX_ANISO = 16; + }; + }; + extraCompatPackages = with pkgs; [ proton-ge-bin ]; + protontricks.enable = true; + }; + hyprland = { + enable = true; + package = hpkg.hyprland; + portalPackage = hpkg.xdg-desktop-portal-hyprland; + }; + }; +} diff --git a/host/misc/security.nix b/host/misc/security.nix new file mode 100644 index 0000000..5568a98 --- /dev/null +++ b/host/misc/security.nix @@ -0,0 +1,22 @@ +{ pkgs, ... }: { + security = { + sudo = { # FUCKING CRAP + enable = true; + }; + doas = { # VERY TOP + enable = true; + wheelNeedsPassword = true; + extraRules = [{ + users = [ "dragora" ]; + keepEnv = true; + persist = true; + }]; + extraConfig = + " permit nopass dragora as root cmd light\n permit nopass dragora as root cmd tee\n"; + }; + pam = { # SOMTHING WITH FPRINT + services = { swaylock.fprintAuth = true; }; + }; + polkit = { enable = true; }; + }; +} diff --git a/host/misc/user.nix b/host/misc/user.nix new file mode 100644 index 0000000..aece9a0 --- /dev/null +++ b/host/misc/user.nix @@ -0,0 +1,12 @@ +{ pkgs, config, ... }: { + users = { + users = { # USERS + dragora = { + shell = pkgs.fish; + isNormalUser = true; + extraGroups = [ "networkmanager" "wheel" "video" ]; + }; + }; + }; + system.stateVersion = "24.05"; +} diff --git a/host/misc/zapret.nix b/host/misc/zapret.nix new file mode 100644 index 0000000..adb801f --- /dev/null +++ b/host/misc/zapret.nix @@ -0,0 +1,20 @@ +{ pkgs, lib, config, ... }: { + systemd.services.zapret = { # ZAPRET FOR YOTUBE + after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; + path = with pkgs; [ iptables nftables zapret ipset curl gawk ]; + serviceConfig = { + Type = "forking"; + Restart = "no"; + TimeoutSec = "30sec"; + IgnoreSIGPIPE = "no"; + KillMode = "none"; + GuessMainPID = "no"; + ExecStart = "${pkgs.zapret}/bin/zapret start"; + ExecStop = "${pkgs.zapret}/bin/zapret stop"; + EnvironmentFile = pkgs.writeText "zapret-environment" + " FWTYPE=\"iptables\"\n SET_MAXELEM=522288\n IPSET_OPT=\"hashsize 262144 maxelem $SET_MAXELEM\"\n AUTOHOSTLIST_RETRANS_THRESHOLD=3\n AUTOHOSTLIST_FAIL_THRESHOLD=3\n AUTOHOSTLIST_FAIL_TIME=60\n AUTOHOSTLIST_DEBUGLOG=0\n MDIG_THREADS=30\n GZIP_LISTS=1\n\n MODE=nfqws\n MODE_HTTP=1\n MODE_HTTP_KEEPALIVE=0\n MODE_HTTPS=1\n MODE_QUIC=0\n MODE_FILTER=none\n\n DESYNC_MARK=0x40000000\n DESYNC_MARK_POSTNAT=0x20000000\n NFQWS_OPT_DESYNC=\"--dpi-desync=fake,split2 --dpi-desync-ttl=3\"\n TPWS_OPT=\"--hostspell=HOST --split-http-req=method --split-pos=3 --oob\"\n FLOWOFFLOAD=donttouch\n INIT_APPLY_FW=1\n DISABLE_IPV6=0\n"; + }; + }; +} diff --git a/host/system/boot.nix b/host/system/boot.nix new file mode 100644 index 0000000..6b2ab9a --- /dev/null +++ b/host/system/boot.nix @@ -0,0 +1,56 @@ +{ pkgs, ... }: { + boot = { # ITSELF LOL + kernelPackages = pkgs.linuxPackages_zen; + kernelModules = [ "kvm-amd" ]; + consoleLogLevel = 0; + kernelParams = [ + "quiet" + "loglevel=3" + "nowatchdog" + "page_alloc.shuffle=1" + "threadirqs" + "split_lock_detect=off" + "pci=pcie_bus_perf" + "psmouse.synaptics_intertouch=0" + "rd.systemd.show_status=false" + "amdgpu.gttsize=2000" + ]; + + loader = { # SYSTEMD BOOT AS DEFAULT + systemd-boot = { + enable = true; + configurationLimit = 4; + }; + efi.canTouchEfiVariables = true; + timeout = 0; + }; + + initrd = { # IDK + availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "ohci_pci" + "ehci_pci" + "pata_atiixp" + "ums_realtek" + "sd_mod" + "sr_mod" + "sdhci_pci" + "usb_storage" + ]; + systemd.enable = true; + compressor = "zstd"; + compressorArgs = [ "-9" ]; + verbose = false; + }; + + plymouth = { # PLYMOUTH WITH NIXOS LOGO + enable = true; + logo = + "${pkgs.nixos-icons}/share/icons/hicolor/48x48/apps/nix-snowflake-white.png"; + }; + + tmp.cleanOnBoot = true; + }; +} diff --git a/host/system/default.nix b/host/system/default.nix new file mode 100644 index 0000000..3cdc108 --- /dev/null +++ b/host/system/default.nix @@ -0,0 +1,10 @@ +{ + imports = [ + ./boot.nix + ./disks.nix + ./hardware.nix + ./services.nix + ./network.nix + ./sound.nix + ]; +} diff --git a/host/system/disks.nix b/host/system/disks.nix new file mode 100644 index 0000000..66d977e --- /dev/null +++ b/host/system/disks.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, modulesPath, ... }: { + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + # NIXOS SYSTEM ITSELF + fileSystems."/" = { + device = "/dev/disk/by-uuid/00fc272e-b8e6-4081-9f75-fac3119b1e98"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/B2AF-39E5"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + # OTHER DISKS + fileSystems."/mnt/HDD" = { + device = "/dev/disk/by-uuid/9290bc08-17fe-47db-a535-d4044b8c8dfb"; + fsType = "ext4"; + options = [ "nosuid" "nodev" "nofail" "x-gvfs-show" ]; + }; + + fileSystems."/mnt/SSD" = { + device = "/dev/disk/by-uuid/e6bc9034-95a4-43bd-b5f5-c7c1743e9f7c"; + fsType = "ext4"; + options = [ "nosuid" "nodev" "nofail" "x-gvfs-show" ]; + }; +} diff --git a/host/system/hardware.nix b/host/system/hardware.nix new file mode 100644 index 0000000..e63c1a1 --- /dev/null +++ b/host/system/hardware.nix @@ -0,0 +1,30 @@ +{ config, lib, ... }: { + hardware = { + # AND VIDEOCARD DRIVE (maybe) + amdgpu = { + # opencl.enable = true; + amdvlk = { + enable = true; + supportExperimental.enable = true; + support32Bit.enable = true; + }; + }; + # OPENGL + graphics = { + enable = true; + enable32Bit = true; + }; + # PROCCESOR + cpu.amd = { + updateMicrocode = + lib.mkDefault config.hardware.enableRedistributableFirmware; + ryzen-smu.enable = true; + }; + # BLUETOOTH + bluetooth = { + enable = true; + powerOnBoot = true; + }; + xone.enable = true; + }; +} diff --git a/host/system/network.nix b/host/system/network.nix new file mode 100644 index 0000000..8d95858 --- /dev/null +++ b/host/system/network.nix @@ -0,0 +1,13 @@ +{ lib, ... }: { + networking = { # NETWORK + hostName = "karbur"; + networkmanager = { # NETWORK MANAGER + enable = true; + insertNameservers = [ "1.1.1.1" "1.0.0.1" ]; + wifi.powersave = true; + }; + useDHCP = lib.mkDefault true; + nftables.enable = true; + # resolvconf.dnsSingleRequest = true; + }; +} diff --git a/host/system/services.nix b/host/system/services.nix new file mode 100644 index 0000000..194ff3b --- /dev/null +++ b/host/system/services.nix @@ -0,0 +1,27 @@ +{ ... }: { + services = { # SERVICES + getty.autologinUser = "dragora"; + xserver = { # XORG? + xkb = { + layout = "us"; + variant = "qwerty"; + options = "grp:caps_toggle"; + }; + }; + tailscale = { # OWN VPN NETWORK + enable = true; + useRoutingFeatures = "both"; + }; + system76-scheduler = { # PERFORMANCEE + enable = false; + settings = { + cfsProfiles.enable = true; + processScheduler.pipewireBoost.enable = true; + }; + }; + resolved = { enable = true; }; + + dbus.implementation = "broker"; + gvfs.enable = true; + }; +} diff --git a/host/system/sound.nix b/host/system/sound.nix new file mode 100644 index 0000000..927bafe --- /dev/null +++ b/host/system/sound.nix @@ -0,0 +1,12 @@ +{ ... }: { + security.rtkit.enable = true; + services.pipewire = { # SOUND NEW GEN + enable = true; + wireplumber.enable = true; + pulse.enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + }; +} diff --git a/host/themes/paradise.nix b/host/themes/paradise.nix new file mode 100644 index 0000000..b072838 --- /dev/null +++ b/host/themes/paradise.nix @@ -0,0 +1,22 @@ +{ + stylix = { + base16Scheme = { + base00 = "#151515"; + base01 = "#1F1F1F"; + base02 = "#2E2E2E"; + base03 = "#424242"; + base04 = "#BBB6B6"; + base05 = "#E8E3E3"; + base06 = "#E8E3E3"; + base07 = "#E8E3E3"; + base08 = "#B66467"; + base09 = "#D9BC8C"; + base0A = "#D9BC8C"; + base0B = "#8C977D"; + base0C = "#8AA6A2"; + base0D = "#8DA3B9"; + base0E = "#A988B0"; + base0F = "#BBB6B6"; + }; + }; +} diff --git a/host/themes/stylix.nix b/host/themes/stylix.nix new file mode 100644 index 0000000..6a09360 --- /dev/null +++ b/host/themes/stylix.nix @@ -0,0 +1,18 @@ +{ inputs, ... }: { + # SYSTEM COLORSCHEME (see targets) + imports = [ inputs.stylix.nixosModules.stylix ./paradise.nix ]; + stylix = { # COLORIZE !!! + enable = true; + autoEnable = false; + targets = { + console.enable = true; # TTY + nixos-icons.enable = true; # ICONS + chromium.enable = true; # CHROMIUM LOL + fish.enable = true; # SHELL + plymouth = { # STARTING SCREEN + enable = true; + logoAnimated = true; + }; + }; + }; +}