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}/bin/dbus-run-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 ];
 | |
| }
 | 
