diff --git a/pkgs/by-name/ce/celeste64/deps.nix b/pkgs/by-name/ce/celeste64/deps.nix new file mode 100644 index 000000000000..f4e3f4514b9f --- /dev/null +++ b/pkgs/by-name/ce/celeste64/deps.nix @@ -0,0 +1,11 @@ +{ fetchNuGet }: [ + (fetchNuGet { pname = "FosterFramework"; version = "0.1.15-alpha"; sha256 = "0pzsdfbsfx28xfqljcwy100xhbs6wyx0z1d5qxgmv3l60di9xkll"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "8.0.1"; sha256 = "1gjz379y61ag9whi78qxx09bwkwcznkx2mzypgycibxk61g11da1"; }) + (fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "8.0.1"; sha256 = "1drbgqdcvbpisjn8mqfgba1pwb6yri80qc4mfvyczqwrcsj5k2ja"; }) + (fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "8.0.1"; sha256 = "1g5b30f4l8a1zjjr3b8pk9mcqxkxqwa86362f84646xaj4iw3a4d"; }) + (fetchNuGet { pname = "SharpGLTF.Core"; version = "1.0.0-alpha0031"; sha256 = "0ln78mkhbcxqvwnf944hbgg24vbsva2jpih6q3x82d3h7rl1pkh6"; }) + (fetchNuGet { pname = "SharpGLTF.Runtime"; version = "1.0.0-alpha0031"; sha256 = "0lvb3asi3v0n718qf9y367km7qpkb9wci38y880nqvifpzllw0jg"; }) + (fetchNuGet { pname = "Sledge.Formats"; version = "1.2.2"; sha256 = "1y0l66m9rym0p1y4ifjlmg3j9lsmhkvbh38frh40rpvf1axn2dyh"; }) + (fetchNuGet { pname = "Sledge.Formats.Map"; version = "1.1.5"; sha256 = "1bww60hv9xcyxpvkzz5q3ybafdxxkw6knhv97phvpkw84pd0jil6"; }) + (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; }) +] diff --git a/pkgs/by-name/ce/celeste64/package.nix b/pkgs/by-name/ce/celeste64/package.nix new file mode 100644 index 000000000000..7380c90f7b63 --- /dev/null +++ b/pkgs/by-name/ce/celeste64/package.nix @@ -0,0 +1,89 @@ +{ + lib, + buildDotnetModule, + dotnetCorePackages, + fetchFromGitHub, + makeDesktopItem, + copyDesktopItems, + SDL2, + libGL, + mesa, + fmodex, + systemd, + libpulseaudio, + libselinux, + wayland, + libdecor, + xorg, + libxkbcommon, + libdrm, + withSELinux ? false, +}: +buildDotnetModule rec { + pname = "celeste64"; + version = "0-unstable-2024-02-02"; + + src = fetchFromGitHub { + repo = "Celeste64"; + owner = "ExOK"; + rev = "e7130d376deed9ddf17a6631cf06d89d19a702c6"; + hash = "sha256-KCCgjplAk+Nhjxk/p6Omt4GxN36kAgvg/OPbed2Ey+4="; + }; + projectFile = "Celeste64.csproj"; + dotnet-sdk = dotnetCorePackages.sdk_8_0; + dotnet-runtime = dotnetCorePackages.runtime_8_0; + nugetDeps = ./deps.nix; + strictDeps = true; + executables = [ "Celeste64" ]; + nativeBuildInputs = [ copyDesktopItems ]; + runtimeDeps = + [ + libdecor + libGL + SDL2 + fmodex + systemd + libpulseaudio + wayland + libdrm + libxkbcommon + xorg.libX11 + xorg.libXfixes + xorg.libXext + xorg.libXcursor + xorg.libXi + xorg.libXrandr + ] + ++ lib.optionals withSELinux [ libselinux ]; + + postInstall = '' + export ICON_DIR=$out/share/icons/hicolor/256x256/apps + mkdir -p $ICON_DIR + + cp -r $src/Content $out/lib/$pname/ + cp $src/Content/Models/Sources/logo1.png $ICON_DIR/Celeste64.png + ''; + + + desktopItems = [ + (makeDesktopItem { + name = "Celeste64"; + exec = "Celeste64"; + comment = meta.description; + desktopName = "Celeste64"; + genericName = "Celeste64"; + icon = "Celeste64"; + categories = [ "Game" ]; + }) + ]; + + meta = { + license = with lib.licenses; [ unfree mit ]; + platforms = [ "x86_64-linux" ]; + maintainers = with lib.maintainers; [ lychee ]; + mainProgram = "Celeste64"; + homepage = "https://github.com/ExOK/Celeste64"; + description = "Celeste 64: Fragments of the Mountain"; + downloadPage = "https://maddymakesgamesinc.itch.io/celeste64"; + }; +}