diff --git a/flake.lock b/flake.lock index bdf070b..fc29929 100644 --- a/flake.lock +++ b/flake.lock @@ -577,7 +577,8 @@ "nixpkgs": "nixpkgs_5", "nixpkgs-unstable": "nixpkgs-unstable", "vimpeccable": "vimpeccable", - "windline-nvim": "windline-nvim" + "windline-nvim": "windline-nvim", + "workout-sync": "workout-sync" } }, "rust-overlay": { @@ -677,6 +678,26 @@ "repo": "windline.nvim", "type": "github" } + }, + "workout-sync": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738967762, + "narHash": "sha256-TwYDSUqKEKJsI6qoGJ7PkiQEUYMTRvvxmPHyimOr5SQ=", + "owner": "~repomaa", + "repo": "workout-sync", + "rev": "f53dbab01db367309be8058e77e263f1b092e36a", + "type": "sourcehut" + }, + "original": { + "owner": "~repomaa", + "repo": "workout-sync", + "type": "sourcehut" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 61d1d0f..60a7dc8 100644 --- a/flake.nix +++ b/flake.nix @@ -42,6 +42,10 @@ url = "github:repomaa/ketchup"; inputs.nixpkgs.follows = "nixpkgs"; }; + workout-sync = { + url = "sourcehut:~repomaa/workout-sync"; + inputs.nixpkgs.follows = "nixpkgs"; + }; ksoloti-pr.url = "github:repomaa/nixpkgs/pkg/ksoloti"; }; outputs = { nixpkgs, ... }@inputs: diff --git a/hosts/freun.dev/services/default.nix b/hosts/freun.dev/services/default.nix index 359c4e3..f3e4d9f 100644 --- a/hosts/freun.dev/services/default.nix +++ b/hosts/freun.dev/services/default.nix @@ -34,5 +34,6 @@ ./workout-tracker.nix ./gotosocial.nix ./bin.nix + ./workout-sync.nix ]; } diff --git a/hosts/freun.dev/services/workout-sync.nix b/hosts/freun.dev/services/workout-sync.nix new file mode 100644 index 0000000..fa2eeaa --- /dev/null +++ b/hosts/freun.dev/services/workout-sync.nix @@ -0,0 +1,26 @@ +{ pkgs, inputs, config, ... }: +let + fqdn = "ws.freun.dev"; + port = 3344; + workout-sync = inputs.workout-sync.packages.${pkgs.system}.default; +in +{ + systemd.services.workout-sync = { + enable = true; + description = "Workout sync service"; + environment = { + PORT = toString port; + WORKOUT_TRACKER_URL = "http://localhost:${toString config.services.workout-tracker.port}"; + }; + serviceConfig = { + ExecStart = "${workout-sync}/bin/workout-sync"; + Restart = "always"; + DynamicUser = true; + EnvironmentFile = "/var/secrets/workout-sync.env"; + }; + wantedBy = [ "multi-user.target" ]; + confinement.enable = true; + }; + + modules.webserver.vHosts.${fqdn}.locations."/".proxyPort = port; +}