aboutsummaryrefslogtreecommitdiff
path: root/modules/homeModules/exwm.nix
blob: ccc7dbf5df0b4c30bc6ea3eef4b696b87c6af8ac (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
{
  inputs,
  self,
  ...
}: {
  flake.homeModules.exwm = {
    lib,
    pkgs,
    config,
    ...
  }: {
    modules = [
      self.homeModules.picom
      self.homeModules.dunst
    ];

    options.customs = {
      exwm.enable = lib.mkEnableOption " enable exwm";
    };

    config = lib.mkIf config.exwm.enable {
      customs.picom.enable = true;
      customs.dunst.enable = true;

      programs.emacs = {
        extraPackages = epkgs: with epkgs; [exwm];
        extraConfig = ''
          (setq exwm--my-scripts "${./attachments/hypr-scripts}")
        '';
      };
      services = {
        # Screenshotting.
        flameshot.enable = true;

        # Screen locking.
        screen-locker = {
          enable = true;
          lockCmd = "${pkgs.i3lock-fancy}/bin/i3lock-fancy -p -t ''";
          inactiveInterval = 20;
        };
      };
      home.file.xinitrc = {
        text = ''
          # Disable access control for the current user.
          xhost +SI:localuser:$USER

          # Make Java applications aware this is a non-reparenting window manager.
          export _JAVA_AWT_WM_NONREPARENTING=1

          # Set default cursor.
          xsetroot -cursor_name left_ptr

          picom -b

          # Finally start Emacs
          ${pkgs.dbus.dbus-launch} --exit-with-session emacs -mm --fullscreen --internal-border=0 --border-width=0
        '';
        target = ".xinitrc";
      };
      home.packages = with pkgs; [
        boomer
        arandr
        feh
        gtk3
        i3lock-fancy
        xclip
        xorg.xev
      ];
    };
  };
}