1
0
Fork 0
mirror of https://git.sr.ht/~neverness/ultima synced 2024-11-27 21:51:12 +00:00
This commit is contained in:
azikx 2024-11-21 18:24:15 +09:00
commit bf1386c87f
165 changed files with 10780 additions and 0 deletions

24
LICENSE Normal file
View file

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
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 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.
For more information, please refer to <https://unlicense.org>

75
README.md Normal file
View file

@ -0,0 +1,75 @@
<div align="center">
<h1>❄️【 NIXOS DOTFILES 】❄️</h1>
</div>
## [WALLPAPERS](https://git.sr.ht/~azikx/wallpapers) & [USERSTYLES](https://git.sr.ht/~azikx/userstyles)
<details>
<summary>Software</summary>
| 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 |
| [jpegoptim](https://github.com/tjko/jpegoptim) | Low size for jpeg |
| [optipng](https://optipng.sourceforge.net) | Low size for png |
| [nvtop](https://github.com/Syllo/nvtop) | Top for GPU |
| [btop](https://github.com/aristocratos/btop) | Very informated top |
| [optinix](https://github.com/hmajid2301/OptiNix) | Search pkgs and options nix |
| [trashy](https://github.com/oberblastmeister/trashy) | Trash manager |
| [fuc](https://github.com/SUPERCILEX/fuc) | Rusted cp and rm |
| [doas](https://wiki.archlinux.org/title/Doas) | Sudo from bsd systems |
| GUI utilites |
| [floorp](https://github.com/Floorp-Projects/Floorp) | One of best browser on FF |
| [zen](https://github.com/zen-browser/desktop) | Stylish and modern |
| [bottles](https://github.com/bottlesdevs/Bottles) | Wine launcher |
| [nemo](https://github.com/linuxmint/nemo) | File manager from Cinnamon |
| [obsidian](https://obsidian.md) | Markdown editor |
| [komikku](https://valos.gitlab.io/Komikku) | Manga/comix reader |
| [mousai](https://github.com/SeaDve/Mousai) | Recognizer for songs |
| [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
</details>
![aye](https://git.sr.ht/~azikx/wallpapers/blob/main/dotfiles/workst/fetch.png)
![ауе](https://git.sr.ht/~azikx/wallpapers/blob/main/dotfiles/workst/zen.png)
![ауе](https://git.sr.ht/~azikx/wallpapers/blob/main/dotfiles/workst/btop.png)
![ауе](https://git.sr.ht/~azikx/wallpapers/blob/main/dotfiles/workst/yazi.png)
#### ENGLISH OR SPANISH??? WHOEVER MOVES IS GAY)))))))
#### THANKS FOR [hezaki](https://codeberg.org/Hezaki/Touka/), [maxmurr](https://github.com/TheMaxMur/NixOS-Configuration), [artem](https://github.com/ArtemChandragupta/NixFlake)

992
flake.lock Normal file
View file

@ -0,0 +1,992 @@
{
"nodes": {
"aquamarine": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1730968822,
"narHash": "sha256-NocDjINsh6ismkhb0Xr6xPRksmhuB2WGf8ZmXMhxu7Y=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "a49bc3583ff223f426cb3526fdaa4bcaa247ec14",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"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"
}
},
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1731549112,
"narHash": "sha256-c9I3i1CwZ10SoM5npQQVnfwgvB86jAS3lT4ZqkRoSOI=",
"owner": "nix-community",
"repo": "disko",
"rev": "5fd852c4155a689098095406500d0ae3d04654a8",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"firefox-addons": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1731470588,
"narHash": "sha256-radsH6TieMS9S2+NQgWOV+Md6/Kz7lD+Q1GEmIxvjCY=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "6cfc4ff20b755e675848c0417da3017a92a206e1",
"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-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1730504689,
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1730504689,
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"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_2": {
"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"
}
},
"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": 1731235328,
"narHash": "sha256-NjavpgE9/bMe/ABvZpyHIUeYF1mqR5lhaep3wB79ucs=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "60bb110917844d354f3c18e05450606a435d2d10",
"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": 1728669738,
"narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "0264e698149fcb857a66a53018157b41f8d97bb0",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprcursor",
"type": "github"
}
},
"hyprland": {
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks",
"systems": "systems",
"xdph": "xdph"
},
"locked": {
"lastModified": 1731425185,
"narHash": "sha256-/v5mz2LKOsBjwW9M+2kg0jVhpkFNIAvM/fUDy3OiOj4=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "bb160cfe377da2d2b2e4431a3399fa60114f3911",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "Hyprland",
"type": "github"
}
},
"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": 1731163338,
"narHash": "sha256-Qflei0JBeqQ0c8jxA8e982xAxJvfMwfx4Aci2eJi84s=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "60d3dece30f98e8ad85131829c8529950630d6bc",
"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-gaming": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": "nixpkgs_2",
"umu": "umu"
},
"locked": {
"lastModified": 1731375435,
"narHash": "sha256-O2piDr6aQmJd7USZkehOKTZale6jlG+DkoxEVRiu8Iw=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "e9adb42d82ec425ff6218b6e45feb6a1a8eaddb0",
"type": "github"
},
"original": {
"owner": "fufexan",
"repo": "nix-gaming",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1731403644,
"narHash": "sha256-T9V7CTucjRZ4Qc6pUEV/kpgNGzQbHWfGcfK6JJLfUeI=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "f6581f1c3b137086e42a08a906bdada63045f991",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1730785428,
"narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1730504152,
"narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1730504152,
"narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1730741070,
"narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1731239293,
"narHash": "sha256-q2yjIWFFcTzp5REWQUOU9L6kHdCDmFDpqeix86SOvDc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9256f7c71a195ebe7a218043d9f93390d49e6884",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1730958623,
"narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "85f7e662eda4fa3a995556527c87b2524b691933",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1731139594,
"narHash": "sha256-IigrKK3vYRpUu+HEjPL/phrfh7Ox881er1UEsZvw9Q4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "76612b17c0ce71689921ca12d9ffdc9c23ce40b2",
"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"
}
},
"nur": {
"locked": {
"lastModified": 1731494868,
"narHash": "sha256-gFzX+e1ATJmhjOMvbBmqf1v4WgMz770dZhtGN4dZtng=",
"owner": "nix-community",
"repo": "NUR",
"rev": "4b0e599bebf4bdf6725cdf8036a335096bf13097",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"nypkgs": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1726657437,
"narHash": "sha256-eBeVOFceQkYfWHAwdQ+aM8vLAbsuuWUgek2f6dFBTl0=",
"owner": "yunfachi",
"repo": "nypkgs",
"rev": "698ab4159dc38affee2fc5886468af139de8d95e",
"type": "github"
},
"original": {
"owner": "yunfachi",
"repo": "nypkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1730814269,
"narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "d70155fdc00df4628446352fc58adc640cd705c2",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"disko": "disko",
"firefox-addons": "firefox-addons",
"flake-parts": "flake-parts",
"home-manager": "home-manager",
"hyprland": "hyprland",
"nix-gaming": "nix-gaming",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3",
"nixpkgs-stable": "nixpkgs-stable_2",
"nur": "nur",
"nypkgs": "nypkgs",
"spicetify-nix": "spicetify-nix",
"stylix": "stylix",
"walls": "walls",
"zen-browser": "zen-browser"
}
},
"spicetify-nix": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1731471404,
"narHash": "sha256-xrqZLeXOI5qm90iN5sgyINMU2621jf+WBMJivpTNEWc=",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"rev": "c80ea8541d55731f143828a574e00d50553e9c7c",
"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_2",
"gnome-shell": "gnome-shell",
"home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_4",
"systems": "systems_2",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-tmux": "tinted-tmux"
},
"locked": {
"lastModified": 1731657386,
"narHash": "sha256-Mm/JL8tFUS1SOmmZDPcswExUxzw0VpHcEyZI1h58CGA=",
"owner": "danth",
"repo": "stylix",
"rev": "5ab1207b2fdeb5a022f2dd7cccf6be760f1b150f",
"type": "github"
},
"original": {
"owner": "danth",
"repo": "stylix",
"type": "github"
}
},
"systems": {
"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_2": {
"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": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"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"
}
},
"umu": {
"inputs": {
"nixpkgs": [
"nix-gaming",
"nixpkgs"
]
},
"locked": {
"dir": "packaging/nix",
"lastModified": 1730836236,
"narHash": "sha256-8jrg1DQrgYVaO4hpPRxRTAVluo8cE1Lcuvyv2EXuXpA=",
"ref": "refs/heads/main",
"rev": "90352466d502c40e147cfd11a428dde6c2899ab3",
"revCount": 833,
"submodules": true,
"type": "git",
"url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix"
},
"original": {
"dir": "packaging/nix",
"submodules": true,
"type": "git",
"url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix"
}
},
"walls": {
"flake": false,
"locked": {
"lastModified": 1732099728,
"narHash": "sha256-UYWN12WMXGMj73phfN3vu3t0bXZZFFkmyPQAphTu5/M=",
"owner": "~neverness",
"repo": "wallpapers",
"rev": "f8d6552d521b6ed4075a0d3e427a1263749ef78f",
"type": "sourcehut"
},
"original": {
"owner": "~neverness",
"ref": "main",
"repo": "wallpapers",
"type": "sourcehut"
}
},
"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": 1730743262,
"narHash": "sha256-iTLqj3lU8kFehPm5tXpctzkD274t/k1nwSSq3qCWXeg=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "09b23cef06fe248e61cec8862c04b9bcb62f4b6d",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
},
"zen-browser": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1731281366,
"narHash": "sha256-GALaKG3LyiYw4EdFxSwJidgLHgaDsTuic5uiJlkpdrc=",
"owner": "ch4og",
"repo": "zen-browser-flake",
"rev": "d7c020d6b192bfa040a58efaf62be74f9155d1a0",
"type": "github"
},
"original": {
"owner": "ch4og",
"repo": "zen-browser-flake",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

49
flake.nix Normal file
View file

@ -0,0 +1,49 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # UNSTABLE
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05"; # STABLE
nur.url = "github:nix-community/NUR"; # NUR
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; # HARDWARE
# impermanence.url = "github:nix-community/impermanence"; # IMPERMAN
flake-parts.url = "github:hercules-ci/flake-parts"; # PARTS
nix-gaming.url = "github:fufexan/nix-gaming"; # GAMING
hyprland.url = "github:hyprwm/Hyprland"; # HYPRLAND
stylix.url = "github:danth/stylix"; # STYLIX
home-manager = { # HM
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
nypkgs = {
url = "github:yunfachi/nypkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
zen-browser = {
url = "github:ch4og/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
spicetify-nix = { # SPOTIFY
url = "github:Gerg-L/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
firefox-addons = { # FIREFOX
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
walls = { # WALLS
url = "sourcehut:~neverness/wallpapers?ref=main";
flake = false;
};
};
outputs = inputs: # THIS IS SEPARATES OUTPUTS FROM FLAKE
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" ];
imports = [ ./workst ];
};
}

39
laptop/default.nix Normal file
View file

@ -0,0 +1,39 @@
{ inputs, ... }:
let
hostName = "wyswort";
userName = "megamozg";
in {
flake = let
args = rec { # IMPORTS LET_IN FROM HOSTS TO ALL SYSTEM
# DIRECTORIES
flakeDir = "/persist/flake";
homeDir = "${flakeDir}/modules/home";
nixosDir = "${flakeDir}/modules/nixos";
# OTHER
True = { enable = true; };
False = { enable = false; };
wm = {
sh = "Hyprland";
bar = "hyprland";
};
# SYSINFO
stateVersion = "24.05"; # IDK
platform = "x86_64-linux";
inherit inputs hostName userName;
};
in with inputs; {
nixosConfigurations = {
${hostName} = nixpkgs.lib.nixosSystem {
modules = [ ./host ];
specialArgs = args;
};
};
homeConfigurations = {
${userName} = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${platform};
modules = [ ./home ];
extraSpecialArgs = args;
};
};
};
}

73
laptop/home/default.nix Normal file
View file

@ -0,0 +1,73 @@
{ userName, True, False, ... }: {
imports = [ ./parts ../../modules/home ];
module = {
programs = { # PROGRAMS
cli = { # CLI PROGRAMS
anicli = True;
bat = True;
cava = True;
eza = True;
fetch = True;
fzf = True;
git = True // {
name = "azikx";
email = "irongidra@gmail.com";
path = "/home/${userName}/.flake";
};
helix = True;
micro = False;
nixvim = False;
rmpc = False;
top = True;
yazi = True;
zoxide = True;
};
gui = { # GUI PROGRAMS
floorp = False;
mpv = True;
obs = False;
qbittorrent = True;
spotify = True;
swayimg = True;
};
};
shells = { # SHELLS
alias = True;
fish = True;
nushell = False;
tmux = False;
zsh = False;
starship = False;
var = True;
};
themes = { # THEMING ENV
gtk = True // { # GTK APPS
icon = "adwaita";
};
qt = True; # QT APPS
stylix = True // { # ALL_OVER
image = "epic";
};
};
wm = { # WINDOW MANAGER
hyprland = True;
sway = False;
terminals = { # TERMINALS
kitty = True;
foot = False;
};
misc = { # IDK
mako = True;
waybar = True;
nwg = True;
wob = False;
};
};
misc = { # MISC MODULES
home-manager = True;
dconf = True;
nix = True;
xdg = True;
};
};
}

View file

@ -0,0 +1,62 @@
{ pkgs, ... }: {
module.shells.alias = with pkgs; {
e = "$EDITOR";
c = "clear";
x = "exit";
# RUSTED CP & RM
cp = "${fuc}/bin/cpz";
rm = "${fuc}/bin/rmz";
# NH HELPER
nhs = "${nh}/bin/nh home switch";
nos = "${nh}/bin/nh os switch";
nca = "${nh}/bin/nh clean all";
# NIX TOOLS
nurl = "${nurl}/bin/nurl";
nxU = "${nix}/bin/nix flake lock --update-input";
nxu = "${nix}/bin/nix flake update";
nxt = "${nix-tree}/bin/nix-tree";
# USEFUL
ca = "${cava}/bin/cava";
y = "${yazi}/bin/yazi";
cat = "${bat}/bin/bat";
pmx = "${pulsemixer}/bin/pulsemixer";
blt = "${bluetuith}/bin/bluetuith";
ff = "${fastfetch}/bin/fastfetch";
icat = "${kitty}/bin/kitten icat";
of =
"${onefetch}/bin/onefetch -d commits churn license head --no-art --no-color-palette -t 5";
# TOPS
btop = "${btop}/bin/btop";
ntop = "${nvtopPackages.amd}/bin/nvtop -i";
# TRASHY
tres = "${trashy}/bin/trash restore";
tput = "${trashy}/bin/trash put";
tempty = "${trashy}/bin/trash empty -all";
# CLOCK
ter =
"${tenki}/bin/tenki --mode rain --wind disable --timer-color cyan -f 80";
tes =
"${tenki}/bin/tenki --mode snow --wind disable --timer-color yellow -f 80";
tem =
"${tenki}/bin/tenki --mode meteor --wind disable --timer-color red -f 80";
# VPN
vpn = "${openvpn}/bin/openvpn";
# IMAGES
imgmag = "${imagemagick}/bin/imagemagick";
jpgop = "${jpegoptim}/bin/jpegoptim";
pngop = "${optipng}/bin/optipng";
# LUTGEN
lut = "${lutgen}/bin/lutgen apply -p paradise";
lutall = "${lutgen}/bin/lutgen apply -p paradise ./*";
};
}

View file

@ -0,0 +1 @@
{ imports = [ ./alias.nix ./hyprland.nix ./pkgs.nix ./sway.nix ]; }

View file

@ -0,0 +1,37 @@
{ pkgs, inputs, ... }: {
module.wm.hyprland = with pkgs;
with inputs; {
autostart = [ "${mako}/bin/mako" "${waybar}/bin/waybar" ];
programs = let
zen = zen-browser.packages."${system}".specific;
kit = "${kitty}/bin/kitty";
pic = "$(xdg-user-dir PICTURES)/$(date +'scr_%d-%m-%y|%H:%M:%S.png')";
in [
# PROGRAMS
"$m $s, $sp, $ex, ${killall}/bin/killall -SIGUSR1 .waybar-wrapped"
"$m, $rt, $ex, ${kit} -T Terminal"
"$m $s, $rt, $ex, ${kit} --class=termfloat -T Terminal"
"$m, $tb, $ex, ${nwg-drawer}/bin/nwg-drawer -ovl -nocats -nofs -d -c 5 -mb -49"
"$m, V, $ex, ${_64gram}/bin/telegram-desktop"
"$m $s, V, $ex, ${vesktop}/bin/vesktop"
"$m $a, V, $ex, ${qbittorrent-enhanced}/bin/qbittorrent"
"$m, B, $ex, ${zen}/bin/zen"
"$m $s, B, $ex, ${tor-browser}/bin/tor-browser"
"$m, N, $ex, ${kit} -T Explorer yazi"
"$m $s, N, $ex, ${nemo}/bin/nemo"
"$m, U, $ex, ${onlyoffice-bin}/bin/onlyoffice-desktopeditors"
"$m $s, U, $ex, ${libreoffice-fresh}/lib/libreoffice/program/soffice.bin"
"$m $a, U, $ex, ${komikku}/bin/komikku"
" , $PR, $ex, ${grimblast}/bin/grimblast copysave area"
"$s, $PR, $ex, ${grimblast}/bin/grimblast copysave output ${pic}"
"$a, $PR, $ex, ${grimblast}/bin/grimblast copysave active ${pic}"
];
};
}

View file

@ -0,0 +1,23 @@
{ pkgs, inputs, homeDir, ... }: {
imports = [ inputs.nur.hmModules.nur ];
module.programs = {
gui.pkgs = with pkgs; [ nemo-fileroller ];
cli.pkgs = with pkgs; [
home-manager
openvpn
nix-tree
nix-prefetch-github
tenki
trashy
fuc
zip
atool
imagemagick
jpegoptim
optipng
];
};
}

View file

@ -0,0 +1,24 @@
{ pkgs, inputs, config, False, ... }:
let
# MODIFICATORS
m = config.wayland.windowManager.sway.config.modifier;
s = "Shift";
a = "Alt";
ex = "exec";
in with pkgs; {
module.wm.sway = with inputs; {
bars = False;
programs = let
zen = zen-browser.packages."${system}".specific;
kit = "${kitty}/bin/kitty";
in {
"${m}+b" = "${ex} ${zen}/bin/zen";
"${m}+${s}+b" = "${ex} ${floorp}/bin/floorp";
"${m}+v" = "${ex} ${_64gram}/bin/telegram-desktop";
"${m}+n" = "${ex} ${kit} -T Explorer ${yazi}/bin/yazi";
"${m}+u" = "${ex} ${onlyoffice-bin}/bin/onlyoffice-desktopeditors";
"${m}+${s}+u" =
"${ex} ${libreoffice-fresh}/lib/libreoffice/program/soffice.bin";
};
};
}

50
laptop/host/default.nix Normal file
View file

@ -0,0 +1,50 @@
{ lib, stateVersion ? null, userName, True, False, ... }: {
imports = [ ./parts ../../modules/nixos ];
module = {
theme.stylix = True;
# HARDWARE MODULES
hardware = {
bluetooth = True;
boot = True;
cpu = True;
gpu = True;
network = True;
security = True;
sound = True;
};
# SERVICES MODULES
services = {
autocpu = True;
dbus = True;
getty = True;
gvfs = True;
mpd = False;
polkit = True;
tailscale = True;
tlp = True;
zram = True // { algo = "zstd"; };
};
# PROGRAMS MODULES
programs = {
common = True;
hyprland = True;
steam = False;
torrserver = False;
};
misc = {
console = False;
locales = True // { zone = "Asia/Chita"; };
minimal = True;
power = True;
system76 = True;
trackpoint = True;
users = True // { shell = "fish"; };
variables = True;
zapret = False;
nix = True;
};
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
system.stateVersion = stateVersion;
}

View file

@ -0,0 +1 @@
{ imports = [ ./disks.nix ]; }

View file

@ -0,0 +1,17 @@
{ modulesPath, ... }: {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
fileSystems = {
"/" = { # ROOT
device = "/dev/disk/by-uuid/9913d333-cd8d-4960-8e3c-4af764b9a9ca";
label = "nixos";
fsType = "btrfs";
options = [ "subvol=@" "compress=zstd" ];
};
"/boot" = { # EFI
device = "/dev/disk/by-uuid/8547-1299";
label = "esp";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
};
}

1
modules/home/default.nix Normal file
View file

@ -0,0 +1 @@
{ imports = [ ./misc ./programs ./shells ./themes ./wm ]; }

View file

@ -0,0 +1,44 @@
{ lib, config, True, ... }:
with lib;
let cfg = config.module.misc.dconf;
in {
options = { module.misc.dconf = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
dconf = True // {
settings = let
gnome = "org/gnome/desktop";
nemo = "org/nemo";
in {
"${gnome}/wm/preferences" = { button-layout = ""; };
"${gnome}/applications/terminal" = { exec = "kitty"; };
"${nemo}/icon-view" = {
default-zoom-level = "larger";
captions = [ "none" "none" "none" ];
};
"${nemo}/window-state" = {
network-expanded = false;
start-with-sidebar = true;
start-with-status-bar = false;
start-with-menu-bar = false;
};
"${nemo}/preferences" = {
disable-menu-warning = true;
show-computer-icon-toolbar = true;
show-edit-icon-toolbar = false;
show-home-icon-toolbar = true;
show-icon-view-icon-toolbar = false;
show-list-view-icon-toolbar = false;
show-next-icon-toolbar = false;
show-previous-icon-toolbar = false;
show-search-icon-toolbar = false;
show-up-icon-toolbar = false;
thumbnail-limit = "2147483648";
};
};
};
};
}

View file

@ -0,0 +1,4 @@
{
imports = [ ./home-manager ./markdown ./minimal ./xdg ./dconf.nix ./nix.nix ];
}

View file

@ -0,0 +1,18 @@
{ lib, config, userName, stateVersion ? null, True, ... }:
with lib;
let cfg = config.module.misc.home-manager;
in {
options = { module.misc.home-manager = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.home-manager = True;
home = {
username = userName;
homeDirectory = "/home/${userName}";
stateVersion = stateVersion;
};
};
}

View file

@ -0,0 +1,166 @@
{ pkgs, lib, config, ... }:
with lib;
let cfg = config.module.misc.markdown;
in {
options = { module.misc.markdown = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
home = {
packages = with pkgs; [
# VIEWERS
glow
# PRESENTATION
slides # VERY SIMPLE
presenterm # WITH IMAGES AND OTHER STUFF
# TOOLS
graph-easy # CREATE GRAPHS
];
};
xdg.configFile."mdtheme.json".text = with config.lib.stylix.colors; ''
{
"document": { "color": "#${base06}", "margin": 2 },
"block_quote": { "indent": 1, "indent_token": " " },
"list": { "level_indent": 2, "margin": 4 },
"paragraph": {
"color": "#${base06}",
"background_color": "#${base00}",
"margin": 2
},
"heading": {
"block_suffix": "\n",
"color": "#${base0E}",
"bold": true
},
"h1": {
"prefix": " ",
"suffix": " ",
"color": "#${base00}",
"background_color": "#${base08}",
"bold": true
},
"h2": {
"prefix": " ",
"suffix": " ",
"color": "#${base00}",
"background_color": "#${base09}",
"bold": true,
"margin": 2
},
"h3": {
"prefix": " ",
"suffix": " ",
"color": "#${base00}",
"background_color": "#${base0B}",
"bold": true,
"margin": 2
},
"h4": {
"prefix": " ",
"suffix": " ",
"color": "#${base00}",
"background_color": "#${base0C}",
"bold": true,
"margin": 2
},
"h5": {
"prefix": " ",
"suffix": " ",
"color": "#${base00}",
"background_color": "#${base0D}",
"bold": true,
"margin": 2
},
"h6": {
"prefix": " ",
"suffix": " ",
"color": "#${base00}",
"background_color": "#${base0E}",
"bold": true,
"margin": 2
},
"text": {},
"strikethrough": { "crossed_out": true },
"emph": { "italic": true },
"strong": { "bold": true },
"hr": {
"color": "#${base0D}",
"format": "---"
},
"item": {
"block_prefix": " "
},
"enumeration": {
"block_prefix": ". "
},
"task": {
"ticked": "[] ",
"unticked": "[] "
},
"link": {
"color": "30",
"underline": true
},
"link_text": {
"color": "#${base0B}",
"bold": true
},
"image": {
"color": "#${base08}",
"underline": true
},
"image_text": {
"color": "#${base09}",
"format": "{{.text}} "
},
"code": { "color": "#${base0D}" },
"code_block": {
"color": "#${base0E}",
"block_prefix": " ",
"margin": 4,
"chroma": {
"text": { "color": "#${base06}" },
"error": { "color": "#${base00}", "background_color": "#${base08}" },
"comment": { "color": "#${base02}" },
"comment_preproc": { "color": "#${base03}" },
"keyword": { "color": "#${base09}" },
"keyword_reserved": { "color": "#${base09}" },
"keyword_namespace": { "color": "#${base09}" },
"keyword_type": { "color": "#${base09}" },
"operator": { "color": "#${base0B}" },
"punctuation": { "color": "#${base0C}" },
"name": { "color": "#${base08}" },
"name_builtin": { "color": "#${base08}" },
"name_tag": { "color": "#${base08}" },
"name_attribute": { "color": "#${base08}" },
"name_class": { "color": "#${base08}", "underline": true, "bold": true },
"name_constant": {},
"name_decorator": { "color": "#${base08}" },
"name_exception": {},
"name_function": { "color": "#${base08}" },
"name_other": {},
"literal": {},
"literal_number": { "color": "#${base0D}" },
"literal_date": {},
"literal_string": { "color": "#${base0D}" },
"literal_string_escape": { "color": "#${base0D}" },
"generic_deleted": { "color": "#${base0E}" },
"generic_emph": { "italic": true },
"generic_inserted": { "color": "#${base0E}" },
"generic_strong": { "bold": true },
"generic_subheading": { "color": "#${base0E}" },
"background": { "background_color": "#${base0E}" }
}
},
"table": {},
"definition_list": {},
"definition_term": {},
"definition_description": { "block_prefix": "\n🠶 " },
"html_block": {},
"html_span": {}
}
'';
};
}

View file

@ -0,0 +1,19 @@
{ lib, config, False, ... }:
with lib;
let cfg = config.module.misc.minimal;
in {
options = { module.misc.minimal = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
news.display = "silent";
programs.man = False;
manual = {
html = False;
json = False;
manpages = False;
};
};
}

37
modules/home/misc/nix.nix Normal file
View file

@ -0,0 +1,37 @@
{ pkgs, lib, config, userName, False, ... }:
with lib;
let cfg = config.module.misc.nix;
in {
options = { module.misc.nix = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
nix = {
package = pkgs.nix;
settings = {
warn-dirty = false;
extra-experimental-features = [ "nix-command" "flakes" ];
builders-use-substitutes = true;
auto-optimise-store = true;
extra-substituters = [
"https://nix-gaming.cachix.org" # NIX GAMING
"https://hyprland.cachix.org" # HYPRLAND
];
extra-trusted-public-keys = [
"nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" # NIX GAMING
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" # HYPRLAND
];
trusted-users = [ "${userName}" "@wheel" ];
};
};
nixpkgs.config.allowUnfree = true;
news.display = "silent";
manual = {
manpages = False;
json = False;
html = False;
};
};
}

View file

@ -0,0 +1,36 @@
{ pkgs, lib, config, True, ... }:
with lib;
let
cfg = config.module.misc.xdg;
hmdir = config.home.homeDirectory;
in {
options = { module.misc.xdg = { enable = mkEnableOption ""; }; };
imports = [ ./mimeApps.nix ];
config = mkIf cfg.enable {
xdg = {
mime = True;
portal = True // {
config.common.default = "gtk";
extraPortals = with pkgs; [
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
];
};
userDirs = 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";
};
};
};
}

View file

@ -0,0 +1,118 @@
{ True, ... }:
let ds = "desktop";
in {
xdg.mimeApps = True // {
defaultApplications = {
# TEXT FORMATS
"text/plain" = "Helix.${ds}";
"text/x-cmake" = "Helix.${ds}";
"text/markdown" = "Helix.${ds}";
"text/rhtml" = "Helix.${ds}";
"text/x-tex" = "Helix.${ds}";
"text/x-java" = "Helix.${ds}";
"text/x-ruby" = "Helix.${ds}";
"inode/x-empty" = "Helix.${ds}";
"text/x-python" = "Helix.${ds}";
"text/x-readme" = "Helix.${ds}";
"text/x-markdown" = "Helix.${ds}";
"application/json" = "Helix.${ds}";
"application/x-ruby" = "Helix.${ds}";
"application/x-yaml" = "Helix.${ds}";
"application/x-shellscript" = "Helix.${ds}";
"application/x-docbook+xml" = "Helix.${ds}";
# IMAGE FORMATS
"image/avif" = "swayimg.${ds}";
"image/gif" = "swayimg.${ds}";
"image/heif" = "swayimg.${ds}";
"image/jpg" = "swayimg.${ds}";
"image/jpeg" = "swayimg.${ds}";
"image/jxl" = "swayimg.${ds}";
"image/png" = "swayimg.${ds}";
"image/bmp" = "swayimg.${ds}";
"image/x-eps" = "swayimg.${ds}";
"image/x-icns" = "swayimg.${ds}";
"image/x-ico" = "swayimg.${ds}";
"image/x-portable-bitmap" = "swayimg.${ds}";
"image/x-portable-graymap" = "swayimg.${ds}";
"image/x-portable-swayimgmap" = "swayimg.${ds}";
"image/x-xbitmap" = "swayimg.${ds}";
"image/x-xswayimgmap" = "swayimg.${ds}";
"image/tiff" = "swayimg.${ds}";
"image/x-psd" = "swayimg.${ds}";
"image/x-webp" = "swayimg.${ds}";
"image/webp" = "swayimg.${ds}";
"image/x-tga" = "swayimg.${ds}";
"image/svg+xml" = "swayimg.${ds}";
# VIDEO FORMATS
"video/3gp" = "mpv.${ds}";
"video/3gpp" = "mpv.${ds}";
"video/3gpp2" = "mpv.${ds}";
"video/avi" = "mpv.${ds}";
"video/divx" = "mpv.${ds}";
"video/dv" = "mpv.${ds}";
"video/fli" = "mpv.${ds}";
"video/flv" = "mpv.${ds}";
"video/mp2t" = "mpv.${ds}";
"video/mp4" = "mpv.${ds}";
"video/mp4v-es" = "mpv.${ds}";
"video/mpeg" = "mpv.${ds}";
"video/msvideo" = "mpv.${ds}";
"video/ogg" = "mpv.${ds}";
"video/quicktime" = "mpv.${ds}";
"video/vnd.divx" = "mpv.${ds}";
"video/vnd.mpegurl" = "mpv.${ds}";
"video/vnd.rn-realvideo" = "mpv.${ds}";
"video/webm" = "mpv.${ds}";
"video/x-avi" = "mpv.${ds}";
"video/x-flv" = "mpv.${ds}";
"video/x-m4v" = "mpv.${ds}";
"video/x-matroska" = "mpv.${ds}";
"video/x-mpeg2" = "mpv.${ds}";
"video/x-ms-asf" = "mpv.${ds}";
"video/x-msvideo" = "mpv.${ds}";
"video/x-ms-wmv" = "mpv.${ds}";
"video/x-ms-wmx" = "mpv.${ds}";
"video/x-ogm" = "mpv.${ds}";
"video/x-ogm+ogg" = "mpv.${ds}";
"video/x-theora" = "mpv.${ds}";
"video/x-theora+ogg" = "mpv.${ds}";
"application/x-matroska" = "mpv.${ds}";
# AUDIO FORMATS
"audio/aac" = "mpv.${ds}";
"audio/mp4" = "mpv.${ds}";
"audio/mpeg" = "mpv.${ds}";
"audio/mpegurl" = "mpv.${ds}";
"audio/ogg" = "mpv.${ds}";
"audio/vnd.rn-realaudio" = "mpv.${ds}";
"audio/vorbis" = "mpv.${ds}";
"audio/x-flac" = "mpv.${ds}";
"audio/x-mp3" = "mpv.${ds}";
"audio/x-mpegurl" = "mpv.${ds}";
"audio/x-ms-wma" = "mpv.${ds}";
"audio/x-musepack" = "mpv.${ds}";
"audio/x-oggflac" = "mpv.${ds}";
"audio/x-pn-realaudio" = "mpv.${ds}";
"audio/x-scpls" = "mpv.${ds}";
"audio/x-speex" = "mpv.${ds}";
"audio/x-vorbis" = "mpv.${ds}";
"audio/x-vorbis+ogg" = "mpv.${ds}";
"audio/x-wav" = "mpv.${ds}";
# WEB
"text/html" = "zen.${ds}";
"x-scheme-handler/ftp" = "zen.${ds}";
"application/xhtml+xml" = "zen.${ds}";
"x-scheme-handler/http" = "zen.${ds}";
"x-scheme-handler/https" = "zen.${ds}";
"x-scheme-handler/chrome" = "zen.${ds}";
"application/x-extension-htm" = "zen.${ds}";
"application/x-extension-xht" = "zen.${ds}";
"application/x-extension-html" = "zen.${ds}";
"application/x-extension-shtml" = "zen.${ds}";
"application/x-extension-xhtml" = "zen.${ds}";
"x-scheme-handler/about" = "zen.${ds}";
"x-scheme-handler/unknown" = "zen.${ds}";
# OTHER
};
};
}

View file

@ -0,0 +1,32 @@
{ 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; {
homepage = "https://github.com/vypivshiy/anicli-api";
maintainers = with maintainers; [ DADA30000 azikx ];
mainProgram = "anicli-api";
};
}

View file

@ -0,0 +1,27 @@
{ 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; {
homepage = "https://github.com/vypivshiy/ani-cli-ru";
maintainers = with maintainers; [ DADA30000 azikx ];
mainProgram = "anicli-ru";
};
}

View file

@ -0,0 +1,23 @@
{ 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; {
homepage = "https://github.com/Nykakin/chompjs";
maintainers = with maintainers; [ DADA30000 ];
mainProgram = "chompjs";
};
}

View file

@ -0,0 +1,13 @@
{ pkgs, lib, config, ... }:
with lib;
let cfg = config.module.programs.cli.anicli;
in {
options = { module.programs.cli.anicli = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
home.packages = [ (pkgs.callPackage ./anicli-ru.nix { }) ];
};
}

View file

@ -0,0 +1,27 @@
{ 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; {
homepage = "https://github.com/vypivshiy/eggella";
maintainers = with maintainers; [ DADA30000 azikx ];
mainProgram = "eggella";
};
}

View file

@ -0,0 +1,21 @@
{ pkgs, lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.bat;
in {
options = { module.programs.cli.bat = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.bat = True // {
extraPackages = with pkgs.bat-extras; [
# prettybat
batwatch
batgrep
batdiff
];
config = { wrap = "character"; };
};
};
}

View file

@ -0,0 +1,26 @@
{ lib, config, ... }:
with lib;
let cfg = config.module.programs.cli.cava;
in {
options = { module.programs.cli.cava = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.cava = {
enable = true;
settings = {
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}'";
};
};
};
};
}

View file

@ -0,0 +1,18 @@
{
imports = [
./anicli
./bat
./cava
./eza
./fetch
./fzf
./git
./helix
./micro
./rmpc
./top
./yazi
./zoxide
./pkgs.nix
];
}

View file

@ -0,0 +1,16 @@
{ lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.eza;
in {
options = { module.programs.cli.eza = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.eza = True // {
icons = "auto";
extraOptions = [ "--group-directories-first" "--icons=always" ];
};
};
}

View file

@ -0,0 +1,77 @@
{ pkgs, lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.fetch;
in {
options = { module.programs.cli.fetch = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
home.packages = with pkgs; [ onefetch ];
programs.fastfetch = 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"; }
];
};
};
};
}

View file

@ -0,0 +1,21 @@
{ lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.fzf;
in {
options = { module.programs.cli.fzf = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.fzf = True // {
defaultOptions = [
"--border=rounded"
"--info=hidden"
"--no-mouse"
"--margin=1,49%,1,1"
"--padding=0"
];
};
};
}

View file

@ -0,0 +1,71 @@
{ pkgs, lib, config, flakeDir, True, False, ... }:
with lib;
let
cfg = config.module.programs.cli.git;
never = "git@git.sr.ht:~neverness";
interval = 300;
repo = {
ultima = "/persist/flake";
wallpapers = "/persist/wallpapers";
readme = "/persist/readme";
niXtended = "/persist/niXtended";
};
in {
options = {
module.programs.cli.git = {
enable = mkEnableOption "";
path = mkOption {
default = null;
type = types.str;
};
name = mkOption {
default = null;
type = types.str;
};
email = mkOption {
default = null;
type = types.str;
};
};
};
config = mkIf cfg.enable {
programs.git = True // {
package = pkgs.gitMinimal;
userName = cfg.name;
userEmail = cfg.email;
extraConfig = {
color.ui = true;
init.defaultBranch = "main";
safe.directory = flakeDir;
};
};
services.git-sync = False // {
repositories = {
"ultima" = {
inherit interval;
uri = "${never}/ultima";
path = repo.ultima;
};
"wallpapers" = {
inherit interval;
uri = "${never}/wallpapers";
path = repo.wallpapers;
};
"readme" = {
inherit interval;
uri = "${never}/readme";
path = repo.readme;
};
"niXtended" = {
inherit interval;
uri = "${never}/niXtended";
path = repo.niXtended;
};
};
};
};
}

View file

@ -0,0 +1,25 @@
{ ... }: {
programs.helix.settings.keys = {
normal = {
y = "yank";
Y = "yank_to_clipboard";
D = "delete_selection_noyank";
space = {
space = "file_picker";
c = "toggle_comments";
f = "file_picker_in_current_directory";
F = "file_picker";
b = {
b = "buffer_picker";
n = ":buffer-next";
p = ":buffer-previous";
d = ":buffer-close";
D = ":buffer-close!";
O = ":buffer-close-others";
};
};
};
insert = { };
};
}

View file

@ -0,0 +1,13 @@
{ lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.helix;
in {
options = { module.programs.cli.helix = { enable = mkEnableOption ""; }; };
imports = [ ./sets.nix ./binds.nix ./langs.nix ./theme.nix ];
config =
mkIf cfg.enable { programs.helix = True // { defaultEditor = true; }; };
}

View file

@ -0,0 +1,109 @@
{ pkgs, ... }:
let
indent = {
tab-width = 2;
unit = " ";
};
auto-format = true;
in {
programs.helix = with pkgs; {
languages = {
language = let prettier = nodePackages_latest.prettier;
in [
{ # NIX LSP
name = "nix";
language-servers = [ "nixd" ];
formatter.command = "${nixfmt-classic}/bin/nixfmt";
indent = indent;
inherit auto-format;
}
{ # FISH LSP
name = "fish";
language-servers = [ "fish_indent" ];
inherit auto-format;
formatter.command = "${fish}/bin/fish_indent";
indent = indent;
}
{ # HTML
name = "html";
language-servers = [ "vscode-html-language-server" ];
inherit auto-format;
formatter = {
command = "${prettier}/bin/prettier";
args = [ "--use-tabs" "--parser" "html" ];
};
}
{ # JSON
name = "json";
language-servers = [ "vscode-json-language-server" ];
inherit auto-format;
formatter = {
command = "${prettier}/bin/prettier";
args = [ "--use-tabs" "--parser" "json" ];
};
}
{ # JSON
name = "jsonc";
language-servers = [ "vscode-json-language-server" ];
inherit auto-format;
formatter = {
command = "${prettier}/bin/prettier";
args = [ "--use-tabs" "--parser" "json" ];
};
}
{ # CSS
name = "css";
language-servers = [ "vscode-css-language-server" ];
inherit auto-format;
formatter = {
command = "${prettier}/bin/prettier";
args = [ "--use-tabs" "--parser" "css" ];
};
}
{ # MARKDOWN
name = "markdown";
language-servers = [ "marksman" ];
inherit auto-format;
formatter = {
command = "${prettier}/bin/prettier";
args = [ "--use-tabs" "--parser" "markdown" ];
};
}
{ # TYPESCRIP
name = "typescript";
language-servers = [ "typescript" ];
inherit auto-format;
formatter = {
command = "${prettier}/bin/prettier";
args = [ "--use-tabs" "--parser" "typescript" ];
};
}
];
language-server = let vscode = vscode-langservers-extracted;
in {
nixd = { command = "${nixd}/bin/nixd"; };
fish_indent = { command = "${fish}/bin/fish_indent"; };
vscode-html-language-server = {
command = "${vscode}/bin/vscode-html-language-server";
};
vscode-json-language-server = {
command = "${vscode}/bin/vscode-json-language-server";
};
vscode-css-language-server = {
command = "${vscode}/bin/vscode-css-language-server";
};
marksman = { command = "${marksman}/bin/marksman"; };
typescript = {
command =
"${typescript-language-server}/bin/typescript-language-server";
};
};
};
extraPackages = with pkgs; [
# OTHER LSP
yaml-language-server
lua-language-server
taplo
];
};
}

View file

@ -0,0 +1,62 @@
{ fetchurl, nodeEnv, globalBuildInputs ? [ ], ... }:
let
sources = {
"@taplo/core-0.1.1" = {
name = "_at_taplo_slash_core";
packageName = "@taplo/core";
version = "0.1.1";
src = fetchurl {
url = "https://registry.npmjs.org/@taplo/core/-/core-0.1.1.tgz";
sha512 =
"BG/zLGf5wiNXGEVPvUAAX/4ilB3PwDUY2o0MV0y47mZbDZ9ad9UK/cIQsILat3bqbPJsALVbU6k3cskNZ3vAQg==";
};
};
"@taplo/lib-0.4.0-alpha.2" = {
name = "_at_taplo_slash_lib";
packageName = "@taplo/lib";
version = "0.4.0-alpha.2";
src = fetchurl {
url = "https://registry.npmjs.org/@taplo/lib/-/lib-0.4.0-alpha.2.tgz";
sha512 =
"DV/Re3DPVY+BhBtLZ3dmP4mP6YMLSsgq9qGLXwOV38lvNF/fBlgvQswzlXmzCEefL/3q2eMoefZpOI/+GLuCNA==";
};
};
"prettier-3.3.3" = {
name = "prettier";
packageName = "prettier";
version = "3.3.3";
src = fetchurl {
url = "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz";
sha512 =
"i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==";
};
};
};
in {
prettier-plugin-sh = nodeEnv.buildNodePackage {
name = "prettier-plugin-sh";
packageName = "prettier-plugin-sh";
version = "0.14.0";
src = fetchurl {
url =
"https://registry.npmjs.org/prettier-plugin-toml/-/prettier-plugin-toml-2.0.1.tgz";
sha512 =
"99z1YOkViECHtXQjGIigd3talI/ybUI1zB3yniAwUrlWBXupNXThB1hM6bwSMUEj2/+tomTlMtT98F5t4s8IWA==";
};
dependencies = [
sources."@taplo/core-0.1.1"
sources."@taplo/lib-0.4.0-alpha.2"
sources."prettier-3.3.3"
];
buildInputs = globalBuildInputs;
meta = {
description = "An opinionated `toml` formatter plugin for Prettier";
homepage =
"https://github.com/un-ts/prettier/tree/master/packages/prettier";
license = "MIT";
};
production = true;
bypassCache = true;
reconstructLock = true;
};
}

View file

@ -0,0 +1,62 @@
{ ... }: {
programs.helix = {
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 = "»";
skip-levels = 0;
};
cursor-shape = {
insert = "bar";
normal = "block";
select = "underline";
};
soft-wrap = {
enable = true;
max-wrap = 25;
wrap-indicator = " ";
};
statusline = {
left = [
"mode"
"spacer"
"spinner"
"file-name"
"file-modification-indicator"
"read-only-indicator"
];
center = [ ];
right = [
"register"
"file-type"
"separator"
"spacer"
"position"
"position-percentage"
"separator"
"total-line-numbers"
"spacer"
];
separator = "|";
mode.normal = "NORMAL";
mode.insert = "INSERT";
mode.select = "SELECT";
};
file-picker = { hidden = false; };
};
};
};
}

