aboutsummaryrefslogtreecommitdiff
path: root/home-manager/homeModules/exwm.nix
blob: bc5d79c8ae41620b39ad74eb82daedbf6e3a67da (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
{ lib, pkgs, config, ... }:
{
  imports = [
    ./picom.nix
    ./dunst.nix
  ];

  options = {
    exwm.enable = lib.mkEnableOption " enable exwm";
  };
  
  config = lib.mkIf config.exwm.enable {
    picom.enable = true;
    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
    ];
  };
}