From a65df807835d3ba8b13604da34f730d2fc616a31 Mon Sep 17 00:00:00 2001 From: Aguirre Matteo Date: Mon, 29 Sep 2025 14:01:24 -0300 Subject: [PATCH] algia: add module --- modules/programs/algia.nix | 57 +++++++++++++++++++++++ tests/modules/programs/algia/config.json | 10 ++++ tests/modules/programs/algia/default.nix | 1 + tests/modules/programs/algia/settings.nix | 28 +++++++++++ 4 files changed, 96 insertions(+) create mode 100644 modules/programs/algia.nix create mode 100644 tests/modules/programs/algia/config.json create mode 100644 tests/modules/programs/algia/default.nix create mode 100644 tests/modules/programs/algia/settings.nix diff --git a/modules/programs/algia.nix b/modules/programs/algia.nix new file mode 100644 index 000000000..83ca463b9 --- /dev/null +++ b/modules/programs/algia.nix @@ -0,0 +1,57 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.algia; + jsonFormat = pkgs.formats.json { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + options.programs.algia = { + enable = mkEnableOption "algia"; + package = mkPackageOption pkgs "algia" { nullable = true; }; + settings = mkOption { + inherit (jsonFormat) type; + default = { }; + example = { + relays = { + "wss =//relay-jp.nostr.wirednet.jp" = { + read = true; + write = true; + search = false; + }; + }; + privatekey = "nsecXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + }; + description = '' + Configuration settings for algia. All the available options can be found here: + + ''; + }; + }; + + config = + let + configDir = + if pkgs.stdenv.hostPlatform.isDarwin then + ".config/algia" + else + "${lib.removePrefix config.home.homeDirectory config.xdg.configHome}/algia"; + in + mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + home.file."${configDir}/config.json" = mkIf (cfg.settings != { }) { + source = jsonFormat.generate "algia-config.json" cfg.settings; + }; + }; +} diff --git a/tests/modules/programs/algia/config.json b/tests/modules/programs/algia/config.json new file mode 100644 index 000000000..ba8c57c27 --- /dev/null +++ b/tests/modules/programs/algia/config.json @@ -0,0 +1,10 @@ +{ + "privatekey": "nsecXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "relays": { + "wss =//relay-jp.nostr.wirednet.jp": { + "read": true, + "search": false, + "write": true + } + } +} diff --git a/tests/modules/programs/algia/default.nix b/tests/modules/programs/algia/default.nix new file mode 100644 index 000000000..af6ca1f78 --- /dev/null +++ b/tests/modules/programs/algia/default.nix @@ -0,0 +1 @@ +{ algia-settings = ./settings.nix; } diff --git a/tests/modules/programs/algia/settings.nix b/tests/modules/programs/algia/settings.nix new file mode 100644 index 000000000..93068c173 --- /dev/null +++ b/tests/modules/programs/algia/settings.nix @@ -0,0 +1,28 @@ +{ + lib, + pkgs, + config, + ... +}: + +{ + programs.algia = { + enable = true; + settings = { + relays = { + "wss =//relay-jp.nostr.wirednet.jp" = { + read = true; + write = true; + search = false; + }; + }; + privatekey = "nsecXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/algia/config.json + assertFileContent home-files/.config/algia/config.json \ + ${./config.json} + ''; +}