View file

@ -0,0 +1,192 @@
{ lib, config, ... }: {
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" = {
fg = BASE04;
bg = BASE00;
};
"ui.bufferline.separator" = {
fg = BASE00;
bg = BASE01;
};
"ui.bufferline.active" = {
fg = BASE04;
bg = BASE02;
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 = BASE04;
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 = BASE06;
bg = BASE02;
modifiers = [ "bold" ];
};
"ui.statusline.select" = {
fg = BASE00;
bg = BASE0A;
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;
fg = BASE04;
};
};
};
}

View file

@ -0,0 +1,74 @@
{ lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.micro;
in {
options = { module.programs.cli.micro = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.micro = 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"
'';
};
}

View file

@ -0,0 +1,17 @@
{ lib, config, ... }:
with lib;
let cfg = config.module.programs.cli;
in {
options = {
module.programs.cli = {
pkgs = mkOption {
type = lib.types.listOf lib.types.package;
default = null;
};
};
};
config = { home.packages = [ ] ++ cfg.pkgs; };
}

View file

@ -0,0 +1,143 @@
#![enable(implicit_some)]
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
address: "127.0.0.1:6600",
password: None,
theme: None,
cache_dir: None,
on_song_change: None,
volume_step: 5,
scrolloff: 0,
wrap_navigation: false,
enable_mouse: false,
status_update_interval_ms: 1000,
select_current_song_on_change: false,
album_art: (
method: Auto,
max_size_px: (width: 600, height: 600),
),
keybinds: (
global: {
":": CommandMode,
",": VolumeDown,
"s": Stop,
".": VolumeUp,
"c": ToggleSingle,
"<Tab>": NextTab,
"<S-Tab>": PreviousTab,
"1": SwitchToTab("Queue"),
"2": SwitchToTab("Directories"),
"3": SwitchToTab("Artists"),
"4": SwitchToTab("Albums"),
"5": SwitchToTab("Playlists"),
"6": SwitchToTab("Search"),
"q": Quit,
"x": ToggleRandom,
">": NextTrack,
"<": PreviousTrack,
"f": SeekForward,
"v": ToggleConsume,
"p": TogglePause,
"z": ToggleRepeat,
"b": SeekBack,
"~": ShowHelp,
"I": ShowCurrentSongInfo,
"O": ShowOutputs,
},
navigation: {
"k": Up,
"j": Down,
"h": Left,
"l": Right,
"<Up>": Up,
"<Down>": Down,
"<Left>": Left,
"<Right>": Right,
"<C-k>": PaneUp,
"<C-j>": PaneDown,
"<C-h>": PaneLeft,
"<C-l>": PaneRight,
"<C-u>": UpHalf,
"N": PreviousResult,
"a": Add,
"A": AddAll,
"r": Rename,
"n": NextResult,
"g": Top,
"<Space>": Select,
"G": Bottom,
"<CR>": Confirm,
"i": FocusInput,
"J": MoveDown,
"<C-d>": DownHalf,
"/": EnterSearch,
"<C-c>": Close,
"<Esc>": Close,
"K": MoveUp,
"D": Delete,
},
queue: {
"D": DeleteAll,
"<CR>": Play,
"<C-s>": Save,
"a": AddToPlaylist,
"d": Delete,
"i": ShowInfo,
},
),
search: (
case_sensitive: false,
mode: Contains,
tags: [
(value: "any", label: "Any Tag"),
(value: "artist", label: "Artist"),
(value: "album", label: "Album"),
(value: "albumartist", label: "Album Artist"),
(value: "title", label: "Title"),
(value: "filename", label: "Filename"),
(value: "genre", label: "Genre"),
],
),
tabs: [
(
name: "Queue",
border_type: None,
pane: Split(
direction: Horizontal,
panes: [(size: "40%", pane: Pane(AlbumArt)), (size: "60%", pane: Pane(Queue))],
),
),
(
name: "Directories",
border_type: None,
pane: Pane(Directories),
),
(
name: "Artists",
border_type: None,
pane: Pane(Artists),
),
(
name: "Album Artists",
border_type: None,
pane: Pane(AlbumArtists),
),
(
name: "Albums",
border_type: None,
pane: Pane(Albums),
),
(
name: "Playlists",
border_type: None,
pane: Pane(Playlists),
),
(
name: "Search",
border_type: None,
pane: Pane(Search),
),
],
)

View file

@ -0,0 +1,17 @@
{ pkgs, lib, config, ... }:
with lib;
let cfg = config.module.programs.cli.rmpc;
in {
options = { module.programs.cli.rmpc = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
home.packages = with pkgs; [ rmpc ];
xdg.configFile = {
"rmpc/config.ron".source = ./config.ron;
# "rmpc/themes/base16.ron".source = ./theme.ron;
};
};
}

View file

@ -0,0 +1,21 @@
{ pkgs, lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.top;
in {
options = { module.programs.cli.top = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
home.packages = with pkgs; [ nvtopPackages.amd ];
programs.btop = True // {
settings = {
color_theme = "TTY";
theme_background = true;
vim_keys = true;
rounded_corners = true;
};
};
};
}

View file

@ -0,0 +1,226 @@
{ flakeDir, ... }: {
programs.yazi.keymap = {
manager = {
prepend_keymap = [
# MAIN
{
on = "q";
run = "close";
desc = "Close tab/yazi";
}
{
on = "l";
run = "plugin --sync smart-enter";
desc = "Enter/open";
}
{
on = "!";
run = "shell '$SHELL' --block --confirm";
desc = "Enter to shell";
}
{
on = "<Esc>";
run = "close";
desc = "Close";
}
{
on = "<Right>";
run = "plugin --sync smart-enter";
desc = "Enter/open";
}
{
on = "<Enter>";
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 = "Select mode";
}
{
on = [ "v" "V" ];
run = "visual_mode --unset";
desc = "Un-select mode";
}
{
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 files with .*";
}
# DELETION
{
on = [ "d" "d" ];
run = "remove";
desc = "Delete";
}
{
on = [ "d" "D" ];
run = "remove --permanently";
desc = "Delete permanently";
}
{
on = [ "D" "d" ];
run = "remove --force";
desc = "Delete force";
}
{
on = [ "D" "D" ];
run = "remove --permanently --force";
desc = "Delete permanently via force";
}
# CREATE
{
on = [ "a" "f" ];
run = "create";
desc = "Create file";
}
{
on = [ "a" "d" ];
run = "create --dir";
desc = "Create directory";
}
# RENAME
{
on = [ "r" "r" ];
run = "rename";
desc = "Rename";
}
{
on = [ "r" "n" ];
run = "rename --empty=stem --cursor=start";
desc = "Rename namefile";
}
{
on = [ "r" "e" ];
run = "rename --empty=ext --cursor=end";
desc = "Rename extension";
}
{
on = [ "r" "a" ];
run = "rename --empty=all";
desc = "Delete all and rename";
}
# NAVIGATE
{
on = [ "c" "d" ];
run = "cd --interactive";
desc = "Jump interactively";
}
{
on = [ "g" "f" "f" ];
run = "cd ${flakeDir}";
desc = "Go to flake main dir";
}
{
on = [ "g" "f" "h" ];
run = "cd ${flakeDir}/modules/home";
desc = "Go to home modules";
}
{
on = [ "g" "f" "H" ];
run = "cd ${flakeDir}/modules/host";
desc = "Go to nixos modules";
}
# TABS
{
on = [ "]" ];
run = "tab_switch -1 --relative";
desc = "Switch to the next tab";
}
{
on = [ "[" ];
run = "tab_switch 1 --relative";
desc = "Switch to the previous tab";
}
# PASTE
{
on = [ "p" "p" ];
run = "paste";
desc = "Paste yanked files";
}
{
on = [ "p" "P" ];
run = "plugin --sync smart-paste";
desc = "Paste yanked files in preview dir";
}
# MOUNTOPTIONS
{
on = [ "m" "a" ];
run = "plugin archivemount --args=mount";
desc = "Mount selected archive";
}
{
on = [ "m" "u" ];
run = "plugin archivemount --args=unmount";
desc = "Unmount and save changes to original archive";
}
# MTPFS
{
on = [ "M" "m" ];
run = "plugin simple-mtpfs --args=select-then-mount";
desc = "Select device then mount";
}
{
on = [ "M" "u" ];
run = "plugin simple-mtpfs --args=select-then-unmount";
desc = "Select device then unmount";
}
{
on = [ "g" "m" ];
run = "plugin simple-mtpfs --args=jump-to-device";
desc = "Select device then jump to its mount point";
}
{
on = [ "`" "`" ];
run = "plugin simple-mtpfs --args=jump-back-prev-cwd";
desc = "Jump back to the position before jumped to device";
}
];
};
completion = {
prepend_keymap = [
{
on = "<C-j>";
run = "arrow 1";
}
{
on = "<C-k>";
run = "arrow -1";
}
];
};
};
}

