refactor: inputs/ --> {sys,home}/
This commit is contained in:
parent
8f22a24963
commit
f77c627980
225 changed files with 77 additions and 88 deletions
14
home/modules/desktop/wayland/windowManager/default.nix
Normal file
14
home/modules/desktop/wayland/windowManager/default.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{ lib, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./hyprland
|
||||
];
|
||||
|
||||
options.homeModules.desktop.wayland.windowManager = {
|
||||
hyprland = {
|
||||
enable = lib.mkEnableOption "Enable Hyprland window-manager";
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{ lib, config, pkgs, inputs, ... }:
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
inherit (import ./pkgs {inherit pkgs;}) hyprbrightness hyprvolume;
|
||||
inherit (inputs.ooks-scripts.packages.${pkgs.system}) powermenu zellijmenu;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.hyprland.homeManagerModules.default
|
||||
./settings
|
||||
./extras
|
||||
];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [
|
||||
pkgs.hyprpicker
|
||||
hyprvolume
|
||||
hyprbrightness
|
||||
|
||||
# Personal scripts
|
||||
powermenu
|
||||
zellijmenu #TODO: only add if zellij enabled
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
xwayland.enable = true;
|
||||
systemd = {
|
||||
enable = true;
|
||||
variables = ["--all"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{ lib, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./hyprcapture
|
||||
./hyprshade
|
||||
];
|
||||
|
||||
options.homeModules.desktop.wayland.windowManager.hyprland.extras = {
|
||||
hyprcapture = {
|
||||
enable = lib.mkEnableOption "Enable hyprcapture screenshot/recording module";
|
||||
};
|
||||
hyprshade = {
|
||||
enable = lib.mkEnableOption "Enable hyprshade tool module";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{ lib, config, pkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland.extras.hyprcapture;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
home.packages = with inputs; [
|
||||
# Screenshot tool
|
||||
hyprland-contrib.packages.${pkgs.system}.grimblast
|
||||
# Screen recording tool
|
||||
ooks-scripts.packages.${pkgs.system}.hyprrecord
|
||||
];
|
||||
|
||||
# Add XDG user directories that the scripts use
|
||||
xdg.userDirs.extraConfig = {
|
||||
XDG_RECORDINGS_DIR = "${config.xdg.userDirs.videos}/Recordings";
|
||||
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.bind = [
|
||||
# Screenshot binds
|
||||
", Print, exec, grimblast --notify --cursor copysave area"
|
||||
"SUPER, Print, exec, grimblast --notify --cursor copysave screen"
|
||||
# Recording binds
|
||||
"SUPER, r, exec, hyprrecord -a -w video screen copysave"
|
||||
"SUPER CTRL, r, exec, hyprrecord -a -w video area copysave"
|
||||
"SUPER ALT, r, exec, hyprrecord -w gif area copysave"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland.extras.hyprshade;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [ pkgs.hyprshade ];
|
||||
# TODO: implement hyprshade configuration
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
packages = {
|
||||
hyprvolume = pkgs.callPackage ./hyprvolume.nix {};
|
||||
hyprbrightness = pkgs.callPackage ./hyprbrightness.nix {};
|
||||
};
|
||||
in
|
||||
packages
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
pkgs.writeShellApplication {
|
||||
name = "hyprbrightness";
|
||||
runtimeInputs = with pkgs; [brillo libnotify];
|
||||
text = ''
|
||||
if [ "$1" == "up" ]; then
|
||||
brillo -q -u 30000 -A 5
|
||||
elif [ "$1" == "down" ]; then
|
||||
brillo -q -u 30000 -U 5
|
||||
else
|
||||
echo "Invalid argument"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BRIGHTNESS=$(brillo -G | awk -F'.' '{print$1}')
|
||||
|
||||
notify-send --app-name="system-notify" -h string:x-canonical-private-synchronous:sys-notify " $BRIGHTNESS%"
|
||||
'';
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
pkgs.writeShellApplication {
|
||||
name = "hyprvolume";
|
||||
runtimeInputs = with pkgs; [pamixer libnotify];
|
||||
text = ''
|
||||
if [ "$1" == "up" ]; then
|
||||
pamixer --increase 5
|
||||
elif [ "$1" == "down" ]; then
|
||||
pamixer --decrease 5
|
||||
elif [ "$1" == "mute" ]; then
|
||||
pamixer --toggle-mute
|
||||
fi
|
||||
|
||||
VOLUME=$(pamixer --get-volume-human)
|
||||
|
||||
notify-send --app-name="system-notify" -h string:x-canonical-private-synchronous:sys-notify " $VOLUME"
|
||||
'';
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
pointer = config.home.pointerCursor;
|
||||
inherit (config.colorscheme) palette;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
cursor = {
|
||||
inactive_timeout = 4;
|
||||
};
|
||||
general = {
|
||||
gaps_in = 10;
|
||||
gaps_out = 10;
|
||||
border_size = 2;
|
||||
"col.active_border" = "0xff${palette.base05}";
|
||||
"col.inactive_border" = "0xff${palette.base02}";
|
||||
};
|
||||
|
||||
exec-once = [
|
||||
"hyprctl setcursor ${pointer.name} ${toString pointer.size}"
|
||||
];
|
||||
|
||||
decoration = {
|
||||
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 1.0;
|
||||
fullscreen_opacity = 1.0;
|
||||
|
||||
rounding = 0;
|
||||
|
||||
blur = {
|
||||
enabled = false;
|
||||
ignore_opacity = true;
|
||||
};
|
||||
|
||||
drop_shadow = true;
|
||||
shadow_range = 12;
|
||||
shadow_offset = "3 3";
|
||||
"col.shadow" = "0x44000000";
|
||||
"col.shadow_inactive" = "0x66000000";
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
in
|
||||
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = lib.mkIf cfg.enable {
|
||||
bind = let
|
||||
terminal = config.home.sessionVariables.TERMINAL;
|
||||
browser = config.home.sessionVariables.BROWSER;
|
||||
editor = config.home.sessionVariables.EDITOR;
|
||||
locker = config.home.sessionVariables.LOCKER;
|
||||
|
||||
spotifyctl = "${pkgs.spotify-player}/bin/spotify_player";
|
||||
discord = "${pkgs.vesktop}/bin/vesktop";
|
||||
|
||||
explorer = "${pkgs.cinnamon.nemo-with-extensions}/bin/nemo";
|
||||
|
||||
password = "${pkgs._1password-gui}/bin/1password";
|
||||
in [
|
||||
|
||||
# Program Launch
|
||||
"SUPER, b, exec, ${browser}"
|
||||
"SUPER, return, exec, ${terminal}"
|
||||
"SUPER, e, exec, ${terminal} ${editor}"
|
||||
"SUPERSHIFT, P, exec, ${password}"
|
||||
"SUPER, d, exec, ${discord}"
|
||||
"SUPERSHIFT, e, exec, ${explorer}"
|
||||
"SUPERSHIFT, S, exec, steam"
|
||||
"SUPER, escape, exec, ${terminal} --title=BTOP btop"
|
||||
"SUPER CTRL, return, exec, zellijmenu -n"
|
||||
|
||||
"SUPER, delete, exec, powermenu -c dmenu"
|
||||
|
||||
|
||||
|
||||
# Spotify PLayer Controls
|
||||
|
||||
"SUPER, bracketright, exec, ${spotifyctl} playback next"
|
||||
"SUPER, bracketleft, exec, ${spotifyctl} playback previous"
|
||||
"SUPER, backslash, exec, ${spotifyctl} playback play-pause"
|
||||
|
||||
# Brightness
|
||||
|
||||
",XF86MonBrightnessUp, exec, hyprbrightness up"
|
||||
",XF86MonBrightnessDown, exec, hyprbrightness down"
|
||||
|
||||
# Volume
|
||||
|
||||
",XF86AudioRaiseVolume, exec, hyprvolume up"
|
||||
",XF86AudioLowerVolume, exec, hyprvolume down"
|
||||
",XF86AudioMute, exec, hyprvolume mute"
|
||||
|
||||
# Window Management
|
||||
|
||||
"SUPER, Q, killactive"
|
||||
"SUPER CTRL, backspace, killactive"
|
||||
"SUPERSHIFT ALT, delete, exec, hyprkillsession"
|
||||
"SUPER, F, fullscreen"
|
||||
"SUPER CTRL, F, fakefullscreen"
|
||||
"SUPER, Space, togglefloating"
|
||||
"SUPER, P, pseudo" # dwindle
|
||||
"SUPER, S, togglesplit" # dwindle
|
||||
|
||||
# Focus
|
||||
|
||||
"SUPER, left, movefocus,l"
|
||||
"SUPER, right, movefocus,r"
|
||||
"SUPER, up, movefocus,u"
|
||||
"SUPER, down, movefocus,d"
|
||||
|
||||
# Move
|
||||
|
||||
"SUPERSHIFT, left, movewindow,l"
|
||||
"SUPERSHIFT, right, movewindow,r"
|
||||
"SUPERSHIFT, up, movewindow,u"
|
||||
"SUPERSHIFT, down, movewindow,d"
|
||||
|
||||
#Resize
|
||||
|
||||
"SUPER CTRL, left, resizeactive,-20 0"
|
||||
"SUPERCTRL, right, resizeactive,20 0"
|
||||
"SUPER CTRL, up, resizeactive,0 -20"
|
||||
"SUPERCTRL, down, resizeactive,0 20"
|
||||
|
||||
# Switch workspace
|
||||
|
||||
"SUPER, 1, workspace,1"
|
||||
"SUPER, 2, workspace,2"
|
||||
"SUPER, 3, workspace,3"
|
||||
"SUPER, 4, workspace,4"
|
||||
"SUPER, 5, workspace,5"
|
||||
"SUPER, 6, workspace,6"
|
||||
"SUPER, 7, workspace,7"
|
||||
"SUPER, 8, workspace,8"
|
||||
"SUPER, 9, workspace,9"
|
||||
"SUPER, 0, workspace,10"
|
||||
"SUPER, comma, workspace,e+1"
|
||||
"SUPER, period, workspace,e-1"
|
||||
"SUPER, tab, focusCurrentOrLast"
|
||||
|
||||
# Move workspace
|
||||
|
||||
"SUPERSHIFT, 1, movetoworkspace,1"
|
||||
"SUPERSHIFT, 2, movetoworkspace,2"
|
||||
"SUPERSHIFT, 3, movetoworkspace,3"
|
||||
"SUPERSHIFT, 4, movetoworkspace,4"
|
||||
"SUPERSHIFT, 5, movetoworkspace,5"
|
||||
"SUPERSHIFT, 6, movetoworkspace,6"
|
||||
"SUPERSHIFT, 7, movetoworkspace,7"
|
||||
"SUPERSHIFT, 8, movetoworkspace,8"
|
||||
"SUPERSHIFT, 9, movetoworkspace,9"
|
||||
"SUPERSHIFT, 0, movetoworkspace,10"
|
||||
|
||||
# Lock Screen
|
||||
"SUPER, Backspace, exec, ${locker}"
|
||||
];
|
||||
# Mouse
|
||||
bindm = [
|
||||
"SUPER, mouse:272, movewindow"
|
||||
"SUPER, mouse:273, resizewindow"
|
||||
];
|
||||
# bindr = [
|
||||
# "SUPER, SUPER_L, exec, killall rofi || rofi -show drun"
|
||||
# ];
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
imports = [
|
||||
./appearance.nix
|
||||
./binds.nix
|
||||
./rules.nix
|
||||
./exec.nix
|
||||
./env.nix
|
||||
./inputs.nix
|
||||
./misc.nix
|
||||
./monitor.nix
|
||||
./gestures.nix
|
||||
./hyprpaper.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland.settings.env = [
|
||||
"XDG_SESSION_DESKTOP,hyprland"
|
||||
"XDG_CURRENT_DESKTOP,hyprland"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
exec = [
|
||||
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
|
||||
];
|
||||
exec-once = [
|
||||
"${pkgs._1password-gui}/bin/1password --silent"
|
||||
# "${pkgs.live-buds-cli}/bin/earbuds -d"
|
||||
# "waybar"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland.settings.gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_forever = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{ lib, config, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
wallpaperPath = config.homeModules.theme.wallpaper.path;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.hyprpaper = {
|
||||
enable = true;
|
||||
};
|
||||
xdg.configFile."hypr/hyprpaper.conf".text = ''
|
||||
preload = ${wallpaperPath}
|
||||
wallpaper = , ${wallpaperPath}
|
||||
splash = false
|
||||
ipc = off
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland.settings.input = {
|
||||
kb_layout = "us";
|
||||
follow_mouse = 1;
|
||||
touchpad.natural_scroll = "no";
|
||||
mouse_refocus = false;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland.settings.misc = {
|
||||
mouse_move_enables_dpms = true;
|
||||
key_press_enables_dpms = true;
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
|
||||
enable_swallow = true;
|
||||
swallow_regex = "foot|nemo";
|
||||
|
||||
focus_on_activate = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{ lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
in
|
||||
|
||||
{
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
monitor = lib.concatMap (m: let
|
||||
resolution = "${toString m.width}x${toString m.height}@${toString m.refreshRate}";
|
||||
position = "${toString m.x}x${toString m.y}";
|
||||
basicConfig = "${m.name},${if m.enabled then "${resolution},${position},1" else "disable"}";
|
||||
in
|
||||
[ basicConfig ] ++ (if m.transform != 0 then ["${m.name},transform,${toString m.transform}"] else [])
|
||||
) (config.monitors);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
cfg = config.homeModules.desktop.wayland.windowManager.hyprland;
|
||||
in
|
||||
{
|
||||
config = {
|
||||
wayland.windowManager.hyprland.settings = lib.mkIf cfg.enable {
|
||||
windowrulev2 = [
|
||||
"float,move 191 15,size 924 396,class:^(1Password)$"
|
||||
|
||||
"float, title:^(Picture-in-Picture)$"
|
||||
"pin, title:^(Picture-in-Picture)$"
|
||||
|
||||
"workspace 4, title:^(Vesktop)$"
|
||||
|
||||
# Floating BTOP
|
||||
"float,title:^(BTOP)$"
|
||||
"size 85%,title:^(BTOP)$"
|
||||
"pin,title:^(BTOP)$"
|
||||
"center,title:^(BTOP)$"
|
||||
"stayfocused,title:^(BTOP)$"
|
||||
|
||||
# Tearing
|
||||
"immediate, title:^(TEKKEN™8)$"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue