Unverified Commit a0735900 authored by Thiago Kenji Okada's avatar Thiago Kenji Okada Committed by GitHub
Browse files

osu-lazer{,-bin}: 2024.906.2 -> 2024.1009.1, refactor (#347450)

parents 9baaaec6 e7217277
Loading
Loading
Loading
Loading
+100 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchurl,
  fetchzip,
  appimageTools,
  makeWrapper,
}:

let
  pname = "osu-lazer-bin";
  version = "2024.1009.1";

  src =
    {
      aarch64-darwin = fetchzip {
        url = "https://github.com/ppy/osu/releases/download/${version}/osu.app.Apple.Silicon.zip";
        hash = "sha256-fH7cuk879nS8FDIZ8p29pg2aXLJUT+j6Emb39Y6FXq4=";
        stripRoot = false;
      };
      x86_64-darwin = fetchzip {
        url = "https://github.com/ppy/osu/releases/download/${version}/osu.app.Intel.zip";
        hash = "sha256-kIH+zlNaqMVbr8FVDiLUh19gfrFUDPGBvMOrZqkMZAE=";
        stripRoot = false;
      };
      x86_64-linux = fetchurl {
        url = "https://github.com/ppy/osu/releases/download/${version}/osu.AppImage";
        hash = "sha256-G7+Mr0Zd/p8XUVU5aG7KywvLD2hz2N37kEbm5rlghEw=";
      };
    }
    .${stdenv.system} or (throw "osu-lazer-bin: ${stdenv.system} is unsupported.");

  meta = {
    description = "Rhythm is just a *click* away (AppImage version for score submission and multiplayer, and binary distribution for Darwin systems)";
    homepage = "https://osu.ppy.sh";
    license = with lib.licenses; [
      mit
      cc-by-nc-40
      unfreeRedistributable # osu-framework contains libbass.so in repository
    ];
    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
    maintainers = with lib.maintainers; [
      gepbird
      stepbrobd
    ];
    mainProgram = "osu!";
    platforms = [
      "aarch64-darwin"
      "x86_64-darwin"
      "x86_64-linux"
    ];
  };

  passthru.updateScript = ./update.sh;
in
if stdenv.hostPlatform.isDarwin then
  stdenv.mkDerivation {
    inherit
      pname
      version
      src
      meta
      passthru
      ;

    installPhase = ''
      runHook preInstall
      APP_DIR="$out/Applications"
      mkdir -p "$APP_DIR"
      cp -r . "$APP_DIR"
      runHook postInstall
    '';
  }
else
  appimageTools.wrapType2 {
    inherit
      pname
      version
      src
      meta
      passthru
      ;

    extraPkgs = pkgs: with pkgs; [ icu ];

    extraInstallCommands =
      let
        contents = appimageTools.extract { inherit pname version src; };
      in
      ''
        . ${makeWrapper}/nix-support/setup-hook
        mv -v $out/bin/${pname} $out/bin/osu!
        wrapProgram $out/bin/osu! \
          --set OSU_EXTERNAL_UPDATE_PROVIDER 1
        install -m 444 -D ${contents}/osu!.desktop -t $out/share/applications
        for i in 16 32 48 64 96 128 256 512 1024; do
          install -D ${contents}/osu!.png $out/share/icons/hicolor/''${i}x$i/apps/osu!.png
        done
      '';
  }
+3 −3
Original line number Diff line number Diff line
@@ -3,16 +3,16 @@
set -eo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"

bin_file="$(realpath ./bin.nix)"
bin_file="$(realpath ./package.nix)"

new_version="$(curl -s "https://api.github.com/repos/ppy/osu/releases?per_page=1" | jq -r '.[0].name')"
old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./bin.nix)"
old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./package.nix)"
if [[ "$new_version" == "$old_version" ]]; then
    echo "Already up to date."
    exit 0
fi

cd ../../..
cd ../../../..