View file

@ -0,0 +1,19 @@
{ lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.yazi;
in {
options = { module.programs.cli.yazi = { enable = mkEnableOption ""; }; };
imports = [
./sets.nix
./binds.nix
./theme.nix
./lua.nix
./plugins.nix
./starship.nix
];
config = mkIf cfg.enable { programs.yazi = True // { }; };
}

View file

@ -0,0 +1,96 @@
{ ... }: {
programs.yazi.initLua = ''
require("no-status"):setup()
require("archivemount"):setup()
require("full-border"):setup { type = ui.Border.ROUNDED, }
require("yatline"):setup({
section_separator = { open = "", close = "" },
part_separator = { open = "", close = "" },
inverse_separator = { open = "", close = "" },
style_a = {
fg = "black",
bg_mode = {
normal = "blue",
select = "yellow",
un_set = "red"
}
},
style_b = { bg = "brightblack", fg = "brightwhite" },
style_c = { bg = "black", fg = "brightwhite" },
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 = true,
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 = false,
display_header_line = true,
display_status_line = true,
header_line = {
left = {
section_a = {
{type = "string", custom = false, name = "tab_path"},
},
section_b = {
},
section_c = {
}
},
right = {
section_a = {
{type = "line", custom = false, name = "tabs", params = {"right"}},
},
section_b = {
},
section_c = {
}
}
},
status_line = {
left = {
section_a = {
{type = "string", custom = false, name = "tab_mode"},
},
section_b = {
{type = "string", custom = false, name = "hovered_size"},
},
section_c = {
{type = "string", custom = false, name = "hovered_name"},
{type = "coloreds", custom = false, name = "count"},
}
},
right = {
section_a = {
{type = "string", custom = false, name = "date", params = {"%d/%m/%Y"}},
},
section_b = {
{type = "string", custom = false, name = "hovered_file_extension", params = {true}},
},
section_c = {
{type = "coloreds", custom = false, name = "permissions"},
}
}
},
})
'';
}

View file

@ -0,0 +1,89 @@
{ pkgs, ... }:
let
yazi-plugins = pkgs.fetchFromGitHub {
owner = "yazi-rs";
repo = "plugins";
rev = "main";
hash = "sha256-RYa7wbFGZ9citYYdF9FYJwzUGBmIUvNBdORpBPb6ZnQ=";
};
in {
programs.yazi.plugins = with pkgs; {
# 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 = fetchFromGitHub {
owner = "ndtoan96";
repo = "ouch.yazi";
rev = "251da6930ca8b7ee0384810086c3bf644caede3e";
hash = "sha256-yLt9aY6hUIOdBI5bMdCs7VYFJGyD3WIkmPxvWKNCskA=";
};
glow = fetchFromGitHub {
owner = "Reledia";
repo = "glow.yazi";
rev = "4e016fa2357e5e7e9b1a4881e1492d73a0a2f2cc";
hash = "sha256-d73C8s8p85c0xfq8Nfzlnp83JUakMPbviQDFCX0G+qE=";
};
ffmpeg = fetchFromGitHub {
owner = "Tyarel8";
repo = "video-ffmpeg.yazi";
rev = "fe26a18f9b32880e10b686df5c4559d9af2bce6b";
hash = "sha256-PIsetF42mlxDv7hEBgjt4FdryDhWTAF/o0Z3Z1G8HJE=";
};
relative = fetchFromGitHub {
owner = "dedukun";
repo = "relative-motions.yazi";
rev = "89d0cb9c84a7bba98d2e7ca4bac706d2458d0c06";
hash = "sha256-qtjAgH+NS4YFVIwq+x2sC90y4vDSXNI8pGXIZ3FuQMU=";
};
enter = fetchFromGitHub {
owner = "ourongxing";
repo = "fast-enter.yazi";
rev = "dd498123cb0696d7fa50b32d2268fb8c2084a4a4";
hash = "sha256-jjluqFboFXV4yqBMvW7WhO61Urn2FQ/O31PqlaCxB2c=";
};
yatline = fetchFromGitHub {
owner = "imsi32";
repo = "yatline.yazi";
rev = "7b56434864d6a0b5d547fed2339b99346a018522";
hash = "sha256-4qxBAXFyPBQhSU24xL7fzhgM5e8Cq7BigEp4GPxSjD4=";
};
archivemount = fetchFromGitHub {
owner = "AnirudhG07";
repo = "archivemount.yazi";
rev = "e82e38eda858716a1328b5e0c34382547777cb28";
hash = "sha256-gHk4PJDXq3OPUDD9sFZI+CcIFVDOxUzPLOezX3DDNVU=";
};
};
# CUSTOM PLUGINS
xdg.configFile = {
"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,
}
'';
"yazi/plugins/smart-paste.yazi/init.lua".text = ''
return {
entry = function()
local h = cx.active.current.hovered
if h and h.cha.is_dir then
ya.manager_emit("enter", {})
ya.manager_emit("paste", {})
ya.manager_emit("leave", {})
else
ya.manager_emit("paste", {})
end
end,
}
'';
};
}

