40 lines
		
	
	
	
		
			770 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			770 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { lib, config, ... }:
 | |
| 
 | |
| let
 | |
|   cfg = config.systemModules.user.shell;
 | |
| in
 | |
| 
 | |
| {
 | |
|   imports = [
 | |
|     ./fish
 | |
|     # ./bash
 | |
|     # ./zsh
 | |
|   ];
 | |
| 
 | |
|   options.systemModules.user.shell = {
 | |
|     fish = {
 | |
|       enable = lib.mkEnableOption "Enable fish as the user shell";
 | |
|     };
 | |
|     zsh = {
 | |
|       enable = lib.mkEnableOption "Enable zsh as the user shell";
 | |
|     };
 | |
|     bash = {
 | |
|       enable = lib.mkEnableOption "Enable bash as the user shell";
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
|    config = { 
 | |
|     assertions = [
 | |
|       {
 | |
|         assertion = 
 | |
|           (lib.length (lib.filter (x: x) [
 | |
|             cfg.fish.enable or false
 | |
|             cfg.zsh.enable or false
 | |
|             cfg.bash.enable or false
 | |
|           ]) <= 1); 
 | |
|         message = "Only one user shell can be active in the configuration";
 | |
|       }
 | |
|     ];
 | |
|   };
 | |
| }
 |