diff --git a/modules/misc/news.nix b/modules/misc/news.nix index aba6e3be..8f160ad2 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -704,6 +704,13 @@ in A new module is available: 'programs.notmuch'. ''; } + + { + time = "2018-07-07T15:48:56+00:00"; + message = '' + A new module is available: 'xsession.windowManager.awesome'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index b9727ff3..78254c1d 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -77,6 +77,7 @@ let ./services/tahoe-lafs.nix ./services/udiskie.nix ./services/unclutter.nix + ./services/window-managers/awesome.nix ./services/window-managers/i3.nix ./services/window-managers/xmonad.nix ./services/xscreensaver.nix diff --git a/modules/services/window-managers/awesome.nix b/modules/services/window-managers/awesome.nix new file mode 100644 index 00000000..ef01414f --- /dev/null +++ b/modules/services/window-managers/awesome.nix @@ -0,0 +1,57 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.xsession.windowManager.awesome; + awesome = cfg.package; + getLuaPath = lib: dir: "${lib}/${dir}/lua/${pkgs.luaPackages.lua.luaversion}"; + makeSearchPath = lib.concatMapStrings (path: + " --search ${getLuaPath path "share"}" + " --search ${getLuaPath path "lib"}" + ); + +in + +{ + options = { + xsession.windowManager.awesome = { + enable = mkEnableOption "Awesome window manager."; + + package = mkOption { + type = types.package; + default = pkgs.awesome; + defaultText = "pkgs.awesome"; + description = "Package to use for running the Awesome WM."; + }; + + luaModules = mkOption { + default = []; + type = types.listOf types.package; + description = '' + List of lua packages available for being + used in the Awesome configuration. + ''; + example = literalExample "[ luaPackages.oocairo ]"; + }; + + noArgb = mkOption { + default = false; + type = types.bool; + description = '' + Disable client transparency support, which can be greatly + detrimental to performance in some setups + ''; + }; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ awesome ]; + xsession.windowManager.command = + "${awesome}/bin/awesome " + + optionalString cfg.noArgb "--no-argb " + + makeSearchPath cfg.luaModules; + }; +}