diff --git a/CMakeLists.txt b/CMakeLists.txt index aaf08be2ef..359b892bab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,8 +5,19 @@ if (NOT CMAKE_BUILD_TYPE) "Build type options: Debug Release RelWithDebInfo MinSizeRel" FORCE) endif () -# obtain revision info from git -find_package(Git) +set(DUSK_VERSION_OVERRIDE "" CACHE STRING "Override version string (skips git detection and format validation)") + +if (DUSK_VERSION_OVERRIDE) + set(DUSK_WC_DESCRIBE "${DUSK_VERSION_OVERRIDE}") + set(DUSK_VERSION_STRING "0.0.0.0") + set(DUSK_SHORT_VERSION_STRING "0.0.0") + set(DUSK_WC_REVISION "") + set(DUSK_WC_BRANCH "") + set(DUSK_WC_DATE "") + message(STATUS "Dusklight version overridden to ${DUSK_WC_DESCRIBE}") +else () + # obtain revision info from git + find_package(Git) if (GIT_FOUND) # make sure version information gets re-run when the current Git HEAD changes execute_process(WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --git-path HEAD @@ -63,6 +74,8 @@ else () set(DUSK_SHORT_VERSION_STRING "0.0.0") endif () +endif () + # Add version information to CI environment variables if(DEFINED ENV{GITHUB_ENV}) file(APPEND "$ENV{GITHUB_ENV}" "DUSK_VERSION=${DUSK_WC_DESCRIBE}\n") diff --git a/flake.nix b/flake.nix index d9d007a8bd..edba703a3d 100644 --- a/flake.nix +++ b/flake.nix @@ -50,7 +50,11 @@ # Dusklight Actual (Linux x86_64 only — relies on prebuilt dawn/nod binaries) mkDusklight = pkgs: - let srcs = buildSources pkgs; in + let srcs = buildSources pkgs; + versionSuffix = if self ? shortRev && self.shortRev != null + then "nix-${self.shortRev}" + else "nix-dirty"; + in pkgs.stdenv.mkDerivation { name = "dusklight"; src = ./.; @@ -62,6 +66,7 @@ ''; # Remove last line to re-enable tests cmakeFlags = [ + "-DDUSK_VERSION_OVERRIDE=${versionSuffix}" "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" "-DFETCHCONTENT_SOURCE_DIR_CXXOPTS=${pkgs.cxxopts.src}" "-DFETCHCONTENT_SOURCE_DIR_JSON=${pkgs.nlohmann_json.src}" @@ -83,6 +88,14 @@ mkdir -p $out/bin cp dusklight $out/bin/dusklight cp -r ./res $out/bin/res + + mkdir -p $out/share/applications + cp $src/platforms/freedesktop/dusklight.desktop $out/share/applications/dusklight.desktop + + for size in 16 32 48 64 128 256 512 1024; do + install -Dm644 $src/platforms/freedesktop/''${size}x''${size}/apps/dusklight.png \ + $out/share/icons/hicolor/''${size}x''${size}/apps/dusklight.png + done ''; nativeBuildInputs = [ pkgs.cmake @@ -212,4 +225,4 @@ default = mkDevShell (pkgsFor system); }); }; -} +} \ No newline at end of file