diff options
Diffstat (limited to 'modules/i3/default.nix')
-rw-r--r-- | modules/i3/default.nix | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/modules/i3/default.nix b/modules/i3/default.nix new file mode 100644 index 00000000..99849bf4 --- /dev/null +++ b/modules/i3/default.nix @@ -0,0 +1,56 @@ +{ pkgs, config, ... }: + +{ + services.xserver.windowManager = { + default = "i3"; + + i3.enable = true; + i3.configFile = with pkgs.lib; pkgs.substituteAll ({ + name = "i3.conf"; + src = ./i3.conf; + + inherit (pkgs) conky dmenu xterm pvolctrl; + inherit (pkgs.xorg) xsetroot; + leftHead = head config.services.xserver.xrandrHeads; + rightHead = last config.services.xserver.xrandrHeads; + + primaryNetInterface = "enp0s25"; + + conkyrc = pkgs.writeText "conkyrc" '' + cpu_avg_samples 2 + net_avg_samples 2 + no_buffers yes + out_to_console yes + out_to_ncurses no + out_to_stderr no + extra_newline no + update_interval 1.0 + uppercase no + use_spacer none + pad_percents 3 + use_spacer left + TEXT + ''; + } // (let + # Workaround for Synergy: we need to have polarizing heads. + leftHead = head config.services.xserver.xrandrHeads; + rightHead = last config.services.xserver.xrandrHeads; + in if config.networking.hostName == "mmrnmhrm" + then { inherit leftHead rightHead; } + else { leftHead = rightHead; rightHead = leftHead; } + ) // (let + wsConfig = if config.networking.hostName == "mmrnmhrm" + then [ "XMPP" null "chromium" null null + null null null null null ] + else [ "chromium" null null null null + null null null null null ]; + + mkWsName = num: name: let + mkPair = nameValuePair "ws${toString num}"; + in if name == null + then mkPair (toString num) + else mkPair "${toString num}: ${name}"; + + in listToAttrs (imap mkWsName wsConfig))); + }; +} |