{ config, pkgs, lib, ... }: { options.custom = with lib; { displaymanager = { enable = mkEnableOption "Enable displaymanager"; }; }; config = lib.mkIf config.custom.displaymanager.enable { services = { xserver = { enable = true; desktopManager = { xterm.enable = false; }; displayManager = { lightdm = { enable = true; greeters.enso = { enable = true; }; }; session = [ { manage = "window"; name = "hm"; start = '' export CURRENT_XSESSION="hm" ${pkgs.stdenv.shell} $HOME/.xsession-hm & waitPID=$! ''; } ]; }; windowManager.i3 = { enable = true; extraPackages = with pkgs; [ dmenu i3status i3lock ]; }; }; xserver.xkb.layout = "us"; gnome.gnome-keyring.enable = true; }; security.polkit.enable = true; }; }