echo "Updating osu-lazer-bin from $old_version to $new_version..."
sed -Ei.bak '/ *version = "/s/".+"/"'"$new_version"'"/' "$bin_file"
+5 −5
Original line number Diff line number Diff line
@@ -138,13 +138,13 @@
  (fetchNuGet { pname = "ppy.ManagedBass.Fx"; version = "2022.1216.0"; hash = "sha256-VfIbFhCDsCRZW5bCbt8MSmE2kAlcKxxx6vdFOus4he8="; })
  (fetchNuGet { pname = "ppy.ManagedBass.Mix"; version = "2022.1216.0"; hash = "sha256-qUEGJHoYfDvHrpuXdVaiSoV2iVVh9X0yEB41u96+q6A="; })
  (fetchNuGet { pname = "ppy.ManagedBass.Wasapi"; version = "2022.1216.0"; hash = "sha256-HzhypEVJA+6h3aBB95zNeGbmzEIRc5435Eh9nYpjVkA="; })
  (fetchNuGet { pname = "ppy.osu.Framework"; version = "2024.907.1"; hash = "sha256-h9wQPX7EP4b6+a7D/qU3qvSi05yp2rOj52nBmko1Y2o="; })
  (fetchNuGet { pname = "ppy.osu.Framework"; version = "2024.1009.0"; hash = "sha256-aLZcnVYyrLMeaoz/Jt49m5Po5i814MvtcGcVOVu18ls="; })
  (fetchNuGet { pname = "ppy.osu.Framework.NativeLibs"; version = "2024.809.1-nativelibs"; hash = "sha256-F7xd66bCEDgEjYgqmx21lYde+ebCsX/E2fuqWXH4xyU="; })
  (fetchNuGet { pname = "ppy.osu.Framework.SourceGeneration"; version = "2023.720.0"; hash = "sha256-XXV/qBJ9vEVF15fcOlDyoJ8j47azuSJaXHEgsn3fOwA="; })
  (fetchNuGet { pname = "ppy.osu.Game.Resources"; version = "2024.904.0"; hash = "sha256-x3et2Rnr90bdlFzR852Pt1EkW69/eQxlXciPNtFrN44="; })
  (fetchNuGet { pname = "ppy.osu.Game.Resources"; version = "2024.1003.0"; hash = "sha256-aeY9jfvyC+GFovHs0b5SSGZHMOO5tMMplZQWIRxo9DA="; })
  (fetchNuGet { pname = "ppy.osuTK.NS20"; version = "1.0.211"; hash = "sha256-Xu4uiYs1pqIXcBWeTBIc8OIqbLmH6MvaY6Dim4ZNikg="; })
  (fetchNuGet { pname = "ppy.SDL2-CS"; version = "1.0.741-alpha"; hash = "sha256-sdX+MoMlIPUyi4yEUVHtqxKWF/VK04e2VaUavmgBEJU="; })
  (fetchNuGet { pname = "ppy.SDL3-CS"; version = "2024.807.1"; hash = "sha256-9ppVYCkc43NIsfe9iKWlxd8elgECZqP+pRPT9ybxiAU="; })
  (fetchNuGet { pname = "ppy.SDL3-CS"; version = "2024.916.0"; hash = "sha256-ioILyAlyMiaVVGYxoLzNH78Mlp1Dfbv5xKjDWtwCP8M="; })
  (fetchNuGet { pname = "ppy.Veldrid"; version = "4.9.62-gca0239da6b"; hash = "sha256-mGlMQbp2/ewA7PzamEeMA1pbboC73iAIARhK4MPrwO4="; })
  (fetchNuGet { pname = "ppy.Veldrid.MetalBindings"; version = "4.9.62-gca0239da6b"; hash = "sha256-8jkbU2QV4HV8RU1vnSNtP8kNEhDWbTb3Dr2cl8w/T6A="; })
  (fetchNuGet { pname = "ppy.Veldrid.OpenGLBindings"; version = "4.9.62-gca0239da6b"; hash = "sha256-I81to2x5D4LlIJN80d5DbqcU0jPTVSPoc0tvL15YG6I="; })
@@ -237,7 +237,7 @@
  (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.0.1"; hash = "sha256-4VKXFgcGYCTWVXjAlniAVq0dO3o5s8KHylg2wg2/7k0="; })
  (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.3.0"; hash = "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw="; })
  (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; hash = "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg="; })
  (fetchNuGet { pname = "System.IO.Packaging"; version = "8.0.0"; hash = "sha256-kBOaG1Y3te708l81mIig7YKl6wPbEIAQ9J8mzHUdO/A="; })
  (fetchNuGet { pname = "System.IO.Packaging"; version = "8.0.1"; hash = "sha256-xf0BAfqQvITompBsvfpxiLts/6sRQEzdjNA3f/q/vY4="; })
  (fetchNuGet { pname = "System.IO.Pipelines"; version = "7.0.0"; hash = "sha256-W2181khfJUTxLqhuAVRhCa52xZ3+ePGOLIPwEN8WisY="; })
  (fetchNuGet { pname = "System.Linq"; version = "4.1.0"; hash = "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794="; })
  (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; hash = "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="; })
