Merge pull request #296361 from bhankas/workout-tracker
workout-tracker: init at 0.10.5
This commit is contained in:
commit
93a725e1a5
@ -2544,6 +2544,12 @@
|
|||||||
githubId = 34919100;
|
githubId = 34919100;
|
||||||
name = "Brendan Hall";
|
name = "Brendan Hall";
|
||||||
};
|
};
|
||||||
|
bhankas = {
|
||||||
|
email = "payas@relekar.org";
|
||||||
|
github = "bhankas";
|
||||||
|
githubId = 24254289;
|
||||||
|
name = "Payas Relekar";
|
||||||
|
};
|
||||||
bhipple = {
|
bhipple = {
|
||||||
email = "bhipple@protonmail.com";
|
email = "bhipple@protonmail.com";
|
||||||
github = "bhipple";
|
github = "bhipple";
|
||||||
@ -15116,12 +15122,6 @@
|
|||||||
githubId = 116740;
|
githubId = 116740;
|
||||||
name = "Paweł Pacana";
|
name = "Paweł Pacana";
|
||||||
};
|
};
|
||||||
payas = {
|
|
||||||
email = "relekarpayas@gmail.com";
|
|
||||||
github = "bhankas";
|
|
||||||
githubId = 24254289;
|
|
||||||
name = "Payas Relekar";
|
|
||||||
};
|
|
||||||
pb- = {
|
pb- = {
|
||||||
email = "pbaecher@gmail.com";
|
email = "pbaecher@gmail.com";
|
||||||
github = "pb-";
|
github = "pb-";
|
||||||
|
@ -95,6 +95,8 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
|
|||||||
|
|
||||||
- [hebbot](https://github.com/haecker-felix/hebbot), a Matrix bot to generate "This Week in X" like blog posts. Available as [services.hebbot](#opt-services.hebbot.enable).
|
- [hebbot](https://github.com/haecker-felix/hebbot), a Matrix bot to generate "This Week in X" like blog posts. Available as [services.hebbot](#opt-services.hebbot.enable).
|
||||||
|
|
||||||
|
- [Workout-tracker](https://github.com/jovandeginste/workout-tracker), a workout tracking web application for personal use.
|
||||||
|
|
||||||
- [Python Matter Server](https://github.com/home-assistant-libs/python-matter-server), a
|
- [Python Matter Server](https://github.com/home-assistant-libs/python-matter-server), a
|
||||||
Matter Controller Server exposing websocket connections for use with other services, notably Home Assistant.
|
Matter Controller Server exposing websocket connections for use with other services, notably Home Assistant.
|
||||||
Available as [services.matter-server](#opt-services.matter-server.enable)
|
Available as [services.matter-server](#opt-services.matter-server.enable)
|
||||||
|
@ -800,6 +800,7 @@
|
|||||||
./services/misc/tzupdate.nix
|
./services/misc/tzupdate.nix
|
||||||
./services/misc/uhub.nix
|
./services/misc/uhub.nix
|
||||||
./services/misc/weechat.nix
|
./services/misc/weechat.nix
|
||||||
|
./services/misc/workout-tracker.nix
|
||||||
./services/misc/xmr-stak.nix
|
./services/misc/xmr-stak.nix
|
||||||
./services/misc/xmrig.nix
|
./services/misc/xmrig.nix
|
||||||
./services/misc/zoneminder.nix
|
./services/misc/zoneminder.nix
|
||||||
|
83
nixos/modules/services/misc/workout-tracker.nix
Normal file
83
nixos/modules/services/misc/workout-tracker.nix
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) types;
|
||||||
|
cfg = config.services.workout-tracker;
|
||||||
|
stateDir = "workout-tracker";
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
services.workout-tracker = {
|
||||||
|
enable = lib.mkEnableOption "workout tracking web application for personal use (or family, friends), geared towards running and other GPX-based activities";
|
||||||
|
|
||||||
|
package = lib.mkPackageOption pkgs "workout-tracker" { };
|
||||||
|
|
||||||
|
address = lib.mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1";
|
||||||
|
description = "Web interface address.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = lib.mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 8080;
|
||||||
|
description = "Web interface port.";
|
||||||
|
};
|
||||||
|
|
||||||
|
environmentFile = lib.mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = null;
|
||||||
|
example = "/run/keys/workout-tracker.env";
|
||||||
|
description = ''
|
||||||
|
An environment file as defined in {manpage}`systemd.exec(5)`.
|
||||||
|
|
||||||
|
Secrets like `WT_JWT_ENCRYPTION_KEY` may be passed to the service without adding them
|
||||||
|
to the world-readable Nix store.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = lib.mkOption {
|
||||||
|
type = types.attrsOf types.str;
|
||||||
|
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Extra config options.
|
||||||
|
'';
|
||||||
|
example = {
|
||||||
|
WT_LOGGING = "true";
|
||||||
|
WT_DEBUG = "false";
|
||||||
|
WT_DATABASE_DRIVER = "sqlite";
|
||||||
|
WT_DSN = "./database.db";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
systemd.services.workout-tracker = {
|
||||||
|
description = "A workout tracking web application for personal use (or family, friends), geared towards running and other GPX-based activities";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
environment = {
|
||||||
|
WT_BIND = "${cfg.address}:${toString cfg.port}";
|
||||||
|
WT_DATABASE_DRIVER = "sqlite";
|
||||||
|
WT_DSN = "./database.db";
|
||||||
|
} // cfg.settings;
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = lib.getExe cfg.package;
|
||||||
|
DynamicUser = true;
|
||||||
|
StateDirectory = stateDir;
|
||||||
|
WorkingDirectory = "%S/${stateDir}";
|
||||||
|
Restart = "always";
|
||||||
|
EnvironmentFile = lib.optional (cfg.environmentFile != null) cfg.environmentFile;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta.maintainers = with lib.maintainers; [ bhankas ];
|
||||||
|
}
|
@ -992,6 +992,7 @@ in {
|
|||||||
wireguard = handleTest ./wireguard {};
|
wireguard = handleTest ./wireguard {};
|
||||||
without-nix = handleTest ./without-nix.nix {};
|
without-nix = handleTest ./without-nix.nix {};
|
||||||
wmderland = handleTest ./wmderland.nix {};
|
wmderland = handleTest ./wmderland.nix {};
|
||||||
|
workout-tracker = handleTest ./workout-tracker.nix {};
|
||||||
wpa_supplicant = handleTest ./wpa_supplicant.nix {};
|
wpa_supplicant = handleTest ./wpa_supplicant.nix {};
|
||||||
wordpress = handleTest ./wordpress.nix {};
|
wordpress = handleTest ./wordpress.nix {};
|
||||||
wrappers = handleTest ./wrappers.nix {};
|
wrappers = handleTest ./wrappers.nix {};
|
||||||
|
29
nixos/tests/workout-tracker.nix
Normal file
29
nixos/tests/workout-tracker.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import ./make-test-python.nix (
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "workout-tracker";
|
||||||
|
|
||||||
|
meta.maintainers = with lib.maintainers; [ bhankas ];
|
||||||
|
|
||||||
|
nodes.machine =
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
virtualisation.memorySize = 2048;
|
||||||
|
|
||||||
|
services.workout-tracker.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
machine.wait_for_unit("workout-tracker.service")
|
||||||
|
# wait for workout-tracker to fully come up
|
||||||
|
|
||||||
|
with subtest("workout-tracker service starts"):
|
||||||
|
machine.wait_until_succeeds(
|
||||||
|
"curl -sSfL http://localhost:8080/ > /dev/null",
|
||||||
|
timeout=30
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
@ -21,7 +21,7 @@ buildGoModule rec {
|
|||||||
description = "Org-mode parser and static site generator in go";
|
description = "Org-mode parser and static site generator in go";
|
||||||
homepage = "https://niklasfasching.github.io/go-org";
|
homepage = "https://niklasfasching.github.io/go-org";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ payas ];
|
maintainers = with maintainers; [ bhankas ];
|
||||||
mainProgram = "go-org";
|
mainProgram = "go-org";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,6 @@ rustPlatform.buildRustPackage rec {
|
|||||||
mit
|
mit
|
||||||
];
|
];
|
||||||
mainProgram = "glas";
|
mainProgram = "glas";
|
||||||
maintainers = with lib.maintainers; [ payas ];
|
maintainers = with lib.maintainers; [ bhankas ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
32
pkgs/by-name/wo/workout-tracker/package.nix
Normal file
32
pkgs/by-name/wo/workout-tracker/package.nix
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
buildGoModule,
|
||||||
|
fetchFromGitHub,
|
||||||
|
nix-update-script,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
buildGoModule rec {
|
||||||
|
pname = "workout-tracker";
|
||||||
|
version = "0.10.5";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "jovandeginste";
|
||||||
|
repo = "workout-tracker";
|
||||||
|
rev = "refs/tags/v${version}";
|
||||||
|
hash = "sha256-ekGaNHysY0lXbB5w6AycnLR9/4dqUp0busCcPPvzSVI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = null;
|
||||||
|
|
||||||
|
passthru.updateScript = nix-update-script { };
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
changelog = "https://github.com/jovandeginste/workout-tracker/releases/tag/v${version}";
|
||||||
|
description = "A workout tracking web application for personal use";
|
||||||
|
homepage = "https://github.com/jovandeginste/workout-tracker";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
mainProgram = "workout-tracker";
|
||||||
|
maintainers = with lib.maintainers; [ bhankas ];
|
||||||
|
};
|
||||||
|
}
|
@ -59,6 +59,6 @@ rustPlatform.buildRustPackage rec {
|
|||||||
homepage = "https://github.com/ducaale/xh";
|
homepage = "https://github.com/ducaale/xh";
|
||||||
changelog = "https://github.com/ducaale/xh/blob/v${version}/CHANGELOG.md";
|
changelog = "https://github.com/ducaale/xh/blob/v${version}/CHANGELOG.md";
|
||||||
license = licenses.mit;
|
license = licenses.mit;
|
||||||
maintainers = with maintainers; [ figsoda payas ];
|
maintainers = with maintainers; [ figsoda bhankas ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user