From 9ab59a43cceb5886e09f83a1f09da7dbfb6a2bb2 Mon Sep 17 00:00:00 2001 From: Aguirre Matteo Date: Wed, 14 Jan 2026 13:52:12 -0300 Subject: [PATCH] aperture: add module --- modules/programs/aperture.nix | 48 +++++++++++++++++++ tests/modules/programs/aperture/aperture.yaml | 6 +++ tests/modules/programs/aperture/default.nix | 1 + tests/modules/programs/aperture/settings.nix | 19 ++++++++ 4 files changed, 74 insertions(+) create mode 100644 modules/programs/aperture.nix create mode 100644 tests/modules/programs/aperture/aperture.yaml create mode 100644 tests/modules/programs/aperture/default.nix create mode 100644 tests/modules/programs/aperture/settings.nix diff --git a/modules/programs/aperture.nix b/modules/programs/aperture.nix new file mode 100644 index 00000000..44240d49 --- /dev/null +++ b/modules/programs/aperture.nix @@ -0,0 +1,48 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + mkIf + mkEnableOption + mkPackageOption + mkOption + ; + + cfg = config.programs.aperture; + yamlFormat = pkgs.formats.yaml { }; +in +{ + meta.maintainers = with lib.hm.maintainers; [ aguirre-matteo ]; + + options.programs.aperture = { + enable = mkEnableOption "aperture"; + package = mkPackageOption pkgs "aperture" { nullable = true; }; + settings = mkOption { + inherit (yamlFormat) type; + default = { }; + example = { + listenaddr = "localhost:8081"; + staticroot = "./static"; + servestatic = false; + debuglevel = "debug"; + autocert = false; + servername = "aperture.example.com"; + }; + description = '' + Configuration settings for aperture. All the available options can be found here: + + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [ cfg.package ]; + home.file.".aperture/aperture.yaml" = mkIf (cfg.settings != { }) { + source = yamlFormat.generate "aperture.yaml" cfg.settings; + }; + }; +} diff --git a/tests/modules/programs/aperture/aperture.yaml b/tests/modules/programs/aperture/aperture.yaml new file mode 100644 index 00000000..d714689d --- /dev/null +++ b/tests/modules/programs/aperture/aperture.yaml @@ -0,0 +1,6 @@ +autocert: false +debuglevel: debug +listenaddr: localhost:8081 +servername: aperture.example.com +servestatic: false +staticroot: ./static diff --git a/tests/modules/programs/aperture/default.nix b/tests/modules/programs/aperture/default.nix new file mode 100644 index 00000000..4854271e --- /dev/null +++ b/tests/modules/programs/aperture/default.nix @@ -0,0 +1 @@ +{ aperture-settings = ./settings.nix; } diff --git a/tests/modules/programs/aperture/settings.nix b/tests/modules/programs/aperture/settings.nix new file mode 100644 index 00000000..68a717bf --- /dev/null +++ b/tests/modules/programs/aperture/settings.nix @@ -0,0 +1,19 @@ +{ + programs.aperture = { + enable = true; + settings = { + listenaddr = "localhost:8081"; + staticroot = "./static"; + servestatic = false; + debuglevel = "debug"; + autocert = false; + servername = "aperture.example.com"; + }; + }; + + nmt.script = '' + assertFileExists home-files/.aperture/aperture.yaml + assertFileContent home-files/.aperture/aperture.yaml \ + ${./aperture.yaml} + ''; +}