Unverified Commit d43b3890 authored by Gaétan Lepage's avatar Gaétan Lepage Committed by GitHub
Browse files

vanillatd, vanillara: cleanup (#372053)

parent 3a91516f
Loading
Loading
Loading
Loading
+64 −145
Original line number Diff line number Diff line
@@ -3,20 +3,27 @@
  stdenv,
  stdenvNoCC,
  fetchFromGitHub,
  fetchurl,
  cmake,
  pkg-config,
  git,
  libcxx,

  # buildInputs
  SDL2,
  libcxx,
  openal,

  # nativeBuildInputs
  cmake,
  git,
  pkg-config,
  imagemagick,
  libicns,
  copyDesktopItems,

  makeDesktopItem,

  # passthru
  callPackage,
  symlinkJoin,
  unar,
  rsync,
  makeDesktopItem,
  copyDesktopItems,

  appName,
  CMAKE_BUILD_TYPE ? "RelWithDebInfo", # "Choose the type of build, recommended options are: Debug Release RelWithDebInfo"
}:
@@ -39,19 +46,20 @@ stdenv.mkDerivation (finalAttrs: {
  NIX_CFLAGS_COMPILE = "-Wno-error=format-security";

  buildInputs = [
    libcxx
    SDL2
    libcxx
    openal
  ];

  nativeBuildInputs =
    [
      cmake
      pkg-config
      git
      pkg-config
    ]
    ++ lib.optionals stdenv.hostPlatform.isDarwin [
      libicns
      imagemagick
      libicns
    ]
    ++ lib.optionals stdenv.hostPlatform.isLinux [
      copyDesktopItems
@@ -112,118 +120,13 @@ stdenv.mkDerivation (finalAttrs: {
    })
  ];

  meta = {
    description =
      {
        "vanillatd" =
          "Vanilla Conquer is a modern, multi-platform source port of Command & Conquer: Tiberian Dawn";
        "vanillara" =
          "Vanilla Conquer is a modern, multi-platform source port of Command & Conquer: Red Alert";
      }
      ."${appName}";
    homepage = "https://github.com/TheAssemblyArmada/Vanilla-Conquer";
    license = with lib.licenses; [ gpl3Only ];
    sourceProvenance = with lib.sourceTypes; [ fromSource ];
    maintainers = with lib.maintainers; [ xiaoxiangmoe ];
    platforms = with lib.platforms; darwin ++ linux;
  };
  passthru = rec {
    packages =
      builtins.mapAttrs
        (
          name: buildPhase:
          stdenvNoCC.mkDerivation {
            inherit name buildPhase;
            phases = [ "buildPhase" ];
            nativeBuildInputs = [ unar ];
            meta = {
              sourceProvenance = with lib.sourceTypes; [
                binaryBytecode
              ];
              license = with lib.licenses; [
                unfree
              ];
            };
          }
        )
        (
          if appName == "vanillatd" then
            let
              CCDEMO1_ZIP = fetchurl {
                url = "https://archive.org/download/CommandConquerDemo/cc1demo1.zip";
                hash = "sha256-KdM4SctFCocmJCbMWbJbql4DO5TC40leyU+BPzvAn4c=";
              };
              CCDEMO2_ZIP = fetchurl {
                url = "https://archive.org/download/CommandConquerDemo/cc1demo2.zip";
                hash = "sha256-pCgEuE5AFcJur3qUOTmP3GCb/Wp7p7JyVn8Yeq17PEg=";
              };
              demo = ''
                unar -no-directory ${CCDEMO1_ZIP} DEMO.MIX DEMOL.MIX SOUNDS.MIX SPEECH.MIX
                unar -no-directory ${CCDEMO2_ZIP} DEMOM.MIX
                mkdir -p $out
                mv DEMO.MIX $out/demo.mix
                mv DEMOL.MIX $out/demol.mix
                mv SOUNDS.MIX $out/sounds.mix
                mv SPEECH.MIX $out/speech.mix
                mv DEMOM.MIX $out/demom.mix
              '';
            in
            # see https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaTD
            {
              inherit demo;
            }
          else if appName == "vanillara" then
  passthru =
    let
              RA95DEMO_ZIP = fetchurl {
                url = "https://archive.org/download/CommandConquerRedAlert_1020/ra95demo.zip";
                hash = "sha256-jEi9tTUj6k01OnkU2SNM5OPm9YMu60eztrAFhT6HSNI=";
              };
              demo = ''
                unar -no-directory ${RA95DEMO_ZIP} ra95demo/INSTALL/MAIN.MIX ra95demo/INSTALL/REDALERT.MIX
                install -D ra95demo/INSTALL/REDALERT.MIX $out/redalert.mix
                install -D ra95demo/INSTALL/MAIN.MIX $out/main.mix
              '';
              REDALERT_ALLIED_ISO = fetchurl {
                url = "https://archive.org/download/cnc-red-alert/redalert_allied.iso";
                hash = "sha256-Npx6hSTJetFlcb/Fi3UQEGuP0iLk9LIrRmAI7WgEtdw=";
              };
              REDALERT_SOVIETS_ISO = fetchurl {
                url = "https://archive.org/download/cnc-red-alert/redalert_soviets.iso";
                hash = "sha256-aJGr+w1BaGaLwX/pU0lMmu6Cgn9pZ2D/aVafBdtds2Q=";
              };
              retail-allied = ''
                unar -output-directory allied -no-directory ${REDALERT_ALLIED_ISO} MAIN.MIX INSTALL/REDALERT.MIX
                mkdir -p $out/allied/
                mv allied/INSTALL/REDALERT.MIX $out/redalert.mix
                mv allied/MAIN.MIX $out/allied/main.mix
              '';
              retail-soviet = ''
                unar -output-directory soviet -no-directory ${REDALERT_SOVIETS_ISO} MAIN.MIX INSTALL/REDALERT.MIX
                mkdir -p $out/soviet/
                mv soviet/INSTALL/REDALERT.MIX $out/redalert.mix
                mv soviet/MAIN.MIX $out/soviet/main.mix
              '';
              retail = ''
                unar -output-directory allied -no-directory ${REDALERT_ALLIED_ISO} MAIN.MIX INSTALL/REDALERT.MIX
                unar -output-directory soviet -no-directory ${REDALERT_SOVIETS_ISO} MAIN.MIX
                mkdir -p $out/allied/ $out/soviet/
                mv allied/INSTALL/REDALERT.MIX $out/redalert.mix
                mv allied/MAIN.MIX $out/allied/main.mix
                mv soviet/MAIN.MIX $out/soviet/main.mix
              '';
      packages = callPackage ./passthru-packages.nix { inherit appName; };
    in
            # see https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaRA
    {
              inherit
                demo
                retail-allied
                retail-soviet
                retail
                ;
            }
          else
            { }
        );
      inherit packages;

      withPackages =
        cb:
        let
@@ -261,4 +164,20 @@ stdenv.mkDerivation (finalAttrs: {
            '';
        };
    };

  meta = {
    description =
      {
        "vanillatd" =
          "Vanilla Conquer is a modern, multi-platform source port of Command & Conquer: Tiberian Dawn";
        "vanillara" =
          "Vanilla Conquer is a modern, multi-platform source port of Command & Conquer: Red Alert";
      }
      ."${appName}";
    homepage = "https://github.com/TheAssemblyArmada/Vanilla-Conquer";
    license = with lib.licenses; [ gpl3Only ];
    sourceProvenance = with lib.sourceTypes; [ fromSource ];
    maintainers = with lib.maintainers; [ xiaoxiangmoe ];
    platforms = with lib.platforms; darwin ++ linux;
  };
})
+103 −0
Original line number Diff line number Diff line
{
  lib,
  stdenvNoCC,
  unar,
  appName,
  fetchurl,
  ...
}:
builtins.mapAttrs
  (
    name: buildPhase:
    stdenvNoCC.mkDerivation {
      inherit name buildPhase;
      phases = [ "buildPhase" ];
      nativeBuildInputs = [ unar ];
      meta = {
        sourceProvenance = with lib.sourceTypes; [
          binaryBytecode
        ];
        license = with lib.licenses; [
          unfree
        ];
      };
    }
  )
  (
    if appName == "vanillatd" then
      let
        CCDEMO1_ZIP = fetchurl {
          url = "https://archive.org/download/CommandConquerDemo/cc1demo1.zip";
          hash = "sha256-KdM4SctFCocmJCbMWbJbql4DO5TC40leyU+BPzvAn4c=";
        };
        CCDEMO2_ZIP = fetchurl {
          url = "https://archive.org/download/CommandConquerDemo/cc1demo2.zip";
          hash = "sha256-pCgEuE5AFcJur3qUOTmP3GCb/Wp7p7JyVn8Yeq17PEg=";
        };
        demo = ''
          unar -no-directory ${CCDEMO1_ZIP} DEMO.MIX DEMOL.MIX SOUNDS.MIX SPEECH.MIX
          unar -no-directory ${CCDEMO2_ZIP} DEMOM.MIX
          mkdir -p $out
          mv DEMO.MIX $out/demo.mix
          mv DEMOL.MIX $out/demol.mix
          mv SOUNDS.MIX $out/sounds.mix
          mv SPEECH.MIX $out/speech.mix
          mv DEMOM.MIX $out/demom.mix
        '';
      in
      # see https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaTD
      {
        inherit demo;
      }
    else if appName == "vanillara" then
      let
        RA95DEMO_ZIP = fetchurl {
          url = "https://archive.org/download/CommandConquerRedAlert_1020/ra95demo.zip";
          hash = "sha256-jEi9tTUj6k01OnkU2SNM5OPm9YMu60eztrAFhT6HSNI=";
        };
        demo = ''
          unar -no-directory ${RA95DEMO_ZIP} ra95demo/INSTALL/MAIN.MIX ra95demo/INSTALL/REDALERT.MIX
          install -D ra95demo/INSTALL/REDALERT.MIX $out/redalert.mix
          install -D ra95demo/INSTALL/MAIN.MIX $out/main.mix
        '';
        REDALERT_ALLIED_ISO = fetchurl {
          url = "https://archive.org/download/cnc-red-alert/redalert_allied.iso";
          hash = "sha256-Npx6hSTJetFlcb/Fi3UQEGuP0iLk9LIrRmAI7WgEtdw=";
        };
        REDALERT_SOVIETS_ISO = fetchurl {
          url = "https://archive.org/download/cnc-red-alert/redalert_soviets.iso";
          hash = "sha256-aJGr+w1BaGaLwX/pU0lMmu6Cgn9pZ2D/aVafBdtds2Q=";
        };
        retail-allied = ''
          unar -output-directory allied -no-directory ${REDALERT_ALLIED_ISO} MAIN.MIX INSTALL/REDALERT.MIX
          mkdir -p $out/allied/
          mv allied/INSTALL/REDALERT.MIX $out/redalert.mix
          mv allied/MAIN.MIX $out/allied/main.mix
        '';
        retail-soviet = ''
          unar -output-directory soviet -no-directory ${REDALERT_SOVIETS_ISO} MAIN.MIX INSTALL/REDALERT.MIX
          mkdir -p $out/soviet/
          mv soviet/INSTALL/REDALERT.MIX $out/redalert.mix
          mv soviet/MAIN.MIX $out/soviet/main.mix
        '';
        retail = ''
          unar -output-directory allied -no-directory ${REDALERT_ALLIED_ISO} MAIN.MIX INSTALL/REDALERT.MIX
          unar -output-directory soviet -no-directory ${REDALERT_SOVIETS_ISO} MAIN.MIX
          mkdir -p $out/allied/ $out/soviet/
          mv allied/INSTALL/REDALERT.MIX $out/redalert.mix
          mv allied/MAIN.MIX $out/allied/main.mix
          mv soviet/MAIN.MIX $out/soviet/main.mix
        '';
      in
      # see https://github.com/TheAssemblyArmada/Vanilla-Conquer/wiki/Installing-VanillaRA
      {
        inherit
          demo
          retail-allied
          retail-soviet
          retail
          ;
      }
    else
      { }
  )