nixos/options/machine.nix

125 lines
3.2 KiB
Nix
Raw Normal View History

2023-09-11 20:23:04 +02:00
{
config,
lib,
fn,
...
}:
with builtins;
2023-09-11 20:23:04 +02:00
with lib; let
cfg = config.machine;
pkgsetList = fn.makeOptionTypeList (toString ../pkgsets);
serviceList = fn.makeOptionTypeList (toString ../services);
pkgOption = pname: {
name = pname;
value = rec {
pkgwrap = mkOption {
2023-09-11 20:23:04 +02:00
type = with types; oneOf [package (listOf package)];
default = fn.pkgFilter cfg.pkgsets."${pname}".pkgs;
description = ''
Package Wrapper for packages using a wrapper function (like python, emacs, haskell, ...)
'';
};
pkgs = mkOption {
type = types.unspecified;
default = [];
description = ''
${pname} package list.
'';
};
};
};
in {
options.machine = {
pkgs = mkOption {
2023-09-11 20:23:04 +02:00
type = types.listOf (types.enum pkgsetList);
default = ["base"];
description = ''
The list of metapackages to be installed.
'';
};
# Package names containing '::' are sub packages and should not have their own pkgset.
pkgsets = listToAttrs (map pkgOption (lists.filter (v: !(strings.hasInfix "::" v)) pkgsetList));
services = mkOption {
2023-09-11 20:23:04 +02:00
type = types.listOf (types.enum serviceList);
2019-10-08 13:15:38 +02:00
default = [];
description = ''
List of services to be enabled.
'';
};
conffiles = mkOption {
2019-09-05 15:20:56 +02:00
type = types.listOf types.str;
2023-09-11 20:23:04 +02:00
default = ["zsh"];
description = ''
List of configuration files to be enabled.
'';
};
hostName = mkOption {
type = types.str;
description = ''
The Machines HostName
'';
};
networkD = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Disables dhcpcd and enables networkd.
'';
};
waitOnline = mkOption {
type = types.bool;
default = true;
description = ''
Enables/disables systemd-networkd-wait-online service.
'';
};
2021-10-28 15:13:40 +02:00
};
binaryCaches = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Adds binary caches to both nix.trustedBinaryCaches and nix.binaryCaches. ("https://cache.nixos.org" is kept by default)
'';
};
2019-04-13 00:05:39 +02:00
administrators = mkOption {
type = types.listOf types.attrs;
description = ''
List of administrative users.
'';
};
domain = mkOption {
type = types.str;
default = "localhost";
description = ''
The Machines domain name.
'';
};
2019-10-08 13:15:38 +02:00
extraDomains = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Extra domains used in various services.
'';
};
mailAccounts = mkOption {
type = types.listOf types.attrs;
2019-10-08 13:15:38 +02:00
default = [];
description = ''
List of mail account user names.
'';
};
2019-06-22 23:58:08 +02:00
vHosts = mkOption {
type = types.listOf types.attrs;
2019-10-08 13:15:38 +02:00
default = [];
2019-06-22 23:58:08 +02:00
description = ''
Domain - Service mappings for nginx vHost config.
'';
};
};
2019-10-08 13:15:38 +02:00
imports = [
2023-09-11 20:23:04 +02:00
(mkAliasOptionModule ["machine" "firewall"] ["networking" "firewall"])
(mkAliasOptionModule ["machine" "allowUnfree"] ["nixpkgs" "config" "allowUnfree"])
2019-10-08 13:15:38 +02:00
];
}