Compare commits
	
		
			2 commits
		
	
	
		
			af0b63c38c
			...
			6ddbf26049
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6ddbf26049 | |||
| b85bdbb787 | 
					 5 changed files with 1392 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,6 @@
 | 
			
		|||
{lib}: {
 | 
			
		||||
  imports=[./net.nix];
 | 
			
		||||
 | 
			
		||||
  dirToStrings = dir: (map (v: builtins.readFile "${dir}/${v}")
 | 
			
		||||
    (builtins.filter (v:
 | 
			
		||||
      (builtins.readFileType "${dir}/${v}") == "regular") (
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1269
									
								
								lib/net.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1269
									
								
								lib/net.nix
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -14,22 +14,10 @@
 | 
			
		|||
        type = lib.types.str;
 | 
			
		||||
        description = "Primary human users long name";
 | 
			
		||||
      };
 | 
			
		||||
      gui.enable = lib.mkEnableOption {
 | 
			
		||||
        description = "enable GUI";
 | 
			
		||||
        default = false;
 | 
			
		||||
      };
 | 
			
		||||
      isLaptop = lib.mkEnableOption {
 | 
			
		||||
        description = "machine is a laptop";
 | 
			
		||||
        default = false;
 | 
			
		||||
      };
 | 
			
		||||
      isVm = lib.mkEnableOption {
 | 
			
		||||
        description = "machine is a virtual machine";
 | 
			
		||||
        default = false;
 | 
			
		||||
      };
 | 
			
		||||
      isSever = lib.mkEnableOption {
 | 
			
		||||
        description = "machine is primarily a server";
 | 
			
		||||
        default = false;
 | 
			
		||||
      };
 | 
			
		||||
      gui.enable = lib.mkEnableOption "enable GUI";
 | 
			
		||||
      isLaptop = lib.mkEnableOption "machine is a laptop";
 | 
			
		||||
      isVm = lib.mkEnableOption "machine is a virtual machine";
 | 
			
		||||
      isSever = lib.mkEnableOption "machine is primarily a server";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										9
									
								
								modules/nixos/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								modules/nixos/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  imports=[./systemd-dhcpServ.nix];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										108
									
								
								modules/nixos/systemd-dhcpServ.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								modules/nixos/systemd-dhcpServ.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,108 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  options = {
 | 
			
		||||
    host.systemdDhcpSrv = {
 | 
			
		||||
      enable = lib.mkEnableOption "systemd DHCP server";
 | 
			
		||||
 | 
			
		||||
      interface = lib.mkOption {
 | 
			
		||||
        type = lib.types.str;
 | 
			
		||||
        description = "interface to run dhcp server on";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      uplinkInterface = lib.mkOption {
 | 
			
		||||
        type = lib.types.str;
 | 
			
		||||
        description = "if dns, router, or ntp are set but no adresses are set, pass on the settings of this interface.";
 | 
			
		||||
        default = ":auto";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      pool = lib.mkOption {
 | 
			
		||||
        description = "the pool of ips the dhcp server will hand out.";
 | 
			
		||||
        type = lib.types.submodule {
 | 
			
		||||
          options = {
 | 
			
		||||
            start = lib.mkOption {
 | 
			
		||||
              type = lib.types.str;
 | 
			
		||||
              description = "starting IP of the range the dhcp server will assign";
 | 
			
		||||
            };
 | 
			
		||||
            end = lib.mkOption {
 | 
			
		||||
              type = lib.types.str;
 | 
			
		||||
              description = "ending IP of the range the dhcp server will assign";
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      time = lib.mkOption {
 | 
			
		||||
        type = lib.types.submodule {
 | 
			
		||||
          options = {
 | 
			
		||||
            default = lib.mkOption {
 | 
			
		||||
              description = "the default dhcp lease time, in seconds, defaults to 1h";
 | 
			
		||||
              type = lib.types.nullOr lib.types.int;
 | 
			
		||||
              default = null;
 | 
			
		||||
            };
 | 
			
		||||
            max = lib.mkOption {
 | 
			
		||||
              description = "the max dhcp lease time, in seconds. defaults to 12h";
 | 
			
		||||
              type = lib.types.nullOr lib.types.int;
 | 
			
		||||
              default = null;
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      dns = lib.mkoption {
 | 
			
		||||
        type = lib.types.submodule {
 | 
			
		||||
          options = {
 | 
			
		||||
            enable = lib.mkOption {
 | 
			
		||||
              type = lib.types.bool;
 | 
			
		||||
              default = true;
 | 
			
		||||
              description = "whether to include dns server info in the dhcp lease";
 | 
			
		||||
            };
 | 
			
		||||
            servers = lib.mkOption {
 | 
			
		||||
              type = lib.types.listOf lib.types.str;
 | 
			
		||||
              description = "IPs of dns servers to hand out";
 | 
			
		||||
              default = [];
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      router = lib.mkoption {
 | 
			
		||||
        type = lib.types.submodule {
 | 
			
		||||
          options = {
 | 
			
		||||
            enable = lib.mkOption {
 | 
			
		||||
              type = lib.types.bool;
 | 
			
		||||
              default = true;
 | 
			
		||||
              description = "whether to include router (gateway) info in the dhcp lease";
 | 
			
		||||
            };
 | 
			
		||||
            servers = lib.mkOption {
 | 
			
		||||
              type = lib.types.listOf lib.types.str;
 | 
			
		||||
              description = "IPs of dns servers to hand out";
 | 
			
		||||
              default = [];
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      ntp = lib.mkoption {
 | 
			
		||||
        type = lib.types.submodule {
 | 
			
		||||
          options = {
 | 
			
		||||
            enable = lib.mkOption {
 | 
			
		||||
              type = lib.types.bool;
 | 
			
		||||
              default = true;
 | 
			
		||||
              description = "whether to include ntp server info in the dhcp lease";
 | 
			
		||||
            };
 | 
			
		||||
            servers = lib.mkOption {
 | 
			
		||||
              type = lib.types.listOf lib.types.str;
 | 
			
		||||
              description = "IPs of ntp servers to hand out";
 | 
			
		||||
              default = [];
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue