mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-03 21:40:12 +00:00
jetbrains.*: expose libdbm, general cleanups (#553326)
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
# Darwin-specific base builder.
|
||||
|
||||
{
|
||||
# keep-sorted start
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
undmg,
|
||||
# keep-sorted end
|
||||
|
||||
excludeDrvArgNames,
|
||||
...
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
# Builder for JetBrains IDEs (`mkJetBrainsProduct`)
|
||||
|
||||
{
|
||||
# keep-sorted start
|
||||
callPackage,
|
||||
lib,
|
||||
stdenv,
|
||||
callPackage,
|
||||
|
||||
jdk,
|
||||
# keep-sorted end
|
||||
|
||||
vmopts ? null,
|
||||
forceWayland ? false,
|
||||
}:
|
||||
let
|
||||
baseBuilder = if stdenv.hostPlatform.isDarwin then ./darwin.nix else ./linux.nix;
|
||||
@@ -16,7 +15,7 @@ in
|
||||
# Makes a JetBrains IDE
|
||||
lib.extendMkDerivation {
|
||||
constructDrv = callPackage baseBuilder {
|
||||
inherit vmopts jdk forceWayland;
|
||||
inherit vmopts;
|
||||
# Args to not pass to mkDerivation in the base builders. Since both get the same args
|
||||
# passed in, both have the same list of args to ignore, even if they don't both use
|
||||
# all of them.
|
||||
@@ -25,7 +24,7 @@ lib.extendMkDerivation {
|
||||
"productShort"
|
||||
"buildNumber"
|
||||
"wmClass"
|
||||
"libdbm"
|
||||
"jetbrains-libdbm"
|
||||
"fsnotifier"
|
||||
"extraLdPath"
|
||||
"extraWrapperArgs"
|
||||
@@ -39,7 +38,7 @@ lib.extendMkDerivation {
|
||||
buildNumber,
|
||||
product,
|
||||
|
||||
libdbm,
|
||||
jetbrains-libdbm,
|
||||
fsnotifier,
|
||||
|
||||
meta ? { },
|
||||
@@ -51,7 +50,7 @@ lib.extendMkDerivation {
|
||||
inherit
|
||||
buildNumber
|
||||
product
|
||||
libdbm
|
||||
jetbrains-libdbm
|
||||
fsnotifier
|
||||
;
|
||||
|
||||
@@ -61,9 +60,5 @@ lib.extendMkDerivation {
|
||||
plugins = callPackage ../plugins/tests.nix { ide = finalAttrs.finalPackage; };
|
||||
};
|
||||
};
|
||||
|
||||
meta = meta // {
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,37 +1,27 @@
|
||||
# Linux-specific base builder.
|
||||
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
makeDesktopItem,
|
||||
makeWrapper,
|
||||
patchelf,
|
||||
writeText,
|
||||
coreutils,
|
||||
gnugrep,
|
||||
which,
|
||||
git,
|
||||
unzip,
|
||||
libsecret,
|
||||
libnotify,
|
||||
udev,
|
||||
e2fsprogs,
|
||||
python3,
|
||||
autoPatchelfHook,
|
||||
glibcLocales,
|
||||
fontconfig,
|
||||
libGL,
|
||||
libx11,
|
||||
|
||||
# bundled jcef-plugin
|
||||
# keep-sorted start
|
||||
alsa-lib,
|
||||
at-spi2-atk,
|
||||
at-spi2-core,
|
||||
atk,
|
||||
autoPatchelfHook,
|
||||
cairo,
|
||||
coreutils,
|
||||
cups,
|
||||
dbus,
|
||||
e2fsprogs,
|
||||
fontconfig,
|
||||
git,
|
||||
glibcLocales,
|
||||
gnugrep,
|
||||
lib,
|
||||
libGL,
|
||||
libgbm,
|
||||
libnotify,
|
||||
libsecret,
|
||||
libx11,
|
||||
libxcb,
|
||||
libxcomposite,
|
||||
libxdamage,
|
||||
@@ -39,13 +29,21 @@
|
||||
libxfixes,
|
||||
libxkbcommon,
|
||||
libxrandr,
|
||||
makeDesktopItem,
|
||||
makeWrapper,
|
||||
nspr,
|
||||
nss,
|
||||
pango,
|
||||
patchelf,
|
||||
python3,
|
||||
stdenv,
|
||||
udev,
|
||||
unzip,
|
||||
which,
|
||||
writeText,
|
||||
# keep-sorted end
|
||||
|
||||
jdk,
|
||||
vmopts ? null,
|
||||
forceWayland ? null,
|
||||
excludeDrvArgNames,
|
||||
}:
|
||||
|
||||
@@ -62,7 +60,8 @@ lib.extendMkDerivation {
|
||||
productShort ? product,
|
||||
wmClass,
|
||||
|
||||
libdbm,
|
||||
jdk,
|
||||
jetbrains-libdbm,
|
||||
fsnotifier,
|
||||
|
||||
extraLdPath ? [ ],
|
||||
@@ -78,11 +77,6 @@ lib.extendMkDerivation {
|
||||
loName = lib.toLower productShort;
|
||||
hiName = lib.toUpper productShort;
|
||||
vmoptsName = loName + lib.optionalString stdenv.hostPlatform.is64bit "64" + ".vmoptions";
|
||||
finalExtraWrapperArgs =
|
||||
extraWrapperArgs
|
||||
++ lib.optionals forceWayland [
|
||||
''--add-flags "\''${WAYLAND_DISPLAY:+-Dawt.toolkit.name=WLToolkit}"''
|
||||
];
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = finalAttrs.pname;
|
||||
@@ -102,12 +96,7 @@ lib.extendMkDerivation {
|
||||
inherit desktopItem vmoptsIDE vmoptsFile;
|
||||
|
||||
buildInputs = buildInputs ++ [
|
||||
stdenv.cc.cc
|
||||
fontconfig
|
||||
libGL
|
||||
libx11
|
||||
# required for the bundled jcef-plugin
|
||||
udev
|
||||
# keep-sorted start
|
||||
alsa-lib
|
||||
at-spi2-atk
|
||||
at-spi2-core
|
||||
@@ -115,7 +104,10 @@ lib.extendMkDerivation {
|
||||
cairo
|
||||
cups
|
||||
dbus
|
||||
fontconfig
|
||||
libGL
|
||||
libgbm
|
||||
libx11
|
||||
libxcb
|
||||
libxcomposite
|
||||
libxdamage
|
||||
@@ -126,13 +118,18 @@ lib.extendMkDerivation {
|
||||
nspr
|
||||
nss
|
||||
pango
|
||||
stdenv.cc.cc
|
||||
udev
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
nativeBuildInputs = nativeBuildInputs ++ [
|
||||
# keep-sorted start
|
||||
autoPatchelfHook
|
||||
makeWrapper
|
||||
patchelf
|
||||
unzip
|
||||
autoPatchelfHook
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
@@ -167,11 +164,9 @@ lib.extendMkDerivation {
|
||||
fi
|
||||
echo -Djna.library.path=${
|
||||
lib.makeLibraryPath [
|
||||
libsecret
|
||||
e2fsprogs
|
||||
libnotify
|
||||
# Required for Help -> Collect Logs
|
||||
# in at least rider and goland
|
||||
libsecret
|
||||
udev
|
||||
]
|
||||
} >> $vmopts_file
|
||||
@@ -185,7 +180,7 @@ lib.extendMkDerivation {
|
||||
cp -a . $out/$pname
|
||||
[[ -f $out/$pname/bin/${loName}.png ]] && ln -s $out/$pname/bin/${loName}.png $out/share/icons/hicolor/128x128/apps/${pname}.png
|
||||
[[ -f $out/$pname/bin/${loName}.svg ]] && ln -s $out/$pname/bin/${loName}.svg $out/share/icons/hicolor/scalable/apps/${pname}.svg
|
||||
cp ${libdbm}/lib/libdbm.so $out/$pname/bin/libdbm.so
|
||||
cp ${jetbrains-libdbm}/lib/libdbm.so $out/$pname/bin/libdbm.so
|
||||
cp ${fsnotifier}/bin/fsnotifier $out/$pname/bin/fsnotifier
|
||||
|
||||
jdk=${jdk.home}
|
||||
@@ -205,16 +200,16 @@ lib.extendMkDerivation {
|
||||
wrapProgram "$launcher" \
|
||||
--prefix PATH : "${
|
||||
lib.makeBinPath [
|
||||
jdk
|
||||
coreutils
|
||||
gnugrep
|
||||
which
|
||||
git
|
||||
gnugrep
|
||||
jdk
|
||||
which
|
||||
]
|
||||
}" \
|
||||
--suffix PATH : "${lib.makeBinPath [ python3 ]}" \
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath extraLdPath}" \
|
||||
${lib.concatStringsSep " " finalExtraWrapperArgs} \
|
||||
${lib.concatStringsSep " " extraWrapperArgs} \
|
||||
--set-default JDK_HOME "$jdk" \
|
||||
--set-default ANDROID_JAVA_HOME "$jdk" \
|
||||
--set-default JAVA_HOME "$jdk" \
|
||||
|
||||
@@ -1,102 +1,40 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
stdenv,
|
||||
# keep-sorted start
|
||||
callPackage,
|
||||
|
||||
python3,
|
||||
jetbrains,
|
||||
config,
|
||||
lib,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
|
||||
vmopts ? null,
|
||||
forceWayland ? false,
|
||||
}:
|
||||
|
||||
let
|
||||
jetbrainsBuilder =
|
||||
jdk:
|
||||
callPackage ./builder/default.nix {
|
||||
inherit jdk forceWayland vmopts;
|
||||
};
|
||||
|
||||
mkSrcIde =
|
||||
path: extras:
|
||||
callPackage path (
|
||||
{
|
||||
mkJetBrainsProduct = jetbrainsBuilder jetbrains.jdk;
|
||||
mkJetBrainsSource = callPackage ./source/build.nix { };
|
||||
}
|
||||
// extras
|
||||
);
|
||||
|
||||
_idea-oss = mkSrcIde ./ides/idea-oss.nix { };
|
||||
|
||||
# The binary builds use the same libdbm and fsnotifier as the current idea-oss source build.
|
||||
mkBinIde =
|
||||
path: extras:
|
||||
callPackage path (
|
||||
{
|
||||
mkJetBrainsProduct = jetbrainsBuilder jetbrains.jdk-no-jcef;
|
||||
libdbm = _idea-oss.libdbm;
|
||||
fsnotifier = _idea-oss.fsnotifier;
|
||||
}
|
||||
// extras
|
||||
);
|
||||
|
||||
# Common build overrides, fixes, etc.
|
||||
# TODO: These should eventually be moved outside of this file
|
||||
pyCharmCommonOverrides = (
|
||||
finalAttrs: previousAttrs:
|
||||
lib.optionalAttrs stdenv.hostPlatform.isLinux {
|
||||
buildInputs =
|
||||
with python3.pkgs;
|
||||
(previousAttrs.buildInputs or [ ])
|
||||
++ [
|
||||
python3
|
||||
setuptools
|
||||
];
|
||||
preInstall = ''
|
||||
echo "compiling cython debug speedups"
|
||||
if [[ -d plugins/python-ce ]]; then
|
||||
${python3.interpreter} plugins/python-ce/helpers/pydev/setup_cython.py build_ext --inplace
|
||||
else
|
||||
${python3.interpreter} plugins/python/helpers/pydev/setup_cython.py build_ext --inplace
|
||||
fi
|
||||
'';
|
||||
# See https://www.jetbrains.com/help/pycharm/2022.1/cython-speedups.html
|
||||
}
|
||||
);
|
||||
patchSharedLibs = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
ls -d \
|
||||
$out/*/bin/*/linux/*/lib/liblldb.so \
|
||||
$out/*/bin/*/linux/*/lib/python3.*/lib-dynload/* \
|
||||
$out/*/plugins/*/bin/*/linux/*/lib/liblldb.so \
|
||||
$out/*/plugins/*/bin/*/linux/*/lib/python3.*/lib-dynload/* |
|
||||
xargs patchelf \
|
||||
--replace-needed libssl.so.10 libssl.so \
|
||||
--replace-needed libssl.so.1.1 libssl.so \
|
||||
--replace-needed libcrypto.so.10 libcrypto.so \
|
||||
--replace-needed libcrypto.so.1.1 libcrypto.so \
|
||||
--replace-needed libcrypt.so.1 libcrypt.so \
|
||||
${lib.optionalString stdenv.hostPlatform.isAarch "--replace-needed libxml2.so.2 libxml2.so"}
|
||||
'';
|
||||
in
|
||||
{
|
||||
# Builders
|
||||
mkJetBrainsProduct = callPackage ./builder/default.nix {
|
||||
inherit vmopts;
|
||||
};
|
||||
mkJetBrainsSource = callPackage ./source/build.nix { };
|
||||
|
||||
# Hooks
|
||||
cythonDebugSpeedupsHook = callPackage ./hooks/cython-debug-speedups.nix { };
|
||||
sharedLibsHook = callPackage ./hooks/shared-libs.nix { };
|
||||
|
||||
# Sorted alphabetically. Deprecated products and aliases are at the very end.
|
||||
clion = mkBinIde ./ides/clion.nix { inherit patchSharedLibs; };
|
||||
datagrip = mkBinIde ./ides/datagrip.nix { };
|
||||
dataspell = mkBinIde ./ides/dataspell.nix { };
|
||||
gateway = mkBinIde ./ides/gateway.nix { };
|
||||
goland = mkBinIde ./ides/goland.nix { };
|
||||
idea = mkBinIde ./ides/idea.nix { };
|
||||
idea-oss = _idea-oss;
|
||||
mps = mkBinIde ./ides/mps.nix { };
|
||||
phpstorm = mkBinIde ./ides/phpstorm.nix { };
|
||||
pycharm = mkBinIde ./ides/pycharm.nix { inherit pyCharmCommonOverrides; };
|
||||
pycharm-oss = mkSrcIde ./ides/pycharm-oss.nix { inherit pyCharmCommonOverrides; };
|
||||
rider = mkBinIde ./ides/rider.nix { inherit patchSharedLibs; };
|
||||
ruby-mine = mkBinIde ./ides/ruby-mine.nix { };
|
||||
rust-rover = mkBinIde ./ides/rust-rover.nix { inherit patchSharedLibs; };
|
||||
webstorm = mkBinIde ./ides/webstorm.nix { };
|
||||
clion = callPackage ./ides/clion.nix { };
|
||||
datagrip = callPackage ./ides/datagrip.nix { };
|
||||
dataspell = callPackage ./ides/dataspell.nix { };
|
||||
gateway = callPackage ./ides/gateway.nix { };
|
||||
goland = callPackage ./ides/goland.nix { };
|
||||
idea = callPackage ./ides/idea.nix { };
|
||||
idea-oss = callPackage ./ides/idea-oss.nix { };
|
||||
mps = callPackage ./ides/mps.nix { };
|
||||
phpstorm = callPackage ./ides/phpstorm.nix { };
|
||||
pycharm = callPackage ./ides/pycharm.nix { };
|
||||
pycharm-oss = callPackage ./ides/pycharm-oss.nix { };
|
||||
rider = callPackage ./ides/rider.nix { };
|
||||
ruby-mine = callPackage ./ides/ruby-mine.nix { };
|
||||
rust-rover = callPackage ./ides/rust-rover.nix { };
|
||||
webstorm = callPackage ./ides/webstorm.nix { };
|
||||
|
||||
# Plugins
|
||||
plugins = callPackage ./plugins { };
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
#!@shell@
|
||||
|
||||
compileCythonDebugSpeedupsHook() {
|
||||
echo "compiling cython debug speedups" >&2
|
||||
if [[ -d plugins/python-ce ]]; then
|
||||
@python@ plugins/python-ce/helpers/pydev/setup_cython.py build_ext --inplace
|
||||
else
|
||||
@python@ plugins/python/helpers/pydev/setup_cython.py build_ext --inplace
|
||||
fi
|
||||
}
|
||||
|
||||
preInstallHooks+=(compileCythonDebugSpeedupsHook)
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
# keep-sorted start
|
||||
bash,
|
||||
lib,
|
||||
makeSetupHook,
|
||||
python3,
|
||||
# keep-sorted end
|
||||
}:
|
||||
/**
|
||||
See https://www.jetbrains.com/help/pycharm/2026.2/cython-speedups.html
|
||||
*/
|
||||
makeSetupHook {
|
||||
name = "cython-debug-speedups-hook";
|
||||
substitutions = {
|
||||
shell = lib.getExe bash;
|
||||
python = python3.interpreter;
|
||||
};
|
||||
meta = {
|
||||
description = "Setup hook that applies Cython-based debugger speedups from JetBrains";
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
};
|
||||
} ./cython-debug-speedups-hook.sh
|
||||
@@ -0,0 +1,18 @@
|
||||
#!@shell@
|
||||
|
||||
jetbrainsPatchSharedLibs() {
|
||||
ls -d \
|
||||
$out/*/bin/*/linux/*/lib/liblldb.so \
|
||||
$out/*/bin/*/linux/*/lib/python3.*/lib-dynload/* \
|
||||
$out/*/plugins/*/bin/*/linux/*/lib/liblldb.so \
|
||||
$out/*/plugins/*/bin/*/linux/*/lib/python3.*/lib-dynload/* |
|
||||
xargs @patchelf@ \
|
||||
--replace-needed libssl.so.10 libssl.so \
|
||||
--replace-needed libssl.so.1.1 libssl.so \
|
||||
--replace-needed libcrypto.so.10 libcrypto.so \
|
||||
--replace-needed libcrypto.so.1.1 libcrypto.so \
|
||||
--replace-needed libcrypt.so.1 libcrypt.so \
|
||||
@darwinLibxml@
|
||||
}
|
||||
|
||||
preFixupHooks+=(jetbrainsPatchSharedLibs)
|
||||
19
pkgs/applications/editors/jetbrains/hooks/shared-libs.nix
Normal file
19
pkgs/applications/editors/jetbrains/hooks/shared-libs.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
# keep-sorted start
|
||||
lib,
|
||||
makeSetupHook,
|
||||
patchelf,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
makeSetupHook {
|
||||
name = "shared-libs-hook";
|
||||
substitutions = {
|
||||
patchelf = lib.getExe patchelf;
|
||||
darwinLibxml = lib.optionalString stdenv.hostPlatform.isAarch "--replace-needed libxml2.so.2 libxml2.so";
|
||||
};
|
||||
meta = {
|
||||
description = "Setup hook that rewrites sonames in libraries bundled with JetBrains IDEs";
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
};
|
||||
} ./shared-libs-hook.sh
|
||||
@@ -1,20 +1,21 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
patchSharedLibs,
|
||||
# keep-sorted start
|
||||
dotnetCorePackages,
|
||||
python3,
|
||||
openssl,
|
||||
expat,
|
||||
fetchurl,
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
libxcrypt-legacy,
|
||||
libxml2,
|
||||
lttng-ust_2_12,
|
||||
musl,
|
||||
expat,
|
||||
libxml2,
|
||||
openssl,
|
||||
python3,
|
||||
stdenv,
|
||||
xz,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -35,8 +36,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
(mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
(jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "clion";
|
||||
|
||||
@@ -50,6 +51,15 @@ in
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ jetbrains.sharedLibsHook ];
|
||||
|
||||
buildInputs =
|
||||
lib.optionals stdenv.hostPlatform.isLinux [
|
||||
python3
|
||||
@@ -73,6 +83,7 @@ in
|
||||
mic92
|
||||
tymscar
|
||||
];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
@@ -90,9 +101,4 @@ in
|
||||
ln -s ${dotnetCorePackages.sdk_10_0-source}/share/dotnet $dir/dotnet
|
||||
done
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
${attrs.postFixup or ""}
|
||||
${patchSharedLibs}
|
||||
'';
|
||||
})
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -26,8 +27,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "datagrip";
|
||||
|
||||
@@ -41,6 +42,13 @@ mkJetBrainsProduct {
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
# NOTE: meta attrs are used for the Linux desktop entries and may cause rebuilds when changed
|
||||
meta = {
|
||||
homepage = "https://www.jetbrains.com/datagrip/";
|
||||
@@ -50,6 +58,7 @@ mkJetBrainsProduct {
|
||||
It allows you to quickly migrate and refactor relational databases, construct efficient, statically checked SQL queries and much more.
|
||||
'';
|
||||
maintainers = [ ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start case=no
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
libgcc,
|
||||
runCommand,
|
||||
R,
|
||||
runCommand,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -28,8 +30,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "dataspell";
|
||||
|
||||
@@ -43,6 +45,13 @@ mkJetBrainsProduct {
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
# NOTE: This `lib.optionals` is only here because the old Darwin builder ignored `buildInputs`.
|
||||
# DataSpell may need these, even on Darwin!
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
@@ -62,6 +71,7 @@ mkJetBrainsProduct {
|
||||
Mainly it integrates Jupyter notebooks in the IntelliJ platform.
|
||||
'';
|
||||
maintainers = with lib.maintainers; [ leona ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
libgcc,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -26,8 +28,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "gateway";
|
||||
|
||||
@@ -42,6 +44,13 @@ mkJetBrainsProduct {
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
buildInputs = [
|
||||
libgcc
|
||||
];
|
||||
@@ -52,6 +61,7 @@ mkJetBrainsProduct {
|
||||
description = "Remote development for JetBrains products";
|
||||
longDescription = "JetBrains Gateway is a lightweight launcher that connects a remote server with your local machine and opens your project in JetBrains Client.";
|
||||
maintainers = [ ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
libgcc,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -26,8 +28,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
(mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
(jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "goland";
|
||||
|
||||
@@ -41,6 +43,13 @@ in
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
extraWrapperArgs = [
|
||||
# fortify source breaks build since delve compiles with -O0
|
||||
''--prefix CGO_CPPFLAGS " " "-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0"''
|
||||
@@ -58,6 +67,7 @@ in
|
||||
The IDE extends the IntelliJ platform with the coding assistance and tool integrations specific for the Go language.
|
||||
'';
|
||||
maintainers = with lib.maintainers; [ tymscar ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
{
|
||||
# keep-sorted start
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
lib,
|
||||
mkJetBrainsProduct,
|
||||
mkJetBrainsSource,
|
||||
maven,
|
||||
stdenv,
|
||||
zlib,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
src = mkJetBrainsSource {
|
||||
src = jetbrains.mkJetBrainsSource {
|
||||
# update-script-start: source-args
|
||||
version = "2025.3.4";
|
||||
buildNumber = "253.32098.37";
|
||||
@@ -35,14 +38,17 @@ let
|
||||
# update-script-end: source-args
|
||||
};
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit src;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit src fsnotifier;
|
||||
inherit (src)
|
||||
version
|
||||
buildNumber
|
||||
libdbm
|
||||
fsnotifier
|
||||
;
|
||||
# this is jetbrains-libdbm but using the sources from the IDE build.
|
||||
jetbrains-libdbm = src.libdbm;
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk = if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk then jetbrains.jdk else null;
|
||||
|
||||
pname = "idea-oss";
|
||||
|
||||
@@ -68,6 +74,7 @@ mkJetBrainsProduct {
|
||||
gytis-ivaskevicius
|
||||
tymscar
|
||||
];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.asl20;
|
||||
sourceProvenance = [ lib.sourceTypes.fromSource ];
|
||||
knownVulnerabilities = [
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
maven,
|
||||
zlib,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
lldb,
|
||||
maven,
|
||||
musl,
|
||||
stdenv,
|
||||
zlib,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -29,8 +31,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "idea";
|
||||
|
||||
@@ -45,6 +47,13 @@ mkJetBrainsProduct {
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
extraLdPath = [ zlib ];
|
||||
extraWrapperArgs = [
|
||||
''--set M2_HOME "${maven}/maven"''
|
||||
@@ -52,8 +61,10 @@ mkJetBrainsProduct {
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
# keep-sorted start
|
||||
lldb
|
||||
musl
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
# NOTE: meta attrs are used for the Linux desktop entries and may cause rebuilds when changed
|
||||
@@ -68,6 +79,7 @@ mkJetBrainsProduct {
|
||||
gytis-ivaskevicius
|
||||
tymscar
|
||||
];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -26,8 +27,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "mps";
|
||||
|
||||
@@ -41,12 +42,20 @@ mkJetBrainsProduct {
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
# NOTE: meta attrs are used for the Linux desktop entries and may cause rebuilds when changed
|
||||
meta = {
|
||||
homepage = "https://www.jetbrains.com/mps/";
|
||||
description = "IDE for building domain-specific languages from JetBrains";
|
||||
longDescription = "A metaprogramming system which uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams.";
|
||||
maintainers = [ ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
musl,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -26,8 +28,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "phpstorm";
|
||||
|
||||
@@ -41,6 +43,13 @@ mkJetBrainsProduct {
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
musl
|
||||
];
|
||||
@@ -51,6 +60,7 @@ mkJetBrainsProduct {
|
||||
description = "PHP IDE from JetBrains";
|
||||
longDescription = "PhpStorm provides an editor for PHP, HTML and JavaScript with on-the-fly code analysis, error prevention and automated refactorings for PHP and JavaScript code.";
|
||||
maintainers = with lib.maintainers; [ tymscar ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
{
|
||||
# keep-sorted start
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
lib,
|
||||
mkJetBrainsProduct,
|
||||
mkJetBrainsSource,
|
||||
pyCharmCommonOverrides,
|
||||
python3,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
src = mkJetBrainsSource {
|
||||
src = jetbrains.mkJetBrainsSource {
|
||||
# update-script-start: source-args
|
||||
version = "2025.3.3";
|
||||
buildNumber = "253.31033.139";
|
||||
@@ -34,14 +37,17 @@ let
|
||||
# update-script-end: source-args
|
||||
};
|
||||
in
|
||||
(mkJetBrainsProduct {
|
||||
inherit src;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit src fsnotifier;
|
||||
inherit (src)
|
||||
version
|
||||
buildNumber
|
||||
libdbm
|
||||
fsnotifier
|
||||
;
|
||||
# this is jetbrains-libdbm but using the sources from the IDE build.
|
||||
jetbrains-libdbm = src.libdbm;
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk = if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk then jetbrains.jdk else null;
|
||||
|
||||
pname = "pycharm-oss";
|
||||
|
||||
@@ -49,6 +55,14 @@ in
|
||||
product = "PyCharm Open Source";
|
||||
productShort = "PyCharm";
|
||||
|
||||
nativeBuildInputs = [
|
||||
# keep-sorted start
|
||||
jetbrains.cythonDebugSpeedupsHook
|
||||
python3
|
||||
python3.pkgs.setuptools
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
# NOTE: meta attrs are used for the Linux desktop entries and may cause rebuilds when changed
|
||||
meta = {
|
||||
homepage = "https://www.jetbrains.com/pycharm/";
|
||||
@@ -61,6 +75,7 @@ in
|
||||
maintainers = with lib.maintainers; [
|
||||
tymscar
|
||||
];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.asl20;
|
||||
sourceProvenance = [ lib.sourceTypes.fromSource ];
|
||||
knownVulnerabilities = [
|
||||
@@ -70,5 +85,4 @@ in
|
||||
''
|
||||
];
|
||||
};
|
||||
}).overrideAttrs
|
||||
pyCharmCommonOverrides
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
pyCharmCommonOverrides,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
musl,
|
||||
python3,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -27,8 +29,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
(mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "pycharm";
|
||||
|
||||
@@ -42,6 +44,21 @@ in
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
nativeBuildInputs = [
|
||||
# keep-sorted start
|
||||
jetbrains.cythonDebugSpeedupsHook
|
||||
python3
|
||||
python3.pkgs.setuptools
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
musl
|
||||
];
|
||||
@@ -58,6 +75,7 @@ in
|
||||
maintainers = with lib.maintainers; [
|
||||
tymscar
|
||||
];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
@@ -65,5 +83,4 @@ in
|
||||
else
|
||||
[ lib.sourceTypes.binaryBytecode ];
|
||||
};
|
||||
}).overrideAttrs
|
||||
pyCharmCommonOverrides
|
||||
}
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
dotnetCorePackages,
|
||||
expat,
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
patchSharedLibs,
|
||||
openssl,
|
||||
libxcrypt,
|
||||
lttng-ust_2_12,
|
||||
musl,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
libice,
|
||||
libsm,
|
||||
libx11,
|
||||
dotnetCorePackages,
|
||||
libxcb-keysyms,
|
||||
expat,
|
||||
libxcrypt,
|
||||
libxml2,
|
||||
lttng-ust_2_12,
|
||||
musl,
|
||||
openssl,
|
||||
stdenv,
|
||||
xz,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -38,8 +39,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
(mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
(jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "rider";
|
||||
|
||||
@@ -53,26 +54,41 @@ in
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ jetbrains.sharedLibsHook ];
|
||||
|
||||
# TODO: Some of these dependencies should probably also be added on Darwin - however it seems that JetBrains bundles them all? Unclear.
|
||||
# Somebody with a Darwin machine should investigate this.
|
||||
buildInputs =
|
||||
lib.optionals stdenv.hostPlatform.isLinux [
|
||||
openssl
|
||||
# keep-sorted start
|
||||
libxcb-keysyms
|
||||
libxcrypt
|
||||
lttng-ust_2_12
|
||||
musl
|
||||
libxcb-keysyms
|
||||
openssl
|
||||
# keep-sorted end
|
||||
]
|
||||
++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch) [
|
||||
# keep-sorted start
|
||||
expat
|
||||
libxml2
|
||||
xz
|
||||
# keep-sorted end
|
||||
];
|
||||
extraLdPath = lib.optionals (stdenv.hostPlatform.isLinux) [
|
||||
# keep-sorted start
|
||||
# Avalonia dependencies needed for dotMemory
|
||||
libice
|
||||
libsm
|
||||
libx11
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
# NOTE: meta attrs are used for the Linux desktop entries and may cause rebuilds when changed
|
||||
@@ -85,6 +101,7 @@ in
|
||||
This lets you develop a wide array of applications including .NET desktop apps, services and libraries, Unity games, ASP.NET and ASP.NET Core web applications.
|
||||
'';
|
||||
maintainers = with lib.maintainers; [ raphaelr ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
@@ -94,11 +111,10 @@ in
|
||||
};
|
||||
}).overrideAttrs
|
||||
(attrs: {
|
||||
# TODO: It is not correct to bundle the .NET in nixpkgs as-is, see https://github.com/NixOS/nixpkgs/issues/489048
|
||||
postInstall =
|
||||
(attrs.postInstall or "")
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
${patchSharedLibs}
|
||||
|
||||
for dir in $out/rider/lib/ReSharperHost/linux-*; do
|
||||
rm -rf $dir/dotnet
|
||||
ln -s ${dotnetCorePackages.sdk_10_0-source}/share/dotnet $dir/dotnet
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
musl,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -26,8 +28,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "ruby-mine";
|
||||
|
||||
@@ -41,6 +43,13 @@ mkJetBrainsProduct {
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
musl
|
||||
];
|
||||
@@ -51,6 +60,7 @@ mkJetBrainsProduct {
|
||||
description = "Ruby IDE from JetBrains";
|
||||
longDescription = "Ruby IDE from JetBrains";
|
||||
maintainers = with lib.maintainers; [ tymscar ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
patchSharedLibs,
|
||||
python3,
|
||||
openssl,
|
||||
libxcrypt-legacy,
|
||||
# keep-sorted start
|
||||
expat,
|
||||
fetchurl,
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
libxcrypt-legacy,
|
||||
libxml2,
|
||||
openssl,
|
||||
python3,
|
||||
stdenv,
|
||||
xz,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -32,8 +33,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
(mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "rust-rover";
|
||||
|
||||
@@ -47,16 +48,29 @@ in
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ jetbrains.sharedLibsHook ];
|
||||
|
||||
buildInputs =
|
||||
lib.optionals stdenv.hostPlatform.isLinux [
|
||||
python3
|
||||
openssl
|
||||
# keep-sorted start
|
||||
libxcrypt-legacy
|
||||
openssl
|
||||
python3
|
||||
# keep-sorted end
|
||||
]
|
||||
++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch) [
|
||||
# keep-sorted start
|
||||
expat
|
||||
libxml2
|
||||
xz
|
||||
# keep-sorted end
|
||||
];
|
||||
|
||||
# NOTE: meta attrs are used for the Linux desktop entries and may cause rebuilds when changed
|
||||
@@ -65,6 +79,7 @@ in
|
||||
description = "Rust IDE from JetBrains";
|
||||
longDescription = "Rust IDE from JetBrains";
|
||||
maintainers = [ ];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
@@ -72,10 +87,4 @@ in
|
||||
else
|
||||
[ lib.sourceTypes.binaryBytecode ];
|
||||
};
|
||||
}).overrideAttrs
|
||||
(attrs: {
|
||||
postFixup = ''
|
||||
${attrs.postFixup or ""}
|
||||
${patchSharedLibs}
|
||||
'';
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
mkJetBrainsProduct,
|
||||
libdbm,
|
||||
fsnotifier,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
lib,
|
||||
musl,
|
||||
stdenv,
|
||||
# keep-sorted end
|
||||
}:
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
@@ -26,8 +28,8 @@ let
|
||||
};
|
||||
# update-script-end: urls
|
||||
in
|
||||
mkJetBrainsProduct {
|
||||
inherit libdbm fsnotifier;
|
||||
jetbrains.mkJetBrainsProduct {
|
||||
inherit jetbrains-libdbm fsnotifier;
|
||||
|
||||
pname = "webstorm";
|
||||
|
||||
@@ -41,6 +43,13 @@ mkJetBrainsProduct {
|
||||
|
||||
src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}"));
|
||||
|
||||
# the jdk is bundled on Darwin.
|
||||
jdk =
|
||||
if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk-no-jcef then
|
||||
jetbrains.jdk-no-jcef
|
||||
else
|
||||
null;
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
musl
|
||||
];
|
||||
@@ -54,6 +63,7 @@ mkJetBrainsProduct {
|
||||
abaldeau
|
||||
tymscar
|
||||
];
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
license = lib.licenses.unfree;
|
||||
sourceProvenance =
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
{
|
||||
# keep-sorted start
|
||||
autoPatchelfHook,
|
||||
callPackage,
|
||||
darwin,
|
||||
fetchurl,
|
||||
fetchzip,
|
||||
glib,
|
||||
lib,
|
||||
stdenv,
|
||||
callPackage,
|
||||
autoPatchelfHook,
|
||||
glib,
|
||||
darwin,
|
||||
# keep-sorted end
|
||||
}:
|
||||
{
|
||||
tests = callPackage ./tests.nix { };
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
{
|
||||
# keep-sorted start
|
||||
fetchurl,
|
||||
fetchzip,
|
||||
jetbrains,
|
||||
symlinkJoin,
|
||||
lib,
|
||||
runCommand,
|
||||
fetchzip,
|
||||
fetchurl,
|
||||
symlinkJoin,
|
||||
# keep-sorted end
|
||||
|
||||
# If not set, all IDEs are tested.
|
||||
ide ? null,
|
||||
}:
|
||||
@@ -14,21 +17,23 @@ let
|
||||
if ide == null then
|
||||
with jetbrains;
|
||||
[
|
||||
# keep-sorted start
|
||||
clion
|
||||
datagrip
|
||||
dataspell
|
||||
gateway
|
||||
goland
|
||||
idea-oss
|
||||
idea
|
||||
idea-oss
|
||||
mps
|
||||
phpstorm
|
||||
pycharm-oss
|
||||
pycharm
|
||||
pycharm-oss
|
||||
rider
|
||||
ruby-mine
|
||||
rust-rover
|
||||
webstorm
|
||||
# keep-sorted end
|
||||
]
|
||||
else
|
||||
[ ide ];
|
||||
|
||||
@@ -56,13 +56,15 @@ Any comments or other manual changes between these markers will be removed when
|
||||
- Add it to `default.nix`
|
||||
|
||||
### TODO:
|
||||
- move PyCharm overrides to a common place outside of `default.nix`
|
||||
- package `patchSharedLibs` from `default.nix` as a hook
|
||||
- cleanup this TODO list, especially the following points, which have been here since 2023
|
||||
- get rid of remaining `overrideAttrs` in IDE drvs:
|
||||
- see https://github.com/NixOS/nixpkgs/pull/475183#discussion_r2655348886
|
||||
- see https://github.com/NixOS/nixpkgs/pull/475183#discussion_r2655305961
|
||||
- cleanup this TODO list, especially the following points, which (mostly) have been here since 2023
|
||||
- replace `libxcrypt-legacy` with `libxcrypt` when supported
|
||||
- make `jetbrains-remote-dev.patch` cleaner
|
||||
- is extraLdPath needed for IDEA?
|
||||
- from source builds:
|
||||
- switch to Bazel builds, see https://github.com/NixOS/nixpkgs/pull/531637
|
||||
- remove timestamps in output `.jar` of `jps-bootstrap`
|
||||
- automated update scripts
|
||||
- fetch `.jar`s from stuff built in nixpkgs when available
|
||||
|
||||
@@ -1,28 +1,24 @@
|
||||
{
|
||||
# keep-sorted start
|
||||
ant,
|
||||
callPackage,
|
||||
fetchFromGitHub,
|
||||
fetchurl,
|
||||
fetchzip,
|
||||
fsnotifier,
|
||||
glibc,
|
||||
jetbrains,
|
||||
jetbrains-libdbm,
|
||||
kotlin,
|
||||
lib,
|
||||
linkFarm,
|
||||
makeWrapper,
|
||||
runCommand,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
rustPlatform,
|
||||
callPackage,
|
||||
|
||||
ant,
|
||||
cmake,
|
||||
fsnotifier,
|
||||
glib,
|
||||
glibc,
|
||||
jetbrains,
|
||||
kotlin,
|
||||
libdbusmenu,
|
||||
maven,
|
||||
p7zip,
|
||||
pkg-config,
|
||||
libx11,
|
||||
runCommand,
|
||||
rustPlatform,
|
||||
stdenvNoCC,
|
||||
# keep-sorted end
|
||||
}:
|
||||
{
|
||||
version,
|
||||
@@ -67,59 +63,11 @@ let
|
||||
cp -r ${androidSrc} $out/android
|
||||
'';
|
||||
|
||||
libdbusmenu-jb = libdbusmenu.overrideAttrs (old: {
|
||||
version = "jetbrains-fork";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jetbrains";
|
||||
repo = "libdbusmenu";
|
||||
rev = "d8a49303f908a272e6670b7cee65a2ba7c447875";
|
||||
hash = "sha256-u87ZgbfeCPJ0qG8gsom3gFaZxbS5NcHEodb0EVakk60=";
|
||||
};
|
||||
configureFlags = old.configureFlags ++ [
|
||||
"--enable-static"
|
||||
];
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib
|
||||
cp libdbusmenu-glib/.libs/libdbusmenu-glib.a $out/lib
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
# Use the libdbm version in our src.
|
||||
libdbm = jetbrains-libdbm.overrideAttrs (finalAttrs: {
|
||||
inherit src version;
|
||||
});
|
||||
|
||||
libdbm = stdenv.mkDerivation {
|
||||
pname = "libdbm";
|
||||
version = buildNumber;
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
buildInputs = [
|
||||
glib
|
||||
libx11
|
||||
libdbusmenu
|
||||
];
|
||||
inherit src;
|
||||
sourceRoot = "${src.name}/native/LinuxGlobalMenu";
|
||||
patches = [ ../patches/libdbm-headers.patch ];
|
||||
postPatch = ''
|
||||
# Fix the build with CMake 4.
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail 'cmake_minimum_required(VERSION 2.6.0)' 'cmake_minimum_required(VERSION 3.10)'
|
||||
cp ${libdbusmenu-jb}/lib/libdbusmenu-glib.a libdbusmenu-glib.a
|
||||
'';
|
||||
passthru.patched-libdbusmenu = libdbusmenu-jb;
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib
|
||||
mv libdbm.so $out/lib/libdbm.so
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
|
||||
restarter = rustPlatform.buildRustPackage {
|
||||
pname = "restarter";
|
||||
version = buildNumber;
|
||||
@@ -130,8 +78,10 @@ let
|
||||
|
||||
# Allow static linking
|
||||
buildInputs = [
|
||||
# keep-sorted start
|
||||
glibc
|
||||
glibc.static
|
||||
# keep-sorted end
|
||||
];
|
||||
};
|
||||
|
||||
@@ -143,9 +93,11 @@ let
|
||||
inherit src;
|
||||
sourceRoot = "${src.name}/platform/jps-bootstrap";
|
||||
nativeBuildInputs = [
|
||||
# keep-sorted start
|
||||
ant
|
||||
makeWrapper
|
||||
jbr
|
||||
makeWrapper
|
||||
# keep-sorted end
|
||||
];
|
||||
patches = [ ../patches/kotlinc-path.patch ];
|
||||
postPatch = "sed -i 's|KOTLIN_PATH_HERE|${kotlin'}|' src/main/java/org/jetbrains/jpsBootstrap/KotlinCompiler.kt";
|
||||
@@ -237,9 +189,11 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
name = "${finalAttrs.pname}-${version}.tar.gz";
|
||||
inherit src;
|
||||
nativeBuildInputs = [
|
||||
p7zip
|
||||
# keep-sorted start
|
||||
jbr
|
||||
jps-bootstrap
|
||||
p7zip
|
||||
# keep-sorted end
|
||||
];
|
||||
repo = mvnRepo;
|
||||
|
||||
@@ -316,8 +270,8 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
inherit
|
||||
version
|
||||
buildNumber
|
||||
# this is jetbrains-libdbm but using the sources from the IDE build.
|
||||
libdbm
|
||||
fsnotifier
|
||||
jps-bootstrap
|
||||
;
|
||||
};
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
{
|
||||
runCommand,
|
||||
# keep-sorted start
|
||||
ant,
|
||||
jbr,
|
||||
|
||||
jpsHash,
|
||||
runCommand,
|
||||
src,
|
||||
# keep-sorted end
|
||||
}:
|
||||
runCommand "jps-bootstrap-repository"
|
||||
{
|
||||
@@ -12,8 +13,10 @@ runCommand "jps-bootstrap-repository"
|
||||
outputHashMode = "recursive";
|
||||
outputHash = jpsHash;
|
||||
nativeBuildInputs = [
|
||||
# keep-sorted start
|
||||
ant
|
||||
jbr
|
||||
# keep-sorted end
|
||||
];
|
||||
}
|
||||
''
|
||||
|
||||
96
pkgs/by-name/je/jetbrains-libdbm/libdbusmenu.nix
Normal file
96
pkgs/by-name/je/jetbrains-libdbm/libdbusmenu.nix
Normal file
@@ -0,0 +1,96 @@
|
||||
{
|
||||
dbus-glib,
|
||||
fetchFromGitHub,
|
||||
file,
|
||||
glib,
|
||||
gobject-introspection,
|
||||
intltool,
|
||||
json-glib,
|
||||
lib,
|
||||
pkg-config,
|
||||
stdenv,
|
||||
vala,
|
||||
}:
|
||||
# This is directly based on ../../li/libdbusmenu .
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libdbusmenu-glib";
|
||||
version = "16.04.0-jetbrains-fork-2022-05-18";
|
||||
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jetbrains";
|
||||
repo = "libdbusmenu";
|
||||
rev = "d8a49303f908a272e6670b7cee65a2ba7c447875";
|
||||
hash = "sha256-u87ZgbfeCPJ0qG8gsom3gFaZxbS5NcHEodb0EVakk60=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
vala
|
||||
pkg-config
|
||||
intltool
|
||||
gobject-introspection
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glib
|
||||
dbus-glib
|
||||
json-glib
|
||||
];
|
||||
|
||||
patches = [
|
||||
./requires-glib.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
for f in {configure,ltmain.sh,m4/libtool.m4}; do
|
||||
substituteInPlace $f \
|
||||
--replace /usr/bin/file ${file}/bin/file
|
||||
done
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
export HAVE_VALGRIND_TRUE="#"
|
||||
export HAVE_VALGRIND_FALSE=""
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
"CFLAGS=-Wno-error"
|
||||
"--sysconfdir=/etc"
|
||||
"--localstatedir=/var"
|
||||
"--disable-gtk"
|
||||
"--disable-dumper"
|
||||
"--disable-scrollkeeper"
|
||||
# jb:
|
||||
"--enable-static"
|
||||
];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
installFlags = [
|
||||
"sysconfdir=${placeholder "out"}/etc"
|
||||
"localstatedir=\${TMPDIR}"
|
||||
"typelibdir=${placeholder "out"}/lib/girepository-1.0"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/lib
|
||||
cp libdbusmenu-glib/.libs/libdbusmenu-glib.a $out/lib
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Library for passing menu structures across DBus";
|
||||
homepage = "https://launchpad.net/dbusmenu";
|
||||
license = with lib.licenses; [
|
||||
gpl3
|
||||
lgpl21
|
||||
lgpl3
|
||||
];
|
||||
pkgConfigModules = [
|
||||
"dbusmenu-glib-0.4"
|
||||
"dbusmenu-jsonloader-0.4"
|
||||
];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
})
|
||||
68
pkgs/by-name/je/jetbrains-libdbm/package.nix
Normal file
68
pkgs/by-name/je/jetbrains-libdbm/package.nix
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
callPackage,
|
||||
cmake,
|
||||
fetchFromGitHub,
|
||||
glib,
|
||||
lib,
|
||||
libx11,
|
||||
pkg-config,
|
||||
stdenv,
|
||||
}:
|
||||
let
|
||||
libdbusmenu-jb = callPackage ./libdbusmenu.nix { };
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "jetbrains-libdbm";
|
||||
# nixpkgs-update: no auto update
|
||||
# In practice this package does not need to be regularly updated,
|
||||
# at the time of writing the last change was 4 years ago.
|
||||
# Check before updating.
|
||||
version = "2025.3.4";
|
||||
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jetbrains";
|
||||
repo = "intellij-community";
|
||||
tag = "idea/${finalAttrs.version}";
|
||||
hash = "sha256-5rPaXIGOeWY9tcHRs5p376kgo4EbUtEltwcmNpPSsM8=";
|
||||
};
|
||||
sourceRoot = "source/native/LinuxGlobalMenu";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glib
|
||||
libx11
|
||||
libdbusmenu-jb
|
||||
];
|
||||
|
||||
patches = [ ./headers.patch ];
|
||||
postPatch = ''
|
||||
# Fix the build with CMake 4.
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail 'cmake_minimum_required(VERSION 2.6.0)' 'cmake_minimum_required(VERSION 3.10)'
|
||||
cp ${libdbusmenu-jb}/lib/libdbusmenu-glib.a libdbusmenu-glib.a
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib
|
||||
mv libdbm.so $out/lib/libdbm.so
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "libdbusmenu wrapper by JetBrains for their IDEs";
|
||||
homepage = "https://github.com/JetBrains/intellij-community/tree/master/native/LinuxGlobalMenu";
|
||||
license = lib.licenses.asl20;
|
||||
teams = [ lib.teams.jetbrains ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
11
pkgs/by-name/je/jetbrains-libdbm/requires-glib.patch
Normal file
11
pkgs/by-name/je/jetbrains-libdbm/requires-glib.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- a/libdbusmenu-glib/dbusmenu-glib-0.4.pc.in
|
||||
+++ b/libdbusmenu-glib/dbusmenu-glib-0.4.pc.in
|
||||
@@ -5,7 +5,7 @@
|
||||
includedir=@includedir@
|
||||
|
||||
Cflags: -I${includedir}/libdbusmenu-glib-0.4
|
||||
-Requires:
|
||||
+Requires: glib-2.0
|
||||
Libs: -L${libdir} -ldbusmenu-glib
|
||||
|
||||
Name: libdbusmenu-glib
|
||||
@@ -223,11 +223,11 @@ jdk.overrideAttrs (oldAttrs: {
|
||||
your own risk.
|
||||
'';
|
||||
homepage = "https://confluence.jetbrains.com/display/JBR/JetBrains+Runtime";
|
||||
inherit (jdk.meta) license platforms mainProgram;
|
||||
inherit (jdk.meta) license mainProgram;
|
||||
maintainers = with lib.maintainers; [
|
||||
aoli-al
|
||||
];
|
||||
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user