View file

@ -0,0 +1,149 @@
{ pkgs, userName, ... }: {
programs.yazi = {
shellWrapperName = "yy";
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 = {
open = [{ run = "xdg-open $1"; }];
edit = [{
run = ''hx "$@"'';
block = true;
}];
reveal = [{ run = ''xdg-open "$(dirname "$1")"''; }];
play = [{
run = ''mpv --force-window "$@"'';
orphan = true;
}];
image = [{
run = ''swayimg "$@"'';
block = true;
}];
document = [{
desc = "Document";
orphan = true;
run = "onlyoffice-desktopeditors";
}];
};
open = {
rules = [
# Folder
{
name = "*/";
use = [ "edit" "open" "reveal" ];
}
# Text
{
mime = "text/*";
use = [ "edit" "reveal" ];
}
# Image
{
mime = "image/*";
use = [ "open" "reveal" ];
}
# Media
{
mime = "{audio,video}/*";
use = [ "play" "reveal" ];
}
# Archive
{
mime = "application/{,g}zip";
use = [ "extract" "reveal" ];
}
{
mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}";
use = [ "extract" "reveal" ];
}
# JSON
{
mime = "application/{json,x-ndjson,octet-stream}";
use = [ "edit" "reveal" ];
}
{
mime = "*/javascript";
use = [ "edit" "reveal" ];
}
# Empty file
{
mime = "inode/x-empty";
use = [ "edit" "reveal" ];
}
# Fallback
{
name = "*";
use = [ "open" "reveal" ];
}
# Documents
{
mime = "application/vnd.openxmlformats-officedocument.*";
use = "document";
}
];
};
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
atool
p7zip
zip
jq
poppler_min
imagemagick
glow
ouch
];
}

View file

@ -0,0 +1,37 @@
{ lib, config, ... }: {
xdg.configFile = {
"yazi/star.toml".text = ''
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" = " "
'';
};
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,17 @@
{ lib, config, True, ... }:
with lib;
let cfg = config.module.programs.cli.zoxide;
in {
options = { module.programs.cli.zoxide = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.zoxide = True // {
enableFishIntegration = true;
enableZshIntegration = true;
options = [ "--cmd cd" ];
};
};
}

View file

@ -0,0 +1 @@
{ imports = [ ./cli ./gui ]; }

View file

@ -0,0 +1,13 @@
{
imports = [
./floorp
./mpv
./obs
./qbittorrent
./spotify
./swayimg
./thunderbird
./pkgs.nix
];
}

View file

