From 11da2972533af9c1d6542ae3905bfd662dbf5921 Mon Sep 17 00:00:00 2001 From: Vinzenz Schroeter Date: Sat, 27 Sep 2025 21:55:59 +0200 Subject: [PATCH] wip backend package --- flake.nix | 60 +++++-- shell.nix | 35 ---- tanks-backend/TanksServer/TanksServer.csproj | 3 +- tanks-backend/deps.json | 176 +++++++++++++++++-- tanks-backend/gen-deps.sh | 8 +- 5 files changed, 216 insertions(+), 66 deletions(-) delete mode 100644 shell.nix mode change 100644 => 100755 tanks-backend/gen-deps.sh diff --git a/flake.nix b/flake.nix index e433a00..caeeff0 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Dev shell flake for servicepoint-tanks"; + description = "flake for servicepoint-tanks"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-25.05"; @@ -13,13 +13,13 @@ "aarch64-linux" ]; forAllSystems = - f: + fn: nixpkgs.lib.genAttrs supported-systems ( system: - f rec { - pkgs = nixpkgs.legacyPackages.${system}; - lib = nixpkgs.lib; + fn { inherit system; + inherit (nixpkgs) lib; + pkgs = nixpkgs.legacyPackages.${system}; selfPkgs = self.packages.${system}; } ); @@ -35,6 +35,10 @@ let frontend-set = { inputsFrom = [ selfPkgs.servicepoint-tanks-frontend ]; + packages = with pkgs; [ + typescript + nodejs + ]; }; backend-set = { inputsFrom = [ selfPkgs.servicepoint-tanks-backend ]; @@ -52,7 +56,12 @@ ); packages = forAllSystems ( - { pkgs, lib, ... }: + { + pkgs, + lib, + selfPkgs, + ... + }: { servicepoint-tanks-frontend = pkgs.buildNpmPackage (finalAttrs: { pname = "tank-frontend"; @@ -66,6 +75,36 @@ ''; }); + servicepoint-binding-csharp = pkgs.buildDotnetModule { + pname = "servicepoint-binding-csharp"; + version = "0.0.0"; + + src = ./tanks-backend/servicepoint-binding-csharp; + projectFile = "ServicePoint/ServicePoint.csproj"; + nugetDeps = ./tanks-backend/deps.json; + + packNupkg = true; + + nativeBuildInputs = with pkgs; [ + pkg-config + xe + xz + gnumake + iconv + + (pkgs.symlinkJoin { + name = "rust-toolchain"; + paths = with pkgs; [ + rustc + cargo + rustPlatform.rustcSrc + rustfmt + clippy + ]; + }) + ]; + }; + servicepoint-tanks-backend = pkgs.buildDotnetModule { pname = "servicepoint-tanks-backend"; version = "0.0.0"; @@ -74,14 +113,15 @@ dotnet-runtime = pkgs.dotnetCorePackages.runtime_8_0; src = ./tanks-backend; - projectFile = "TanksServer.sln"; + projectFile = "TanksServer/TanksServer.csproj"; nugetDeps = ./tanks-backend/deps.json; + selfContainedBuild = true; + buildInputs = [ selfPkgs.servicepoint-binding-csharp ]; + nativeBuildInputs = with pkgs; [ - pkg-config - xe - xz + # todo needed? gnumake iconv ]; diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 413986a..0000000 --- a/shell.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - pkgs ? import { }, - ... -}: -let - rust-toolchain = pkgs.symlinkJoin { - name = "rust-toolchain"; - paths = with pkgs; [ - rustc - cargo - rustPlatform.rustcSrc - rustfmt - clippy - ]; - }; -in -pkgs.mkShell { - nativeBuildInputs = with pkgs.buildPackages; [ - rust-toolchain - - pkg-config - xe - xz - cargo-tarpaulin - gnumake - iconv - - typescript - nodejs - - dotnet-sdk_8 - ]; - - RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; -} diff --git a/tanks-backend/TanksServer/TanksServer.csproj b/tanks-backend/TanksServer/TanksServer.csproj index 480806b..de285be 100644 --- a/tanks-backend/TanksServer/TanksServer.csproj +++ b/tanks-backend/TanksServer/TanksServer.csproj @@ -30,7 +30,8 @@ - + + diff --git a/tanks-backend/deps.json b/tanks-backend/deps.json index 4a8ff5d..e0d7fc9 100644 --- a/tanks-backend/deps.json +++ b/tanks-backend/deps.json @@ -24,12 +24,7 @@ "version": "17.8.0", "hash": "sha256-cv/wAXfTNS+RWEsHWNKqRDHC7LOQSSdFJ1a9cZuSfJw=" }, - { - "pname": "Microsoft.DotNet.ILCompiler", - "version": "8.0.20", - "hash": "sha256-972D4TBkIWS1RY3rrB+znz7KuUGt/dDU16UWjZBJ9JU=" - }, - { +{ "pname": "Microsoft.Extensions.Configuration.Abstractions", "version": "8.0.0", "hash": "sha256-4eBpDkf7MJozTZnOwQvwcfgRKQGcNXe0K/kF+h5Rl8o=" @@ -59,12 +54,7 @@ "version": "8.0.0", "hash": "sha256-FU8qj3DR8bDdc1c+WeGZx/PCZeqqndweZM9epcpXjSo=" }, - { - "pname": "Microsoft.NET.ILLink.Tasks", - "version": "8.0.20", - "hash": "sha256-nNI9Dc5fLi8VOBLN/tdpVtHVyaKYkwuga+Ew3NcBw6s=" - }, - { +{ "pname": "Microsoft.NET.Test.Sdk", "version": "17.8.0", "hash": "sha256-uz7QvW+NsVRsp8FR1wjnGEOkUaPX4JyieywvCN6g2+s=" @@ -120,6 +110,91 @@ "hash": "sha256-ElqfN4CcKxT3hP2qvxxObb4mnBlYG89IMxO0Sm5oZ2g=" }, { + "pname": "runtime.any.System.Collections", + "version": "4.3.0", + "hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8=" +}, +{ + "pname": "runtime.any.System.Diagnostics.Tools", + "version": "4.3.0", + "hash": "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I=" +}, +{ + "pname": "runtime.any.System.Diagnostics.Tracing", + "version": "4.3.0", + "hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI=" +}, +{ + "pname": "runtime.any.System.Globalization", + "version": "4.3.0", + "hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU=" +}, +{ + "pname": "runtime.any.System.Globalization.Calendars", + "version": "4.3.0", + "hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4=" +}, +{ + "pname": "runtime.any.System.IO", + "version": "4.3.0", + "hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE=" +}, +{ + "pname": "runtime.any.System.Reflection", + "version": "4.3.0", + "hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk=" +}, +{ + "pname": "runtime.any.System.Reflection.Extensions", + "version": "4.3.0", + "hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8=" +}, +{ + "pname": "runtime.any.System.Reflection.Primitives", + "version": "4.3.0", + "hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ=" +}, +{ + "pname": "runtime.any.System.Resources.ResourceManager", + "version": "4.3.0", + "hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4=" +}, +{ + "pname": "runtime.any.System.Runtime", + "version": "4.3.0", + "hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM=" +}, +{ + "pname": "runtime.any.System.Runtime.Handles", + "version": "4.3.0", + "hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4=" +}, +{ + "pname": "runtime.any.System.Runtime.InteropServices", + "version": "4.3.0", + "hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA=" +}, +{ + "pname": "runtime.any.System.Text.Encoding", + "version": "4.3.0", + "hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs=" +}, +{ + "pname": "runtime.any.System.Text.Encoding.Extensions", + "version": "4.3.0", + "hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM=" +}, +{ + "pname": "runtime.any.System.Threading.Tasks", + "version": "4.3.0", + "hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4=" +}, +{ + "pname": "runtime.any.System.Threading.Timer", + "version": "4.3.0", + "hash": "sha256-BgHxXCIbicVZtpgMimSXixhFC3V+p5ODqeljDjO8hCs=" +}, +{ "pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", "version": "4.3.0", "hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps=" @@ -134,12 +209,7 @@ "version": "4.3.0", "hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA=" }, - { - "pname": "runtime.linux-x64.Microsoft.DotNet.ILCompiler", - "version": "8.0.20", - "hash": "sha256-cxVwgQnkp9Ynfv4Ly2EKEHGdzK3czRPi4JIYycFd2T4=" - }, - { +{ "pname": "runtime.native.System", "version": "4.3.0", "hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y=" @@ -205,6 +275,46 @@ "hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw=" }, { + "pname": "runtime.unix.Microsoft.Win32.Primitives", + "version": "4.3.0", + "hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg=" +}, +{ + "pname": "runtime.unix.System.Console", + "version": "4.3.0", + "hash": "sha256-AHkdKShTRHttqfMjmi+lPpTuCrM5vd/WRy6Kbtie190=" +}, +{ + "pname": "runtime.unix.System.Diagnostics.Debug", + "version": "4.3.0", + "hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI=" +}, +{ + "pname": "runtime.unix.System.IO.FileSystem", + "version": "4.3.0", + "hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I=" +}, +{ + "pname": "runtime.unix.System.Net.Primitives", + "version": "4.3.0", + "hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0=" +}, +{ + "pname": "runtime.unix.System.Net.Sockets", + "version": "4.3.0", + "hash": "sha256-IvgOeA2JuBjKl5yAVGjPYMPDzs9phb3KANs95H9v1w4=" +}, +{ + "pname": "runtime.unix.System.Private.Uri", + "version": "4.3.0", + "hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs=" +}, +{ + "pname": "runtime.unix.System.Runtime.Extensions", + "version": "4.3.0", + "hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4=" +}, +{ "pname": "SixLabors.ImageSharp", "version": "3.1.5", "hash": "sha256-3UehX9T+I81nfgv2dTHlpoPgYzXFk7kHr1mmlQOCBfw=" @@ -315,6 +425,11 @@ "hash": "sha256-UoBB7WPDp2Bne/fwxKF0nE8grJ6FzTMXdT/jfsphj8Q=" }, { + "pname": "System.Net.NameResolution", + "version": "4.3.0", + "hash": "sha256-eGZwCBExWsnirWBHyp2sSSSXp6g7I6v53qNmwPgtJ5c=" +}, +{ "pname": "System.Net.Primitives", "version": "4.3.0", "hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE=" @@ -330,6 +445,11 @@ "hash": "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q=" }, { + "pname": "System.Private.Uri", + "version": "4.3.0", + "hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM=" +}, +{ "pname": "System.Reflection", "version": "4.3.0", "hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY=" @@ -405,6 +525,11 @@ "hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc=" }, { + "pname": "System.Security.Claims", + "version": "4.3.0", + "hash": "sha256-Fua/rDwAqq4UByRVomAxMPmDBGd5eImRqHVQIeSxbks=" +}, +{ "pname": "System.Security.Cryptography.Algorithms", "version": "4.3.0", "hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8=" @@ -440,6 +565,16 @@ "hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0=" }, { + "pname": "System.Security.Principal", + "version": "4.3.0", + "hash": "sha256-rjudVUHdo8pNJg2EVEn0XxxwNo5h2EaYo+QboPkXlYk=" +}, +{ + "pname": "System.Security.Principal.Windows", + "version": "4.3.0", + "hash": "sha256-mbdLVUcEwe78p3ZnB6jYsizNEqxMaCAWI3tEQNhRQAE=" +}, +{ "pname": "System.Text.Encoding", "version": "4.3.0", "hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg=" @@ -475,6 +610,11 @@ "hash": "sha256-X2hQ5j+fxcmnm88Le/kSavjiGOmkcumBGTZKBLvorPc=" }, { + "pname": "System.Threading.ThreadPool", + "version": "4.3.0", + "hash": "sha256-wW0QdvssRoaOfQLazTGSnwYTurE4R8FxDx70pYkL+gg=" +}, +{ "pname": "System.Threading.Timer", "version": "4.3.0", "hash": "sha256-pmhslmhQhP32TWbBzoITLZ4BoORBqYk25OWbru04p9s=" diff --git a/tanks-backend/gen-deps.sh b/tanks-backend/gen-deps.sh old mode 100644 new mode 100755 index b98072d..53e8dca --- a/tanks-backend/gen-deps.sh +++ b/tanks-backend/gen-deps.sh @@ -1,6 +1,10 @@ #!/usr/bin/env bash set -euxo pipefail -dotnet restore --packages out +# first time +# dotnet restore --packages out +# nuget-to-json out > deps.json -nuget-to-json out > deps.json +# update +nix build ".?submodules=1#servicepoint-tanks-backend.fetch-deps" +./result deps.json