feat: init

This commit is contained in:
Nick 2025-03-29 23:08:26 -05:00
commit 96c6f790fc
804 changed files with 33411 additions and 0 deletions

View file

@ -0,0 +1,18 @@
{
enabled = true;
animation = [
"border, 1, 2.2, bounce"
"fadeIn, 1, 1, bounce"
"fadeOut, 1, 4.5, bounce"
"fadeSwitch, 1, 2.2, bounce"
"windows, 1, 2.2, bounce"
"windowsOut, 1, 1.1, bounce"
"workspaces, 1, 2.2, bounce, slide"
];
bezier = [
"wind, 0, 1, 0.5, 1"
"winIn, 0, 0.5, 0, 1"
"winOut, 0, 0.5, 0, 1"
"bounce, 0.7, 1.7, 0.5, 1"
];
}

View file

@ -0,0 +1,98 @@
let
superBinds = builtins.map (x: "SUPER, " + x) [
# Apps
"Z, exec, obsidian"
"L, exec, slack"
"H, exec, feishin"
"G, exec, scrcpy"
"K, exec, ghostty -e nu -e y"
"S, exec, steam"
"R, exec, ghostty -e zellij a dotfiles"
"N, exec, signal-desktop"
"T, exec, zeditor"
"B, exec, floorp"
"X, exec, freetube"
"V, exec, discordcanary"
"M, exec, element-desktop"
"D, exec, ghostty"
"P, exec, bitwarden"
# Workspaces
"1, workspace, 1"
"2, workspace, 2"
"3, workspace, 3"
"4, workspace, 4"
"5, workspace, 5"
# Windows
"Tab, killactive"
# Window Focus
"C, movefocus, l"
"A, movefocus, u"
"E, movefocus, d"
"I, movefocus, r"
"F, splitratio, 0.33"
"O, splitratio, -0.33"
# Audio
"PageUp, exec, playerctl next"
"PageDown, exec, playerctl previous"
"Home, exec, playerctl play-pause"
"Space, exec, rm -r /home/$USER/.cache/tofi* ; tofi-drun"
];
superShiftBinds = builtins.map (x: "SUPER SHIFT, " + x) [
# Super+shift binds
# Quick Action
"T, exec, ghostty"
"S, exec, flameshot gui"
"period, exec, emote"
"Tab, fullscreen, 0"
"Backspace, layoutmsg, togglesplit"
"P, pin, enable"
"F, togglefloating"
# "Print, exec, grim -g \"$(slurp)\""
# Utility
"End, exec, shutdown now"
"Insert, exec, systemctl reboot"
"Home, exec, swaylock"
];
superCtrlBinds = builtins.map (x: "SUPER CTRL, " + x) [
# Super+shift binds
];
altBinds = builtins.map (x: "CTRL ALT, " + x) [
# Alt binds
"1, movetoworkspacesilent, 1"
"2, movetoworkspacesilent, 2"
"3, movetoworkspacesilent, 3"
"4, movetoworkspacesilent, 4"
"5, movetoworkspacesilent, 5"
# Window Move
"C, movewindow, l"
"A, movewindow, u"
"E, movewindow, d"
"I, movewindow, r"
];
shiftBinds = builtins.map (x: "SHIFT, " + x) [
# Shift binds
];
ctrlBinds = builtins.map (x: "CTRL, " + x) [
# Ctrl binds
];
ctrlShiftBinds = builtins.map (x: "CTRL SHIFT, " + x) [
# Ctrl+shift binds
# "End, exec, shutdown now"
];
in
superBinds
++ superShiftBinds
++ superCtrlBinds
++ altBinds
++ ctrlBinds
++ ctrlShiftBinds
++ shiftBinds
# Docs
# https://wiki.hyprland.org/Getting-Started/Master-Tutorial/

View file

