aboutsummaryrefslogtreecommitdiff
path: root/modules/tlmp/slsk_package.nix
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2025-10-22 17:59:59 +0200
committerMax Audron <audron@cocaine.farm>2025-10-22 18:01:05 +0200
commitc42d7c4594de675adfc60aa090c359a4a172acbd (patch)
tree805206f02c9e2083d2d16c0e0495fd16bfca6646 /modules/tlmp/slsk_package.nix
parentadd slskd (diff)
deploy soulseek and fix tlmp VPN
Diffstat (limited to 'modules/tlmp/slsk_package.nix')
-rw-r--r--modules/tlmp/slsk_package.nix88
1 files changed, 88 insertions, 0 deletions
diff --git a/modules/tlmp/slsk_package.nix b/modules/tlmp/slsk_package.nix
new file mode 100644
index 0000000..5ddfc6c
--- /dev/null
+++ b/modules/tlmp/slsk_package.nix
@@ -0,0 +1,88 @@
+{
+ lib,
+ buildDotnetModule,
+ buildPackages,
+ dotnetCorePackages,
+ fetchFromGitHub,
+ fetchNpmDeps,
+ mono,
+ nodejs_20,
+ slskd,
+ testers,
+ nix-update-script,
+}:
+
+let
+ nodejs = nodejs_20;
+ # https://github.com/NixOS/nixpkgs/blob/d88947e91716390bdbefccdf16f7bebcc41436eb/pkgs/build-support/node/build-npm-package/default.nix#L62
+ npmHooks = buildPackages.npmHooks.override { inherit nodejs; };
+in
+buildDotnetModule rec {
+ pname = "slskd";
+ version = "2025-10-21";
+
+ src = fetchFromGitHub {
+ owner = "slskd";
+ repo = "slskd";
+ rev = "0a15a71028c2a12795023550f28d416dd050763d";
+ hash = "sha256-vq78sT9wPGaTggZi+8O1ATBWpPTiSSki4H8u9M/xH3w=";
+ };
+
+ nativeBuildInputs = [
+ nodejs
+ npmHooks.npmConfigHook
+ ];
+
+ runtimeDeps = [ mono ];
+
+ npmRoot = "src/web";
+ npmDeps = fetchNpmDeps {
+ name = "${pname}-${version}-npm-deps";
+ inherit src;
+ sourceRoot = "${src.name}/${npmRoot}";
+ hash = "sha256-BqEOoqLpFO2Usbi3GgOmZtRxRqFvplAqtHMsWhcDfHI=";
+ };
+
+ projectFile = "slskd.sln";
+ nugetDeps = ./deps.json;
+
+ dotnet-sdk = dotnetCorePackages.sdk_8_0;
+ dotnet-runtime = dotnetCorePackages.aspnetcore_8_0;
+
+ testProjectFile = "tests/slskd.Tests.Unit/slskd.Tests.Unit.csproj";
+ doCheck = true;
+ disabledTests = [
+ # Random failures on OfBorg, cause unknown
+ "slskd.Tests.Unit.Transfers.Uploads.UploadGovernorTests+ReturnBytes.Returns_Bytes_To_Bucket"
+ ];
+
+ postBuild = ''
+ pushd "$npmRoot"
+ npm run build --legacy-peer-deps
+ popd
+ '';
+
+ postInstall = ''
+ rm -r $out/lib/slskd/wwwroot
+ mv "$npmRoot"/build $out/lib/slskd/wwwroot
+ '';
+
+ passthru = {
+ tests.version = testers.testVersion { package = slskd; };
+ updateScript = nix-update-script { };
+ };
+
+ meta = {
+ description = "Modern client-server application for the Soulseek file sharing network";
+ homepage = "https://github.com/slskd/slskd";
+ changelog = "https://github.com/slskd/slskd/releases/tag/${version}";
+ license = lib.licenses.agpl3Plus;
+ maintainers = with lib.maintainers; [
+ ppom
+ melvyn2
+ getchoo
+ ];
+ mainProgram = "slskd";
+ platforms = lib.platforms.linux;
+ };
+}