refactor: inputs/ --> {sys,home}/

This commit is contained in:
ooks-io 2024-05-26 14:57:35 +12:00
parent 8f22a24963
commit f77c627980
225 changed files with 77 additions and 88 deletions

View file

@ -0,0 +1,14 @@
{ lib, ... }:
{
imports = [
./hyprland
];
options.homeModules.desktop.wayland.windowManager = {
hyprland = {
enable = lib.mkEnableOption "Enable Hyprland window-manager";
};
};
}

View file

@ -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"];
};
};
};
}

View file

@ -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";
};
};
}

View file

@ -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"
];
};
}

View file

@ -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
};
}

View file

@ -0,0 +1,9 @@
{ pkgs, ... }:
let
packages = {
hyprvolume = pkgs.callPackage ./hyprvolume.nix {};
hyprbrightness = pkgs.callPackage ./hyprbrightness.nix {};
};
in
packages

View file

@ -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%"
'';
}

View file

@ -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"
'';
}

View file

@ -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;
};
};
};
};
}

View file

@ -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"
# ];
};
}

View file

@ -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
];
}

View file

@ -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"
];
};
}

View file

@ -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"
];
};
};
}

View file

@ -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;
};
};
}

View file

@ -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
'';
};
}

View file

@ -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;
};
};
}

View file

@ -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;
};
};
}

View file

@ -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);
};
};
}

View file

@ -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:^(TEKKEN8)$"
];
};
};
}