jetbrains.*: move to by-name

This commit is contained in:
Marco Köpcke
2026-08-11 08:32:07 +02:00
committed by Marco Köpcke
parent 455a10da4e
commit ce68722dfd
22 changed files with 101 additions and 50 deletions

View File

@@ -136,6 +136,13 @@
Additionally, the kernel module tree used inside the VM has been split out of the `kernel` argument into a new `kernelModules` argument (defaulting to `kernel`).
Callers that overrode `kernel` with a module tree (e.g. from `pkgs.aggregateModules`) to make extra modules available must now pass it via `kernelModules` instead, keeping `kernel` pointing at a bootable kernel derivation.
- The JetBrains IDEs have all been moved to the top-level:
- `jetbrains.idea` and `jetbrains.idea-oss` have been renamed to `intellij-idea` and `intellij-idea-oss` respectively.
- `jetbrains.mps` has been renamed to `jetbrains-mps`.
- `jetbrains.gateway` has been renamed to `jetbrains-gateway`.
- All other IDEs have directly moved to the top-level with no prefix (e.g. `jetbrains.pycharm` -> `pycharm`).
- `jetbrains.plugins` remains unchanged for now.
- The ARMv5 Linux kernel build now uses a standard configuration and generates a standard compressed image instead of the deprecated legacy U‐Boot image format.
`lib.systems.{examples,platforms}.{sheevaplug,pogoplug4}` have been unified into `lib.systems.examples.armv5tel-multiplatform`.
Note that there is no official support for ARMv5 and it is not possible to build even a simple NixOS configuration out of the box.

View File

@@ -1,9 +1,25 @@
{
# keep-sorted start
callPackage,
clion,
config,
datagrip,
dataspell,
goland,
intellij-idea,
intellij-idea-oss,
jetbrains,
jetbrains-gateway,
jetbrains-mps,
lib,
phpstorm,
pycharm,
pycharm-oss,
rider,
ruby-mine,
rust-rover,
stdenv,
webstorm,
# keep-sorted end
vmopts ? null,
@@ -19,48 +35,40 @@
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 = 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 { };
}
// lib.optionalAttrs config.allowAliases {
# These now all live in by-name.
# This is managed by the maintainers/scripts/remove-old-aliases.py script, please run it to update these,
# but make sure the warning/throw text says "'jetbrains.xyz' has been..." (add the jetbrains prefix).
# Also update the names in the old aliases at the bottom then!
clion = clion; # Added 2026-08-15
datagrip = datagrip; # Added 2026-08-15
dataspell = dataspell; # Added 2026-08-15
gateway = jetbrains-gateway; # Added 2026-08-15
goland = goland; # Added 2026-08-15
idea = intellij-idea; # Added 2026-08-15
idea-oss = intellij-idea-oss; # Added 2026-08-15
mps = jetbrains-mps; # Added 2026-08-15
phpstorm = phpstorm; # Added 2026-08-15
pycharm = pycharm; # Added 2026-08-15
pycharm-oss = pycharm-oss; # Added 2026-08-15
rider = rider; # Added 2026-08-15
ruby-mine = ruby-mine; # Added 2026-08-15
rust-rover = rust-rover; # Added 2026-08-15
webstorm = webstorm; # Added 2026-08-15
# Deprecated products and aliases.
aqua = throw "jetbrains.aqua: Aqua has been removed as it has been discontinued by JetBrains";
idea-community = throw "jetbrains.idea-community: IntelliJ IDEA Community has been removed as it has been discontinued by JetBrains. Either switch to 'jetbrains.idea-oss' or 'jetbrains.idea'. See: https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/";
idea-community-bin = throw "jetbrains.idea-community-bin: IntelliJ IDEA Community has been removed as it has been discontinued by JetBrains. Either switch to 'jetbrains.idea-oss' or 'jetbrains.idea'. See: https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/";
idea-community-src = throw "jetbrains.idea-community-src: IntelliJ IDEA Community has been removed as it has been discontinued by JetBrains. Either switch to 'jetbrains.idea-oss' or 'jetbrains.idea'. See: https://blog.jetbrains.com/idea/2025/07/intellij-idea-unified-distribution-plan/";
idea-ultimate = throw "'jetbrains.idea-ultimate' has been renamed to/replaced by 'jetbrains.idea'";
pycharm-community = throw "jetbrains.pycharm-community: PyCharm Community has been removed as it has been discontinued by JetBrains. Either switch to 'jetbrains.pycharm-oss' or 'jetbrains.pycharm'. See: https://blog.jetbrains.com/pycharm/2025/04/pycharm-2025";
pycharm-community-bin = throw "jetbrains.pycharm-community-bin: PyCharm Community has been removed as it has been discontinued by JetBrains. Either switch to 'jetbrains.pycharm-oss' or 'jetbrains.pycharm'. See: https://blog.jetbrains.com/pycharm/2025/04/pycharm-2025";
pycharm-community-src = throw "jetbrains.pycharm-community-src: PyCharm Community has been removed as it has been discontinued by JetBrains. Either switch to 'jetbrains.pycharm-oss' or 'jetbrains.pycharm'. See: https://blog.jetbrains.com/pycharm/2025/04/pycharm-2025";
pycharm-professional = throw "'jetbrains.pycharm-professional' has been renamed to/replaced by 'jetbrains.pycharm'";
writerside = throw "jetbrains.writerside: Writerside has been removed as it has been discontinued by JetBrains";
}

