diff --git a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
index a2f67d2707ee..107e5cde107b 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
@@ -457,6 +457,14 @@
services.uptime-kuma.
+
+
+ Mepo, a
+ fast, simple, hackable OSM map viewer for mobile and desktop
+ Linux. Available as
+ programs.mepo.enable.
+
+
diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md
index 3540881c4622..bccbfe33374d 100644
--- a/nixos/doc/manual/release-notes/rl-2211.section.md
+++ b/nixos/doc/manual/release-notes/rl-2211.section.md
@@ -149,6 +149,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
- [Uptime Kuma](https://uptime.kuma.pet/), a fancy self-hosted monitoring tool. Available as [services.uptime-kuma](#opt-services.uptime-kuma.enable).
+- [Mepo](https://mepo.milesalan.com), a fast, simple, hackable OSM map viewer for mobile and desktop Linux. Available as [programs.mepo.enable](#opt-programs.mepo.enable).
+
## Backward Incompatibilities {#sec-release-22.11-incompatibilities}
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index cadcb2e99dc9..8dac67f0c308 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -187,6 +187,7 @@
./programs/liboping.nix
./programs/light.nix
./programs/mdevctl.nix
+ ./programs/mepo.nix
./programs/mosh.nix
./programs/mininet.nix
./programs/msmtp.nix
diff --git a/nixos/modules/programs/mepo.nix b/nixos/modules/programs/mepo.nix
new file mode 100644
index 000000000000..4b1706a2a0e5
--- /dev/null
+++ b/nixos/modules/programs/mepo.nix
@@ -0,0 +1,46 @@
+{ pkgs, config, lib, ...}:
+with lib;
+let
+ cfg = config.programs.mepo;
+in
+{
+ options.programs.mepo = {
+ enable = mkEnableOption (mdDoc "Mepo");
+
+ locationBackends = {
+ gpsd = mkOption {
+ type = types.bool;
+ default = false;
+ description = mdDoc ''
+ Whether to enable location detection via gpsd.
+ This may require additional configuration of gpsd, see [here](#opt-services.gpsd.enable)
+ '';
+ };
+
+ geoclue = mkOption {
+ type = types.bool;
+ default = true;
+ description = mdDoc "Whether to enable location detection via geoclue";
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ environment.systemPackages = with pkgs; [
+ mepo
+ ] ++ lib.optional cfg.locationBackends.geoclue geoclue2-with-demo-agent
+ ++ lib.optional cfg.locationBackends.gpsd gpsd;
+
+ services.geoclue2 = mkIf cfg.locationBackends.geoclue {
+ enable = true;
+ appConfig.where-am-i = {
+ isAllowed = true;
+ isSystem = false;
+ };
+ };
+
+ services.gpsd.enable = cfg.locationBackends.gpsd;
+ };
+
+ meta.maintainers = with maintainers; [ laalsaas ];
+}