From 2b64e332a047ec8d3695946bfded39bc3f3583bb Mon Sep 17 00:00:00 2001 From: Aguirre Matteo Date: Sun, 5 Oct 2025 15:18:21 -0300 Subject: [PATCH] amber: add module --- modules/programs/amber.nix | 70 +++++++++++++++++++++++ tests/modules/programs/amber/ambr.toml | 4 ++ tests/modules/programs/amber/ambs.toml | 4 ++ tests/modules/programs/amber/default.nix | 1 + tests/modules/programs/amber/settings.nix | 37 ++++++++++++ 5 files changed, 116 insertions(+) create mode 100644 modules/programs/amber.nix create mode 100644 tests/modules/programs/amber/ambr.toml create mode 100644 tests/modules/programs/amber/ambs.toml create mode 100644 tests/modules/programs/amber/default.nix create mode 100644 tests/modules/programs/amber/settings.nix diff --git a/modules/programs/amber.nix b/modules/programs/amber.nix new file mode 100644 index 000000000..ee97c790b --- /dev/null +++ b/modules/programs/amber.nix @@ -0,0 +1,70 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.amber; + tomlFormat = pkgs.formats.toml { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + options.programs.amber = { + enable = mkEnableOption "amber"; + package = mkPackageOption pkgs "amber" { nullable = true; }; + ambsSettings = mkOption { + inherit (tomlFormat) type; + default = { }; + example = { + column = true; + binary = true; + skipped = true; + recursive = false; + }; + description = '' + Configuration settings for amber's ambs tool. All the available options can be found here: + . + ''; + }; + ambrSettings = mkOption { + inherit (tomlFormat) type; + default = { }; + example = { + regex = true; + row = true; + statistics = true; + interactive = false; + }; + description = '' + Configuration settings for amber's ambr tool. All the available options can be found here: + . + ''; + }; + }; + + config = + let + configDir = + if pkgs.stdenv.hostPlatform.isDarwin then + "Library/Preferences/com.github.dalance.amber" + else + ".config/amber"; + in + mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + home.file."${configDir}/ambs.toml" = mkIf (cfg.ambsSettings != { }) { + source = tomlFormat.generate "ambs.toml" cfg.ambsSettings; + }; + home.file."${configDir}/ambr.toml" = mkIf (cfg.ambrSettings != { }) { + source = tomlFormat.generate "ambr.toml" cfg.ambrSettings; + }; + }; +} diff --git a/tests/modules/programs/amber/ambr.toml b/tests/modules/programs/amber/ambr.toml new file mode 100644 index 000000000..6fc7b046b --- /dev/null +++ b/tests/modules/programs/amber/ambr.toml @@ -0,0 +1,4 @@ +interactive = false +regex = true +row = true +statistics = true diff --git a/tests/modules/programs/amber/ambs.toml b/tests/modules/programs/amber/ambs.toml new file mode 100644 index 000000000..cebb85079 --- /dev/null +++ b/tests/modules/programs/amber/ambs.toml @@ -0,0 +1,4 @@ +binary = true +column = true +recursive = false +skipped = true diff --git a/tests/modules/programs/amber/default.nix b/tests/modules/programs/amber/default.nix new file mode 100644 index 000000000..7a09fbfc1 --- /dev/null +++ b/tests/modules/programs/amber/default.nix @@ -0,0 +1 @@ +{ amber-settings = ./settings.nix; } diff --git a/tests/modules/programs/amber/settings.nix b/tests/modules/programs/amber/settings.nix new file mode 100644 index 000000000..9e87886e2 --- /dev/null +++ b/tests/modules/programs/amber/settings.nix @@ -0,0 +1,37 @@ +{ pkgs, ... }: + +{ + programs.amber = { + enable = true; + ambsSettings = { + column = true; + binary = true; + skipped = true; + recursive = false; + }; + ambrSettings = { + regex = true; + row = true; + statistics = true; + interactive = false; + }; + }; + + nmt.script = + let + configDir = + if pkgs.stdenv.hostPlatform.isDarwin then + "Library/Preferences/com.github.dalance.amber" + else + ".config/amber"; + in + '' + assertFileExists "home-files/${configDir}/ambs.toml" + assertFileContent "home-files/${configDir}/ambs.toml" \ + ${./ambs.toml} + + assertFileExists "home-files/${configDir}/ambr.toml" + assertFileContent "home-files/${configDir}/ambr.toml" \ + ${./ambr.toml} + ''; +}