mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-25 03:17:13 +00:00
4f0dadbf38
After final improvements to the official formatter implementation, this commit now performs the first treewide reformat of Nix files using it. This is part of the implementation of RFC 166. Only "inactive" files are reformatted, meaning only files that aren't being touched by any PR with activity in the past 2 months. This is to avoid conflicts for PRs that might soon be merged. Later we can do a full treewide reformat to get the rest, which should not cause as many conflicts. A CI check has already been running for some time to ensure that new and already-formatted files are formatted, so the files being reformatted here should also stay formatted. This commit was automatically created and can be verified using nix-builda08b3a4d19
.tar.gz \ --argstr baseRevb32a094368
result/bin/apply-formatting $NIXPKGS_PATH
203 lines
4.8 KiB
Nix
203 lines
4.8 KiB
Nix
{
|
|
channel,
|
|
pname,
|
|
version,
|
|
sha256Hash,
|
|
}:
|
|
|
|
{
|
|
android-tools,
|
|
bash,
|
|
buildFHSEnv,
|
|
coreutils,
|
|
dpkg,
|
|
e2fsprogs,
|
|
fetchurl,
|
|
findutils,
|
|
git,
|
|
gnugrep,
|
|
gnused,
|
|
gnutar,
|
|
gtk2,
|
|
glib,
|
|
gzip,
|
|
fontsConf,
|
|
fontconfig,
|
|
freetype,
|
|
libX11,
|
|
libXext,
|
|
libXi,
|
|
libXrandr,
|
|
libXrender,
|
|
libXtst,
|
|
makeFontsConf,
|
|
makeWrapper,
|
|
ncurses5,
|
|
openssl,
|
|
ps,
|
|
python3,
|
|
lib,
|
|
stdenv,
|
|
unzip,
|
|
usbutils,
|
|
which,
|
|
runCommand,
|
|
xkeyboard_config,
|
|
zip,
|
|
zlib,
|
|
makeDesktopItem,
|
|
tiling_wm ? false, # if we are using a tiling wm, need to set _JAVA_AWT_WM_NONREPARENTING in wrapper
|
|
}:
|
|
|
|
let
|
|
drvName = "${pname}-${version}";
|
|
filename = "asfp-${version}-linux.deb";
|
|
|
|
androidStudioForPlatform = stdenv.mkDerivation {
|
|
name = "${drvName}-unwrapped";
|
|
|
|
src = fetchurl {
|
|
url = "https://dl.google.com/android/asfp/${filename}";
|
|
sha256 = sha256Hash;
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
dpkg
|
|
makeWrapper
|
|
];
|
|
|
|
installPhase = ''
|
|
cp -r "./opt/${pname}/" $out
|
|
wrapProgram $out/bin/studio.sh \
|
|
--set-default JAVA_HOME "$out/jbr" \
|
|
--set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb" \
|
|
${lib.optionalString tiling_wm "--set _JAVA_AWT_WM_NONREPARENTING 1"} \
|
|
--set FONTCONFIG_FILE ${fontsConf} \
|
|
--prefix PATH : "${
|
|
lib.makeBinPath [
|
|
|
|
# Checked in studio.sh
|
|
coreutils
|
|
findutils
|
|
gnugrep
|
|
which
|
|
gnused
|
|
|
|
# Used during setup wizard
|
|
gnutar
|
|
gzip
|
|
|
|
# Runtime stuff
|
|
git
|
|
ps
|
|
usbutils
|
|
android-tools
|
|
|
|
# For Soong sync
|
|
openssl
|
|
python3
|
|
unzip
|
|
zip
|
|
e2fsprogs
|
|
]
|
|
}" \
|
|
--prefix LD_LIBRARY_PATH : "${
|
|
lib.makeLibraryPath [
|
|
# Crash at startup without these
|
|
fontconfig
|
|
freetype
|
|
libXext
|
|
libXi
|
|
libXrender
|
|
libXtst
|
|
libX11
|
|
|
|
# Support multiple monitors
|
|
libXrandr
|
|
|
|
# For GTKLookAndFeel
|
|
gtk2
|
|
glib
|
|
|
|
# For Soong sync
|
|
e2fsprogs
|
|
]
|
|
}"
|
|
'';
|
|
};
|
|
|
|
desktopItem = makeDesktopItem {
|
|
name = pname;
|
|
exec = pname;
|
|
icon = pname;
|
|
desktopName = "Android Studio for Platform (${channel} channel)";
|
|
comment = "The official Android IDE for Android platform development";
|
|
categories = [
|
|
"Development"
|
|
"IDE"
|
|
];
|
|
startupNotify = true;
|
|
startupWMClass = "jetbrains-studio";
|
|
};
|
|
|
|
# Android Studio for Platform downloads prebuilt binaries as part of the SDK. These tools
|
|
# (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS
|
|
# environment is used as a work around for that.
|
|
fhsEnv = buildFHSEnv {
|
|
pname = "${drvName}-fhs-env";
|
|
inherit version;
|
|
multiPkgs = pkgs: [
|
|
zlib
|
|
ncurses5
|
|
ncurses5.dev
|
|
];
|
|
profile = ''
|
|
export ALLOW_NINJA_ENV=true
|
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/lib32
|
|
'';
|
|
};
|
|
in
|
|
runCommand drvName
|
|
{
|
|
startScript = ''
|
|
#!${bash}/bin/bash
|
|
${fhsEnv}/bin/${drvName}-fhs-env ${androidStudioForPlatform}/bin/studio.sh "$@"
|
|
'';
|
|
preferLocalBuild = true;
|
|
allowSubstitutes = false;
|
|
passthru = {
|
|
unwrapped = androidStudioForPlatform;
|
|
};
|
|
meta = with lib; {
|
|
description = "The Official IDE for Android platform development";
|
|
longDescription = ''
|
|
Android Studio for Platform (ASfP) is the version of the Android Studio IDE
|
|
for Android Open Source Project (AOSP) platform developers who build with the Soong build system.
|
|
'';
|
|
homepage = "https://developer.android.com/studio/platform.html";
|
|
license = with licenses; [
|
|
asl20
|
|
unfree
|
|
]; # The code is under Apache-2.0, but:
|
|
# If one selects Help -> Licenses in Android Studio, the dialog shows the following:
|
|
# "Android Studio includes proprietary code subject to separate license,
|
|
# including JetBrains CLion(R) (www.jetbrains.com/clion) and IntelliJ(R)
|
|
# IDEA Community Edition (www.jetbrains.com/idea)."
|
|
# Also: For actual development the Android SDK is required and the Google
|
|
# binaries are also distributed as proprietary software (unlike the
|
|
# source-code itself).
|
|
platforms = [ "x86_64-linux" ];
|
|
maintainers = with maintainers; [ robbins ];
|
|
mainProgram = pname;
|
|
};
|
|
}
|
|
''
|
|
mkdir -p $out/{bin,share/pixmaps}
|
|
|
|
echo -n "$startScript" > $out/bin/${pname}
|
|
chmod +x $out/bin/${pname}
|
|
|
|
ln -s ${androidStudioForPlatform}/bin/studio.png $out/share/pixmaps/${pname}.png
|
|
ln -s ${desktopItem}/share/applications $out/share/applications
|
|
''
|