about summary refs log tree commit diff
path: root/pkgs/by-name/yo
diff options
context:
space:
mode:
authorPol Dellaiera <pol.dellaiera@protonmail.com>2024-05-15 16:45:23 +0200
committerGitHub <noreply@github.com>2024-05-15 16:45:23 +0200
commit4275fc290aaecb6072abcdfc75741373ecfa0fdc (patch)
tree808837bcdf5e1d5c566995fddc43960885b9bb5e /pkgs/by-name/yo
parent9997402000a82eda4327fde36291234118c7515e (diff)
parent05b36f060da279563ab7097c299a40e9ecfc39f6 (diff)
Merge pull request #293817 from PatrickDaG/your_spotify
nixos/your_spotify: init at 1.10.1
Diffstat (limited to 'pkgs/by-name/yo')
-rw-r--r--pkgs/by-name/yo/your_spotify/client.nix58
-rw-r--r--pkgs/by-name/yo/your_spotify/package.json10
-rw-r--r--pkgs/by-name/yo/your_spotify/package.nix85
3 files changed, 153 insertions, 0 deletions
diff --git a/pkgs/by-name/yo/your_spotify/client.nix b/pkgs/by-name/yo/your_spotify/client.nix
new file mode 100644
index 0000000000000..420498821bf93
--- /dev/null
+++ b/pkgs/by-name/yo/your_spotify/client.nix
@@ -0,0 +1,58 @@
+{
+  apiEndpoint ? "http://localhost:3000",
+  fetchYarnDeps,
+  your_spotify,
+  mkYarnPackage,
+  fixup-yarn-lock,
+  src,
+  version,
+  yarn,
+}:
+mkYarnPackage rec {
+  inherit version src;
+  pname = "your_spotify_client";
+  name = "your_spotify_client-${version}";
+  packageJSON = ./package.json;
+  offlineCache = fetchYarnDeps {
+    yarnLock = src + "/yarn.lock";
+    hash = "sha256-5SgknaRVzgO2Dzc8MhAaM8UERWMv+PrItzevoWHbWnA=";
+  };
+  configurePhase = ''
+    runHook preConfigure
+
+    export HOME=$(mktemp -d)
+    yarn config --offline set yarn-offline-mirror $offlineCache
+    fixup-yarn-lock yarn.lock
+    yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
+    patchShebangs node_modules/
+
+    runHook postConfigure
+  '';
+  buildPhase = ''
+    runHook preBuild
+    pushd ./apps/client/
+    yarn --offline run build
+    export API_ENDPOINT="${apiEndpoint}"
+    substituteInPlace scripts/run/variables.sh --replace-quiet '/app/apps/client/' "./"
+
+    chmod +x ./scripts/run/variables.sh
+    patchShebangs --build ./scripts/run/variables.sh
+
+    ./scripts/run/variables.sh
+
+    popd
+    runHook postBuild
+  '';
+  nativeBuildInputs = [yarn fixup-yarn-lock];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out
+    cp -r ./apps/client/build/* $out
+    runHook postInstall
+  '';
+  doDist = false;
+  meta = {
+    inherit (your_spotify.meta) homepage changelog description license maintainers;
+  };
+}
diff --git a/pkgs/by-name/yo/your_spotify/package.json b/pkgs/by-name/yo/your_spotify/package.json
new file mode 100644
index 0000000000000..8c10988ffb6d2
--- /dev/null
+++ b/pkgs/by-name/yo/your_spotify/package.json
@@ -0,0 +1,10 @@
+{
+  "name": "@your_spotify/root",
+  "version": "1.10.1",
+  "repository": "git@github.com:Yooooomi/your_spotify.git",
+  "author": "Timothee <timothee.boussus@gmail.com>",
+  "private": true,
+  "workspaces": [
+    "apps/*"
+  ]
+}
diff --git a/pkgs/by-name/yo/your_spotify/package.nix b/pkgs/by-name/yo/your_spotify/package.nix
new file mode 100644
index 0000000000000..0296b9d22c028
--- /dev/null
+++ b/pkgs/by-name/yo/your_spotify/package.nix
@@ -0,0 +1,85 @@
+{
+  callPackage,
+  fetchFromGitHub,
+  fetchYarnDeps,
+  lib,
+  makeWrapper,
+  mkYarnPackage,
+  nodejs,
+  fixup-yarn-lock,
+  yarn,
+}: let
+  version = "1.10.1";
+  src = fetchFromGitHub {
+    owner = "Yooooomi";
+    repo = "your_spotify";
+    rev = "refs/tags/${version}";
+    hash = "sha256-e82j2blGxQLWAlBNuAnFvlD9vwMk4/mRI0Vf7vuaPA0=";
+  };
+  client = callPackage ./client.nix {inherit src version;};
+in
+  mkYarnPackage rec {
+    inherit version src;
+    pname = "your_spotify_server";
+    name = "your_spotify_server-${version}";
+    packageJSON = ./package.json;
+    offlineCache = fetchYarnDeps {
+      yarnLock = src + "/yarn.lock";
+      hash = "sha256-5SgknaRVzgO2Dzc8MhAaM8UERWMv+PrItzevoWHbWnA=";
+    };
+
+    configurePhase = ''
+      runHook preConfigure
+
+      export HOME=$(mktemp -d)
+      yarn config --offline set yarn-offline-mirror $offlineCache
+      fixup-yarn-lock yarn.lock
+
+      runHook postConfigure
+    '';
+
+    buildPhase = ''
+      runHook preBuild
+
+      yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
+      patchShebangs node_modules/
+
+      pushd ./apps/server/
+      yarn --offline run build
+      popd
+
+      rm -r node_modules
+      export NODE_ENV="production"
+      yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
+      patchShebangs node_modules/
+
+      runHook postBuild
+    '';
+    nativeBuildInputs = [makeWrapper yarn fixup-yarn-lock];
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/share/your_spotify
+      cp -r node_modules $out/share/your_spotify/node_modules
+      cp -r ./apps/server/{lib,package.json} $out
+      mkdir -p $out/bin
+      makeWrapper ${lib.escapeShellArg (lib.getExe nodejs)} "$out/bin/your_spotify_migrate" \
+        --add-flags "$out/lib/migrations.js" --set NODE_PATH "$out/share/your_spotify/node_modules"
+      makeWrapper ${lib.escapeShellArg (lib.getExe nodejs)} "$out/bin/your_spotify_server" \
+        --add-flags "$out/lib/index.js" --set NODE_PATH "$out/share/your_spotify/node_modules"
+
+      runHook postInstall
+    '';
+    doDist = false;
+    passthru = {
+      inherit client;
+    };
+    meta = with lib; {
+      homepage = "https://github.com/Yooooomi/your_spotify";
+      changelog = "https://github.com/Yooooomi/your_spotify/releases/tag/${version}";
+      description = "Self-hosted application that tracks what you listen and offers you a dashboard to explore statistics about it";
+      license = licenses.gpl3Only;
+      maintainers = with maintainers; [patrickdag];
+      mainProgram = "your_spotify_server";
+    };
+  }