diff --git a/modules/nixos/bundles/server.nix b/modules/nixos/bundles/server.nix index 271c07b..8796c8d 100644 --- a/modules/nixos/bundles/server.nix +++ b/modules/nixos/bundles/server.nix @@ -15,6 +15,7 @@ "miniflux" "nginx" "ntfy-sh" + "owntracks" "paperless" "prowlarr" "qbittorrent" diff --git a/modules/nixos/features/owntracks-frontend.nix b/modules/nixos/features/owntracks-frontend.nix new file mode 100644 index 0000000..613fecd --- /dev/null +++ b/modules/nixos/features/owntracks-frontend.nix @@ -0,0 +1,32 @@ +{ + stdenv, + writeText, + fetchzip, +}: +stdenv.mkDerivation { + pname = "owntracks-frontend"; + version = "v2.15.3"; + src = fetchzip { + url = "https://github.com/owntracks/frontend/releases/download/v2.15.3/v2.15.3-dist.zip"; + sha256 = "iy+yISPcOD/2lTyJUb1eI3wufLku1mKfVDm0+Dy8OKk="; + }; + + config = writeText "config.js" '' + window.owntracks = window.owntracks || {}; + window.owntracks.config = { + api: { + baseUrl: "https://owntracks.fi33.buzz:5014" + }, + router: { + basePath: "owntracks" + } + }; + ''; + + installPhase = '' + runHook preInstall + cp -r . $out + cp $config $out/config/config.js + runHook postInstall + ''; +} diff --git a/modules/nixos/features/owntracks.nix b/modules/nixos/features/owntracks.nix new file mode 100644 index 0000000..3f20127 --- /dev/null +++ b/modules/nixos/features/owntracks.nix @@ -0,0 +1,41 @@ +{ + pkgs, + ... +}: +let + host = "owntracks.fi33.buzz"; + port = "5014"; +in +{ + systemd.services.owntracks = { + enable = true; + description = "owntracks recorder"; + serviceConfig = { + ExecStart = '' + ${pkgs.owntracks-recorder}/bin/ot-recorder \ + --storage /var/lib/owntracks/recorder/store \ + --port 0 + --http-port ${port} + --http-host https://${host} + ''; + DynamicUser = true; + StateDirectory = "owntracks"; + Restart = "always"; + }; + wantedBy = [ "multi-user.target" ]; + }; + services = { + # borgbackup.jobs = owntracks { }; + + nginx.virtualHosts.${host} = + let + owntracks-frontend = pkgs.callPackage ./owntracks-frontend.nix; + in + { + forceSSL = true; + useACMEHost = "fi33.buzz"; + root = "/var/www/html"; + locations."/owntracks/".alias = "${owntracks-frontend}"; + }; + }; +}