Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions pkgs/applications/editors/jetbrains/bin/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.5.tar.gz",
"build_number": "252.28238.7"
},
"idea-ultimate": {
"idea": {
"update-channel": "IntelliJ IDEA RELEASE",
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.tar.gz",
"version": "2025.2.5",
Expand Down Expand Up @@ -89,12 +89,12 @@
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.5.tar.gz",
"build_number": "252.28238.29"
},
"pycharm-professional": {
"pycharm": {
"update-channel": "PyCharm RELEASE",
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.tar.gz",
"url-template": "https://download.jetbrains.com/python/pycharm-{version}.tar.gz",
"version": "2025.2.5",
"sha256": "b1e47419e5844c38e7a7a9be9e5260c75cea6aa8423f2584dc1727f792d5feb4",
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.5.tar.gz",
"url": "https://download.jetbrains.com/python/pycharm-2025.2.5.tar.gz",
"build_number": "252.28238.29"
},
"rider": {
Expand Down Expand Up @@ -195,7 +195,7 @@
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.5-aarch64.tar.gz",
"build_number": "252.28238.7"
},
"idea-ultimate": {
"idea": {
"update-channel": "IntelliJ IDEA RELEASE",
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.tar.gz",
"version": "2025.2.5",
Expand Down Expand Up @@ -228,12 +228,12 @@
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.5-aarch64.tar.gz",
"build_number": "252.28238.29"
},
"pycharm-professional": {
"pycharm": {
"update-channel": "PyCharm RELEASE",
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.tar.gz",
"url-template": "https://download.jetbrains.com/python/pycharm-{version}-aarch64.tar.gz",
"version": "2025.2.5",
"sha256": "7037672c6913f643ec4979ca5f16791588e001ffd39f830d874587f79e358be2",
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.5-aarch64.tar.gz",
"url": "https://download.jetbrains.com/python/pycharm-2025.2.5-aarch64.tar.gz",
"build_number": "252.28238.29"
},
"rider": {
Expand Down Expand Up @@ -334,7 +334,7 @@
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.5.dmg",
"build_number": "252.28238.7"
},
"idea-ultimate": {
"idea": {
"update-channel": "IntelliJ IDEA RELEASE",
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.dmg",
"version": "2025.2.5",
Expand Down Expand Up @@ -367,12 +367,12 @@
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.5.dmg",
"build_number": "252.28238.29"
},
"pycharm-professional": {
"pycharm": {
"update-channel": "PyCharm RELEASE",
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.dmg",
"url-template": "https://download.jetbrains.com/python/pycharm-{version}.dmg",
"version": "2025.2.5",
"sha256": "00eccdeb39bd8eeaed1b98ad99f542fbc3851389f9e7d19355d05dfd979eb669",
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.5.dmg",
"url": "https://download.jetbrains.com/python/pycharm-2025.2.5.dmg",
"build_number": "252.28238.29"
},
"rider": {
Expand Down Expand Up @@ -473,7 +473,7 @@
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.5-aarch64.dmg",
"build_number": "252.28238.7"
},
"idea-ultimate": {
"idea": {
"update-channel": "IntelliJ IDEA RELEASE",
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.dmg",
"version": "2025.2.5",
Expand Down Expand Up @@ -506,12 +506,12 @@
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.5-aarch64.dmg",
"build_number": "252.28238.29"
},
"pycharm-professional": {
"pycharm": {
"update-channel": "PyCharm RELEASE",
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.dmg",
"url-template": "https://download.jetbrains.com/python/pycharm-{version}-aarch64.dmg",
"version": "2025.2.5",
"sha256": "71da1283259bc59897e5bb43c6c3771a72d026419ed4d79192889ea3885ac0de",
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.5-aarch64.dmg",
"url": "https://download.jetbrains.com/python/pycharm-2025.2.5-aarch64.dmg",
"build_number": "252.28238.29"
},
"rider": {
Expand Down
146 changes: 90 additions & 56 deletions pkgs/applications/editors/jetbrains/default.nix
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
let
# `ides.json` is handwritten and contains information that doesn't change across updates, like maintainers and other metadata
# `versions.json` contains everything generated/needed by the update script version numbers, build numbers and tarball hashes
ideInfo = builtins.fromJSON (builtins.readFile ./bin/ides.json);
ideInfo = builtins.fromJSON (builtins.readFile ./ides.json);
versions = builtins.fromJSON (builtins.readFile ./bin/versions.json);
in

{
config,
lib,
stdenv,
callPackage,
Expand Down Expand Up @@ -116,16 +117,8 @@ let
passthru.tests = extraTests // {
plugins = callPackage ./plugins/tests.nix { ideName = pname; };
};
libdbm =
if ideInfo."${pname}".meta.isOpenSource then
communitySources."${pname}".libdbm
else
communitySources.idea-community.libdbm;
fsnotifier =
if ideInfo."${pname}".meta.isOpenSource then
communitySources."${pname}".fsnotifier
else
communitySources.idea-community.fsnotifier;
libdbm = communitySources."${pname}".libdbm or communitySources.idea-oss.libdbm;
fsnotifier = communitySources."${pname}".fsnotifier or communitySources.idea-oss.fsnotifier;
};

communitySources = callPackage ./source { };
Expand Down Expand Up @@ -181,16 +174,30 @@ let
--replace-needed libcrypt.so.1 libcrypt.so \
${lib.optionalString stdenv.hostPlatform.isAarch "--replace-needed libxml2.so.2 libxml2.so"}
'';
in
rec {
# Sorted alphabetically

aqua = mkJetBrainsProduct {
pname = "aqua";
# TODO: These can be moved down again when we don't need the aliases anymore:
_idea = buildIdea {
pname = "idea";
extraBuildInputs = [
lldb
musl
];
};
_idea-oss = buildIdea {
pname = "idea-oss";
fromSource = true;
};
_pycharm = buildPycharm {
pname = "pycharm";
extraBuildInputs = [ musl ];
};
_pycharm-oss = buildPycharm {
pname = "pycharm-oss";
fromSource = true;
};
in
{
# Sorted alphabetically. Deprecated products and aliases are at the very end.

clion =
(mkJetBrainsProduct {
Expand Down Expand Up @@ -270,28 +277,9 @@ rec {
'';
});

idea-community-bin = buildIdea {
pname = "idea-community";
};
idea = _idea;

idea-community-src = buildIdea {
pname = "idea-community";
fromSource = true;
};

idea-community =
if stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isAarch64 then
idea-community-bin
else
idea-community-src;

idea-ultimate = buildIdea {
pname = "idea-ultimate";
extraBuildInputs = [
lldb
musl
];
};
idea-oss = _idea-oss;

mps = mkJetBrainsProduct { pname = "mps"; };

Expand All @@ -302,20 +290,9 @@ rec {
];
};

pycharm-community-bin = buildPycharm { pname = "pycharm-community"; };
pycharm = _pycharm;

pycharm-community-src = buildPycharm {
pname = "pycharm-community";
fromSource = true;
};

pycharm-community =
if stdenv.hostPlatform.isDarwin then pycharm-community-bin else pycharm-community-src;

pycharm-professional = buildPycharm {
pname = "pycharm-professional";
extraBuildInputs = [ musl ];
};
pycharm-oss = _pycharm-oss;

rider =
(mkJetBrainsProduct {
Expand Down Expand Up @@ -390,13 +367,70 @@ rec {
];
};

writerside = mkJetBrainsProduct {
pname = "writerside";
extraBuildInputs = [
musl
];
};
# Plugins

plugins = callPackage ./plugins { };

}

// lib.optionalAttrs config.allowAliases rec {

# Deprecated products and aliases.

aqua =
lib.warnOnInstantiate
"jetbrains.aqua: Aqua has been discontinued by Jetbrains and is not receiving updates. It will be removed in NixOS 26.05."
(mkJetBrainsProduct {
pname = "aqua";
extraBuildInputs = [
lldb
];
});

idea-community =
lib.warnOnInstantiate
"jetbrains.idea-community: IntelliJ IDEA Community has been discontinued by Jetbrains. This deprecated alias uses the, no longer updated, binary build on Darwin & Linux aarch64. On other platforms it uses IDEA Open Source, built from source. Either switch to 'jetbrains.idea-oss' or 'jetbrains.idea'. See: https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/"
(
if stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isAarch64 then
idea-community-bin
else
_idea-oss
);

idea-community-bin =
lib.warnOnInstantiate
"jetbrains.idea-community-bin: IntelliJ IDEA Community has been discontinued by Jetbrains. This binary build is no longer updated. Switch to 'jetbrains.idea-oss' for open source builds (from source) or 'jetbrains.idea' for commercial builds (binary, unfree). See: https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/"
(buildIdea {
pname = "idea-community";
});

idea-ultimate = lib.warnOnInstantiate "'jetbrains.idea-ultimate' has been renamed to/replaced by 'jetbrains.idea'" _idea;

idea-community-src = lib.warnOnInstantiate "jetbrains.idea-community-src: IntelliJ IDEA Community has been discontinued by Jetbrains. This is now an alias for 'jetbrains.idea-oss', the Open Source build of IntelliJ. See: https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/" _idea-oss;

pycharm-community =
lib.warnOnInstantiate
"pycharm-comminity: PyCharm Community has been discontinued by Jetbrains. This deprecated alias uses the, no longer updated, binary build on Darwin. On Linux it uses PyCharm Open Source, built from source. Either switch to 'jetbrains.pycharm-oss' or 'jetbrains.pycharm'. See: https://blog.jetbrains.com/pycharm/2025/04/pycharm-2025"
(if stdenv.hostPlatform.isDarwin then pycharm-community-bin else _pycharm-oss);

pycharm-community-bin =
lib.warnOnInstantiate
"pycharm-comminity-bin: PyCharm Community has been discontinued by Jetbrains. This binary build is no longer updated. Switch to 'jetbrains.pycharm-oss' for open source builds (from source) or 'jetbrains.pycharm' for commercial builds (binary, unfree). See: https://blog.jetbrains.com/pycharm/2025/04/pycharm-2025"
(buildPycharm {
pname = "pycharm-community";
});

pycharm-community-src = lib.warnOnInstantiate "jetbrains.idea-community-src: PyCharm Community has been discontinued by Jetbrains. This is now an alias for 'jetbrains.pycharm-oss', the Open Source build of PyCharm. See: https://blog.jetbrains.com/pycharm/2025/04/pycharm-2025" _pycharm-oss;

pycharm-professional = lib.warnOnInstantiate "'jetbrains.pycharm-professional' has been renamed to/replaced by 'jetbrains.pycharm'" _pycharm;

writerside =
lib.warnOnInstantiate
"jetbrains.writerside: Writerside has been discontinued by Jetbrains and is not receiving updates. It will be removed in NixOS 26.05."
(mkJetBrainsProduct {
pname = "writerside";
extraBuildInputs = [
musl
];
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,25 +66,37 @@
"homepage": "https://www.jetbrains.com/go/"
}
},
"idea": {
"product": "IntelliJ IDEA",
"productShort": "IDEA",
"wmClass": "jetbrains-idea",
"meta": {
"isOpenSource": false,
"description": "Java, Kotlin, Groovy and Scala IDE from Jetbrains",
"maintainers": [ "gytis-ivaskevicius", "tymscar" ],
"longDescription": "IDE for Java SE, Groovy & Scala development Powerful environment for building Google Android apps Integration with JUnit, TestNG, popular SCMs, Ant & Maven. Also known as IntelliJ.",
"homepage": "https://www.jetbrains.com/idea/"
}
},
"idea-community": {
"product": "IntelliJ IDEA CE",
"productShort": "IDEA",
"wmClass": "jetbrains-idea-ce",
"meta": {
"isOpenSource": true,
"description": "Free Java, Kotlin, Groovy and Scala IDE from jetbrains",
"description": "Free Java, Kotlin, Groovy and Scala IDE from Jetbrains",
"maintainers": [ "gytis-ivaskevicius", "tymscar" ],
"longDescription": "IDE for Java SE, Groovy & Scala development Powerful environment for building Google Android apps Integration with JUnit, TestNG, popular SCMs, Ant & Maven. Also known as IntelliJ.",
"homepage": "https://www.jetbrains.com/idea/"
}
},
"idea-ultimate": {
"product": "IntelliJ IDEA",
"idea-oss": {
"product": "IntelliJ IDEA Open Source",
"productShort": "IDEA",
"wmClass": "jetbrains-idea",
"wmClass": "jetbrains-idea-ce",
"meta": {
"isOpenSource": false,
"description": "Paid-for Java, Kotlin, Groovy and Scala IDE from jetbrains",
"isOpenSource": true,
"description": "Free Java, Kotlin, Groovy and Scala IDE from Jetbrains",
"maintainers": [ "gytis-ivaskevicius", "tymscar" ],
"longDescription": "IDE for Java SE, Groovy & Scala development Powerful environment for building Google Android apps Integration with JUnit, TestNG, popular SCMs, Ant & Maven. Also known as IntelliJ.",
"homepage": "https://www.jetbrains.com/idea/"
Expand Down Expand Up @@ -112,6 +124,18 @@
"homepage": "https://www.jetbrains.com/phpstorm/"
}
},
"pycharm": {
"product": "PyCharm",
"productShort": "PyCharm",
"wmClass": "jetbrains-pycharm",
"meta": {
"isOpenSource": false,
"description": "Python IDE from JetBrains",
"maintainers": [ "genericnerdyusername", "tymscar" ],
"longDescription": "Python IDE with complete set of tools for productive development with Python programming language. In addition, the IDE provides high-class capabilities for professional Web development with Django framework and Google App Engine. It has powerful coding assistance, navigation, a lot of refactoring features, tight integration with various Version Control Systems, Unit testing, powerful all-singing all-dancing Debugger and entire customization. PyCharm is developer driven IDE. It was developed with the aim of providing you almost everything you need for your comfortable and productive development!",
"homepage": "https://www.jetbrains.com/pycharm/"
}
},
"pycharm-community": {
"product": "PyCharm CE",
"productShort": "PyCharm",
Expand All @@ -124,13 +148,13 @@
"homepage": "https://www.jetbrains.com/pycharm/"
}
},
"pycharm-professional": {
"product": "PyCharm",
"pycharm-oss": {
"product": "PyCharm Open Source",
"productShort": "PyCharm",
"wmClass": "jetbrains-pycharm",
"wmClass": "jetbrains-pycharm-ce",
"meta": {
"isOpenSource": false,
"description": "Paid-for Python IDE from JetBrains",
"isOpenSource": true,
"description": "Free Python IDE from JetBrains",
"maintainers": [ "genericnerdyusername", "tymscar" ],
"longDescription": "Python IDE with complete set of tools for productive development with Python programming language. In addition, the IDE provides high-class capabilities for professional Web development with Django framework and Google App Engine. It has powerful coding assistance, navigation, a lot of refactoring features, tight integration with various Version Control Systems, Unit testing, powerful all-singing all-dancing Debugger and entire customization. PyCharm is developer driven IDE. It was developed with the aim of providing you almost everything you need for your comfortable and productive development!",
"homepage": "https://www.jetbrains.com/pycharm/"
Expand Down
9 changes: 8 additions & 1 deletion pkgs/applications/editors/jetbrains/plugins/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,14 @@ let

selectFile =
id: ide: build:
if !builtins.elem ide pluginsJson.plugins."${id}".compatible then
let
# Allow all PyCharm/IDEA plugins for PyCharm/IDEA Community
# - TODO: Remove this special case once PyCharm/IDEA Community is removed
communityCheck =
(id != "pycharm-community" || builtins.elem ide pluginsJson.plugins.pycharm.compatible)
|| (id != "idea-community" || builtins.elem ide pluginsJson.plugins.idea.compatible);
in
if !communityCheck && !builtins.elem ide pluginsJson.plugins."${id}".compatible then
throw "Plugin with id ${id} does not support IDE ${ide}"
else if !pluginsJson.plugins."${id}".builds ? "${build}" then
throw "Jetbrains IDEs with build ${build} are not in nixpkgs. Try update_plugins.py with --with-build?"
Expand Down
Loading
Loading