@ -0,0 +1,91 @@
let
superBinds = builtins.map (x: "SUPER, " + x) [
# Apps
"B, exec, brave"
"E, exec, ghostty -e nu -e y"
"S, exec, steam"
"N, exec, signal-desktop"
"D, exec, discordcanary"
"R, exec, flatpak run org.vinegarhq.Sober"
"T, exec, ghostty"
"P, exec, spotify"
"M, exec, prismlauncher"
"J, exec, jellyfinmediaplayer"
"L, exec, lutris"
# Workspaces
"1, workspace, 1"
"2, workspace, 2"
"3, workspace, 3"
"4, workspace, 4"
"5, workspace, 5"
# Windows
"X, killactive"
"bracketright, splitratio, 0.33"
"bracketleft, splitratio, -0.33"
"Tab, fullscreen, 0"
"F, togglefloating"
# Window Focus
"left, movefocus, l"
"up, movefocus, u"
"down, movefocus, d"
"right, movefocus, r"
# Audio
"PageUp, exec, playerctl next"
"PageDown, exec, playerctl previous"
"Home, exec, playerctl play-pause"
"Space, exec, rm -r /home/$USER/.cache/tofi* ; tofi-drun"
];
superShiftBinds = builtins.map (x: "SUPER SHIFT, " + x) [
# Super+shift binds
# Window Move
"left, movewindow, l"
"up, movewindow, u"
"down, movewindow, d"
"right, movewindow, r"
# Quick Action
"S, exec, flameshot gui"
"period, exec, emote"
"Backspace, layoutmsg, togglesplit"
"P, pin, enable"
# "Print, exec, grim -g \"$(slurp)\""
# Utility
"End, exec, shutdown now"
"Insert, exec, systemctl reboot"
"Home, exec, swaylock"
"1, movetoworkspacesilent, 1"
"2, movetoworkspacesilent, 2"
"3, movetoworkspacesilent, 3"
"4, movetoworkspacesilent, 4"
"5, movetoworkspacesilent, 5"
];
superCtrlBinds = builtins.map (x: "SUPER CTRL, " + x) [
# Super+shift binds
];
altBinds = builtins.map (x: "ALT, " + x) [
# Alt binds
];
shiftBinds = builtins.map (x: "SHIFT, " + x) [
# Shift binds
];
ctrlBinds = builtins.map (x: "CTRL, " + x) [
# Ctrl binds
];
ctrlShiftBinds = builtins.map (x: "CTRL SHIFT, " + x) [
# Ctrl+shift binds
# "End, exec, shutdown now"
];
in
superBinds
++ superShiftBinds
++ superCtrlBinds
++ altBinds
++ ctrlBinds
++ ctrlShiftBinds
++ shiftBinds
# Docs
# https://wiki.hyprland.org/Getting-Started/Master-Tutorial/

View file

@ -0,0 +1,4 @@
[
",switch:on:Lid Switch, exec, hyprlock --immediate"
",switch:off:Lid Switch, exec, hyprlock --immediate"
]

View file

@ -0,0 +1,10 @@
let
superBinds = builtins.map (x: "SUPER, " + x) [
"mouse:272, resizewindow"
];
altBinds = builtins.map (x: "ALT, " + x) [
"mouse:272, movewindow"
];
in
superBinds ++ altBinds

View file

@ -0,0 +1,3 @@
{
"allow_workspace_cycles" = "1";
}

View file

@ -0,0 +1,36 @@
{
active_opacity = 0.95;
inactive_opacity = 0.90;
fullscreen_opacity = 1;
rounding = 10;
dim_inactive = 1;
dim_strength = 0.05;
shadow = {
enabled = true;
color = "rgba(00000000)";
ignore_window = true;
offset = "0 2";
range = 20;
render_power = 3;
scale = 0.97;
};
blur = {
enabled = true;
size = 5;
passes = 2;
brightness = 1;
contrast = 1.300000;
ignore_opacity = true;
noise = 0.011700;
new_optimizations = true;
xray = true;
popups = true;
popups_ignorealpha = 0.2;
};
}

View file

@ -0,0 +1,4 @@
{
pseudotile = true;
preserve_split = true;
}

View file

