Change:
Project description A clean, intuitive Arma 3 + DayZ SA Launcher for GNU/Linux and MacOS. Metadata homepage URL: source URL: license: mit (does require the steamworks SDK which has its own license.) platforms: linux, darwin Add a :+1: [reaction] to [issues you find important]. [reaction]: [issues you find important]:
I was trying to package this myself, but the way cmake is set up has it trying to download dependencies with git, and modifying it to build properly with nix is over my head.
With a lot of trial and error, I got this functioning . No idea if my code is up to the standards for proper integration into nixpkgs, I'm not 100% sure if everything I have in there is even required, might have missed some failed attempts at fixes that aren't actually doing anything. Also haven't tested the version of the launcher for DayZ.
Looks great to me! Run it through to pretty it up and I think it'd fit in just fine in nixpkgs. I am getting a build error with the DayZ launcher, though: This might inspire me to go back to arma 3. Longtime OFP/arma fan!
What would I put for the license if the launcher itself is using MIT but the steam works sdk has its own custom license (not sure if it is considered unfree, either)
You can just include multiple licenses, though I'm not entirely sure what the Steamworks SDK license is, or if the license is in nixpkgs in the first place. I'd just mark it unfree if you don't know.

Discussion:
githubId = 252042; keys = [ { fingerprint = "85F3 72DF 4AF3 EF13 ED34  72A3 0AAF 2901 E804 0715"; } ]; }; <ins> DrymarchonShaun = { name = "Shaun"; email = "drymarchonshaun@protonmail.com"; github = "DrymarchonShaun"; githubId = 40149778; }; </ins> dsalaza4 = { email = "podany270895@gmail.com"; github = "dsalaza4";

<ins> diff --git a/src/arma3-unix-launcher/mainwindow.cpp b/src/arma3-unix-launcher/mainwindow.cpp index 66b73cc..f89f66b 100644 --- a/src/arma3-unix-launcher/mainwindow.cpp +++ b/src/arma3-unix-launcher/mainwindow.cpp @@ -56,6 +56,3 @@ MainWindow::MainWindow(std::unique_ptr<ARMA3::Client> arma3_client, std::filesys { -    if (use_steam_integration) -        steam_integration = std::make_unique<Steam::SteamIntegration>(ARMA3::Definitions::app_id); -    else -        steam_integration = std::make_unique<Steam::IntegrationStub>(ARMA3::Definitions::app_id); +    steam_integration = std::make_unique<Steam::IntegrationStub>(ARMA3::Definitions::app_id); diff --git a/src/dayz-linux-launcher/mainwindow.cpp b/src/dayz-linux-launcher/mainwindow.cpp index d9223db..5773593 100644 --- a/src/dayz-linux-launcher/mainwindow.cpp +++ b/src/dayz-linux-launcher/mainwindow.cpp @@ -56,6 +56,3 @@ MainWindow::MainWindow(std::unique_ptr<DayZ::Client> arma3_client, std::filesyst { -    if (use_steam_integration) -        steam_integration = std::make_unique<Steam::SteamIntegration>(DayZ::Definitions::app_id); -    else -        steam_integration = std::make_unique<Steam::IntegrationStub>(DayZ::Definitions::app_id); +    steam_integration = std::make_unique<Steam::IntegrationStub>(DayZ::Definitions::app_id); </ins>

<ins> diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake index 2eb6ec5..9f1d67e 100644 --- a/cmake/external_dependencies.cmake +++ b/cmake/external_dependencies.cmake @@ -4,7 +4,7 @@ include(FetchContent) function(setup_library SOURCE_TO_TEST) set(boolArgs HEADER_ONLY) -    set(oneValueArgs NAME CXX_FLAGS GIT_REPOSITORY GIT_TAG TEST_DEFINITIONS TEST_LINK_LIBS) +    set(oneValueArgs NAME CXX_FLAGS URL GIT_TAG TEST_DEFINITIONS TEST_LINK_LIBS) set(multiValueArgs WHEN) cmake_parse_arguments(LIB_SETUP "${boolArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -27,12 +27,11 @@ function(setup_library SOURCE_TO_TEST) endif() FetchContent_Declare(${LIB_SETUP_NAME} -                         GIT_REPOSITORY ${LIB_SETUP_GIT_REPOSITORY} -                         GIT_TAG ${LIB_SETUP_GIT_TAG}) +        URL ${LIB_SETUP_URL}) FetchContent_GetProperties(${LIB_SETUP_NAME}) set(POPULATED "${LIB_SETUP_NAME}_POPULATED") if (NOT "${POPULATED}") -        message("-- Downloading ${LIB_SETUP_NAME} from ${LIB_SETUP_GIT_REPOSITORY}") +        message("-- Downloading ${LIB_SETUP_NAME} from ${LIB_SETUP_URL}") FetchContent_Populate(${LIB_SETUP_NAME}) set(SRCDIR "${LIB_SETUP_NAME}_SOURCE_DIR") set(BINDIR "${LIB_SETUP_NAME}_BINARY_DIR") @@ -51,8 +50,7 @@ function(setup_argparse) }") setup_library("${CHECK_SOURCE}" NAME argparse -                  GIT_REPOSITORY https://github.com/p-ranav/argparse.git -                  GIT_TAG 45664c4 +                  URL @argparse_src@ HEADER_ONLY ) if (NOT TARGET argparse::argparse) @@ -64,7 +62,7 @@ function(setup_curlpp) set(CHECK_SOURCE "#error unimplemented}") setup_library("${CHECK_SOURCE}" NAME curlpp -                  GIT_REPOSITORY https://github.com/jpbarrette/curlpp.git +                  URL @curlpp_src@ ) if (NOT APPLE) set(CURLPP_LIB_PATH1 "${curlpp_BINARY_DIR}/libcurlpp.so" PARENT_SCOPE) @@ -79,7 +77,7 @@ function(setup_doctest) #include <doctest/doctest.h>") setup_library("${CHECK_SOURCE}" NAME doctest -                  GIT_REPOSITORY https://github.com/onqtam/doctest.git +                  URL @doctest_src@ HEADER_ONLY ) add_library(doctest::doctest ALIAS doctest) @@ -100,8 +98,7 @@ function(setup_fmt) }") setup_library("${CHECK_SOURCE}" NAME fmt -                  GIT_REPOSITORY https://github.com/fmtlib/fmt.git -                  GIT_TAG 8.1.1 +                  URL @fmt_src@ TEST_LINK_LIBS fmt ) @@ -126,7 +123,7 @@ function(setup_nlohmann_json) add_library(nlohmann_json INTERFACE) else() FetchContent_Declare(nlohmann_json -                             URL https://github.com/nlohmann/json/releases/download/v3.7.3/include.zip) +                             URL @nlohmann_json_src@) FetchContent_GetProperties(nlohmann_json) if (NOT nlohmann_json_POPULATED) FetchContent_Populate(nlohmann_json) @@ -146,8 +143,7 @@ function(setup_pugixml) }") setup_library("${CHECK_SOURCE}" NAME pugixml -                  GIT_REPOSITORY https://github.com/muttleyxd/pugixml.git -                  GIT_TAG simple-build-for-a3ul +                  URL @pugixml_src@ TEST_LINK_LIBS pugixml ) get_target_property(TARGET_TYPE pugixml TYPE) @@ -188,8 +184,7 @@ function(setup_spdlog) setup_library("${CHECK_SOURCE}" NAME spdlog -                  GIT_REPOSITORY https://github.com/gabime/spdlog.git -                  GIT_TAG v1.x +                  URL @spdlog_src@ TEST_DEFINITIONS -DSPDLOG_FMT_EXTERNAL TEST_LINK_LIBS ${FMT_TARGET_NAME} CXX_FLAGS "-Wno-attributes -Wno-reorder -Wno-redundant-move" @@ -198,8 +193,7 @@ endfunction() function(setup_steamworkssdk) FetchContent_Declare(steamworkssdk -        URL https://github.com/julianxhokaxhiu/SteamworksSDKCI/releases/download/1.53/SteamworksSDK-v1.53.0_x64.zip -        URL_HASH MD5=322c2c90c3ab76201c92f4a2c443f664 +        URL @steamworkssdk_src@ CONFIGURE_COMMAND "" BUILD_COMMAND "" ) @@ -241,8 +235,7 @@ function(setup_trompeloeil) int main() { }") setup_library("${CHECK_SOURCE}" NAME trompeloeil -                  GIT_REPOSITORY https://github.com/rollbear/trompeloeil.git -                  GIT_TAG 64fd171 +                  URL @trompeloeil_src@ HEADER_ONLY ) add_library(trompeloeil::trompeloeil ALIAS trompeloeil) </ins>

<ins> { lib, stdenv, cmake, curl, curlpp, doctest, fetchFromGitHub, fetchurl, fmt, nlohmann_json, qt5, spdlog, substituteAll, trompeloeil, buildDayZLauncher ? false, }: stdenv.mkDerivation (finalAttrs: { pname = "arma3-unix-launcher"; version = "413"; src = fetchFromGitHub { owner = "muttleyxd"; repo = "arma3-unix-launcher"; rev = "2ea62d961522f1542d4c8e669ef5fe856916f9ec"; hash = "sha256-uym93mYmVj9UxT8RbwdRUyIPrQX7nZTNWUUVjxCQmVU="; }; patches = [ # prevent CMake from trying to get libraries on the internet (substituteAll { src = ./dont_fetch_dependencies.patch; argparse_src = fetchFromGitHub { owner = "p-ranav"; repo = "argparse"; rev = "45664c4e9f05ff287731a9ff8b724d0c89fb6e77"; sha256 = "sha256-qLD9zD6hbItDn6ZHHWBXrAWhySvqcs40xA5+C/5Fkhw="; }; curlpp_src = curlpp.src; doctest_src = doctest; fmt_src = fmt; nlohmann_json_src = nlohmann_json; pugixml_src = fetchFromGitHub { owner = "muttleyxd"; repo = "pugixml"; rev = "simple-build-for-a3ul"; sha256 = "sha256-FpREdz6DbhnLDGOuQY9rU17SSd6ngA4WfO0kGHqGJPM="; }; spdlog_src = spdlog; steamworkssdk_src = fetchurl { url = "https://github.com/julianxhokaxhiu/SteamworksSDKCI/releases/download/1.53/SteamworksSDK-v1.53.0_x64.zip"; sha256 = "sha256-6PQGaPsaxBg/MHVWw2ynYW6LaNSrE9Rd9Q9ZLKFGPFA="; }; trompeloeil_src = trompeloeil; }) # game won't launch with steam integration anyways, disable it ./disable_steam_integration.patch ]; nativeBuildInputs = [ qt5.wrapQtAppsHook cmake ]; buildInputs = [ spdlog curlpp.src curl qt5.qtbase qt5.qtsvg ]; cmakeFlags = [ "-Wno-dev" ] ++ lib.optionals buildDayZLauncher [ "-DBUILD_DAYZ_LAUNCHER=ON" ]; meta = { homepage = "https://github.com/muttleyxd/arma3-unix-launcher/"; description = "Clean, intuitive Arma 3 + DayZ SA Launcher"; license = with lib.licenses; [ # Launcher mit # Steamworks SDK unfree ]; maintainers = with lib.maintainers; [ DrymarchonShaun ]; mainProgram = "arma3-unix-launcher"; platforms = with lib.platforms; linux ++ darwin; }; }) </ins>