mindustry-tools/flake.nix

122 lines
3.2 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils, ... }:
let
inherit (builtins) substring;
version = "${substring 0 8 self.lastModifiedDate}_${self.shortRev or "dirty"}";
mkGodotEmailTemplates = { stdenv, fetchurl, unzip, lib, ... }:
stdenv.mkDerivation rec {
pname = "godot-email-templates";
version = "4.2.1-stable";
src = fetchurl {
url = "https://github.com/godotengine/godot/releases/download/${version}/Godot_v${version}_export_templates.tpz";
hash = "sha256-xfFA61eEY6L6FAfzXjfBeqNKS4R7nTDinDhHuV5t2gc=";
};
nativeBuildInputs = [ unzip ];
unpackPhase = ''
mkdir $out
unzip $src
mv templates $out/${lib.replaceStrings ["-"] ["."] version}
'';
};
mkMindustryTools =
{ stdenv
, lib
, vulkan-loader
, libGL
, libX11
, libXcursor
, libXinerama
, libXext
, libXrandr
, libXrender
, libXi
, libXfixes
, libxkbcommon
, alsa-lib
, libpulseaudio
, dbus
, speechd
, fontconfig
, udev
, makeWrapper
, autoPatchelfHook
, godot_4
, godotEmailTemplates
, ...
}:
stdenv.mkDerivation {
pname = "mindustry-tools";
inherit version;
src = ./.;
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
godot_4
];
runtimeDependencies = [
vulkan-loader
libGL
libX11
libXcursor
libXinerama
libXext
libXrandr
libXrender
libXi
libXfixes
libxkbcommon
alsa-lib
libpulseaudio
dbus
dbus.lib
speechd
fontconfig
fontconfig.lib
udev
];
buildPhase = ''
export HOME=$(pwd)
mkdir -p .local/share/godot/export_templates/
cp -r ${godotEmailTemplates}/* .local/share/godot/export_templates
# godot4 --headless --export-release "Linux/X11" mindustry-tools
godot4 --headless --export-debug "Linux/X11" mindustry-tools
'';
installPhase = ''
install -m755 -D mindustry-tools $out/bin/mindustry-tools
'';
};
in
flake-utils.lib.eachDefaultSystem (system:
let
inherit (builtins) mapAttrs;
pkgs = import nixpkgs { inherit system; };
godotEmailTemplates = pkgs.callPackage mkGodotEmailTemplates { };
mindustryTools = pkgs.callPackage mkMindustryTools { inherit godotEmailTemplates; };
mkApp = drv: flake-utils.lib.mkApp { inherit drv; };
packages = {
default = mindustryTools;
email-templates = godotEmailTemplates;
};
in
{
check = packages;
inherit packages;
apps = mapAttrs (name: mkApp) packages;
});
}