@ -0,0 +1,53 @@
{ buildFirefoxXpiAddon, lib, }: {
"torrserver-adder" = buildFirefoxXpiAddon {
pname = "torrserver-adder";
version = "2.0.5";
addonId = "84z74tXJKt8OUrTD@TSA";
url =
"https://addons.mozilla.org/firefox/downloads/file/4264581/torrserver_adder-2.0.5.xpi";
sha256 = "6783c13fe423c14fbf9dd23ea3232167dc78eeb298594ab802aa9a7b094fb365";
meta = with lib; {
homepage = "https://github.com/Noperkot/TorrServerAdder";
description =
"Allows you to add torrents to TorrServer and play them using the system media player";
license = licenses.mpl20;
mozPermissions = [
"http://*/*"
"https://*/*"
"contextMenus"
"downloads"
"storage"
"tabs"
"webRequest"
"webRequestBlocking"
];
platforms = platforms.all;
};
};
"proton-pass" = buildFirefoxXpiAddon {
pname = "proton-pass";
version = "1.24.1";
addonId = "78272b6fa58f4a1abaac99321d503a20@proton.me";
url =
"https://addons.mozilla.org/firefox/downloads/file/4379392/proton_pass-1.24.1.xpi";
sha256 = "1290a7d3b91204fae8f392c8dd4b3f62e4fa0182ae98de1d0042280af744be80";
meta = with lib; {
homepage = "https://proton.me";
license = licenses.gpl3;
mozPermissions = [
"activeTab"
"alarms"
"scripting"
"storage"
"unlimitedStorage"
"webRequest"
"webRequestBlocking"
"https://*/*"
"http://*/*"
"https://account.proton.me/*"
"https://pass.proton.me/*"
];
platforms = platforms.all;
};
};
}

View file

@ -0,0 +1,70 @@
{ pkgs, lib, config, inputs, userName, True, ... }:
with lib;
let
cfg = config.module.programs.gui.floorp;
customAddons = pkgs.callPackage ./addons.nix {
inherit (inputs.firefox-addons.lib."x86_64-linux") buildFirefoxXpiAddon;
};
in {
options = { module.programs.gui.floorp = { enable = mkEnableOption ""; }; };
imports = [ ./user ./settings.nix ];
config = mkIf cfg.enable {
programs.floorp = True // {
profiles.${userName} = {
id = 0;
isDefault = true;
name = "${userName}";
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
] ++ (with customAddons; [ torrserver-adder ]);
};
policies = {
CaptivePortal = false;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = 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;
PasswordManagerEnabled = true;
FirefoxHome = {
Pocket = false;
Snippets = false;
};
SanitizeOnShutdown = {
Cache = true;
History = false;
Cookies = false;
Downloads = true;
FormData = true;
Sessions = true;
OfflineApps = true;
};
};
};
};
}

View file

@ -0,0 +1,10 @@
{ userName, ... }: {
programs.floorp.profiles.${userName}.settings = {
# OTHER
"extensions.autoDisableScopes" = 0;
"layers.acceleration.force-enabled" = true;
"gfx.webrender.all" = true;
"svg.context-properties.content.enabled" = true;
"ui.key.menuAccessKeyFocuses" = false;
};
}

View file

@ -0,0 +1,8 @@
{ userName, ... }: {
programs.floorp.profiles.${userName}.userChrome = ''
* {
font-family: "JetBrainsMono Nerd Font" !important;
font-size: 12pt !important;
}
'';
}

View file

@ -0,0 +1,6 @@
{ userName, ... }:
let repo = "https://github.com/axax-loll/fuji-wallpapers/blob/main";
in {
programs.floorp.profiles.${userName}.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";
}

View file

@ -0,0 +1 @@
{ imports = [ ./chrome.nix ./tcr.nix ]; }

View file

@ -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; }
'';
}

View file

@ -0,0 +1,30 @@
{ userName, ... }: {
programs.floorp.profiles.${userName}.userChrome = ''
#TabsToolbar { display: none !important; }
#nav-bar { width: 100vw !important; }
#browser { position: relative; }
#sidebar-box[sidebarcommand*=\"tabcenter\"] #sidebar-header { display: none; }
#sidebar-box[sidebarcommand*=\"tabcenter\"]:not([hidden]) {
display: block;
position: absolute;
top: 0; bottom: 0;
z-index: 1;
min-width: 50px !important; max-width: 50px !important;
border-right: none;
transition: all 0.8s ease;
overflow: hidden;
}
[sidebarcommand*=\"tabcenter\"] #sidebar,
#sidebar-box[sidebarcommand*=\"tabcenter\"]:hover { min-width: 10vw !important; width: 30vw !important; max-width: 250px !important; }
[sidebarcommand*=\"tabcenter\"] #sidebar { height: 100%; max-height: 100%; }
#sidebar-box[sidebarcommand*=\"tabcenter\"]:not([hidden]) ~ #appcontent { margin-left: 50px; }
#main-window[inFullscreen][inDOMFullscreen] #appcontent { margin-left: 0; }
/* Removes gap between active tab highlight and edge of bar */
#sidebar-box[sidebarcommand=\"tabcenter-reborn_ariasuni-sidebar-action\"] #sidebar-header, #sidebar-box[sidebarcommand=\"tabcenter-reborn_ariasuni-sidebar-action\"] ~ #sidebar-splitter {
display: none;
}
'';
}

View file

@ -0,0 +1,95 @@
{ pkgs, lib, config, True, ... }:
with lib;
let cfg = config.module.programs.gui.mpv;
in {
options = { module.programs.gui.mpv = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.mpv = 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"
'';
};
};
}

View file

@ -0,0 +1,20 @@
{ pkgs, lib, config, True, ... }:
with lib;
let cfg = config.module.programs.gui.obs;
in {
options = { module.programs.gui.obs = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.obs-studio = True // {
package = pkgs.obs-studio;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-vkcapture
input-overlay
];
};
};
}

View file

@ -0,0 +1,17 @@
{ lib, config, ... }:
with lib;
let cfg = config.module.programs.gui;
in {
options = {
module.programs.gui = {
pkgs = mkOption {
type = lib.types.listOf lib.types.package;
default = null;
};
};
};
config = { home.packages = [ ] ++ cfg.pkgs; };
}

View file

@ -0,0 +1,47 @@
{ lib, config, ... }:
with lib;
let cfg = config.module.programs.gui.qbittorrent;
in {
options = {
module.programs.gui.qbittorrent = { enable = mkEnableOption ""; };
};
config = mkIf cfg.enable {
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
}
'';
};
};
}

View file

@ -0,0 +1,87 @@
{ pkgs, lib, config, inputs, True, ... }:
with lib;
let
cfg = config.module.programs.gui.spotify;
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in {
options = { module.programs.gui.spotify = { enable = mkEnableOption ""; }; };
imports = [ inputs.spicetify-nix.homeManagerModules.default ];
config = mkIf cfg.enable {
programs.spicetify = True // {
theme = spicePkgs.themes.sleek // {
additionalCss = ''*{font-family:"JetBrainsMono Nerd Font"!important}'';
};
colorScheme = "custom";
customColorScheme = with config.lib.stylix.colors; {
# BASE 16 SCHEME
accent = "${base03}";
accent-active = "${base03}";
accent-inactive = "${base02}";
banner = "${base03}";
border-active = "${base03}";
border-inactive = "${base03}";
header = "${base00}";
highlight = "${base04}";
text = "${base06}";
subtext = "${base06}";
sidebar-text = "${base07}";
main = "${base00}";
sidebar = "${base01}";
player = "${base00}";
card = "${base00}";
shadow = "${base00}";
selected-row = "${base03}";
button = "${base0B}";
button-active = "${base0B}";
button-disabled = "${base03}";
tab-active = "${base04}";
notification = "${base0A}";
notification-error = "${base08}";
misc = "${base02}";
};
enabledExtensions = with spicePkgs.extensions; [
# IMPORTANT
fullAppDisplay
betterGenres
keyboardShortcut
#COMMUNITY
adblockify
historyShortcut
beautifulLyrics
powerBar
seekSong
history
];
enabledSnippets = with spicePkgs.snippets; [
fixLikedButton
smoothPlaylistRevealGradient
hideFriendActivityButton
centeredLyrics
pointer
removeConnectBar
fixedEpisodesIcon
fixProgressBar
roundedImages
fixMainViewWidth
fixPlaylistHover
hideNowPlayingViewButton
fixLikedIcon
removeTopSpacing
hideFriendsActivityButton
hideFullScreenButton
hideDownloadButton
hideMiniPlayerButton
leftAlignedHeartIcons
hideSidebarScrollbar
betterLyricsStyle
queueTopSidePanel
];
};
};
}

View file

