diff options
Diffstat (limited to 'share/home/hyprdesktop.nix')
| -rw-r--r-- | share/home/hyprdesktop.nix | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/share/home/hyprdesktop.nix b/share/home/hyprdesktop.nix index fbf406b..d095bb5 100644 --- a/share/home/hyprdesktop.nix +++ b/share/home/hyprdesktop.nix @@ -1,15 +1,90 @@ # Module containing a bunch of things that make up a `desktop environment` built # off of hyprland. I install this on all my desktop/laptop machines. +# IMPORTANT: this module requires the system to already have `programs.hyprland` +# enabled. You can enable it by importing `share/system/hyprland.nix` { pkgs, config, inputs, ... }: { imports = [ + # Custom home manager modules + ../hm-modules/wpaperd.nix + + # Config ./minimal.nix - ./hyprland.nix + ./wpaperd.nix + ./eww ./git.nix ./mpv.nix ./kitty.nix ./firefox ]; + wayland.windowManager.hyprland = { + enable = true; + extraConfig = '' + $mod = SUPER + + bind = $mod SHIFT, Return, exec, kitty + + general { + layout = master + } + + master { + mfact = 0.5 + new_is_master = false + } + + # workspaces + # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} + ${builtins.concatStringsSep "\n" (builtins.genList (x: + let ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); + in '' + bind = $mod, ${ws}, workspace, ${toString (x + 1)} + bind = $mod SHIFT, ${ws}, movetoworkspacesilent, ${toString (x + 1)} + '') 10)} + + bind = $mod SHIFT, C, killactive + bind = $mod SHIFT, F, togglefloating + bind = $mod SHIFT, Q, exit + bind = $mod, P, exec, rofi -show drun + bind = $mod SHIFT, P, exec, rofi -show run + + bind = $mod, H, cyclenext, prev + bind = $mod, L, cyclenext + bind = $mod SHIFT, H, swapnext, prev + bind = $mod SHIFT, L, swapnext + + # audio control + binde =, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ --limit 1.0 5%+ + binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ --limit 1.0 5%- + bind =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + + # monitor brightness control + binde =, XF86MonBrightnessUp, exec, brightnessctl set +5% + binde =, XF86MonBrightnessDown, exec, brightnessctl set 5%- + + # Screenshotting + # My stupid laptop outputs these three key codes when the PrtSc key is + # pressed instead of using just one code like any sane device would + bind = SUPER SHIFT, S, exec, grim -g "$(slurp)" -t png - | wl-copy --type image/png + + input { + # focus change on cursor move + follow_mouse = 1 + accel_profile = flat + } + monitor=,preferred,auto,1 + + # set opacity to 0.9 active and 0.5 inactive for kitty + windowrule = opacity 0.9 override 0.5 override,^(kitty)$ + + # move qbittorrent to workspace 6 + # TODO: make popup windows stay on the workspace where they were created + # windowrulev2 = workspace 6,class:(org.qbittorrent.qBittorrent),floating:0 + + exec-once = eww --config ${config.programs.eww.configDir} open bar + ''; + }; + home.packages = with pkgs; [ xh # Nice to use HTTP client bc # CLI calculator @@ -22,6 +97,10 @@ winetricks inputs.scripts.packages.${pkgs.system}.image-move qemu_kvm + wireplumber # session & policy manager for pipewire + grim # screenshot utility for wayland + slurp # region selection UI for wayland + wl-clipboard # clipboard utility # TUI/GUI programs cmus # music player @@ -42,6 +121,9 @@ superTuxKart ]; + services.dunst.enable = true; + programs.rofi.enable = true; + programs.direnv = { enable = true; nix-direnv.enable = true; |
