1{ config, lib, pkgs, ... }: 2 3with lib; 4 5let 6 cfg = config.services.xserver.windowManager.i3; 7in 8 9{ 10 options = { 11 services.xserver.windowManager.i3 = { 12 enable = mkEnableOption "i3"; 13 14 configFile = mkOption { 15 default = null; 16 type = types.nullOr types.path; 17 description = '' 18 Path to the i3 configuration file. 19 If left at the default value, $HOME/.i3/config will be used. 20 ''; 21 }; 22 }; 23 }; 24 25 config = mkIf cfg.enable { 26 services.xserver.windowManager = { 27 session = [{ 28 name = "i3"; 29 start = '' 30 ${pkgs.i3}/bin/i3 ${optionalString (cfg.configFile != null) 31 "-c \"${cfg.configFile}\"" 32 } & 33 waitPID=$! 34 ''; 35 }]; 36 }; 37 environment.systemPackages = with pkgs; [ i3 ]; 38 }; 39}