commit 31c8243c27a5c3093a8fb1192b50b3ae011a740d
parent a220a6b32c162d3bfcc954ca11445bf52aadf145
Author: mtmn <miro@haravara.org>
Date: Sat, 11 Apr 2026 07:07:51 +0200
chore: fiddling with builds, naming
Diffstat:
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">