init
This commit is contained in:
commit
a07bd5fd9b
66 changed files with 6115 additions and 0 deletions
83
README.md
Normal file
83
README.md
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
## My NixOS Flake
|
||||||
|
### Philosophy
|
||||||
|
> [!TODO] My philosophy has kinda changed since the beginning
|
||||||
|
|
||||||
|
### Repo Structure
|
||||||
|
Modules are organised into groups (ie "Core"), from here a module is structured as either:
|
||||||
|
1. a single `.nix` file (ie bluetooth.nix). I do this when I won't implement an alternative
|
||||||
|
2. a directory (ie `sound`) containing a set of alternative implementations and a `default.nix`
|
||||||
|
that simply imports one of the implementations. For the `sound` example I currently have it structured
|
||||||
|
to default to `pipewire.nix`. I haven't made alternatives yet but the idea is that it is HIGHLY likely
|
||||||
|
I do in future.
|
||||||
|
|
||||||
|
### Security Considerations
|
||||||
|
###### Hashing
|
||||||
|
For services where password hashing is done infrequently (ie my forgejo instance with signups disabled)
|
||||||
|
use argon2 (argon2id) with default `argon2$2$65536$8$50` (typically). Otherwise bcrypt is preferred.
|
||||||
|
|
||||||
|
### TODO
|
||||||
|
There are a lot of commented `# TODO: ...` items in this repository.
|
||||||
|
All (most) of my commented directives can be found via this pattern:
|
||||||
|
```sh
|
||||||
|
grep -rnE '^\s*(//|#)\s*[A-Z]*:\s*.+$' --exclude-dir=.git 2>/dev/null
|
||||||
|
```
|
||||||
|
|
||||||
|
### Random Explanation of Fonts
|
||||||
|
There are four types of fonts (to my knowledge at least):
|
||||||
|
1. serif (funny squigles / small elegant strokes included)
|
||||||
|
2. sans-serif (meaning "without serifs")
|
||||||
|
3. monospace (all glyphs are of a uniform size)
|
||||||
|
4. emoji (cute lil faces)
|
||||||
|
|
||||||
|
Fun fact: on Android, the emojis you are seeing are part of the noto-emoji font :)
|
||||||
|
|
||||||
|
For finding a font for programming I highly recommend trying https://www.codingfont.com/
|
||||||
|
|
||||||
|
|
||||||
|
### Links
|
||||||
|
#### Inspiration
|
||||||
|
##### Explaining my Vision with r/unixporn posts
|
||||||
|
I want the side panel from https://www.reddit.com/r/unixporn/comments/12wpvyf/hyprland_eww_is_all_i_need/
|
||||||
|
but not the colour scheme and I'm 50/50 on the bar being on th eleft side lol. Also I love the volume bar on the right!
|
||||||
|
|
||||||
|
https://www.reddit.com/r/unixporn/comments/12uy6q6/hyprland_first_time_trying_a_wm_ended_up/
|
||||||
|
I love love love their rofi theme, everything else is eh (except the background switching is cool)
|
||||||
|
|
||||||
|
https://www.reddit.com/r/unixporn/comments/1avnfjn/hyprland_animations_theme_generation_settings/
|
||||||
|
I love their settings apps
|
||||||
|
|
||||||
|
https://www.reddit.com/r/unixporn/comments/u7vgej/desktop_endeavouros_gnome_42/
|
||||||
|
I like to imagine they have the ability to have nothing but apps on their screen (like a do not disturb / focus mode)
|
||||||
|
|
||||||
|
https://www.reddit.com/r/unixporn/comments/xkvmhy/hyprland_dreamy/
|
||||||
|
Their window decorations and bar are great, also being able to hide everything upwards is so cool
|
||||||
|
|
||||||
|
https://www.reddit.com/r/unixporn/comments/vkcasz/i3gaps_i_prefer_light_mode/
|
||||||
|
If their colour scheme was a little less white I'd love it but overall one of my favourites every
|
||||||
|
|
||||||
|
##### Other Inspiring Shtuff
|
||||||
|
1. https://github.com/sabrehagen/desktop-environment
|
||||||
|
|
||||||
|
#### Wallpaper Sources
|
||||||
|
1. https://www.wallpaperflare.com/
|
||||||
|
2. https://alphacoders.com
|
||||||
|
especially this one person: https://alphacoders.com/users/profile/69089/robokoboto
|
||||||
|
and also the lofi category: https://alphacoders.com/lofi
|
||||||
|
|
||||||
|
#### Teach Yourself Nix
|
||||||
|
1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles)
|
||||||
|
Really good security oriented NixOS stuff
|
||||||
|
2. https://jade.fyi/blog/flakes-arent-real/
|
||||||
|
Interesting blog post on using flakes
|
||||||
|
|
||||||
|
#### Credits
|
||||||
|
1. https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles
|
||||||
|
The simplicity of their layout is amazing, was really good to pick out small modules and learn how something works / is configured.
|
||||||
|
2. https://github.com/Misterio77/nix-starter-configs
|
||||||
|
Really great starter config for learning how parts interact and how to generally structure flakes
|
||||||
|
3. https://nixos.wiki/wiki/Fonts
|
||||||
|
Wiki page explaining how to install fonts and nerd fonts on NixOS
|
||||||
|
4. https://github.com/adi1090x/rofi
|
||||||
|
For the Rofi theme
|
||||||
|
5. https://github.com/zDyanTB/HyprNova
|
||||||
|
For the really cool hyprlock theme
|
||||||
1805
flake.lock
generated
Normal file
1805
flake.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
92
flake.nix
Normal file
92
flake.nix
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
{
|
||||||
|
description = "main nixos flake :3";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
systems.url = "github:nix-systems/default";
|
||||||
|
|
||||||
|
# WARNING: don't remove duplicate!! (cry64 will fix)
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-unstable.url = "github:NixOS/nixpkgs/staging-next";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager/master";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
cerulean = {
|
||||||
|
url = "github:emilelcb/Cerulean";
|
||||||
|
inputs = {
|
||||||
|
systems.follows = "systems";
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
nixpkgs-unstable.follows = "nixpkgs-unstable";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cachyos.url = "github:xddxdd/nix-cachyos-kernel";
|
||||||
|
|
||||||
|
nix-alien = {
|
||||||
|
# silly alien :3
|
||||||
|
url = "github:thiagokokada/nix-alien";
|
||||||
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# wm/de/apps/theming flakes
|
||||||
|
hyprland-git = {
|
||||||
|
url = "github:hyprwm/Hyprland/25250527793eb04bb60f103abe7f06370b9f6e1c";
|
||||||
|
#url = "github:hyprwm/Hyprland";
|
||||||
|
};
|
||||||
|
hyprland-plugins = {
|
||||||
|
url = "github:hyprwm/hyprland-plugins";
|
||||||
|
inputs.hyprland.follows = "hyprland-git";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixcats.url = "github:BirdeeHub/nixCats-nvim";
|
||||||
|
awww.url = "git+https://codeberg.org/LGFae/awww";
|
||||||
|
zen.url = "github:0xc000022070/zen-browser-flake";
|
||||||
|
iamb.url = "github:ulyssa/iamb";
|
||||||
|
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
|
||||||
|
nixcord.url = "github:FlameFlag/nixcord";
|
||||||
|
millennium.url = "github:trivaris/millennium?dir=packages/nix";
|
||||||
|
|
||||||
|
# temp theme until i bother creating my own </3
|
||||||
|
sddm-silent = {
|
||||||
|
url = "github:uiriansan/SilentSDDM";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixConfig = {
|
||||||
|
extra-experimental-features = "pipe-operators";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {cerulean, ...} @ inputs:
|
||||||
|
cerulean.mkNexus ./. (self: {
|
||||||
|
nexus = {
|
||||||
|
overlays = with inputs; [
|
||||||
|
cachyos.overlays.pinned
|
||||||
|
millennium.overlays.default
|
||||||
|
|
||||||
|
(import ./overlays.nix)
|
||||||
|
];
|
||||||
|
|
||||||
|
specialArgs = {inherit inputs;};
|
||||||
|
|
||||||
|
extraPkgConfig = {
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraModules = with inputs; [
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
];
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
nixarawrui = {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
extraModules = with inputs; [
|
||||||
|
sddm-silent.nixosModules.default
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
314
homes/aurora/default.nix
Normal file
314
homes/aurora/default.nix
Normal file
|
|
@ -0,0 +1,314 @@
|
||||||
|
# aurora's configgg!! :333homnix
|
||||||
|
# trans <3
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
upkgs,
|
||||||
|
root,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
inputs.zen.homeModules.twilight
|
||||||
|
|
||||||
|
../modules/programs/iamb/iamb.nix
|
||||||
|
../modules/programs/neovim/nixcats.nix
|
||||||
|
../modules/programs/spicetify.nix
|
||||||
|
../modules/programs/yazi/yazi.nix
|
||||||
|
../modules/programs/nixcord.nix
|
||||||
|
|
||||||
|
#../modules/services/keepassxc/keepassxc.nix
|
||||||
|
../modules/services/dunst.nix
|
||||||
|
../modules/services/pulse/pulse.nix
|
||||||
|
|
||||||
|
../modules/shell/zsh.nix
|
||||||
|
../modules/shell/programs.nix
|
||||||
|
../modules/shell/zellij/zellij.nix
|
||||||
|
../modules/shell/fastfetch/fastfetch.nix
|
||||||
|
|
||||||
|
../modules/wm/hyprland/hyprland.nix
|
||||||
|
../modules/wm/river.nix
|
||||||
|
../modules/wm/sway.nix
|
||||||
|
|
||||||
|
../modules/de/waybar/waybar.nix
|
||||||
|
../modules/de/rofi/rofi.nix
|
||||||
|
../modules/de/hyprlock/hyprlock.nix
|
||||||
|
../modules/de/awww.nix
|
||||||
|
|
||||||
|
../modules/themeing/wallust/wallust.nix
|
||||||
|
#../modules/themeing/hellwal/hellwal.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
# xdg session variables
|
||||||
|
XDG_CACHE_HOME = "$HOME/.cache";
|
||||||
|
XDG_CONFIG_HOME = "$HOME/.config";
|
||||||
|
XDG_DATA_HOME = "$HOME/.local/share";
|
||||||
|
XDG_STATE_HOME = "$HOME/.local/state";
|
||||||
|
XDG_BIN_HOME = "$HOME/.local/bin"; # not official spec
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionPath = [
|
||||||
|
"$XDG_BIN_HOME"
|
||||||
|
];
|
||||||
|
|
||||||
|
# consider not using this as its not really the nix way
|
||||||
|
# the way i should be doing this is with nix derivations
|
||||||
|
#
|
||||||
|
# copy user scripts to .local/bin
|
||||||
|
home.file.".local/bin" = {
|
||||||
|
source = root + "/homes/modules/scripts";
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
home.file.".mozilla/native-messaging-hosts/tridactyl.json".source = "${pkgs.tridactyl-native}/lib/mozilla/native-messaging-hosts/tridactyl.json";
|
||||||
|
|
||||||
|
# some packages are enabled from their own module in ./modules
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gcr # provides org.gnome.keyring.SystemPrompter
|
||||||
|
dix # nix diff
|
||||||
|
|
||||||
|
# fonts
|
||||||
|
nerd-fonts.departure-mono # pretty pixel art font i love!! x3
|
||||||
|
|
||||||
|
# cli / tui tools and commands!
|
||||||
|
eza # replaces: ls (rust)
|
||||||
|
fzf # fuzzy finder
|
||||||
|
bat # replaces: cat (rust)
|
||||||
|
tokei # counts lines of code
|
||||||
|
starship # shell prompt :3
|
||||||
|
bacon # background rust code checker (can also use mprocs)
|
||||||
|
mprocs # tui tool to run multiple commands in parallel and show outputs :3
|
||||||
|
speedtest-rs # speedtest.net in rust!
|
||||||
|
ripgrep # rlly fast grep :3
|
||||||
|
zip # zips .zip
|
||||||
|
unzip # unzips .zip
|
||||||
|
(btop.override {rocmSupport = true;}) # btop + amd gpu support
|
||||||
|
nmap # network discovery and mapping tool!
|
||||||
|
distrobox # use any linux distro inside ur terminal x3
|
||||||
|
parted # create, resize, copy, image partitions
|
||||||
|
popsicle # usb flasher (can be used as a gui tool too :3)
|
||||||
|
caligula # disk burning tool like popsicle!
|
||||||
|
exiftool # display and edit metadata on a variety of files
|
||||||
|
helix # like neovim but rust /hj :333
|
||||||
|
halloy # irc tui app written in rust
|
||||||
|
|
||||||
|
# cli fun
|
||||||
|
pokeget-rs # prints a random pokemon to the terminal :3
|
||||||
|
pipes # pipes program <3
|
||||||
|
|
||||||
|
# dev
|
||||||
|
gnumake
|
||||||
|
gcc
|
||||||
|
cmake
|
||||||
|
glib
|
||||||
|
glibc
|
||||||
|
pkg-config
|
||||||
|
gobject-introspection
|
||||||
|
rustup
|
||||||
|
zig
|
||||||
|
elixir
|
||||||
|
gleam
|
||||||
|
delta # git diff viewer
|
||||||
|
|
||||||
|
# apps
|
||||||
|
qutebrowser # keyboard-focused browser (chromium)
|
||||||
|
firefox # (firefox)
|
||||||
|
tridactyl-native # for firefox browsers
|
||||||
|
chromium # (chromium)
|
||||||
|
obsidian # literally best notes app (i use vim mode)
|
||||||
|
kdePackages.dolphin
|
||||||
|
qimgv # image viewer!
|
||||||
|
feh # other image viewer! (im indecisive)
|
||||||
|
vesktop # modded discord client!
|
||||||
|
gimp # open source image manipulation program
|
||||||
|
krita # open source painting application!
|
||||||
|
imhex # hex editor
|
||||||
|
kicad # open source electronics design program
|
||||||
|
easyeda2kicad
|
||||||
|
libreoffice-qt # word, excel, pdf etc open source programs
|
||||||
|
hunspell # spell checker
|
||||||
|
calibre # ebook reader
|
||||||
|
obs-studio
|
||||||
|
cytoscape
|
||||||
|
element-desktop # 'official' gui matrix client
|
||||||
|
blender # AMAZING 3D MODELLING PROGRAMMM <3
|
||||||
|
session-desktop # idk silly chat app
|
||||||
|
|
||||||
|
# media
|
||||||
|
playerctl # mpris cli interface for media apps :3
|
||||||
|
qpwgraph
|
||||||
|
qbittorrent
|
||||||
|
syncplay # syncs media players
|
||||||
|
|
||||||
|
# games
|
||||||
|
r2modman # mod manager for lots of games!!
|
||||||
|
prismlauncher # minecraft launcher
|
||||||
|
bottles # wineprefix manager
|
||||||
|
|
||||||
|
# vr
|
||||||
|
sidequest # app store for sideloading onto vr headsets
|
||||||
|
slimevr # I LOVE MY SLIMES THEY ARE SO COOL x3333333333
|
||||||
|
slimevr-server # silly slimes!!!! <3
|
||||||
|
|
||||||
|
# gui settings apps
|
||||||
|
nwg-look # gtk 2 / 3 settings thing idc i hate gtk
|
||||||
|
pavucontrol # i wanna get rid of this but its audio control thing
|
||||||
|
rquickshare # android quick share (this is pretty cool!!)
|
||||||
|
|
||||||
|
# wayland desktop tools / de / wm stuff / gui stuffs
|
||||||
|
cliphist
|
||||||
|
wl-clipboard
|
||||||
|
wl-clip-persist
|
||||||
|
grim # screenshot tool!!
|
||||||
|
slurp # used to crop the screenshots!!
|
||||||
|
swappy # screenshot edit tool (also there is: satty, flameshot)
|
||||||
|
hyprpicker # color picker!!!
|
||||||
|
hyprcursor # hyprland cursor util
|
||||||
|
wtype # can emulate keybinds
|
||||||
|
wlrctl # can emulate mouse stuff
|
||||||
|
mpvpaper # can use videos as wallpapers :3
|
||||||
|
|
||||||
|
# misc
|
||||||
|
kdePackages.qtwayland
|
||||||
|
kdePackages.qtsvg
|
||||||
|
adwaita-icon-theme
|
||||||
|
libadwaita
|
||||||
|
gnome-themes-extra
|
||||||
|
arch-install-scripts
|
||||||
|
xcur2png
|
||||||
|
alsa-utils
|
||||||
|
gphoto2 # for my dslr!!!
|
||||||
|
ffmpeg
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
gpg.enable = true;
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user = {
|
||||||
|
name = "aurora";
|
||||||
|
email = "aurora@example.com";
|
||||||
|
};
|
||||||
|
gpg.program = "gpg2";
|
||||||
|
|
||||||
|
# delta diff viewer
|
||||||
|
core.pager = "delta";
|
||||||
|
interactive.diffFilter = "delta --color-only";
|
||||||
|
delta = {
|
||||||
|
navigate = true;
|
||||||
|
line-numbers = true;
|
||||||
|
side-by-side = true;
|
||||||
|
};
|
||||||
|
merge.conflictStyle = "zdiff3";
|
||||||
|
};
|
||||||
|
|
||||||
|
includes = [
|
||||||
|
{
|
||||||
|
condition = "hasconfig:remote.*.url:git@github.com:*/**";
|
||||||
|
contents = {
|
||||||
|
user = {
|
||||||
|
name = "auroraveon";
|
||||||
|
email = "78045343+auroraveon@users.noreply.github.com";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
condition = "hasconfig:remote.*.url:https://github.com/**";
|
||||||
|
contents = {
|
||||||
|
user = {
|
||||||
|
name = "auroraveon";
|
||||||
|
email = "78045343+auroraveon@users.noreply.github.com";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
condition = "hasconfig:remote.*.url:ssh://git@codeberg.org/**";
|
||||||
|
contents = {
|
||||||
|
user = {
|
||||||
|
name = "foxxyora";
|
||||||
|
email = "foxxyora@noreply.codeberg.org";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
condition = "hasconfig:remote.*.url:https://codeberg.org/**";
|
||||||
|
contents = {
|
||||||
|
user = {
|
||||||
|
name = "foxxyora";
|
||||||
|
email = "foxxyora@noreply.codeberg.org";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
condition = "hasconfig:remote.*.url:ssh://forgejo@forge.dobutterfliescry.net:2222/**";
|
||||||
|
contents = {
|
||||||
|
user = {
|
||||||
|
name = "foxora";
|
||||||
|
email = "foxora@noreply.forge.dobutterfliescry.net";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
condition = "hasconfig:remote.*.url:https://forge.dobutterfliescry.net/**";
|
||||||
|
contents = {
|
||||||
|
user = {
|
||||||
|
name = "foxora";
|
||||||
|
email = "foxora@noreply.forge.dobutterfliescry.net";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
kitty = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.kitty;
|
||||||
|
|
||||||
|
font = {
|
||||||
|
name = "DepartureMono Nerd Font Mono";
|
||||||
|
size = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
scrollback_lines = 16384;
|
||||||
|
enable_audio_bell = false;
|
||||||
|
update_check_interval = 0;
|
||||||
|
allow_remote_control = "yes"; # used for scripts to control kitty
|
||||||
|
|
||||||
|
confirm_os_window_close = 0; # disable close window prompt
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
include ~/.config/kitty/theme.conf
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
zen-browser = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.zen.packages."${pkgs.stdenv.hostPlatform.system}".twilight;
|
||||||
|
};
|
||||||
|
|
||||||
|
mpv = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
profile = "gpu-hq";
|
||||||
|
loop-file = "inf";
|
||||||
|
target-colorspace-hint = "no"; # stops mpv from turning hdr on when fullscreened
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Environment / Session Variables
|
||||||
|
home = {
|
||||||
|
sessionVariables = {
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# The state version is required and should stay the version you originally installed
|
||||||
|
home.stateVersion = "24.11";
|
||||||
|
}
|
||||||
10
homes/modules/de/awww.nix
Normal file
10
homes/modules/de/awww.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
{ config, inputs, lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(inputs.awww.packages.${pkgs.stdenv.hostPlatform.system}.awww.overrideAttrs (old: {
|
||||||
|
cargoBuildFlags = [ "--features=avif" ];
|
||||||
|
buildInputs = (old.buildInputs or []) ++ [ pkgs.dav1d ];
|
||||||
|
nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ pkgs.pkg-config ];
|
||||||
|
}))
|
||||||
|
];
|
||||||
|
}
|
||||||
20
homes/modules/de/hyprlock/hypr/theme.conf
Normal file
20
homes/modules/de/hyprlock/hypr/theme.conf
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
|
||||||
|
placeholder_text = Password...
|
||||||
|
|
||||||
|
size = 180, 42
|
||||||
|
position = 0, 80
|
||||||
|
outline_thickness = 2
|
||||||
|
#shadow_passes = 2
|
||||||
|
|
||||||
|
font_color = rgb($colorfg)
|
||||||
|
inner_color = rgb($colorbg)
|
||||||
|
outer_color = rgb($color11)
|
||||||
|
|
||||||
|
font_family = DepartureMono Nerd Font
|
||||||
|
|
||||||
|
dots_center = true
|
||||||
|
fade_on_empty = false
|
||||||
|
}
|
||||||
|
|
||||||
41
homes/modules/de/hyprlock/hyprlock.nix
Normal file
41
homes/modules/de/hyprlock/hyprlock.nix
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
{ config, inputs, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# load the theme colors
|
||||||
|
extraConfig = ''
|
||||||
|
source = ./colors.conf
|
||||||
|
source = ./hyprlock/theme.conf
|
||||||
|
'';
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
disable_loading_bar = true;
|
||||||
|
hide_cursor = true;
|
||||||
|
immediate_render = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
|
||||||
|
path = "screenshot";
|
||||||
|
blur_passes = 3;
|
||||||
|
blur_size = 4;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# extra hyprlock config for organisation
|
||||||
|
# writes ./hypr to ~/.config/hypr/hyprlock
|
||||||
|
xdg.configFile."hypr/hyprlock" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ./hypr;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
17
homes/modules/de/rofi/rofi.nix
Normal file
17
homes/modules/de/rofi/rofi.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{ config, inputs, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
font = "DepartureMono Nerd Font Mono 10";
|
||||||
|
theme = ./theme.rasi;
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
#kb-row-up = "Up,Control+k";
|
||||||
|
#kb-row-down = "Down,Control+j";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
0
homes/modules/de/rofi/theme.rasi
Normal file
0
homes/modules/de/rofi/theme.rasi
Normal file
165
homes/modules/de/waybar/style.css
Normal file
165
homes/modules/de/waybar/style.css
Normal file
|
|
@ -0,0 +1,165 @@
|
||||||
|
@import "./colors.css";
|
||||||
|
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family: 'DepartureMono Nerd Font';
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
min-height: 10px;
|
||||||
|
}
|
||||||
|
window#waybar {
|
||||||
|
background: rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
adds a margin around the edge of the taskbar, surrounding the modules,
|
||||||
|
spacing it out from the edge of the screen and windows below
|
||||||
|
*/
|
||||||
|
window#waybar > box {
|
||||||
|
margin: 0px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background: @colorbg;
|
||||||
|
color: @colorfg;
|
||||||
|
opacity: 0.9;
|
||||||
|
padding: 4px;
|
||||||
|
border-radius: 12px;
|
||||||
|
border: 1px solid @color01;
|
||||||
|
}
|
||||||
|
tooltip label {
|
||||||
|
background: rgba(0, 0, 0, 0);
|
||||||
|
color: @colorfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#memory,
|
||||||
|
#network,
|
||||||
|
#workspaces,
|
||||||
|
#taskbar,
|
||||||
|
#cpu,
|
||||||
|
#pulseaudio,
|
||||||
|
#privacy,
|
||||||
|
#tray,
|
||||||
|
#custom-media {
|
||||||
|
background: @colorbg;
|
||||||
|
color: @colorfg;
|
||||||
|
opacity: 0.9;
|
||||||
|
padding: 4px 16px;
|
||||||
|
border-radius: 32px;
|
||||||
|
border: 1px solid @color01;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
left-side modules
|
||||||
|
*/
|
||||||
|
#workspaces,
|
||||||
|
#taskbar,
|
||||||
|
#custom-media {
|
||||||
|
margin: 4px 4px 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
center modules
|
||||||
|
*/
|
||||||
|
#clock {
|
||||||
|
margin: 4px 0px 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
right-side modules
|
||||||
|
*/
|
||||||
|
#memory,
|
||||||
|
#network,
|
||||||
|
#cpu,
|
||||||
|
#pulseaudio,
|
||||||
|
#tray,
|
||||||
|
#privacy {
|
||||||
|
margin: 4px 0px 4px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces,
|
||||||
|
#taskbar {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar.empty {
|
||||||
|
opacity: 0;
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
#tray.empty {
|
||||||
|
opacity: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
connects the workspace and taskbar together :3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
#workspaces {
|
||||||
|
margin: 4px 0px 4px 12px;
|
||||||
|
padding: 0px 8px 0px 0px;
|
||||||
|
border-radius: 100px 0px 0px 100px;
|
||||||
|
border-width: 1px 0px 1px 1px;
|
||||||
|
}
|
||||||
|
#taskbar {
|
||||||
|
margin: 4px 0px 4px 0px;
|
||||||
|
padding: 0px 0px 0px 8px;
|
||||||
|
border-radius: 0px 100px 100px 0px;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#cpu {
|
||||||
|
margin: 4px 0 4px 0;
|
||||||
|
border-radius: 32px 0px 0px 32px;
|
||||||
|
}
|
||||||
|
#memory {
|
||||||
|
margin: 4px 0 4px 0;
|
||||||
|
border-radius: 0px;
|
||||||
|
border-width: 1px 0px 1px 0px;
|
||||||
|
}
|
||||||
|
#network {
|
||||||
|
margin: 4px 0 4px 0;
|
||||||
|
border-radius: 0px 32px 32px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-radius: 32px;
|
||||||
|
color: @colorfg;
|
||||||
|
}
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: @colorfg;
|
||||||
|
color: @colorbg;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
#workspaces button.active {
|
||||||
|
background: @colorfg;
|
||||||
|
color: @colorbg;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button {
|
||||||
|
padding: 2px 4px;
|
||||||
|
border-radius: 32px;
|
||||||
|
color: @colorfg;
|
||||||
|
}
|
||||||
|
#taskbar button:hover {
|
||||||
|
background: @colorfg;
|
||||||
|
color: @colorbg;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
#taskbar button.active {
|
||||||
|
background: @colorfg;
|
||||||
|
color: @colorbg;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
icons in each button on the taskbar to correct
|
||||||
|
for them not being properly centred sometimes :3
|
||||||
|
*/
|
||||||
|
#taskbar button box image {
|
||||||
|
padding-left: 2px;
|
||||||
|
}
|
||||||
104
homes/modules/de/waybar/waybar.nix
Normal file
104
homes/modules/de/waybar/waybar.nix
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
{ config, inputs, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
height = 20;
|
||||||
|
modules-left = [ "hyprland/workspaces" "wlr/taskbar" "custom/media" ];
|
||||||
|
modules-center = [ "clock" ];
|
||||||
|
modules-right = [ "cpu" "memory" "network" "pulseaudio" "privacy" "tray" ];
|
||||||
|
|
||||||
|
# left
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
format = "{id}";
|
||||||
|
};
|
||||||
|
"wlr/taskbar" = {
|
||||||
|
format = "{icon}";
|
||||||
|
icon-size = 12;
|
||||||
|
};
|
||||||
|
"custom/media" = {
|
||||||
|
exec = "auroramedia";
|
||||||
|
return-type = "json";
|
||||||
|
escape = true;
|
||||||
|
restart-interval = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
# center
|
||||||
|
"clock" = {
|
||||||
|
format = "{:%Y %b %a %d %H:%M:%S}";
|
||||||
|
interval = 1;
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# right
|
||||||
|
"cpu" = {
|
||||||
|
format = " {usage}%";
|
||||||
|
interval = 1;
|
||||||
|
};
|
||||||
|
"memory" = {
|
||||||
|
format = " {used:0.1f} / {total:0.1f} GiB";
|
||||||
|
interval = 1;
|
||||||
|
};
|
||||||
|
"network" = {
|
||||||
|
format = "{bandwidthUpBytes} {bandwidthDownBytes} {ifname}";
|
||||||
|
format-wifi = " {bandwidthUpBytes} {bandwidthDownBytes} ";
|
||||||
|
format-ethernet = " {bandwidthUpBytes} {bandwidthDownBytes} ";
|
||||||
|
format-disconnected = "no internet ~ rawr! ~ x3"; # empty format hides module
|
||||||
|
interval = 1;
|
||||||
|
max-length = 32;
|
||||||
|
};
|
||||||
|
"pulseaudio" = {
|
||||||
|
format = "{icon} {volume}%";
|
||||||
|
format-muted = " {volume}%";
|
||||||
|
format-icons = {
|
||||||
|
default = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"scroll-step" = 5;
|
||||||
|
};
|
||||||
|
"privacy" = {
|
||||||
|
icon-size = 12;
|
||||||
|
icon-spacing = 5;
|
||||||
|
transition-duration = 200;
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
type = "screenshare";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-icon-size = 12;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "audio-in";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-icon-size = 12;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"tray" = {
|
||||||
|
icon-size = 12;
|
||||||
|
spacing = 10;
|
||||||
|
# fixes spotify not showing up when "close button should minimize the Spotify window" is false
|
||||||
|
show-passive-items = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# i only enable this for debugging of window rules lol
|
||||||
|
"hyprland/window" = {
|
||||||
|
format = "{class} | {title}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
style = pkgs.writeTextFile {
|
||||||
|
name = "waybar-style.css";
|
||||||
|
text = builtins.readFile ./style.css;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
10
homes/modules/programs/iamb/config.toml
Normal file
10
homes/modules/programs/iamb/config.toml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
[profiles.auroraveon-matrix]
|
||||||
|
user_id = "@auroraveon:matrix.org"
|
||||||
|
url = "https://matrix.org"
|
||||||
|
|
||||||
|
[settings.notifications]
|
||||||
|
enabled = true
|
||||||
|
show_message = false
|
||||||
|
|
||||||
|
[image_preview]
|
||||||
|
protocol.type = "kitty"
|
||||||
13
homes/modules/programs/iamb/iamb.nix
Normal file
13
homes/modules/programs/iamb/iamb.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{ config, inputs, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
inputs.iamb.packages."${stdenv.hostPlatform.system}".default
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile."iamb/config.toml" = {
|
||||||
|
source = ./config.toml;
|
||||||
|
};
|
||||||
|
}
|
||||||
69
homes/modules/programs/neovim/init.lua
Normal file
69
homes/modules/programs/neovim/init.lua
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
vim.opt.termguicolors = true -- use terminal colors
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.wrap = false
|
||||||
|
vim.opt.colorcolumn = "80"
|
||||||
|
|
||||||
|
require("plugins")
|
||||||
|
require("lsp")
|
||||||
|
|
||||||
|
local uv = vim.loop
|
||||||
|
local colorscheme_filepath = "/home/aurora/.cache/nvim/neovim-colors"
|
||||||
|
local colors = {}
|
||||||
|
|
||||||
|
-- function to load colors
|
||||||
|
local function load_colors()
|
||||||
|
local new_colors = {}
|
||||||
|
for line in io.lines(colorscheme_filepath) do
|
||||||
|
table.insert(new_colors, line)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ensure the table has enough entries to avoid indexing issues
|
||||||
|
if #new_colors >= 18 then
|
||||||
|
colors = new_colors
|
||||||
|
require('base16-colorscheme').setup({
|
||||||
|
base00 = colors[17], base01 = colors[1], base02 = colors[3], base03 = colors[3],
|
||||||
|
base04 = colors[5], base05 = colors[8], base06 = colors[5], base07 = colors[8],
|
||||||
|
base08 = colors[18], base09 = colors[4], base0A = colors[11], base0B = colors[5],
|
||||||
|
base0C = colors[6], base0D = colors[7], base0E = colors[6], base0F = colors[16],
|
||||||
|
})
|
||||||
|
|
||||||
|
-- set colors for blink.cmp's completion menu
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpMenu', { bg = colors[17] })
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpMenuBorder', { bg = colors[17], fg = colors[13] })
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpMenuSelection', { bg = colors[15], fg = colors[17] })
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpScrollBarThumb', { bg = colors[18] })
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpKind', { bg = colors[17], fg = colors[14] })
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpLabel', { bg = colors[17], fg = colors[18] })
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpLabelMatch', { bg = colors[17], fg = colors[18] })
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpLabelDetail', { bg = colors[17], fg = colors[18] })
|
||||||
|
vim.api.nvim_set_hl(0, 'BlinkCmpLabelDescription', { bg = colors[17], fg = colors[18] })
|
||||||
|
else
|
||||||
|
print("Error: Not enough colors in file")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- initial load
|
||||||
|
load_colors()
|
||||||
|
|
||||||
|
-- vim.defer_fn(load_colors, 1)
|
||||||
|
|
||||||
|
-- set up a file watcher
|
||||||
|
local function watch_colorscheme()
|
||||||
|
local handle
|
||||||
|
handle = uv.new_fs_event()
|
||||||
|
if handle then
|
||||||
|
uv.fs_event_start(handle, colorscheme_filepath, {}, function(err, _, _)
|
||||||
|
if err then
|
||||||
|
print("Error watching colorscheme file:", err)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- debounce by adding a slight delay before reloading
|
||||||
|
vim.defer_fn(load_colors, 100)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
watch_colorscheme()
|
||||||
|
|
||||||
59
homes/modules/programs/neovim/lua/lsp/capabilities.lua
Normal file
59
homes/modules/programs/neovim/lua/lsp/capabilities.lua
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.on_attach(_, bufnr)
|
||||||
|
-- we create a function that lets us more easily define mappings specific
|
||||||
|
-- for LSP related items. It sets the mode, buffer and description for us each time.
|
||||||
|
|
||||||
|
local nmap = function(keys, func, desc)
|
||||||
|
if desc then
|
||||||
|
desc = 'LSP: ' .. desc
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
|
||||||
|
end
|
||||||
|
|
||||||
|
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
|
||||||
|
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
|
||||||
|
|
||||||
|
nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
|
||||||
|
|
||||||
|
-- NOTE: why are these functions that call the telescope builtin?
|
||||||
|
-- because otherwise they would load telescope eagerly when this is defined.
|
||||||
|
-- due to us using the on_require handler to make sure it is available.
|
||||||
|
if nixCats('general.telescope') then
|
||||||
|
nmap('gr', function() require('telescope.builtin').lsp_references() end, '[G]oto [R]eferences')
|
||||||
|
nmap('gI', function() require('telescope.builtin').lsp_implementations() end, '[G]oto [I]mplementation')
|
||||||
|
nmap('<leader>ds', function() require('telescope.builtin').lsp_document_symbols() end, '[D]ocument [S]ymbols')
|
||||||
|
nmap('<leader>ws', function() require('telescope.builtin').lsp_dynamic_workspace_symbols() end, '[W]orkspace [S]ymbols')
|
||||||
|
nmap('<leader>dd', "<cmd>Telescope diagnostics bufnr=0<CR>", '[D]ocument [D]iagnostics')
|
||||||
|
nmap('<leader>wd', "<cmd>Telescope diagnostics<CR>", '[W]orkspace [D]iagnostics')
|
||||||
|
end -- TODO: someone who knows the builtin versions of these to do instead help me out please.
|
||||||
|
|
||||||
|
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
|
||||||
|
nmap('<leader>e', vim.diagnostic.open_float, 'Show [E]rror')
|
||||||
|
|
||||||
|
-- See `:help K` for why this keymap
|
||||||
|
nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
|
||||||
|
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
|
||||||
|
|
||||||
|
-- Lesser used LSP functionality
|
||||||
|
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
||||||
|
nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
|
||||||
|
nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
|
||||||
|
nmap('<leader>wl', function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end, '[W]orkspace [L]ist Folders')
|
||||||
|
|
||||||
|
-- Create a command `:Format` local to the LSP buffer
|
||||||
|
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
||||||
|
vim.lsp.buf.format()
|
||||||
|
end, { desc = 'Format current buffer with LSP' })
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.get(server_name)
|
||||||
|
local capabilities = require('blink.cmp').get_lsp_capabilities()
|
||||||
|
|
||||||
|
return capabilities
|
||||||
|
end
|
||||||
|
return M
|
||||||
88
homes/modules/programs/neovim/lua/lsp/completion.lua
Normal file
88
homes/modules/programs/neovim/lua/lsp/completion.lua
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"friendly-snippets",
|
||||||
|
dep_of = { "blink.cmp" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"blink.cmp",
|
||||||
|
event = { "InsertEnter", "CmdlineEnter" },
|
||||||
|
on_require = "blink",
|
||||||
|
load = function (name)
|
||||||
|
vim.cmd.packadd(name)
|
||||||
|
end,
|
||||||
|
after = function(plugin)
|
||||||
|
local blink = require('blink.cmp')
|
||||||
|
|
||||||
|
blink.setup({
|
||||||
|
keymap = {
|
||||||
|
preset = 'default',
|
||||||
|
},
|
||||||
|
|
||||||
|
appearance = {
|
||||||
|
nerd_font_variant = 'mono',
|
||||||
|
},
|
||||||
|
|
||||||
|
sources = {
|
||||||
|
default = { 'lsp', 'path', 'snippets', 'buffer' },
|
||||||
|
providers = {
|
||||||
|
lsp = {
|
||||||
|
name = 'LSP',
|
||||||
|
module = 'blink.cmp.sources.lsp',
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
path = {
|
||||||
|
name = 'Path',
|
||||||
|
module = 'blink.cmp.sources.path',
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
snippets = {
|
||||||
|
name = 'Snippets',
|
||||||
|
module = 'blink.cmp.sources.snippets',
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
buffer = {
|
||||||
|
name = 'Buffer',
|
||||||
|
module = 'blink.cmp.sources.buffer',
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
completion = {
|
||||||
|
accept = {
|
||||||
|
auto_brackets = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
menu = {
|
||||||
|
border = 'rounded',
|
||||||
|
max_height = 12,
|
||||||
|
scrolloff = 2,
|
||||||
|
|
||||||
|
draw = {
|
||||||
|
columns = {
|
||||||
|
{ "kind_icon", gap = 1, },
|
||||||
|
{ "label", "label_description", gap = 1, },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
documentation = {
|
||||||
|
auto_show = false,
|
||||||
|
window = {
|
||||||
|
border = 'rounded',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
signature = {
|
||||||
|
enabled = true,
|
||||||
|
window = {
|
||||||
|
border = 'rounded',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
},
|
||||||
|
}
|
||||||
203
homes/modules/programs/neovim/lua/lsp/completion.lua.old
Normal file
203
homes/modules/programs/neovim/lua/lsp/completion.lua.old
Normal file
|
|
@ -0,0 +1,203 @@
|
||||||
|
---packadd + after/plugin
|
||||||
|
---@type fun(names: string[]|string)
|
||||||
|
local load_w_after_plugin = require('nixCatsUtils.lzUtils').make_load_with_after({ "plugin" })
|
||||||
|
|
||||||
|
-- NOTE: packadd doesnt load after directories.
|
||||||
|
-- hence, the above function that you can get from luaUtils that exists to make that easy.
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"cmp-buffer",
|
||||||
|
on_plugin = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmp-cmdline",
|
||||||
|
on_plugin = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmp-cmdline-history",
|
||||||
|
on_plugin = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmp-nvim-lsp",
|
||||||
|
on_plugin = { "nvim-cmp" },
|
||||||
|
dep_of = { "nvim-lspconfig" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmp-nvim-lsp-signature-help",
|
||||||
|
on_plugin = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmp-nvim-lua",
|
||||||
|
on_plugin = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmp-path",
|
||||||
|
on_plugin = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmp_luasnip",
|
||||||
|
on_plugin = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"friendly-snippets",
|
||||||
|
dep_of = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lspkind.nvim",
|
||||||
|
dep_of = { "nvim-cmp" },
|
||||||
|
load = load_w_after_plugin,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"luasnip",
|
||||||
|
dep_of = { "nvim-cmp" },
|
||||||
|
after = function (plugin)
|
||||||
|
local luasnip = require 'luasnip'
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
luasnip.config.setup {}
|
||||||
|
|
||||||
|
local ls = require('luasnip')
|
||||||
|
|
||||||
|
vim.keymap.set({ "i", "s" }, "<M-n>", function()
|
||||||
|
if ls.choice_active() then
|
||||||
|
ls.change_choice(1)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nvim-cmp",
|
||||||
|
-- cmd = { "" },
|
||||||
|
event = { "DeferredUIEnter" },
|
||||||
|
on_require = { "cmp" },
|
||||||
|
-- ft = "",
|
||||||
|
-- keys = "",
|
||||||
|
-- colorscheme = "",
|
||||||
|
after = function (plugin)
|
||||||
|
-- [[ Configure nvim-cmp ]]
|
||||||
|
-- See `:help cmp`
|
||||||
|
local cmp = require 'cmp'
|
||||||
|
local luasnip = require 'luasnip'
|
||||||
|
local lspkind = require 'lspkind'
|
||||||
|
|
||||||
|
cmp.setup {
|
||||||
|
formatting = {
|
||||||
|
format = lspkind.cmp_format {
|
||||||
|
mode = 'text',
|
||||||
|
with_text = true,
|
||||||
|
maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
|
||||||
|
ellipsis_char = '...', -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
|
||||||
|
|
||||||
|
menu = {
|
||||||
|
buffer = '[BUF]',
|
||||||
|
nvim_lsp = '[LSP]',
|
||||||
|
nvim_lsp_signature_help = '[LSP]',
|
||||||
|
nvim_lsp_document_symbol = '[LSP]',
|
||||||
|
nvim_lua = '[API]',
|
||||||
|
path = '[PATH]',
|
||||||
|
luasnip = '[SNIP]',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert {
|
||||||
|
['<C-p>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-n>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
['<C-Space>'] = cmp.mapping.complete {},
|
||||||
|
['<CR>'] = cmp.mapping.confirm {
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = true,
|
||||||
|
},
|
||||||
|
['<Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expand_or_locally_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.locally_jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
},
|
||||||
|
|
||||||
|
sources = cmp.config.sources {
|
||||||
|
-- The insertion order influences the priority of the sources
|
||||||
|
{ name = 'nvim_lsp'--[[ , keyword_length = 3 ]] },
|
||||||
|
{ name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]},
|
||||||
|
{ name = 'path' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{ name = 'buffer' },
|
||||||
|
},
|
||||||
|
enabled = function()
|
||||||
|
return vim.bo[0].buftype ~= 'prompt'
|
||||||
|
end,
|
||||||
|
experimental = {
|
||||||
|
native_menu = false,
|
||||||
|
ghost_text = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
cmp.setup.filetype('lua', {
|
||||||
|
sources = cmp.config.sources {
|
||||||
|
{ name = 'nvim_lua' },
|
||||||
|
{ name = 'nvim_lsp'--[[ , keyword_length = 3 ]]},
|
||||||
|
{ name = 'nvim_lsp_signature_help'--[[ , keyword_length = 3 ]]},
|
||||||
|
{ name = 'path' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{ name = 'buffer' },
|
||||||
|
},{
|
||||||
|
{
|
||||||
|
name = 'cmdline',
|
||||||
|
option = {
|
||||||
|
ignore_cmds = { 'Man', '!' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline({ '/', '?' }, {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = {
|
||||||
|
{ name = 'nvim_lsp_document_symbol'--[[ , keyword_length = 3 ]]},
|
||||||
|
{ name = 'buffer' },
|
||||||
|
{ name = 'cmdline_history' },
|
||||||
|
},
|
||||||
|
view = {
|
||||||
|
entries = { name = 'wildmenu', separator = '|' },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline(':', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources {
|
||||||
|
{ name = 'cmdline' },
|
||||||
|
-- { name = 'cmdline_history' },
|
||||||
|
{ name = 'path' },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
5
homes/modules/programs/neovim/lua/lsp/init.lua
Normal file
5
homes/modules/programs/neovim/lua/lsp/init.lua
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
require("lze").load {
|
||||||
|
{ import = "lsp.completion", },
|
||||||
|
}
|
||||||
|
|
||||||
|
require("lsp.lsp")
|
||||||
123
homes/modules/programs/neovim/lua/lsp/lsp.lua
Normal file
123
homes/modules/programs/neovim/lua/lsp/lsp.lua
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
local servers = {}
|
||||||
|
|
||||||
|
servers.lua_ls = {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
formatters = {
|
||||||
|
ignoreComments = false,
|
||||||
|
},
|
||||||
|
signatureHelp = { enable = true },
|
||||||
|
diagnostics = {
|
||||||
|
globals = { 'nixCats', 'vim' },
|
||||||
|
-- disable = { 'missing-fields' },
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
-- make the server aware of the neovim runtime files
|
||||||
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
|
checkThirdParty = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
telemetry = { enabled = false },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local rust_analyzer_cmd = os.getenv("RUST_ANALYZER_CMD")
|
||||||
|
servers.rust_analyzer = {
|
||||||
|
cmd = { rust_analyzer_cmd },
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
-- For debugging rust-analyzer, to see log location do :LspInfo in neovim
|
||||||
|
-- extraEnv = { {["RA_LOG"]="project_model=debug"} },
|
||||||
|
},
|
||||||
|
cargo = {
|
||||||
|
allFeatures = false,
|
||||||
|
allTargets = false,
|
||||||
|
buildScripts = { enable = true },
|
||||||
|
target = "x86_64-unknown-linux-gnu",
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
servers.zls = {
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
local elixir_ls_cmd = os.getenv("ELIXIR_LS_CMD")
|
||||||
|
servers.elixirls = {
|
||||||
|
cmd = { elixir_ls_cmd },
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
servers.gleam = {
|
||||||
|
settings = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
local java_home = os.getenv("JAVA_HOME")
|
||||||
|
servers.jdtls = {
|
||||||
|
settings = {
|
||||||
|
java = {
|
||||||
|
contentProvider = { preferred = 'fernflower' },
|
||||||
|
configuration = {
|
||||||
|
runtimes = {
|
||||||
|
{
|
||||||
|
name = "OpenJDK 17",
|
||||||
|
path = os.getenv("OPENJDK_17"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "OpenJDK 21",
|
||||||
|
path = os.getenv("OPENJDK_21"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Taken from nixCats example:
|
||||||
|
-- If you were to comment out this autocommand
|
||||||
|
-- and instead pass the on attach function directly to
|
||||||
|
-- nvim-lspconfig, it would do the same thing.
|
||||||
|
-- come to think of it, it might be better because then lspconfig doesnt have to be called before lsp attach?
|
||||||
|
-- but you would still end up triggering on a FileType event anyway, so, it makes little difference.
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
group = vim.api.nvim_create_augroup('nixCats-lsp-attach', { clear = true }),
|
||||||
|
callback = function(event)
|
||||||
|
require('lsp.capabilities').on_attach(vim.lsp.get_client_by_id(event.data.client_id), event.buf)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
require("lze").load {
|
||||||
|
{
|
||||||
|
"nvim-lspconfig",
|
||||||
|
event = "FileType",
|
||||||
|
after = function(plugin)
|
||||||
|
-- Just register configs, don't enable yet
|
||||||
|
for server_name, cfg in pairs(servers) do
|
||||||
|
vim.lsp.config(server_name, {
|
||||||
|
capabilities = require('lsp.capabilities').get(server_name),
|
||||||
|
settings = (cfg or {}).settings,
|
||||||
|
filetypes = (cfg or {}).filetypes,
|
||||||
|
cmd = (cfg or {}).cmd,
|
||||||
|
root_pattern = (cfg or {}).root_pattern,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Enable on-demand per filetype
|
||||||
|
for server_name, cfg in pairs(servers) do
|
||||||
|
local filetypes = cfg.filetypes or vim.lsp.config[server_name].filetypes
|
||||||
|
if filetypes then
|
||||||
|
vim.api.nvim_create_autocmd('FileType', {
|
||||||
|
pattern = filetypes,
|
||||||
|
callback = function()
|
||||||
|
vim.lsp.enable(server_name)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
135
homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua
Normal file
135
homes/modules/programs/neovim/lua/nixCatsUtils/lzUtils.lua
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
--[[
|
||||||
|
This directory is the luaUtils template.
|
||||||
|
You can choose what things from it that you would like to use.
|
||||||
|
And then delete the rest.
|
||||||
|
Everything in this directory is optional.
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
-- NOTE: This file contains 2 utilities for making good use of lze and lz.n with nixCats
|
||||||
|
-- The function for loading after directories is useful for both plugins, and also for lazy loading without a plugin,
|
||||||
|
-- but the custom handler will only work with lze.
|
||||||
|
-- If you dont use these plugins, you probably don't need this file.
|
||||||
|
|
||||||
|
---This function is useful for sourcing the after directories of lazily loaded plugins
|
||||||
|
---because vim.cmd.packadd does not do this for you.
|
||||||
|
---
|
||||||
|
---This might be useful when doing lazy loading the vanilla way
|
||||||
|
---as well as when using plugins like lz.n for lazy loading
|
||||||
|
---It is primarily useful for lazily loading nvim-cmp sources,
|
||||||
|
---as they often rely on the after directory to work
|
||||||
|
---
|
||||||
|
---Recieves the names of directories from a plugin's after directory
|
||||||
|
---that you wish to source files from.
|
||||||
|
---Will return a load function that can take a name, or list of names,
|
||||||
|
---and will load a plugin and its after directories.
|
||||||
|
---The function returned is a suitable substitute for the load field of a plugin spec.
|
||||||
|
---
|
||||||
|
---Only makes sense for plugins added via optionalPlugins
|
||||||
|
---or some other opt directory on your packpath
|
||||||
|
---
|
||||||
|
---e.g. in the following example:
|
||||||
|
---load_with_after_plugin will load the plugin names it is given, and their after/plugin dir
|
||||||
|
---
|
||||||
|
---local load_with_after_plugin = require('nixCatsUtils').make_load_with_after({ 'plugin' })
|
||||||
|
---load_with_after_plugin('some_plugin')
|
||||||
|
---@overload fun(dirs: string[]|string): fun(names: string|string[])
|
||||||
|
---It also optionally recieves a function that should load a plugin and return its path
|
||||||
|
---for if the plugin is not on the packpath, or return nil
|
||||||
|
---to load from the packpath or nixCats list as normal
|
||||||
|
---@overload fun(dirs: string[]|string, load: fun(name: string):string|nil): fun(names: string|string[])
|
||||||
|
function M.make_load_with_after(dirs, load)
|
||||||
|
dirs = (type(dirs) == "table" and dirs) or { dirs }
|
||||||
|
local fromPackpath = function(name)
|
||||||
|
for _, packpath in ipairs(vim.opt.packpath:get()) do
|
||||||
|
local plugin_path = vim.fn.globpath(packpath, "pack/*/opt/" .. name, nil, true, true)
|
||||||
|
if plugin_path[1] then
|
||||||
|
return plugin_path[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
---@param plugin_names string[]|string
|
||||||
|
return function(plugin_names)
|
||||||
|
local names = type(plugin_names) == "table" and plugin_names or { plugin_names }
|
||||||
|
local to_source = {}
|
||||||
|
for _, name in ipairs(names) do
|
||||||
|
if type(name) == "string" then
|
||||||
|
local path = (type(load) == "function" and load(name)) or nil
|
||||||
|
if type(path) == "string" then
|
||||||
|
table.insert(to_source, { name = name, path = path })
|
||||||
|
else
|
||||||
|
local ok, err = pcall(vim.cmd.packadd, name)
|
||||||
|
if ok then
|
||||||
|
table.insert(to_source, { name = name, path = nil })
|
||||||
|
else
|
||||||
|
vim.notify(
|
||||||
|
'"packadd '
|
||||||
|
.. name
|
||||||
|
.. '" failed, and path provided by custom load function (if provided) was not a string\n'
|
||||||
|
.. err,
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "nixCatsUtils.load_with_after" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
vim.notify(
|
||||||
|
"plugin name was not a string and was instead of value:\n" .. vim.inspect(name),
|
||||||
|
vim.log.levels.WARN,
|
||||||
|
{ title = "nixCatsUtils.load_with_after" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for _, info in pairs(to_source) do
|
||||||
|
local plugpath = info.path or vim.tbl_get(package.loaded, "nixCats", "pawsible", "allPlugins", "opt", info.name) or fromPackpath(info.name)
|
||||||
|
if type(plugpath) == "string" then
|
||||||
|
local afterpath = plugpath .. "/after"
|
||||||
|
for _, dir in ipairs(dirs) do
|
||||||
|
if vim.fn.isdirectory(afterpath) == 1 then
|
||||||
|
local plugin_dir = afterpath .. "/" .. dir
|
||||||
|
if vim.fn.isdirectory(plugin_dir) == 1 then
|
||||||
|
local files = vim.fn.glob(plugin_dir .. "/*", false, true)
|
||||||
|
for _, file in ipairs(files) do
|
||||||
|
if vim.fn.filereadable(file) == 1 then
|
||||||
|
vim.cmd("source " .. file)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- A nixCats specific lze handler that you can use to conditionally enable by category easier.
|
||||||
|
-- at the start of your config, register with
|
||||||
|
-- require('lze').register_handlers(require('nixCatsUtils.lzUtils').for_cat)
|
||||||
|
-- before any calls to require('lze').load using the handler have been made.
|
||||||
|
-- accepts:
|
||||||
|
-- for_cat = { "your" "cat" }; for_cat = { cat = { "your" "cat" }, default = bool }
|
||||||
|
-- for_cat = "your.cat"; for_cat = { cat = "your.cat", default = bool }
|
||||||
|
-- where default is an alternate value for when nixCats was NOT used to install the config
|
||||||
|
M.for_cat = {
|
||||||
|
spec_field = "for_cat",
|
||||||
|
set_lazy = false,
|
||||||
|
modify = function(plugin)
|
||||||
|
if type(plugin.for_cat) == "table" then
|
||||||
|
if plugin.for_cat.cat ~= nil then
|
||||||
|
if vim.g[ [[nixCats-special-rtp-entry-nixCats]] ] ~= nil then
|
||||||
|
plugin.enabled = (nixCats(plugin.for_cat.cat) and true) or false
|
||||||
|
else
|
||||||
|
plugin.enabled = nixCats(plugin.for_cat.default)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
plugin.enabled = (nixCats(plugin.for_cat) and true) or false
|
||||||
|
end
|
||||||
|
else
|
||||||
|
plugin.enabled = (nixCats(plugin.for_cat) and true) or false
|
||||||
|
end
|
||||||
|
return plugin
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
return M
|
||||||
5
homes/modules/programs/neovim/lua/plugins/dressing.lua
Normal file
5
homes/modules/programs/neovim/lua/plugins/dressing.lua
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"dressing.nvim"
|
||||||
|
},
|
||||||
|
}
|
||||||
15
homes/modules/programs/neovim/lua/plugins/fyler.lua
Normal file
15
homes/modules/programs/neovim/lua/plugins/fyler.lua
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"fyler.nvim",
|
||||||
|
cmd = { "Fyler" },
|
||||||
|
keys = {
|
||||||
|
{ "<leader>tf", function() return require('fyler').toggle({ kind = "split_right" }) end, mode = {"n"}, desc = 'Open [F]yler' },
|
||||||
|
},
|
||||||
|
load = function (name)
|
||||||
|
vim.cmd.packadd(name)
|
||||||
|
end,
|
||||||
|
after = function(plugin)
|
||||||
|
local fyler = require("fyler").setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
8
homes/modules/programs/neovim/lua/plugins/init.lua
Normal file
8
homes/modules/programs/neovim/lua/plugins/init.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
require("lze").load {
|
||||||
|
{ import = "plugins.dressing", },
|
||||||
|
{ import = "plugins.telescope", },
|
||||||
|
{ import = "plugins.treesitter", },
|
||||||
|
{ import = "plugins.fyler", },
|
||||||
|
{ import = "plugins.mini-hipatterns", },
|
||||||
|
--{ import = "plugins.neocord", },
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"mini.hipatterns",
|
||||||
|
after = function(plugin)
|
||||||
|
local hipatterns = require("mini.hipatterns")
|
||||||
|
|
||||||
|
-- Returns hex color group for matching short hex color.
|
||||||
|
--
|
||||||
|
---@param match string
|
||||||
|
---@return string
|
||||||
|
local hex_color_short = function(_, match)
|
||||||
|
local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg'
|
||||||
|
local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4)
|
||||||
|
local hex = string.format('#%s%s%s%s%s%s', r, r, g, g, b, b)
|
||||||
|
return hipatterns.compute_hex_color_group(hex, style)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Returns hex color group for matching alpha hex color.
|
||||||
|
--
|
||||||
|
---@param match string
|
||||||
|
---@return string
|
||||||
|
local hex_color_alpha = function(_, match)
|
||||||
|
local style = 'fg' -- 'fg' or 'bg', for extmark_opts_inline use 'fg'
|
||||||
|
local r, g, b = match:sub(2, 3), match:sub(4, 5), match:sub(6, 7)
|
||||||
|
local hex = string.format('#%s%s%s', r, g, b)
|
||||||
|
return hipatterns.compute_hex_color_group(hex, style)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Returns extmark opts for highlights with virtual inline text.
|
||||||
|
--
|
||||||
|
---@param data table Includes `hl_group`, `full_match` and more.
|
||||||
|
---@return table
|
||||||
|
local extmark_opts_inline = function(_, _, data)
|
||||||
|
return {
|
||||||
|
virt_text = { { '', data.hl_group } },
|
||||||
|
virt_text_pos = 'inline',
|
||||||
|
right_gravity = false,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Returns extmark opts for highlights with virtual inline text.
|
||||||
|
--
|
||||||
|
---@param data table Includes `hl_group`, `full_match` and more.
|
||||||
|
---@return table
|
||||||
|
local extmark_opts_inline_alpha = function(_, _, data)
|
||||||
|
return {
|
||||||
|
virt_text = { { '', data.hl_group } },
|
||||||
|
virt_text_pos = 'inline',
|
||||||
|
right_gravity = false,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
hipatterns.setup({
|
||||||
|
highlighters = {
|
||||||
|
-- #rrggbb
|
||||||
|
hex_color = hipatterns.gen_highlighter.hex_color({
|
||||||
|
style = "inline",
|
||||||
|
inline_text = '',
|
||||||
|
}),
|
||||||
|
-- #rgb
|
||||||
|
hex_color_short = {
|
||||||
|
pattern = "#%x%x%x%f[%X]",
|
||||||
|
group = hex_color_short,
|
||||||
|
extmark_opts = extmark_opts_inline,
|
||||||
|
},
|
||||||
|
-- #rrggbbaa
|
||||||
|
hex_color_alpha = {
|
||||||
|
pattern = "#%x%x%x%x%x%x%x%x%f[%X]",
|
||||||
|
group = hex_color_alpha,
|
||||||
|
extmark_opts = extmark_opts_inline_alpha,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
5
homes/modules/programs/neovim/lua/plugins/neocord.lua
Normal file
5
homes/modules/programs/neovim/lua/plugins/neocord.lua
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"neocord",
|
||||||
|
},
|
||||||
|
}
|
||||||
36
homes/modules/programs/neovim/lua/plugins/telescope.lua
Normal file
36
homes/modules/programs/neovim/lua/plugins/telescope.lua
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"telescope.nvim",
|
||||||
|
cmd = { "Telescope" },
|
||||||
|
keys = {
|
||||||
|
{ "<leader>f", function() return require('telescope.builtin').find_files() end, mode = {"n"}, desc = 'Telescope search [F]iles' },
|
||||||
|
{ "<leader>tr", function() return require('telescope.builtin').oldfiles() end, mode = {"n"}, desc = '[T]elescope search [R]ecent files' },
|
||||||
|
{ "<leader>ts", function() return require('telescope.builtin').live_grep() end, mode = {"n"}, desc = '[T]elescope [S]earch cwd with grep' },
|
||||||
|
{ "<leader>tw", function() return require('telescope.builtin').grep_string() end, mode = {"n"}, desc = '[T]elescope search current [W]ord' },
|
||||||
|
{ "<leader>tk", function() return require('telescope.builtin').keymaps() end, mode = {"n"}, desc = '[T]elescope search [K]eymaps' },
|
||||||
|
{ "<leader>tb", function() return require('telescope.builtin').buffers() end, mode = {"n"}, desc = '[T]elescope search [B]uffers' },
|
||||||
|
},
|
||||||
|
load = function (name)
|
||||||
|
vim.cmd.packadd(name)
|
||||||
|
vim.cmd.packadd("telescope-fzf-native.nvim")
|
||||||
|
end,
|
||||||
|
after = function(plugin)
|
||||||
|
local telescope = require("telescope")
|
||||||
|
local actions = require("telescope.actions")
|
||||||
|
|
||||||
|
telescope.setup {
|
||||||
|
defaults = {
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
["<C-k>"] = actions.move_selection_previous, -- move to prev result
|
||||||
|
["<C-j>"] = actions.move_selection_next, -- move to next result
|
||||||
|
["<C-q>"] = actions.send_selected_to_qflist + actions.open_qflist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pcall(telescope.load_extension, "fzf")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
95
homes/modules/programs/neovim/lua/plugins/treesitter.lua
Normal file
95
homes/modules/programs/neovim/lua/plugins/treesitter.lua
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
-- to help me write this after nvim-treesitter updated, i used:
|
||||||
|
-- https://github.com/BirdeeHub/nixCats-nvim/blob/3c9bc4d7123e1b48d92f25ba505b889af541e897/templates/example/lua/myLuaConf/plugins/treesitter.lua
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"nvim-treesitter",
|
||||||
|
lazy = false,
|
||||||
|
after = function (plugin)
|
||||||
|
--@param buf integer
|
||||||
|
--@param language string
|
||||||
|
local function treesitter_try_attach(buf, language)
|
||||||
|
--check if parser exists and load it
|
||||||
|
if not vim.treesitter.language.add(language) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- enables syntax highlight and other treesitter features
|
||||||
|
vim.treesitter.start(buf, language)
|
||||||
|
|
||||||
|
-- enables treesitter based folds
|
||||||
|
vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||||
|
|
||||||
|
-- enables treesiter based indentation
|
||||||
|
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
|
||||||
|
end
|
||||||
|
|
||||||
|
local available_parsers = require("nvim-treesitter").get_available()
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
callback = function(args)
|
||||||
|
local buf, filetype = args.buf, args.match
|
||||||
|
local language = vim.treesitter.language.get_lang(filetype)
|
||||||
|
if not language then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local installed_parsers = require("nvim-treesitter").get_installed("parsers")
|
||||||
|
|
||||||
|
if vim.tbl_contains(installed_parsers, language) then
|
||||||
|
-- enable the parser if it is installed
|
||||||
|
treesitter_try_attach(buf, language)
|
||||||
|
elseif vim.tbl_contains(available_parsers, language) then
|
||||||
|
-- if a parser is available in `nvim-treesitter` enable it after ensuring it is installed
|
||||||
|
require("nvim-treesitter").install(language):await(function()
|
||||||
|
treesitter_try_attach(buf, language)
|
||||||
|
end)
|
||||||
|
else
|
||||||
|
-- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter`
|
||||||
|
treesitter_try_attach(buf, language)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nvim-treesitter-textobjects",
|
||||||
|
lazy = false,
|
||||||
|
before = function(plugin)
|
||||||
|
vim.g.no_plugin_maps = true
|
||||||
|
end,
|
||||||
|
after = function(plugin)
|
||||||
|
require("nvim-treesitter-textobjects").setup {
|
||||||
|
select = {
|
||||||
|
lookahead = true,
|
||||||
|
selection_modes = {
|
||||||
|
['@parameter.outer'] = 'v', -- charwise
|
||||||
|
['@function.outer'] = 'V', -- linewise
|
||||||
|
},
|
||||||
|
include_surrounding_whitespace = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- keymaps
|
||||||
|
vim.keymap.set({ "x", "o" }, "am", function()
|
||||||
|
require "nvim-treesitter-textobjects.select".select_textobject("@function.outer", "textobjects")
|
||||||
|
end)
|
||||||
|
vim.keymap.set({ "x", "o" }, "im", function()
|
||||||
|
require "nvim-treesitter-textobjects.select".select_textobject("@function.inner", "textobjects")
|
||||||
|
end)
|
||||||
|
vim.keymap.set({ "x", "o" }, "ac", function()
|
||||||
|
require "nvim-treesitter-textobjects.select".select_textobject("@class.outer", "textobjects")
|
||||||
|
end)
|
||||||
|
vim.keymap.set({ "x", "o" }, "ic", function()
|
||||||
|
require "nvim-treesitter-textobjects.select".select_textobject("@class.inner", "textobjects")
|
||||||
|
end)
|
||||||
|
-- You can also use captures from other query groups like `locals.scm`
|
||||||
|
vim.keymap.set({ "x", "o" }, "as", function()
|
||||||
|
require "nvim-treesitter-textobjects.select".select_textobject("@local.scope", "locals")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- NOTE: for more textobjects options, see the following link.
|
||||||
|
-- This template is using the new `main` branch of the repo.
|
||||||
|
-- https://github.com/nvim-treesitter/nvim-treesitter-textobjects/tree/main
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
213
homes/modules/programs/neovim/nixcats.nix
Normal file
213
homes/modules/programs/neovim/nixcats.nix
Normal file
|
|
@ -0,0 +1,213 @@
|
||||||
|
{ config, lib, inputs, upkgs, ... }: let
|
||||||
|
utils = inputs.nixcats.utils;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
inputs.nixcats.homeModule
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
# this value, nixCats is the defaultPackageName you pass to mkNixosModules
|
||||||
|
# it will be the namespace for your options.
|
||||||
|
nixCats = {
|
||||||
|
enable = true;
|
||||||
|
nixpkgs_version = inputs.nixpkgs;
|
||||||
|
# this will add the overlays from ./overlays and also,
|
||||||
|
# add any plugins in inputs named "plugins-pluginName" to pkgs.neovimPlugins
|
||||||
|
# It will not apply to overall system, just nixCats.
|
||||||
|
addOverlays = /* (import ./overlays inputs) ++ */ [
|
||||||
|
(utils.standardPluginOverlay inputs)
|
||||||
|
];
|
||||||
|
# see the packageDefinitions below.
|
||||||
|
# This says which of those to install.
|
||||||
|
packageNames = [ "auroranvim" ];
|
||||||
|
|
||||||
|
luaPath = "${./.}";
|
||||||
|
|
||||||
|
# the .replace vs .merge options are for modules based on existing configurations,
|
||||||
|
# they refer to how multiple categoryDefinitions get merged together by the module.
|
||||||
|
# for useage of this section, refer to :h nixCats.flake.outputs.categories
|
||||||
|
categoryDefinitions.replace = ({ pkgs, settings, categories, extra, name, mkNvimPlugin, ... }@packageDef: {
|
||||||
|
lspsAndRuntimeDeps = {
|
||||||
|
general = with pkgs; [
|
||||||
|
ripgrep
|
||||||
|
fd
|
||||||
|
];
|
||||||
|
treesitter = with pkgs; [
|
||||||
|
tree-sitter
|
||||||
|
];
|
||||||
|
lang = with pkgs; {
|
||||||
|
lua = [
|
||||||
|
lua-language-server
|
||||||
|
];
|
||||||
|
nix = [
|
||||||
|
nil
|
||||||
|
nix-doc
|
||||||
|
];
|
||||||
|
rust = with pkgs; [
|
||||||
|
cargo
|
||||||
|
rust-analyzer
|
||||||
|
];
|
||||||
|
zig = with pkgs; [
|
||||||
|
upkgs.zls # FIX: using upkgs version as zls is broken rn ;-;
|
||||||
|
];
|
||||||
|
elixir = with pkgs; [
|
||||||
|
elixir-ls
|
||||||
|
];
|
||||||
|
gleam = with pkgs; [
|
||||||
|
gleam
|
||||||
|
];
|
||||||
|
java = with pkgs; [
|
||||||
|
jdt-language-server
|
||||||
|
javaPackages.compiler.openjdk17
|
||||||
|
javaPackages.compiler.openjdk21
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
startupPlugins = {
|
||||||
|
general = with pkgs.vimPlugins; [
|
||||||
|
lze
|
||||||
|
plenary-nvim
|
||||||
|
nvim-notify
|
||||||
|
nvim-web-devicons
|
||||||
|
base16-nvim
|
||||||
|
mini-nvim
|
||||||
|
];
|
||||||
|
treesitter = with pkgs.vimPlugins; [
|
||||||
|
nvim-treesitter-textobjects
|
||||||
|
nvim-treesitter.withAllGrammars
|
||||||
|
];
|
||||||
|
};
|
||||||
|
optionalPlugins = {
|
||||||
|
general = with pkgs.vimPlugins; [
|
||||||
|
];
|
||||||
|
ui = with pkgs.vimPlugins; [
|
||||||
|
dressing-nvim
|
||||||
|
];
|
||||||
|
qol = with pkgs.vimPlugins; [
|
||||||
|
undotree
|
||||||
|
mini-hipatterns
|
||||||
|
];
|
||||||
|
telescope = with pkgs.vimPlugins; [
|
||||||
|
telescope-nvim
|
||||||
|
telescope-fzf-native-nvim
|
||||||
|
telescope-ui-select-nvim
|
||||||
|
];
|
||||||
|
fyler = with pkgs.vimPlugins; [
|
||||||
|
fyler-nvim
|
||||||
|
];
|
||||||
|
lsp = with pkgs.vimPlugins; [
|
||||||
|
nvim-lspconfig
|
||||||
|
];
|
||||||
|
completion = with pkgs.vimPlugins; [
|
||||||
|
blink-cmp
|
||||||
|
nvim-cmp
|
||||||
|
luasnip
|
||||||
|
friendly-snippets
|
||||||
|
cmp_luasnip
|
||||||
|
cmp-buffer
|
||||||
|
cmp-path
|
||||||
|
cmp-nvim-lua
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp-cmdline
|
||||||
|
cmp-nvim-lsp-signature-help
|
||||||
|
cmp-cmdline-history
|
||||||
|
lspkind-nvim
|
||||||
|
];
|
||||||
|
lang = with pkgs.vimPlugins; {
|
||||||
|
java = [
|
||||||
|
nvim-jdtls
|
||||||
|
];
|
||||||
|
};
|
||||||
|
discord = with pkgs.vimPlugins; [
|
||||||
|
neocord # discord presence plugin :3
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# shared libraries to be added to LD_LIBRARY_PATH
|
||||||
|
# variable available to nvim runtime
|
||||||
|
sharedLibraries = {
|
||||||
|
general = with pkgs; [
|
||||||
|
# libgit2
|
||||||
|
];
|
||||||
|
};
|
||||||
|
environmentVariables = {
|
||||||
|
lang = {
|
||||||
|
rust = {
|
||||||
|
# it literally won't see the rust-analyzer provided to it
|
||||||
|
# if you don't use an envrionment variable to tell it
|
||||||
|
RUST_ANALYZER_CMD = "${pkgs.rust-analyzer}/bin/rust-analyzer";
|
||||||
|
};
|
||||||
|
elixir = {
|
||||||
|
ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh";
|
||||||
|
};
|
||||||
|
java = {
|
||||||
|
JAVA_HOME = "${pkgs.javaPackages.compiler.openjdk17}";
|
||||||
|
OPENJDK_17 = "${pkgs.javaPackages.compiler.openjdk17}";
|
||||||
|
OPENJDK_21 = "${pkgs.javaPackages.compiler.openjdk21}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraWrapperArgs = {
|
||||||
|
test = [
|
||||||
|
'' --set CATTESTVAR2 "It worked again!"''
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# lists of the functions you would have passed to
|
||||||
|
# python.withPackages or lua.withPackages
|
||||||
|
|
||||||
|
# get the path to this python environment
|
||||||
|
# in your lua config via
|
||||||
|
# vim.g.python3_host_prog
|
||||||
|
# or run from nvim terminal via :!<packagename>-python3
|
||||||
|
extraPython3Packages = {
|
||||||
|
test = (_:[]);
|
||||||
|
};
|
||||||
|
# populates $LUA_PATH and $LUA_CPATH
|
||||||
|
extraLuaPackages = {
|
||||||
|
test = [ (_:[]) ];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
# see :help nixCats.flake.outputs.packageDefinitions
|
||||||
|
packageDefinitions.replace = {
|
||||||
|
# these are the names of your packages
|
||||||
|
# you can include as many as you wish.
|
||||||
|
auroranvim = {pkgs , ... }: {
|
||||||
|
# they contain a settings set defined above
|
||||||
|
# see :help nixCats.flake.outputs.settings
|
||||||
|
settings = {
|
||||||
|
wrapRc = true;
|
||||||
|
# IMPORTANT:
|
||||||
|
# your alias may not conflict with your other packages.
|
||||||
|
aliases = [ "auroravim" "auravim" "foxyvim" "avix" "fvix" "auim" ];
|
||||||
|
};
|
||||||
|
# and a set of categories that you want
|
||||||
|
# (and other information to pass to lua)
|
||||||
|
categories = {
|
||||||
|
general = true;
|
||||||
|
|
||||||
|
ui = true;
|
||||||
|
qol = true;
|
||||||
|
telescope = true;
|
||||||
|
fyler = true;
|
||||||
|
lsp = true;
|
||||||
|
completion = true;
|
||||||
|
treesitter = true;
|
||||||
|
discord = false;
|
||||||
|
|
||||||
|
lang = {
|
||||||
|
lua = true;
|
||||||
|
nix = true;
|
||||||
|
rust = true;
|
||||||
|
zig = true;
|
||||||
|
elixir = true;
|
||||||
|
gleam = true;
|
||||||
|
java = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
250
homes/modules/programs/nixcord.nix
Normal file
250
homes/modules/programs/nixcord.nix
Normal file
|
|
@ -0,0 +1,250 @@
|
||||||
|
{ config, inputs, lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nixcord.homeModules.nixcord
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.nixcord = {
|
||||||
|
enable = true;
|
||||||
|
equibop.enable = true;
|
||||||
|
|
||||||
|
discord = {
|
||||||
|
vencord.enable = false;
|
||||||
|
equicord.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
enabledThemes = [
|
||||||
|
"aurorastheme.css"
|
||||||
|
"base16-colors.css"
|
||||||
|
];
|
||||||
|
plugins = {
|
||||||
|
anonymiseFileNames = {
|
||||||
|
enable = true;
|
||||||
|
anonymiseByDefault = true;
|
||||||
|
method = 0;
|
||||||
|
randomisedLength = 16;
|
||||||
|
};
|
||||||
|
betterSessions = {
|
||||||
|
backgroundCheck = true;
|
||||||
|
checkInterval = 1;
|
||||||
|
};
|
||||||
|
biggerStreamPreview.enable = true;
|
||||||
|
callTimer.enable = true;
|
||||||
|
fixYoutubeEmbeds.enable = true;
|
||||||
|
fixSpotifyEmbeds.enable = true;
|
||||||
|
tidalEmbeds.enable = true;
|
||||||
|
youtubeAdblock.enable = true;
|
||||||
|
followVoiceUser.enable = true;
|
||||||
|
friendsSince.enable = true;
|
||||||
|
ircColors = {
|
||||||
|
enable = true;
|
||||||
|
lightness = 80;
|
||||||
|
memberListColors = true;
|
||||||
|
applyColorOnlyInDms = false;
|
||||||
|
applyColorOnlyToUsersWithoutColor = false;
|
||||||
|
};
|
||||||
|
messageLogger = {
|
||||||
|
enable = true;
|
||||||
|
showEditDiffs = true;
|
||||||
|
separatedDiffs = false;
|
||||||
|
};
|
||||||
|
fakeNitro.enable = true;
|
||||||
|
ghosted.enable = true;
|
||||||
|
noF1.enable = true;
|
||||||
|
noMaskedUrlPaste.enable = true;
|
||||||
|
messageLatency = {
|
||||||
|
enable = false;
|
||||||
|
latency = -1;
|
||||||
|
showMillis = true;
|
||||||
|
};
|
||||||
|
openInApp.enable = true;
|
||||||
|
crashHandler.enable = true;
|
||||||
|
disableCallIdle.enable = true;
|
||||||
|
experiments.enable = true;
|
||||||
|
expressionCloner.enable = true;
|
||||||
|
favoriteGifSearch.enable = true;
|
||||||
|
fixImagesQuality.enable = true;
|
||||||
|
forceOwnerCrown.enable = true;
|
||||||
|
forwardAnywhere.enable = true;
|
||||||
|
spotifyCrack.enable = true;
|
||||||
|
spotifyShareCommands.enable = true;
|
||||||
|
spotifyControls.enable = true;
|
||||||
|
fullUserInChatbox.enable = true;
|
||||||
|
gifPaste.enable = true;
|
||||||
|
ignoreActivities = {
|
||||||
|
enable = true;
|
||||||
|
ignorePlaying = true;
|
||||||
|
ignoreStreaming = true;
|
||||||
|
ignoreListening = true;
|
||||||
|
ignoreWatching = true;
|
||||||
|
ignoreCompeting = true;
|
||||||
|
};
|
||||||
|
imageLink.enable = true;
|
||||||
|
imageZoom.enable = true;
|
||||||
|
memberCount.enable = true;
|
||||||
|
noDevtoolsWarning.enable = true;
|
||||||
|
noUnblockToJump.enable = true;
|
||||||
|
pauseInvitesForever.enable = true;
|
||||||
|
permissionsViewer.enable = true;
|
||||||
|
pictureInPicture = {
|
||||||
|
enable = true;
|
||||||
|
loop = true;
|
||||||
|
};
|
||||||
|
platformIndicators.enable = true;
|
||||||
|
previewMessage.enable = true;
|
||||||
|
relationshipNotifier.enable = true;
|
||||||
|
revealAllSpoilers.enable = true;
|
||||||
|
serverInfo.enable = true;
|
||||||
|
serverListIndicators.enable = true;
|
||||||
|
showHiddenChannels.enable = true;
|
||||||
|
showHiddenThings.enable = true;
|
||||||
|
showTimeoutDuration = {
|
||||||
|
enable = true;
|
||||||
|
displayStyle = "tooltip";
|
||||||
|
};
|
||||||
|
silentTyping = {
|
||||||
|
enable = true;
|
||||||
|
enabledGlobally = false;
|
||||||
|
};
|
||||||
|
startupTimings.enable = true;
|
||||||
|
typingIndicator.enable = true;
|
||||||
|
unlockedAvatarZoom = {
|
||||||
|
enable = true;
|
||||||
|
zoomMultiplier = 4.0;
|
||||||
|
};
|
||||||
|
userMessagesPronouns.enable = true;
|
||||||
|
validUser.enable = true;
|
||||||
|
validReply.enable = true;
|
||||||
|
viewIcons = {
|
||||||
|
enable = true;
|
||||||
|
format = "webp";
|
||||||
|
imgSize = "4096";
|
||||||
|
};
|
||||||
|
voiceChatDoubleClick.enable = true;
|
||||||
|
voiceDownload.enable = true;
|
||||||
|
voiceMessages = {
|
||||||
|
enable = true;
|
||||||
|
noiseSuppression = false;
|
||||||
|
echoCancellation = true;
|
||||||
|
};
|
||||||
|
volumeBooster.enable = true;
|
||||||
|
webKeybinds.enable = true;
|
||||||
|
webScreenShareFixes.enable = true;
|
||||||
|
whoReacted.enable = true;
|
||||||
|
whosWatching.enable = true;
|
||||||
|
quickReply.enable = true;
|
||||||
|
questCompleter.enable = true;
|
||||||
|
shikiCodeblocks = {
|
||||||
|
enable = true;
|
||||||
|
useDevIcon = "COLOR";
|
||||||
|
theme = "https://raw.githubusercontent.com/shikijs/textmate-grammars-themes/2d87559c7601a928b9f7e0f0dda243d2fb6d4499/packages/tm-themes/themes/kanagawa-wave.json";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.nixcord.config.plugins.PinDMs = {
|
||||||
|
enable = true;
|
||||||
|
canCollapseDmSection = true;
|
||||||
|
userBasedCategoryList = {
|
||||||
|
"1202666382760607774" = [
|
||||||
|
{
|
||||||
|
id = "i9dflmraztc";
|
||||||
|
name = "🏳️⚧️ girlfriends!!! :3 🏳️⚧️";
|
||||||
|
color = 16359423;
|
||||||
|
collapsed = false;
|
||||||
|
channels = [
|
||||||
|
"1436964273162289185"
|
||||||
|
"1436988320474206311"
|
||||||
|
"1449837047383855119"
|
||||||
|
"1436965652861685891"
|
||||||
|
"1436968495190642722"
|
||||||
|
"1465424321919975454"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "p2v1f5y9zbd";
|
||||||
|
name = "🦋 best frens <3 🦋";
|
||||||
|
color = 10223511;
|
||||||
|
collapsed = false;
|
||||||
|
channels = [
|
||||||
|
"1436985374286155799"
|
||||||
|
"1436965657076826222"
|
||||||
|
"1429921297160212681"
|
||||||
|
"1394808379381387385"
|
||||||
|
"1433593753183977545"
|
||||||
|
"1438254055452446881"
|
||||||
|
"1436966389549236376"
|
||||||
|
"1202678007026819134"
|
||||||
|
"1437151552224624660"
|
||||||
|
"1441906462094921789"
|
||||||
|
"1450340272079769712"
|
||||||
|
"1458123717124165764"
|
||||||
|
"1436975341129306155"
|
||||||
|
"1461885176534794427"
|
||||||
|
"1462155159470866443"
|
||||||
|
"1468735915076878407"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "c0mg5w635j8";
|
||||||
|
name = "🏳️🌈 close frens x3 🏳️🌈";
|
||||||
|
color = 10780927;
|
||||||
|
collapsed = false;
|
||||||
|
channels = [
|
||||||
|
"1437077103873888290"
|
||||||
|
"1436975346338762823"
|
||||||
|
"1437123353101205590"
|
||||||
|
"1441516692164575283"
|
||||||
|
"1419557866502754334"
|
||||||
|
"1436985041203892315"
|
||||||
|
"1438071327515742229"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "ghjrq5el3b";
|
||||||
|
name = "frens :3";
|
||||||
|
color = 7334399;
|
||||||
|
collapsed = false;
|
||||||
|
channels = [
|
||||||
|
"1437007154132422701"
|
||||||
|
"1437006448948416526"
|
||||||
|
"1446781617422209068"
|
||||||
|
"1444723474835837103"
|
||||||
|
"1437098569483161721"
|
||||||
|
"1437237573146771469"
|
||||||
|
"1436973705421914123"
|
||||||
|
"1437135359359320125"
|
||||||
|
"1438010723837022343"
|
||||||
|
"1440553969461104740"
|
||||||
|
"1437097082887475201"
|
||||||
|
"1447222320015085740"
|
||||||
|
"1462624704027164824"
|
||||||
|
"1449513783893692589"
|
||||||
|
"1463737720961634461"
|
||||||
|
"1463000874392748249"
|
||||||
|
"1461929299727749145"
|
||||||
|
"1436984534712451105"
|
||||||
|
"1436983282582683813"
|
||||||
|
"1437283420312047659"
|
||||||
|
"1437089201651847315"
|
||||||
|
"1468324280445046824"
|
||||||
|
"1467307140443148288"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "zbmj00xw7d8";
|
||||||
|
name = "goop chats";
|
||||||
|
color = 14876549;
|
||||||
|
collapsed = false;
|
||||||
|
channels = [
|
||||||
|
"1437132769141719040"
|
||||||
|
"1445549416516681902"
|
||||||
|
"1458849972815663209"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
26
homes/modules/programs/spicetify.nix
Normal file
26
homes/modules/programs/spicetify.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{ inputs, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
spicetifyPkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in {
|
||||||
|
imports = [ inputs.spicetify-nix.homeManagerModules.default ];
|
||||||
|
programs.spicetify = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
enabledExtensions = with spicetifyPkgs.extensions; [
|
||||||
|
adblock
|
||||||
|
shuffle
|
||||||
|
keyboardShortcut
|
||||||
|
({
|
||||||
|
src = (pkgs.fetchFromGitHub {
|
||||||
|
owner = "Spikerko";
|
||||||
|
repo = "spicy-lyrics";
|
||||||
|
rev = "568c83326aa6aba6ded28c95df6fcfb25cab3648";
|
||||||
|
hash = "sha256-lej93EDzGkmyrg5YMdPSqzrxlIfKsfaDBZosTvxoTNw=";
|
||||||
|
}) + /builds;
|
||||||
|
name = "spicy-lyrics.mjs";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
theme = spicetifyPkgs.themes.comfy;
|
||||||
|
colorScheme = "Sakura";
|
||||||
|
};
|
||||||
|
}
|
||||||
86
homes/modules/programs/yazi/yazi.nix
Normal file
86
homes/modules/programs/yazi/yazi.nix
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
{ config, inputs, lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
# optional dependencies can be found here:
|
||||||
|
# https://yazi-rs.github.io/docs/installation/
|
||||||
|
home.packages = with pkgs; [ # dependencies
|
||||||
|
ripdrag
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = false; # i mod"if"ied the script in my .zshrc
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
mgr = {
|
||||||
|
show_hidden = true;
|
||||||
|
};
|
||||||
|
log = {
|
||||||
|
enabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keymap = {
|
||||||
|
mgr.prepend_keymap = [
|
||||||
|
# drag and drop!!
|
||||||
|
{ on = [ "<S-c>" ]; run = ''shell "ripdrag -x -a \"$@\"" --confirm''; }
|
||||||
|
# copy hovered file to clipboard
|
||||||
|
{ on = [ "<S-y>" ]; run = ''shell -- path=%h; echo "file://$path" | wl-copy -t text/uri-list''; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# they changed it to custom colors, i don't like that, so this is the config
|
||||||
|
# i did like:
|
||||||
|
# https://github.com/sxyazi/yazi/blob/97d0c6bb23df413f4add8b888071233c912c49a3/yazi-config/preset/theme-dark.toml
|
||||||
|
theme = {
|
||||||
|
icon = {
|
||||||
|
dirs = [
|
||||||
|
{ name = ".config"; text = ""; fg = "red"; }
|
||||||
|
{ name = ".git"; text = ""; fg = "blue"; }
|
||||||
|
{ name = ".github"; text = ""; fg = "blue"; }
|
||||||
|
{ name = ".npm"; text = ""; fg = "blue"; }
|
||||||
|
{ name = "Desktop"; text = ""; fg = "magenta"; }
|
||||||
|
{ name = "Documents"; text = ""; fg = "magenta"; }
|
||||||
|
{ name = "Downloads"; text = ""; fg = "red"; }
|
||||||
|
{ name = "Library"; text = ""; fg = "magenta"; }
|
||||||
|
{ name = "Movies"; text = ""; fg = "magenta"; }
|
||||||
|
{ name = "Music"; text = ""; fg = "magenta"; }
|
||||||
|
{ name = "Pictures"; text = ""; fg = "magenta"; }
|
||||||
|
{ name = "Public"; text = ""; fg = "magenta"; }
|
||||||
|
{ name = "Videos"; text = ""; fg = "red"; }
|
||||||
|
];
|
||||||
|
conds = [
|
||||||
|
# special files
|
||||||
|
{ "if" = "orphan"; text = ""; }
|
||||||
|
{ "if" = "link"; text = ""; }
|
||||||
|
{ "if" = "block"; text = ""; }
|
||||||
|
{ "if" = "char"; text = ""; }
|
||||||
|
{ "if" = "fifo"; text = ""; }
|
||||||
|
{ "if" = "sock"; text = ""; }
|
||||||
|
{ "if" = "sticky"; text = ""; }
|
||||||
|
{ "if" = "dummy"; text = ""; }
|
||||||
|
|
||||||
|
# fallback
|
||||||
|
{ "if" = "dir"; text = ""; fg = "blue"; }
|
||||||
|
{ "if" = "exec"; text = ""; }
|
||||||
|
{ "if" = "!dir"; text = ""; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# helped me fix it not working:
|
||||||
|
# https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser/issues/56
|
||||||
|
# also, the portal must be enabled in configuration.nix
|
||||||
|
# i can't seem to get it working any other way
|
||||||
|
xdg.configFile."xdg-desktop-portal-termfilechooser/config" = {
|
||||||
|
force = true;
|
||||||
|
text = ''
|
||||||
|
[filechooser]
|
||||||
|
cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
|
||||||
|
default_dir=$HOME
|
||||||
|
env=TERMCMD='kitty --title filechooser'
|
||||||
|
open_mode=suggested
|
||||||
|
save_mode=last
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
2
homes/modules/scripts/task-manager.sh
Executable file
2
homes/modules/scripts/task-manager.sh
Executable file
|
|
@ -0,0 +1,2 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
pkill -f "kitty --title btop -e btop" || { kitty --title btop -e btop & disown; }
|
||||||
33
homes/modules/services/dunst.nix
Normal file
33
homes/modules/services/dunst.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{ config, inputs, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
libnotify
|
||||||
|
];
|
||||||
|
|
||||||
|
services.dunst = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
monitor = "DP-3"; # second monitor
|
||||||
|
origin = "top-left";
|
||||||
|
layer = "top"; # above windows, below fullscreen
|
||||||
|
offset = "(16, 24)";
|
||||||
|
|
||||||
|
padding = 4;
|
||||||
|
gap_size = 4;
|
||||||
|
frame_width = 2;
|
||||||
|
|
||||||
|
font = "DepartureMono Nerd Font 8";
|
||||||
|
|
||||||
|
corner_radius = 12;
|
||||||
|
icon_corner_radius = 12;
|
||||||
|
|
||||||
|
progress_bar = true;
|
||||||
|
progress_bar_height = 16;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
12
homes/modules/services/keepassxc/keepassxc.ini
Normal file
12
homes/modules/services/keepassxc/keepassxc.ini
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
[General]
|
||||||
|
ConfigVersion=2
|
||||||
|
|
||||||
|
[FdoSecrets]
|
||||||
|
Enabled=true
|
||||||
|
ShowNotification=true
|
||||||
|
ConfirmAccessItem=true
|
||||||
|
ConfirmDeleteItem=true
|
||||||
|
|
||||||
|
[GUI]
|
||||||
|
MinimizeToTray=true
|
||||||
|
ShowTrayIcon=false
|
||||||
23
homes/modules/services/keepassxc/keepassxc.nix
Normal file
23
homes/modules/services/keepassxc/keepassxc.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{ config, inputs, lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
keepassxc
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.user.services.keepassxc = {
|
||||||
|
Unit = {
|
||||||
|
Description = "KeePassXC password manager";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Description = "${pkgs.keepassxc}/bin/keepassxc";
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
Install.WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."keepassxc/keepassxc.ini" = {
|
||||||
|
source = ./keepassxc.ini;
|
||||||
|
};
|
||||||
|
}
|
||||||
1
homes/modules/services/pulse/client.conf.template
Normal file
1
homes/modules/services/pulse/client.conf.template
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
cookie-file = /run/user/{uid}/pulse/cookie
|
||||||
9
homes/modules/services/pulse/pulse.nix
Normal file
9
homes/modules/services/pulse/pulse.nix
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{ inputs, lib, pkgs, config, osConfig, ... }:
|
||||||
|
{
|
||||||
|
# writes ./client.conf to ~/.config/pulse/client.conf
|
||||||
|
xdg.configFile."pulse/client.conf".text = builtins.replaceStrings
|
||||||
|
["{uid}"]
|
||||||
|
# make sure ur user id is set!!!
|
||||||
|
["${toString osConfig.users.users.${config.home.username}.uid}"]
|
||||||
|
(builtins.readFile ./client.conf.template);
|
||||||
|
}
|
||||||
8
homes/modules/services/wireplumber/wireplumber.nix
Normal file
8
homes/modules/services/wireplumber/wireplumber.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{ inputs, lib, pkgs, config, ... }:
|
||||||
|
{
|
||||||
|
# writes ./config to ~/.config/wireplumber
|
||||||
|
xdg.configFile."wireplumber" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ./config;
|
||||||
|
};
|
||||||
|
}
|
||||||
12
homes/modules/shell/fastfetch/fastfetch.nix
Normal file
12
homes/modules/shell/fastfetch/fastfetch.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{ inputs, lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
fastfetch # displays system info! x3
|
||||||
|
];
|
||||||
|
|
||||||
|
# writes ./themes to ~/.config/fastfetch/themes
|
||||||
|
xdg.configFile."fastfetch/themes" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ./themes;
|
||||||
|
};
|
||||||
|
}
|
||||||
0
homes/modules/shell/fastfetch/themes/laimu.json
Normal file
0
homes/modules/shell/fastfetch/themes/laimu.json
Normal file
26
homes/modules/shell/programs.nix
Normal file
26
homes/modules/shell/programs.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{ inputs, lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
options = [
|
||||||
|
"--cmd cd"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
hyfetch = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
preset = "genderfae";
|
||||||
|
mode = "rgb";
|
||||||
|
backend = "fastfetch";
|
||||||
|
color_align = {
|
||||||
|
mode = "vertical";
|
||||||
|
};
|
||||||
|
auto_detect_light_dark = true;
|
||||||
|
pride_month_disable = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
17
homes/modules/shell/zellij/zellij.nix
Normal file
17
homes/modules/shell/zellij/zellij.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{ inputs, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# the theme file template for zellij is in wallust
|
||||||
|
|
||||||
|
programs.zellij = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = false;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
theme "test"
|
||||||
|
show_startup_tips false
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
86
homes/modules/shell/zsh.nix
Normal file
86
homes/modules/shell/zsh.nix
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
{ inputs, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "vi-mode";
|
||||||
|
src = pkgs.zsh-vi-mode;
|
||||||
|
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
initContent = ''
|
||||||
|
# yazi wrapper!!!
|
||||||
|
function yazi() {
|
||||||
|
local tmp="$(mktemp -p "/run/user/$UID" -t "yazi-cwd.XXXXXX")" cwd
|
||||||
|
command yazi "$@" --cwd-file="$tmp"
|
||||||
|
IFS= read -r -d ''' cwd < "$tmp"
|
||||||
|
[ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$cwd"
|
||||||
|
rm -f -- "$tmp"
|
||||||
|
}
|
||||||
|
|
||||||
|
hyfetch # oh i'm so gay!! :3
|
||||||
|
'';
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
# files and nav stuff
|
||||||
|
ls = "eza";
|
||||||
|
ll = "ls -la";
|
||||||
|
lt = "ls --tree";
|
||||||
|
llt = "ll --tree";
|
||||||
|
|
||||||
|
y = "yazi";
|
||||||
|
|
||||||
|
# cat with wings!!!
|
||||||
|
cat = "bat";
|
||||||
|
|
||||||
|
# init github keys
|
||||||
|
# description: gi = github initialize
|
||||||
|
sa = "eval \"$(ssh-agent -s)\"";
|
||||||
|
gh-auv = "ssh-add ~/.ssh/github_auroraveon";
|
||||||
|
cb-fox = "ssh-add ~/.ssh/codeberg_foxxyora";
|
||||||
|
|
||||||
|
# --------------------
|
||||||
|
# shorthand nix command aliases
|
||||||
|
|
||||||
|
# open nix develop with preferred shell
|
||||||
|
# description: nd = nix develop
|
||||||
|
nd = "nix develop -c $SHELL";
|
||||||
|
|
||||||
|
# description: cdns = change directory [to] nix settings
|
||||||
|
cdns = "cd /etc/nixos";
|
||||||
|
# cd to /etc/nixos and edit nix config
|
||||||
|
# description: ns = nix settings
|
||||||
|
ns = "cdns && sudo -E -s $EDITOR";
|
||||||
|
# description: nrs = nix rebuild switch
|
||||||
|
nrs = "cdns && nh os switch /etc/nixos";
|
||||||
|
# upgrades the system
|
||||||
|
upgrade = "cdns && sudo nix flake update && nh os switch /etc/nixos";
|
||||||
|
|
||||||
|
# kitty's ssh command (to fix xterm and other stuff qwq)
|
||||||
|
kssh = "kitty +kitten ssh";
|
||||||
|
|
||||||
|
# pipes are prettyyyy!!!! :3333
|
||||||
|
pipes1 = "pipes.sh -r 1024 -p 8 -f 30";
|
||||||
|
pipes2 = "pipes.sh -r 4096 -p 16 -f 100";
|
||||||
|
};
|
||||||
|
|
||||||
|
history = {
|
||||||
|
size = 16384;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
theme = "agnoster";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
20
homes/modules/themeing/hellwal/hellwal.nix
Normal file
20
homes/modules/themeing/hellwal/hellwal.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{ config, inputs, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hellwal
|
||||||
|
];
|
||||||
|
|
||||||
|
# writes ./wallust.toml to ~/.config/hellwal/wallust.toml
|
||||||
|
#xdg.configFile."wallust/wallust.toml" = {
|
||||||
|
#source = ./wallust.toml;
|
||||||
|
#};
|
||||||
|
|
||||||
|
# writes ./templates to ~/.config/hellwal/templates
|
||||||
|
#xdg.configFile."hellwal/templates" = {
|
||||||
|
#recursive = true;
|
||||||
|
#source = ./templates;
|
||||||
|
#};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
background = '{{ background | strip }}'
|
||||||
|
foreground = '{{ foreground | strip }}'
|
||||||
|
color00 = '{{ color0 | strip }}'
|
||||||
|
color01 = '{{ color1 | strip }}'
|
||||||
|
color02 = '{{ color2 | strip }}'
|
||||||
|
color03 = '{{ color3 | strip }}'
|
||||||
|
color04 = '{{ color4 | strip }}'
|
||||||
|
color05 = '{{ color5 | strip }}'
|
||||||
|
color06 = '{{ color6 | strip }}'
|
||||||
|
color07 = '{{ color7 | strip }}'
|
||||||
|
color08 = '{{ color8 | strip }}'
|
||||||
|
color09 = '{{ color9 | strip }}'
|
||||||
|
color10 = '{{ color10 | strip }}'
|
||||||
|
color11 = '{{ color11 | strip }}'
|
||||||
|
color12 = '{{ color12 | strip }}'
|
||||||
|
color13 = '{{ color13 | strip }}'
|
||||||
|
color14 = '{{ color14 | strip }}'
|
||||||
|
color15 = '{{ color15 | strip }}'
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
:root {
|
||||||
|
--foreground: {{ foreground }};
|
||||||
|
--background: {{ background }};
|
||||||
|
--color0: {{ color0 }};
|
||||||
|
--color1: {{ color1 }};
|
||||||
|
--color2: {{ color2 }};
|
||||||
|
--color3: {{ color3 }};
|
||||||
|
--color4: {{ color4 }};
|
||||||
|
--color5: {{ color5 }};
|
||||||
|
--color6: {{ color6 }};
|
||||||
|
--color7: {{ color7 }};
|
||||||
|
--color8: {{ color8 }};
|
||||||
|
--color9: {{ color9 }};
|
||||||
|
--color10: {{ color10 }};
|
||||||
|
--color11: {{ color11 }};
|
||||||
|
--color12: {{ color12 }};
|
||||||
|
--color13: {{ color13 }};
|
||||||
|
--color14: {{ color14 }};
|
||||||
|
--color15: {{ color15 }};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
$colorbg = {{ background | rgb }}
|
||||||
|
$colorfg = {{ foreground | rgb }}
|
||||||
|
$color00 = {{ color0 | rgb }}
|
||||||
|
$color01 = {{ color1 | rgb }}
|
||||||
|
$color02 = {{ color2 | rgb }}
|
||||||
|
$color03 = {{ color3 | rgb }}
|
||||||
|
$color04 = {{ color4 | rgb }}
|
||||||
|
$color05 = {{ color5 | rgb }}
|
||||||
|
$color06 = {{ color6 | rgb }}
|
||||||
|
$color07 = {{ color7 | rgb }}
|
||||||
|
$color08 = {{ color8 | rgb }}
|
||||||
|
$color09 = {{ color9 | rgb }}
|
||||||
|
$color10 = {{ color10 | rgb }}
|
||||||
|
$color11 = {{ color11 | rgb }}
|
||||||
|
$color12 = {{ color12 | rgb }}
|
||||||
|
$color13 = {{ color13 | rgb }}
|
||||||
|
$color14 = {{ color14 | rgb }}
|
||||||
|
$color15 = {{ color15 | rgb }}
|
||||||
405
homes/modules/themeing/wallust/templates/imhex-template.theme
Normal file
405
homes/modules/themeing/wallust/templates/imhex-template.theme
Normal file
|
|
@ -0,0 +1,405 @@
|
||||||
|
{
|
||||||
|
"base": "Dark",
|
||||||
|
"colors": {
|
||||||
|
"imgui": {
|
||||||
|
"border": "{{ foreground }}60",
|
||||||
|
"border-shadow": "#00000000",
|
||||||
|
"button": "{{ color14 }}60",
|
||||||
|
"button-active": "{{ color14 }}FF",
|
||||||
|
"button-hovered": "{{ color14 }}FF",
|
||||||
|
"check-mark": "{{ color11 }}FF",
|
||||||
|
"child-background": "{{ background }}FF",
|
||||||
|
"docking-empty-background": "{{ background | darken(0.2) }}FF",
|
||||||
|
"docking-preview": "#4296F9B2",
|
||||||
|
"drag-drop-target": "#FFFF00E5",
|
||||||
|
"frame-background": "#284D7A89",
|
||||||
|
"frame-background-active": "#4296F9AA",
|
||||||
|
"frame-background-hovered": "#4296F966",
|
||||||
|
"header": "{{ color3 }}C0",
|
||||||
|
"header-active": "{{ color3 }}FF",
|
||||||
|
"header-hovered": "{{ color3 }}E0",
|
||||||
|
"input-text-cursor": "{{ foreground }}FF",
|
||||||
|
"menu-bar-background": "{{ background }}FF",
|
||||||
|
"modal-window-dim-background": "#CCCCCC30",
|
||||||
|
"nav-highlight": "#4296F9FF",
|
||||||
|
"nav-windowing-background": "#CCCCCC33",
|
||||||
|
"nav-windowing-highlight": "#FFFFFFB2",
|
||||||
|
"plot-histogram": "#E5B200FF",
|
||||||
|
"plot-histogram-hovered": "#FF9900FF",
|
||||||
|
"plot-lines": "#9B9B9BFF",
|
||||||
|
"plot-lines-hovered": "#FF6D59FF",
|
||||||
|
"popup-background": "{{ background }}FF",
|
||||||
|
"resize-grip": "#4296F933",
|
||||||
|
"resize-grip-active": "#4296F9F2",
|
||||||
|
"resize-grip-hovered": "#4296F9AA",
|
||||||
|
"scrollbar-background": "#05050587",
|
||||||
|
"scrollbar-grab": "#4F4F4FFF",
|
||||||
|
"scrollbar-grab-active": "#828282FF",
|
||||||
|
"scrollbar-grab-hovered": "#686868FF",
|
||||||
|
"separator": "#6D6D7F7F",
|
||||||
|
"separator-active": "#1965BFFF",
|
||||||
|
"separator-hovered": "#1965BFC6",
|
||||||
|
"slider-grab": "#3D87E0FF",
|
||||||
|
"slider-grab-active": "#4296F9FF",
|
||||||
|
"tab": "{{ color2 }}80",
|
||||||
|
"tab-active": "{{ color2 }}E0",
|
||||||
|
"tab-active-overline": "#00000000",
|
||||||
|
"tab-hovered": "{{ color2 }}C0",
|
||||||
|
"tab-unfocused": "{{ color2 }}80",
|
||||||
|
"tab-unfocused-active": "{{ color2 }}B0",
|
||||||
|
"tab-unfocused-active-overline": "#00000000",
|
||||||
|
"table-border-light": "{{ foreground }}50",
|
||||||
|
"table-border-strong": "{{ foreground }}90",
|
||||||
|
"table-header-background": "{{ background | darken(0.2) }}FF",
|
||||||
|
"table-row-background": "#00000000",
|
||||||
|
"table-row-background-alt": "{{ foreground }}0F",
|
||||||
|
"text": "{{ foreground }}FF",
|
||||||
|
"text-disabled": "{{ foreground }}FF",
|
||||||
|
"text-link": "{{ color13 }}FF",
|
||||||
|
"text-selected-background": "{{ color13 }}60",
|
||||||
|
"title-background": "{{ background | darken(0.3) }}FF",
|
||||||
|
"title-background-active": "{{ background | darken(0.3) }}FF",
|
||||||
|
"title-background-collapse": "{{ background | darken(0.3) }}FF",
|
||||||
|
"tree-lines": "#6D6D7F7F",
|
||||||
|
"window-background": "{{ background }}FF",
|
||||||
|
"window-shadow": "#00000000"
|
||||||
|
},
|
||||||
|
"imhex": {
|
||||||
|
"IEEE-tool-exp": "#5D7F5DFF",
|
||||||
|
"IEEE-tool-mantissa": "#7F5D5DFF",
|
||||||
|
"IEEE-tool-sign": "#5D5D7FFF",
|
||||||
|
"achievement-unlocked": "#F1C40FFF",
|
||||||
|
"advanced-encoding-ascii": "#7BB4E9FF",
|
||||||
|
"advanced-encoding-multi": "#F3DF91FF",
|
||||||
|
"advanced-encoding-single": "#E7978FFF",
|
||||||
|
"advanced-encoding-unknown": "#E7978FFF",
|
||||||
|
"blur-background": "#00000000",
|
||||||
|
"desc-button": "{{ background }}FF",
|
||||||
|
"desc-button-active": "{{ color10 }}C0",
|
||||||
|
"desc-button-hovered": "{{ color10 }}80",
|
||||||
|
"diff-added": "#388B42FF",
|
||||||
|
"diff-changed": "#F1C40FFF",
|
||||||
|
"diff-removed": "#E74C3CFF",
|
||||||
|
"find-highlight": "#672A78FF",
|
||||||
|
"highlight": "#4DC69BFF",
|
||||||
|
"logger-debug": "#388B42FF",
|
||||||
|
"logger-error": "#E74C3CFF",
|
||||||
|
"logger-fatal": "#672A78FF",
|
||||||
|
"logger-info": "#06539BFF",
|
||||||
|
"logger-warning": "#F1C40FFF",
|
||||||
|
"patches": "#E74C3CFF",
|
||||||
|
"pattern-selected": "#3683CBFF",
|
||||||
|
"toolbar-blue": "{{ color12 }}FF",
|
||||||
|
"toolbar-brown": "{{ color13 }}FF",
|
||||||
|
"toolbar-gray": "{{ color14 }}FF",
|
||||||
|
"toolbar-green": "{{ color4 }}FF",
|
||||||
|
"toolbar-purple": "{{ color5 }}FF",
|
||||||
|
"toolbar-red": "{{ color6 }}FF",
|
||||||
|
"toolbar-yellow": "{{ color11 }}FF"
|
||||||
|
},
|
||||||
|
"imnodes": {
|
||||||
|
"box-selector": "#3D87E01E",
|
||||||
|
"box-selector-outline": "#3D87E096",
|
||||||
|
"grid-background": "{{ foreground }}7F",
|
||||||
|
"grid-line": "{{ foreground }}7F",
|
||||||
|
"grid-line-primary": "{{ foreground }}7F",
|
||||||
|
"link": "#3D87E0C8",
|
||||||
|
"link-hovered": "#4296FAFF",
|
||||||
|
"link-selected": "#4296FAFF",
|
||||||
|
"mini-map-background": "#19191996",
|
||||||
|
"mini-map-background-hovered": "#191919C8",
|
||||||
|
"mini-map-canvas": "#C8C8C819",
|
||||||
|
"mini-map-canvas-outline": "#C8C8C8C8",
|
||||||
|
"mini-map-link": "#3D87E0C8",
|
||||||
|
"mini-map-link-selected": "#4296FAFF",
|
||||||
|
"mini-map-node-background": "#C8C8C864",
|
||||||
|
"mini-map-node-background-hovered": "#C8C8C8FF",
|
||||||
|
"mini-map-node-background-selected": "#C8C8C8FF",
|
||||||
|
"mini-map-node-outline": "#C8C8C864",
|
||||||
|
"mini-map-outline": "#96969664",
|
||||||
|
"mini-map-outline-hovered": "#969696C8",
|
||||||
|
"node-background": "#323232FF",
|
||||||
|
"node-background-hovered": "#4B4B4BFF",
|
||||||
|
"node-background-selected": "#4B4B4BFF",
|
||||||
|
"node-outline": "#646464FF",
|
||||||
|
"pin": "#F5CB25FF",
|
||||||
|
"pin-hovered": "#FA8335FF",
|
||||||
|
"title-bar": "#294E7AFF",
|
||||||
|
"title-bar-hovered": "#4296FAFF",
|
||||||
|
"title-bar-selected": "#4296FAFF"
|
||||||
|
},
|
||||||
|
"implot": {
|
||||||
|
"axis-bg": "#00000000",
|
||||||
|
"axis-bg-active": "#00000000",
|
||||||
|
"axis-bg-hovered": "#00000000",
|
||||||
|
"axis-grid": "#FFFFFF3F",
|
||||||
|
"axis-text": "#FFFFFFFF",
|
||||||
|
"axis-tick": "#00000000",
|
||||||
|
"crosshairs": "#FFFFFF7F",
|
||||||
|
"error-bar": "#00000000",
|
||||||
|
"fill": "#00000000",
|
||||||
|
"frame-bg": "#FFFFFF11",
|
||||||
|
"inlay-text": "#FFFFFFFF",
|
||||||
|
"legend-bg": "#141414EF",
|
||||||
|
"legend-border": "#6D6D7F7F",
|
||||||
|
"legend-text": "#FFFFFFFF",
|
||||||
|
"line": "#00000000",
|
||||||
|
"marker-fill": "#00000000",
|
||||||
|
"marker-outline": "#00000000",
|
||||||
|
"plot-bg": "#0000007F",
|
||||||
|
"plot-border": "#6D6D7F7F",
|
||||||
|
"selection": "#FF9900FF",
|
||||||
|
"title-text": "#FFFFFFFF"
|
||||||
|
},
|
||||||
|
"text-editor": {
|
||||||
|
"attribute": "#AAAAAAFF",
|
||||||
|
"background": "{{ background }}{{ 100 | alpha_hexa }}",
|
||||||
|
"breakpoint": "#FF200040",
|
||||||
|
"calculated-pointer": "#AAAAAAFF",
|
||||||
|
"char-literal": "#E0A070FF",
|
||||||
|
"comment": "#206020FF",
|
||||||
|
"current-line-edge": "#A0A0A040",
|
||||||
|
"current-line-fill": "#00000040",
|
||||||
|
"current-line-fill-inactive": "#80808040",
|
||||||
|
"cursor": "#E0E0E0FF",
|
||||||
|
"debug-text": "#8A8A8AFF",
|
||||||
|
"default": "#7F7F7FFF",
|
||||||
|
"default-text": "#7F7F7FFF",
|
||||||
|
"doc-block-comment": "#206020FF",
|
||||||
|
"doc-comment": "#206020FF",
|
||||||
|
"doc-global-comment": "#206020FF",
|
||||||
|
"error-marker": "#FF200080",
|
||||||
|
"error-text": "#FF200080",
|
||||||
|
"function": "#AAAAAAFF",
|
||||||
|
"function-parameter": "#AAAAAAFF",
|
||||||
|
"function-variable": "#AAAAAAFF",
|
||||||
|
"global-variable": "#AAAAAAFF",
|
||||||
|
"identifier": "#AAAAAAFF",
|
||||||
|
"keyword": "{{ color13 }}{{ 100 | alpha_hexa }}",
|
||||||
|
"known-identifier": "#4DC69BFF",
|
||||||
|
"line-number": "{{ color13 }}{{ 100 | alpha_hexa }}",
|
||||||
|
"local-variable": "#AAAAAAFF",
|
||||||
|
"multi-line-comment": "#206040FF",
|
||||||
|
"namespace": "#AAAAAAFF",
|
||||||
|
"number": "#00FF00FF",
|
||||||
|
"pattern-variable": "#AAAAAAFF",
|
||||||
|
"placed-variable": "#AAAAAAFF",
|
||||||
|
"preproc-identifier": "#808060FF",
|
||||||
|
"preprocessor": "#808060FF",
|
||||||
|
"preprocessor-deactivated": "#4F4F4F45",
|
||||||
|
"punctuation": "#7F7F7FFF",
|
||||||
|
"selection": "#205AA080",
|
||||||
|
"separator": "#7F7F7FFF",
|
||||||
|
"string": "#E07070FF",
|
||||||
|
"template-variable": "#AAAAAAFF",
|
||||||
|
"typedef": "#AAAAAAFF",
|
||||||
|
"unknown-identifier": "#FC2C2CFE",
|
||||||
|
"user-defined-type": "#AAAAAAFF",
|
||||||
|
"view": "#AAAAAAFF",
|
||||||
|
"warning-text": "#FFFF00FF"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"image_theme": "dark",
|
||||||
|
"name": "base16",
|
||||||
|
"styles": {
|
||||||
|
"imgui": {
|
||||||
|
"alpha": 1.0,
|
||||||
|
"button-text-align": [
|
||||||
|
0.5,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
"cell-padding": [
|
||||||
|
4.0,
|
||||||
|
2.0
|
||||||
|
],
|
||||||
|
"child-border-size": 1.0,
|
||||||
|
"child-rounding": 0.0,
|
||||||
|
"circle-tessellation-max-error": 0.30000001192092896,
|
||||||
|
"columns-min-spacing": 6.0,
|
||||||
|
"curve-tessellation-tol": 1.25,
|
||||||
|
"disabled-alpha": 0.6000000238418579,
|
||||||
|
"display-safe-area-padding": [
|
||||||
|
3.0,
|
||||||
|
3.0
|
||||||
|
],
|
||||||
|
"display-window-padding": [
|
||||||
|
19.0,
|
||||||
|
19.0
|
||||||
|
],
|
||||||
|
"docking-separator-size": 2.0,
|
||||||
|
"frame-border-size": 0.0,
|
||||||
|
"frame-padding": [
|
||||||
|
4.0,
|
||||||
|
3.0
|
||||||
|
],
|
||||||
|
"frame-rounding": 0.0,
|
||||||
|
"grab-min-size": 12.0,
|
||||||
|
"grab-rounding": 0.0,
|
||||||
|
"image-border-size": 0.0,
|
||||||
|
"indent-spacing": 21.0,
|
||||||
|
"item-inner-spacing": [
|
||||||
|
4.0,
|
||||||
|
4.0
|
||||||
|
],
|
||||||
|
"item-spacing": [
|
||||||
|
8.0,
|
||||||
|
4.0
|
||||||
|
],
|
||||||
|
"log-slider-deadzone": 4.0,
|
||||||
|
"mouse-cursor-scale": 1.0,
|
||||||
|
"popup-border-size": 1.0,
|
||||||
|
"popup-rounding": 0.0,
|
||||||
|
"scrollbar-rounding": 9.0,
|
||||||
|
"scrollbar-size": 14.0,
|
||||||
|
"selectable-text-align": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"separator-text-align": [
|
||||||
|
0.0,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
"separator-text-border-size": 3.0,
|
||||||
|
"separator-text-padding": [
|
||||||
|
20.0,
|
||||||
|
3.0
|
||||||
|
],
|
||||||
|
"tab-bar-border-size": 1.0,
|
||||||
|
"tab-bar-overline-size": 1.0,
|
||||||
|
"tab-border-size": 0.0,
|
||||||
|
"tab-close-button-min-width-selected": -1.0,
|
||||||
|
"tab-close-button-min-width-unselected": 0.0,
|
||||||
|
"tab-min-width-base": 1.0,
|
||||||
|
"tab-min-width-shrink": 80.0,
|
||||||
|
"tab-rounding": 5.0,
|
||||||
|
"touch-extra-padding": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"window-border-hover-padding": 4.0,
|
||||||
|
"window-border-size": 1.0,
|
||||||
|
"window-min-size": [
|
||||||
|
32.0,
|
||||||
|
32.0
|
||||||
|
],
|
||||||
|
"window-padding": [
|
||||||
|
8.0,
|
||||||
|
8.0
|
||||||
|
],
|
||||||
|
"window-rounding": 0.0,
|
||||||
|
"window-shadow-angle": 0.785398006439209,
|
||||||
|
"window-shadow-offset": 0.0,
|
||||||
|
"window-shadow-size": 100.0,
|
||||||
|
"window-title-align": [
|
||||||
|
0.0,
|
||||||
|
0.5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"imhex": {
|
||||||
|
"popup-alpha": 0.6499999761581421,
|
||||||
|
"window-blur": 0.0
|
||||||
|
},
|
||||||
|
"imnodes": {
|
||||||
|
"grid-spacing": 24.0,
|
||||||
|
"link-hover-distance": 10.0,
|
||||||
|
"link-line-segments-per-length": 0.10000000149011612,
|
||||||
|
"link-thickness": 3.0,
|
||||||
|
"mini-map-offset": [
|
||||||
|
4.0,
|
||||||
|
4.0
|
||||||
|
],
|
||||||
|
"mini-map-padding": [
|
||||||
|
8.0,
|
||||||
|
8.0
|
||||||
|
],
|
||||||
|
"node-border-thickness": 1.0,
|
||||||
|
"node-corner-rounding": 4.0,
|
||||||
|
"node-padding": [
|
||||||
|
8.0,
|
||||||
|
8.0
|
||||||
|
],
|
||||||
|
"pin-circle-radius": 4.0,
|
||||||
|
"pin-hover-radius": 10.0,
|
||||||
|
"pin-line-thickness": 1.0,
|
||||||
|
"pin-offset": 0.0,
|
||||||
|
"pin-quad-side-length": 7.0,
|
||||||
|
"pin-triangle-side-length": 9.5
|
||||||
|
},
|
||||||
|
"implot": {
|
||||||
|
"annotation-padding": [
|
||||||
|
2.0,
|
||||||
|
2.0
|
||||||
|
],
|
||||||
|
"digital-bit-gap": 4.0,
|
||||||
|
"digital-bit-height": 8.0,
|
||||||
|
"error-bar-size": 5.0,
|
||||||
|
"error-bar-weight": 1.5,
|
||||||
|
"fill-alpha": 1.0,
|
||||||
|
"fit-padding": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"label-padding": [
|
||||||
|
5.0,
|
||||||
|
5.0
|
||||||
|
],
|
||||||
|
"legend-inner-padding": [
|
||||||
|
5.0,
|
||||||
|
5.0
|
||||||
|
],
|
||||||
|
"legend-padding": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"legend-spacing": [
|
||||||
|
5.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"line-weight": 1.0,
|
||||||
|
"major-grid-size": [
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"major-tick-len": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"major-tick-size": [
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"marker-size": 4.0,
|
||||||
|
"marker-weight": 1.0,
|
||||||
|
"minor-alpha": 0.25,
|
||||||
|
"minor-grid-size": [
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"minor-tick-len": [
|
||||||
|
5.0,
|
||||||
|
5.0
|
||||||
|
],
|
||||||
|
"minor-tick-size": [
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"mouse-pos-padding": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"plot-border-size": 1.0,
|
||||||
|
"plot-default-size": [
|
||||||
|
400.0,
|
||||||
|
300.0
|
||||||
|
],
|
||||||
|
"plot-min-size": [
|
||||||
|
200.0,
|
||||||
|
150.0
|
||||||
|
],
|
||||||
|
"plot-padding": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
45
homes/modules/themeing/wallust/templates/kitty-template.conf
Normal file
45
homes/modules/themeing/wallust/templates/kitty-template.conf
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
# background & foreground
|
||||||
|
foreground {{ foreground }}
|
||||||
|
background {{ background }}
|
||||||
|
selection_foreground {{ background }}
|
||||||
|
selection_background {{ foreground }}
|
||||||
|
|
||||||
|
# cursor
|
||||||
|
cursor {{ cursor }}
|
||||||
|
cursor_text_color {{ cursor }}
|
||||||
|
|
||||||
|
# other cursor colors to use
|
||||||
|
# cursor: foreground
|
||||||
|
# cursor_text_color: color8
|
||||||
|
|
||||||
|
# black
|
||||||
|
color0 {{ color0 }}
|
||||||
|
color8 {{ color8 }}
|
||||||
|
|
||||||
|
# red
|
||||||
|
color1 {{ color1 }}
|
||||||
|
color9 {{ color9 }}
|
||||||
|
|
||||||
|
# green
|
||||||
|
color2 {{ color2 }}
|
||||||
|
color10 {{ color10 }}
|
||||||
|
|
||||||
|
# yellow
|
||||||
|
color3 {{ color3 }}
|
||||||
|
color11 {{ color11 }}
|
||||||
|
|
||||||
|
# blue
|
||||||
|
color4 {{ color4 }}
|
||||||
|
color12 {{ color12 }}
|
||||||
|
|
||||||
|
# magenta
|
||||||
|
color5 {{ color5 }}
|
||||||
|
color13 {{ color13 }}
|
||||||
|
|
||||||
|
# cyan
|
||||||
|
color6 {{ color6 }}
|
||||||
|
color14 {{ color14 }}
|
||||||
|
|
||||||
|
# white
|
||||||
|
color7 {{ color7 }}
|
||||||
|
color15 {{ color15 }}
|
||||||
18
homes/modules/themeing/wallust/templates/neovim-template
Normal file
18
homes/modules/themeing/wallust/templates/neovim-template
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
{{ color0 }}
|
||||||
|
{{ color1 }}
|
||||||
|
{{ color2 }}
|
||||||
|
{{ color3 }}
|
||||||
|
{{ color4 }}
|
||||||
|
{{ color5 }}
|
||||||
|
{{ color6 }}
|
||||||
|
{{ color7 }}
|
||||||
|
{{ color8 }}
|
||||||
|
{{ color9 }}
|
||||||
|
{{ color10 }}
|
||||||
|
{{ color11 }}
|
||||||
|
{{ color12 }}
|
||||||
|
{{ color13 }}
|
||||||
|
{{ color14 }}
|
||||||
|
{{ color15 }}
|
||||||
|
{{ background }}
|
||||||
|
{{ foreground }}
|
||||||
18
homes/modules/themeing/wallust/templates/waybar-template.css
Normal file
18
homes/modules/themeing/wallust/templates/waybar-template.css
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
@define-color colorbg {{ background }};
|
||||||
|
@define-color colorfg {{ foreground }};
|
||||||
|
@define-color color00 {{ color0 }};
|
||||||
|
@define-color color01 {{ color1 }};
|
||||||
|
@define-color color02 {{ color2 }};
|
||||||
|
@define-color color03 {{ color3 }};
|
||||||
|
@define-color color04 {{ color4 }};
|
||||||
|
@define-color color05 {{ color5 }};
|
||||||
|
@define-color color06 {{ color6 }};
|
||||||
|
@define-color color07 {{ color7 }};
|
||||||
|
@define-color color08 {{ color8 }};
|
||||||
|
@define-color color09 {{ color9 }};
|
||||||
|
@define-color color10 {{ color10 }};
|
||||||
|
@define-color color11 {{ color11 }};
|
||||||
|
@define-color color12 {{ color12 }};
|
||||||
|
@define-color color13 {{ color13 }};
|
||||||
|
@define-color color14 {{ color14 }};
|
||||||
|
@define-color color15 {{ color15 }};
|
||||||
45
homes/modules/themeing/wallust/templates/zellij-template.kdl
Normal file
45
homes/modules/themeing/wallust/templates/zellij-template.kdl
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
themes {
|
||||||
|
base16 {
|
||||||
|
ribbon_unselected {
|
||||||
|
base {{ background | red }} {{ background | green }} {{ background | blue }}
|
||||||
|
background {{ color0 | red }} {{ color0 | green }} {{ color0 | blue }}
|
||||||
|
emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
}
|
||||||
|
ribbon_selected {
|
||||||
|
base {{ background | red }} {{ background | green }} {{ background | blue }}
|
||||||
|
background {{ color12 | red }} {{ color12 | green }} {{ color12 | blue }}
|
||||||
|
emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
}
|
||||||
|
|
||||||
|
frame_unselected {
|
||||||
|
base {{ color1 | red }} {{ color1 | green }} {{ color1 | blue }}
|
||||||
|
background {{ background | red }} {{ background | green }} {{ background | blue }}
|
||||||
|
emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
}
|
||||||
|
frame_selected {
|
||||||
|
base {{ color14 | red }} {{ color14 | green }} {{ color14 | blue }}
|
||||||
|
background {{ background | red }} {{ background | green }} {{ background | blue }}
|
||||||
|
emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
}
|
||||||
|
frame_highlight {
|
||||||
|
base {{ color13 | red }} {{ color13 | green }} {{ color13 | blue }}
|
||||||
|
background {{ background | red }} {{ background | green }} {{ background | blue }}
|
||||||
|
emphasis_0 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_1 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_2 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
emphasis_3 {{ foreground | red }} {{ foreground | green }} {{ foreground | blue }}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
20
homes/modules/themeing/wallust/wallust.nix
Normal file
20
homes/modules/themeing/wallust/wallust.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{ config, inputs, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
wallust
|
||||||
|
];
|
||||||
|
|
||||||
|
# writes ./wallust.toml to ~/.config/wallust/wallust.toml
|
||||||
|
xdg.configFile."wallust/wallust.toml" = {
|
||||||
|
source = ./wallust.toml;
|
||||||
|
};
|
||||||
|
|
||||||
|
# writes ./templates to ~/.config/wallust/templates
|
||||||
|
xdg.configFile."wallust/templates" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ./templates;
|
||||||
|
};
|
||||||
|
}
|
||||||
35
homes/modules/themeing/wallust/wallust.toml
Normal file
35
homes/modules/themeing/wallust/wallust.toml
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
check_contrast = true
|
||||||
|
|
||||||
|
[templates]
|
||||||
|
vesktop.template = "discord-template.css"
|
||||||
|
vesktop.target = "~/.config/vesktop/themes/base16-colors.css"
|
||||||
|
|
||||||
|
vencord.template = "discord-template.css"
|
||||||
|
vencord.target = "~/.config/Vencord/themes/base16-colors.css"
|
||||||
|
|
||||||
|
equibop.template = "discord-template.css"
|
||||||
|
equibop.target = "~/.config/equibop/themes/base16-colors.css"
|
||||||
|
|
||||||
|
equicord.template = "discord-template.css"
|
||||||
|
equicord.target = "~/.config/Equicord/themes/base16-colors.css"
|
||||||
|
|
||||||
|
kitty.template = "kitty-template.conf"
|
||||||
|
kitty.target = "~/.config/kitty/theme.conf"
|
||||||
|
|
||||||
|
hyprland.template = "hyprland-template.conf"
|
||||||
|
hyprland.target = "~/.config/hypr/colors.conf"
|
||||||
|
|
||||||
|
waybar.template = "waybar-template.css"
|
||||||
|
waybar.target = "~/.config/waybar/colors.css"
|
||||||
|
|
||||||
|
neovim.template = "neovim-template"
|
||||||
|
neovim.target = "~/.cache/nvim/neovim-colors"
|
||||||
|
|
||||||
|
aurorashell.template = "aurorashell-template.toml"
|
||||||
|
aurorashell.target = "~/.config/aurorashell/colors.toml"
|
||||||
|
|
||||||
|
zellij.template = "zellij-template.kdl"
|
||||||
|
zellij.target = "~/.config/zellij/themes/base16.kdl"
|
||||||
|
|
||||||
|
imhex.template = "imhex-template.theme"
|
||||||
|
imhex.target = "~/.local/share/imhex/themes/base16.theme"
|
||||||
43
homes/modules/wm/hyprland/hypr/keybinds/virtual.conf
Normal file
43
homes/modules/wm/hyprland/hypr/keybinds/virtual.conf
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# a submap for emulating keys/buttons/functions on the keyboard or mouse
|
||||||
|
|
||||||
|
bind = $mod+shift+alt, a, submap, virtual
|
||||||
|
submap = virtual
|
||||||
|
|
||||||
|
# exit submap
|
||||||
|
bind = , escape, submap, reset
|
||||||
|
|
||||||
|
# emulates mouse buttons
|
||||||
|
bind = , z, exec, wlrctl pointer click left
|
||||||
|
bind = , x, exec, wlrctl pointer click right
|
||||||
|
bind = , s, exec, wlrctl pointer click middle
|
||||||
|
bind = , i, exec, wlrctl pointer click forward
|
||||||
|
bind = , o, exec, wlrctl pointer click back
|
||||||
|
|
||||||
|
# emulates the arrow keys using hjkl
|
||||||
|
#binde = , h, exec, wtype -k Left
|
||||||
|
#binde = , j, exec, wtype -k Down
|
||||||
|
#binde = , k, exec, wtype -k Up
|
||||||
|
#binde = , l, exec, wtype -k Right
|
||||||
|
|
||||||
|
# moves the mouse pointer
|
||||||
|
binde = , h, exec, wlrctl pointer move -30 0
|
||||||
|
binde = , j, exec, wlrctl pointer move 0 30
|
||||||
|
binde = , k, exec, wlrctl pointer move 0 -30
|
||||||
|
binde = , l, exec, wlrctl pointer move 30 0
|
||||||
|
|
||||||
|
# moves the mouse pointer in little steps
|
||||||
|
binde = alt, h, exec, wlrctl pointer move -15 0
|
||||||
|
binde = alt, j, exec, wlrctl pointer move 0 15
|
||||||
|
binde = alt, k, exec, wlrctl pointer move 0 -15
|
||||||
|
binde = alt, l, exec, wlrctl pointer move 15 0
|
||||||
|
|
||||||
|
# emulates scrolling with mouse
|
||||||
|
binde = , e, exec, wlrctl pointer scroll 0 -15 # scroll up
|
||||||
|
binde = , y, exec, wlrctl pointer scroll 0 15 # scroll down
|
||||||
|
binde = alt, e, exec, wlrctl pointer scroll -15 0 # scroll left
|
||||||
|
binde = alt, y, exec, wlrctl pointer scroll 0 15 # scroll right
|
||||||
|
|
||||||
|
# catches all other keys and keeps us in the submap
|
||||||
|
bind = , catchall, submap, virtual
|
||||||
|
|
||||||
|
submap = reset
|
||||||
19
homes/modules/wm/hyprland/hypr/theme.conf
Normal file
19
homes/modules/wm/hyprland/hypr/theme.conf
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
general {
|
||||||
|
# border colors that works in most situations
|
||||||
|
col.inactive_border = rgb($colorbg) rgb($color09) 45deg
|
||||||
|
col.active_border = rgb($colorfg) rgb($color11) 45deg
|
||||||
|
|
||||||
|
# transparent inactive border colors
|
||||||
|
# col.inactive_border = rgba($color01,0.0) rgba($color03,0.0) 45deg
|
||||||
|
|
||||||
|
# experimental border colors that may not look good all the time
|
||||||
|
# col.inactive_border = rgba($color01,0.6) rgba($color03,0.6) 45deg
|
||||||
|
# col.active_border = rgb($color09) rgb($color11) 45deg
|
||||||
|
}
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
shadow {
|
||||||
|
enabled = false
|
||||||
|
range = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
61
homes/modules/wm/hyprland/hypr/windowrules.conf
Normal file
61
homes/modules/wm/hyprland/hypr/windowrules.conf
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
# window rules
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------- #
|
||||||
|
# task manager
|
||||||
|
windowrule {
|
||||||
|
name = task-manager
|
||||||
|
match:class = ^(kitty)$
|
||||||
|
match:title = ^(btop)$
|
||||||
|
float = true
|
||||||
|
center = true
|
||||||
|
size = (monitor_w*0.65) (monitor_h*0.65)
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------- #
|
||||||
|
# terminal filechooser
|
||||||
|
windowrule {
|
||||||
|
name = terminal-filechooser
|
||||||
|
match:class = ^(kitty)$
|
||||||
|
match:title = ^(filechooser)$
|
||||||
|
float = true
|
||||||
|
center = true
|
||||||
|
size = (monitor_w*0.85) (monitor_h*0.85)
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------- #
|
||||||
|
# yazi explorer
|
||||||
|
#windowrule {
|
||||||
|
#name = yazi
|
||||||
|
#match:class = ^(kitty)$
|
||||||
|
#match:title = ^(yazi)$
|
||||||
|
#float = true
|
||||||
|
#center = true
|
||||||
|
#size = (monitor_w*0.85) (monitor_h*0.85)
|
||||||
|
#}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------- #
|
||||||
|
# kitty - blur
|
||||||
|
windowrule {
|
||||||
|
name = kitty-blur
|
||||||
|
match:class = ^(kitty)$
|
||||||
|
match:fullscreen = false
|
||||||
|
opacity = 0.95
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------- #
|
||||||
|
# imhex - blur
|
||||||
|
windowrule {
|
||||||
|
name = imhex-blur
|
||||||
|
match:class = ^(imhex)$
|
||||||
|
match:fullscreen = false
|
||||||
|
opacity = 0.97
|
||||||
|
}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------- #
|
||||||
|
# discord - blur
|
||||||
|
windowrule {
|
||||||
|
name = discord-blur
|
||||||
|
match:initial_title = ^(Discord|Discord Popout)$
|
||||||
|
match:fullscreen = false
|
||||||
|
opacity = 0.97
|
||||||
|
}
|
||||||
314
homes/modules/wm/hyprland/hyprland.nix
Normal file
314
homes/modules/wm/hyprland/hyprland.nix
Normal file
|
|
@ -0,0 +1,314 @@
|
||||||
|
{ config, inputs, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = null;
|
||||||
|
portalPackage = null;
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
#inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprscrolling
|
||||||
|
];
|
||||||
|
|
||||||
|
xwayland.enable = true;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
source = ./colors.conf
|
||||||
|
source = ./theme.conf
|
||||||
|
source = ./windowrules.conf
|
||||||
|
|
||||||
|
source = ./keybinds/virtual.conf
|
||||||
|
'';
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
# shorthand command keywords
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
# applications
|
||||||
|
"$terminal" = "kitty";
|
||||||
|
"$explorer" = "kitty -e yazi";
|
||||||
|
"$browser" = "zen";
|
||||||
|
|
||||||
|
# menu
|
||||||
|
"$menu" = "rofi";
|
||||||
|
|
||||||
|
# startup programs
|
||||||
|
exec-once = [
|
||||||
|
"waybar"
|
||||||
|
"awww-daemon"
|
||||||
|
|
||||||
|
"wl-paste --type text --watch cliphist store"
|
||||||
|
"wl-paste --type image --watch cliphist store"
|
||||||
|
"wl-clip-persist --clipboard regular"
|
||||||
|
|
||||||
|
"playerctld daemon"
|
||||||
|
|
||||||
|
# swaps around the 3rd and 4th workspace because they always start
|
||||||
|
# in the wrong order
|
||||||
|
"hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 4 && hyprctl dispatch workspace 5 && hyprctl dispatch workspace 3 && hyprctl dispatch workspace 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
# monitor configuration
|
||||||
|
monitor = [
|
||||||
|
# note: display stream compression pending for open source
|
||||||
|
# amd gpu driver and my monitor (VG279QM) only supports DP 1.2
|
||||||
|
# so no >240hz atm
|
||||||
|
"DP-2, 1920x1080@239.76, 0x0, 1" # main monitor
|
||||||
|
"DP-3, 1920x1080@143.61, 1920x0, 1" # second monitor
|
||||||
|
"HDMI-A-2, 2560x1440@59.95, 3840x0, 1" # third monitor (drawing tablet)
|
||||||
|
"HDMI-A-1, 1920x1080@60.00, -1920x0, 1" # tv
|
||||||
|
];
|
||||||
|
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = "0, 10, 10, 10";
|
||||||
|
border_size = 2;
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
|
||||||
|
plugin = {
|
||||||
|
# options at https://github.com/hyprwm/hyprland-plugins/tree/main/hyprscrolling
|
||||||
|
hyprscrolling = {
|
||||||
|
fullscreen_on_one_column = false;
|
||||||
|
column_width = 1.0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
preserve_split = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
rounding = 8;
|
||||||
|
|
||||||
|
active_opacity = 1.00;
|
||||||
|
inactive_opacity = 1.00;
|
||||||
|
|
||||||
|
blur = {
|
||||||
|
xray = true;
|
||||||
|
size = 6;
|
||||||
|
passes = 2;
|
||||||
|
#vibrancy = 0.3;
|
||||||
|
special = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
bezier = [
|
||||||
|
"workspace_curve, 0.56,0.19,0.24,0.58"
|
||||||
|
"workspace_in_curve, 0.56,0.19,0.56,0.99"
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
#"workspaces, 1, 1.94, workspace_in_curve, slide"
|
||||||
|
#"workspacesIn, 1, 1.21, workspace_in_curve, slide"
|
||||||
|
#"workspacesOut, 1, 1.94, workspace_in_curve, slide"
|
||||||
|
];
|
||||||
|
|
||||||
|
input = {
|
||||||
|
repeat_rate = 50;
|
||||||
|
repeat_delay = 300;
|
||||||
|
|
||||||
|
sensitivity = 0; # 0 = no modification
|
||||||
|
accel_profile = "flat";
|
||||||
|
force_no_accel = false; # not recommended to turn on
|
||||||
|
};
|
||||||
|
|
||||||
|
cursor.no_hardware_cursors = true;
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
enable_anr_dialog = false;
|
||||||
|
font_family = "DepartureMono Nerd Font";
|
||||||
|
};
|
||||||
|
|
||||||
|
# bindings
|
||||||
|
bind = [
|
||||||
|
# binds for applications
|
||||||
|
"$mod, t, exec, $terminal"
|
||||||
|
"$mod, r, exec, $browser"
|
||||||
|
"$mod, e, exec, $explorer"
|
||||||
|
|
||||||
|
# binds for rofi
|
||||||
|
"$mod, d, exec, pkill -x rofi || rofi -show drun -show-icons"
|
||||||
|
"alt, tab, exec, pkill -x rofi || rofi -modi window -show window -show-icons"
|
||||||
|
"$mod, v, exec, pkill -x rofi || cliphist list | rofi -dmenu | cliphist decode | wl-copy"
|
||||||
|
|
||||||
|
# screenshots
|
||||||
|
# todo: add active monitor
|
||||||
|
"$mod, s, exec, grim -g \"\$(slurp -d)\" - | wl-copy" # region
|
||||||
|
"$mod+alt, s, exec, grim -g \"\$(slurp -o)\" - | wl-copy" # monitor
|
||||||
|
"$mod+ctrl, s, exec, grim - | wl-copy" # all monitors
|
||||||
|
|
||||||
|
# hyprpicker
|
||||||
|
"$mod, n, exec, hyprpicker -v"
|
||||||
|
# hyprlock
|
||||||
|
"$mod+alt, y, exec, hyprlock"
|
||||||
|
# task manager
|
||||||
|
"$mod+ctrl, escape, exec, task-manager.sh"
|
||||||
|
"$mod+ctrl, grave, exec, task-manager.sh"
|
||||||
|
|
||||||
|
# media binds (more in binde below)
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
|
", XF86AudioNext, exec, playerctl next"
|
||||||
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
|
"Shift_R, XF86AudioPlay, exec, playerctl shuffle toggle"
|
||||||
|
"Shift_R, XF86AudioNext, exec, playerctl loop track"
|
||||||
|
|
||||||
|
# manage windows / session
|
||||||
|
"$mod+alt, c, killactive"
|
||||||
|
"$mod, f, fullscreen"
|
||||||
|
"$mod, x, togglefloating"
|
||||||
|
"$mod, i, togglesplit"
|
||||||
|
"$mod+Alt, Delete, exit" # exit hyprland
|
||||||
|
|
||||||
|
# move focus
|
||||||
|
"$mod, h, movefocus, l"
|
||||||
|
"$mod, j, movefocus, d"
|
||||||
|
"$mod, k, movefocus, u"
|
||||||
|
"$mod, l, movefocus, r"
|
||||||
|
|
||||||
|
# move window
|
||||||
|
"$mod+alt, h, movewindow, l"
|
||||||
|
"$mod+alt, j, movewindow, d"
|
||||||
|
"$mod+alt, k, movewindow, u"
|
||||||
|
"$mod+alt, l, movewindow, r"
|
||||||
|
|
||||||
|
# swap window
|
||||||
|
"$mod+ctrl, h, swapwindow, l"
|
||||||
|
"$mod+ctrl, j, swapwindow, d"
|
||||||
|
"$mod+ctrl, k, swapwindow, u"
|
||||||
|
"$mod+ctrl, l, swapwindow, r"
|
||||||
|
|
||||||
|
# move column (hyprscrolling)
|
||||||
|
"$mod, period, layoutmsg, move +col"
|
||||||
|
"$mod, comma, layoutmsg, move -col"
|
||||||
|
|
||||||
|
# focus monitor
|
||||||
|
#"$mod+Ctrl+Tab, 1, focusmonitor, DP-2"
|
||||||
|
#"$mod+Ctrl+Tab, 2, focusmonitor, DP-3"
|
||||||
|
#"$mod+Ctrl+Tab, 3, focusmonitor, HDMI-A-2"
|
||||||
|
#"$mod+Ctrl+Tab, 4, focusmonitor, HDMI-A-1"
|
||||||
|
|
||||||
|
# move workspace to monitor
|
||||||
|
#"$mod+Tab, 1, movecurrentworkspacetomonitor, DP-2"
|
||||||
|
#"$mod+Tab, 2, movecurrentworkspacetomonitor, DP-3"
|
||||||
|
#"$mod+Tab, 3, movecurrentworkspacetomonitor, HDMI-A-2"
|
||||||
|
#"$mod+Tab, 4, movecurrentworkspacetomonitor, HDMI-A-1"
|
||||||
|
|
||||||
|
# special workspace
|
||||||
|
"$mod, escape, togglespecialworkspace"
|
||||||
|
"$mod+shift, escape, movetoworkspace, special"
|
||||||
|
"$mod+alt, escape, movetoworkspacesilent, special"
|
||||||
|
"$mod, grave, togglespecialworkspace"
|
||||||
|
"$mod+shift, grave, movetoworkspace, special"
|
||||||
|
"$mod+alt, grave, movetoworkspacesilent, special"
|
||||||
|
|
||||||
|
# switch workspaces
|
||||||
|
"$mod, 1, workspace, 1"
|
||||||
|
"$mod, 2, workspace, 2"
|
||||||
|
"$mod, 3, workspace, 3"
|
||||||
|
"$mod, 4, workspace, 4"
|
||||||
|
"$mod, 5, workspace, 5"
|
||||||
|
"$mod, 6, workspace, 6"
|
||||||
|
"$mod, 7, workspace, 7"
|
||||||
|
"$mod, 8, workspace, 8"
|
||||||
|
"$mod, 9, workspace, 9"
|
||||||
|
"$mod, 0, workspace, 10"
|
||||||
|
"$mod, minus, workspace, 11"
|
||||||
|
"$mod, equal, workspace, 12"
|
||||||
|
|
||||||
|
# move focused window to workspace
|
||||||
|
"$mod+shift, 1, movetoworkspace, 1"
|
||||||
|
"$mod+shift, 2, movetoworkspace, 2"
|
||||||
|
"$mod+shift, 3, movetoworkspace, 3"
|
||||||
|
"$mod+shift, 4, movetoworkspace, 4"
|
||||||
|
"$mod+shift, 5, movetoworkspace, 5"
|
||||||
|
"$mod+shift, 6, movetoworkspace, 6"
|
||||||
|
"$mod+shift, 7, movetoworkspace, 7"
|
||||||
|
"$mod+shift, 8, movetoworkspace, 8"
|
||||||
|
"$mod+shift, 9, movetoworkspace, 9"
|
||||||
|
"$mod+shift, 0, movetoworkspace, 10"
|
||||||
|
"$mod+shift, minus, movetoworkspace, 11"
|
||||||
|
"$mod+shift, equal, movetoworkspace, 12"
|
||||||
|
|
||||||
|
# move focused window to workspace silently
|
||||||
|
"$mod+alt, 1, movetoworkspacesilent, 1"
|
||||||
|
"$mod+alt, 2, movetoworkspacesilent, 2"
|
||||||
|
"$mod+alt, 3, movetoworkspacesilent, 3"
|
||||||
|
"$mod+alt, 4, movetoworkspacesilent, 4"
|
||||||
|
"$mod+alt, 5, movetoworkspacesilent, 5"
|
||||||
|
"$mod+alt, 6, movetoworkspacesilent, 6"
|
||||||
|
"$mod+alt, 7, movetoworkspacesilent, 7"
|
||||||
|
"$mod+alt, 8, movetoworkspacesilent, 8"
|
||||||
|
"$mod+alt, 9, movetoworkspacesilent, 9"
|
||||||
|
"$mod+alt, 0, movetoworkspacesilent, 10"
|
||||||
|
"$mod+alt, minus, movetoworkspacesilent, 11"
|
||||||
|
"$mod+alt, equal, movetoworkspacesilent, 12"
|
||||||
|
|
||||||
|
# move current workspace to monitor
|
||||||
|
"$mod+shift+alt, 1, movecurrentworkspacetomonitor, DP-2"
|
||||||
|
"$mod+shift+alt, 2, movecurrentworkspacetomonitor, DP-3"
|
||||||
|
"$mod+shift+alt, 3, movecurrentworkspacetomonitor, HDMI-A-2"
|
||||||
|
"$mod+shift+alt, 4, movecurrentworkspacetomonitor, HDMI-A-1"
|
||||||
|
];
|
||||||
|
|
||||||
|
# bindings for mouse
|
||||||
|
bindm = [
|
||||||
|
"$mod, mouse:272, movewindow" # left click
|
||||||
|
"$mod, mouse:273, resizewindow" # right click
|
||||||
|
];
|
||||||
|
|
||||||
|
# repeating binds, repeats when held
|
||||||
|
binde = [
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
|
"Shift_R, XF86AudioRaiseVolume, exec, playerctl volume 0.05+"
|
||||||
|
"Shift_R, XF86AudioLowerVolume, exec, playerctl volume 0.05-"
|
||||||
|
|
||||||
|
# resize window
|
||||||
|
# variable for `resizeactive` is (x, y)
|
||||||
|
# starting at 0, 0 in the top left
|
||||||
|
# meaning:
|
||||||
|
# -x = left
|
||||||
|
# +x = right
|
||||||
|
# -y = up
|
||||||
|
# +y = down
|
||||||
|
"$mod+ctrl+shift, h, resizeactive, -10 0"
|
||||||
|
"$mod+ctrl+shift, j, resizeactive, 0 10"
|
||||||
|
"$mod+ctrl+shift, k, resizeactive, 0 -10"
|
||||||
|
"$mod+ctrl+shift, l, resizeactive, 10 0"
|
||||||
|
];
|
||||||
|
|
||||||
|
layerrule = [
|
||||||
|
#"blur, rofi"
|
||||||
|
#"ignorezero, rofi"
|
||||||
|
#"blur, aurorashell"
|
||||||
|
#"ignorealpha 0.7, aurorashell"
|
||||||
|
"blur on, match:namespace waybar"
|
||||||
|
"ignore_alpha 0, match:namespace waybar"
|
||||||
|
];
|
||||||
|
|
||||||
|
env = [
|
||||||
|
"EDITOR,auravim"
|
||||||
|
|
||||||
|
"XCURSOR_THEME,Bunny (Icy) and Strawberries"
|
||||||
|
"XCURSOR_SIZE,24"
|
||||||
|
"HYPRCURSOR_THEME,Bunny (Icy) and Strawberries"
|
||||||
|
"HYPRCURSOR_SIZE,24"
|
||||||
|
|
||||||
|
"QT_QPA_PLATFORM,wayland"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# extra hyprland config for organisation,
|
||||||
|
# and to load colors.conf
|
||||||
|
# writes ./hypr to ~/.config/hypr
|
||||||
|
xdg.configFile."hypr" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ./hypr;
|
||||||
|
};
|
||||||
|
}
|
||||||
83
homes/modules/wm/river.nix
Normal file
83
homes/modules/wm/river.nix
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
{ config, inputs, pkgs, upkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
wayland.windowManager.river = let
|
||||||
|
layout = "rivertile";
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-;
|
||||||
|
|
||||||
|
settings = let
|
||||||
|
main = "Super";
|
||||||
|
|
||||||
|
# applications
|
||||||
|
terminal = "kitty";
|
||||||
|
browser = "firefox";
|
||||||
|
in {
|
||||||
|
default-layout = "${layout}";
|
||||||
|
output-layout = "${layout}";
|
||||||
|
border-width = 1;
|
||||||
|
|
||||||
|
spawn = [
|
||||||
|
''${layout}''
|
||||||
|
|
||||||
|
"awww-daemon"
|
||||||
|
"waybar"
|
||||||
|
];
|
||||||
|
|
||||||
|
map.normal = {
|
||||||
|
"${main} C" = "close"; # close focused window
|
||||||
|
"${main}+Alt Delete" = "exit"; # exit river
|
||||||
|
|
||||||
|
# app launcher
|
||||||
|
"${main} D" = ''spawn "pkill -x rofi || rofi -show drun -show-icons"'';
|
||||||
|
"Alt Tab" = ''spawn "pkill -x rofi || rofi -modi window -show window -show-icons"'';
|
||||||
|
|
||||||
|
# spawn applications
|
||||||
|
"${main} T" = ''spawn "${terminal}"'';
|
||||||
|
"${main} R" = ''spawn "${browser}"'';
|
||||||
|
|
||||||
|
# move focused view to top of layout stack
|
||||||
|
"${main} N" = ''zoom'';
|
||||||
|
|
||||||
|
# focus next/previous view
|
||||||
|
"${main} J" = "focus-view previous";
|
||||||
|
"${main} K" = "focus-view next";
|
||||||
|
# move to next/previous output
|
||||||
|
"${main} H" = "focus-output previous";
|
||||||
|
"${main} L" = "focus-output next";
|
||||||
|
|
||||||
|
# swap next/previous view
|
||||||
|
"${main}+Alt J" = "swap previous";
|
||||||
|
"${main}+Alt K" = "swap next";
|
||||||
|
# send view to next/previous output
|
||||||
|
# and switch to that output (wip)
|
||||||
|
"${main}+Alt H" = "send-to-output previous";
|
||||||
|
#"${main}+Alt H" = "focus-output previous";
|
||||||
|
"${main}+Alt L" = "send-to-output next";
|
||||||
|
#"${main}+Alt L" = "focus-output next";
|
||||||
|
|
||||||
|
# move views
|
||||||
|
#"${main}+Alt H" = "move left 100";
|
||||||
|
#"${main}+Alt J" = "move down 100";
|
||||||
|
#"${main}+Alt K" = "move up 100";
|
||||||
|
#"${main}+Alt L" = "move right 100";
|
||||||
|
|
||||||
|
# snap views
|
||||||
|
#"${main}+Control H" = "snap left";
|
||||||
|
#"${main}+Control J" = "snap down";
|
||||||
|
#"${main}+Control K" = "snap up";
|
||||||
|
#"${main}+Control L" = "snap right";
|
||||||
|
|
||||||
|
# resize views
|
||||||
|
#"${main}+Shift H" = "resize horizontal -100";
|
||||||
|
#"${main}+Shift J" = "resize vertical -100";
|
||||||
|
#"${main}+Shift K" = "resize vertical 100";
|
||||||
|
#"${main}+Shift L" = "resize horizontal 100";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
53
homes/modules/wm/sway.nix
Normal file
53
homes/modules/wm/sway.nix
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
{ config, inputs, pkgs, ... }:
|
||||||
|
let
|
||||||
|
unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = true;
|
||||||
|
config = rec {
|
||||||
|
modifier = "Mod4"; # Mod4 = Super/Meta
|
||||||
|
terminal = "kitty";
|
||||||
|
|
||||||
|
# disable sway bar
|
||||||
|
bars = [ ];
|
||||||
|
|
||||||
|
# set border colors
|
||||||
|
#colors = {
|
||||||
|
#focused =
|
||||||
|
|
||||||
|
startup = [
|
||||||
|
{ command = "awww-daemon"; }
|
||||||
|
{ command = "waybar"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
keybindings = let
|
||||||
|
main = config.wayland.windowManager.sway.config.modifier;
|
||||||
|
terminal = config.wayland.windowManager.sway.config.terminal;
|
||||||
|
browser = "firefox";
|
||||||
|
in {
|
||||||
|
"${main}+c" = "kill"; # close focused window
|
||||||
|
"${main}+Alt+Delete" = "exit"; # exit sway
|
||||||
|
|
||||||
|
# open launcher
|
||||||
|
"${main}+d" = "exec pkill -x rofi || rofi -show drun -show-icons";
|
||||||
|
"Alt+Tab" = "exec pkill -x rofi || rofi -modi window -show window -show-icons";
|
||||||
|
|
||||||
|
"${main}+t" = "exec ${terminal}"; # open terminal
|
||||||
|
"${main}+r" = "exec ${browser}"; # open browser
|
||||||
|
|
||||||
|
# move focus
|
||||||
|
"${main}+h" = "focus left";
|
||||||
|
"${main}+j" = "focus down";
|
||||||
|
"${main}+k" = "focus up";
|
||||||
|
"${main}+l" = "focus right";
|
||||||
|
|
||||||
|
# move focused window
|
||||||
|
"${main}+Alt+h" = "move left";
|
||||||
|
"${main}+Alt+j" = "move down";
|
||||||
|
"${main}+Alt+k" = "move up";
|
||||||
|
"${main}+Alt+l" = "move right";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
371
hosts/nixarawrui/default.nix
Normal file
371
hosts/nixarawrui/default.nix
Normal file
|
|
@ -0,0 +1,371 @@
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
upkgs,
|
||||||
|
root,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
hyprland-git = inputs.hyprland-git.packages.${pkgs.stdenv.hostPlatform.system};
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
|
||||||
|
./modules/amdgpu-ignore-ctx-privileges.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable the Flakes feature and the accompaying new nix command-line tool
|
||||||
|
nix.settings = {
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
download-buffer-size = 524288000;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot = rec {
|
||||||
|
initrd.kernelModules = ["amdgpu"];
|
||||||
|
|
||||||
|
loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest-lto-x86_64-v4;
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
kernelModules = ["v4l2loopback"];
|
||||||
|
extraModulePackages = with kernelPackages; [v4l2loopback];
|
||||||
|
|
||||||
|
# qemu
|
||||||
|
# boot.binfmt.emulatedSystems = [
|
||||||
|
# "riscv64-linux"
|
||||||
|
# ];
|
||||||
|
# the following line is from:
|
||||||
|
# https://discourse.nixos.org/t/chroot-into-arm-container-with-systemd-nspawn/34735
|
||||||
|
# fixed my arch-chroot issue when trying to setup a risc v sd card for
|
||||||
|
# the mango pi mq pro
|
||||||
|
binfmt.preferStaticEmulators = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# bluetooth
|
||||||
|
services.blueman.enable = true; # gui bluetooth manager
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "nixarawrui";
|
||||||
|
networkmanager.enable = true;
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
# allows wireguard to route all traffic through default route <3
|
||||||
|
checkReversePath = "loose";
|
||||||
|
|
||||||
|
allowedTCPPorts = [
|
||||||
|
21110 # slimevr
|
||||||
|
44949 # rquickshare
|
||||||
|
];
|
||||||
|
allowedUDPPorts = [
|
||||||
|
6969 # slimevr
|
||||||
|
8266 # slimevr
|
||||||
|
35903 # slimevr
|
||||||
|
44949 # rquickshare
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nftables.enable = true;
|
||||||
|
wireguard.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# hardware / driver stuff
|
||||||
|
hardware = {
|
||||||
|
keyboard = {
|
||||||
|
qmk.enable = true;
|
||||||
|
};
|
||||||
|
opentabletdriver.enable = true;
|
||||||
|
wooting.enable = true;
|
||||||
|
xone.enable = true;
|
||||||
|
bluetooth.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation = {
|
||||||
|
podman = {
|
||||||
|
enable = true;
|
||||||
|
dockerCompat = true;
|
||||||
|
};
|
||||||
|
waydroid.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
|
||||||
|
# makes portals work correctly
|
||||||
|
QT_QPA_PLATFORMTHEME = "xdgdesktopportal";
|
||||||
|
#QT_QPA_PLATFORMTHEME = "flatpak"; # sometimes might need this
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
wlr = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-termfilechooser
|
||||||
|
];
|
||||||
|
|
||||||
|
config.common = {
|
||||||
|
"org.freedesktop.impl.portal.FileChooser" = ["termfilechooser"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Europe/London";
|
||||||
|
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
supportedLocales = [
|
||||||
|
"en_US.UTF-8/UTF-8"
|
||||||
|
"ja_JP.UTF-8/UTF-8"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
console = {
|
||||||
|
font = "Lat2-Terminus16";
|
||||||
|
keyMap = "us";
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
libva-vdpau-driver
|
||||||
|
libvdpau-va-gl
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
displayManager.sddm.enable = true;
|
||||||
|
displayManager.sddm.wayland.enable = true;
|
||||||
|
|
||||||
|
udisks2.enable = true;
|
||||||
|
flatpak.enable = true;
|
||||||
|
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# used for piper so u can configure silly little mice :3
|
||||||
|
ratbagd.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
audio.enable = true;
|
||||||
|
wireplumber.enable = true;
|
||||||
|
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
udev = {
|
||||||
|
enable = true;
|
||||||
|
packages = with pkgs; [
|
||||||
|
# adds via support for keyboards and stuffs :3 (needs reboot)
|
||||||
|
via
|
||||||
|
|
||||||
|
# slimevr :33333333333 (i'm queer)
|
||||||
|
slimevr
|
||||||
|
platformio
|
||||||
|
];
|
||||||
|
extraRules = ''
|
||||||
|
# Wooting One Legacy
|
||||||
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff01", TAG+="uaccess"
|
||||||
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff01", TAG+="uaccess"
|
||||||
|
|
||||||
|
# Wooting One update mode
|
||||||
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402", TAG+="uaccess"
|
||||||
|
|
||||||
|
# Wooting Two LegacySUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff02", TAG+="uaccess"
|
||||||
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="ff02", TAG+="uaccess"
|
||||||
|
|
||||||
|
# Wooting Two update mode
|
||||||
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2403", TAG+="uaccess"
|
||||||
|
|
||||||
|
# Generic Wootings
|
||||||
|
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31e3", TAG+="uaccess"
|
||||||
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="31e3", TAG+="uaccess"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security = {
|
||||||
|
rtkit.enable = true;
|
||||||
|
polkit.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.libinput.enable = true;
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users = {
|
||||||
|
users.aurora = {
|
||||||
|
isNormalUser = true;
|
||||||
|
uid = 1000;
|
||||||
|
extraGroups = ["wheel" "disk" "input" "video" "audio" "networkmanager" "games"];
|
||||||
|
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
flatpak
|
||||||
|
tree
|
||||||
|
];
|
||||||
|
};
|
||||||
|
groups.games = {
|
||||||
|
gid = 7000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
|
||||||
|
users.aurora = import ../../homes/aurora;
|
||||||
|
extraSpecialArgs = {inherit inputs upkgs root;};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
# nix-ld runs unpatched dynamic binaries on nixos :3
|
||||||
|
nix-ld.enable = true;
|
||||||
|
|
||||||
|
# needed for gpg else no pinentry apparently
|
||||||
|
gnupg = {
|
||||||
|
agent.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nh = {
|
||||||
|
enable = true;
|
||||||
|
clean.enable = true;
|
||||||
|
clean.extraArgs = "--keep-since 14d --keep 8";
|
||||||
|
flake = "/etc/nixos"; # default flake
|
||||||
|
};
|
||||||
|
|
||||||
|
# hyprland, river, and sway have to be enabled here
|
||||||
|
# for there to be systemd entries for login managers
|
||||||
|
|
||||||
|
# hyprland has to be enabled here for xdg portals
|
||||||
|
# to work properly on hyprland
|
||||||
|
hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = hyprland-git.hyprland;
|
||||||
|
portalPackage = hyprland-git.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
|
||||||
|
river-classic = {
|
||||||
|
package = upkgs.river-classic; # FIX: using upkgs version as zls is broken rn ;-;
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
sway = {
|
||||||
|
enable = true;
|
||||||
|
wrapperFeatures.gtk = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# steam has to be enabled here
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.millennium-steam;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
dedicatedServer.openFirewall = true;
|
||||||
|
localNetworkGameTransfers.openFirewall = true;
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
alvr = {
|
||||||
|
enable = true;
|
||||||
|
package = upkgs.alvr;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
envision = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# any shell that you wanna use needs to be enabled globally
|
||||||
|
# to set the default shell for users
|
||||||
|
# per-user config is done in home manager
|
||||||
|
zsh.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
|
|
||||||
|
silentSDDM = {
|
||||||
|
enable = false;
|
||||||
|
theme = "rei";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# linux packages!!!
|
||||||
|
linuxPackages.v4l2loopback
|
||||||
|
|
||||||
|
# android yay
|
||||||
|
android-tools
|
||||||
|
|
||||||
|
# network manager extra packages
|
||||||
|
networkmanager-openvpn
|
||||||
|
|
||||||
|
# um makes my keyboard worky
|
||||||
|
via
|
||||||
|
|
||||||
|
# wine - needed for lutris :3
|
||||||
|
wineWowPackages.stable
|
||||||
|
|
||||||
|
# utils, apps, important default stuff ig :3
|
||||||
|
neovim
|
||||||
|
wget
|
||||||
|
git
|
||||||
|
bash
|
||||||
|
|
||||||
|
# waydroid needs it apparently for clipboard sharing??
|
||||||
|
wl-clipboard
|
||||||
|
(waydroid.override {
|
||||||
|
python3Packages = pkgs.python312Packages;
|
||||||
|
})
|
||||||
|
|
||||||
|
# game stuff :3
|
||||||
|
(lutris.override {
|
||||||
|
extraPkgs = pkgs: [
|
||||||
|
libadwaita
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(steam.override {
|
||||||
|
extraPkgs = pkgs: [
|
||||||
|
nss
|
||||||
|
xorg.libX11
|
||||||
|
xorg.libXScrnSaver
|
||||||
|
];
|
||||||
|
}).run
|
||||||
|
|
||||||
|
inputs.nix-alien.packages.${stdenv.hostPlatform.system}.nix-alien
|
||||||
|
];
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||||
|
# to actually do that.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "24.11"; # Did you read the comment?
|
||||||
|
}
|
||||||
64
hosts/nixarawrui/hardware-configuration.nix
Normal file
64
hosts/nixarawrui/hardware-configuration.nix
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=@" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" =
|
||||||
|
{ device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=@home" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" =
|
||||||
|
{ device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=@nix" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/games" =
|
||||||
|
{ device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=@games" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/data" =
|
||||||
|
{ device = "/dev/disk/by-uuid/257dd2c7-59b1-431e-a5a1-c7db00b3312b";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=@data" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/63DC-1AEB";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp10s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp9s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
32
hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix
Normal file
32
hosts/nixarawrui/modules/amdgpu-ignore-ctx-privileges.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
enabled = config.boot.kernelPatchesOptions.amd-ignore-ctx-privileges;
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
boot.kernelPatchesOptions.amd-ignore-ctx-privileges =
|
||||||
|
lib.mkEnableOption "amd-ignore-ctx-privileges";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf enabled {
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
amdgpu-ignore-ctx-privileges = super.fetchpatch {
|
||||||
|
name = "cap_sys_nice_begone.patch";
|
||||||
|
url = "https://github.com/Frogging-Family/community-patches/raw/master/linux61-tkg/cap_sys_nice_begone.mypatch";
|
||||||
|
hash = "sha256-Y3a0+x2xvHsfLax/uwycdJf3xLxvVfkfDVqjkxNaYEo=";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.kernelPatches = [
|
||||||
|
{
|
||||||
|
name = "amdgpu-ignore-ctx-privileges";
|
||||||
|
patch = pkgs.amdgpu-ignore-ctx-privileges;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
13
overlays.nix
Normal file
13
overlays.nix
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
(self: super: {
|
||||||
|
ekphos = import ../packages/ekphos {
|
||||||
|
pkgs = super;
|
||||||
|
};
|
||||||
|
|
||||||
|
element-desktop = super.element-desktop.overrideAttrs (final: prev: {
|
||||||
|
desktopItems = [
|
||||||
|
((builtins.elemAt prev.desktopItems 0).override {
|
||||||
|
exec = "element-desktop %u --password-store=\"gnome-libsecret\"";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
});
|
||||||
|
})
|
||||||
Loading…
Add table
Add a link
Reference in a new issue