Skip to content

Instantly share code, notes, and snippets.

@whazor
Created June 27, 2024 17:46
Show Gist options
  • Save whazor/89a1c22ad7ad526eb33004f13be53a23 to your computer and use it in GitHub Desktop.
Save whazor/89a1c22ad7ad526eb33004f13be53a23 to your computer and use it in GitHub Desktop.
attempt of building opengamepadui
{
outputs = { self, nixpkgs }: {
defaultPackage.x86_64-linux = self.packages.x86_64-linux.opengamepadui;
packages.x86_64-linux.opengamepadui =
let
pkgs = import nixpkgs { system = "x86_64-linux"; };
src = pkgs.fetchFromGitHub {
owner = "ShadowBlip";
repo = "OpenGamepadUI";
rev = "v0.32.8";
sha256 = "sha256-BFtuyCQcqwF1f1bcSzM3lw/UR29PkHWbnEk7k4ACrBE=";
};
# we need to run make import first as it is so slow
importAssets = pkgs.stdenv.mkDerivation {
inherit src;
name = "opengamepadui-import-assets";
buildInputs = [
pkgs.godot_4
pkgs.wget
];
configurePhase = "";
buildPhase = ''
export HOME=$(pwd)
export GODOT=${pkgs.godot_4}/bin/godot4
export EXPORT_TEMPLATE=${pkgs.godot_4-export-templates}/linux_debug.x86_64
make import
mv $HOME/.godot $out/
exit 0
'';
installPhase = "";
checkPhase = "";
};
# convert 4.2.2-stable to 4.2.2.stable
godot_version = builtins.replaceStrings ["-"] ["."] pkgs.godot_4.version;
in
pkgs.stdenv.mkDerivation {
name = "opengamepadui";
inherit src;
buildInputs = [
pkgs.gamescope
pkgs.libgcc
pkgs.glibc
pkgs.libevdev
pkgs.xorg.libX11
pkgs.xorg.libXau
pkgs.xorg.libxcb
pkgs.xorg.libXdmcp
pkgs.xorg.libXext
pkgs.xorg.libXres
pkgs.godot_4
pkgs.wget
pkgs.fontconfig
# pkgs.libdbusmenu # unsure
pkgs.gcc.cc.lib
# pkgs.libptytty
# Optional packages; include these if needed
# pkgs.ryzenadj
# pkgs.mangoapp
# pkgs.wireplumber
# pkgs.networkmanager
# pkgs.firejail
];
nativeBuildInputs = [
pkgs.dbus.lib
pkgs.gcc.cc.lib pkgs.xorg.libX11
# libXRes.so.1
pkgs.xorg.libXres
pkgs.xorg.libXtst
pkgs.fontconfig
# this also does not work:
# pkgs.autoPatchelfHook
];
buildPhase =''
export HOME=$(pwd)
export GODOT=${pkgs.godot_4}/bin/godot4
export EXPORT_TEMPLATE=${pkgs.godot_4-export-templates}/linux_debug.x86_64
export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath [
pkgs.dbus.lib
pkgs.gcc.cc.lib pkgs.xorg.libX11
# libXRes.so.1
pkgs.xorg.libXres
pkgs.xorg.libXtst
]}:$LD_LIBRARY_PATH
cp -R ${importAssets}/ $HOME/.godot/
mkdir -p $HOME/.godot/editor
chmod -R 755 $HOME/.godot
mkdir -p $HOME/.godot/app_userdata/opengamepadui
export GODOT_USER_DIR=$HOME/.godot/app_userdata/opengamepadui
# opengamepadui> ERROR: Config File "user://gut_temp_directory/gut_editor_config.json" does not exist.
mkdir -p $GODOT_USER_DIR/gut_temp_directory
echo '{}' > $GODOT_USER_DIR/gut_temp_directory/gut_editor_config.json
echo '{}' > $GODOT_USER_DIR/.gut_editor_config.json
echo '{}' > .gut_editor_config.json
mkdir -p $HOME/.local/share/godot/export_templates/${godot_version}/
cp -R ${pkgs.godot_4-export-templates}/* $HOME/.local/share/godot/export_templates/${godot_version}/
make build
'';
installPhase = ''
mkdir -p $out/bin
find . > $out/manifest
cp -R build/* $out/bin/
chmod -R 755 $out/bin
'';
checkPhase = ''''; # no tests
};
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment