Moved domain config
This commit is contained in:
		
							parent
							
								
									a321251b93
								
							
						
					
					
						commit
						cc75c95ad4
					
				| @ -19,16 +19,6 @@ | |||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   # Setup NAS backups |   # Setup NAS backups | ||||||
|   # TODO: Move kerberos setup to general module |  | ||||||
|   security.krb5 = { |  | ||||||
|     enable = true; |  | ||||||
|     settings = { |  | ||||||
|       libdefaults = { |  | ||||||
|         rdns = false; |  | ||||||
|       }; |  | ||||||
|       realms = (inputs.secrets.lab.krb5Realm); |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
|   environment.systemPackages = with pkgs; [ |   environment.systemPackages = with pkgs; [ | ||||||
|     cifs-utils |     cifs-utils | ||||||
|     samba |     samba | ||||||
|  | |||||||
							
								
								
									
										58
									
								
								modules/nixos/domain.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								modules/nixos/domain.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | |||||||
|  | { | ||||||
|  |   inputs, | ||||||
|  |   lib, | ||||||
|  |   pkgs, | ||||||
|  |   config, | ||||||
|  |   ... | ||||||
|  | }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | let | ||||||
|  |   cfg = config.modules.domain; | ||||||
|  |   domain = inputs.secrets.lab.domain; | ||||||
|  |   domainUpper = lib.strings.toUpper domain; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options.modules.domain = { | ||||||
|  |     enable = mkEnableOption "Domain Integration"; | ||||||
|  |     join = { | ||||||
|  |       userFile = mkOption { | ||||||
|  |         type = types.str; | ||||||
|  |         description = "File containing the user used to join the computer."; | ||||||
|  |       }; | ||||||
|  |       passwordFile = mkOption { | ||||||
|  |         type = types.str; | ||||||
|  |         description = "File containing the password for the join user."; | ||||||
|  |       }; | ||||||
|  |       domainOUFile = mkOption { | ||||||
|  |         type = types.str; | ||||||
|  |         description = "The OU to join the computer to."; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     # Set network domain | ||||||
|  |     networking.domain = domain; | ||||||
|  |     networking.search = [ domain ]; | ||||||
|  | 
 | ||||||
|  |     # Automatically join the domain | ||||||
|  |     systemd.services.adcli-join = { | ||||||
|  |       description = "Automatically join the domain"; | ||||||
|  |       wantedBy = [ "default.target" ]; | ||||||
|  |       after = [ | ||||||
|  |         "network.target" | ||||||
|  |       ]; | ||||||
|  |       serviceConfig = { | ||||||
|  |         type = "oneshot"; | ||||||
|  |       }; | ||||||
|  |       script = '' | ||||||
|  |         ADCLI_JOIN_USER=$(cat ${cfg.join.userFile}) | ||||||
|  |         ADCLI_JOIN_OU=$(cat ${cfg.join.domainOUFile}) | ||||||
|  |         ${pkgs.adcli}/bin/adcli join -D ${domain} \ | ||||||
|  |           -U $ADCLI_JOIN_USER \ | ||||||
|  |           -O $ADCLI_JOIN_OU < ${cfg.join.passwordFile} | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
| @ -29,9 +29,22 @@ in | |||||||
|           zfs rollback -r tank/root@blank |           zfs rollback -r tank/root@blank | ||||||
|         ''; |         ''; | ||||||
|       }; |       }; | ||||||
|  |       domain = { | ||||||
|  |         enable = true; | ||||||
|  |         join = { | ||||||
|  |           userFile = config.sops.secrets."vm-join/user".path; | ||||||
|  |           passwordFile = config.sops.secrets."vm-join/password".path; | ||||||
|  |           domainOUFile = config.sops.secrets."vm-join/ou".path; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|       ssh.enable = true; |       ssh.enable = true; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     # Initialize domain join secrets | ||||||
|  |     sops.secrets."vm-join/user" = { }; | ||||||
|  |     sops.secrets."vm-join/password" = { }; | ||||||
|  |     sops.secrets."vm-join/ou" = { }; | ||||||
|  | 
 | ||||||
|     # Autologin to root for access from hypervisor |     # Autologin to root for access from hypervisor | ||||||
|     services.getty.autologinUser = "root"; |     services.getty.autologinUser = "root"; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jan-Bulthuis
						Jan-Bulthuis