79 lines
1.9 KiB
Nix
79 lines
1.9 KiB
Nix
|
{ config, pkgs, lib, ... }:
|
||
|
|
||
|
with lib;
|
||
|
|
||
|
let
|
||
|
cfg = config.programs.way-cooler;
|
||
|
way-cooler = pkgs.way-cooler;
|
||
|
|
||
|
wcWrapped = pkgs.writeShellScriptBin "way-cooler" ''
|
||
|
${cfg.extraSessionCommands}
|
||
|
exec ${pkgs.dbus.dbus-launch} --exit-with-session ${way-cooler}/bin/way-cooler
|
||
|
'';
|
||
|
wcJoined = pkgs.symlinkJoin {
|
||
|
name = "way-cooler-wrapped";
|
||
|
paths = [ wcWrapped way-cooler ];
|
||
|
};
|
||
|
configFile = readFile "${way-cooler}/etc/way-cooler/init.lua";
|
||
|
spawnBar = ''
|
||
|
util.program.spawn_at_startup("lemonbar");
|
||
|
'';
|
||
|
in
|
||
|
{
|
||
|
options.programs.way-cooler = {
|
||
|
enable = mkEnableOption "way-cooler";
|
||
|
|
||
|
extraSessionCommands = mkOption {
|
||
|
default = "";
|
||
|
type = types.lines;
|
||
|
example = ''
|
||
|
export XKB_DEFAULT_LAYOUT=us,de
|
||
|
export XKB_DEFAULT_VARIANT=,nodeadkeys
|
||
|
export XKB_DEFAULT_OPTIONS=grp:caps_toggle,
|
||
|
'';
|
||
|
description = ''
|
||
|
Shell commands executed just before way-cooler is started.
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
extraPackages = mkOption {
|
||
|
type = with types; listOf package;
|
||
|
default = with pkgs; [
|
||
|
westonLite xwayland dmenu
|
||
|
];
|
||
|
example = literalExample ''
|
||
|
with pkgs; [
|
||
|
westonLite xwayland dmenu
|
||
|
]
|
||
|
'';
|
||
|
description = ''
|
||
|
Extra packages to be installed system wide.
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
enableBar = mkOption {
|
||
|
type = types.bool;
|
||
|
default = true;
|
||
|
description = ''
|
||
|
Whether to enable an unofficial bar.
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = mkIf cfg.enable {
|
||
|
environment.systemPackages = [ wcJoined ] ++ cfg.extraPackages;
|
||
|
|
||
|
security.pam.services.wc-lock = {};
|
||
|
environment.etc."way-cooler/init.lua".text = ''
|
||
|
${configFile}
|
||
|
${optionalString cfg.enableBar spawnBar}
|
||
|
'';
|
||
|
|
||
|
hardware.opengl.enable = mkDefault true;
|
||
|
fonts.enableDefaultFonts = mkDefault true;
|
||
|
programs.dconf.enable = mkDefault true;
|
||
|
};
|
||
|
|
||
|
meta.maintainers = with maintainers; [ gnidorah ];
|
||
|
}
|