mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-17 06:59:46 +03:00
88 lines
2.7 KiB
Nix
88 lines
2.7 KiB
Nix
{ lib, pkgs }:
|
|
{
|
|
mkServarrSettingsOptions =
|
|
name: port:
|
|
lib.mkOption {
|
|
type = lib.types.submodule {
|
|
freeformType = (pkgs.formats.ini { }).type;
|
|
options = {
|
|
update = {
|
|
mechanism = lib.mkOption {
|
|
type =
|
|
with lib.types;
|
|
nullOr (enum [
|
|
"external"
|
|
"builtIn"
|
|
"script"
|
|
]);
|
|
description = "which update mechanism to use";
|
|
default = "external";
|
|
};
|
|
automatically = lib.mkOption {
|
|
type = lib.types.bool;
|
|
description = "Automatically download and install updates.";
|
|
default = false;
|
|
};
|
|
};
|
|
server = {
|
|
port = lib.mkOption {
|
|
type = lib.types.int;
|
|
description = "Port Number";
|
|
default = port;
|
|
};
|
|
};
|
|
log = {
|
|
analyticsEnabled = lib.mkOption {
|
|
type = lib.types.bool;
|
|
description = "Send Anonymous Usage Data";
|
|
default = false;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
example = lib.options.literalExpression ''
|
|
{
|
|
update.mechanism = "internal";
|
|
server = {
|
|
urlbase = "localhost";
|
|
port = ${toString port};
|
|
bindaddress = "*";
|
|
};
|
|
}
|
|
'';
|
|
default = { };
|
|
description = ''
|
|
Attribute set of arbitrary config options.
|
|
Please consult the documentation at the [wiki](https://wiki.servarr.com/useful-tools#using-environment-variables-for-config).
|
|
|
|
WARNING: this configuration is stored in the world-readable Nix store!
|
|
For secrets use [](#opt-services.${name}.environmentFiles).
|
|
'';
|
|
};
|
|
|
|
mkServarrEnvironmentFiles =
|
|
name:
|
|
lib.mkOption {
|
|
type = lib.types.listOf lib.types.path;
|
|
default = [ ];
|
|
description = ''
|
|
Environment file to pass secret configuration values.
|
|
Each line must follow the `${lib.toUpper name}__SECTION__KEY=value` pattern.
|
|
Please consult the documentation at the [wiki](https://wiki.servarr.com/useful-tools#using-environment-variables-for-config).
|
|
'';
|
|
};
|
|
|
|
mkServarrSettingsEnvVars =
|
|
name: settings:
|
|
lib.pipe settings [
|
|
(lib.mapAttrsRecursive (
|
|
path: value:
|
|
lib.optionalAttrs (value != null) {
|
|
name = lib.toUpper "${name}__${lib.concatStringsSep "__" path}";
|
|
value = toString (if lib.isBool value then lib.boolToString value else value);
|
|
}
|
|
))
|
|
(lib.collect (x: lib.isString x.name or false && lib.isString x.value or false))
|
|
lib.listToAttrs
|
|
];
|
|
}
|