refactor: use helper funcs for hyprland conf
All checks were successful
Discord / discord commits (push) Has been skipped
All checks were successful
Discord / discord commits (push) Has been skipped
This commit is contained in:
parent
318ccef645
commit
85348d1a6c
13 changed files with 414 additions and 173 deletions
|
@ -3,15 +3,15 @@
|
||||||
inputs,
|
inputs,
|
||||||
}: let
|
}: let
|
||||||
flake = import ./flake inputs;
|
flake = import ./flake inputs;
|
||||||
|
hypr = import ./hypr inputs.nixpkgs.lib;
|
||||||
strings = import ./strings inputs.nixpkgs.lib;
|
strings = import ./strings inputs.nixpkgs.lib;
|
||||||
|
|
||||||
lib = flake // strings;
|
lib = flake // hypr // strings;
|
||||||
in
|
in
|
||||||
# Expose main attrs
|
# Expose main attrs
|
||||||
lib
|
lib
|
||||||
# Expose all funcs
|
# Expose all funcs
|
||||||
// strings
|
// {inherit flake hypr strings;}
|
||||||
// flake
|
|
||||||
# Expose funcs that require pkgs
|
# Expose funcs that require pkgs
|
||||||
// perSystem (
|
// perSystem (
|
||||||
pkgs:
|
pkgs:
|
||||||
|
|
57
lib/hypr/default.nix
Normal file
57
lib/hypr/default.nix
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
{
|
||||||
|
concatStringsSep,
|
||||||
|
elemAt,
|
||||||
|
optionals,
|
||||||
|
...
|
||||||
|
}: rec {
|
||||||
|
pointToStr = p: "${toString (elemAt p 0)}, ${toString (elemAt p 1)}";
|
||||||
|
|
||||||
|
mkBezier = {
|
||||||
|
name,
|
||||||
|
p0,
|
||||||
|
p1,
|
||||||
|
}:
|
||||||
|
concatStringsSep "," [name (pointToStr p0) (pointToStr p1)];
|
||||||
|
|
||||||
|
mkAnimation = {
|
||||||
|
name,
|
||||||
|
enable ? true,
|
||||||
|
duration ? 0, # in ds (100ms)
|
||||||
|
bezier ? "default",
|
||||||
|
style ? null,
|
||||||
|
}:
|
||||||
|
concatStringsSep "," (
|
||||||
|
[
|
||||||
|
name
|
||||||
|
(
|
||||||
|
if enable
|
||||||
|
then "1"
|
||||||
|
else "0"
|
||||||
|
)
|
||||||
|
]
|
||||||
|
++ optionals enable (
|
||||||
|
[
|
||||||
|
(toString duration)
|
||||||
|
bezier
|
||||||
|
]
|
||||||
|
++ optionals (style != null) [style]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
mkLayerRule = {
|
||||||
|
rule,
|
||||||
|
namespace,
|
||||||
|
}:
|
||||||
|
concatStringsSep "," [rule namespace];
|
||||||
|
|
||||||
|
mkBind = {
|
||||||
|
modifier ? "",
|
||||||
|
key,
|
||||||
|
dispatcher ? "exec",
|
||||||
|
command ? null,
|
||||||
|
}:
|
||||||
|
concatStringsSep "," (
|
||||||
|
[modifier key dispatcher]
|
||||||
|
++ optionals (command != null) [command]
|
||||||
|
);
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
concatStringsSep,
|
concatStrings,
|
||||||
stringToCharacters,
|
stringToCharacters,
|
||||||
substring,
|
substring,
|
||||||
tail,
|
tail,
|
||||||
|
@ -7,5 +7,5 @@
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
mkVersion = src: "0.0.0+" + src.shortRev;
|
mkVersion = src: "0.0.0+" + src.shortRev;
|
||||||
capitalise = str: (toUpper (substring 0 1 str) + (concatStringsSep "" (tail (stringToCharacters str))));
|
capitalise = str: (toUpper (substring 0 1 str) + (concatStrings (tail (stringToCharacters str))));
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ in {
|
||||||
home-manager.users.${cfgDesktop.user}.imports = [
|
home-manager.users.${cfgDesktop.user}.imports = [
|
||||||
hmOpts
|
hmOpts
|
||||||
(import ./packages.nix self)
|
(import ./packages.nix self)
|
||||||
./hyprland.nix
|
(import ./hyprland.nix self)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
{...}: {
|
self: {lib, ...}: let
|
||||||
wayland.windowManager.hyprland = {
|
inherit (lib) map;
|
||||||
|
inherit (self.lib.hypr) mkAnimation mkBezier mkBind mkLayerRule;
|
||||||
|
in {
|
||||||
|
config.wayland.windowManager.hyprland = {
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
general = {
|
||||||
gaps_in = 5;
|
gaps_in = 5;
|
||||||
|
@ -22,35 +25,95 @@
|
||||||
animations = {
|
animations = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
|
||||||
bezier = [
|
bezier = map mkBezier [
|
||||||
"easeInQuart , 0.895, 0.03, 0.685, 0.22"
|
{
|
||||||
"easeOutQuart , 0.165, 0.84, 0.44 , 1"
|
name = "easeInQuart";
|
||||||
"easeInOutQuart, 0.77, 0 , 0.175, 1"
|
p0 = [0.895 0.030];
|
||||||
|
p1 = [0.685 0.220];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "easeOutQuart";
|
||||||
|
p0 = [0.165 0.840];
|
||||||
|
p1 = [0.440 1.000];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "easeInOutQuart";
|
||||||
|
p0 = [0.770 0.000];
|
||||||
|
p1 = [0.175 1.000];
|
||||||
|
}
|
||||||
|
|
||||||
# Fade out
|
# fade out
|
||||||
"easeInExpo , 0.95, 0.05, 0.795, 0.035"
|
{
|
||||||
|
name = "easeInExpo";
|
||||||
|
p0 = [0.950 0.050];
|
||||||
|
p1 = [0.795 0.035];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
animation = [
|
animation = map mkAnimation [
|
||||||
"workspaces, 1, 6, easeOutQuart, slide"
|
{
|
||||||
|
name = "workspaces";
|
||||||
|
duration = 6;
|
||||||
|
bezier = "easeOutQuart";
|
||||||
|
style = "slide";
|
||||||
|
}
|
||||||
|
|
||||||
"windows, 1, 4, easeOutQuart, slide"
|
{
|
||||||
"fadeIn , 0"
|
name = "windows";
|
||||||
"fadeOut, 1, 3000, easeInExpo"
|
duration = 4;
|
||||||
|
bezier = "easeOutQuart";
|
||||||
|
style = "slide";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fadeIn";
|
||||||
|
enable = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fadeOut";
|
||||||
|
duration = 4;
|
||||||
|
bezier = "easeInExpo";
|
||||||
|
}
|
||||||
|
|
||||||
"fadeLayersIn , 0"
|
{
|
||||||
"fadeLayersOut, 1, 3000, easeInExpo"
|
name = "fadeLayersIn";
|
||||||
"layers , 1, 4 , easeInOutQuart, slide left"
|
enable = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "fadeLayersOut";
|
||||||
|
duration = 4;
|
||||||
|
bezier = "easeInExpo";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "layers";
|
||||||
|
duration = 4;
|
||||||
|
bezier = "easeInOutQuart";
|
||||||
|
style = "fade";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
layerrule = [
|
layerrule = map mkLayerRule [
|
||||||
"animation popin, ^(hyprpaper.*)"
|
{
|
||||||
"animation fade, ^(bg-layer.*)"
|
rule = "animation popin";
|
||||||
|
namespace = "^(hyprpaper.*)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
rule = "animation fade";
|
||||||
|
namespace = "^(bg-layer.*)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
rule = "noanim";
|
||||||
|
namespace = "^(noanim-.*)";
|
||||||
|
}
|
||||||
|
|
||||||
# Lockscreen blur
|
{
|
||||||
"blur, ^(blur-bg.*)"
|
rule = "blur";
|
||||||
"ignorealpha 0.19, ^(blur-bg.*)"
|
namespace = "^(blur-bg.*)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
rule = "ignorealpha 0.19";
|
||||||
|
namespace = "^(blur-bg.*)";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
|
@ -58,23 +121,79 @@
|
||||||
"sleep 3; ags request 'open win-applauncher'"
|
"sleep 3; ags request 'open win-applauncher'"
|
||||||
];
|
];
|
||||||
|
|
||||||
bind = [
|
bind = map mkBind [
|
||||||
"$mainMod SHIFT, E , exec, ags toggle win-powermenu"
|
{
|
||||||
"$mainMod , D , exec, ags toggle win-applauncher"
|
modifier = "$mainMod SHIFT";
|
||||||
"$mainMod , V , exec, ags toggle win-clipboard"
|
key = "E";
|
||||||
" , Print, exec, ags toggle win-screenshot"
|
command = "ags toggle win-powermenu";
|
||||||
];
|
}
|
||||||
binde = [
|
{
|
||||||
## Brightness control
|
modifier = "$mainMod";
|
||||||
", XF86MonBrightnessUp , exec, ags request 'Brightness.screen +0.05'"
|
key = "D";
|
||||||
", XF86MonBrightnessDown, exec, ags request 'Brightness.screen -0.05'"
|
command = "ags toggle win-applauncher";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "$mainMod";
|
||||||
|
key = "V";
|
||||||
|
command = "ags toggle win-clipboard";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "Print";
|
||||||
|
command = "ags toggle win-screenshot";
|
||||||
|
}
|
||||||
|
|
||||||
## Volume control
|
{
|
||||||
", XF86AudioRaiseVolume , exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ & ags request 'popup speaker' &"
|
key = "XF86AudioMute";
|
||||||
", XF86AudioLowerVolume , exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- & ags request 'popup speaker' &"
|
command = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "XF86AudioMicMute";
|
||||||
|
command = "pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "$mainMod";
|
||||||
|
key = "Print";
|
||||||
|
command = "bash -c \"grim -g \\\"$(slurp)\\\" - | satty -f -\"";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = map mkBind [
|
||||||
|
{
|
||||||
|
key = "XF86MonBrightnessUp";
|
||||||
|
command = "ags request 'Brightness.screen +0.05'";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "XF86MonBrightnessDown";
|
||||||
|
command = "ags request 'Brightness.screen -0.05'";
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
key = "XF86AudioRaiseVolume";
|
||||||
|
command = "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ & ags request 'popup speaker' &";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "XF86AudioLowerVolume";
|
||||||
|
command = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- & ags request 'popup speaker' &";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
bindn = map mkBind [
|
||||||
|
{
|
||||||
|
key = "Escape";
|
||||||
|
command = "ags request closeAll";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
bindr = map mkBind [
|
||||||
|
{
|
||||||
|
modifier = "CAPS";
|
||||||
|
key = "Caps_Lock";
|
||||||
|
command = "ags request fetchCapsState";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
bindn = [" , Escape , exec, ags request closeAll"];
|
|
||||||
bindr = ["CAPS, Caps_Lock, exec, ags request fetchCapsState"];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# For accurate stack trace
|
||||||
|
_file = ./default.nix;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,17 +4,18 @@ self: {
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (self.inputs) hyprgrass hyprland hyprland-plugins;
|
inherit (self.inputs) hyprland;
|
||||||
|
inherit (self.lib.hypr) mkBind;
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
(import ../../ags self)
|
(import ../../ags self)
|
||||||
|
|
||||||
./modules/dconf.nix
|
./modules/dconf.nix
|
||||||
./modules/printer.nix
|
./modules/printer.nix
|
||||||
./modules/security.nix
|
|
||||||
(import ./modules/audio.nix self)
|
(import ./modules/audio.nix self)
|
||||||
(import ./modules/packages.nix self)
|
(import ./modules/packages.nix self)
|
||||||
(import ./modules/ratbag-mice.nix self)
|
(import ./modules/ratbag-mice.nix self)
|
||||||
|
(import ./modules/security.nix self)
|
||||||
];
|
];
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
|
@ -73,10 +74,10 @@ in {
|
||||||
./home/dev.nix
|
./home/dev.nix
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
(import ./home/hyprexpo.nix hyprland-plugins)
|
(import ./home/hyprexpo.nix self)
|
||||||
(import ./home/hyprgrass.nix hyprgrass)
|
(import ./home/hyprgrass.nix self)
|
||||||
|
|
||||||
./home/inputs.nix
|
(import ./home/inputs.nix self)
|
||||||
(import ../theme self)
|
(import ../theme self)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -179,16 +180,20 @@ in {
|
||||||
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
||||||
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
||||||
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
||||||
|
|
||||||
",XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
|
||||||
",XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
|
||||||
"$mainMod, Print, exec, bash -c \"grim -g \\\"$(slurp)\\\" - | satty -f -\""
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Mouse Binds
|
# Mouse Binds
|
||||||
bindm = [
|
bindm = map mkBind [
|
||||||
"$mainMod, mouse:272, movewindow"
|
{
|
||||||
"$mainMod, mouse:273, resizewindow"
|
modifier = "$mainMod";
|
||||||
|
key = "mouse:272";
|
||||||
|
dispatcher = "movewindow";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "$mainMod";
|
||||||
|
key = "mouse:273";
|
||||||
|
dispatcher = "resizewindow";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
misc = {
|
misc = {
|
||||||
|
|
|
@ -1,25 +1,30 @@
|
||||||
hyprland-plugins: {pkgs, ...}: {
|
self: {pkgs, ...}: let
|
||||||
|
inherit (self.lib.hypr) mkBind;
|
||||||
|
in {
|
||||||
config = {
|
config = {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
plugins = [hyprland-plugins.packages.${pkgs.system}.hyprexpo];
|
plugins = [self.inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo];
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
plugin = {
|
plugin.hyprexpo = {
|
||||||
hyprexpo = {
|
columns = 3;
|
||||||
columns = 3;
|
gap_size = 5;
|
||||||
gap_size = 5;
|
bg_col = "rgb(111111)";
|
||||||
bg_col = "rgb(111111)";
|
workspace_method = "center current"; # [center/first] [workspace] e.g. first 1 or center m+1
|
||||||
workspace_method = "center current"; # [center/first] [workspace] e.g. first 1 or center m+1
|
|
||||||
|
|
||||||
enable_gesture = true; # laptop touchpad
|
enable_gesture = true; # laptop touchpad
|
||||||
gesture_fingers = 3;
|
gesture_fingers = 3;
|
||||||
gesture_distance = 300; # how far is the "max"
|
gesture_distance = 300; # how far is the "max"
|
||||||
gesture_positive = true; # positive = swipe down. Negative = swipe up.
|
gesture_positive = true; # positive = swipe down. Negative = swipe up.
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bind = [
|
bind = [
|
||||||
"ALT, tab, hyprexpo:expo, toggle" # can be: toggle, off/disable or on/enable
|
(mkBind {
|
||||||
|
modifier = "ALT";
|
||||||
|
key = "tab";
|
||||||
|
dispatcher = "hyprexpo:expo";
|
||||||
|
command = "toggle"; # can be: toggle, off/disable or on/enable
|
||||||
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,54 +1,65 @@
|
||||||
hyprgrass: {
|
self: {
|
||||||
lib,
|
lib,
|
||||||
osConfig,
|
osConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkIf;
|
inherit (lib) map mkIf;
|
||||||
|
inherit (self.lib.hypr) mkBind;
|
||||||
|
|
||||||
cfg = osConfig.roles.desktop;
|
cfg = osConfig.roles.desktop;
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.isTouchscreen {
|
config = mkIf cfg.isTouchscreen {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
plugins = [hyprgrass.packages.${pkgs.system}.default];
|
plugins = [self.inputs.hyprgrass.packages.${pkgs.system}.default];
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
plugin = {
|
plugin.touch_gestures = {
|
||||||
touch_gestures = {
|
# The default sensitivity is probably too low on tablet screens,
|
||||||
# The default sensitivity is probably too low on tablet screens,
|
# I recommend turning it up to 4.0
|
||||||
# I recommend turning it up to 4.0
|
sensitivity = 4.0;
|
||||||
sensitivity = 4.0;
|
|
||||||
|
|
||||||
# must be >= 3
|
# must be >= 3
|
||||||
workspace_swipe_fingers = 3;
|
workspace_swipe_fingers = 3;
|
||||||
|
|
||||||
# switching workspaces by swiping from an edge, this is separate from workspace_swipe_fingers
|
# switching workspaces by swiping from an edge, this is separate from workspace_swipe_fingers
|
||||||
# and can be used at the same time
|
# and can be used at the same time
|
||||||
# possible values: l, r, u, or d
|
# possible values: l, r, u, or d
|
||||||
# to disable it set it to anything else
|
# to disable it set it to anything else
|
||||||
# workspace_swipe_edge = "d";
|
# workspace_swipe_edge = "d";
|
||||||
|
|
||||||
# in milliseconds
|
# in milliseconds
|
||||||
long_press_delay = 400;
|
long_press_delay = 400;
|
||||||
|
|
||||||
# resize windows by long-pressing on window borders and gaps.
|
# resize windows by long-pressing on window borders and gaps.
|
||||||
# If general:resize_on_border is enabled, general:extend_border_grab_area is used for floating
|
# If general:resize_on_border is enabled, general:extend_border_grab_area is used for floating
|
||||||
# windows
|
# windows
|
||||||
resize_on_border_long_press = true;
|
resize_on_border_long_press = true;
|
||||||
|
|
||||||
# in pixels, the distance from the edge that is considered an edge
|
# in pixels, the distance from the edge that is considered an edge
|
||||||
edge_margin = 10;
|
edge_margin = 10;
|
||||||
|
|
||||||
# send proper cancel events to windows instead of hacky touch_up events,
|
# send proper cancel events to windows instead of hacky touch_up events,
|
||||||
# NOT recommended as it crashed a few times, once it's stabilized I'll make it the default
|
# NOT recommended as it crashed a few times, once it's stabilized I'll make it the default
|
||||||
experimental.send_cancel = 0;
|
experimental.send_cancel = 0;
|
||||||
|
|
||||||
hyprgrass-bind = [
|
hyprgrass-bind = map mkBind [
|
||||||
", edge:u:d, exec, ags request 'open win-applauncher'"
|
{
|
||||||
", edge:d:u, exec, ags request 'osk open'"
|
key = "edge:u:d";
|
||||||
];
|
command = "ags request 'open win-applauncher'";
|
||||||
hyprgrass-bindm = [", longpress:2, movewindow"];
|
}
|
||||||
};
|
{
|
||||||
|
key = "edge:d:u";
|
||||||
|
command = "ags request 'osk open'";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
hyprgrass-bindm = map mkBind [
|
||||||
|
{
|
||||||
|
key = "longpress:2";
|
||||||
|
dispatcher = "movewindow";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
gestures = {
|
gestures = {
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
{osConfig, ...}: {
|
self: {
|
||||||
|
osConfig,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
config = let
|
config = let
|
||||||
|
inherit (lib) map;
|
||||||
|
inherit (self.lib.hypr) mkBind;
|
||||||
|
|
||||||
inherit (osConfig.services.xserver) xkb;
|
inherit (osConfig.services.xserver) xkb;
|
||||||
inherit (osConfig.roles.desktop) mainMonitor;
|
inherit (osConfig.roles.desktop) mainMonitor;
|
||||||
|
|
||||||
|
@ -16,7 +23,7 @@
|
||||||
in {
|
in {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
settings = {
|
settings = {
|
||||||
device = map (d: (mkConf d)) miceNames;
|
device = map mkConf miceNames;
|
||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
no_hardware_cursors = osConfig.nvidia.enable;
|
no_hardware_cursors = osConfig.nvidia.enable;
|
||||||
|
@ -47,11 +54,23 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
bind = [
|
bind = map mkBind [
|
||||||
",XF86AudioPlay, exec, playerctl play-pause"
|
{
|
||||||
",XF86AudioStop, exec, playerctl stop"
|
key = "XF86AudioPlay";
|
||||||
",XF86AudioNext, exec, playerctl next"
|
command = "playerctl play-pause";
|
||||||
",XF86AudioPrev, exec, playerctl previous"
|
}
|
||||||
|
{
|
||||||
|
key = "XF86AudioStop";
|
||||||
|
command = "playerctl stop";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "XF86AudioNext";
|
||||||
|
command = "playerctl next";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "XF86AudioPrev";
|
||||||
|
command = "playerctl previous";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,12 +4,13 @@ self: {
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
inherit (self.lib.hypr) mkBind;
|
||||||
inherit (self.inputs) jellyfin-flake;
|
inherit (self.inputs) jellyfin-flake;
|
||||||
in {
|
in {
|
||||||
imports = [./dolphin.nix];
|
imports = [./dolphin.nix];
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
inherit (lib) getExe optionals;
|
inherit (lib) getExe map optionals;
|
||||||
inherit (pkgs.writers) writeTOML;
|
inherit (pkgs.writers) writeTOML;
|
||||||
|
|
||||||
flakeDir = config.environment.variables.FLAKE;
|
flakeDir = config.environment.variables.FLAKE;
|
||||||
|
@ -187,13 +188,31 @@ in {
|
||||||
"workspace special:spot silent,^(Spotify)$"
|
"workspace special:spot silent,^(Spotify)$"
|
||||||
];
|
];
|
||||||
|
|
||||||
bind = [
|
bind = map mkBind [
|
||||||
"$mainMod, Q, exec, foot"
|
{
|
||||||
|
modifier = "$mainMod";
|
||||||
|
key = "Q";
|
||||||
|
command = "foot";
|
||||||
|
}
|
||||||
|
|
||||||
"$mainMod SHIFT, C, exec, wl-color-picker"
|
{
|
||||||
|
modifier = "$mainMod SHIFT";
|
||||||
|
key = "C";
|
||||||
|
command = "wl-color-picker";
|
||||||
|
}
|
||||||
|
|
||||||
"$mainMod, P, togglespecialworkspace, protonmail"
|
{
|
||||||
"$mainMod, S, togglespecialworkspace, spot"
|
modifier = "$mainMod";
|
||||||
|
key = "P";
|
||||||
|
dispatcher = "togglespecialworkspace";
|
||||||
|
command = "protonmail";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
modifier = "$mainMod";
|
||||||
|
key = "S";
|
||||||
|
dispatcher = "togglespecialworkspace";
|
||||||
|
command = "spot";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
{
|
self: {
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
config = let
|
config = let
|
||||||
inherit (lib) getExe mkIf;
|
inherit (self.lib.hypr) mkBind;
|
||||||
|
inherit (lib) getExe map mkIf;
|
||||||
|
|
||||||
cfg = config.roles.desktop;
|
cfg = config.roles.desktop;
|
||||||
|
|
||||||
|
@ -71,27 +72,29 @@
|
||||||
lockPkg
|
lockPkg
|
||||||
];
|
];
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
settings = {
|
exec-once = [
|
||||||
exec-once = [
|
"gnome-keyring-daemon --start --components=secrets"
|
||||||
"gnome-keyring-daemon --start --components=secrets"
|
"${pkgs.plasma5Packages.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
|
||||||
"${pkgs.plasma5Packages.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
|
];
|
||||||
];
|
|
||||||
|
|
||||||
windowrule = [
|
windowrule = [
|
||||||
"float,^(org.kde.polkit-kde-authentication-agent-1)$"
|
"float,^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||||
"size 741 288,^(org.kde.polkit-kde-authentication-agent-1)$"
|
"size 741 288,^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||||
"center,^(org.kde.polkit-kde-authentication-agent-1)$"
|
"center,^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||||
|
|
||||||
# For GParted auth
|
# For GParted auth
|
||||||
"size 741 288,^(org.kde.ksshaskpass)$"
|
"size 741 288,^(org.kde.ksshaskpass)$"
|
||||||
"move cursor -370 -144,^(org.kde.ksshaskpass)$"
|
"move cursor -370 -144,^(org.kde.ksshaskpass)$"
|
||||||
];
|
];
|
||||||
|
|
||||||
bind = [
|
bind = map mkBind [
|
||||||
"$mainMod, L, exec, ${getExe lockPkg}"
|
{
|
||||||
];
|
modifier = "$mainMod";
|
||||||
};
|
key = "L";
|
||||||
|
command = getExe lockPkg;
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,8 @@ self: {
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
config = let
|
config = let
|
||||||
inherit (lib) filterAttrs hasPrefix optionals;
|
inherit (lib) optionals;
|
||||||
|
inherit (self.lib.hypr) mkAnimation;
|
||||||
|
|
||||||
inherit (import ./setupMonitors.nix {inherit config pkgs;}) setupMonitors;
|
inherit (import ./setupMonitors.nix {inherit config pkgs;}) setupMonitors;
|
||||||
|
|
||||||
|
@ -20,8 +21,6 @@ self: {
|
||||||
.wayland
|
.wayland
|
||||||
.windowManager
|
.windowManager
|
||||||
.hyprland;
|
.hyprland;
|
||||||
|
|
||||||
devices = filterAttrs (n: v: hasPrefix "device:" n) cfgHypr.settings;
|
|
||||||
in {
|
in {
|
||||||
home-manager.users.greeter = {
|
home-manager.users.greeter = {
|
||||||
imports = [
|
imports = [
|
||||||
|
@ -30,39 +29,45 @@ self: {
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = cfgHypr.finalPackage;
|
|
||||||
systemd.enable = false;
|
systemd.enable = false;
|
||||||
|
|
||||||
settings =
|
package = cfgHypr.finalPackage;
|
||||||
{
|
|
||||||
inherit (cfgHypr.settings) cursor input misc monitor;
|
|
||||||
|
|
||||||
envd = optionals (config.nvidia.enable) [
|
settings = {
|
||||||
"LIBVA_DRIVER_NAME, nvidia"
|
inherit (cfgHypr.settings) cursor device input misc monitor;
|
||||||
"NVD_BACKEND, direct"
|
|
||||||
"XDG_SESSION_TYPE, wayland"
|
|
||||||
"GBM_BACKEND, nvidia-drm"
|
|
||||||
"__GLX_VENDOR_LIBRARY_NAME, nvidia"
|
|
||||||
];
|
|
||||||
|
|
||||||
general.border_size = 0;
|
envd = optionals (config.nvidia.enable) [
|
||||||
|
"LIBVA_DRIVER_NAME, nvidia"
|
||||||
|
"NVD_BACKEND, direct"
|
||||||
|
"XDG_SESSION_TYPE, wayland"
|
||||||
|
"GBM_BACKEND, nvidia-drm"
|
||||||
|
"__GLX_VENDOR_LIBRARY_NAME, nvidia"
|
||||||
|
];
|
||||||
|
|
||||||
decoration = {
|
general.border_size = 0;
|
||||||
blur.enabled = false;
|
|
||||||
shadow.enabled = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
animation = [
|
decoration = {
|
||||||
"fadeLayersIn, 0"
|
blur.enabled = false;
|
||||||
"layers, 1, 4, default, popin 0%"
|
shadow.enabled = false;
|
||||||
];
|
};
|
||||||
|
|
||||||
exec-once = [
|
animation = map mkAnimation [
|
||||||
setupMonitors
|
{
|
||||||
"agsGreeter &> /tmp/ags-greetd.log; hyprctl dispatch exit"
|
name = "fadeLayersIn";
|
||||||
];
|
enable = false;
|
||||||
}
|
}
|
||||||
// devices;
|
{
|
||||||
|
name = "layers";
|
||||||
|
duration = 4;
|
||||||
|
style = "popin";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
setupMonitors
|
||||||
|
"agsGreeter &> /tmp/ags-greetd.log; hyprctl dispatch exit"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,17 +22,15 @@ self: {pkgs, ...}: {
|
||||||
|
|
||||||
home.file.".local/share/icons/${hyprcursorThemeName}".source = cursorTheme;
|
home.file.".local/share/icons/${hyprcursorThemeName}".source = cursorTheme;
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
settings = {
|
envd = [
|
||||||
envd = [
|
"XCURSOR_THEME, ${cursorThemeName}"
|
||||||
"XCURSOR_THEME, ${cursorThemeName}"
|
"XCURSOR_SIZE, ${toString cursorSize}"
|
||||||
"XCURSOR_SIZE, ${toString cursorSize}"
|
];
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"hyprctl setcursor ${hyprcursorThemeName} ${toString cursorSize}"
|
"hyprctl setcursor ${hyprcursorThemeName} ${toString cursorSize}"
|
||||||
];
|
];
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue