at master 1.4 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7 8with lib; 9 10let 11 12 cfg = config.services.xserver.windowManager.awesome; 13 awesome = cfg.package; 14 getLuaPath = lib: dir: "${lib}/${dir}/lua/${awesome.lua.luaversion}"; 15 makeSearchPath = lib.concatMapStrings ( 16 path: " --search " + (getLuaPath path "share") + " --search " + (getLuaPath path "lib") 17 ); 18in 19 20{ 21 22 ###### interface 23 24 options = { 25 26 services.xserver.windowManager.awesome = { 27 28 enable = mkEnableOption "Awesome window manager"; 29 30 luaModules = mkOption { 31 default = [ ]; 32 type = types.listOf types.package; 33 description = "List of lua packages available for being used in the Awesome configuration."; 34 example = literalExpression "[ pkgs.luaPackages.vicious ]"; 35 }; 36 37 package = mkPackageOption pkgs "awesome" { }; 38 39 noArgb = mkOption { 40 default = false; 41 type = types.bool; 42 description = "Disable client transparency support, which can be greatly detrimental to performance in some setups"; 43 }; 44 }; 45 46 }; 47 48 ###### implementation 49 50 config = mkIf cfg.enable { 51 52 services.xserver.windowManager.session = singleton { 53 name = "awesome"; 54 start = '' 55 ${awesome}/bin/awesome ${lib.optionalString cfg.noArgb "--no-argb"} ${makeSearchPath cfg.luaModules} & 56 waitPID=$! 57 ''; 58 }; 59 60 environment.systemPackages = [ awesome ]; 61 62 }; 63}