From 5bda267c8521fda60b515d050407fd13a944a08b Mon Sep 17 00:00:00 2001 From: nyanloutre Date: Sun, 9 Jun 2024 18:24:04 +0200 Subject: [PATCH] pkgs/watcharr: init at v1.39.0 --- flake.nix | 2 ++ pkgs/default.nix | 3 ++ pkgs/watcharr/default.nix | 63 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 pkgs/default.nix create mode 100644 pkgs/watcharr/default.nix diff --git a/flake.nix b/flake.nix index 32d3b48..7fc25dc 100644 --- a/flake.nix +++ b/flake.nix @@ -21,6 +21,8 @@ outputs = { self, nixpkgs, nixpkgs-unstable, simple-nixos-mailserver, dogetipbot-telegram, ipmihddtemp }: { + packages.x86_64-linux = (import ./pkgs nixpkgs.legacyPackages.x86_64-linux); + nixosConfigurations.paul-fixe = nixpkgs-unstable.lib.nixosSystem { system = "x86_64-linux"; modules = [ diff --git a/pkgs/default.nix b/pkgs/default.nix new file mode 100644 index 0000000..f433fdd --- /dev/null +++ b/pkgs/default.nix @@ -0,0 +1,3 @@ +pkgs: { + watcharr = pkgs.callPackage ./watcharr { }; +} diff --git a/pkgs/watcharr/default.nix b/pkgs/watcharr/default.nix new file mode 100644 index 0000000..d58b28b --- /dev/null +++ b/pkgs/watcharr/default.nix @@ -0,0 +1,63 @@ +{ lib +, pkgs +, buildGoModule +, fetchFromGitHub +, buildNpmPackage +, nixosTests +, caddy +, testers +, installShellFiles +, stdenv +}: + +let + version = "1.39.0"; + src = fetchFromGitHub { + owner = "sbondCo"; + repo = "Watcharr"; + rev = "v${version}"; + sha256 = "sha256-40XLYc1ub2Qzf8r9g+Ay8Y8CAHYU+P9CI60heLAuQkE="; + }; + + frontend = buildNpmPackage { + pname = "watcharr-ui"; + inherit version src; + npmDepsHash = "sha256-sigkeK1bLbZfOU8756yLt5avqnOJWC4t4TnV6EvFTPY="; + + installPhase = '' + cp -r build $out + cp package.json package-lock.json $out + cd $out && npm ci --omit=dev + ''; + }; +in +buildGoModule { + pname = "watcharr"; + inherit version; + + src = src + "/server"; + + vendorHash = "sha256-vmroCetQc1Ix65B2Br33lyWt0FwGeQXMoD5fLinQg28="; + + # Inject frontend assets into go embed + prePatch = '' + # rm -rf ui + # ln -s ${frontend} ui + substituteInPlace watcharr.go \ + --replace-fail ui/index.js ${frontend}/index.js + ''; + + buildInputs = [ pkgs.makeWrapper ]; + + postFixup = '' + wrapProgram "$out/bin/Watcharr" --prefix PATH : "${lib.makeBinPath [ pkgs.nodejs ]}" + ''; + + meta = with lib; { + homepage = "https://watcharr.app/"; + description = "Open source, self-hostable watched list for all your content with user authentication, modern and clean UI and a very simple setup"; + license = licenses.asl20; + # mainProgram = "caddy"; + maintainers = with maintainers; [ nyanloutre ]; + }; +}