From 9ccc5b1ef432c473d87805113c754ea10fefa342 Mon Sep 17 00:00:00 2001 From: Aguirre Matteo Date: Wed, 14 Jan 2026 14:05:38 -0300 Subject: [PATCH] aphorme: add module --- modules/programs/aphorme.nix | 58 +++++++++++++++++++++ tests/modules/programs/aphorme/config.toml | 8 +++ tests/modules/programs/aphorme/default.nix | 5 ++ tests/modules/programs/aphorme/settings.nix | 25 +++++++++ 4 files changed, 96 insertions(+) create mode 100644 modules/programs/aphorme.nix create mode 100644 tests/modules/programs/aphorme/config.toml create mode 100644 tests/modules/programs/aphorme/default.nix create mode 100644 tests/modules/programs/aphorme/settings.nix diff --git a/modules/programs/aphorme.nix b/modules/programs/aphorme.nix new file mode 100644 index 00000000..83ddcb2a --- /dev/null +++ b/modules/programs/aphorme.nix @@ -0,0 +1,58 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.aphorme; + tomlFormat = pkgs.formats.toml { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + + options.programs.aphorme = { + enable = mkEnableOption "aphorme"; + package = mkPackageOption pkgs "aphorme" { nullable = true; }; + settings = mkOption { + inherit (tomlFormat) type; + default = { }; + example = { + gui_cfg = { + icon = true; + ui_framework = "EGUI"; + font_size = 12; + window_size = [ + 300 + 300 + ]; + }; + + app_cfg = { + paths = [ "$HOME/Desktop" ]; + }; + }; + description = '' + Configuration settings for aphorme. All the available options can be found here: + + ''; + }; + }; + + config = mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "programs.aphorme" pkgs lib.platforms.linux) + ]; + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + home.file.".config/aphorme/config.toml" = mkIf (cfg.settings != { }) { + source = tomlFormat.generate "aphorme-config.toml" cfg.settings; + }; + }; +} diff --git a/tests/modules/programs/aphorme/config.toml b/tests/modules/programs/aphorme/config.toml new file mode 100644 index 00000000..bd81fa9f --- /dev/null +++ b/tests/modules/programs/aphorme/config.toml @@ -0,0 +1,8 @@ +[app_cfg] +paths = ["$HOME/Desktop"] + +[gui_cfg] +font_size = 12 +icon = true +ui_framework = "EGUI" +window_size = [300, 300] diff --git a/tests/modules/programs/aphorme/default.nix b/tests/modules/programs/aphorme/default.nix new file mode 100644 index 00000000..f7da17c0 --- /dev/null +++ b/tests/modules/programs/aphorme/default.nix @@ -0,0 +1,5 @@ +{ lib, pkgs, ... }: + +lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { + aphorme-settings = ./settings.nix; +} diff --git a/tests/modules/programs/aphorme/settings.nix b/tests/modules/programs/aphorme/settings.nix new file mode 100644 index 00000000..0e5f9be9 --- /dev/null +++ b/tests/modules/programs/aphorme/settings.nix @@ -0,0 +1,25 @@ +{ + programs.aphorme = { + enable = true; + settings = { + gui_cfg = { + icon = true; + ui_framework = "EGUI"; + font_size = 12; + window_size = [ + 300 + 300 + ]; + }; + app_cfg = { + paths = [ "$HOME/Desktop" ]; + }; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/aphorme/config.toml + assertFileContent home-files/.config/aphorme/config.toml \ + ${./config.toml} + ''; +}