@ -0,0 +1,33 @@
{ flake, ... }:
let
inherit (flake.config.aesthetics.themes)
cursor
;
scarlettOut = "pactl set-default-sink alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y818KFJ0C671CE-00.HiFi__Line1__sink";
scarlettIn = "pactl set-default-source alsa_input.usb-Focusrite_Scarlett_2i2_USB_Y818KFJ0C671CE-00.HiFi__Mic1__source";
catppuccin = [
"gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'"
"gsettings set org.gnome.desktop.interface cursor-theme 'catppuccin-mocha-dark-cursors'"
"gsettings set org.gnome.desktop.interface cursor-size ${builtins.toString cursor.size}"
];
in
[
"swaylock"
"hypridle"
"wl-clipboard"
"wpaperd"
"gammastep"
"dunst"
"playerctrld"
"waybar"
"nm-applet"
"blueman-applet"
"rfkill block bluetooth"
"rfkill unblock bluetooth"
"easyeffects -r"
"emote"
"flameshot"
scarlettIn
scarlettOut
]
++ catppuccin

View file

@ -0,0 +1,33 @@
{
config,
flake,
...
}:
let
inherit (flake.config.aesthetics.themes) currentTheme palettes;
inherit (flake.config.people) user0 user1 user2;
user = config.home.username;
themeLogic =
if user == user0 then
currentTheme.theme0
else if user == user1 then
currentTheme.theme1
else if user == user2 then
currentTheme.theme2
else
currentTheme.theme0;
el = palettes.${themeLogic}.colours;
in
{
gaps_in = 5;
gaps_out = 5;
border_size = 2;
"col.active_border" = "rgb(${el.base0E})";
"col.inactive_border" = "0xff${el.base02}";
}

View file

@ -0,0 +1,6 @@
{
sensitivity = 0.07;
accel_profile = "flat";
follow_mouse = 1;
numlock_by_default = true;
}

View file

@ -0,0 +1,7 @@
{
focus_on_activate = 1;
force_default_wallpaper = 0;
disable_hyprland_logo = true;
disable_splash_rendering = true;
disable_hyprland_qtutils_check = true;
}

View file

@ -0,0 +1,6 @@
let
monitorSettings = [
"eDP-1,highres@highrr,0x0,1"
];
in
monitorSettings

View file

@ -0,0 +1,134 @@
let
blueman = "(.blueman-manager-wrapped)";
calculator = "(org.gnome.Calculator)";
easyeffects = "(com.github.wwmm.easyeffects)";
floorp = "(floorp)";
nomacs = "(org.nomacs.ImageLounge)";
mpv = "(mpv)";
vlc = "(vlc)";
emote = "(emote)";
flameshot = "(flameshot)";
bitwarden = "(.*Bitwarden.*)";
save = "(.*Enter name of file to save to.*)";
proton = "(.*.protonvpn-app-wrapped.*)";
picture = "(.*Picture-in-Picture.*)";
discord-popout = "(.*Discord Popout.*)";
upload = "(.*File Upload.*)";
signal = "(signal)";
vesktop = "(vesktop)";
code = "(code)";
feishin = "(feishin)";
steam = "(steam)";
kdenlive = "(org.kde.kdenlive)";
shotcut = "(shotcut)";
scrcpy = "(.scrcpy-wrapped)";
battle = "(.*Battle.net.*)";
maxsizeWindows = [
"maxsize 720 400, class:^${blueman}$"
"maxsize 360 500, class:^${calculator}$"
"maxsize 720 400, class:^${easyeffects}$"
# "maxsize 720 400, class:^${scrcpy}$"
"maxsize 720 400, class:^${mpv}$"
"maxsize 720 400, class:^${vlc}$"
"maxsize 640 360, class:^${nomacs}$"
"maxsize 1000 600, class:^${proton}$"
"maxsize 800 450, title:^${bitwarden}$"
"maxsize 720 400, title:^${picture}$"
"maxsize 720 400, title:^${save}$"
"maxsize 720 400, title:^${discord-popout}$"
"maxsize 1280 720, title:^${battle}$"
"minsize 1280 720, title:^${battle}$"
"maxsize 1280 720, title:^${upload}$"
"minsize 1280 720, title:^${upload}$"
];
floatWindows = builtins.map (x: "float, " + x) [
"class:^${blueman}$"
"class:^${calculator}$"
"class:^${easyeffects}$"
"class:^${emote}$"
"class:^${mpv}$"
"class:^${vlc}$"
"class:^${nomacs}$"
"class:^${flameshot}$"
# "class:^${scrcpy}$"
"class:^${nomacs}$"
"class:^${proton}$"
"title:^(${picture})$"
"title:^(${discord-popout})$"
"title:^${bitwarden}$"
"title:^${save}$"
"title:^${battle}$"
"title:^${upload}$"
];
pinWindows = builtins.map (x: "pin, " + x) [
"title:^${picture}$"
"title:^${discord-popout}$"
];
idleInhibit = builtins.map (x: "idleinhibit, " + x) [
"fullscreen, class:^${floorp}$"
];
workspaceInit1 = builtins.map (x: "workspace 1 silent, " + x) [
"class:^${signal}$"
"class:^${vesktop}$"
];
workspaceInit2 = builtins.map (x: "workspace 2 silent, " + x) [
"class:^${code}$"
# "class:^${floorp}$"
];
workspaceInit3 = builtins.map (x: "workspace 3 silent, " + x) [
"class:^${steam}$"
"class:^${shotcut}$"
];
workspaceInit4 = builtins.map (x: "workspace 4 silent, " + x) [
"class:^${feishin}$"
"class:^${scrcpy}$"
];
centerWindows = builtins.map (x: "center, " + x) [
"class:^${blueman}$"
"class:^${calculator}$"
"class:^${easyeffects}$"
"class:^${emote}$"
"class:^${mpv}$"
"class:^${vlc}$"
"class:^${nomacs}$"
"class:^${flameshot}$"
# "class:^${scrcpy}$"
"title:^(${picture})$"
"title:^(${discord-popout})$"
"title:^${bitwarden}$"
"title:^${save}$"
"title:^${battle}$"
"title:^${upload}$"
];
opaqueWindows = builtins.map (x: "opaque, " + x) [
"class:^${floorp}$"
"class:^${kdenlive}$"
"class:^(krita)$"
"class:^${shotcut}$"
"class:^${mpv}$"
"class:^(Brave-browser)$"
"class:^(Gimp-2.10)$"
"class:^(org.kde.okular)$"
"class:^${vlc}$"
];
in
maxsizeWindows
++ floatWindows
++ pinWindows
++ idleInhibit
++ workspaceInit1
++ workspaceInit2
++ workspaceInit3
++ workspaceInit4
++ centerWindows
++ opaqueWindows

View file

@ -0,0 +1,3 @@
{
force_zero_scaling = true;
}

View file

@ -0,0 +1,54 @@
{
flake,
config,
pkgs,
...
}:
let
inherit (flake.config.people) user0;
user = config.home.username;
configPath = ./config;
configImports = {
animations = import (configPath + /animations.nix);
bindm = import (configPath + /bindm.nix);
binds = import (configPath + /binds.nix);
# bindl = import (configPath + /bindl.nix);
decoration = import (configPath + /decoration.nix);
dwindle = import (configPath + /dwindle.nix);
exec-once = import (configPath + /exec-once.nix) { inherit flake; };
general = import (configPath + /general.nix) { inherit config flake; };
input = import (configPath + /input.nix);
misc = import (configPath + /misc.nix);
windowrulev2 = import (configPath + /windowrulev2.nix);
xwayland = import (configPath + /xwayland.nix);
monitor = import (configPath + /monitor.nix);
bind =
let
bindConfig =
if user == user0 then
import (configPath + /bind-user0.nix)
else
import (configPath + /bind-user1.nix);
in
bindConfig;
};
in
{
wayland.windowManager.hyprland = {
enable = true;
package = null;
portalPackage = null;
xwayland.enable = true;
systemd = {
enable = true;
enableXdgAutostart = true;
extraCommands = [
"systemctl --user stop hyprland-session.target"
"systemctl --user start hyprland-session.target"
];
};
settings = configImports;
};
}