126 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ inputs, lib, ... }:
 | 
						|
let
 | 
						|
  userOpt = with lib; {
 | 
						|
    username = mkOption { type = types.str; };
 | 
						|
    wm = mkOption {
 | 
						|
      type = types.enum [ "Wayland" "X11" "-" ];
 | 
						|
      default = "-";
 | 
						|
    };
 | 
						|
    git = {
 | 
						|
      username = mkOption { type = types.str; };
 | 
						|
      email = mkOption { type = types.str; };
 | 
						|
      key = mkOption { type = types.str; };
 | 
						|
    };
 | 
						|
  };
 | 
						|
  netOpt = with lib; {
 | 
						|
    ble = {
 | 
						|
      enable = mkOption {
 | 
						|
        type = types.bool;
 | 
						|
        default = false;
 | 
						|
      };
 | 
						|
    };
 | 
						|
    wlp = {
 | 
						|
      enable = mkOption {
 | 
						|
        type = types.bool;
 | 
						|
        default = false;
 | 
						|
      };
 | 
						|
      nif = mkOption {
 | 
						|
        type = types.str;
 | 
						|
        default = "";
 | 
						|
      };
 | 
						|
    };
 | 
						|
    wg = {
 | 
						|
      enable = mkOption {
 | 
						|
        type = types.bool;
 | 
						|
        default = false;
 | 
						|
      };
 | 
						|
      ip4 = mkOption {
 | 
						|
        type = types.str;
 | 
						|
        default = "";
 | 
						|
      };
 | 
						|
      ip6 = mkOption {
 | 
						|
        type = types.str;
 | 
						|
        default = "";
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
  makeOpt = with lib; {
 | 
						|
    cli = mkOption {
 | 
						|
      type = types.bool;
 | 
						|
      default = true;
 | 
						|
    };
 | 
						|
    gui = mkOption {
 | 
						|
      type = types.bool;
 | 
						|
      default = false;
 | 
						|
    };
 | 
						|
    virt = mkOption {
 | 
						|
      type = types.bool;
 | 
						|
      default = true;
 | 
						|
    };
 | 
						|
    power = mkOption {
 | 
						|
      type = types.bool;
 | 
						|
      default = false;
 | 
						|
    };
 | 
						|
    game = mkOption {
 | 
						|
      type = types.bool;
 | 
						|
      default = false;
 | 
						|
    };
 | 
						|
    develop = mkOption {
 | 
						|
      type = types.bool;
 | 
						|
      default = false;
 | 
						|
    };
 | 
						|
  };
 | 
						|
  serverOpt = with lib; {
 | 
						|
    hostDomain = mkOption { type = types.str; };
 | 
						|
    shortName = mkOption { type = types.str; };
 | 
						|
    mailDomain = mkOption { type = types.str; };
 | 
						|
    mailServer = mkOption { type = types.str; };
 | 
						|
 | 
						|
    dbHost = mkOption {
 | 
						|
      type = types.str;
 | 
						|
      default = "localhost";
 | 
						|
    };
 | 
						|
    dbPort = mkOption {
 | 
						|
      type = types.str;
 | 
						|
      default = "3306";
 | 
						|
    };
 | 
						|
 | 
						|
    configPath = mkOption {
 | 
						|
      type = types.str;
 | 
						|
      default = "/media/config";
 | 
						|
    };
 | 
						|
    dataPath = mkOption {
 | 
						|
      type = types.str;
 | 
						|
      default = "/media/data";
 | 
						|
    };
 | 
						|
 | 
						|
  };
 | 
						|
in with lib; {
 | 
						|
  options.usercfg = userOpt;
 | 
						|
  options.syscfg = {
 | 
						|
    hostname = mkOption { type = types.str; };
 | 
						|
    type = mkOption {
 | 
						|
      type = types.enum [ "nixos" "macos" "home" ];
 | 
						|
      default = "nixos";
 | 
						|
    };
 | 
						|
    system = mkOption {
 | 
						|
      type = types.enum [ "x86_64-linux" "x86_64-darwin" "-" ];
 | 
						|
      default = "x86_64-linux";
 | 
						|
    };
 | 
						|
    defaultUser = mkOption { type = types.str; };
 | 
						|
    make = makeOpt;
 | 
						|
    net = netOpt;
 | 
						|
    users = mkOption {
 | 
						|
      type = types.listOf (types.submodule { options = userOpt; });
 | 
						|
      default = [ ];
 | 
						|
    };
 | 
						|
    server = mkOption {
 | 
						|
      type = types.oneOf [
 | 
						|
        (types.attrs)
 | 
						|
        (types.submodule { options = serverOpt; })
 | 
						|
      ];
 | 
						|
      default = { };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |