41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, options, modulesPath, ... }:
 | |
| 
 | |
| with lib;
 | |
| let
 | |
|   inherit (lib) mkOption mkIf singleton;
 | |
|   cfg = config.services.xserver.windowManager.wmii;
 | |
|   wmii = pkgs.wmii_hg;
 | |
| in
 | |
| {
 | |
|   options = {
 | |
|     services.xserver.windowManager.wmii.enable = mkEnableOption "wmii";
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
|     services.xserver.windowManager.session = singleton
 | |
|       # stop wmii by
 | |
|       #   $wmiir xwrite /ctl quit
 | |
|       # this will cause wmii exiting with exit code 0
 | |
|       # (or "mod+a quit", which is bound to do the same thing in wmiirc
 | |
|       # by default)
 | |
|       #
 | |
|       # why this loop?
 | |
|       # wmii crashes once a month here. That doesn't matter that much
 | |
|       # wmii can recover very well. However without loop the X session
 | |
|       # terminates and then your workspace setup is lost and all
 | |
|       # applications running on X will terminate.
 | |
|       # Another use case is kill -9 wmii; after rotating screen.
 | |
|       # Note: we don't like kill for that purpose. But it works (->
 | |
|       # subject "wmii and xrandr" on mailinglist)
 | |
|       { name = "wmii";
 | |
|         start = ''
 | |
|           while :; do
 | |
|             ${wmii}/bin/wmii && break
 | |
|           done
 | |
|         '';
 | |
|       };
 | |
| 
 | |
|     environment.systemPackages = [ wmii ];
 | |
|   };
 | |
| }
 | 
