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}