Migrate Hyprland to Lua config, drop dead flake inputs, general cleanup
Hyprland - Switch wayland.windowManager.hyprland to configType = "lua" (Hyprland 0.56) - Convert settings, env, monitors, window rules, gesture, animations (hl.curve/hl.animation) and all keybinds to hl.* calls - Add home/system/hyprland/lib.nix with exec/bind/execOnce helpers; every exec-once now runs from a hyprland.start hook - Drop hard-coded default_monitor = "eDP-2" Flake - Remove blog, awesome-wallpapers and default-creds inputs (their repos no longer ship a flake.nix and broke `nix flake update`), along with the server modules and Glance links that used them - Update flake.lock - Replace removed `gcr` with `gcr_4` Fixes - Point configDirectory at /etc/nixos/nixy on home-pc and thinkpad - Fix home-pc git email typo - Remove conflicting openpgp signing format, make pull.rebase a boolean, replace hx/peco in git aliases with nvim/sk - Fix zsh NUL alias (2>&1) and stop forcing bat colors in the cat alias - Require a password for sudo again (nixos-rebuild stays NOPASSWD) - Remove duplicate hardware.graphics block from home-pc flake - Delete unused zen .old files, run alejandra on host files
This commit is contained in:
@@ -4,26 +4,25 @@
|
||||
config,
|
||||
pkgs-nur-hadi,
|
||||
...
|
||||
}:
|
||||
let
|
||||
}: let
|
||||
hl = import ./lib.nix {inherit lib;};
|
||||
colors = config.lib.stylix.colors;
|
||||
|
||||
mkMenu = menu:
|
||||
let
|
||||
configFile = pkgs.writeText "config.yaml" (
|
||||
lib.generators.toYAML { } {
|
||||
anchor = "bottom-right";
|
||||
border = "#${colors.base0D}80";
|
||||
background = "#${colors.base01}EE";
|
||||
color = "#${colors.base05}";
|
||||
margin_right = 15;
|
||||
margin_bottom = 15;
|
||||
rows_per_column = 5;
|
||||
mkMenu = menu: let
|
||||
configFile = pkgs.writeText "config.yaml" (
|
||||
lib.generators.toYAML {} {
|
||||
anchor = "bottom-right";
|
||||
border = "#${colors.base0D}80";
|
||||
background = "#${colors.base01}EE";
|
||||
color = "#${colors.base05}";
|
||||
margin_right = 15;
|
||||
margin_bottom = 15;
|
||||
rows_per_column = 5;
|
||||
|
||||
inherit menu;
|
||||
}
|
||||
);
|
||||
in
|
||||
inherit menu;
|
||||
}
|
||||
);
|
||||
in
|
||||
pkgs.writeShellScriptBin "menu" ''
|
||||
exec ${lib.getExe pkgs.wlr-which-key} ${configFile}
|
||||
'';
|
||||
@@ -220,18 +219,12 @@ let
|
||||
cmd = "systemctl reboot";
|
||||
}
|
||||
];
|
||||
in
|
||||
{
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
"$mod" = "SUPER";
|
||||
"$shiftMod" = "SUPER_SHIFT";
|
||||
|
||||
bind =
|
||||
[
|
||||
# Applications
|
||||
(
|
||||
"$shiftMod, A, exec, "
|
||||
+ lib.getExe (mkMenu [
|
||||
(hl.bind "SUPER + SHIFT + A" (hl.exec (lib.getExe (mkMenu [
|
||||
{
|
||||
key = "a";
|
||||
desc = "Apps";
|
||||
@@ -257,15 +250,13 @@ in
|
||||
desc = "System";
|
||||
cmd = lib.getExe systemMenu;
|
||||
}
|
||||
])
|
||||
)
|
||||
])))
|
||||
null)
|
||||
|
||||
"$mod,B, exec, uwsm app -- ${config.programs.librewolf.package}/bin/helium" # Browser
|
||||
(hl.bind "SUPER + B" (hl.exec "uwsm app -- ${config.programs.librewolf.package}/bin/helium") null) # Browser
|
||||
|
||||
# Power
|
||||
(
|
||||
"$mod, X, exec, "
|
||||
+ lib.getExe (mkMenu [
|
||||
(hl.bind "SUPER + X" (hl.exec (lib.getExe (mkMenu [
|
||||
{
|
||||
key = "l";
|
||||
desc = "Lock";
|
||||
@@ -296,69 +287,100 @@ in
|
||||
desc = "Restart Waybar";
|
||||
cmd = "pkill -x waybar; waybar";
|
||||
}
|
||||
])
|
||||
)
|
||||
])))
|
||||
null)
|
||||
|
||||
# Quick launch
|
||||
"$mod,RETURN, exec, uwsm app -- ${pkgs.ghostty}/bin/ghostty" # Ghostty (terminal)
|
||||
"$mod,E, exec, uwsm app -- ${pkgs.thunar}/bin/thunar" # Thunar
|
||||
"$mod, SPACE, exec, walker" # Launcher
|
||||
"$mod, N, exec, ${lib.getExe pkgs.grimblast} save area" # Save screenshot
|
||||
"$mod, D, exec, ${lib.getExe pkgs.grimblast} copy area" # Copy screenshot
|
||||
(hl.bind "SUPER + RETURN" (hl.exec "uwsm app -- ${pkgs.ghostty}/bin/ghostty") null) # Ghostty (terminal)
|
||||
(hl.bind "SUPER + E" (hl.exec "uwsm app -- ${pkgs.thunar}/bin/thunar") null) # Thunar
|
||||
(hl.bind "SUPER + SPACE" (hl.exec "walker") null) # Launcher
|
||||
(hl.bind "SUPER + N" (hl.exec "${lib.getExe pkgs.grimblast} save area") null) # Save screenshot
|
||||
(hl.bind "SUPER + D" (hl.exec "${lib.getExe pkgs.grimblast} copy area") null) # Copy screenshot
|
||||
|
||||
# Windows
|
||||
"$mod,Q, killactive," # Close window
|
||||
"$mod,F, fullscreen" # Toggle Fullscreen
|
||||
"$shiftMod,F, togglefloating," # Toggle Floating
|
||||
(hl.bind "SUPER + Q" (hl.mkLuaInline "hl.dsp.window.close()") null) # Close window
|
||||
(hl.bind "SUPER + F" (hl.mkLuaInline ''hl.dsp.window.fullscreen({ mode = "fullscreen" })'') null) # Toggle Fullscreen
|
||||
(hl.bind "SUPER + SHIFT + F" (hl.mkLuaInline ''hl.dsp.window.float({ action = "toggle" })'') null) # Toggle Floating
|
||||
|
||||
# Focus Windows
|
||||
"$mod,H, movefocus, l" # Move focus left
|
||||
"$mod,J, movefocus, d" # Move focus Down
|
||||
"$mod,K, movefocus, u" # Move focus Up
|
||||
"$mod,L, movefocus, r" # Move focus Right
|
||||
"$shiftMod,H, focusmonitor, -1" # Focus previous monitor
|
||||
"$shiftMod,J, layoutmsg, removemaster" # Remove from master
|
||||
"$shiftMod,K, layoutmsg, addmaster" # Add to master
|
||||
"$shiftMod,L, focusmonitor, 1" # Focus next monitor
|
||||
(hl.bind "SUPER + H" (hl.mkLuaInline ''hl.dsp.focus({ direction = "left" })'') null) # Move focus left
|
||||
(hl.bind "SUPER + J" (hl.mkLuaInline ''hl.dsp.focus({ direction = "down" })'') null) # Move focus Down
|
||||
(hl.bind "SUPER + K" (hl.mkLuaInline ''hl.dsp.focus({ direction = "up" })'') null) # Move focus Up
|
||||
(hl.bind "SUPER + L" (hl.mkLuaInline ''hl.dsp.focus({ direction = "right" })'') null) # Move focus Right
|
||||
(hl.bind "SUPER + SHIFT + H" (hl.mkLuaInline ''hl.dsp.focus({ monitor = "-1" })'') null) # Focus previous monitor
|
||||
(hl.bind "SUPER + SHIFT + J" (hl.mkLuaInline ''hl.dsp.layout("removemaster")'') null) # Remove from master
|
||||
(hl.bind "SUPER + SHIFT + K" (hl.mkLuaInline ''hl.dsp.layout("addmaster")'') null) # Add to master
|
||||
(hl.bind "SUPER + SHIFT + L" (hl.mkLuaInline ''hl.dsp.focus({ monitor = "+1" })'') null) # Focus next monitor
|
||||
|
||||
# Utilities
|
||||
"$shiftMod, S, exec, ${lib.getExe pkgs.grimblast} copy area" # Capture region
|
||||
", Print, exec, ${lib.getExe pkgs.grimblast} copy area" # Capture region
|
||||
"$shiftMod+Alt, S, exec, ${lib.getExe pkgs.grimblast} save area" # Capture region
|
||||
(hl.bind "SUPER + SHIFT + S" (hl.exec "${lib.getExe pkgs.grimblast} copy area") null) # Capture region
|
||||
(hl.bind "Print" (hl.exec "${lib.getExe pkgs.grimblast} copy area") null) # Capture region
|
||||
(hl.bind "SUPER + SHIFT + ALT + S" (hl.exec "${lib.getExe pkgs.grimblast} save area") null) # Capture region
|
||||
]
|
||||
# Workspaces: keycodes 10-18 are the number row keys 1-9
|
||||
++ (builtins.concatLists (
|
||||
builtins.genList (
|
||||
i: let
|
||||
ws = i + 1;
|
||||
ws = toString (i + 1);
|
||||
in [
|
||||
"$mod,code:1${toString i}, workspace, ${toString ws}"
|
||||
"$mod SHIFT,code:1${toString i}, movetoworkspace, ${toString ws}"
|
||||
(hl.bind "SUPER + code:1${toString i}" (hl.mkLuaInline "hl.dsp.focus({ workspace = ${ws} })") null)
|
||||
(hl.bind "SUPER + SHIFT + code:1${toString i}" (hl.mkLuaInline "hl.dsp.window.move({ workspace = ${ws} })") null)
|
||||
]
|
||||
)
|
||||
9
|
||||
));
|
||||
))
|
||||
# Mouse
|
||||
++ [
|
||||
(hl.bind "SUPER + mouse:272" (hl.mkLuaInline "hl.dsp.window.drag()") {mouse = true;}) # Move Window (mouse)
|
||||
(hl.bind "SUPER + R" (hl.mkLuaInline "hl.dsp.window.resize()") {mouse = true;}) # Resize Window (mouse)
|
||||
]
|
||||
# Locked (also work on the lockscreen)
|
||||
++ (map (b: hl.bind b.key (hl.exec b.cmd) {locked = true;}) [
|
||||
# Brightness
|
||||
{
|
||||
key = "XF86MonBrightnessUp";
|
||||
cmd = "${lib.getExe pkgs.brightnessctl} set 5%+";
|
||||
}
|
||||
{
|
||||
key = "XF86MonBrightnessDown";
|
||||
cmd = "${lib.getExe pkgs.brightnessctl} set 5%-";
|
||||
}
|
||||
|
||||
bindm = [
|
||||
"$mod,mouse:272, movewindow" # Move Window (mouse)
|
||||
"$mod,R, resizewindow" # Resize Window (mouse)
|
||||
];
|
||||
# Media
|
||||
{
|
||||
key = "XF86AudioPlay";
|
||||
cmd = "${lib.getExe pkgs.playerctl} play-pause";
|
||||
}
|
||||
{
|
||||
key = "XF86AudioPause";
|
||||
cmd = "${lib.getExe pkgs.playerctl} play-pause";
|
||||
}
|
||||
{
|
||||
key = "XF86AudioNext";
|
||||
cmd = "${lib.getExe pkgs.playerctl} next";
|
||||
}
|
||||
{
|
||||
key = "XF86AudioPrev";
|
||||
cmd = "${lib.getExe pkgs.playerctl} previous";
|
||||
}
|
||||
{
|
||||
key = "XF86AudioStop";
|
||||
cmd = "${lib.getExe pkgs.playerctl} stop";
|
||||
}
|
||||
|
||||
bindl = [
|
||||
# Brightness
|
||||
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} set 5%+"
|
||||
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} set 5%-"
|
||||
|
||||
# Media
|
||||
", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause"
|
||||
", XF86AudioPause, exec, ${lib.getExe pkgs.playerctl} play-pause"
|
||||
", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next"
|
||||
", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous"
|
||||
", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop"
|
||||
|
||||
# Sound
|
||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
];
|
||||
# Sound
|
||||
{
|
||||
key = "XF86AudioMute";
|
||||
cmd = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
}
|
||||
{
|
||||
key = "XF86AudioRaiseVolume";
|
||||
cmd = "wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+";
|
||||
}
|
||||
{
|
||||
key = "XF86AudioLowerVolume";
|
||||
cmd = "wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
|
||||
}
|
||||
]);
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user