Merge pull request #296361 from bhankas/workout-tracker

workout-tracker: init at 0.10.5

Changed files
+157 -9
maintainers
nixos
doc
manual
release-notes
modules
tests
pkgs
applications
misc
go-org
by-name
gl
wo
workout-tracker
tools
networking
+6 -6
maintainers/maintainer-list.nix
···
githubId = 34919100;
name = "Brendan Hall";
};
+
bhankas = {
+
email = "payas@relekar.org";
+
github = "bhankas";
+
githubId = 24254289;
+
name = "Payas Relekar";
+
};
bhipple = {
email = "bhipple@protonmail.com";
github = "bhipple";
···
github = "pawelpacana";
githubId = 116740;
name = "Paweł Pacana";
-
};
-
payas = {
-
email = "relekarpayas@gmail.com";
-
github = "bhankas";
-
githubId = 24254289;
-
name = "Payas Relekar";
pb- = {
email = "pbaecher@gmail.com";
+2
nixos/doc/manual/release-notes/rl-2405.section.md
···
- [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
Matter Controller Server exposing websocket connections for use with other services, notably Home Assistant.
Available as [services.matter-server](#opt-services.matter-server.enable)
+1
nixos/modules/module-list.nix
···
./services/misc/tzupdate.nix
./services/misc/uhub.nix
./services/misc/weechat.nix
+
./services/misc/workout-tracker.nix
./services/misc/xmr-stak.nix
./services/misc/xmrig.nix
./services/misc/zoneminder.nix
+83
nixos/modules/services/misc/workout-tracker.nix
···
+
{
+
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 ];
+
}
+1
nixos/tests/all-tests.nix
···
wireguard = handleTest ./wireguard {};
without-nix = handleTest ./without-nix.nix {};
wmderland = handleTest ./wmderland.nix {};
+
workout-tracker = handleTest ./workout-tracker.nix {};
wpa_supplicant = handleTest ./wpa_supplicant.nix {};
wordpress = handleTest ./wordpress.nix {};
wrappers = handleTest ./wrappers.nix {};
+29
nixos/tests/workout-tracker.nix
···
+
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
+
)
+
'';
+
}
+
)
+1 -1
pkgs/applications/misc/go-org/default.nix
···
description = "Org-mode parser and static site generator in go";
homepage = "https://niklasfasching.github.io/go-org";
license = licenses.mit;
-
maintainers = with maintainers; [ payas ];
+
maintainers = with maintainers; [ bhankas ];
mainProgram = "go-org";
};
}
+1 -1
pkgs/by-name/gl/glas/package.nix
···
mit
];
mainProgram = "glas";
-
maintainers = with lib.maintainers; [ payas ];
+
maintainers = with lib.maintainers; [ bhankas ];
};
}
+32
pkgs/by-name/wo/workout-tracker/package.nix
···
+
{
+
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 ];
+
};
+
}
+1 -1
pkgs/tools/networking/xh/default.nix
···
homepage = "https://github.com/ducaale/xh";
changelog = "https://github.com/ducaale/xh/blob/v${version}/CHANGELOG.md";
license = licenses.mit;
-
maintainers = with maintainers; [ figsoda payas ];
+
maintainers = with maintainers; [ figsoda bhankas ];
};
}