@@ -321,7 +321,7 @@
  (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.3.0"; hash = "sha256-QQ8KgU0lu4F5Unh+TbechO//zaAGZ4MfgvW72Cn1hzA="; })
  (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.3.0"; hash = "sha256-rWtdcmcuElNOSzCehflyKwHkDRpiOhJJs8CeQ0l1CCI="; })
  (fetchNuGet { pname = "TagLibSharp"; version = "2.3.0"; hash = "sha256-PD9bVZiPaeC8hNx2D+uDUf701cCaMi2IRi5oPTNN+/w="; })
  (fetchNuGet { pname = "Velopack"; version = "0.0.598-g933b2ab"; hash = "sha256-i1VR1tZ+rNl8F4EL8x5OAdnqfIRuHmviTp19uPFi14A="; })
  (fetchNuGet { pname = "Velopack"; version = "0.0.630-g9c52e40"; hash = "sha256-6dSuIl1HpqOaIPiCziQSgkDGiPf04q253ADYAo0rghA="; })
  (fetchNuGet { pname = "Vortice.D3DCompiler"; version = "2.4.2"; hash = "sha256-LXdgts8lKbTU67c1W001XRbq5nenzf8XcYCRxc75jR8="; })
  (fetchNuGet { pname = "Vortice.Direct3D11"; version = "2.4.2"; hash = "sha256-hU4qzLKhv4QxiP2c9s4IZUGgeQxsOjRhgurrlXXq/qM="; })
  (fetchNuGet { pname = "Vortice.DirectX"; version = "2.4.2"; hash = "sha256-LOIxdET0ynaJz70fakVwDYU0qm+1P0SfD1+I9P320oc="; })
+36 −30
Original line number Diff line number Diff line
{ lib
, stdenvNoCC
, buildDotnetModule
, fetchFromGitHub
, dotnetCorePackages
, makeDesktopItem
, copyDesktopItems
, makeWrapper
, ffmpeg
, alsa-lib
, SDL2
, lttng-ust
, numactl
, libglvnd
, xorg
, udev
{
  lib,
  stdenvNoCC,
  buildDotnetModule,
  fetchFromGitHub,
  dotnetCorePackages,
  makeDesktopItem,
  copyDesktopItems,
  makeWrapper,
  ffmpeg,
  alsa-lib,
  SDL2,
  lttng-ust,
  numactl,
  libglvnd,
  xorg,
  udev,
}:

buildDotnetModule rec {
  pname = "osu-lazer";
  version = "2024.906.2";
  version = "2024.1009.1";

  src = fetchFromGitHub {
    owner = "ppy";
    repo = "osu";
    rev = version;
    hash = "sha256-ykCO+q28IUJumt3nra1BUlwuXqLS1FYOqcDe2LPPGVY=";
    hash = "sha256-odWTLvx41miFgn4O/EDzwm2pfWKxj4B1ieSfNS0hrW8=";
  };

  projectFile = "osu.Desktop/osu.Desktop.csproj";
@@ -76,7 +77,8 @@ buildDotnetModule rec {
    runHook postFixup
  '';

  desktopItems = [(makeDesktopItem {
  desktopItems = [
    (makeDesktopItem {
      desktopName = "osu!";
      name = "osu";
      exec = "osu!";
@@ -84,19 +86,23 @@ buildDotnetModule rec {
      comment = "Rhythm is just a *click* away (no score submission or multiplayer, see osu-lazer-bin)";
      type = "Application";
      categories = [ "Game" ];
  })];
    })
  ];

  passthru.updateScript = ./update.sh;

  meta = with lib; {
  meta = {
    description = "Rhythm is just a *click* away (no score submission or multiplayer, see osu-lazer-bin)";
    homepage = "https://osu.ppy.sh";
    license = with licenses; [
    license = with lib.licenses; [
      mit
      cc-by-nc-40
      unfreeRedistributable # osu-framework contains libbass.so in repository
    ];
    maintainers = with maintainers; [ gepbird thiagokokada ];
    maintainers = with lib.maintainers; [
      gepbird
      thiagokokada
    ];
    platforms = [ "x86_64-linux" ];
    mainProgram = "osu!";
  };
Loading