@ -0,0 +1,169 @@
{ pkgs, lib, config, ... }:
with lib;
let cfg = config.module.programs.gui.swayimg;
in {
options = { module.programs.gui.swayimg = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
home.packages = with pkgs; [ swayimg ];
xdg.configFile = with config.lib.stylix.colors; {
"swayimg/config".text = ''
[general]
mode = viewer
position = parent
size = fullscreen
sigusr1 = reload
sigusr2 = next_file
app_id = swayimg
[viewer]
window = #000000ff
transparency = grid
scale = optimal
fixed = yes
antialiasing = no
slideshow = no
slideshow_time = 3
history = 1
preload = 1
[gallery]
size = 200
cache = 100
fill = yes
antialiasing = yes
window = #${base00}ff
background = #${base01}ff
select = #${base02}ff
border = #${base0E}ff
shadow = #${base00}a0
[list]
order = alpha
loop = yes
recursive = no
all = yes
[font]
name = JetBrainsMono NerdFont
size = 14
color = #${base06}ff
shadow = #${base00}a0
[info]
show = yes
info_timeout = 5
status_timeout = 3
[info.viewer]
top_left = none
top_right = index
bottom_left = none
bottom_right = none
[info.gallery]
top_left = none
top_right = index
bottom_left = none
bottom_right = none
[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
[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
'';
};
};
}

View file

@ -0,0 +1,18 @@
{ pkgs, lib, config, userName, True, ... }:
with lib;
let cfg = config.module.programs.gui.thunderbird;
in {
options = {
module.programs.gui.thunderbird = { enable = mkEnableOption ""; };
};
config = mkIf cfg.enable {
programs.thunderbird = True // {
package = pkgs.thunderbird-esr;
profiles.${userName} = { isDefault = true; };
};
};
}

View file

@ -0,0 +1,15 @@
{ lib, ... }:
with lib;
{
options = {
module.shells = {
abbrs = mkOption {
type = with types; attrsOf str;
default = null;
};
};
};
}

View file

@ -0,0 +1,23 @@
{ pkgs, lib, config, ... }:
with lib;
let cfg = config.module.shells.alias;
in {
options = {
module.shells.alias = {
enable = mkEnableOption "";
alias = mkOption {
type = with types; attrsOf str;
default = null;
};
};
};
config = mkIf cfg.enable {
home = { shellAliases = cfg.alias; };
xdg.configFile."lutgen/paradise".text =
"151515 1F1F1F 2E2E2E 424242 BBB6B6 E8E3E3 E8E3E3 E8E3E3 B66467 D9BC8C D9BC8C 8C977D 8AA6A2 8DA3B9 A988B0 BBB6B6";
};
}

View file

@ -0,0 +1,11 @@
{ pkgs, lib, config, False, ... }:
with lib;
let cfg = config.module.shells.bash;
in {
options = { module.shells.bash = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable { programs.bash = False; };
}

View file

@ -0,0 +1,13 @@
{
imports = [
./bash
./fish
./nushell
./tmux
./zsh
./abbrs.nix
./alias.nix
./starship.nix
./var.nix
];
}

View file

@ -0,0 +1,36 @@
{ ... }: {
programs.fish = let
# VARIABLES
col = "set fish_color";
pag = "set fish_pager_color";
sel = "${pag}_selected";
sec = "${pag}_secondary";
bol = "--bold";
ita = "--italics";
bg = "--background";
# COLORS
colors = ''
# COLORS
${col}_cancel ${bg}=red ${bol} black
${col}_comment gray
'';
pager = ''
# COMPLETIONS
${pag}_completion white
${sel}_completion black ${bol}
${sec}_completion white
${pag}_prefix white
${sel}_prefix black ${bol}
${pag}_description yellow ${ita}
${sel}_description black
${pag}_background black
${sel}_background ${bg}=green
${pag}_progress ${bg}=magenta black
'';
in {
interactiveShellInit = ''
${colors}
${pager}
'';
};
}

View file

@ -0,0 +1,45 @@
{ lib, config, userName, True, ... }:
with lib;
let
cfg = config.module.shells.fish;
abbrs = config.module.shells.abbrs;
in {
options = { module.shells.fish = { enable = mkEnableOption ""; }; };
imports = [ ./misc ./colors.nix ./functions.nix ./plugins.nix ];
config = mkIf cfg.enable {
programs.fish = True // {
preferAbbrs = true;
shellAbbrs = abbrs;
interactiveShellInit = ''
set fish_greeting
'';
shellInitLast = ''
set fish_cursor_default block
set fish_cursor_insert line
set fish_cursor_replace_one underscore
set fish_cursor_replace underscore
set fish_cursor_visual block
set fish_cursor_external line
set -g tide_prompt_transient_enabled true
set -g tide_prompt_add_newline_before true
set -g tide_left_prompt_items pwd git newline character
set -g tide_right_prompt_items cmd_duration
set -g tide_cmd_duration_icon
set -g tide_cmd_duration_threshold 1000
set -g tide_pwd_icon_home "home of user ${userName}"
set -g tide_pwd_icon 󰋜
set -g tide_pwd_icon_unwritable 󰌾
set -g tide_pwd_transient_enabled true
set -g tide_pwd_color_truncated_dirs brblack
set -g tide_pwd_color_dirs blue
set -g tide_pwd_color_anchors blue
set -g tide_git_color_branch -o green
'';
};
};
}

View file

@ -0,0 +1,38 @@
{ ... }: {
programs.fish.functions = {
clone.body = ''
echo "cd ~/git/"
cd $HOME/git
git clone $argv && cd $(basename $argv .git)
'';
# NIX
rebuild.body = ''
git add ~/.flake/.
for ARG in $argv
if [ $ARG = home ]
command home-manager switch --flake ~/.flake
return $status
else if [ $ARG = host ]
command sudo nixos-rebuild switch --flake ~/.flake
return $status
else
command echo "Select 'home' or 'host'"
end
end
'';
nrun.body = ''
nix run nixpkgs#$argv
'';
nshell.body = ''
nix shell nixpkgs#$argv
'';
nbuild.body = ''
nix build nixpkgs#$argv
'';
nclean.body = ''
nix-env --delete-generations old
nix-store --gc
nix-collect-garbage -d
'';
};
}

View file

@ -0,0 +1,6 @@
{
imports = [
# IDK
# ./fish-helix.nix
];
}

View file

@ -0,0 +1,25 @@
{ pkgs, ... }: {
xdg.configFile = let
fun = "fish/functions";
hx = pkgs.fetchFromSourcehut {
owner = "~neverness";
repo = "fish_hx";
rev = "main";
sha256 = "sha256-57EWMjsUit8la6t62SVv5ocgY2EqrGx7sF2BjGWDw5Q=";
};
count = "fish_bind_count.fish";
cmd = "fish_helix_command.fish";
binds = "fish_helix_key_bindings.fish";
mode = "fish_default_mode_prompt.fish";
in {
"${fun}/${count}".source = "${hx}/${count}";
"${fun}/${cmd}".source = "${hx}/${cmd}";
"${fun}/${binds}".source = "${hx}/${binds}";
"${fun}/${mode}".source = "${hx}/${mode}";
};
programs.fish.plugins = with pkgs.fishPlugins; [{
name = "tide";
src = tide.src;
}];
}

View file

@ -0,0 +1,30 @@
{ pkgs, ... }:
with pkgs; {
home.packages = [ grc ];
programs.fish.plugins = with fishPlugins; [
{
name = "grc";
src = grc.src;
}
{
name = "autopair";
src = autopair.src;
}
{
name = "fzf-fish";
src = fzf-fish.src;
}
{
name = "git-abbr";
src = git-abbr.src;
}
{
name = "puffer";
src = puffer.src;
}
{
name = "colored-man-pages";
src = colored-man-pages.src;
}
];
}

View file

@ -0,0 +1,52 @@
{ pkgs, lib, config, True, ... }:
with lib;
let cfg = config.module.shells.nushell;
in {
options = { module.shells.nushell = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.nushell = with pkgs;
True // {
configFile.text = ''
$env.config = {
show_banner: false
edit_mode: vi
footer_mode: always
filesize: { metric: true }
ls: { clickable_links: false }
rm: { always_trash: true }
table: {
mode: compact_double
index_mode: always
header_on_separator: true
padding: { left: 2, right: 1 }
}
completions: {
algorithm: fuzzy
quick: true
case_sensitive: false
external: {
enable: true
max_results: 50
completer: { |spans| ${carapace}/bin/carapace $spans.0 nushell ...$spans | from json }
}
}
}
def llm [] { ls | sort-by modified }
def lls [ term: string ] { ls | where { |it| ($it.name | str contains $term ) } }
def pss [ term: string ] { ps | where { |it| ($it.name | str contains $term ) } }
def wy [ video_id: string ] { mpv $"https://youtube.com/watch?v=($video_id)" }
'';
envFile.text = ''
$env.EDITOR = "${helix}/bin/hx"
$env.BROWSER = "zen"
$env.XDG_CONFIG_HOME = $"($env.HOME)/.config"
$env.DIRENV_LOG_FORMAT = ""
'';
};
};
}

View file

@ -0,0 +1,55 @@
{ lib, config, userName, True, ... }:
with lib;
let cfg = config.module.shells.starship;
in {
options = { module.shells.starship = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.starship = True // {
# enableFishIntegration = false;
enableTransience = true;
settings = {
add_newline = true;
right_format = lib.concatStrings [ "$cmd_duration" "$line_break" ];
format = lib.concatStrings [
"$directory"
"$git_branch"
"$line_break"
"$character"
];
directory = {
format = "[$path]($style) [$read_only]($read_only_style)";
style = "bold fg:blue";
read_only = "[󰌾] ";
read_only_style = "bold red";
home_symbol = "home of [${userName}]";
truncation_length = 2;
truncation_symbol = "../";
};
git_branch = {
format = "on [$symbol$branch]($style) ";
style = "bold italic fg:green";
symbol = " ";
truncation_length = 8;
truncation_symbol = "";
};
cmd_duration = {
min_time = 1000;
format = "[$duration](bold fg:yellow)";
};
character = {
format = "$symbol ";
success_symbol = "[](bold green)";
error_symbol = "[](bold red)";
vimcmd_symbol = "[N](bold green)";
vimcmd_replace_one_symbol = "[R](bold purple)";
vimcmd_replace_symbol = "[R](bold purple)";
vimcmd_visual_symbol = "[V](bold yellow)";
};
};
};
};
}

View file

@ -0,0 +1,25 @@
{ pkgs, lib, config, True, ... }:
with lib;
let cfg = config.module.shells.tmux;
in {
options = { module.shells.tmux = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
programs.tmux = True // {
shell = "${pkgs.fish}/bin/fish";
clock24 = true;
keyMode = "vi";
disableConfirmationPrompt = true;
customPaneNavigationAndResize = true;
prefix = "C-a";
shortcut = "a";
extraConfig = ''
set -g status-position bottom
set -g status-style bg=color0
'';
};
};
}

View file

@ -0,0 +1,31 @@
{ lib, config, ... }:
with lib;
let cfg = config.module.shells.var;
in {
options = { module.shells.var = { enable = mkEnableOption ""; }; };
config = mkIf cfg.enable {
home.sessionVariables = {
TERM = "kitty";
TERMINAL = "kitty";
FILE_MANAGER = "yazi";
MICRO_TRUECOLOR = "1";
MOZ_ENABLE_WAYLAND = "1";
RANGER_LOAD_DEFAULT_RC = "false";
# FFF FILE MANAGER
FFF_HIDDEN = "1";
FFF_LS_COLORS = "1";
FFF_COL1 = "1";
FFF_COL2 = "0";
FFF_COL3 = "2";
FFF_COL4 = "6";
FFF_COL5 = "7";
};
};
}

View file

@ -0,0 +1,74 @@
{ pkgs, lib, config, True, wm, ... }:
with lib;
let
cfg = config.module.shells.zsh;
abbrs = config.module.shells.abbrs;
in {
options = { module.shells.zsh = { enable = mkEnableOption ""; }; };
imports = [ ./plugins.nix ];
config = mkIf cfg.enable {
programs.zsh = with pkgs;
True // {
# COOL TOOLS YEYE
syntaxHighlighting = True;
enableCompletion = true;
autosuggestion = True;
# SETS
dotDir = ".config/zsh";
completionInit = "autoload -U compinit && compinit";
# CONFIGURATION
zsh-abbr = True // { abbreviations = abbrs; };
initExtra = let
completion = {
default = ''
zstyle ':completion:*' rehash true
zstyle ':completion:*' menu select
zstyle ':completion:*:git-checkout:*' sort false
zstyle ':completion::complete:*' gain-privileges 1
'';
fzf-tab = ''
zstyle ':completion:*' menu no
zstyle ':fzf-tab:*' fzf-command fzf
zstyle ':fzf-tab:*' fzf-pad 4
zstyle ':fzf-tab:*' fzf-flags --color=fg:1,fg+:2,gutter:-1 \
--height=60% \
--margin=0,30%,0,0 \
--padding=0 \
--no-mouse --border rounded \
--prompt "Prompt: " \
--pointer "->" \
--info hidden
zstyle ':fzf-tab:*' switch-group '<' '>'
zstyle ':fzf-tab:*' switch-group F1 F2
zstyle ':fzf-tab:*' fzf-bindings 'space:accept'
zstyle ':fzf-tab:*' accept-line enter
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -1 --color=always \
--icons always \
$realpath'
'';
};
settings = {
default = ''
autoload -U colors && colors
setopt sharehistory
setopt automenu
setopt nobeep
fpath=(${zsh-completions}/share/zsh/site-functions $fpath)
'';
};
in ''
# COMPLETION
${completion.fzf-tab}
# ZSH SETTINGS
${settings.default}
# BINDINGS
${builtins.readFile ./keymap}
[ "$(tty)" = "/dev/tty1" ] && exec ${wm.sh} # LAUNCH WM
'';
};
};
}

View file

