{ lib, ... }: with lib; { options.machine = { pkgs = mkOption { type = types.listOf types.str; default = [ "base" ]; description = '' The list of metapackages to be installed. ''; }; services = mkOption { type = types.listOf types.str; default = []; description = '' List of services to be enabled. ''; }; conffiles = mkOption { type = types.listOf types.str; default = [ "zsh" ]; description = '' List of configuration files to be enabled. ''; }; hostName = mkOption { type = types.str; description = '' The Machines HostName ''; }; secretPath = mkOption { type = types.str; default = (findFirst (elem: elem.prefix == "secretPath") { path = "/secret"; } builtins.nixPath).path; description = '' Path to you systems secret folder containing files with sensitive information. ''; }; administrators = mkOption { type = types.listOf types.attrs; description = '' List of administrative users. ''; }; domain = mkOption { type = types.str; default = "localhost"; description = '' The Machines domain name. ''; }; extraDomains = mkOption { type = types.listOf types.str; default = []; description = '' Extra domains used in various services. ''; }; mailAccounts = mkOption { type = types.listOf types.attrs; default = []; description = '' List of mail account user names. ''; }; vHosts = mkOption { type = types.listOf types.attrs; default = []; description = '' Domain - Service mappings for nginx vHost config. ''; }; desktop.wms = mkOption { type = types.listOf types.str; default = []; description = '' The list of wms to be enabled. ''; }; }; imports = [ (mkAliasOptionModule [ "machine" "firewall" ] [ "networking" "firewall" ]) (mkAliasOptionModule [ "machine" "allowUnfree" ] [ "nixpkgs" "config" "allowUnfree" ]) ]; }