at master 2.3 kB view raw
1{ 2 pkgs, 3 config, 4 lib, 5 ... 6}@inputs: 7 8let 9 i3-workspace-history = 10 inputs.i3-workspace-history.packages.${pkgs.stdenv.hostPlatform.system}.default; 11 replacements = { 12 wm = "i3"; 13 wmmsg = "i3-msg"; 14 rofi = "rofi"; 15 app_id = "class"; 16 bar_extra = ""; 17 locked = ""; 18 polkit_gnome = "${pkgs.polkit_gnome}"; 19 locker = "xsecurelock"; 20 enable_output = "xrandr --output $laptop_output --auto"; 21 disable_output = "xrandr --output $laptop_output --off"; 22 drun = "rofi -i -modi drun -show drun"; 23 dmenu = "rofi -i -dmenu -p"; 24 displays = "arandr"; 25 notification_deamon = "dunst"; 26 i3_workspace_history = "${i3-workspace-history}/bin/i3-workspace-history"; 27 i3_workspace_history_args = ""; 28 }; 29 util = import ./util.nix { inherit pkgs lib; }; 30 cfg = config.custom.gui.i3; 31in 32{ 33 options.custom.gui.i3.enable = lib.mkEnableOption "i3"; 34 35 config = lib.mkIf cfg.enable { 36 # TODO 37 # idling 38 39 home.packages = with pkgs; [ i3-workspace-history ]; 40 41 home.pointerCursor.x11.enable = true; 42 43 home.file = { 44 ".xinitrc".text = '' 45 export XDG_SESSION_TYPE=x11 46 export GDK_BACKEND=x11 47 export DESKTOP_SESSION=plasma 48 export TMUX_TMPDIR=$XDG_RUNTIME_DIR/x-tmux 49 eval `dbus-launch` 50 export DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID DBUS_SESSION_BUS_WINDOWID 51 exec i3 52 ''; 53 ".zprofile".text = '' 54 # Autostart at login on TTY 2 55 if [ -z "''${DISPLAY}" ] && [ "''${XDG_VTNR}" -eq 2 ]; then 56 source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh 57 exec startx 58 fi 59 ''; 60 }; 61 62 xdg.configFile = 63 let 64 entries = { 65 "dunst/dunstrc".source = ./dunst; 66 "i3/config".text = 67 let 68 wmFilenames = util.listFilesInDir ./wm/config.d; 69 in 70 let 71 i3Filenames = util.listFilesInDir ./wm/i3; 72 in 73 (util.concatFilesReplace ([ ./wm/config ] ++ wmFilenames ++ i3Filenames) replacements); 74 "rofi/config.rasi".source = ./rofi.rasi; 75 }; 76 in 77 (util.inDirReplace ./wm/scripts "i3/scripts" replacements) // entries; 78 79 services.redshift = { 80 enable = true; 81 provider = "geoclue2"; 82 }; 83 84 services.picom.enable = true; 85 }; 86}