corpus

Log | Files | Refs | README | LICENSE

commit 31c8243c27a5c3093a8fb1192b50b3ae011a740d
parent a220a6b32c162d3bfcc954ca11445bf52aadf145
Author: mtmn <miro@haravara.org>
Date:   Sat, 11 Apr 2026 07:07:51 +0200

chore: fiddling with builds, naming

Diffstat:
MContainerfile | 12++++--------
Mflake.nix | 28+++++++++++++++++-----------
Msrc/Main.purs | 2+-
3 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/Containerfile b/Containerfile @@ -1,10 +1,8 @@ -FROM docker.io/node:25-slim AS builder +# docker.io/node:25-slim +FROM docker.io/library/node@sha256:435f3537a088a01fd208bb629a4b69c28d85deb9a60af8a710cafc3befd6e3be as builder WORKDIR /app -# Satisfy DL3008 (pin versions) and DL3015 (no-install-recommends) -# Note: Pinning exact apt versions is often brittle in rolling distros, -# but using --no-install-recommends is a standard best practice. RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ git \ @@ -19,7 +17,8 @@ COPY src ./src RUN npm run build -FROM docker.io/node:25-slim +# docker.io/node:25-slim +FROM docker.io/library/node@sha256:435f3537a088a01fd208bb629a4b69c28d85deb9a60af8a710cafc3befd6e3be as builder WORKDIR /app @@ -33,11 +32,8 @@ RUN mkdir -p /app/data && chown -R node:node /app/data USER node -# Default port for scorched scrobbler ENV PORT=8321 ENV DATABASE_FILE=/app/data/scorpus.db ENV NODE_ENV=production -EXPOSE 8321 - CMD ["node", "--no-deprecation", "server.js"] diff --git a/flake.nix b/flake.nix @@ -1,6 +1,4 @@ { - description = "ListenBrainz frontend in PureScript"; - inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; @@ -15,6 +13,7 @@ flake-utils.lib.eachDefaultSystem ( system: let pkgs = nixpkgs.legacyPackages.${system}; + scorpus = pkgs.buildNpmPackage { pname = "scorpus"; version = "1.0.0"; @@ -26,20 +25,28 @@ purescript spago esbuild + makeWrapper + python3 + pkg-config + gcc + gnumake ]; + npmFlags = ["--build-from-source"]; + buildPhase = '' export HOME=$TMPDIR npm run build ''; installPhase = '' - mkdir -p $out/lib - cp server.js client.js package.json $out/lib/ + mkdir -p $out/lib/scorpus + cp -r server.js client.js package.json node_modules $out/lib/scorpus/ + mkdir -p $out/bin - echo "#!/bin/sh" > $out/bin/scorpus-server - echo "${pkgs.nodejs}/bin/node --no-deprecation $out/lib/server.js" >> $out/bin/scorpus-server - chmod +x $out/bin/scorpus-server + makeWrapper ${pkgs.nodejs}/bin/node $out/bin/scorpus-server \ + --add-flags "--no-deprecation" \ + --add-flags "$out/lib/scorpus/server.js" ''; }; in { @@ -50,7 +57,7 @@ tag = "latest"; contents = [pkgs.nodejs pkgs.cacert]; config = { - Cmd = ["${pkgs.nodejs}/bin/node" "--no-deprecation" "/app/server.js"]; + Cmd = ["${scorpus}/bin/scorpus-server"]; WorkingDir = "/app"; ExposedPorts = { "8321/tcp" = {}; @@ -64,9 +71,6 @@ }; extraCommands = '' mkdir -p app/data - cp ${scorpus}/lib/server.js app/ - cp ${scorpus}/lib/client.js app/ - chown -R 1000:1000 app chmod 700 app/data ''; @@ -76,6 +80,8 @@ buildInputs = with pkgs; [ nodejs purescript + awscli2 + duckdb spago purs-tidy esbuild diff --git a/src/Main.purs b/src/Main.purs @@ -120,7 +120,7 @@ indexHtml = <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>scrobbler.mtmn.name</title> + <title>scorpus</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Intel+One+Mono:wght@300;400;500;700&display=swap" rel="stylesheet">