From 55091079d68635af994298b3177d0a5fea088f12 Mon Sep 17 00:00:00 2001 From: Aguirre Matteo Date: Fri, 10 Oct 2025 15:56:44 -0300 Subject: [PATCH] anup: add module --- modules/programs/anup.nix | 39 ++++++++++++++++++++++++ tests/modules/programs/anup/config.ron | 14 +++++++++ tests/modules/programs/anup/default.nix | 1 + tests/modules/programs/anup/settings.nix | 27 ++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 modules/programs/anup.nix create mode 100644 tests/modules/programs/anup/config.ron create mode 100644 tests/modules/programs/anup/default.nix create mode 100644 tests/modules/programs/anup/settings.nix diff --git a/modules/programs/anup.nix b/modules/programs/anup.nix new file mode 100644 index 000000000..b04eb447e --- /dev/null +++ b/modules/programs/anup.nix @@ -0,0 +1,39 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + types + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.anup; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + options.programs.anup = { + enable = mkEnableOption "anup"; + package = mkPackageOption pkgs "anup" { nullable = true; }; + config = mkOption { + type = with types; either str path; + default = ""; + description = '' + Config file for anup in RON (Rusty Object Notation) format. + Available options can be found by looking at ~/.config/anup/config.ron. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + home.file.".config/anup/config.ron" = mkIf (cfg.config != "") { + source = if lib.isPath cfg.config then cfg.config else pkgs.writeText "anup-config.ron" cfg.config; + }; + }; +} diff --git a/tests/modules/programs/anup/config.ron b/tests/modules/programs/anup/config.ron new file mode 100644 index 000000000..edd5493e3 --- /dev/null +++ b/tests/modules/programs/anup/config.ron @@ -0,0 +1,14 @@ +( + series_dir: "/home/matteo/anime", + reset_dates_on_rewatch: false, + episode: ( + percent_watched_to_progress: (50.0), + player: "mpv", + player_args: [], + ), + tui: ( + keys: ( + play_next_episode: "enter", + ), + ), +) diff --git a/tests/modules/programs/anup/default.nix b/tests/modules/programs/anup/default.nix new file mode 100644 index 000000000..d20023850 --- /dev/null +++ b/tests/modules/programs/anup/default.nix @@ -0,0 +1 @@ +{ anup-settings = ./settings.nix; } diff --git a/tests/modules/programs/anup/settings.nix b/tests/modules/programs/anup/settings.nix new file mode 100644 index 000000000..a85ac0451 --- /dev/null +++ b/tests/modules/programs/anup/settings.nix @@ -0,0 +1,27 @@ +{ + programs.anup = { + enable = true; + config = '' + ( + series_dir: "/home/matteo/anime", + reset_dates_on_rewatch: false, + episode: ( + percent_watched_to_progress: (50.0), + player: "mpv", + player_args: [], + ), + tui: ( + keys: ( + play_next_episode: "enter", + ), + ), + ) + ''; + }; + + nmt.script = '' + assertFileExists home-files/.config/anup/config.ron + assertFileContent home-files/.config/anup/config.ron \ + ${./config.ron} + ''; +}