Added assertions

This commit is contained in:
rasmus-kirk
2024-06-24 12:15:46 +02:00
parent ef9d27acdf
commit 8b1e2a8c1f
10 changed files with 170 additions and 19 deletions
+17 -1
View File
@@ -12,7 +12,16 @@ in {
]; ];
options.nixarr.bazarr = { options.nixarr.bazarr = {
enable = mkEnableOption "the bazarr service."; enable = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether or not to enable the Bazarr service.
**Required options:** [`nixarr.enable`](#nixarr.enable)
'';
};
stateDir = mkOption { stateDir = mkOption {
type = types.path; type = types.path;
@@ -62,6 +71,13 @@ in {
nixarr.vpn.enable option to be set, but it was not. nixarr.vpn.enable option to be set, but it was not.
''; '';
} }
{
assertion = cfg.enable -> nixarr.enable;
message = ''
The nixarr.bazarr.enable option requires the nixarr.enable option
to be set, but it was not.
'';
}
]; ];
util-nixarr.services.bazarr = { util-nixarr.services.bazarr = {
+27 -9
View File
@@ -6,6 +6,7 @@
}: }:
with lib; let with lib; let
cfg = config.nixarr.ddns; cfg = config.nixarr.ddns;
nixarr = config.nixarr;
ddns-njalla = pkgs.writeShellApplication { ddns-njalla = pkgs.writeShellApplication {
name = "ddns-njalla"; name = "ddns-njalla";
@@ -44,6 +45,7 @@ in {
description = '' description = ''
**Required options:** **Required options:**
- [`nixarr.enable`](#nixarr.enable)
- [`nixarr.ddns.njalla.keysFile`](#nixarr.ddns.njalla.keysfile) - [`nixarr.ddns.njalla.keysFile`](#nixarr.ddns.njalla.keysfile)
- [`nixarr.vpn.enable`](#nixarr.vpn.enable) - [`nixarr.vpn.enable`](#nixarr.vpn.enable)
@@ -73,6 +75,7 @@ in {
description = '' description = ''
**Required options:** **Required options:**
- [`nixarr.enable`](#nixarr.enable)
- [`nixarr.ddns.njalla.keysFile`](#nixarr.ddns.njalla.keysfile) - [`nixarr.ddns.njalla.keysFile`](#nixarr.ddns.njalla.keysfile)
Whether or not to enable DDNS for a [Njalla](https://njal.la/) Whether or not to enable DDNS for a [Njalla](https://njal.la/)
@@ -118,16 +121,31 @@ in {
''; '';
} }
{ {
assertion = assertion = cfg.njalla.enable -> nixarr.enable;
cfg.njalla.vpn.enable
-> (
cfg.njalla.vpn.keysFile
!= null
&& config.nixarr.vpn.enable
);
message = '' message = ''
The nixarr.ddns.njalla.enable option requires the The nixarr.ddns.njalla.enable option requires the nixarr.enable
nixarr.vpn.enable option to be set, but it was not. option to be set, but it was not.
'';
}
{
assertion = cfg.njalla.vpn.enable -> nixarr.enable;
message = ''
The nixarr.ddns.njalla.vpn.enable option requires the nixarr.enable
option to be set, but it was not.
'';
}
{
assertion = cfg.njalla.vpn.enable -> cfg.njalla.vpn.keysFile != null;
message = ''
The nixarr.ddns.njalla.enable option requires the nixarr.vpn.keysFile
option to be set (not null), but it was not.
'';
}
{
assertion = cfg.njalla.vpn.enable -> config.nixarr.vpn.enable;
message = ''
The nixarr.ddns.njalla.enable option requires the nixarr.vpn.enable
option to be set, but it was not.
''; '';
} }
]; ];
+17 -1
View File
@@ -9,7 +9,16 @@
in in
with lib; { with lib; {
options.nixarr.jellyfin = { options.nixarr.jellyfin = {
enable = mkEnableOption "the Jellyfin service."; enable = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether or not to enable the Jellyfin service.
**Required options:** [`nixarr.enable`](#nixarr.enable)
'';
};
stateDir = mkOption { stateDir = mkOption {
type = types.path; type = types.path;
@@ -143,6 +152,13 @@ in
nixarr.vpn.enable option to be set, but it was not. nixarr.vpn.enable option to be set, but it was not.
''; '';
} }
{
assertion = cfg.enable -> nixarr.enable;
message = ''
The nixarr.jellyfin.enable option requires the nixarr.enable
option to be set, but it was not.
'';
}
{ {
assertion = !(cfg.vpn.enable && cfg.expose.https.enable); assertion = !(cfg.vpn.enable && cfg.expose.https.enable);
message = '' message = ''
+17 -1
View File
@@ -9,7 +9,16 @@ with lib; let
defaultPort = 8686; defaultPort = 8686;
in { in {
options.nixarr.lidarr = { options.nixarr.lidarr = {
enable = mkEnableOption "the Lidarr service."; enable = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether or not to enable the Lidarr service.
**Required options:** [`nixarr.enable`](#nixarr.enable)
'';
};
stateDir = mkOption { stateDir = mkOption {
type = types.path; type = types.path;
@@ -52,6 +61,13 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [
{
assertion = cfg.enable -> nixarr.enable;
message = ''
The nixarr.lidarr.enable option requires the nixarr.enable option
to be set, but it was not.
'';
}
{ {
assertion = cfg.vpn.enable -> nixarr.vpn.enable; assertion = cfg.vpn.enable -> nixarr.vpn.enable;
message = '' message = ''
+10 -1
View File
@@ -12,7 +12,9 @@ in {
default = false; default = false;
example = true; example = true;
description = '' description = ''
**Required options:** [`nixarr.vpn.enable`](#nixarr.vpn.enable) **Required options:**
- [`nixarr.vpn.enable`](#nixarr.vpn.enable)
- [`nixarr.enable`](#nixarr.enable)
Run the openssh service through a vpn, exposing it to the internet. Run the openssh service through a vpn, exposing it to the internet.
@@ -44,6 +46,13 @@ in {
config = mkIf cfg.expose.vpn.enable { config = mkIf cfg.expose.vpn.enable {
assertions = [ assertions = [
{
assertion = cfg.expose.vpn.enable -> nixarr.enable;
message = ''
The nixarr.openssh.expose.vpn.enable option requires the
nixarr.enable option to be set, but it was not.
'';
}
{ {
assertion = cfg.expose.vpn.enable -> nixarr.vpn.enable; assertion = cfg.expose.vpn.enable -> nixarr.vpn.enable;
message = '' message = ''
+17 -1
View File
@@ -14,7 +14,16 @@ in {
]; ];
options.nixarr.prowlarr = { options.nixarr.prowlarr = {
enable = mkEnableOption "the Prowlarr service."; enable = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether or not to enable the Prowlarr service.
**Required options:** [`nixarr.enable`](#nixarr.enable)
'';
};
stateDir = mkOption { stateDir = mkOption {
type = types.path; type = types.path;
@@ -57,6 +66,13 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [
{
assertion = cfg.enable -> nixarr.enable;
message = ''
The nixarr.prowlarr.enable option requires the
nixarr.enable option to be set, but it was not.
'';
}
{ {
assertion = cfg.vpn.enable -> nixarr.vpn.enable; assertion = cfg.vpn.enable -> nixarr.vpn.enable;
message = '' message = ''
+17 -1
View File
@@ -10,7 +10,16 @@ with lib; let
nixarr = config.nixarr; nixarr = config.nixarr;
in { in {
options.nixarr.radarr = { options.nixarr.radarr = {
enable = mkEnableOption "Enable the Radarr service."; enable = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether or not to enable the Radarr service.
**Required options:** [`nixarr.enable`](#nixarr.enable)
'';
};
stateDir = mkOption { stateDir = mkOption {
type = types.path; type = types.path;
@@ -53,6 +62,13 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [
{
assertion = cfg.enable -> nixarr.enable;
message = ''
The nixarr.radarr.enable option requires the
nixarr.enable option to be set, but it was not.
'';
}
{ {
assertion = cfg.vpn.enable -> nixarr.vpn.enable; assertion = cfg.vpn.enable -> nixarr.vpn.enable;
message = '' message = ''
+17 -1
View File
@@ -8,7 +8,16 @@ with lib; let
nixarr = config.nixarr; nixarr = config.nixarr;
in { in {
options.nixarr.readarr = { options.nixarr.readarr = {
enable = mkEnableOption "Enable the Readarr service"; enable = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether or not to enable the Readarr service.
**Required options:** [`nixarr.enable`](#nixarr.enable)
'';
};
stateDir = mkOption { stateDir = mkOption {
type = types.path; type = types.path;
@@ -51,6 +60,13 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [
{
assertion = cfg.enable -> nixarr.enable;
message = ''
The nixarr.readarr.enable option requires the
nixarr.enable option to be set, but it was not.
'';
}
{ {
assertion = cfg.vpn.enable -> nixarr.vpn.enable; assertion = cfg.vpn.enable -> nixarr.vpn.enable;
message = '' message = ''
+13 -1
View File
@@ -13,7 +13,12 @@ in {
enable = mkOption { enable = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
description = "Enable the Sonarr service."; example = true;
description = ''
Whether or not to enable the Sonarr service.
**Required options:** [`nixarr.enable`](#nixarr.enable)
'';
}; };
stateDir = mkOption { stateDir = mkOption {
@@ -57,6 +62,13 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
assertions = [ assertions = [
{
assertion = cfg.enable -> nixarr.enable;
message = ''
The nixarr.sonarr.enable option requires the
nixarr.enable option to be set, but it was not.
'';
}
{ {
assertion = cfg.vpn.enable -> nixarr.vpn.enable; assertion = cfg.vpn.enable -> nixarr.vpn.enable;
message = '' message = ''
+18 -2
View File
@@ -16,7 +16,7 @@ with lib; let
runtimeInputs = with pkgs; [curl]; runtimeInputs = with pkgs; [curl];
text = '' text = ''
PROWLARR_API_KEY=$(cat prowlarr-api-key) PROWLARR_API_KEY=$(cat ${cfg.stateDir}/prowlarr-api-key)
curl -XPOST http://localhost:2468/api/webhook?apikey="$PROWLARR_API_KEY" --data-urlencode "infoHash=$TR_TORRENT_HASH" curl -XPOST http://localhost:2468/api/webhook?apikey="$PROWLARR_API_KEY" --data-urlencode "infoHash=$TR_TORRENT_HASH"
''; '';
}; };
@@ -65,7 +65,16 @@ with lib; let
}; };
in { in {
options.nixarr.transmission = { options.nixarr.transmission = {
enable = mkEnableOption "the Transmission service."; enable = mkOption {
type = types.bool;
default = false;
example = true;
description = ''
Whether or not to enable the Transmission service.
**Required options:** [`nixarr.enable`](#nixarr.enable)
'';
};
stateDir = mkOption { stateDir = mkOption {
type = types.path; type = types.path;
@@ -254,6 +263,13 @@ in {
nixarr.vpn.enable option to be set, but it was not. nixarr.vpn.enable option to be set, but it was not.
''; '';
} }
{
assertion = cfg.enable -> nixarr.enable;
message = ''
The nixarr.transmission.enable option requires the nixarr.enable
option to be set, but it was not.
'';
}
{ {
assertion = cfg-cross-seed.enable -> nixarr.prowlarr.enable; assertion = cfg-cross-seed.enable -> nixarr.prowlarr.enable;
message = '' message = ''