XMonad
xmonad is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximizing screen use. Window manager features are accessible from the keyboard: a mouse is optional.
xmonad is written, configured and extensible in Haskell. Custom layout algorithms, key bindings and other extensions may be written by the user in configuration files.
Layouts are applied dynamically, and different layouts may be used on each workspace. Xinerama is fully supported, allowing windows to be tiled on several physical screens.
Installation
/etc/nixos/configuration.nix
services.xserver.windowManager.xmonad.enable = true;
You also have to put the following in your home.nix
to generate the default config
~/.config/nixpkgs/home.nix
xsession.windowManager.xmonad.enable = true;
Configuration
Configuring XMonad with IDE support
To edit XMonad configuration with IDE support, see https://www.srid.ca/xmonad-conf-ide.html