summaryrefslogtreecommitdiff
path: root/modules/home-manager/personal/gui/x/i3/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home-manager/personal/gui/x/i3/default.nix')
-rw-r--r--modules/home-manager/personal/gui/x/i3/default.nix56
1 files changed, 56 insertions, 0 deletions
diff --git a/modules/home-manager/personal/gui/x/i3/default.nix b/modules/home-manager/personal/gui/x/i3/default.nix
new file mode 100644
index 0000000..beae770
--- /dev/null
+++ b/modules/home-manager/personal/gui/x/i3/default.nix
@@ -0,0 +1,56 @@
+{ config, lib, pkgs, ... }@extraArgs:
+
+let cfg = config.personal.x.i3;
+in {
+ imports = [ ./bar ./keybindings.nix ./startup.nix ];
+
+ options.personal.x.i3 = {
+ enable = lib.mkEnableOption "i3" // {
+ default =
+ extraArgs.osConfig.services.xserver.windowManager.i3.enable or false;
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ xsession.windowManager.i3 = {
+ enable = cfg.enable;
+ package = lib.mkDefault pkgs.i3-gaps;
+
+ config = {
+ assigns = lib.optionalAttrs (config.personal.profiles.multimedia
+ && (extraArgs.osConfig.programs.steam.enable or true)) {
+ "8: multimedia" = [
+ { class = "^Steam$"; }
+ { class = "Netflix"; }
+ { class = "MUBI"; }
+ { class = "Deezer"; }
+ ];
+ } // lib.optionalAttrs config.personal.profiles.social {
+ "9: social" = [
+ { class = "^Mail$"; }
+ { class = "^thunderbird$"; }
+ { class = "^Signal$"; }
+ ];
+ } // {
+ "10: passwords" = [{
+ # matches <some db>.kbdx [Locked] - KeePassXC
+ title = ".*\\.kbdx \\[Locked\\] - KeePassXC$";
+ }];
+ };
+
+ workspaceAutoBackAndForth = lib.mkDefault true;
+
+ window = {
+ titlebar = lib.mkDefault false;
+ border = lib.mkDefault 0;
+ };
+ floating.titlebar = lib.mkDefault false;
+ gaps = {
+ inner = lib.mkDefault 15;
+ outer = lib.mkDefault 5;
+ };
+ };
+ };
+ programs.rofi.enable = lib.mkDefault true;
+ };
+}