diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 384371033c72..e82c99f56b51 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -436,6 +436,7 @@ in {
hedgedoc = handleTest ./hedgedoc.nix {};
herbstluftwm = handleTest ./herbstluftwm.nix {};
homebox = handleTest ./homebox.nix {};
+ homer = handleTest ./homer {};
homepage-dashboard = handleTest ./homepage-dashboard.nix {};
honk = runTest ./honk.nix;
installed-tests = pkgs.recurseIntoAttrs (handleTest ./installed-tests {});
diff --git a/nixos/tests/homer/caddy.nix b/nixos/tests/homer/caddy.nix
new file mode 100644
index 000000000000..18a37cbc20ca
--- /dev/null
+++ b/nixos/tests/homer/caddy.nix
@@ -0,0 +1,30 @@
+import ../make-test-python.nix (
+ { lib, ... }:
+
+ {
+ name = "homer-caddy";
+ meta.maintainers = with lib.maintainers; [ stunkymonkey ];
+
+ nodes.machine =
+ { pkgs, ... }:
+ {
+ services.homer = {
+ enable = true;
+ virtualHost = {
+ caddy.enable = true;
+ domain = "localhost:80";
+ };
+ settings = {
+ title = "testing";
+ };
+ };
+ };
+
+ testScript = ''
+ machine.wait_for_unit("caddy.service")
+ machine.wait_for_open_port(80)
+ machine.succeed("curl --fail --show-error --silent http://localhost:80/ | grep '
Homer'")
+ machine.succeed("curl --fail --show-error --silent http://localhost:80/assets/config.yml | grep 'title: testing'")
+ '';
+ }
+)
diff --git a/nixos/tests/homer/default.nix b/nixos/tests/homer/default.nix
new file mode 100644
index 000000000000..fee30e520c7f
--- /dev/null
+++ b/nixos/tests/homer/default.nix
@@ -0,0 +1,6 @@
+{ system, pkgs, ... }:
+
+{
+ caddy = import ./caddy.nix { inherit system pkgs; };
+ nginx = import ./nginx.nix { inherit system pkgs; };
+}
diff --git a/nixos/tests/homer/nginx.nix b/nixos/tests/homer/nginx.nix
new file mode 100644
index 000000000000..39dd0c2c52ac
--- /dev/null
+++ b/nixos/tests/homer/nginx.nix
@@ -0,0 +1,30 @@
+import ../make-test-python.nix (
+ { lib, ... }:
+
+ {
+ name = "homer-nginx";
+ meta.maintainers = with lib.maintainers; [ stunkymonkey ];
+
+ nodes.machine =
+ { pkgs, ... }:
+ {
+ services.homer = {
+ enable = true;
+ virtualHost = {
+ nginx.enable = true;
+ domain = "localhost";
+ };
+ settings = {
+ title = "testing";
+ };
+ };
+ };
+
+ testScript = ''
+ machine.wait_for_unit("nginx.service")
+ machine.wait_for_open_port(80)
+ machine.succeed("curl --fail --show-error --silent http://localhost:80/ | grep 'Homer'")
+ machine.succeed("curl --fail --show-error --silent http://localhost:80/assets/config.yml | grep 'title: testing'")
+ '';
+ }
+)
diff --git a/pkgs/by-name/ho/homer/package.nix b/pkgs/by-name/ho/homer/package.nix
index 50fe5bf1fc59..7d104aa46ff0 100644
--- a/pkgs/by-name/ho/homer/package.nix
+++ b/pkgs/by-name/ho/homer/package.nix
@@ -6,6 +6,7 @@
nodejs,
dart-sass,
nix-update-script,
+ nixosTests,
}:
stdenvNoCC.mkDerivation rec {
pname = "homer";
@@ -54,7 +55,12 @@ stdenvNoCC.mkDerivation rec {
runHook postInstall
'';
- passthru.updateScript = nix-update-script { };
+ passthru = {
+ updateScript = nix-update-script { };
+ tests = {
+ inherit (nixosTests.homer) caddy nginx;
+ };
+ };
meta = with lib; {
description = "A very simple static homepage for your server.";