mirror of
https://git.sr.ht/~neverness/ultima
synced 2025-04-21 21:38:39 +00:00
new beginning
This commit is contained in:
commit
c48057b486
167 changed files with 13045 additions and 0 deletions
LICENSEREADME.mdflake.lockflake.nix
jetpure
libx
modules/home
default.nix
misc
programs
cli
custom/anicli
gui
shells
themes
24
LICENSE
Normal file
24
LICENSE
Normal 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>
|
115
README.md
Normal file
115
README.md
Normal file
|
@ -0,0 +1,115 @@
|
|||
<div align="center"> <h1>❄️【 NIXOS DOTFILES 】❄️</h1> </div>
|
||||
|
||||
### GUIDE FOR CREATE OWN MACHINE & HOME
|
||||
|
||||
1. Create directory with your _hostName_ in _flakeDir_
|
||||
|
||||
- _flakeDir_ is flake root (example: **/persist/flake/** )
|
||||
|
||||
2. Create _default.nix_ in ~/_flakeDir_/_hostName_/ (example: **~/flakeDir/hostName/default.nix** )
|
||||
|
||||
- Fill it with:
|
||||
```nix
|
||||
{ inputs, lib, ... }:
|
||||
{
|
||||
flake = import ../libx/builder.nix { # default values watch in ~/flakeDir/libx/builder.nix
|
||||
inherit inputs lib;
|
||||
disk = "..."; # your disk in /dev/disk/by-uuid/*
|
||||
# VARIABLES
|
||||
hostName = "pantheon"; # hostName is ~/flakeDir/hostName
|
||||
userName = "arthemida"; # userName
|
||||
flakeDir = "/persist/flake"; # flakeDir
|
||||
is = "desktop"; # for laptop | desktop | server
|
||||
# CUSTOMIZE
|
||||
theme = "chanivibes"; # from inputs.design.base16
|
||||
image = "default"; # from inputs.design.wallpapers
|
||||
# SYS INFA
|
||||
plfrm = "x86_64-linux"; # your architecture
|
||||
ver = "24.05"; # stateVersion in below /etc/nixos/configuration.nix
|
||||
# DEVICES
|
||||
dev = { # other mountable disks
|
||||
SSD1 = "/mnt/games";
|
||||
HDD1 = "/mnt/prono_idk";
|
||||
SSD2 = "/mnt/howii";
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>Software</summary>
|
||||
|
||||
| Category (name + url) | Desciption |
|
||||
| -----------------------------------------------------------------: | ------------------------------------------------ |
|
||||
| Window managers | |
|
||||
| [hyprland](https://github.com/hyprwm/hyprland) | Best window manager |
|
||||
| [kitty](https://github.com/kovidgoyal/kitty) | Very good terminal with image preview |
|
||||
| [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 wayland compositors |
|
||||
| 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!!! |
|
||||
| [helix](https://github.com/helix-editor/helix) | Best text editor with vi-like keys |
|
||||
| [cava](https://github.com/karlstav/cava) | Sound visualizer |
|
||||
| [rustmission](https://github.com/intuis/rustmission) | TUI for Transmission |
|
||||
| [eza](https://github.com/eza-community/eza) | Rusted ls with icons |
|
||||
| [lsd](https://github.com/lsd-rs/lsd) | Rusted ls with icons (idk another?) |
|
||||
| [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 |
|
||||
| [trashy](https://github.com/oberblastmeister/trashy) | Trash manager |
|
||||
| [fuc](https://github.com/SUPERCILEX/fuc) | Rusted cp and rm commands |
|
||||
| [sudo-rs](https://github.com/trifectatechfoundation/sudo-rs) | Fast and secure sudo |
|
||||
| GUI utilites | |
|
||||
| [zen](https://github.com/zen-browser/desktop) | Stylish and modern ForryFox (best my opinion) |
|
||||
| [floorp](https://github.com/Floorp-Projects/Floorp) | One of best browser on FurryFox |
|
||||
| [qutebrowser](https://qutebrowser.org/) | Cool browser with vi keys |
|
||||
| [nemo](https://github.com/linuxmint/nemo) | File manager from Cinnamon |
|
||||
| [onlyoffice](https://github.com/ONLYOFFICE/DesktopEditors) | Office suite |
|
||||
| [vesktop](https://github.com/Vencord/Vesktop) | Wayland Discord client |
|
||||
| [qbittorrent](https://github.com/qbittorrent/qBittorrent) | Torrents))))) hahah)))) |
|
||||
| [64gram](https://github.com/TDesktop-x64/tdesktop) | IDK just modified tgram client lol |
|
||||
| [ayugram](https://github.com/AyuGram/AyuGramDesktop) | Telegram client with ghost mode |
|
||||
| [file-Roller](https://gitlab.gnome.org/GNOME/file-roller) | Archiver |
|
||||
| [filezilla](https://filezilla-project.org) | Good FTP client |
|
||||
| [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 |
|
||||
| Games | |
|
||||
| [mindustry](https://github.com/Anuken/Mindustry) | OHMYGOD 10/10 RTS YEEEE BOYYYY |
|
||||
| [bottles](https://github.com/bottlesdevs/Bottles) | Wine launcher with multiple prefixes |
|
||||
| [prismlauncher](https://github.com/PrismLauncher/PrismLauncher) | Fuckm all my homies plays this shit man |
|
||||
| [steam](https://store.steampowered.com) | Cool game store and launcher |
|
||||
| [legendary](https://github.com/derrod/legendary) | CLI for Epic Games Store |
|
||||
| [protonup](https://github.com/DavidoTek/ProtonUp-Qt) | Provides Proton-GE/Wine-GE for Steam and Bottles |
|
||||
| [proton-ge](https://github.com/GloriousEggroll/proton-ge-custom) | GE(idk what that mean) version of Valve Proton |
|
||||
| Misc | |
|
||||
| [nix-tree](https://github.com/utdemir/nix-tree) | Tree for your generations&derivations |
|
||||
| [nurl](https://github.com/nix-community/nurl) | Tool for fetching git 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) | Nerded fonts |
|
||||
|
||||
- IDK WHAT ALSO DUDES
|
||||
|
||||
</details>
|
||||
|
||||
### PREVIEW
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 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)
|
1305
flake.lock
generated
Normal file
1305
flake.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
63
flake.nix
Normal file
63
flake.nix
Normal file
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # UNSTABLE
|
||||
nur.url = "github:nix-community/NUR"; # NUR
|
||||
|
||||
impermanence.url = "github:nix-community/impermanence"; # IMPERA
|
||||
hardware.url = "github:NixOS/nixos-hardware/master"; # HARDWARE
|
||||
parts.url = "github:hercules-ci/flake-parts"; # PARTS
|
||||
gaming.url = "github:fufexan/nix-gaming"; # GAMING
|
||||
transg.url = "github:PanAeon/transg-tui"; # TRANSG
|
||||
hyprland.url = "github:hyprwm/Hyprland"; # HYPRLAND
|
||||
stylix.url = "github:danth/stylix"; # STYLIX
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
}; # HM
|
||||
disko = {
|
||||
url = "github:nix-community/disko";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
}; # DECLARATIVE DISK PART
|
||||
nypkgs = {
|
||||
url = "github:yunfachi/nypkgs";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
}; # ONLY FOR UMPORT
|
||||
zen = {
|
||||
url = "github:0xc000022070/zen-browser-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
}; # COOL BROWSER
|
||||
spicetify = {
|
||||
url = "github:Gerg-L/spicetify-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
}; # SPOTIFY
|
||||
ytcli = {
|
||||
url = "github:Benexl/yt-x";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
}; # TUI YOUTUBE
|
||||
firefox-addons = {
|
||||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
}; # FIREFOX
|
||||
cursors = {
|
||||
url = "github:LilleAila/nix-cursors";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
}; # COLORIZE CUSRSOR
|
||||
design = {
|
||||
url = "sourcehut:~neverness/design?ref=main";
|
||||
flake = false;
|
||||
}; # DISIGNING REPO
|
||||
};
|
||||
|
||||
outputs =
|
||||
inputs:
|
||||
inputs.parts.lib.mkFlake { inherit inputs; } {
|
||||
perSystem =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
formatter = pkgs.nixfmt-rfc-style;
|
||||
};
|
||||
systems = [ "x86_64-linux" ]; # YOUR SYSTEM IDK
|
||||
imports = [ ./jetpure ]; # YOUR MACHINES
|
||||
};
|
||||
}
|
23
jetpure/default.nix
Normal file
23
jetpure/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ inputs, lib, ... }:
|
||||
{
|
||||
flake = import ../libx/builder.nix {
|
||||
inherit inputs lib;
|
||||
disk = "/dev/disk/by-uuid/d8440438-2f95-4854-b139-bf0a3e91a81f";
|
||||
# variables
|
||||
hostName = "jetpure";
|
||||
userName = "nixzoid";
|
||||
flakeDir = "/persist/flake";
|
||||
is = "desktop";
|
||||
# customize
|
||||
theme = "paradise"; # from inputs.design
|
||||
image = "train";
|
||||
# sys info
|
||||
plfrm = "x86_64-linux";
|
||||
ver = "24.05";
|
||||
# ++ devices
|
||||
dev = {
|
||||
hdd = "/mnt/HDD";
|
||||
ssd = "/mnt/SSD";
|
||||
};
|
||||
};
|
||||
}
|
89
jetpure/home/default.nix
Normal file
89
jetpure/home/default.nix
Normal file
|
@ -0,0 +1,89 @@
|
|||
{ x, config, ... }:
|
||||
let
|
||||
inherit (x) True False umport;
|
||||
in
|
||||
{
|
||||
imports = umport {
|
||||
exclude = [ ./default.nix ];
|
||||
path = ./.;
|
||||
};
|
||||
module = {
|
||||
programs = {
|
||||
cli = {
|
||||
bat = True;
|
||||
cava = True;
|
||||
eza = True;
|
||||
fetch = True;
|
||||
fzf = True;
|
||||
git = True;
|
||||
gpg = True;
|
||||
helix = True;
|
||||
joshuto = False;
|
||||
legendary = True;
|
||||
lsd = False;
|
||||
micro = False;
|
||||
rustmission = True;
|
||||
top = True;
|
||||
yazi = True;
|
||||
zoxide = True;
|
||||
};
|
||||
gui = {
|
||||
floorp = False;
|
||||
minecraft = True // {
|
||||
cli = True;
|
||||
};
|
||||
mpv = True;
|
||||
obs = True;
|
||||
qbittorrent = True;
|
||||
qutebrowser = True;
|
||||
spotify = True;
|
||||
swayimg = True;
|
||||
zed = False;
|
||||
};
|
||||
custom = {
|
||||
anicli = True;
|
||||
};
|
||||
};
|
||||
shells = {
|
||||
fish = True;
|
||||
nushell = False;
|
||||
tmux = False;
|
||||
zsh = False;
|
||||
starship = True;
|
||||
};
|
||||
themes = {
|
||||
gtk = True; # GTK APPS
|
||||
qt = True; # QT APPS
|
||||
stylix = True // {
|
||||
icon = "adwaita";
|
||||
cursor = with config.lib.stylix.colors.withHashtag; {
|
||||
bg = "${base0E}";
|
||||
ol = "${base00}";
|
||||
ac = "${base0E}";
|
||||
};
|
||||
};
|
||||
};
|
||||
wm = {
|
||||
hyprland = True;
|
||||
sway = False;
|
||||
terminals = {
|
||||
kitty = True;
|
||||
foot = False;
|
||||
wezterm = False;
|
||||
};
|
||||
misc = {
|
||||
mako = True;
|
||||
nwg = False;
|
||||
rofi = False;
|
||||
tofi = True;
|
||||
waybar = False;
|
||||
wob = False;
|
||||
yofi = False;
|
||||
};
|
||||
};
|
||||
misc = {
|
||||
dconf = True;
|
||||
xdg.mime = True;
|
||||
};
|
||||
};
|
||||
}
|
5
jetpure/home/parts/abbrs.nix
Normal file
5
jetpure/home/parts/abbrs.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
module.shells.abbrs = {
|
||||
"-h" = "--help";
|
||||
};
|
||||
}
|
46
jetpure/home/parts/alias.nix
Normal file
46
jetpure/home/parts/alias.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{ pkgs, lib, ... }:
|
||||
{
|
||||
module.shells.alias.alias =
|
||||
with pkgs;
|
||||
let
|
||||
inherit (lib) getExe;
|
||||
in
|
||||
{
|
||||
# helpful
|
||||
e = "$EDITOR";
|
||||
c = "clear";
|
||||
x = "exit";
|
||||
|
||||
# useful
|
||||
ca = "cava";
|
||||
cat = "bat";
|
||||
pmx = "pulsemixer";
|
||||
blt = "bluetuith";
|
||||
icat = "kitten icat";
|
||||
|
||||
# tops
|
||||
btop = "btop";
|
||||
ntop = "nvtop -i";
|
||||
|
||||
# clock
|
||||
ter = "${getExe tenki} --mode rain --wind disable --timer-color cyan -f 80";
|
||||
tes = "${getExe tenki} --mode snow --wind disable --timer-color yellow -f 80";
|
||||
tem = "${getExe tenki} --mode meteor --wind disable --timer-color red -f 80";
|
||||
|
||||
# gen base16
|
||||
baseL = "${getExe flavours} generate light --stdout -a=azikx";
|
||||
baseD = "${getExe flavours} generate dark --stdout -a=azikx";
|
||||
|
||||
# vpn
|
||||
vpn = "openvpn";
|
||||
|
||||
# images
|
||||
imagemagick = "imagemagick";
|
||||
jpgop = "jpegoptim";
|
||||
pngop = "optipng";
|
||||
|
||||
# lutgen
|
||||
lut = "${getExe lutgen} apply -p paradise";
|
||||
lutall = "${getExe lutgen} apply -p paradise ./*";
|
||||
};
|
||||
}
|
119
jetpure/home/parts/hyprland.nix
Normal file
119
jetpure/home/parts/hyprland.nix
Normal file
|
@ -0,0 +1,119 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
{
|
||||
module.wm.hyprland = {
|
||||
autostart = [ "mako" ]; # autostart
|
||||
binds =
|
||||
let
|
||||
c = "--class";
|
||||
pic = "$(xdg-user-dir PICTURES)/$(date +'scr_%d-%m-%y|%H:%M:%S.png')";
|
||||
args = "xargs hyprctl dispatch exec --";
|
||||
# regex
|
||||
mk =
|
||||
mod: sub: key: cmd:
|
||||
"${toString mod} ${toString sub}, ${key}, exec, ${cmd}";
|
||||
# mod & nomod
|
||||
mod = (mk "$m");
|
||||
m = (mod null);
|
||||
s = (mod "$s");
|
||||
a = (mod "$a");
|
||||
in
|
||||
with pkgs;
|
||||
[
|
||||
# menus
|
||||
(m "$tb" "tofi-drun | ${args}")
|
||||
|
||||
# programs
|
||||
(m "$rt" "kitty")
|
||||
(s "$rt" "kitty ${c}=termfloat")
|
||||
|
||||
(m "V" "telegram-desktop")
|
||||
|
||||
(m "B" "zen")
|
||||
(s "B" "qutebrowser")
|
||||
(a "B" "floorp")
|
||||
|
||||
(m "N" "yazi")
|
||||
(s "N" "nemo")
|
||||
|
||||
(m "M" "spotify")
|
||||
(s "M" "kitty ${c}=ani anicli-ru -q 1080")
|
||||
(a "M" "onlyoffice")
|
||||
|
||||
(m "Z" "bottles")
|
||||
(s "Z" "prismlauncher")
|
||||
(a "Z" "qbittorrent")
|
||||
|
||||
# screenshot
|
||||
(mk null null "$PR" "${getExe grimblast} copysave area ${pic}")
|
||||
(mk null "$s" "$PR" "${getExe grimblast} copysave output ${pic}")
|
||||
];
|
||||
rules =
|
||||
let
|
||||
inherit (config.lib.stylix.colors) base0B base01;
|
||||
# titile & class
|
||||
cl = win: (mk "class:^(${win})$");
|
||||
tl = win: (mk "title:^(${win})$");
|
||||
# regex
|
||||
mk = type: rule: "${rule}, ${type}";
|
||||
in
|
||||
[
|
||||
(cl "firefox" "workspace 2 silent")
|
||||
(cl "zen-zen-twilight" "workspace 2 silent")
|
||||
(cl "zen-alpha" "workspace 2 silent")
|
||||
(cl "zen-beta" "workspace 2 silent")
|
||||
(cl "spotify" "workspace 3 silent")
|
||||
(cl "com.ayugram" "workspace 4 silent")
|
||||
(cl "io.github.tdesktop_x64.TDesktop" "workspace 4 silent")
|
||||
(cl "vesktop" "workspace 4 silent")
|
||||
(cl "obsidian" "workspace 5 silent")
|
||||
(cl "anicli" "workspace 6 silent")
|
||||
(cl "org.qbittorrent.qBittorrent" "workspace 9 silent")
|
||||
|
||||
# term rules
|
||||
(cl "termfloat" "float")
|
||||
(cl "termfloat" "move center")
|
||||
(cl "termfloat" "size 650 430")
|
||||
|
||||
# file manager
|
||||
(cl "tfm" "float")
|
||||
(cl "tfm" "move center")
|
||||
(cl "tfm" "size 800 350")
|
||||
|
||||
# gram
|
||||
(tl "com.ayugram" "minsize 540 680")
|
||||
(tl "io.github.tdesktop_x64.TDesktop" "minsize 540 680")
|
||||
|
||||
(tl "Media viewer" "float")
|
||||
(tl "Media viewer" "move center")
|
||||
(tl "Media viewer" "size 670 540")
|
||||
(tl "Media viewer" "noanim")
|
||||
(tl "Media viewer" "fullscreen")
|
||||
|
||||
(tl "Choose Files" "float")
|
||||
(tl "Choose Files" "move center")
|
||||
(tl "Choose Files" "size 650 450")
|
||||
|
||||
# (cl "xdg-desktop-portal-gtk" "float")
|
||||
(cl "xdg-desktop-portal-gtk" "move center")
|
||||
(cl "xdg-desktop-portal-gtk" "size 807 570")
|
||||
|
||||
# (cl "mpv" "nodim")
|
||||
(cl "ani" "float")
|
||||
(cl "ani" "size 810 630")
|
||||
|
||||
# torrent
|
||||
(cl "org.qbittorrent.qBittorrent" "float")
|
||||
(cl "org.qbittorrent.qBittorrent" "size 1020 740")
|
||||
(cl "org.qbittorrent.qBittorrent" "pseudo")
|
||||
|
||||
# pinned
|
||||
(mk "pinned:1" "bordercolor rgb(${base0B}) rgb(${base01})")
|
||||
];
|
||||
};
|
||||
}
|
66
jetpure/home/parts/pkgs.nix
Normal file
66
jetpure/home/parts/pkgs.nix
Normal file
|
@ -0,0 +1,66 @@
|
|||
{ pkgs, inputs, ... }:
|
||||
let
|
||||
inherit (pkgs) system;
|
||||
in
|
||||
{
|
||||
imports = with inputs; [ nur.modules.homeManager.default ];
|
||||
module.programs = {
|
||||
gui.pkgs =
|
||||
(with pkgs; [
|
||||
nemo # GUI FM
|
||||
nemo-fileroller # ADDON
|
||||
file-roller # ARCHIVER
|
||||
|
||||
_64gram # TG GUI
|
||||
vesktop
|
||||
onlyoffice-bin # OFFICE
|
||||
qbittorrent-enhanced # QTORRENT
|
||||
filezilla # FTP CLIENT
|
||||
keepassxc # PASSWORDS
|
||||
|
||||
popsicle # ISO WRITER
|
||||
ventoy # FUCK
|
||||
|
||||
bottles # LAUNCH GAMES WITHOUT STEAM
|
||||
mindustry-wayland # MINDUSTRY LETSSS GOOOOO
|
||||
])
|
||||
++ (with inputs; [
|
||||
zen.packages.${system}.twilight # COOL BROWSER
|
||||
]);
|
||||
cli.pkgs =
|
||||
(with pkgs; [
|
||||
nurl # FETCHER
|
||||
nix-tree # JUST COOL
|
||||
|
||||
btop # CPU RAM AND PROCESSES TOP
|
||||
nvtopPackages.amd # GPU TOP
|
||||
|
||||
atool # ARCHIVER
|
||||
zip # ZIP ARCHIVER
|
||||
p7zip-rar # 7ZIP
|
||||
ouch # ARCHIVE IDK
|
||||
|
||||
trashy # TRASH
|
||||
tenki # CLOCK
|
||||
|
||||
imagemagick # CONVERT IMG
|
||||
jpegoptim # LOW SIZE JPG
|
||||
optipng # LOW SIZE PNG
|
||||
lutgen # COLORIZE IMG
|
||||
|
||||
wyvern # GOG
|
||||
tuir # REDDIT TUI
|
||||
hut # SOURCEHUT INTERACTION
|
||||
sd # FIND/REPLACE
|
||||
fuc # RUSTED CP/RM
|
||||
|
||||
wineWow64Packages.staging # SIMPLE LAUNCHER
|
||||
])
|
||||
++ (with pkgs.nur.repos; [
|
||||
rycee.mozilla-addons-to-nix # ADDONS TO NIX
|
||||
])
|
||||
++ (with inputs; [
|
||||
ytcli.packages.${system}.default # YTX
|
||||
]);
|
||||
};
|
||||
}
|
14
jetpure/home/parts/sway.nix
Normal file
14
jetpure/home/parts/sway.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
let
|
||||
m = "Mod4";
|
||||
X = "exec";
|
||||
in
|
||||
{
|
||||
module.wm.sway = {
|
||||
programs = {
|
||||
"${m}+b" = "${X} qutebrowser";
|
||||
"${m}+v" = "${X} telegram-desktop";
|
||||
"${m}+n" = "${X} kitty -T Explorer yazi";
|
||||
"${m}+u" = "${X} onlyoffice-desktopeditors";
|
||||
};
|
||||
};
|
||||
}
|
77
jetpure/host/default.nix
Normal file
77
jetpure/host/default.nix
Normal file
|
@ -0,0 +1,77 @@
|
|||
{ x, ... }:
|
||||
let
|
||||
inherit (x) True False umport;
|
||||
in
|
||||
{
|
||||
imports = umport {
|
||||
exclude = [ ./default.nix ];
|
||||
path = ./.;
|
||||
};
|
||||
module = {
|
||||
themes.stylix = True;
|
||||
base = True;
|
||||
hardware = {
|
||||
amd = True // {
|
||||
amdvlk = False;
|
||||
};
|
||||
bluetooth = True;
|
||||
boot = True // {
|
||||
plymouth = True;
|
||||
};
|
||||
disko = True;
|
||||
impermanence = False;
|
||||
network = True;
|
||||
power = False;
|
||||
sound = True;
|
||||
system76 = False;
|
||||
};
|
||||
services = {
|
||||
amneziawg = True // {
|
||||
service = False;
|
||||
config = "topor";
|
||||
};
|
||||
autocpu = False;
|
||||
dbus = True;
|
||||
deluge = False;
|
||||
getty = True;
|
||||
gvfs = True;
|
||||
polkit = True;
|
||||
printing = False;
|
||||
tailscale = False;
|
||||
tlp = False;
|
||||
transmission = True // {
|
||||
tui = True;
|
||||
};
|
||||
zapret = False;
|
||||
zram = True // {
|
||||
algo = "zstd";
|
||||
};
|
||||
};
|
||||
programs = {
|
||||
common = True;
|
||||
hamachi = False;
|
||||
hyprland = True;
|
||||
steam = True;
|
||||
sway = False;
|
||||
torrserver = True;
|
||||
winapps = True;
|
||||
};
|
||||
virt = {
|
||||
podman = True;
|
||||
};
|
||||
misc = {
|
||||
console = False;
|
||||
locales = True // {
|
||||
zone = "Asia/Chita";
|
||||
};
|
||||
minimal = True;
|
||||
protonmail = False;
|
||||
security = True;
|
||||
terraria = False;
|
||||
users = True // {
|
||||
shell = "fish";
|
||||
};
|
||||
variables = True;
|
||||
};
|
||||
};
|
||||
}
|
22
jetpure/host/parts/disks.nix
Normal file
22
jetpure/host/parts/disks.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
fileSystems =
|
||||
let
|
||||
default = {
|
||||
fsType = "ext4";
|
||||
options = [
|
||||
"nosuid"
|
||||
"nodev"
|
||||
"nofail"
|
||||
"x-gvfs-show"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
"/mnt/HDD" = default // {
|
||||
device = "/dev/disk/by-uuid/9290bc08-17fe-47db-a535-d4044b8c8dfb";
|
||||
};
|
||||
"/mnt/SSD" = default // {
|
||||
device = "/dev/disk/by-uuid/e6bc9034-95a4-43bd-b5f5-c7c1743e9f7c";
|
||||
};
|
||||
};
|
||||
}
|
8
jetpure/host/parts/pkgs.nix
Normal file
8
jetpure/host/parts/pkgs.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
module.programs.common.pkgs = with pkgs; [
|
||||
helix
|
||||
killall
|
||||
openvpn
|
||||
];
|
||||
}
|
63
libx/builder.nix
Normal file
63
libx/builder.nix
Normal file
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
inputs,
|
||||
lib,
|
||||
# variables
|
||||
disk ? null,
|
||||
hostName ? "sus",
|
||||
userName ? "amogus",
|
||||
flakeDir ? null,
|
||||
is ? null,
|
||||
# customize
|
||||
theme ? "horizon-dark",
|
||||
image ? "train",
|
||||
# sys info
|
||||
plfrm ? "x86_64-linux",
|
||||
ver ? "24.05",
|
||||
dev,
|
||||
...
|
||||
}:
|
||||
let
|
||||
# OTHER
|
||||
inherit (inputs.nixpkgs.lib) nixosSystem;
|
||||
inherit (inputs.home-manager.lib) homeManagerConfiguration;
|
||||
pkgs = inputs.nixpkgs.legacyPackages.${plfrm};
|
||||
# NEEDS
|
||||
sec = import ./secrets.nix;
|
||||
args = { inherit x inputs; };
|
||||
x = import ./options.nix { inherit inputs pkgs lib; } // {
|
||||
inherit
|
||||
# variables
|
||||
disk
|
||||
hostName
|
||||
userName
|
||||
flakeDir
|
||||
is
|
||||
# customize
|
||||
theme
|
||||
image
|
||||
# sys info
|
||||
plfrm
|
||||
ver
|
||||
dev
|
||||
sec # secrets
|
||||
;
|
||||
};
|
||||
in
|
||||
# configurations
|
||||
{
|
||||
nixosConfigurations.${hostName} = nixosSystem {
|
||||
modules = [
|
||||
../modules/nixos
|
||||
../${hostName}/host
|
||||
];
|
||||
specialArgs = args;
|
||||
};
|
||||
homeConfigurations.${userName} = homeManagerConfiguration {
|
||||
modules = [
|
||||
../modules/home
|
||||
../${hostName}/home
|
||||
];
|
||||
extraSpecialArgs = args;
|
||||
inherit pkgs;
|
||||
};
|
||||
}
|
65
libx/options.nix
Normal file
65
libx/options.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) system;
|
||||
def = {
|
||||
default = false;
|
||||
};
|
||||
null = {
|
||||
default = null;
|
||||
};
|
||||
setFmt = pkgs.formats.ini { };
|
||||
in
|
||||
with lib;
|
||||
with lib.types;
|
||||
{
|
||||
# ylib & stylix
|
||||
umport = inputs.nypkgs.legacyPackages.${system}.lib.umport;
|
||||
imports = {
|
||||
exclude = [ ./default.nix ];
|
||||
path = ./.;
|
||||
};
|
||||
# enable = true; ++ enable = false;
|
||||
True = {
|
||||
enable = true;
|
||||
};
|
||||
False = {
|
||||
enable = false;
|
||||
};
|
||||
# mkOption and mkEnableOption
|
||||
mkEnable = mkEnableOption "";
|
||||
mkBool = mkOption def // {
|
||||
type = bool;
|
||||
};
|
||||
mkOpt = {
|
||||
str = mkOption def // {
|
||||
type = str;
|
||||
};
|
||||
lines = mkOption null // {
|
||||
type = nullOr lines;
|
||||
};
|
||||
list = {
|
||||
pkgs = mkOption null // {
|
||||
type = listOf package;
|
||||
};
|
||||
str = mkOption null // {
|
||||
type = listOf str;
|
||||
};
|
||||
};
|
||||
attrs = {
|
||||
str = mkOption null // {
|
||||
type = attrsOf str;
|
||||
};
|
||||
};
|
||||
};
|
||||
mkConfig = {
|
||||
ini = mkOption {
|
||||
type = submodule { freeformType = settingsFormat.type; };
|
||||
default = { };
|
||||
};
|
||||
};
|
||||
}
|
6
libx/secrets.nix
Normal file
6
libx/secrets.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
git = {
|
||||
name = "neverness";
|
||||
email = "of_neverness@vk.com";
|
||||
};
|
||||
}
|
15
modules/home/default.nix
Normal file
15
modules/home/default.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{ x, ... }:
|
||||
{
|
||||
imports = x.umport {
|
||||
path = ./.;
|
||||
include = [
|
||||
./programs/custom/anicli/default.nix
|
||||
];
|
||||
exclude = [
|
||||
./default.nix
|
||||
./programs/gui/floorp/addons.nix
|
||||
./themes/stylix/image.nix
|
||||
./programs/custom
|
||||
];
|
||||
};
|
||||
}
|
62
modules/home/misc/dconf.nix
Normal file
62
modules/home/misc/dconf.nix
Normal file
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.misc.dconf;
|
||||
in
|
||||
{
|
||||
options.module.misc.dconf = {
|
||||
enable = mkBool;
|
||||
};
|
||||
|
||||
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 configuration
|
||||
"${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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
10
modules/home/misc/home-manager/default.nix
Normal file
10
modules/home/misc/home-manager/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ x, ... }:
|
||||
with x;
|
||||
{
|
||||
programs.home-manager = True;
|
||||
home = {
|
||||
username = userName;
|
||||
homeDirectory = "/home/${userName}";
|
||||
stateVersion = ver;
|
||||
};
|
||||
}
|
11
modules/home/misc/minimal/default.nix
Normal file
11
modules/home/misc/minimal/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ x, ... }:
|
||||
with x;
|
||||
{
|
||||
news.display = "silent";
|
||||
programs.man = False;
|
||||
manual = {
|
||||
html = False;
|
||||
json = False;
|
||||
manpages = False;
|
||||
};
|
||||
}
|
37
modules/home/misc/nix.nix
Normal file
37
modules/home/misc/nix.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{ x, pkgs, ... }:
|
||||
with x;
|
||||
{
|
||||
nix = {
|
||||
package = pkgs.nix;
|
||||
settings = {
|
||||
warn-dirty = false;
|
||||
extra-experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
trusted-users = [
|
||||
"${userName}"
|
||||
"@wheel"
|
||||
];
|
||||
extra-substituters = [
|
||||
"https://nix-gaming.cachix.org" # NIX GAMING
|
||||
"https://hyprland.cachix.org" # HYPRLAND
|
||||
"https://cache.garnix.io" # AYUGRAM
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" # NIX GAMING
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" # HYPRLAND
|
||||
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" # AYUGRAM
|
||||
];
|
||||
builders-use-substitutes = true;
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
};
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
news.display = "silent";
|
||||
manual = {
|
||||
manpages = False;
|
||||
json = False;
|
||||
html = False;
|
||||
};
|
||||
}
|
54
modules/home/misc/xdg/default.nix
Normal file
54
modules/home/misc/xdg/default.nix
Normal file
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
hmdir = config.home.homeDirectory;
|
||||
nD = name: {
|
||||
name = "${name}";
|
||||
noDisplay = true;
|
||||
};
|
||||
in
|
||||
{
|
||||
options.module.misc.xdg = {
|
||||
mime.enable = mkBool;
|
||||
};
|
||||
|
||||
config = {
|
||||
xdg = {
|
||||
mime = True;
|
||||
portal = True // {
|
||||
config.common.default = "gtk";
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-hyprland
|
||||
];
|
||||
};
|
||||
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";
|
||||
};
|
||||
desktopEntries = {
|
||||
qt5ct = nD "qt5ct";
|
||||
qt6ct = nD "qt6ct";
|
||||
nvtop = nD "nvtop";
|
||||
btop = nD "btop";
|
||||
fish = nD "fish";
|
||||
rofi = nD "rofi";
|
||||
rofi-theme-selector = nD "rofi-theme-selector";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
125
modules/home/misc/xdg/mimeApps.nix
Normal file
125
modules/home/misc/xdg/mimeApps.nix
Normal file
|
@ -0,0 +1,125 @@
|
|||
{ x, ... }:
|
||||
with x;
|
||||
let
|
||||
ds = "desktop";
|
||||
in
|
||||
{
|
||||
xdg.mimeApps = True // {
|
||||
defaultApplications =
|
||||
let
|
||||
web = "zen";
|
||||
in
|
||||
{
|
||||
# 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" = "${web}.${ds}";
|
||||
"x-scheme-handler/ftp" = "${web}.${ds}";
|
||||
"application/xhtml+xml" = "${web}.${ds}";
|
||||
"x-scheme-handler/http" = "${web}.${ds}";
|
||||
"x-scheme-handler/https" = "${web}.${ds}";
|
||||
"x-scheme-handler/chrome" = "${web}.${ds}";
|
||||
"application/x-extension-htm" = "${web}.${ds}";
|
||||
"application/x-extension-xht" = "${web}.${ds}";
|
||||
"application/x-extension-html" = "${web}.${ds}";
|
||||
"application/x-extension-shtml" = "${web}.${ds}";
|
||||
"application/x-extension-xhtml" = "${web}.${ds}";
|
||||
"x-scheme-handler/about" = "${web}.${ds}";
|
||||
"x-scheme-handler/unknown" = "${web}.${ds}";
|
||||
# OTHER
|
||||
"x-scheme-handler/spotify" = "spotify.${ds}";
|
||||
};
|
||||
};
|
||||
}
|
31
modules/home/programs/cli/bat/default.nix
Normal file
31
modules/home/programs/cli/bat/default.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.bat;
|
||||
in
|
||||
{
|
||||
options.module.programs.cli.bat = {
|
||||
enable = mkBool;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.bat = True // {
|
||||
extraPackages = with pkgs.bat-extras; [
|
||||
# prettybat
|
||||
batwatch
|
||||
batgrep
|
||||
batdiff
|
||||
];
|
||||
config = {
|
||||
wrap = "character";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
20
modules/home/programs/cli/cava/default.nix
Normal file
20
modules/home/programs/cli/cava/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.cava;
|
||||
in
|
||||
{
|
||||
options.module.programs.cli.cava = {
|
||||
enable = mkBool;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.cava = True;
|
||||
};
|
||||
}
|
26
modules/home/programs/cli/eza/default.nix
Normal file
26
modules/home/programs/cli/eza/default.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.eza;
|
||||
in
|
||||
{
|
||||
options.module.programs.cli.eza = {
|
||||
enable = mkBool;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.eza = True // {
|
||||
icons = "auto";
|
||||
extraOptions = [
|
||||
"--group-directories-first"
|
||||
"--icons=always"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
25
modules/home/programs/cli/fd/default.nix
Normal file
25
modules/home/programs/cli/fd/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.fd;
|
||||
in
|
||||
{
|
||||
options.module.programs.cli.fd = {
|
||||
enable = mkBool;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.fd = True // {
|
||||
ignores = [
|
||||
".git/"
|
||||
"*.bak"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
87
modules/home/programs/cli/fetch/default.nix
Normal file
87
modules/home/programs/cli/fetch/default.nix
Normal file
|
@ -0,0 +1,87 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.fetch;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.fetch = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
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"; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
30
modules/home/programs/cli/fzf/default.nix
Normal file
30
modules/home/programs/cli/fzf/default.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.fzf;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.fzf = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.fzf = True // {
|
||||
defaultOptions = [
|
||||
"--border=rounded"
|
||||
"--info=hidden"
|
||||
"--no-mouse"
|
||||
"--margin=1,49%,1,1"
|
||||
"--padding=0"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
66
modules/home/programs/cli/git/default.nix
Normal file
66
modules/home/programs/cli/git/default.nix
Normal file
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
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 = mkBool;
|
||||
name = mkOpt.str;
|
||||
email = mkOpt.str;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.git = True // {
|
||||
package = pkgs.gitMinimal;
|
||||
userName = sec.git.name;
|
||||
userEmail = sec.git.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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
24
modules/home/programs/cli/gpg/default.nix
Normal file
24
modules/home/programs/cli/gpg/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.gpg;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.gpg = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.gpg = True // {
|
||||
|
||||
};
|
||||
};
|
||||
}
|
24
modules/home/programs/cli/helix/binds.nix
Normal file
24
modules/home/programs/cli/helix/binds.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
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 = { };
|
||||
};
|
||||
}
|
24
modules/home/programs/cli/helix/default.nix
Normal file
24
modules/home/programs/cli/helix/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.helix;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.helix = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.helix = True // {
|
||||
defaultEditor = true;
|
||||
};
|
||||
};
|
||||
}
|
227
modules/home/programs/cli/helix/languages.nix
Normal file
227
modules/home/programs/cli/helix/languages.nix
Normal file
|
@ -0,0 +1,227 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
inherit (lib) getExe;
|
||||
inherit (pkgs.nodePackages_latest) prettier;
|
||||
indent = {
|
||||
tab-width = 2;
|
||||
unit = " ";
|
||||
};
|
||||
auto-format = true;
|
||||
in
|
||||
{
|
||||
programs.helix = with pkgs; {
|
||||
languages = {
|
||||
language = [
|
||||
{
|
||||
# nix
|
||||
inherit auto-format indent;
|
||||
name = "nix";
|
||||
language-servers = [
|
||||
"nixd"
|
||||
"nil"
|
||||
];
|
||||
formatter.command = "${getExe nixfmt-rfc-style}";
|
||||
}
|
||||
{
|
||||
# html
|
||||
inherit auto-format indent;
|
||||
name = "html";
|
||||
language-servers = [ "vscode-html" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"html"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# json
|
||||
inherit auto-format indent;
|
||||
name = "json";
|
||||
language-servers = [ "vscode-json" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"json"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# jsonc
|
||||
inherit auto-format indent;
|
||||
name = "jsonc";
|
||||
language-servers = [ "vscode-json" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"json"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# css
|
||||
inherit auto-format indent;
|
||||
name = "css";
|
||||
language-servers = [ "vscode-css" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"css"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# scss
|
||||
inherit auto-format indent;
|
||||
name = "scss";
|
||||
language-servers = [ "vscode-css" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"scss"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# markdown
|
||||
inherit auto-format indent;
|
||||
name = "markdown";
|
||||
language-servers = [ "marksman" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"markdown"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# typescript
|
||||
inherit auto-format indent;
|
||||
name = "typescript";
|
||||
language-servers = [ "typescript" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"typescript"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# typescript
|
||||
inherit auto-format indent;
|
||||
name = "tsx";
|
||||
language-servers = [ "typescript" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"typescript"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# yaml
|
||||
inherit auto-format indent;
|
||||
name = "yaml";
|
||||
language-servers = [ "yaml" ];
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"yaml"
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
# python
|
||||
inherit auto-format indent;
|
||||
name = "python";
|
||||
language-servers = [
|
||||
"pylsp"
|
||||
"ruff"
|
||||
];
|
||||
shebangs = [ "${getExe python39}" ];
|
||||
file-types = [
|
||||
"py"
|
||||
"pyi"
|
||||
"py3"
|
||||
"pyw"
|
||||
".pythonstartup"
|
||||
".pythonrc"
|
||||
];
|
||||
roots = [
|
||||
"."
|
||||
"pyproject.toml"
|
||||
"pyrightconfig.json"
|
||||
];
|
||||
comment-token = "#";
|
||||
scope = "source.python";
|
||||
injection-regex = "python";
|
||||
formatter = {
|
||||
command = "${getExe prettier}";
|
||||
args = [
|
||||
"--use-tabs"
|
||||
"--parser"
|
||||
"python"
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
language-server =
|
||||
let
|
||||
vscode = vscode-langservers-extracted;
|
||||
typescript = typescript-language-server;
|
||||
yaml = yaml-language-server;
|
||||
in
|
||||
{
|
||||
nil.command = "${getExe nil}";
|
||||
nixd.command = "${getExe nixd}";
|
||||
} # nix
|
||||
// {
|
||||
typescript.command = "${getExe typescript}";
|
||||
} # typescript
|
||||
// {
|
||||
yaml.command = "${getExe yaml}";
|
||||
} # typescript
|
||||
// {
|
||||
marksman.command = "${getExe marksman}";
|
||||
} # markdown
|
||||
// {
|
||||
vscode-html.command = "${vscode}/bin/vscode-html-language-server";
|
||||
vscode-json.command = "${vscode}/bin/vscode-json-language-server";
|
||||
vscode-css.command = "${vscode}/bin/vscode-css-language-server";
|
||||
} # vscode <lang> server
|
||||
// {
|
||||
ruff.command = "${getExe ruff-lsp}";
|
||||
pyright = {
|
||||
command = "${getExe pyright}";
|
||||
args = [ "--stdio" ];
|
||||
config = {
|
||||
reportMissingTypeStubs = false;
|
||||
python.analysis = {
|
||||
typeCheckingMode = "basic";
|
||||
autoImportCompletions = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
} # python
|
||||
;
|
||||
};
|
||||
};
|
||||
}
|
63
modules/home/programs/cli/helix/settings.nix
Normal file
63
modules/home/programs/cli/helix/settings.nix
Normal file
|
@ -0,0 +1,63 @@
|
|||
{
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
234
modules/home/programs/cli/helix/theme.nix
Normal file
234
modules/home/programs/cli/helix/theme.nix
Normal file
|
@ -0,0 +1,234 @@
|
|||
{ lib, config, ... }:
|
||||
{
|
||||
programs.helix.themes =
|
||||
with config.lib.stylix.colors.withHashtag;
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
20
modules/home/programs/cli/joshuto/default.nix
Normal file
20
modules/home/programs/cli/joshuto/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.joshuto;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.joshuto = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable { programs.joshuto = True; };
|
||||
}
|
135
modules/home/programs/cli/joshuto/mimetype.nix
Normal file
135
modules/home/programs/cli/joshuto/mimetype.nix
Normal file
|
@ -0,0 +1,135 @@
|
|||
{
|
||||
programs.joshuto.mimetype = {
|
||||
class = {
|
||||
audio_default = [
|
||||
{
|
||||
command = "mpv";
|
||||
args = [ "--" ];
|
||||
}
|
||||
];
|
||||
image_default = [
|
||||
{
|
||||
command = "swayimg";
|
||||
args = [ "-f --" ];
|
||||
}
|
||||
];
|
||||
video_default = [
|
||||
{
|
||||
command = "mpv";
|
||||
args = [ "--" ];
|
||||
fork = true;
|
||||
silent = true;
|
||||
}
|
||||
];
|
||||
text_default = [
|
||||
{ command = "hx"; }
|
||||
{
|
||||
command = "bat";
|
||||
args = [ "--paging=always" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
video = {
|
||||
"inherit" = "video_default";
|
||||
};
|
||||
text = {
|
||||
"inherit" = "text_default";
|
||||
};
|
||||
extensions = {
|
||||
# AUDIO
|
||||
aac."inherit" = "audio_default";
|
||||
ac3."inherit" = "audio_default";
|
||||
aiff."inherit" = "audio_default";
|
||||
ape."inherit" = "audio_default";
|
||||
dts."inherit" = "audio_default";
|
||||
flac."inherit" = "audio_default";
|
||||
m4a."inherit" = "audio_default";
|
||||
mp3."inherit" = "audio_default";
|
||||
oga."inherit" = "audio_default";
|
||||
ogg."inherit" = "audio_default";
|
||||
opus."inherit" = "audio_default";
|
||||
wav."inherit" = "audio_default";
|
||||
wv."inherit" = "audio_default";
|
||||
|
||||
# VIDEO
|
||||
avi."inherit" = "video_default";
|
||||
av1."inherit" = "video_default";
|
||||
flv."inherit" = "video_default";
|
||||
mkv."inherit" = "video_default";
|
||||
m4v."inherit" = "video_default";
|
||||
mov."inherit" = "video_default";
|
||||
mp4."inherit" = "video_default";
|
||||
ts."inherit" = "video_default";
|
||||
webm."inherit" = "video_default";
|
||||
wmv."inherit" = "video_default";
|
||||
|
||||
# TEXT
|
||||
bib."inherit" = "text_default";
|
||||
build."inherit" = "text_default";
|
||||
c."inherit" = "text_default";
|
||||
cfg."inherit" = "text_default";
|
||||
cmake."inherit" = "text_default";
|
||||
conf."inherit" = "text_default";
|
||||
cpp."inherit" = "text_default";
|
||||
css."inherit" = "text_default";
|
||||
csv."inherit" = "text_default";
|
||||
cu."inherit" = "text_default";
|
||||
desktop."inherit" = "text_default";
|
||||
ebuild."inherit" = "text_default";
|
||||
eex."inherit" = "text_default";
|
||||
env."inherit" = "text_default";
|
||||
ex."inherit" = "text_default";
|
||||
exs."inherit" = "text_default";
|
||||
go."inherit" = "text_default";
|
||||
gpl."inherit" = "text_default";
|
||||
h."inherit" = "text_default";
|
||||
hpp."inherit" = "text_default";
|
||||
hs."inherit" = "text_default";
|
||||
ini."inherit" = "text_default";
|
||||
ipynb."inherit" = "text_default";
|
||||
java."inherit" = "text_default";
|
||||
jl."inherit" = "text_default";
|
||||
js."inherit" = "text_default";
|
||||
json."inherit" = "text_default";
|
||||
jsonc."inherit" = "text_default";
|
||||
kdl."inherit" = "text_default";
|
||||
kt."inherit" = "text_default";
|
||||
kvconfig."inherit" = "text_default";
|
||||
lock."inherit" = "text_default";
|
||||
log."inherit" = "text_default";
|
||||
lua."inherit" = "text_default";
|
||||
md."inherit" = "text_default";
|
||||
micro."inherit" = "text_default";
|
||||
ninja."inherit" = "text_default";
|
||||
nix."inherit" = "text_default";
|
||||
norg."inherit" = "text_default";
|
||||
org."inherit" = "text_default";
|
||||
po."inherit" = "text_default";
|
||||
pot."inherit" = "text_default";
|
||||
py."inherit" = "text_default";
|
||||
qmd."inherit" = "text_default";
|
||||
rasi."inherit" = "text_default";
|
||||
rkt."inherit" = "text_default";
|
||||
rktd."inherit" = "text_default";
|
||||
rproj."inherit" = "text_default";
|
||||
rs."inherit" = "text_default";
|
||||
rstheme."inherit" = "text_default";
|
||||
scm."inherit" = "text_default";
|
||||
scss."inherit" = "text_default";
|
||||
service."inherit" = "text_default";
|
||||
sh."inherit" = "text_default";
|
||||
socket."inherit" = "text_default";
|
||||
sql."inherit" = "text_default";
|
||||
srt."inherit" = "text_default";
|
||||
svelte."inherit" = "text_default";
|
||||
toml."inherit" = "text_default";
|
||||
tsx."inherit" = "text_default";
|
||||
txt."inherit" = "text_default";
|
||||
vim."inherit" = "text_default";
|
||||
xml."inherit" = "text_default";
|
||||
yaml."inherit" = "text_default";
|
||||
yml."inherit" = "text_default";
|
||||
};
|
||||
};
|
||||
}
|
28
modules/home/programs/cli/joshuto/settings.nix
Normal file
28
modules/home/programs/cli/joshuto/settings.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
programs.joshuto.settings = {
|
||||
mouse_support = false;
|
||||
xdg_open = false;
|
||||
xdg_open_fork = false;
|
||||
use_trash = true;
|
||||
focus_on_create = true;
|
||||
max_preview_size = "2 GB";
|
||||
zoxide_update = true;
|
||||
display = {
|
||||
collapse_preview = true;
|
||||
column_ratio = [
|
||||
1
|
||||
3
|
||||
4
|
||||
];
|
||||
show_borders = true;
|
||||
show_icons = true;
|
||||
tilde_in_titlebar = true;
|
||||
sort = {
|
||||
directories_first = true;
|
||||
};
|
||||
};
|
||||
tab = {
|
||||
home_page = "inherit";
|
||||
};
|
||||
};
|
||||
}
|
18
modules/home/programs/cli/joshuto/theme.nix
Normal file
18
modules/home/programs/cli/joshuto/theme.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.joshuto.theme = with config.lib.stylix.colors; {
|
||||
lscolors_enabled = true;
|
||||
tabs.styles = {
|
||||
active = {
|
||||
bg = "${base00}";
|
||||
fg = "${base0E}";
|
||||
bold = true;
|
||||
};
|
||||
inactive = {
|
||||
bg = "${base00}";
|
||||
fg = "${base03}";
|
||||
bold = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
35
modules/home/programs/cli/legendary/default.nix
Normal file
35
modules/home/programs/cli/legendary/default.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.legendary;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.legendary = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ legendary-gl ];
|
||||
xdg.configFile."legendary/config.ini".text = ''
|
||||
[Legendary]
|
||||
log_level = debug
|
||||
max_memory = 2048
|
||||
max_workers = 8
|
||||
install_dir = ${dev.hdd}/Games[LITE]
|
||||
locale = en-US
|
||||
disable_https = false
|
||||
disable_update_check = false
|
||||
disable_update_notice = false
|
||||
disable_auto_aliasing = false
|
||||
'';
|
||||
};
|
||||
}
|
32
modules/home/programs/cli/lsd/default.nix
Normal file
32
modules/home/programs/cli/lsd/default.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.lsd;
|
||||
in
|
||||
{
|
||||
options.module.programs.cli.lsd = {
|
||||
enable = mkBool;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.lsd = True // {
|
||||
enableAliases = true;
|
||||
settings = {
|
||||
header = false;
|
||||
color = {
|
||||
when = "auto";
|
||||
};
|
||||
icons = {
|
||||
when = "always";
|
||||
ignore-globs = [ ".git" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
81
modules/home/programs/cli/micro/default.nix
Normal file
81
modules/home/programs/cli/micro/default.nix
Normal file
|
@ -0,0 +1,81 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.micro;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.micro = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
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.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 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"
|
||||
'';
|
||||
};
|
||||
}
|
22
modules/home/programs/cli/pkgs.nix
Normal file
22
modules/home/programs/cli/pkgs.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli = {
|
||||
pkgs = mkOpt.list.pkgs;
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
home.packages = [ ] ++ cfg.pkgs;
|
||||
};
|
||||
}
|
20
modules/home/programs/cli/ripgrep/default.nix
Normal file
20
modules/home/programs/cli/ripgrep/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.ripgrep;
|
||||
in
|
||||
{
|
||||
options.module.programs.cli.ripgrep = {
|
||||
enable = mkBool;
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.ripgrep = True;
|
||||
};
|
||||
}
|
55
modules/home/programs/cli/rustmission/config.toml
Normal file
55
modules/home/programs/cli/rustmission/config.toml
Normal file
|
@ -0,0 +1,55 @@
|
|||
[general]
|
||||
auto_hide = true
|
||||
accent_color = "LightRed"
|
||||
beginner_mode = false
|
||||
headers_hide = false
|
||||
|
||||
[connection]
|
||||
url = "http://127.0.0.1:9091/transmission/rpc" # REQUIRED!
|
||||
torrents_refresh = 1
|
||||
stats_refresh = 1
|
||||
free_space_refresh = 2
|
||||
# username = "CHANGE_ME"
|
||||
# password = "CHANGE_ME"
|
||||
|
||||
[torrents_tab]
|
||||
# Available fields:
|
||||
# Id, Name, SizeWhenDone, Progress, Eta, DownloadRate, UploadRate, DownloadDir,
|
||||
# Padding, UploadRatio, UploadedEver, AddedDate, ActivityDate, PeersConnected
|
||||
# SmallStatus, Category, CategoryIcon
|
||||
headers = ["Name", "SizeWhenDone", "Progress", "Eta", "DownloadRate" ]
|
||||
default_sort = "Progress"
|
||||
default_sort_reverse = true
|
||||
category_icon_insert_into_name = true
|
||||
|
||||
[search_tab]
|
||||
# If you uncomment this, providers won't be automatically added in future
|
||||
# versions of Rustmission.
|
||||
# providers = ["Knaben", "Nyaa"]
|
||||
|
||||
[icons]
|
||||
# Ascii alternatives # Defaults
|
||||
# upload = "↑" # ""
|
||||
# download = "↓" # ""
|
||||
# arrow_left = "←" # ""
|
||||
# arrow_right = "→" # ""
|
||||
# arrow_up = "↑" # ""
|
||||
# arrow_down = "↓" # ""
|
||||
# triangle_right = "▶" # "▶"
|
||||
# triangle_down = "▼" # "▼"
|
||||
# file = "∷" # ""
|
||||
# disk = "[D]" # ""
|
||||
# help = "[?]" # ""
|
||||
# success = "✔" # ""
|
||||
# failure = "✖" # ""
|
||||
# searching = "⟳" # ""
|
||||
# verifying = "⟳" # ""
|
||||
# loading = "⌛" # ""
|
||||
# pause = "‖" # ""
|
||||
# idle = "○" # ""
|
||||
# magnifying_glass = "[o]" # ""
|
||||
# provider_disabled = "⛔" # ""
|
||||
# provider_category_general = "[G]" # ""
|
||||
# provider_category_anime = "[A]" # ""
|
||||
# sort_ascending = "↓" # ""
|
||||
# sort_descending = "↑" # """
|
26
modules/home/programs/cli/rustmission/default.nix
Normal file
26
modules/home/programs/cli/rustmission/default.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.rustmission;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.rustmission = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ rustmission ];
|
||||
xdg.configFile = {
|
||||
"rustmission/config.toml".source = ./config.toml;
|
||||
};
|
||||
};
|
||||
}
|
31
modules/home/programs/cli/top/default.nix
Normal file
31
modules/home/programs/cli/top/default.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.top;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.top = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
362
modules/home/programs/cli/yazi/binds.nix
Normal file
362
modules/home/programs/cli/yazi/binds.nix
Normal file
|
@ -0,0 +1,362 @@
|
|||
{ x, ... }:
|
||||
with x;
|
||||
{
|
||||
programs.yazi.keymap = {
|
||||
manager = {
|
||||
prepend_keymap = [
|
||||
# main
|
||||
{
|
||||
on = [ "q" ];
|
||||
run = "close";
|
||||
desc = "Close tab/yazi";
|
||||
}
|
||||
{
|
||||
on = [ "l" ];
|
||||
run = "plugin 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 smart-enter";
|
||||
desc = "Enter/open";
|
||||
}
|
||||
{
|
||||
on = [ "<Enter>" ];
|
||||
run = "plugin smart-enter";
|
||||
desc = "Enter/open";
|
||||
}
|
||||
|
||||
# vis
|
||||
{
|
||||
on = [
|
||||
"v"
|
||||
"m"
|
||||
];
|
||||
run = "plugin max-preview";
|
||||
desc = "Maximize preview";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"v"
|
||||
"p"
|
||||
];
|
||||
run = "plugin 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 = "toggle_all --state=true";
|
||||
desc = "Select all";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"v"
|
||||
"r"
|
||||
];
|
||||
run = "toggle_all --state=none";
|
||||
desc = "Unselect all";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"v"
|
||||
"h"
|
||||
];
|
||||
run = "hidden toggle";
|
||||
desc = "Hidden files with .*";
|
||||
}
|
||||
|
||||
# archive
|
||||
{
|
||||
on = [ "C" ];
|
||||
run = "plugin ouch --args=zip";
|
||||
desc = "Compress with ouch";
|
||||
}
|
||||
|
||||
# del
|
||||
{
|
||||
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 --cursor=end";
|
||||
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";
|
||||
}
|
||||
|
||||
# naviagte
|
||||
{
|
||||
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";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"g"
|
||||
"n"
|
||||
"s"
|
||||
];
|
||||
run = "cd /nix/store";
|
||||
desc = "Go to store";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"g"
|
||||
"d"
|
||||
"h"
|
||||
];
|
||||
run = "cd ${dev.hdd}";
|
||||
desc = "Go to HDD";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"g"
|
||||
"d"
|
||||
"s"
|
||||
];
|
||||
run = "cd ${dev.ssd}";
|
||||
desc = "Go to SSD";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"g"
|
||||
"r"
|
||||
];
|
||||
run = ''
|
||||
shell 'ya emit cd "$(git rev-parse --show-toplevel)"'
|
||||
'';
|
||||
desc = "Go to root of git repo";
|
||||
}
|
||||
|
||||
# tabs
|
||||
{
|
||||
on = [ "t" ];
|
||||
run = "plugin smart-tab";
|
||||
desc = "Create a tab and enter the hovered directory";
|
||||
}
|
||||
{
|
||||
on = [ "]" ];
|
||||
run = "tab_switch -1 --relative";
|
||||
desc = "Switch to the next tab";
|
||||
}
|
||||
{
|
||||
on = [ "[" ];
|
||||
run = "tab_switch 1 --relative";
|
||||
desc = "Switch to the previous tab";
|
||||
}
|
||||
|
||||
# yank
|
||||
{
|
||||
on = [ "y" ];
|
||||
run = "yank";
|
||||
desc = "Yank files";
|
||||
}
|
||||
{
|
||||
on = [ "u" ];
|
||||
run = ''
|
||||
shell 'for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'
|
||||
'';
|
||||
desc = "Yank files systemly";
|
||||
}
|
||||
|
||||
# paste
|
||||
{
|
||||
on = [
|
||||
"p"
|
||||
"p"
|
||||
];
|
||||
run = "paste";
|
||||
desc = "Paste yanked files";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"p"
|
||||
"P"
|
||||
];
|
||||
run = "plugin smart-paste";
|
||||
desc = "Paste yanked files in preview dir";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"p"
|
||||
"f"
|
||||
];
|
||||
run = "plugin paste-file";
|
||||
desc = "Create new file from clipboard";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"p"
|
||||
"F"
|
||||
];
|
||||
run = "plugin paste-file --args='quiet'";
|
||||
desc = "Create new file from clipboard";
|
||||
}
|
||||
|
||||
# mounts
|
||||
{
|
||||
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";
|
||||
}
|
||||
];
|
||||
};
|
||||
completion = {
|
||||
prepend_keymap = [
|
||||
{
|
||||
on = [ "<C-j>" ];
|
||||
run = "arrow 1";
|
||||
}
|
||||
{
|
||||
on = [ "<C-k>" ];
|
||||
run = "arrow -1";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
20
modules/home/programs/cli/yazi/default.nix
Normal file
20
modules/home/programs/cli/yazi/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.yazi;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.yazi = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable { programs.yazi = True // { }; };
|
||||
}
|
74
modules/home/programs/cli/yazi/lua.nix
Normal file
74
modules/home/programs/cli/yazi/lua.nix
Normal file
|
@ -0,0 +1,74 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.yazi.initLua = with config.lib.stylix.colors.withHashtag; ''
|
||||
require("archivemount"):setup()
|
||||
require("full-border"):setup { type = ui.Border.ROUNDED, }
|
||||
|
||||
require("yatline-githead"):setup()
|
||||
require("yatline"):setup({
|
||||
section_separator = { open = "", close = "" },
|
||||
part_separator = { open = "", close = "" },
|
||||
inverse_separator = { open = "", close = "" },
|
||||
|
||||
style_a = { fg = "white",
|
||||
bg_mode = {
|
||||
normal = "${base02}",
|
||||
select = "${base02}",
|
||||
un_set = "${base02}"
|
||||
}
|
||||
},
|
||||
style_b = { bg = "${base03}", fg = "white" },
|
||||
style_c = { bg = "black", fg = "white" },
|
||||
|
||||
permissions_t_fg = "green",
|
||||
permissions_r_fg = "yellow",
|
||||
permissions_w_fg = "red",
|
||||
permissions_x_fg = "cyan",
|
||||
permissions_s_fg = "darkgray",
|
||||
|
||||
show_background = false,
|
||||
display_header_line = true,
|
||||
display_status_line = true,
|
||||
tab_width = 20,
|
||||
tab_use_inverse = false,
|
||||
|
||||
selected = { icon = "", fg = "yellow" },
|
||||
copied = { icon = "", fg = "green" },
|
||||
cut = { icon = "", fg = "red" },
|
||||
|
||||
total = { icon = "", fg = "yellow" },
|
||||
succ = { icon = "", fg = "green" },
|
||||
fail = { icon = "", fg = "red" },
|
||||
found = { icon = "", fg = "blue" },
|
||||
processed = { icon = "", fg = "green" },
|
||||
|
||||
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 = { {type = "coloreds", custom = false, name = "githead"}, }
|
||||
}
|
||||
},
|
||||
|
||||
status_line = {
|
||||
left = {
|
||||
section_a = { {type = "string", custom = false, name = "tab_mode"}, },
|
||||
section_b = { {type = "string", custom = false, name = "cursor_position"}, },
|
||||
section_c = { {type = "string", custom = false, name = "hovered_size"},
|
||||
{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}},
|
||||
{type = "string", custom = false, name = "hovered_mime"}, },
|
||||
section_c = { {type = "coloreds", custom = false, name = "permissions"}, }
|
||||
}
|
||||
},
|
||||
})
|
||||
'';
|
||||
}
|
87
modules/home/programs/cli/yazi/plugins.nix
Normal file
87
modules/home/programs/cli/yazi/plugins.nix
Normal file
|
@ -0,0 +1,87 @@
|
|||
{ pkgs, ... }:
|
||||
with pkgs;
|
||||
let
|
||||
mk = name: { ${name} = "${yazi-plugins}/${name}.yazi"; };
|
||||
plugin = name: text: {
|
||||
"${name}" = toString (writeTextDir "${name}.yazi/init.lua" text) + "/${name}.yazi";
|
||||
};
|
||||
yazi-plugins = fetchFromGitHub {
|
||||
owner = "yazi-rs";
|
||||
repo = "plugins";
|
||||
rev = "71c4fc2e6fa1d6f70c85bf525842d6888d1ffa46";
|
||||
hash = "sha256-X3R5bsnzGv1TVXOKdhAyspDMguVAyc9tvCxJlypUUAA=";
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.yazi.plugins =
|
||||
# builtin
|
||||
(mk "max-preview")
|
||||
// (mk "hide-preview")
|
||||
// (mk "full-border")
|
||||
// (mk "chmod")
|
||||
// {
|
||||
# fetched
|
||||
yatline = fetchFromGitHub {
|
||||
owner = "imsi32";
|
||||
repo = "yatline.yazi";
|
||||
rev = "600ed1fb1d04e1292da04280a65f8deca04dc36a";
|
||||
hash = "sha256-oHCRScbahGaX8MTVNalNXlxQ7NJN5QKvGHbTXreAWFM=";
|
||||
};
|
||||
yatline-githead = fetchFromGitHub {
|
||||
owner = "imsi32";
|
||||
repo = "yatline-githead.yazi";
|
||||
rev = "a6377a8b190a8563645e79c6d71e7f398e516c52";
|
||||
hash = "sha256-SH2BDk8sHZT1L12gJjVbVBipiTwF/KARkuaJfNGdGXg=";
|
||||
};
|
||||
ouch = fetchFromGitHub {
|
||||
owner = "ndtoan96";
|
||||
repo = "ouch.yazi";
|
||||
rev = "b8698865a0b1c7c1b65b91bcadf18441498768e6";
|
||||
hash = "sha256-eRjdcBJY5RHbbggnMHkcIXUF8Sj2nhD/o7+K3vD3hHY=";
|
||||
};
|
||||
archivemount = fetchFromGitHub {
|
||||
owner = "AnirudhG07";
|
||||
repo = "archivemount.yazi";
|
||||
rev = "d4f3e6a41f955a1e821305ddbc16e571917511f4";
|
||||
hash = "sha256-YoEpAQKXBH/W+IUTWaTZU/Q94Dp5mbLxcGuUi9FezYA=";
|
||||
};
|
||||
mdcat = fetchFromGitHub {
|
||||
owner = "GrzegorzKozub";
|
||||
repo = "mdcat.yazi";
|
||||
rev = "d3d5089d06fe4ed14504726722f89c977f9eb54a";
|
||||
hash = "sha256-F6rNLWJxMmTOOlna6lev4m1h559BWftfy6pNoTqVGKw=";
|
||||
};
|
||||
paste = fetchFromGitHub {
|
||||
owner = "crawraps";
|
||||
repo = "paste-file.yazi";
|
||||
rev = "e59d60cb82ad8d81268b93d20804c44701eca61c";
|
||||
hash = "sha256-dV59B5UBBK59TiMv6wfG1EHx9bk3HmpYrQYND1qayTY=";
|
||||
};
|
||||
}
|
||||
# custom
|
||||
// (plugin "smart-enter" ''
|
||||
--- @sync entry
|
||||
local function setup(self, opts) self.open_multi = opts.open_multi end
|
||||
local function entry(self)
|
||||
local h = cx.active.current.hovered
|
||||
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = not self.open_multi })
|
||||
end return { entry = entry, setup = setup }
|
||||
'')
|
||||
// (plugin "smart-paste" ''
|
||||
--- @sync entry
|
||||
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, }
|
||||
'')
|
||||
// (plugin "smart-tab" ''
|
||||
--- @sync entry
|
||||
return { entry = function()
|
||||
local h = cx.active.current.hovered
|
||||
ya.manager_emit("tab_create", h and h.cha.is_dir and { h.url } or { current = true })
|
||||
end, }
|
||||
'');
|
||||
}
|
199
modules/home/programs/cli/yazi/sets.nix
Normal file
199
modules/home/programs/cli/yazi/sets.nix
Normal file
|
@ -0,0 +1,199 @@
|
|||
{ x, pkgs, ... }:
|
||||
with x;
|
||||
{
|
||||
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 $@"; }
|
||||
];
|
||||
edit = [
|
||||
{
|
||||
run = ''hx "$@"'';
|
||||
block = true;
|
||||
}
|
||||
];
|
||||
reveal = [ { run = ''xdg-open "$(dirname "$@")"''; } ];
|
||||
play = [
|
||||
{
|
||||
run = ''mpv --force-window "$@"'';
|
||||
orphan = true;
|
||||
}
|
||||
];
|
||||
image = [
|
||||
{
|
||||
run = ''swayimg "$@"'';
|
||||
block = true;
|
||||
}
|
||||
];
|
||||
document = [
|
||||
{
|
||||
desc = "Document";
|
||||
orphan = true;
|
||||
run = "onlyoffice-desktopeditors";
|
||||
}
|
||||
];
|
||||
extract = [
|
||||
{ run = ''ouch d -y "$@"''; }
|
||||
];
|
||||
};
|
||||
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"
|
||||
];
|
||||
}
|
||||
{
|
||||
mime = "inode/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 = "mdcat";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
ffmpegthumbnailer
|
||||
wl-clipboard
|
||||
|
||||
jq
|
||||
poppler_min
|
||||
mdcat
|
||||
];
|
||||
}
|
2987
modules/home/programs/cli/yazi/theme.nix
Normal file
2987
modules/home/programs/cli/yazi/theme.nix
Normal file
File diff suppressed because it is too large
Load diff
26
modules/home/programs/cli/zoxide/default.nix
Normal file
26
modules/home/programs/cli/zoxide/default.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.cli.zoxide;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.cli.zoxide = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.zoxide = True // {
|
||||
enableFishIntegration = true;
|
||||
enableZshIntegration = true;
|
||||
options = [ "--cmd cd" ];
|
||||
};
|
||||
};
|
||||
}
|
23
modules/home/programs/custom/anicli/anicli-api.nix
Normal file
23
modules/home/programs/custom/anicli/anicli-api.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ fetchPypi, python3Packages }:
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "anicli_api";
|
||||
version = "0.7.0";
|
||||
pyproject = true;
|
||||
dontCheckRuntimeDeps = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-LwHfxxwXxcUy1HKJfYXusz4wZCTZjQACMWQpYr9t8Vk=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
poetry-core
|
||||
];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
httpx
|
||||
attrs
|
||||
parsel
|
||||
tqdm
|
||||
];
|
||||
}
|
27
modules/home/programs/custom/anicli/anicli-ru.nix
Normal file
27
modules/home/programs/custom/anicli/anicli-ru.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
pkgs,
|
||||
fetchPypi,
|
||||
python3Packages,
|
||||
}:
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "anicli_ru";
|
||||
version = "5.0.12";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-s8uI0ch+SPqthHy+d0jcB6o5/Zqx89JHM68Q00nwCFA=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
hatchling
|
||||
setuptools
|
||||
];
|
||||
|
||||
dependencies = with pkgs; [
|
||||
python3Packages.hatchling
|
||||
(callPackage ./eggella.nix { })
|
||||
(callPackage ./chompjs.nix { })
|
||||
(callPackage ./anicli-api.nix { })
|
||||
];
|
||||
}
|
16
modules/home/programs/custom/anicli/chompjs.nix
Normal file
16
modules/home/programs/custom/anicli/chompjs.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ fetchPypi, python3Packages }:
|
||||
let
|
||||
setup = with python3Packages; [ setuptools ];
|
||||
in
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "chompjs";
|
||||
version = "1.3.0";
|
||||
pyproject = true;
|
||||
build-system = setup;
|
||||
dependencies = setup;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-isCzF1XpOTSPsq8cwBw1fbUMhU+j1QbOeSGPwV8FaGg=";
|
||||
};
|
||||
}
|
23
modules/home/programs/custom/anicli/default.nix
Normal file
23
modules/home/programs/custom/anicli/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.custom.anicli;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.custom.anicli = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ (callPackage ./anicli-ru.nix { }) ];
|
||||
};
|
||||
}
|
22
modules/home/programs/custom/anicli/eggella.nix
Normal file
22
modules/home/programs/custom/anicli/eggella.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ fetchPypi, python3Packages }:
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "eggella";
|
||||
version = "0.1.7";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-8Vo39BePA86wcLKs/F+u2N7tpIpPrEyEPp3POszy050=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
hatchling
|
||||
setuptools
|
||||
];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
prompt-toolkit
|
||||
rich
|
||||
typer
|
||||
];
|
||||
}
|
51
modules/home/programs/gui/floorp/addons.nix
Normal file
51
modules/home/programs/gui/floorp/addons.nix
Normal file
|
@ -0,0 +1,51 @@
|
|||
{ 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;
|
||||
};
|
||||
};
|
||||
}
|
82
modules/home/programs/gui/floorp/default.nix
Normal file
82
modules/home/programs/gui/floorp/default.nix
Normal file
|
@ -0,0 +1,82 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
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 = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
12
modules/home/programs/gui/floorp/settings.nix
Normal file
12
modules/home/programs/gui/floorp/settings.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ x, ... }:
|
||||
with x;
|
||||
{
|
||||
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;
|
||||
};
|
||||
}
|
14
modules/home/programs/gui/floorp/user/chrome.nix
Normal file
14
modules/home/programs/gui/floorp/user/chrome.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{ x, config, ... }:
|
||||
with x;
|
||||
{
|
||||
programs.floorp.profiles.${userName}.userChrome =
|
||||
let
|
||||
font = config.stylix.fonts;
|
||||
in
|
||||
''
|
||||
* {
|
||||
font-family: "${font.monospace.name}" !important;
|
||||
font-size: 12pt !important;
|
||||
}
|
||||
'';
|
||||
}
|
9
modules/home/programs/gui/floorp/user/content.nix
Normal file
9
modules/home/programs/gui/floorp/user/content.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ x, ... }:
|
||||
with x;
|
||||
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";
|
||||
}
|
107
modules/home/programs/gui/floorp/user/tabcenter
Normal file
107
modules/home/programs/gui/floorp/user/tabcenter
Normal file
|
@ -0,0 +1,107 @@
|
|||
: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; }
|
32
modules/home/programs/gui/floorp/user/tcr.nix
Normal file
32
modules/home/programs/gui/floorp/user/tcr.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{ x, ... }:
|
||||
with x;
|
||||
{
|
||||
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;
|
||||
}
|
||||
'';
|
||||
}
|
46
modules/home/programs/gui/minecraft/default.nix
Normal file
46
modules/home/programs/gui/minecraft/default.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.gui.minecraft;
|
||||
jre = with pkgs; [
|
||||
temurin-jre-bin-21
|
||||
temurin-jre-bin-17
|
||||
temurin-jre-bin-8
|
||||
];
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui.minecraft = {
|
||||
enable = mkBool;
|
||||
cli.enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
(mkIf cfg.enable {
|
||||
# BEST MINECRAFT LACUNHER
|
||||
home.packages = with pkgs; [
|
||||
(prismlauncher.override {
|
||||
gamemodeSupport = true;
|
||||
controllerSupport = true;
|
||||
textToSpeechSupport = false;
|
||||
jdks = jre;
|
||||
})
|
||||
];
|
||||
})
|
||||
(mkIf cfg.cli.enable {
|
||||
# CLI LAUNCER
|
||||
home.packages = with pkgs; [
|
||||
portablemc
|
||||
ferium
|
||||
];
|
||||
})
|
||||
];
|
||||
}
|
51
modules/home/programs/gui/mpv/bindings.nix
Normal file
51
modules/home/programs/gui/mpv/bindings.nix
Normal file
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
programs.mpv.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";
|
||||
|
||||
"y" = "script-binding quality_menu/video_formats_toggle";
|
||||
"н" = "script-binding quality_menu/video_formats_toggle";
|
||||
};
|
||||
}
|
64
modules/home/programs/gui/mpv/default.nix
Normal file
64
modules/home/programs/gui/mpv/default.nix
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
inherit (pkgs) mpvScripts;
|
||||
cfg = config.module.programs.gui.mpv;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui.mpv = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.mpv = True // {
|
||||
scripts = with mpvScripts; [
|
||||
(quality-menu.override { oscSupport = true; })
|
||||
sponsorblock-minimal
|
||||
thumbnail
|
||||
];
|
||||
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 =
|
||||
with pkgs;
|
||||
"${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl";
|
||||
};
|
||||
extraInput = with pkgs; ''
|
||||
CTRL+1 no-osd change-list glsl-shaders set "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
|
||||
CTRL+2 no-osd change-list glsl-shaders set "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
|
||||
CTRL+3 no-osd change-list glsl-shaders set "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
|
||||
CTRL+4 no-osd change-list glsl-shaders set "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_Restore_CNN_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
|
||||
CTRL+5 no-osd change-list glsl-shaders set "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_M.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
|
||||
CTRL+6 no-osd change-list glsl-shaders set "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Restore_CNN_M.glsl:${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"
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
30
modules/home/programs/gui/obs/default.nix
Normal file
30
modules/home/programs/gui/obs/default.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.gui.obs;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui.obs = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.obs-studio = True // {
|
||||
package = pkgs.obs-studio;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
wlrobs
|
||||
obs-vkcapture
|
||||
input-overlay
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
22
modules/home/programs/gui/pkgs.nix
Normal file
22
modules/home/programs/gui/pkgs.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.gui;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui = {
|
||||
pkgs = mkOpt.list.pkgs;
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
home.packages = [ ] ++ cfg.pkgs;
|
||||
};
|
||||
}
|
54
modules/home/programs/gui/qbittorrent/default.nix
Normal file
54
modules/home/programs/gui/qbittorrent/default.nix
Normal file
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.gui.qbittorrent;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui.qbittorrent = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
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
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
46
modules/home/programs/gui/qutebrowser/binds.nix
Normal file
46
modules/home/programs/gui/qutebrowser/binds.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{ pkgs, x, ... }:
|
||||
with x;
|
||||
let
|
||||
translate =
|
||||
with pkgs;
|
||||
callPackage (
|
||||
{ pkgs }:
|
||||
stdenv.mkDerivation {
|
||||
name = "qute-translate";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "AckslD";
|
||||
repo = "Qute-Translate";
|
||||
rev = "cd2d201d17bb2d7490700b20d94495327af15e78";
|
||||
sha256 = "sha256-xCbeEAw8a/5/ZD9+aB1J7FxLLBlP65kslGtpYGn3efs=";
|
||||
};
|
||||
installPhase = ''
|
||||
install -Dm555 translate $out/translate
|
||||
'';
|
||||
}
|
||||
) { };
|
||||
in
|
||||
{
|
||||
home.packages = [ translate ];
|
||||
programs.qutebrowser = True // {
|
||||
keyBindings = {
|
||||
normal = {
|
||||
# j/k
|
||||
"e" = "cmd-run-with-count 10 scroll down";
|
||||
"E" = "cmd-run-with-count 10 scroll up";
|
||||
# mpv
|
||||
",m" = "spawn mpv {url}";
|
||||
",M" = "hint links spawn mpv {hint-url}";
|
||||
# qute pass
|
||||
# zz = "${us} qute-pass";
|
||||
# zu = "${us} qute-pass --username-only";
|
||||
# zp = "${us} qute-pass --password-only";
|
||||
# translate
|
||||
",t" = "spawn --userscript ${translate}/translate -s en -t ru";
|
||||
",T" = "hint links userscript ${translate}/translate";
|
||||
};
|
||||
caret = {
|
||||
"t" = "spawn --userscript ${translate}/translate --text -s en -t ru";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
87
modules/home/programs/gui/qutebrowser/default.nix
Normal file
87
modules/home/programs/gui/qutebrowser/default.nix
Normal file
|
@ -0,0 +1,87 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.gui.qutebrowser;
|
||||
frc = lib.mkForce;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui.qutebrowser = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ python312Packages.adblock ];
|
||||
programs.qutebrowser = True // {
|
||||
settings = {
|
||||
downloads.location = {
|
||||
remember = true;
|
||||
};
|
||||
confirm_quit = [ "downloads" ];
|
||||
scrolling = {
|
||||
bar = "overlay";
|
||||
smooth = true;
|
||||
};
|
||||
statusbar = {
|
||||
show = "in-mode";
|
||||
widgets = [
|
||||
"keypress"
|
||||
"search_match"
|
||||
"url"
|
||||
"tabs"
|
||||
"progress"
|
||||
"scroll"
|
||||
];
|
||||
};
|
||||
tabs = {
|
||||
show = "switching";
|
||||
position = "top";
|
||||
tooltips = false;
|
||||
max_width = 250;
|
||||
min_width = 250;
|
||||
show_switching_delay = 500;
|
||||
title = {
|
||||
format = "{index}: {current_title}";
|
||||
format_pinned = "{index}";
|
||||
};
|
||||
};
|
||||
window.hide_decoration = true;
|
||||
colors = with config.lib.stylix.colors.withHashtag; {
|
||||
webpage = {
|
||||
preferred_color_scheme = "dark";
|
||||
# darkmode.enabled = true;
|
||||
};
|
||||
hints = {
|
||||
bg = frc "${base04}";
|
||||
fg = frc "${base00}";
|
||||
};
|
||||
};
|
||||
fonts = with config.stylix.fonts; {
|
||||
default_family = mkForce "${monospace.name}";
|
||||
};
|
||||
content = {
|
||||
blocking.enabled = true;
|
||||
javascript.clipboard = "access";
|
||||
};
|
||||
hints = {
|
||||
scatter = false;
|
||||
chars = "asdfghjkl";
|
||||
};
|
||||
};
|
||||
searchEngines = {
|
||||
DEFAULT = "https://www.google.com/search?hl=en&q={}";
|
||||
nx = "https://wiki.nixos.org/index.php?search={}";
|
||||
g = "https://www.google.com/search?hl=en&q={}";
|
||||
d = "https://duckduckgo.com/?q={}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
57
modules/home/programs/gui/qutebrowser/plugins.nix
Normal file
57
modules/home/programs/gui/qutebrowser/plugins.nix
Normal file
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.qutebrowser.greasemonkey =
|
||||
with config.lib.stylix.colors;
|
||||
let
|
||||
inherit (pkgs) fetchurl writeText;
|
||||
in
|
||||
[
|
||||
(fetchurl {
|
||||
url = "https://raw.githubusercontent.com/afreakk/greasemonkeyscripts/refs/heads/master/youtube_sponsorblock.js";
|
||||
sha256 = "sha256-nwNade1oHP+w5LGUPJSgAX1+nQZli4Rhe8FFUoF5mLE=";
|
||||
})
|
||||
(fetchurl {
|
||||
url = "https://raw.githubusercontent.com/afreakk/greasemonkeyscripts/refs/heads/master/youtube_adblock.js";
|
||||
sha256 = "sha256-AyD9VoLJbKPfqmDEwFIEBMl//EIV/FYnZ1+ona+VU9c=";
|
||||
})
|
||||
(writeText "darkreader.js" ''
|
||||
// ==UserScript==
|
||||
// @name Dark Reader (Unofficial)
|
||||
// @icon https://darkreader.org/images/darkreader-icon-256x256.png
|
||||
// @namespace DarkReader
|
||||
// @description Inverts the brightness of pages to reduce eye strain
|
||||
// @version 4.9.96
|
||||
// @author https://github.com/darkreader/darkreader#contributors
|
||||
// @homepageURL https://darkreader.org/ | https://github.com/darkreader/darkreader
|
||||
// @run-at document-end
|
||||
// @grant none
|
||||
// @include http*
|
||||
// @require https://cdn.jsdelivr.net/npm/darkreader/darkreader.min.js
|
||||
// @noframes
|
||||
// ==/UserScript==
|
||||
|
||||
DarkReader.enable({
|
||||
darkSchemeBackgroundColor: "${base00}",
|
||||
darkSchemeTextColor: "${base05}",
|
||||
brightness: 60,
|
||||
contrast: 80,
|
||||
sepia: 0
|
||||
});
|
||||
'')
|
||||
(writeText "darkmode.user.js" ''
|
||||
// ==UserScript==
|
||||
// @match *://*.google.com/maps/*
|
||||
// @match *://www.youtube.com/*
|
||||
// ==/UserScript==
|
||||
|
||||
const meta = document.createElement('meta');
|
||||
meta.name = "color-scheme";
|
||||
meta.content = "dark light";
|
||||
document.head.appendChild(meta);
|
||||
'')
|
||||
];
|
||||
}
|
28
modules/home/programs/gui/qutebrowser/translate.nix
Normal file
28
modules/home/programs/gui/qutebrowser/translate.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
config =
|
||||
with pkgs;
|
||||
(
|
||||
let
|
||||
qute-translate = callPackage (
|
||||
{ pkgs }:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "qute-translate";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "AckslD";
|
||||
repo = "Qute-Translate";
|
||||
rev = "cd2d201d17bb2d7490700b20d94495327af15e78";
|
||||
sha256 = "sha256-xCbeEAw8a/5/ZD9+aB1J7FxLLBlP65kslGtpYGn3efs=";
|
||||
};
|
||||
|
||||
installPhase = "install -Dm555 translate $out/translate";
|
||||
}
|
||||
) { };
|
||||
in
|
||||
{
|
||||
home.packages = [ qute-translate ];
|
||||
programs.qutebrowser.keyBindings.normal.",t" = "spawn --userscript ${qute-translate}/translate";
|
||||
}
|
||||
);
|
||||
}
|
102
modules/home/programs/gui/spotify/default.nix
Normal file
102
modules/home/programs/gui/spotify/default.nix
Normal file
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
x,
|
||||
inputs,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
inherit (pkgs) system;
|
||||
inherit (spicePkgs) extensions snippets;
|
||||
cfg = config.module.programs.gui.spotify;
|
||||
font = config.stylix.fonts;
|
||||
spicePkgs = inputs.spicetify.legacyPackages.${system};
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui.spotify = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
imports = with inputs; [ spicetify.homeManagerModules.default ];
|
||||
config = mkIf cfg.enable {
|
||||
programs.spicetify = True // {
|
||||
theme = spicePkgs.themes.sleek // {
|
||||
additionalCss = ''
|
||||
*{font-family:"${font.monospace.name}"!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 extensions; [
|
||||
# IMPORTANT
|
||||
fullAppDisplay
|
||||
betterGenres
|
||||
keyboardShortcut
|
||||
|
||||
#COMMUNITY
|
||||
adblockify
|
||||
historyShortcut
|
||||
beautifulLyrics
|
||||
powerBar
|
||||
seekSong
|
||||
history
|
||||
];
|
||||
enabledSnippets = with snippets; [
|
||||
fixLikedButton
|
||||
smoothPlaylistRevealGradient
|
||||
hideFriendActivityButton
|
||||
centeredLyrics
|
||||
pointer
|
||||
removeConnectBar
|
||||
fixedEpisodesIcon
|
||||
fixProgressBar
|
||||
roundedImages
|
||||
fixMainViewWidth
|
||||
fixPlaylistHover
|
||||
hideNowPlayingViewButton
|
||||
fixLikedIcon
|
||||
removeTopSpacing
|
||||
hideFriendsActivityButton
|
||||
hideFullScreenButton
|
||||
hideDownloadButton
|
||||
hideMiniPlayerButton
|
||||
leftAlignedHeartIcons
|
||||
hideSidebarScrollbar
|
||||
betterLyricsStyle
|
||||
queueTopSidePanel
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
202
modules/home/programs/gui/swayimg/default.nix
Normal file
202
modules/home/programs/gui/swayimg/default.nix
Normal file
|
@ -0,0 +1,202 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.gui.swayimg;
|
||||
font = config.stylix.fonts;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui.swayimg = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ swayimg ];
|
||||
xdg.configFile = with config.lib.stylix.colors.withHashtag; {
|
||||
"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 = 400
|
||||
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 = ${font.monospace.name}
|
||||
size = 14
|
||||
color = ${base06}ff
|
||||
shadow = ${base00}a0
|
||||
|
||||
[info]
|
||||
show = yes
|
||||
info_timeout = 1
|
||||
status_timeout = 1
|
||||
|
||||
[info.viewer]
|
||||
top_left = +name,+imagesize
|
||||
top_right = index
|
||||
bottom_left = status
|
||||
bottom_right = scale
|
||||
|
||||
[info.gallery]
|
||||
top_left = none
|
||||
top_right = index
|
||||
bottom_left = none
|
||||
bottom_right = none
|
||||
|
||||
[keys.viewer]
|
||||
# help
|
||||
F1 = help
|
||||
Space = mode
|
||||
Return = mode
|
||||
|
||||
# mv
|
||||
t = exec mv "%" /persist/design/wallpapers; skip_file
|
||||
|
||||
# delete
|
||||
Delete = exec trash put "%"; skip_file # trash
|
||||
Shift+Delete = exec rm "%"; skip_file # delete
|
||||
|
||||
# first/last image
|
||||
Home = first_file
|
||||
g = first_file
|
||||
End = last_file
|
||||
Shift+g = last_file
|
||||
|
||||
# navigate
|
||||
Shift+Space = next_file
|
||||
Next = next_file
|
||||
Prior = prev_file
|
||||
# vi-keys
|
||||
j = next_file
|
||||
k = prev_file
|
||||
|
||||
# zoom
|
||||
0 = zoom real
|
||||
Equal = zoom +10
|
||||
Plus = zoom +10
|
||||
Minus = zoom -10
|
||||
w = zoom width
|
||||
Shift+w = zoom height
|
||||
z = zoom fit
|
||||
Shift+z = zoom fill
|
||||
# vi-keys
|
||||
h = zoom +10
|
||||
l = zoom -10
|
||||
|
||||
# fs
|
||||
|
||||
# navigate in zoom
|
||||
Left = step_left 10
|
||||
Right = step_right 10
|
||||
Up = step_up 10
|
||||
Down = step_down 10
|
||||
|
||||
# rotate
|
||||
bracketleft = rotate_left
|
||||
bracketright = rotate_right
|
||||
|
||||
# flip
|
||||
m = flip_vertical
|
||||
Shift+m = flip_horizontal
|
||||
|
||||
# other
|
||||
f = fullscreen
|
||||
a = antialiasing
|
||||
r = reload
|
||||
i = info
|
||||
q = exit
|
||||
Escape = exit
|
||||
|
||||
# mouse
|
||||
Ctrl+ScrollUp = zoom +10
|
||||
Ctrl+ScrollDown = zoom -10
|
||||
Shift+ScrollUp = prev_file
|
||||
Shift+ScrollDown = next_file
|
||||
|
||||
[keys.gallery]
|
||||
# help
|
||||
F1 = help
|
||||
Space = mode
|
||||
Return = mode
|
||||
|
||||
# mv / copy
|
||||
t = exec mv "%" /persist/design/wallpapers; skip_file
|
||||
|
||||
# first/last image
|
||||
Home = first_file
|
||||
g = first_file
|
||||
End = last_file
|
||||
Shift+g = last_file
|
||||
|
||||
# navigate
|
||||
Left = step_left
|
||||
Right = step_right
|
||||
Up = step_up
|
||||
Down = step_down
|
||||
# vi-keys
|
||||
h = step_left
|
||||
j = step_down
|
||||
k = step_up
|
||||
l = step_right
|
||||
|
||||
# pages
|
||||
Prior = page_up
|
||||
Next = page_down
|
||||
|
||||
# other
|
||||
f = fullscreen
|
||||
a = antialiasing
|
||||
r = reload
|
||||
i = info
|
||||
q = exit
|
||||
Escape = exit
|
||||
|
||||
# delete
|
||||
Delete = exec trash put "%"; skip_file # trash
|
||||
Shift+Delete = exec rm "%"; skip_file # delete
|
||||
|
||||
# mouse
|
||||
ScrollUp = page_up
|
||||
ScrollDown = page_down
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
38
modules/home/programs/gui/zed/default.nix
Normal file
38
modules/home/programs/gui/zed/default.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.programs.gui.zed;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.programs.gui.zed = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.zed-editor = True // {
|
||||
extensions = [
|
||||
"nix"
|
||||
"city-lights"
|
||||
];
|
||||
userSettings = {
|
||||
features = {
|
||||
copilot = false;
|
||||
};
|
||||
telemetry = {
|
||||
metrics = false;
|
||||
};
|
||||
vim_mode = true;
|
||||
ui_font_size = 16;
|
||||
buffer_font_size = 16;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
10
modules/home/shells/abbrs.nix
Normal file
10
modules/home/shells/abbrs.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ x, lib, ... }:
|
||||
with lib;
|
||||
with x;
|
||||
{
|
||||
options = {
|
||||
module.shells = {
|
||||
abbrs = mkOpt.attrs.str;
|
||||
};
|
||||
};
|
||||
}
|
26
modules/home/shells/alias.nix
Normal file
26
modules/home/shells/alias.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.shells.alias;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.shells.alias = {
|
||||
alias = mkOpt.attrs.str;
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
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";
|
||||
};
|
||||
}
|
20
modules/home/shells/bash/default.nix
Normal file
20
modules/home/shells/bash/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.shells.bash;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.shells.bash = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable { programs.bash = False; };
|
||||
}
|
39
modules/home/shells/fish/colors.nix
Normal file
39
modules/home/shells/fish/colors.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{ ... }:
|
||||
{
|
||||
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}
|
||||
'';
|
||||
};
|
||||
}
|
62
modules/home/shells/fish/default.nix
Normal file
62
modules/home/shells/fish/default.nix
Normal file
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.shells.fish;
|
||||
ani = config.module.programs.custom.anicli;
|
||||
abbrs = config.module.shells.abbrs;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.shells.fish = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.fish = True // {
|
||||
package = pkgs.fish;
|
||||
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
|
||||
|
||||
[ "$(tty)" = "/dev/tty1" ] && exec Hyprland # LAUNCH WM
|
||||
'';
|
||||
functions = mkIf ani.enable {
|
||||
aniD = "anicli-ru --search $argv -s dreamcast";
|
||||
aniG = "anicli-ru --search $argv -s animego";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
31
modules/home/shells/fish/plugins.nix
Normal file
31
modules/home/shells/fish/plugins.nix
Normal file
|
@ -0,0 +1,31 @@
|
|||
{ 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;
|
||||
}
|
||||
];
|
||||
}
|
64
modules/home/shells/nushell/default.nix
Normal file
64
modules/home/shells/nushell/default.nix
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.shells.nushell;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.shells.nushell = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
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 = ""
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
87
modules/home/shells/starship.nix
Normal file
87
modules/home/shells/starship.nix
Normal file
|
@ -0,0 +1,87 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.shells.starship;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.shells.starship = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.starship = True // {
|
||||
# enableFishIntegration = false;
|
||||
enableTransience = true;
|
||||
settings = {
|
||||
add_newline = true;
|
||||
right_format = concatStrings [ "$battery" ];
|
||||
format = concatStrings [
|
||||
"$username"
|
||||
"$directory"
|
||||
"$git_branch"
|
||||
"$cmd_duration"
|
||||
"$line_break"
|
||||
"$character"
|
||||
];
|
||||
username = {
|
||||
format = "[$user]($style) in ";
|
||||
style_root = "bold red";
|
||||
style_user = "bold purple";
|
||||
show_always = true;
|
||||
};
|
||||
directory = {
|
||||
format = "[$path]($style) [$read_only]($read_only_style)";
|
||||
style = "bold fg:blue";
|
||||
read_only = "[] ";
|
||||
read_only_style = "bold red";
|
||||
home_symbol = "own home";
|
||||
truncation_length = 1;
|
||||
truncation_symbol = "../";
|
||||
};
|
||||
git_branch = {
|
||||
format = "on [$symbol$branch]($style) ";
|
||||
style = "bold italic fg:green";
|
||||
symbol = " ";
|
||||
truncation_length = 8;
|
||||
truncation_symbol = "";
|
||||
};
|
||||
git_metrics = {
|
||||
format = "[+$added]($added_style)/[-$deleted]($deleted_style) ";
|
||||
added_style = "bold fg:green";
|
||||
deleted_style = "bold fg:red";
|
||||
};
|
||||
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)";
|
||||
};
|
||||
battery = (
|
||||
mkIf (is == "desktop") {
|
||||
format = "[$symbol$percentage]($style)";
|
||||
full_symbol = "";
|
||||
charging_symbol = "";
|
||||
discharging_symbol = "";
|
||||
unknown_symbol = "";
|
||||
empty_symbol = "";
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
35
modules/home/shells/tmux/default.nix
Normal file
35
modules/home/shells/tmux/default.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.shells.tmux;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.shells.tmux = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
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
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
22
modules/home/shells/var.nix
Normal file
22
modules/home/shells/var.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ ... }:
|
||||
{
|
||||
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";
|
||||
};
|
||||
}
|
87
modules/home/shells/zsh/default.nix
Normal file
87
modules/home/shells/zsh/default.nix
Normal file
|
@ -0,0 +1,87 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.shells.zsh;
|
||||
abbrs = config.module.shells.abbrs;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.shells.zsh = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
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}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
49
modules/home/shells/zsh/keymap
Normal file
49
modules/home/shells/zsh/keymap
Normal 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
|
||||
|
67
modules/home/shells/zsh/plugins.nix
Normal file
67
modules/home/shells/zsh/plugins.nix
Normal file
|
@ -0,0 +1,67 @@
|
|||
{ x, pkgs, ... }:
|
||||
with x;
|
||||
{
|
||||
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=";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
47
modules/home/themes/gtk/default.nix
Normal file
47
modules/home/themes/gtk/default.nix
Normal file
|
@ -0,0 +1,47 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.themes.gtk;
|
||||
font = config.stylix.fonts;
|
||||
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 = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
];
|
||||
gtk = True // {
|
||||
gtk3.extraConfig = extra;
|
||||
gtk4.extraConfig = extra;
|
||||
font = mkForce {
|
||||
size = 12;
|
||||
name = "${font.monospace.name}";
|
||||
package = font.monospace.package;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
21
modules/home/themes/qt/color.nix
Normal file
21
modules/home/themes/qt/color.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
xdg.configFile =
|
||||
let
|
||||
mk = {
|
||||
text = with config.lib.stylix.colors; ''
|
||||
[ColorScheme]
|
||||
active_colors=#ff${base05}, #ff${base01}, #ff${base01}, #ff${base05}, #ff${base03}, #ff${base04}, #ff${base05}, #ff${base06}, #ff${base05}, #ff${base01}, #ff${base00}, #ff${base03}, #ff${base02}, #ff${base05}, #ff${base09}, #ff${base08}, #ff${base02}, #ff${base05}, #ff${base01}, #ff${base0E}, #8f${base0E}
|
||||
inactive_colors=#ff${base04}, #ff${base01}, #ff${base01}, #ff${base05}, #ff${base03}, #ff${base04}, #ff${base04}, #ff${base04}, #ff${base04}, #ff${base01}, #ff${base00}, #ff${base03}, #ff${base02}, #ff${base05}, #ff${base09}, #ff${base08}, #ff${base02}, #ff${base05}, #ff${base01}, #ff${base0E}, #8f${base0E}
|
||||
disabled_colors=#ff${base02}, #ff${base01}, #ff${base01}, #ff${base05}, #ff${base03}, #ff${base04}, #ff${base02}, #ff${base0F}, #ff${base0F}, #ff${base01}, #ff${base00}, #ff${base03}, #ff${base02}, #ff${base05}, #ff${base09}, #ff${base08}, #ff${base02}, #ff${base05}, #ff${base01}, #ff${base0F}, #8f${base0F}
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
"qt5ct/colors/stylix.conf" = mk;
|
||||
"qt6ct/colors/stylix.conf" = mk;
|
||||
};
|
||||
}
|
24
modules/home/themes/qt/default.nix
Normal file
24
modules/home/themes/qt/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
x,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.themes.qt;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.themes.qt = {
|
||||
enable = mkBool;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
qt = True // {
|
||||
platformTheme.name = "qtct";
|
||||
};
|
||||
};
|
||||
}
|
55
modules/home/themes/qt/qtct.nix
Normal file
55
modules/home/themes/qt/qtct.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (config.home) homeDirectory;
|
||||
font = config.stylix.fonts;
|
||||
icon = config.stylix.iconTheme;
|
||||
mk =
|
||||
package: name:
|
||||
let
|
||||
st = "${toString package}/share/${name}/qss";
|
||||
in
|
||||
''
|
||||
[Appearance]
|
||||
color_scheme_path=${homeDirectory}/.config/${name}/colors/stylix.conf
|
||||
custom_palette=true
|
||||
icon_theme=${icon.dark}
|
||||
standard_dialogs=default
|
||||
style=Fusion
|
||||
[Fonts]
|
||||
fixed="${font.monospace.name},${toString font.sizes.applications},-1,5,50,0,0,0,0,0,Regular"
|
||||
general="${font.monospace.name},${toString font.sizes.applications},-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=false
|
||||
show_shortcuts_in_context_menus=true
|
||||
stylesheets=@Invalid()
|
||||
toolbutton_style=4
|
||||
underline_shortcut=1
|
||||
wheel_scroll_lines=3
|
||||
stylesheets=${st}/fusion-fixes.qss,${st}/scrollbar-simple.qss,${st}/sliders-simple.qss,${st}/tooltip-simple.qss,${st}/traynotification-simple.qss
|
||||
[Troubleshooting]
|
||||
force_raster_widgets=1
|
||||
ignored_applications=@Invalid()
|
||||
'';
|
||||
in
|
||||
{
|
||||
xdg.configFile =
|
||||
let
|
||||
inherit (pkgs.libsForQt5) qt5ct;
|
||||
inherit (pkgs) qt6ct;
|
||||
in
|
||||
{
|
||||
"qt5ct/qt5ct.conf".text = mk qt5ct "qt5ct";
|
||||
"qt6ct/qt6ct.conf".text = mk qt6ct "qt6ct";
|
||||
};
|
||||
}
|
122
modules/home/themes/stylix/default.nix
Normal file
122
modules/home/themes/stylix/default.nix
Normal file
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
x,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with x;
|
||||
let
|
||||
cfg = config.module.themes.stylix;
|
||||
wal = inputs.design;
|
||||
a = (
|
||||
oldAttrs: {
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
dst_opentype=$out/share/fonts/opentype/NerdFonts
|
||||
dst_truetype=$out/share/fonts/truetype/NerdFonts
|
||||
find -name \*.otf -exec mkdir -p $dst_opentype \; -exec cp -p {} $dst_opentype \;
|
||||
find -name \*.ttf -exec mkdir -p $dst_truetype \; -exec cp -p {} $dst_truetype \;
|
||||
runHook postInstall
|
||||
'';
|
||||
}
|
||||
);
|
||||
in
|
||||
{
|
||||
options = {
|
||||
module.themes.stylix = {
|
||||
enable = mkBool;
|
||||
image = mkOpt.str;
|
||||
icon = mkOpt.str;
|
||||
cursor = {
|
||||
bg = mkOpt.str;
|
||||
ol = mkOpt.str;
|
||||
ac = mkOpt.str;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imports = with inputs; [ stylix.homeManagerModules.stylix ];
|
||||
config = mkIf cfg.enable {
|
||||
home.packages =
|
||||
with pkgs;
|
||||
with nerd-fonts;
|
||||
[
|
||||
corefonts
|
||||
(tinos.overrideAttrs a)
|
||||
(monaspace.overrideAttrs a)
|
||||
(space-mono.overrideAttrs a)
|
||||
(code-new-roman.overrideAttrs a)
|
||||
(dejavu-sans-mono.overrideAttrs a)
|
||||
];
|
||||
stylix = True // {
|
||||
autoEnable = false;
|
||||
base16Scheme = "${wal}/base16/${x.theme}.yaml";
|
||||
image = "${wal}/wallpapers/paradise/${x.image}.jpg";
|
||||
cursor = with inputs.cursors.packages.${pkgs.system}; {
|
||||
size = 16;
|
||||
name = "GoogleDot-Custom";
|
||||
package = google-cursor.override {
|
||||
background_color = cfg.cursor.bg;
|
||||
outline_color = cfg.cursor.ol;
|
||||
accent_color = cfg.cursor.ac;
|
||||
};
|
||||
};
|
||||
iconTheme = True // {
|
||||
dark = "Papirus-Dark";
|
||||
light = "Papirus-Light";
|
||||
package = pkgs.papirus-icon-theme.override { color = cfg.icon; };
|
||||
};
|
||||
fonts = with config.stylix.fonts; {
|
||||
monospace = {
|
||||
name = "JetBrainsMono Nerd Font";
|
||||
package = with pkgs.nerd-fonts; (jetbrains-mono.overrideAttrs a);
|
||||
};
|
||||
serif = monospace;
|
||||
emoji = monospace;
|
||||
sizes = {
|
||||
desktop = 10;
|
||||
popups = 10;
|
||||
applications = 12;
|
||||
terminal = 12;
|
||||
};
|
||||
};
|
||||
targets = {
|
||||
# CLI
|
||||
tmux = True;
|
||||
cava = True // {
|
||||
rainbow = True;
|
||||
};
|
||||
fish = True;
|
||||
nushell = True;
|
||||
# WM
|
||||
hyprland = True // {
|
||||
hyprpaper = True;
|
||||
};
|
||||
hyprpaper = True;
|
||||
sway = True;
|
||||
river = True;
|
||||
# MISC PROGRAMS
|
||||
foot = True;
|
||||
kitty = True;
|
||||
mako = False;
|
||||
rofi = True;
|
||||
bemenu = True;
|
||||
# TOOLS
|
||||
nixvim = True;
|
||||
yazi = True;
|
||||
fzf = True;
|
||||
bat = True;
|
||||
mangohud = True;
|
||||
# GUI
|
||||
spicetify = False;
|
||||
vesktop = True;
|
||||
qutebrowser = True;
|
||||
firefox = True;
|
||||
gtk = True;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
40
modules/home/themes/stylix/image.nix
Normal file
40
modules/home/themes/stylix/image.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{ pkgs, config, ... }:
|
||||
{
|
||||
# THIS MODULE NEED FOR GET AN WALLPAPER
|
||||
# TROUGH LUTGEN WITH YOUR COLORSCHEME
|
||||
stylix = with pkgs; {
|
||||
image =
|
||||
let
|
||||
cfg = config.module.themes.stylix;
|
||||
img = fetchurl {
|
||||
url = cfg.image;
|
||||
sha256 = cfg.hash;
|
||||
};
|
||||
in
|
||||
runCommand "output.png" { } ''
|
||||
${lutgen}/bin/lutgen apply ${img} -o $out -- ${
|
||||
builtins.concatStringsSep " " (
|
||||
with config.lib.stylix.colors;
|
||||
[
|
||||
base00
|
||||
base01
|
||||
base02
|
||||
base03
|
||||
base04
|
||||
base05
|
||||
base06
|
||||
base07
|
||||
base08
|
||||
base09
|
||||
base0A
|
||||
base0B
|
||||
base0C
|
||||
base0D
|
||||
base0E
|
||||
base0F
|
||||
]
|
||||
)
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue