378 lines
11 KiB
Nix
Executable File
378 lines
11 KiB
Nix
Executable File
{ config, lib, pkgs, inputs, ... }:
|
|
|
|
{
|
|
|
|
# Move needed files
|
|
home.file.".config/hypr/mocha.conf".text = builtins.readFile ./mocha.conf;
|
|
home.file.".config/hypr/gamemode.sh".text = builtins.readFile ./gamemode.sh;
|
|
home.file.".config/hypr/power.sh".text = builtins.readFile ./power.sh;
|
|
home.file.".config/hypr/xdph.conf".text = builtins.readFile ./xdph.conf;
|
|
home.file.".config/hypr/wallpapers" = {
|
|
source = ./wallpapers;
|
|
};
|
|
home.file.".themes/Catppuccin-B-LB-Dark-Macchiato" = {
|
|
source = ./Catppuccin-B-LB-Dark-Macchiato;
|
|
};
|
|
home.file.".themes/Catppuccin-B-LB-Dark-Macchiato-hdpi" = {
|
|
source = ./Catppuccin-B-LB-Dark-Macchiato-hdpi;
|
|
};
|
|
home.file.".themes/Catppuccin-B-LB-Dark-Macchiato-xhdpi" = {
|
|
source = ./Catppuccin-B-LB-Dark-Macchiato-xhdpi;
|
|
};
|
|
|
|
home.packages = with pkgs; [
|
|
aquamarine
|
|
xdg-desktop-portal-hyprland
|
|
xdg-desktop-portal-gtk
|
|
polkit_gnome
|
|
qt5.qtwayland
|
|
qt6.qtwayland
|
|
qt5.qtbase
|
|
qt6.qtbase
|
|
hyprland-qt-support
|
|
hyprlang
|
|
hyprwayland-scanner
|
|
hyprgraphics
|
|
hyprutils
|
|
hyprtoolkit
|
|
hyprshutdown
|
|
hypridle
|
|
hyprpicker
|
|
hyprshade
|
|
hyprsysteminfo
|
|
hyprcursor
|
|
pwvucontrol
|
|
overskride
|
|
udiskie
|
|
pfetch
|
|
lavat
|
|
audacious
|
|
cmatrix
|
|
nwg-look
|
|
hyprpwcenter
|
|
brightnessctl
|
|
gtk-engine-murrine
|
|
sassc
|
|
gnome-themes-extra
|
|
playerctl
|
|
eog
|
|
gnome-text-editor
|
|
];
|
|
|
|
# Catppuccin!
|
|
catppuccin = {
|
|
enable = true;
|
|
flavor = "mocha";
|
|
accent = "blue";
|
|
cursors = {
|
|
enable = true;
|
|
flavor = "mocha";
|
|
accent = "dark";
|
|
};
|
|
gtk.icon = {
|
|
enable = true;
|
|
flavor = "mocha";
|
|
accent = "lavender";
|
|
};
|
|
hyprland = {
|
|
enable = true;
|
|
flavor = "mocha";
|
|
accent = "lavender";
|
|
};
|
|
};
|
|
|
|
# Dark color scheme
|
|
gtk = {
|
|
enable = true;
|
|
colorScheme = "dark";
|
|
gtk3.extraConfig.Settings = ''gtk-application-prefer-dark-themes=1'';
|
|
gtk4.extraConfig.Settings = ''gtk-application-prefer-dark-themes=1'';
|
|
};
|
|
|
|
home.sessionVariables.NIXOS_OZONE_WL = "1"; # Hint for Electron apps
|
|
wayland.windowManager.hyprland = {
|
|
enable = true;
|
|
xwayland.enable = true;
|
|
systemd.enable = false;
|
|
settings = {
|
|
"$mainMod" = "SUPER";
|
|
source = [
|
|
"mocha.conf"
|
|
];
|
|
monitor = [
|
|
"eDP-1, 1920x1080@60.02, 0x0, 1, bitdepth, 10"
|
|
];
|
|
exec-once = [
|
|
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
|
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
|
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
|
"dconf write /org/gnome/desktop/interface/cursor-theme Catppuccin Mocha Dark"
|
|
"udiskie"
|
|
"dunst"
|
|
"hyprpaper"
|
|
"hypridle"
|
|
"hyprsunset"
|
|
"wl-paste --type text --watch cliphist store # Stores only text data" # Stores only text data
|
|
"wl-paste --type image --watch cliphist store" # Stores only image data
|
|
"waybar"
|
|
];
|
|
env = [
|
|
"XCURSOR_THEME,Adwaita"
|
|
"XCURSOR_SIZE,24"
|
|
"HYPRCURSOR_THEME,Catppuccin Mocha Dark"
|
|
"HYPRCURSOR_SIZE,22"
|
|
"GTK_THEME,Catppuccin-B-LB-Dark-Macchiato"
|
|
"HYPRLAND_TRACE=1"
|
|
"GDK_BACKEND,wayland,x11,*"
|
|
"QT_QPA_PLATFORM,wayland;xcb"
|
|
"SDL_VIDEODRIVER,wayland"
|
|
"CLUTTER_BACKEND,wayland"
|
|
"XDG_CURRENT_DESKTOP,Hyprland"
|
|
"XDG_SESSION_TYPE,wayland"
|
|
"XDG_SESSION_DESKTOP,Hyprland"
|
|
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
|
|
"QT_QPA_PLATFORM,wayland;xcb"
|
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
|
"QT_QPA_PLATFORMTHEME,qt5ct"
|
|
"QT_QPA_PLATFORMTHEME=hyprqt6engine"
|
|
];
|
|
ecosystem = {
|
|
enforce_permissions = true;
|
|
};
|
|
permision = [
|
|
"/nix/store/[a-z0-9]{32}-grim-[0-9.]*/bin/grim, screencopy, allow"
|
|
"/nix/store/[a-z0-9]{32}-xdg-desktop-portal-hyprland-[0-9.]*/libexec/.xdg-desktop-portal-hyprland-wrapped, screencopy, allow"
|
|
# /usr/(bin|local/bin)/hyprpm, plugin, allow; # Uncomment For Plugins
|
|
];
|
|
general = {
|
|
gaps_in = 4;
|
|
gaps_out = 8;
|
|
border_size = 1;
|
|
"col.active_border" = "$overlay1";
|
|
"col.inactive_border" = "$overlay0";
|
|
resize_on_border = true;
|
|
allow_tearing = true;
|
|
layout = "dwindle";
|
|
};
|
|
decoration = {
|
|
rounding = 12;
|
|
rounding_power = 4;
|
|
active_opacity = 1.0;
|
|
inactive_opacity = 1.0;
|
|
shadow = {
|
|
enabled = true;
|
|
range = 3;
|
|
render_power = 2;
|
|
color = "rgba(1a1a1aee)";
|
|
};
|
|
blur = {
|
|
enabled = true;
|
|
size = 4;
|
|
passes = 1;
|
|
vibrancy = 0.2;
|
|
};
|
|
};
|
|
animations = {
|
|
enabled = true;
|
|
# Curves
|
|
bezier = [
|
|
"expressiveFastSpatial, 0.42, 1.67, 0.21, 0.90"
|
|
"expressiveSlowSpatial, 0.39, 1.29, 0.35, 0.98"
|
|
"expressiveDefaultSpatial, 0.38, 1.21, 0.22, 1.00"
|
|
"emphasizedDecel, 0.05, 0.7, 0.1, 1"
|
|
"emphasizedAccel, 0.3, 0, 0.8, 0.15"
|
|
"standardDecel, 0, 0, 0, 1"
|
|
"menu_decel, 0.1, 1, 0, 1"
|
|
"menu_accel, 0.52, 0.03, 0.72, 0.08"
|
|
"stall, 1, -0.1, 0.7, 0.85"
|
|
];
|
|
animation = [
|
|
# windows
|
|
"windowsIn, 1, 3, emphasizedDecel, popin 80%"
|
|
"fadeIn, 1, 3, emphasizedDecel"
|
|
"windowsOut, 1, 2, emphasizedDecel, popin 90%"
|
|
"fadeOut, 1, 2, emphasizedDecel"
|
|
"windowsMove, 1, 3, emphasizedDecel, slide"
|
|
"border, 1, 10, emphasizedDecel"
|
|
# layers
|
|
"layersIn, 1, 2.7, emphasizedDecel, popin 93%"
|
|
"layersOut, 1, 2.4, menu_accel, popin 94%"
|
|
# fade
|
|
"fadeLayersIn, 1, 0.5, menu_decel"
|
|
"fadeLayersOut, 1, 2.7, stall"
|
|
# workspaces
|
|
"workspaces, 1, 7, menu_decel, slide"
|
|
# specialWorkspace
|
|
"specialWorkspaceIn, 1, 2.8, emphasizedDecel, slidevert"
|
|
"specialWorkspaceOut, 1, 1.2, emphasizedAccel, slidevert"
|
|
# zoom
|
|
"zoomFactor, 1, 3, standardDecel"
|
|
];
|
|
};
|
|
dwindle = {
|
|
pseudotile = true;
|
|
preserve_split = true;
|
|
};
|
|
master = {
|
|
new_status = "master";
|
|
};
|
|
misc = {
|
|
force_default_wallpaper = -1;
|
|
disable_hyprland_logo = false;
|
|
vfr = true;
|
|
};
|
|
input = {
|
|
kb_layout = "pl";
|
|
follow_mouse = 1;
|
|
sensitivity = 0;
|
|
touchpad = {
|
|
natural_scroll = true;
|
|
};
|
|
};
|
|
gesture = [
|
|
"3, horizontal, workspace"
|
|
];
|
|
device = {
|
|
name = "epic-mouse-v1";
|
|
sensitivity = -0.5;
|
|
};
|
|
bind = [
|
|
"$mainMod, RETURN, exec, kitty"
|
|
"$mainMod, Q, exec, kitty"
|
|
"$mainMod SHIFT, Q, killactive"
|
|
"$mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit"
|
|
"$mainMod, E, exec, nautilus"
|
|
"$mainMod, V, togglefloating"
|
|
"$mainMod, D, exec, rofi -show drun"
|
|
"$mainMod, O, pseudo" # dwindle
|
|
"$mainMod, J, layoutmsg, togglesplit" # dwindle
|
|
"$mainMod, F1, exec, sh $HOME/.config/hypr/gamemode.sh" # Game Mode
|
|
"$mainMod SHIFT, F, exec, librewolf" # You can replace with your desired browser
|
|
"$mainMod SHIFT, D, exec, mullvad-browser"
|
|
"$mainMod, H, exec, cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy" # Clipboard History
|
|
"$mainMod SHIFT, P, exec, sh $HOME/.config/hypr/power.sh" # Power Menu
|
|
"$mainMod, B, exec, overskride" # Bluetooth control
|
|
"$mainMod, P, exec, pwvucontrol" # Volume control
|
|
|
|
# Move focus with mainMod + arrow keys
|
|
"$mainMod, left, movefocus, l"
|
|
"$mainMod, right, movefocus, r"
|
|
"$mainMod, up, movefocus, u"
|
|
"$mainMod, down, movefocus, d"
|
|
|
|
# Switch workspaces with mainMod + [0-9]
|
|
"$mainMod, 1, workspace, 1"
|
|
"$mainMod, 2, workspace, 2"
|
|
"$mainMod, 3, workspace, 3"
|
|
"$mainMod, 4, workspace, 4"
|
|
"$mainMod, 5, workspace, 5"
|
|
"$mainMod, 6, workspace, 6"
|
|
"$mainMod, 7, workspace, 7"
|
|
"$mainMod, 8, workspace, 8"
|
|
"$mainMod, 9, workspace, 9"
|
|
"$mainMod, 0, workspace, 10"
|
|
|
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
"$mainMod SHIFT, 1, movetoworkspace, 1"
|
|
"$mainMod SHIFT, 2, movetoworkspace, 2"
|
|
"$mainMod SHIFT, 3, movetoworkspace, 3"
|
|
"$mainMod SHIFT, 4, movetoworkspace, 4"
|
|
"$mainMod SHIFT, 5, movetoworkspace, 5"
|
|
"$mainMod SHIFT, 6, movetoworkspace, 6"
|
|
"$mainMod SHIFT, 7, movetoworkspace, 7"
|
|
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
|
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
|
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
|
|
|
# Example special workspace (scratchpad)
|
|
"$mainMod, S, togglespecialworkspace, magic"
|
|
"$mainMod SHIFT, S, movetoworkspace, special:magic"
|
|
|
|
# Scroll through existing workspaces with mainMod + scroll
|
|
"$mainMod, mouse_down, workspace, e+1"
|
|
"$mainMod, mouse_up, workspace, e-1"
|
|
];
|
|
bindm = [
|
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
"$mainMod, mouse:272, movewindow"
|
|
"$mainMod, mouse:273, resizewindow"
|
|
];
|
|
bindel = [
|
|
# Laptop multimedia keys for volume and LCD brightness
|
|
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
|
|
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
|
",XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+"
|
|
",XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-"
|
|
# Requires playerctl
|
|
", XF86AudioNext, exec, playerctl next"
|
|
", XF86AudioPause, exec, playerctl play-pause"
|
|
", XF86AudioPlay, exec, playerctl play-pause"
|
|
", XF86AudioPrev, exec, playerctl previous"
|
|
];
|
|
workspace = [
|
|
"1, monitor:eDP-1, persistent:true"
|
|
"10, monitor:eDP-1, persistent:true"
|
|
];
|
|
windowrule = [
|
|
{
|
|
name = "floating size";
|
|
match = {
|
|
class = ".*";
|
|
};
|
|
float = false;
|
|
size = "800x500";
|
|
# This shit wont work no matter what i give up
|
|
}
|
|
{
|
|
name = "tearing";
|
|
match = {
|
|
class = "cs2";
|
|
};
|
|
immediate = true;
|
|
}
|
|
{
|
|
# Ignore maximizing requests from apps
|
|
name = "suppress-maximize-events";
|
|
match = { class = ".*"; };
|
|
suppress_event = "maximize";
|
|
}
|
|
{
|
|
# Dragging issue fixes for XWayland
|
|
name = "fix-xwayland-drags";
|
|
match = {
|
|
class = "^$";
|
|
title = "^$";
|
|
xwayland = true;
|
|
float = true;
|
|
fullscreen = false;
|
|
pin = false;
|
|
};
|
|
no_focus = true;
|
|
}
|
|
{
|
|
name = "move-hyprland-run";
|
|
match = {
|
|
class = "hyprland-run";
|
|
};
|
|
move = "20 monitor_h-120";
|
|
float = "yes";
|
|
}
|
|
{
|
|
name = "xwayland-video-bridge-fixes";
|
|
match = {
|
|
class = "xwaylandvideobridge";
|
|
};
|
|
no_initial_focus = true;
|
|
no_focus = true;
|
|
no_anim = true;
|
|
no_blur = true;
|
|
max_size = 1;
|
|
opacity = 0.0;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|