View File

@@ -1,11 +1,26 @@
{
# keep-sorted start
clion,
datagrip,
dataspell,
fetchurl,
fetchzip,
goland,
intellij-idea,
intellij-idea-oss,
jetbrains,
jetbrains-gateway,
jetbrains-mps,
lib,
phpstorm,
pycharm,
pycharm-oss,
rider,
ruby-mine,
runCommand,
rust-rover,
symlinkJoin,
webstorm,
# keep-sorted end
# If not set, all IDEs are tested.
@@ -15,17 +30,16 @@
let
ides =
if ide == null then
with jetbrains;
[
# keep-sorted start
clion
datagrip
dataspell
gateway
goland
idea
idea-oss
mps
intellij-idea
intellij-idea-oss
jetbrains-gateway
jetbrains-mps
phpstorm
pycharm
pycharm-oss

View File

@@ -1,13 +1,35 @@
This directory contains the build expressions needed to build any of the JetBrains IDEs.
The jdk is in `pkgs/development/compilers/jetbrains-jdk`.
## IDE packages
The IDEs live in by-name/:
| IDE Name | Package Location |
|--------------------------------|-----------------------------------------------|
| Clion | pkgs/by-name/cl/clion/package.nix |
| DataGrip | pkgs/by-name/da/datagrip/package.nix |
| DataSpell | pkgs/by-name/da/dataspell/package.nix |
| Gateway | pkgs/by-name/je/jetbrains-gateway/package.nix |
| Goland | pkgs/by-name/go/goland/package.nix |
| IntelliJ IDEA | pkgs/by-name/in/intellij-idea/package.nix |
| IntelliJ IDEA (Open Source) | pkgs/by-name/in/intellij-idea-oss/package.nix |
| MPS | pkgs/by-name/je/jetbrains-mps/package.nix |
| PhpStorm | pkgs/by-name/ph/phpstorm/package.nix |
| PyCharm | pkgs/by-name/py/pycharm/package.nix |
| PyCharm (Open Source) | pkgs/by-name/py/pycharm-oss/package.nix |
| Rider | pkgs/by-name/ri/rider/package.nix |
| RubyMine | pkgs/by-name/ru/ruby-mine/package.nix |
| RustRover | pkgs/by-name/ru/rust-rover/package.nix |
| WebStorm | pkgs/by-name/we/webstorm/package.nix |
## Tests:
- To test the build process of every IDE (as well as the process for adding plugins), build `jetbrains.plugins.tests.empty`.
- To test that plugins are correctly stored in the plugins directory, build `jetbrains.plugins.tests.stored-correctly`.
## How to use plugins:
- Pass your IDE package and a list of plugin packages to `jetbrains.plugins.addPlugins`.
E.g. `pkgs.jetbrains.plugins.addPlugins pkgs.jetbrains.idea [ ideavim ]`
E.g. `pkgs.jetbrains.plugins.addPlugins pkgs.intellij-idea [ ideavim ]`
- The list has to contain drvs giving the directory contents of the plugin or a single `.jar` (executable).
Nixpkgs does not package JetBrains plugins, however you can use third-party sources, such as
@@ -51,9 +73,9 @@ To keep things simple, the update script will search for the following markers a
Any comments or other manual changes between these markers will be removed when the script runs.
## How to add an IDE:
- Add a new derivation in `ides/`
- Add a new derivation in `/pkgs/by-name/...`
- Add an entry to the URL templates in `updater/updateInfo.json`
- Add it to `default.nix`
- Add it to the table at the top ("IDE packages")
### TODO:
- get rid of remaining `overrideAttrs` in IDE drvs:

View File

@@ -23,14 +23,6 @@
"aarch64-darwin": "https://download.jetbrains.com/python/dataspell-{version}-aarch64.dmg"
}
},
"gateway": {
"channel": "GW-RELEASE-licensing-RELEASE",
"urls": {
"x86_64-linux": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.tar.gz",
"aarch64-linux": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.tar.gz",
"aarch64-darwin": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.dmg"
}
},
"goland": {
"channel": "GO-RELEASE-licensing-RELEASE",
"urls": {
@@ -39,7 +31,7 @@
"aarch64-darwin": "https://download.jetbrains.com/go/goland-{version}-aarch64.dmg"
}
},
"idea": {
"intellij-idea": {
"channel": "IU-RELEASE-licensing-RELEASE",
"urls": {
"x86_64-linux": "https://download.jetbrains.com/idea/ideaIU-{version}.tar.gz",
@@ -47,11 +39,19 @@
"aarch64-darwin": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.dmg"
}
},
"idea-oss": {
"intellij-dea-oss": {
"channel": "IU-RELEASE-licensing-RELEASE",
"urls": {}
},
"mps": {
"jetbrains-gateway": {
"channel": "GW-RELEASE-licensing-RELEASE",
"urls": {
"x86_64-linux": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.tar.gz",
"aarch64-linux": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.tar.gz",
"aarch64-darwin": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.dmg"
}
},
"jetbrains-mps": {
"channel": "MPS-RELEASE-licensing-RELEASE",
"urls": {
"x86_64-linux": "https://download.jetbrains.com/mps/{versionMajorMinor}/MPS-{version}.tar.gz",

View File

@@ -18,7 +18,7 @@ let
androidHash = "sha256-uvoDTv/7RlyxRp1d9v2tN9IJkv9d1QEkZpp23hae84k=";
jpsHash = "sha256-iHpt926BDLNUwHRXvkqVgwlWiLo1qSZEaGeJcS0Fjmk=";
restarterHash = "sha256-acCmC58URd6p9uKZrm0qWgdZkqu9yqCs23v8qgxV2Ag=";
mvnDeps = ../source/idea_maven_artefacts.json;
mvnDeps = ./maven_artefacts.json;
repositories = [
"repo1.maven.org/maven2"
"packages.jetbrains.team/maven/p/ij/intellij-dependencies"
@@ -50,7 +50,7 @@ jetbrains.mkJetBrainsProduct {
# the jdk is bundled on Darwin.
jdk = if lib.meta.availableOn stdenv.hostPlatform jetbrains.jdk then jetbrains.jdk else null;
pname = "idea-oss";
pname = "intellij-idea-oss";
wmClass = "jetbrains-idea-ce";
product = "IntelliJ IDEA Open Source";

View File

@@ -34,7 +34,7 @@ in
jetbrains.mkJetBrainsProduct {
inherit jetbrains-libdbm fsnotifier;
pname = "idea";
pname = "intellij-idea";
wmClass = "jetbrains-idea";
product = "IntelliJ IDEA";

View File

@@ -17,7 +17,7 @@ let
androidHash = "sha256-FA/6ry1M7+RISJL+2SR9QkDvAGJAkXhFMh9YoOEU5nk=";
jpsHash = "sha256-iHpt926BDLNUwHRXvkqVgwlWiLo1qSZEaGeJcS0Fjmk=";
restarterHash = "sha256-acCmC58URd6p9uKZrm0qWgdZkqu9yqCs23v8qgxV2Ag=";
mvnDeps = ../source/pycharm_maven_artefacts.json;
mvnDeps = ./maven_artefacts.json;
repositories = [
"repo1.maven.org/maven2"
"packages.jetbrains.team/maven/p/ij/intellij-dependencies"