aboutsummaryrefslogtreecommitdiff
path: root/share/home/hyprland.nix
blob: e272b9a88473a69765ff69348a6987a65e09a3ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# IMPORTANT: this module requires the system to already have `programs.hyprland`
#            enabled. You can enable it by importing `share/system/hyprland.nix`
{ pkgs, ... }: {
  imports = [
    # Custom home manager modules
    ../hm-modules/wpaperd.nix

    # Config
    ./kitty.nix
    ./wpaperd.nix
    ./eww
  ];

  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 jpeg - | wl-copy --type image/jpeg

        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)$ 
    '';
  };

  home.packages = with pkgs; [ brightnessctl wireplumber grim slurp wl-clipboard ];
  services.dunst.enable = true;
  programs.rofi.enable = true;
}