mirror of
https://github.com/nix-community/home-manager
synced 2024-12-20 08:49:47 +01:00
osmscout-server: add module
Osmscout-server includes a setting in its UI to create a systemd user service and socket to run the server on demand. This does not function correctly on NixOS, for two reasons: 1. It assumes that the binary path is stable (e.g. /usr/bin/osmscout-server), which is not the case on NixOS. 2. It auto-detects the unwrapped binary path, which doesn't work. This module allows the user to access the same functionality on NixOS.
This commit is contained in:
parent
458544594b
commit
0f11c14065
6 changed files with 130 additions and 0 deletions
|
@ -1348,6 +1348,14 @@ in
|
|||
A new module is available: 'programs.gradle'.
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
time = "2023-12-28T08:28:26+00:00";
|
||||
condition = hostPlatform.isLinux;
|
||||
message = ''
|
||||
A new module is available: 'services.osmscout-server'.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -306,6 +306,7 @@ let
|
|||
./services/nextcloud-client.nix
|
||||
./services/notify-osd.nix
|
||||
./services/opensnitch-ui.nix
|
||||
./services/osmscout-server.nix
|
||||
./services/owncloud-client.nix
|
||||
./services/pantalaimon.nix
|
||||
./services/parcellite.nix
|
||||
|
|
76
modules/services/osmscout-server.nix
Normal file
76
modules/services/osmscout-server.nix
Normal file
|
@ -0,0 +1,76 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.services.osmscout-server;
|
||||
in {
|
||||
meta.maintainers = [ maintainers.Thra11 ];
|
||||
|
||||
options = {
|
||||
services.osmscout-server = {
|
||||
enable = mkEnableOption "OSM Scout Server";
|
||||
|
||||
package = mkPackageOption pkgs "osmscout-server" { };
|
||||
|
||||
network = {
|
||||
startWhenNeeded = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Enable systemd socket activation.
|
||||
'';
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = ''
|
||||
The address for the server to listen on.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8553;
|
||||
description = ''
|
||||
The TCP port on which the server will listen.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
(lib.hm.assertions.assertPlatform "services.osmscout-server" pkgs
|
||||
lib.platforms.linux)
|
||||
];
|
||||
|
||||
systemd.user.services.osmscout-server = {
|
||||
Unit = { Description = "OSM Scout Server"; };
|
||||
|
||||
Install = mkIf (!cfg.network.startWhenNeeded) {
|
||||
WantedBy = [ "default.target" ];
|
||||
};
|
||||
|
||||
Service = {
|
||||
ExecStart = "'${cfg.package}/bin/osmscout-server' --systemd --quiet";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.sockets.osmscout-server = mkIf cfg.network.startWhenNeeded {
|
||||
Unit = { Description = "OSM Scout Server Socket"; };
|
||||
|
||||
Socket = {
|
||||
ListenStream =
|
||||
"${cfg.network.listenAddress}:${toString cfg.network.port}";
|
||||
TriggerLimitIntervalSec = "60s";
|
||||
TriggerLimitBurst = 1;
|
||||
};
|
||||
|
||||
Install = { WantedBy = [ "sockets.target" ]; };
|
||||
};
|
||||
|
||||
home.packages = [ cfg.package ];
|
||||
};
|
||||
}
|
|
@ -235,6 +235,7 @@ import nmt {
|
|||
./modules/services/mpd
|
||||
./modules/services/mpd-mpris
|
||||
./modules/services/mpdris2
|
||||
./modules/services/osmscout-server
|
||||
./modules/services/pantalaimon
|
||||
./modules/services/parcellite
|
||||
./modules/services/pass-secret-service
|
||||
|
|
43
tests/modules/services/osmscout-server/basic-setup.nix
Normal file
43
tests/modules/services/osmscout-server/basic-setup.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
services.osmscout-server = {
|
||||
enable = true;
|
||||
package = config.lib.test.mkStubPackage { outPath = "@osmscout-server@"; };
|
||||
network = {
|
||||
startWhenNeeded = true;
|
||||
listenAddress = "0.0.0.0";
|
||||
port = 55555;
|
||||
};
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertFileContent \
|
||||
home-files/.config/systemd/user/osmscout-server.service \
|
||||
${
|
||||
builtins.toFile "osmscout-server.service" ''
|
||||
[Service]
|
||||
ExecStart='@osmscout-server@/bin/osmscout-server' --systemd --quiet
|
||||
|
||||
[Unit]
|
||||
Description=OSM Scout Server
|
||||
''
|
||||
}
|
||||
assertFileContent \
|
||||
home-files/.config/systemd/user/osmscout-server.socket \
|
||||
${
|
||||
builtins.toFile "osmscout-server.socket" ''
|
||||
[Install]
|
||||
WantedBy=sockets.target
|
||||
|
||||
[Socket]
|
||||
ListenStream=0.0.0.0:55555
|
||||
TriggerLimitBurst=1
|
||||
TriggerLimitIntervalSec=60s
|
||||
|
||||
[Unit]
|
||||
Description=OSM Scout Server Socket
|
||||
''
|
||||
}
|
||||
'';
|
||||
}
|
1
tests/modules/services/osmscout-server/default.nix
Normal file
1
tests/modules/services/osmscout-server/default.nix
Normal file
|
@ -0,0 +1 @@
|
|||
{ osmscout-server = ./basic-setup.nix; }
|
Loading…
Reference in a new issue