From acaf3971c19f873c1a0d364439a2819b6a814310 Mon Sep 17 00:00:00 2001 From: Aguirre Matteo Date: Thu, 18 Sep 2025 13:25:02 -0300 Subject: [PATCH] abaddon: add module --- modules/programs/abaddon.nix | 54 +++++++++++++++++++ tests/modules/programs/abaddon/abaddon.ini | 15 ++++++ tests/modules/programs/abaddon/default.nix | 5 ++ .../programs/abaddon/example-config.nix | 26 +++++++++ 4 files changed, 100 insertions(+) create mode 100644 modules/programs/abaddon.nix create mode 100644 tests/modules/programs/abaddon/abaddon.ini create mode 100644 tests/modules/programs/abaddon/default.nix create mode 100644 tests/modules/programs/abaddon/example-config.nix diff --git a/modules/programs/abaddon.nix b/modules/programs/abaddon.nix new file mode 100644 index 000000000..159450658 --- /dev/null +++ b/modules/programs/abaddon.nix @@ -0,0 +1,54 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.abaddon; + iniFormat = pkgs.formats.ini { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + options.programs.abaddon = { + enable = mkEnableOption "abaddon"; + package = mkPackageOption pkgs "abaddon" { nullable = true; }; + settings = mkOption { + inherit (iniFormat) type; + default = { }; + example = { + windows.hideconsole = true; + notifications.enabled = false; + discord = { + token = "MZ1yGvKTjE0rY0cV8i47CjAa.uRHQPq.Xb1Mk2nEhe-4iUcrGOuegj57zMC"; + autoconnect = true; + }; + + gui = { + stock_emojis = false; + animations = false; + alt_menu = true; + hide_to_tray = true; + }; + }; + description = '' + Configuration settings for abaddon. All the available options can be found here: + + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + xdg.configFile."abaddon/abaddon.ini" = mkIf (cfg.settings != { }) { + source = iniFormat.generate "abaddon.ini" cfg.settings; + }; + }; +} diff --git a/tests/modules/programs/abaddon/abaddon.ini b/tests/modules/programs/abaddon/abaddon.ini new file mode 100644 index 000000000..adffa22cd --- /dev/null +++ b/tests/modules/programs/abaddon/abaddon.ini @@ -0,0 +1,15 @@ +[discord] +autoconnect=true +token=MZ1yGvKTjE0rY0cV8i47CjAa.uRHQPq.Xb1Mk2nEhe-4iUcrGOuegj57zMC + +[gui] +alt_menu=true +animations=false +hide_to_tray=true +stock_emojis=false + +[notifications] +enabled=false + +[windows] +hideconsole=true diff --git a/tests/modules/programs/abaddon/default.nix b/tests/modules/programs/abaddon/default.nix new file mode 100644 index 000000000..389d4df7c --- /dev/null +++ b/tests/modules/programs/abaddon/default.nix @@ -0,0 +1,5 @@ +{ lib, pkgs, ... }: + +lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { + abaddon-example-config = ./example-config.nix; +} diff --git a/tests/modules/programs/abaddon/example-config.nix b/tests/modules/programs/abaddon/example-config.nix new file mode 100644 index 000000000..0941c6283 --- /dev/null +++ b/tests/modules/programs/abaddon/example-config.nix @@ -0,0 +1,26 @@ +{ + programs.abaddon = { + enable = true; + settings = { + windows.hideconsole = true; + notifications.enabled = false; + discord = { + token = "MZ1yGvKTjE0rY0cV8i47CjAa.uRHQPq.Xb1Mk2nEhe-4iUcrGOuegj57zMC"; + autoconnect = true; + }; + + gui = { + stock_emojis = false; + animations = false; + alt_menu = true; + hide_to_tray = true; + }; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/abaddon/abaddon.ini + assertFileContent home-files/.config/abaddon/abaddon.ini \ + ${./abaddon.ini} + ''; +}