Merge pull request #44310 from primeos/android-studio-improvements
Android Studio improvements
This commit is contained in:
commit
8aa04df600
@ -1,4 +1,5 @@
|
|||||||
{ pname, version, build, sha256Hash, meta }:
|
{ channel, pname, version, build, sha256Hash, deprecated ? false }:
|
||||||
|
|
||||||
{ bash
|
{ bash
|
||||||
, buildFHSUserEnv
|
, buildFHSUserEnv
|
||||||
, coreutils
|
, coreutils
|
||||||
@ -36,8 +37,21 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
# TODO: This is a bit stupid to be honest...
|
||||||
|
# The problem is that we have to make sure this is only executed if the
|
||||||
|
# derivation is actually build to avoid always printing this warning (e.g.
|
||||||
|
# "nix-env -qaP"). Since this will always evaluate to "" it won't actually
|
||||||
|
# change the derivation (only generate a side-effect) but we have to make
|
||||||
|
# sure this expression is evaluated lazily!
|
||||||
|
printDeprecationWarning = if deprecated then (builtins.trace ''
|
||||||
|
android-studio-preview and androidStudioPackages.preview are old aliases
|
||||||
|
and will be dropped at some point, please use androidStudioPackages.beta
|
||||||
|
instead (corresponds to the correct channel name).''
|
||||||
|
"")
|
||||||
|
else "";
|
||||||
|
drvName = "android-studio-${channel}-${version}";
|
||||||
androidStudio = stdenv.mkDerivation {
|
androidStudio = stdenv.mkDerivation {
|
||||||
name = "${pname}-${version}";
|
name = drvName;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}/android-studio-ide-${build}-linux.zip";
|
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}/android-studio-ide-${build}-linux.zip";
|
||||||
@ -115,17 +129,32 @@ let
|
|||||||
# (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS
|
# (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS
|
||||||
# environment is used as a work around for that.
|
# environment is used as a work around for that.
|
||||||
fhsEnv = buildFHSUserEnv {
|
fhsEnv = buildFHSUserEnv {
|
||||||
name = "${pname}-fhs-env";
|
name = "${drvName}-fhs-env";
|
||||||
multiPkgs = pkgs: [ pkgs.ncurses5 ];
|
multiPkgs = pkgs: [ pkgs.ncurses5 ];
|
||||||
};
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
writeTextFile {
|
writeTextFile {
|
||||||
name = "${pname}-${version}";
|
name = "${drvName}-wrapper";
|
||||||
|
# TODO: Rename preview -> beta (and add -stable suffix?):
|
||||||
destination = "/bin/${pname}";
|
destination = "/bin/${pname}";
|
||||||
executable = true;
|
executable = true;
|
||||||
text = ''
|
text = ''
|
||||||
#!${bash}/bin/bash
|
#!${bash}/bin/bash
|
||||||
${fhsEnv}/bin/${pname}-fhs-env ${androidStudio}/bin/studio.sh
|
${fhsEnv}/bin/${drvName}-fhs-env ${androidStudio}/bin/studio.sh
|
||||||
|
'' + printDeprecationWarning;
|
||||||
|
} // {
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "The Official IDE for Android (${channel} channel)";
|
||||||
|
longDescription = ''
|
||||||
|
Android Studio is the official IDE for Android app development, based on
|
||||||
|
IntelliJ IDEA.
|
||||||
'';
|
'';
|
||||||
} // { inherit meta; }
|
homepage = if channel == "stable"
|
||||||
|
then https://developer.android.com/studio/index.html
|
||||||
|
else https://developer.android.com/studio/preview/index.html;
|
||||||
|
license = licenses.asl20;
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
maintainers = with maintainers; [ primeos ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
@ -12,60 +12,43 @@ let
|
|||||||
build = "173.4819257";
|
build = "173.4819257";
|
||||||
sha256Hash = "196yaswbxh2nd83gimjxr8ggr5xkdxq7n3xlh6ax73v59pj4hryq";
|
sha256Hash = "196yaswbxh2nd83gimjxr8ggr5xkdxq7n3xlh6ax73v59pj4hryq";
|
||||||
};
|
};
|
||||||
latestVersion = {
|
betaVersion = {
|
||||||
|
version = "3.2.0.22"; # "Android Studio 3.2 Beta 5"
|
||||||
|
build = "181.4913314";
|
||||||
|
sha256Hash = "016nyn1pqviy089hg0dq7m4cqb39fdxdcy4zknkaq7dmgv1dj6x9";
|
||||||
|
};
|
||||||
|
latestVersion = { # canary & dev
|
||||||
version = "3.3.0.2"; # "Android Studio 3.3 Canary 3"
|
version = "3.3.0.2"; # "Android Studio 3.3 Canary 3"
|
||||||
build = "181.4884283";
|
build = "181.4884283";
|
||||||
sha256Hash = "0r93yzw87cgzz60p60gknij5vaqmv1a1kyd4cr9gx8cbxw46lhwh";
|
sha256Hash = "0r93yzw87cgzz60p60gknij5vaqmv1a1kyd4cr9gx8cbxw46lhwh";
|
||||||
};
|
};
|
||||||
in rec {
|
in rec {
|
||||||
# Old alias
|
# TODO: Drop old alias after 18.09
|
||||||
preview = beta;
|
preview = mkStudio (betaVersion // {
|
||||||
|
channel = "beta";
|
||||||
# Attributes are named by the corresponding release channels
|
pname = "android-studio-preview";
|
||||||
|
deprecated = true;
|
||||||
stable = mkStudio (stableVersion // {
|
|
||||||
pname = "android-studio";
|
|
||||||
#pname = "android-studio-stable"; # TODO: Rename and provide symlink
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "The Official IDE for Android (stable channel)";
|
|
||||||
longDescription = ''
|
|
||||||
Android Studio is the official IDE for Android app development, based on
|
|
||||||
IntelliJ IDEA.
|
|
||||||
'';
|
|
||||||
homepage = https://developer.android.com/studio/index.html;
|
|
||||||
license = licenses.asl20;
|
|
||||||
platforms = [ "x86_64-linux" ];
|
|
||||||
maintainers = with maintainers; [ primeos ];
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
beta = mkStudio (latestVersion // {
|
# Attributes are named by their corresponding release channels
|
||||||
pname = "android-studio-preview";
|
|
||||||
#pname = "android-studio-beta"; # TODO: Rename and provide symlink
|
|
||||||
version = "3.2.0.22"; # "Android Studio 3.2 Beta 5"
|
|
||||||
build = "181.4913314";
|
|
||||||
sha256Hash = "016nyn1pqviy089hg0dq7m4cqb39fdxdcy4zknkaq7dmgv1dj6x9";
|
|
||||||
|
|
||||||
meta = stable.meta // {
|
stable = mkStudio (stableVersion // {
|
||||||
description = "The Official IDE for Android (beta channel)";
|
channel = "stable";
|
||||||
homepage = https://developer.android.com/studio/preview/index.html;
|
pname = "android-studio";
|
||||||
};
|
});
|
||||||
|
|
||||||
|
beta = mkStudio (betaVersion // {
|
||||||
|
channel = "beta";
|
||||||
|
pname = "android-studio-preview";
|
||||||
});
|
});
|
||||||
|
|
||||||
dev = mkStudio (latestVersion // {
|
dev = mkStudio (latestVersion // {
|
||||||
|
channel = "dev";
|
||||||
pname = "android-studio-dev";
|
pname = "android-studio-dev";
|
||||||
|
|
||||||
meta = beta.meta // {
|
|
||||||
description = "The Official IDE for Android (dev channel)";
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
canary = mkStudio (latestVersion // {
|
canary = mkStudio (latestVersion // {
|
||||||
|
channel = "canary";
|
||||||
pname = "android-studio-canary";
|
pname = "android-studio-canary";
|
||||||
|
|
||||||
meta = beta.meta // {
|
|
||||||
description = "The Official IDE for Android (canary channel)";
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -15182,9 +15182,10 @@ with pkgs;
|
|||||||
|
|
||||||
amsn = callPackage ../applications/networking/instant-messengers/amsn { };
|
amsn = callPackage ../applications/networking/instant-messengers/amsn { };
|
||||||
|
|
||||||
androidStudioPackages = callPackage ../applications/editors/android-studio { };
|
androidStudioPackages = recurseIntoAttrs
|
||||||
|
(callPackage ../applications/editors/android-studio { });
|
||||||
android-studio = androidStudioPackages.stable;
|
android-studio = androidStudioPackages.stable;
|
||||||
android-studio-preview = androidStudioPackages.beta;
|
android-studio-preview = androidStudioPackages.preview; # TODO: Drop old alias after 18.09
|
||||||
|
|
||||||
antfs-cli = callPackage ../applications/misc/antfs-cli {};
|
antfs-cli = callPackage ../applications/misc/antfs-cli {};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user