From 2d55a52963d8a3856792e2fd6604f307176026bc Mon Sep 17 00:00:00 2001 From: Aguirre Matteo <158215792+aguirre-matteo@users.noreply.github.com> Date: Thu, 17 Jul 2025 19:21:31 +0000 Subject: [PATCH] radio-cli: add module (#7488) --- modules/programs/radio-cli.nix | 51 +++++++++++++++++++ tests/modules/programs/radio-cli/config.json | 11 ++++ tests/modules/programs/radio-cli/default.nix | 1 + .../programs/radio-cli/example-config.nix | 22 ++++++++ 4 files changed, 85 insertions(+) create mode 100644 modules/programs/radio-cli.nix create mode 100644 tests/modules/programs/radio-cli/config.json create mode 100644 tests/modules/programs/radio-cli/default.nix create mode 100644 tests/modules/programs/radio-cli/example-config.nix diff --git a/modules/programs/radio-cli.nix b/modules/programs/radio-cli.nix new file mode 100644 index 00000000..f290daa5 --- /dev/null +++ b/modules/programs/radio-cli.nix @@ -0,0 +1,51 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.radio-cli; + jsonFormat = pkgs.formats.json { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + + options.programs.radio-cli = { + enable = mkEnableOption "radio-cli"; + package = mkPackageOption pkgs "radio-cli" { nullable = true; }; + settings = mkOption { + type = jsonFormat.type; + default = { }; + example = { + config_version = "2.3.0"; + max_lines = 7; + country = "ES"; + data = [ + { + station = "lofi"; + url = "https://www.youtube.com/live/jfKfPfyJRdk?si=WDl-XdfuhxBfe6XN"; + } + ]; + }; + description = '' + Configuration settings for radio-cli. For an example config, + refer to: + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + xdg.configFile."radio-cli/config.json" = mkIf (cfg.settings != { }) { + source = jsonFormat.generate "radio-cli-config" cfg.settings; + }; + }; +} diff --git a/tests/modules/programs/radio-cli/config.json b/tests/modules/programs/radio-cli/config.json new file mode 100644 index 00000000..95909ecd --- /dev/null +++ b/tests/modules/programs/radio-cli/config.json @@ -0,0 +1,11 @@ +{ + "config_version": "2.3.0", + "country": "ES", + "data": [ + { + "station": "lofi", + "url": "https://www.youtube.com/live/jfKfPfyJRdk?si=WDl-XdfuhxBfe6XN" + } + ], + "max_lines": 7 +} diff --git a/tests/modules/programs/radio-cli/default.nix b/tests/modules/programs/radio-cli/default.nix new file mode 100644 index 00000000..5179407b --- /dev/null +++ b/tests/modules/programs/radio-cli/default.nix @@ -0,0 +1 @@ +{ radio-cli-example = ./example-config.nix; } diff --git a/tests/modules/programs/radio-cli/example-config.nix b/tests/modules/programs/radio-cli/example-config.nix new file mode 100644 index 00000000..75af2299 --- /dev/null +++ b/tests/modules/programs/radio-cli/example-config.nix @@ -0,0 +1,22 @@ +{ + programs.radio-cli = { + enable = true; + settings = { + config_version = "2.3.0"; + max_lines = 7; + country = "ES"; + data = [ + { + station = "lofi"; + url = "https://www.youtube.com/live/jfKfPfyJRdk?si=WDl-XdfuhxBfe6XN"; + } + ]; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/radio-cli/config.json + assertFileContent home-files/.config/radio-cli/config.json \ + ${./config.json} + ''; +}