@ -0,0 +1,49 @@
typeset -g -A key
key[Home]="${terminfo[khome]}"
key[End]="${terminfo[kend]}"
key[Insert]="${terminfo[kich1]}"
key[Backspace]="${terminfo[kbs]}"
key[Delete]="${terminfo[kdch1]}"
key[Up]="${terminfo[kcuu1]}"
key[Down]="${terminfo[kcud1]}"
key[Left]="${terminfo[kcub1]}"
key[Right]="${terminfo[kcuf1]}"
key[PageUp]="${terminfo[kpp]}"
key[PageDown]="${terminfo[knp]}"
key[Shift-Tab]="${terminfo[kcbt]}"
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
[[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode
[[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char
[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char
[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char
[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char
[[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history
[[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history
[[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}" reverse-menu-complete
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
autoload -Uz add-zle-hook-widget
function zle_application_mode_start { echoti smkx }
function zle_application_mode_stop { echoti rmkx }
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
fi
# HISTORY MOVEMENT
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-beginning-search
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-beginning-search
# CTRL MOVEMENT
key[Control-Left]="${terminfo[kLFT5]}"
key[Control-Right]="${terminfo[kRIT5]}"
[[ -n "${key[Control-Left]}" ]] && bindkey -- "${key[Control-Left]}" backward-word
[[ -n "${key[Control-Right]}" ]] && bindkey -- "${key[Control-Right]}" forward-word

View file

@ -0,0 +1,57 @@
{ pkgs, True, ... }: {
programs.zsh = with pkgs; {
oh-my-zsh = True // { plugins = [ "git" "eza" "colored-man-pages" ]; };
plugins = let
s = "share";
rev = "main";
in [
# FROM REPO
# {
# name = "zsh-powerlevel10k";
# file = "${s}/zsh-powerlevel10k/powerlevel10k.zsh-theme";
# src = zsh-powerlevel10k;
# }
{
name = "zsh-fzf-tab";
file = "${s}/fzf-tab/fzf-tab.plugin.zsh";
src = zsh-fzf-tab;
}
{
name = "zsh-autopair";
file = "${s}/zsh/zsh-autopair/autopair.zsh";
src = zsh-autopair;
}
# FROM GITHUB
# {
# name = "zsh-allclear";
# file = "zsh-allclear.plugin.zsh";
# src = fetchFromSourcehut {
# owner = "~azikx";
# repo = "zsh_helix";
# sha256 = "sha256-vIPkP1soUtnMcwTlwiTP68AwI3DpkMuj614afS37IIs=";
# inherit rev;
# };
# }
{
name = "eza-zsh";
file = "eza-zsh.plugin.zsh";
src = fetchFromGitHub {
owner = "MohamedElashri";
repo = "eza-zsh";
sha256 = "sha256-ee56D48unp/Bm1EA2/pYYYJZ8Fdtbu0LsUGHfGlRNK8=";
inherit rev;
};
}
{
name = "helix-mode";
file = "helix-mode.zsh";
src = fetchFromGitHub {
owner = "allomanta";
repo = "zsh-helix-mode";
rev = "f5e6cb94fa77f5fa0762b9b2c7c818e8ae87d22e";
hash = "sha256-oDRk9JK5agM1Izc6FWf+i6bRKhK3uohG9Cnco3dJwP8=";
};
}
];
};
}

View file

@ -0,0 +1 @@
{ imports = [ ./gtk ./qt ./stylix ]; }

View file

@ -0,0 +1,47 @@
{ pkgs, lib, config, True, ... }:
with lib;
let
cfg = config.module.themes.gtk;
extra = {
gtk-application-prefer-dark-theme = 1;
gtk-xft-antialias = 1;
gtk-xft-hinting = 1;
gtk-xft-hintstyle = "hintslight";
gtk-xft-rgba = "rgb";
gtk-button-images = 0;
gtk-menu-images = 0;
gtk-enable-event-sounds = 1;
gtk-enable-input-feedback-sounds = 0;
};
in {
options = {
module.themes.gtk = {
enable = mkEnableOption "";
icon = mkOption {
default = null;
type = types.str;
};
};
};
config = mkIf cfg.enable {
home.packages = with pkgs; [ noto-fonts noto-fonts-cjk-sans ];
gtk = with pkgs;
True // {
iconTheme = {
name = "Papirus-Dark";
package = papirus-icon-theme.override { color = cfg.icon; };
};
font = lib.mkForce {
name = "JetBrainsMono NerdFont";
package = nerdfonts.override { fonts = [ "JetBrainsMono" ]; };
size = 12;
};
gtk3 = { extraConfig = extra; };
gtk4 = { extraConfig = extra; };
};
};
}

View file

@ -0,0 +1,13 @@
{
xdg.configFile = let
colors = ''
[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
'';
in {
"qt5ct/colors/paradise.conf".text = "${colors}";
"qt6ct/colors/paradise.conf".text = "${colors}";
};
}

View file

@ -0,0 +1,12 @@
{ lib, config, True, ... }:
with lib;
let cfg = config.module.themes.qt;
in {
options = { module.themes.qt = { enable = mkEnableOption ""; }; };
imports = [ ./qt5ct.nix ./qt6ct.nix ./color.nix ];
config = mkIf cfg.enable { qt = True // { platformTheme.name = "qtct"; }; };
}

View file

@ -0,0 +1,43 @@
{ pkgs, config, ... }: {
xdg.configFile = {
"qt5ct/qt5ct.conf".text = with pkgs.libsForQt5; ''
[Appearance]
color_scheme_path=${config.home.homeDirectory}/.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=${qt5ct}/share/qt5ct/qss/scrollbar-simple.qss, ${qt5ct}/share/qt5ct/qss/sliders-simple.qss, ${qt5ct}/share/qt5ct/qss/tooltip-simple.qss, ${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()
'';
};
}

View file

@ -0,0 +1,43 @@
{ pkgs, config, ... }: {
xdg.configFile = {
"qt6ct/qt6ct.conf".text = with pkgs; ''
[Appearance]
color_scheme_path=${config.home.homeDirectory}/.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=${qt6ct}/share/qt6ct/qss/scrollbar-simple.qss, ${qt6ct}/share/qt6ct/qss/sliders-simple.qss, ${qt6ct}/share/qt6ct/qss/tooltip-simple.qss, ${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()
'';
};
}

View file

@ -0,0 +1,37 @@
{
stylix.base16Scheme = {
base00 = "#151515"; # BLACK
base01 = "#1F1F1F"; # DARK BLACK
base02 = "#2E2E2E"; # DARK GRAY
base03 = "#424242"; # GRAY
base04 = "#BBB6B6"; # LIGHT-GRAY
base05 = "#E8E3E3"; # WHITE
base06 = "#E8E3E3"; # WHITE?
base07 = "#E8E3E3"; # WHITE??
base08 = "#B66467"; # RED
base09 = "#D9BC8C"; # YELLOW
base0A = "#D9BC8C"; # ORANGE (TRULY YELLOW)
base0B = "#8C977D"; # GREEN
base0C = "#8AA6A2"; # TEAL
base0D = "#8DA3B9"; # BLUE
base0E = "#A988B0"; # PURPLE
base0F = "#BBB6B6"; # IDK WHITE MAYBE
};
}
# base00 - Default Background
# base01 - Lighter Background (Used for status bars)
# base02 - Selection Background
# base03 - Comments, Invisibles, Line Highlighting
# base04 - Dark Foreground (Used for status bars)
# base05 - Default Foreground, Caret, Delimiters, Operators
# base06 - Light Foreground (Not often used)
# base07 - Light Background (Not often used)
# base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
# base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url
# base0A - Classes, Markup Bold, Search Text Background
# base0B - Strings, Inherited Class, Markup Code, Diff Inserted
# base0C - Support, Regular Expressions, Escape Characters, Markup Quotes
# base0D - Functions, Methods, Attribute IDs, Headings
# base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed
# base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>

View file

@ -0,0 +1,74 @@
{ pkgs, lib, config, inputs, True, False, ... }:
with lib;
let
cfg = config.module.themes.stylix;
wal = inputs.walls;
in {
options = {
module.themes.stylix = {
enable = mkEnableOption "";
image = mkOption {
default = null;
type = types.str;
};
};
};
imports = [ inputs.stylix.homeManagerModules.stylix ./colors.nix ];
config = mkIf cfg.enable {
stylix = with pkgs;
True // {
autoEnable = false;
image = "${wal}/desktop/${cfg.image}.jpg";
cursor = {
name = "GoogleDot-Black";
package = google-cursor;
size = 20;
};
fonts = let
jet = {
name = "JetBrainsMono NerdFont";
package = nerdfonts.override { fonts = [ "JetBrainsMono" ]; };
};
in {
serif = jet;
monospace = jet;
emoji = {
name = "OpenMoji Color";
package = noto-fonts-emoji;
};
sizes = {
desktop = 10;
popups = 10;
applications = 12;
terminal = 12;
};
};
targets = {
# CLI
tmux = True;
fish = True;
nushell = True;
# WM
hyprland = True;
sway = True;
foot = True;
kitty = True;
mako = False;
# TOOLS
nixvim = True;
yazi = True;
fzf = True;
bat = True;
mangohud = True;
# GUI
vesktop = True;
qutebrowser = True;
firefox = True;
gtk = True;
};
};
};
}

View file

@ -0,0 +1 @@
{ imports = [ ./hyprland ./misc ./sway ./terminals ]; }

View file

@ -0,0 +1,147 @@
{ pkgs, config, ... }:
let
cfg = config.module.wm.hyprland;
mic =
"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";
aud = "alsa_output.pci-0000_2b_00.1.hdmi-stereo.monitor";
vid = "$(xdg-user-dir VIDEOS)/$(date +'vid_%d-%m-%y|%H:%M:%S.mp4')";
workspaces = (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}"
]) 10));
in {
wayland.windowManager.hyprland.settings = {
# SHORTCUTS
"$m" = "SUPER";
"$s" = "SHIFT";
"$a" = "ALT";
"$c" = "CTRL";
"$rt" = "RETURN";
"$sp" = "SPACE";
"$tb" = "TAB";
"$nx" = "Next";
"$pr" = "Prior";
"$PR" = "Print";
"$md" = "mouse_down";
"$mu" = "mouse_up";
"$ex" = "exec";
# KEYBOARD
bind = with cfg;
[
# MENU
"$m, $tb, exec, ${pkgs.nwg-drawer}/bin/nwg-drawer -ovl -nocats -nofs -d -c 5 -mb -49"
# BUILTIN COMMANDS
"$m, $sp, togglefloating"
"$m, Q, killactive"
"$m, F, fullscreen"
"$m $s, F, centerwindow"
"$m, X, pseudo"
"$m $s, X, pin"
"$m, W, cyclenext"
"$m $s, W, swapnext "
"$m, G, togglegroup"
"$m $s, G, changegroupactive"
"$m $a, G, moveoutofgroup"
"$m, Z, togglespecialworkspace, extra"
"$m $s, Z, movetoworkspace, special:extra"
"$m, C, togglespecialworkspace, magic"
"$m $s, C, movetoworkspace, special:magic"
"$m, $md, workspace, e+1"
"$m, $mu, workspace, e-1"
"$m, $nx, workspace, e+1"
"$m, $pr, workspace, e-1"
] ++ workspaces ++ programs;
# HOLDING BUTTONS
binde = let
mf = "movefocus";
sw = "swapwindow";
ra = "resizeactive";
ma = "moveactive";
in [
# HJKL
"$m, H, ${mf}, l"
"$m, J, ${mf}, d"
"$m, K, ${mf}, u"
"$m, L, ${mf}, r"
"$m $s, H, ${sw}, l"
"$m $s, J, ${sw}, d"
"$m $s, K, ${sw}, u"
"$m $s, L, ${sw}, r"
"$m $a, H, ${ra}, -50 0"
"$m $a, J, ${ra}, 0 50"
"$m $a, K, ${ra}, 0 -50"
"$m $a, L, ${ra}, 50 0"
"$m $c, H, ${ma}, -50 0"
"$m $c, J, ${ma}, 0 50"
"$m $c, K, ${ma}, 0 -50"
"$m $c, L, ${ma}, 50 0"
# ARROWS
"$m, left, ${mf}, l"
"$m, down, ${mf}, d"
"$m, up, ${mf}, u"
"$m, right, ${mf}, r"
"$m $s, left, ${sw}, l"
"$m $s, down, ${sw}, d"
"$m $s, up, ${sw}, u"
"$m $s, right, ${sw}, r"
"$m $a, left, ${ra}, -50 0"
"$m $a, down, ${ra}, 0 50"
"$m $a, up, ${ra}, 0 -50"
"$m $a, right, ${ra}, 50 0"
"$m $c, left, ${ma}, -50 0"
"$m $c, down, ${ma}, 0 50"
"$m $c, up, ${ma}, 0 -50"
"$m $c, right, ${ma}, 50 0"
# SOUND
", XF86AudioMute, $ex, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMicMute, $ex, ${mic}"
", XF86AudioRaiseVolume, $ex, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, $ex, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
# LIGHT
", XF86MonBrightnessDown, $ex, doas light -U 10"
", XF86MonBrightnessUp, $ex, doas light -A 10"
];
# MOUSE
bindm = [
"$m, mouse:272, movewindow"
"$m, mouse:273, resizewindow"
"$m $s, mouse:273, resizewindow 1"
];
};
# SELECT AREA FOR VIDEO RECORD
xdg.configFile."hypr/wfrec" = {
text = with config.lib.stylix.colors; ''
#!/usr/bin/env bash
${pkgs.wf-recorder}/bin/wf-recorder -a ${aud} -f ${vid} -g "$(${pkgs.slurp}/bin/slurp -b '${base00}CC' -c '${base0F}FF' -B '${base02}CC' -w '3')"
'';
executable = true;
};
}

View file

@ -0,0 +1,30 @@
{ pkgs, lib, config, inputs, True, ... }:
with lib;
let cfg = config.module.wm.hyprland;
in {
options = {
module.wm.hyprland = {
enable = mkEnableOption "";
autostart = mkOption {
type = types.listOf types.str;
default = null;
};
programs = mkOption {
type = types.listOf types.str;
default = null;
};
};
};
imports = [ ./binds.nix ./rules.nix ./sets.nix ];
config = mkIf cfg.enable {
wayland.windowManager.hyprland = True // {
xwayland = True;
systemd = True;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
};
};
}

View file

@ -0,0 +1,41 @@
{ pkgs, inputs, ... }: {
wayland.windowManager.hyprland = {
plugins = with inputs; [ hyprfocus.packages.${pkgs.system}.default ];
settings.plugin = {
# FOCUS
hyprfocus = let
in_bezier = "realsmooth";
out_bezier = "realsmooth";
in {
enabled = "yes";
animate_floating = "yes";
animate_workspacechange = "yes";
focus_animation = "focus";
# ANIMATIONS STYLE
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 MODE
flash = {
inherit in_bezier out_bezier;
flash_opacity = 0.95;
in_speed = 0.5;
out_speed = 3;
};
# SHRINK MODE
shrink = {
inherit in_bezier out_bezier;
shrink_percentage = 0.95;
in_speed = 1;
out_speed = 2;
};
};
};
};
}

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