 dd5f0d9538
			
		
	
	
		dd5f0d9538
		
			
		
	
	
	
	
		
			
			Regression introduced by 520a43ced38843d5116594b359854e02fa7ed057. Using XML tag characters for things that are not tags needs to be properly indicated by an entity. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
		
			
				
	
	
		
			177 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| # Global configuration for oblogout.
 | |
| 
 | |
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| let cfg = config.programs.oblogout;
 | |
| 
 | |
| in
 | |
| {
 | |
|   ###### interface
 | |
| 
 | |
|   options = {
 | |
| 
 | |
|     programs.oblogout = {
 | |
| 
 | |
|       enable = mkOption {
 | |
|         type = types.bool;
 | |
|         default = false;
 | |
|         description = ''
 | |
|           Whether to install OBLogout and create <filename>/etc/oblogout.conf</filename>.
 | |
|           See <filename>${pkgs.oblogout}/share/doc/README</filename>.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       opacity = mkOption {
 | |
|         type = types.int;
 | |
|         default = 70;
 | |
|         description = ''
 | |
|           Opacity percentage of Cairo rendered backgrounds.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       bgcolor = mkOption {
 | |
|         type = types.str;
 | |
|         default = "black";
 | |
|         description = ''
 | |
|           Colour name or hex code (#ffffff) of the background color.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       buttontheme = mkOption {
 | |
|         type = types.str;
 | |
|         default = "simplistic";
 | |
|         description = ''
 | |
|           Icon theme for the buttons, must be in the themes folder of
 | |
|           the package, or in
 | |
|           <filename>~/.themes/<name>/oblogout/</filename>.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       buttons = mkOption {
 | |
|         type = types.str;
 | |
|         default =  "cancel, logout, restart, shutdown, suspend, hibernate";
 | |
|         description = ''
 | |
|           List and order of buttons to show.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       cancel = mkOption {
 | |
|         type = types.str;
 | |
|         default =  "Escape";
 | |
|         description = ''
 | |
|           Cancel logout/shutdown shortcut.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       shutdown = mkOption {
 | |
|         type = types.str;
 | |
|         default = "S";
 | |
|         description = ''
 | |
|           Shutdown shortcut.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       restart = mkOption {
 | |
|         type = types.str;
 | |
|         default = "R";
 | |
|         description = ''
 | |
|           Restart shortcut.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       suspend = mkOption {
 | |
|         type = types.str;
 | |
|         default = "U";
 | |
|         description = ''
 | |
|           Suspend shortcut.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       logout = mkOption {
 | |
|         type = types.str;
 | |
|         default = "L";
 | |
|         description = ''
 | |
|           Logout shortcut.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       lock = mkOption {
 | |
|         type = types.str;
 | |
|         default = "K";
 | |
|         description = ''
 | |
|           Lock session shortcut.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       hibernate = mkOption {
 | |
|         type = types.str;
 | |
|         default =  "H";
 | |
|         description = ''
 | |
|           Hibernate shortcut.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       clogout = mkOption {
 | |
|         type = types.str;
 | |
|         default = "openbox --exit";
 | |
|         description = ''
 | |
|           Command to logout.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       clock = mkOption {
 | |
|         type = types.str;
 | |
|         default = "";
 | |
|         description = ''
 | |
|           Command to lock screen.
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|       cswitchuser = mkOption {
 | |
|         type = types.str;
 | |
|         default = "";
 | |
|         description = ''
 | |
|           Command to switch user.
 | |
|         '';
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   ###### implementation
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
|     environment.systemPackages = [ pkgs.oblogout ];
 | |
| 
 | |
|     environment.etc."oblogout.conf".text = ''
 | |
|       [settings]
 | |
|       usehal = false
 | |
| 
 | |
|       [looks]
 | |
|       opacity = ${toString cfg.opacity}
 | |
|       bgcolor = ${cfg.bgcolor}
 | |
|       buttontheme = ${cfg.buttontheme}
 | |
|       buttons = ${cfg.buttons}
 | |
| 
 | |
|       [shortcuts]
 | |
|       cancel = ${cfg.cancel}
 | |
|       shutdown = ${cfg.shutdown}
 | |
|       restart = ${cfg.restart}
 | |
|       suspend = ${cfg.suspend}
 | |
|       logout = ${cfg.logout}
 | |
|       lock = ${cfg.lock}
 | |
|       hibernate = ${cfg.hibernate}
 | |
| 
 | |
|       [commands]
 | |
|       shutdown = systemctl poweroff
 | |
|       restart = systemctl reboot
 | |
|       suspend = systemctl suspend
 | |
|       hibernate = systemctl hibernate
 | |
|       logout = ${cfg.clogout}
 | |
|       lock = ${cfg.clock}
 | |
|       switchuser = ${cfg.cswitchuser}
 | |
|     '';
 | |
|   };
 | |
| }
 |