diff --git a/packages/default.nix b/packages/default.nix new file mode 100644 index 0000000..6716bbf --- /dev/null +++ b/packages/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +let + rad-maintainers = import ./maintainers.nix; +in +{ + + ftb-app = pkgs.callPackage ./ftb-app { inherit rad-maintainers; }; +} diff --git a/packages/ftb-app/default.nix b/packages/ftb-app/default.nix new file mode 100644 index 0000000..2724b02 --- /dev/null +++ b/packages/ftb-app/default.nix @@ -0,0 +1,109 @@ +{ + alsa-lib, + at-spi2-atk, + cairo, + cups, + dbus, + dpkg, + expat, + fetchurl, + gtk3, + jre, + lib, + libdrm, + libxkbcommon, + makeWrapper, + mesa, + nspr, + nss, + pango, + rad-maintainers, + stdenv, + xorg, + ... +}: +# source_aarch64=("https://piston.feed-the-beast.com/app/ftb-app-${pkgver}-arm64.deb") +# sha256sums_aarch64=(ad1197556a187693cbc488142562a0c17144e33056f1c914950c2f1496a4c532) +stdenv.mkDerivation rec { + pname = "ftb-app"; + version = "1.25.14"; + + src = fetchurl { + url = "https://piston.feed-the-beast.com/app/ftb-app-${version}-amd64.deb"; + sha256 = "c9e4ce43be5337d2c7f10c55412d0acc629178d4967aef88897ebad2aa241ef0"; + }; + + nativeBuildInputs = [ + dpkg + makeWrapper + ]; + + unpackPhase = '' + runHook preUnpack + + dpkg -x $src ./ftb-app + + runHook postUnpack + ''; + + installPhase = '' + runHook preInstall + + mkdir -p "$out" + cp -r ftb-app/* "$out" + + # Flatten /usr and manually merge lib/ and usr/lib/, since mv refuses to. + mv "$out"'/opt/FTB Electron App' "$out/bin" + mv "$out/usr/"* "$out/" + rmdir "$out/usr" + rmdir "$out/opt" + + for f in "$out/share/applications/"*.desktop; do + substituteInPlace "$f" \ + --replace-fail '/opt/FTB Electron App/ftb-app' "$out/bin/ftb-app" + done + + # prevent self-upgrade with dpkg + rm "$out/bin/resources/package-type" + + chmod +x "$out/bin/ftb-app" + + libs="${nss}/lib/libnss3.so ${nss}/lib/libnssutil3.so ${nss}/lib/libsmime3.so " + libs+="${nspr}/lib/libnspr4.so ${dbus.lib}/lib/libdbus-1.so.3 " + libs+="${at-spi2-atk}/lib/libatk-1.0.so.0 ${cups.lib}/lib/libcups.so.2 " + libs+="${at-spi2-atk}/lib/libatk-bridge-2.0.so.0 " + libs+="${libdrm}/lib/libdrm.so.2 ${gtk3}/lib/libgtk-3.so.0 " + libs+="${pango.out}/lib/libpango-1.0.so.0 ${cairo}/lib/libcairo.so.2 " + libs+="${xorg.libX11}/lib/libX11.so.6 ${xorg.libXext}/lib/libXext.so.6 " + libs+="${xorg.libXcomposite}/lib/libXcomposite.so.1 " + libs+="${xorg.libXdamage}/lib/libXdamage.so.1 " + libs+="${xorg.libXfixes}/lib/libXfixes.so.3 ${expat}/lib/libexpat.so.1 " + libs+="${xorg.libXrandr}/lib/libXrandr.so.2 ${mesa}/lib/libgbm.so.1 " + libs+="${xorg.libxcb}/lib/libxcb.so.1 ${alsa-lib}/lib/libasound.so.2 " + libs+="${libxkbcommon}/lib/libxkbcommon.so.0 " + libs+="${at-spi2-atk}/lib/libatspi.so.0 ${xorg.libXtst}/lib/libXtst.so.6 " + + echo "$libs" + + + for p in "$out/bin/ftb-app"; do + wrapProgram "$p" \ + --set LD_PRELOAD "$libs" \ + --set NIX_REDIRECTS "/usr/share=$out/share:"'/opt/FTB Electron Application'"=$out/bin" \ + --set JAVA_HOME "${jre.home}" + # --prefix PATH : "{lib.makeBinPath [ gzip gnutar ]}" + done + + runHook postInstall + ''; + + meta = with lib; { + description = "A new Modpack launcher for FTB and Curse modpacks."; + homepage = "https://feed-the-beast.com/app"; + license = with licenses; [ lgpl21Only ]; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + maintainers = with rad-maintainers; [ ahuston-0 ]; + platforms = [ "x86_64-linux" ]; + mainProgram = "ftb-app"; + }; +} diff --git a/packages/maintainers.nix b/packages/maintainers.nix new file mode 100644 index 0000000..1f48dc7 --- /dev/null +++ b/packages/maintainers.nix @@ -0,0 +1,77 @@ +/* + Borrowed this from nixpkgs :) + List of NixOS maintainers. + ```nix + handle = { + # Required + name = "Your name"; + + # Optional, but at least one of email, matrix or githubId must be given + email = "address@example.org"; + matrix = "@user:example.org"; + github = "GithubUsername"; + githubId = your-github-id; + + keys = [{ + fingerprint = "AAAA BBBB CCCC DDDD EEEE FFFF 0000 1111 2222 3333"; + }]; + }; + ``` + + where + + - `handle` is the handle you are going to use in nixpkgs expressions, + - `name` is a name that people would know and recognize you by, + - `email` is your maintainer email address, + - `matrix` is your Matrix user ID, + - `github` is your GitHub handle (as it appears in the URL of your profile page, `https://github.com/`), + - `githubId` is your GitHub user ID, which can be found at `https://api.github.com/users/`, + - `keys` is a list of your PGP/GPG key fingerprints. + + Specifying a GitHub account ensures that you automatically: + - get invited to the @NixOS/nixpkgs-maintainers team ; + - once you are part of the @NixOS org, OfBorg will request you review + pull requests that modify a package for which you are a maintainer. + + `handle == github` is strongly preferred whenever `github` is an acceptable attribute name and is short and convenient. + + If `github` begins with a numeral, `handle` should be prefixed with an underscore. + ```nix + _1example = { + github = "1example"; + }; + ``` + + Add PGP/GPG keys only if you actually use them to sign commits and/or mail. + + To get the required PGP/GPG values for a key run + ```shell + gpg --fingerprint | head -n 2 + ``` + + !!! Note that PGP/GPG values stored here are for informational purposes only, don't use this file as a source of truth. + + More fields may be added in the future, however, in order to comply with GDPR this file should stay as minimal as possible. + + When editing this file: + * keep the list alphabetically sorted, check with: + nix-instantiate --eval maintainers/scripts/check-maintainers-sorted.nix + * test the validity of the format with: + nix-build lib/tests/maintainers.nix + + See `./scripts/check-maintainer-github-handles.sh` for an example on how to work with this data. + + When adding a new maintainer, be aware of the current commit conventions + documented at [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#commit-conventions) + file located in the root of the Nixpkgs repo. +*/ + +{ + ahuston-0 = { + name = "ahuston-0"; + email = "aliceghuston@gmail.com"; + github = "ahuston-0"; + githubId = 43225907; + keys = [ { fingerprint = "F638 32C3 080D 6E1A C77E ECF8 0B42 45FF E305 BC82"; } ]; + }; +}