python3Packages.pywikibot: init at 9.5.0 (#333068)
[NixPkgs.git] / nixos / modules / services / x11 / window-managers / awesome.nix
blob20a33fa87d4d80f120d2b10d719b451b66bacbf9
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   cfg = config.services.xserver.windowManager.awesome;
8   awesome = cfg.package;
9   getLuaPath = lib: dir: "${lib}/${dir}/lua/${awesome.lua.luaversion}";
10   makeSearchPath = lib.concatMapStrings (path:
11     " --search " + (getLuaPath path "share") +
12     " --search " + (getLuaPath path "lib")
13   );
18   ###### interface
20   options = {
22     services.xserver.windowManager.awesome = {
24       enable = mkEnableOption "Awesome window manager";
26       luaModules = mkOption {
27         default = [];
28         type = types.listOf types.package;
29         description = "List of lua packages available for being used in the Awesome configuration.";
30         example = literalExpression "[ pkgs.luaPackages.vicious ]";
31       };
33       package = mkPackageOption pkgs "awesome" { };
35       noArgb = mkOption {
36         default = false;
37         type = types.bool;
38         description = "Disable client transparency support, which can be greatly detrimental to performance in some setups";
39       };
40     };
42   };
45   ###### implementation
47   config = mkIf cfg.enable {
49     services.xserver.windowManager.session = singleton
50       { name = "awesome";
51         start =
52           ''
53             ${awesome}/bin/awesome ${lib.optionalString cfg.noArgb "--no-argb"} ${makeSearchPath cfg.luaModules} &
54             waitPID=$!
55           '';
56       };
58     environment.systemPackages = [ awesome ];
60   };