at 18.09-beta 2.0 kB view raw
1{ config, pkgs, lib, ... }: 2 3with lib; 4 5let 6 cfg = config.programs.way-cooler; 7 way-cooler = pkgs.way-cooler; 8 9 wcWrapped = pkgs.writeShellScriptBin "way-cooler" '' 10 ${cfg.extraSessionCommands} 11 exec ${pkgs.dbus.dbus-launch} --exit-with-session ${way-cooler}/bin/way-cooler 12 ''; 13 wcJoined = pkgs.symlinkJoin { 14 name = "way-cooler-wrapped"; 15 paths = [ wcWrapped way-cooler ]; 16 }; 17 configFile = readFile "${way-cooler}/etc/way-cooler/init.lua"; 18 spawnBar = '' 19 util.program.spawn_at_startup("lemonbar"); 20 ''; 21in 22{ 23 options.programs.way-cooler = { 24 enable = mkEnableOption "way-cooler"; 25 26 extraSessionCommands = mkOption { 27 default = ""; 28 type = types.lines; 29 example = '' 30 export XKB_DEFAULT_LAYOUT=us,de 31 export XKB_DEFAULT_VARIANT=,nodeadkeys 32 export XKB_DEFAULT_OPTIONS=grp:caps_toggle, 33 ''; 34 description = '' 35 Shell commands executed just before way-cooler is started. 36 ''; 37 }; 38 39 extraPackages = mkOption { 40 type = with types; listOf package; 41 default = with pkgs; [ 42 westonLite xwayland dmenu 43 ]; 44 example = literalExample '' 45 with pkgs; [ 46 westonLite xwayland dmenu 47 ] 48 ''; 49 description = '' 50 Extra packages to be installed system wide. 51 ''; 52 }; 53 54 enableBar = mkOption { 55 type = types.bool; 56 default = true; 57 description = '' 58 Whether to enable an unofficial bar. 59 ''; 60 }; 61 }; 62 63 config = mkIf cfg.enable { 64 environment.systemPackages = [ wcJoined ] ++ cfg.extraPackages; 65 66 security.pam.services.wc-lock = {}; 67 environment.etc."way-cooler/init.lua".text = '' 68 ${configFile} 69 ${optionalString cfg.enableBar spawnBar} 70 ''; 71 72 hardware.opengl.enable = mkDefault true; 73 fonts.enableDefaultFonts = mkDefault true; 74 programs.dconf.enable = mkDefault true; 75 }; 76 77 meta.maintainers = with maintainers; [ gnidorah ]; 78}