mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-03-08 01:24:09 +01:00
| .. | ||
| builder | ||
| ides | ||
| patches | ||
| plugins | ||
| source | ||
| updater | ||
| default.nix | ||
| readme.md | ||
This directory contains the build expressions needed to build any of the JetBrains IDEs.
The jdk is in pkgs/development/compilers/jetbrains-jdk.
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 ] - 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 nix-jetbrains-plugins. Note that some plugins may not work without modification, if they are packaged in a way that is incompatible with NixOS. You can try installing such plugins from within the IDE instead.
Example derivations:
"Normal" plugin
fetchzip {
url = "https://plugins.jetbrains.com/files/8607/786671/NixIDEA-0.4.0.18.zip";
hash = "sha256-JShheBoOBiWM9HubMUJvBn4H3DnWykvqPyrmetaCZiM=";
}
"Single JAR file" plugin
fetchurl {
executable = true;
url = "https://plugins.jetbrains.com/files/7425/760442/WakaTime.jar";
hash = "sha256-DobKZKokueqq0z75d2Fo3BD8mWX9+LpGdT9C7Eu2fHc=";
}
How to update IDEs:
- Run
./updater/main.py. This will update binary and source IDEs. After this you can commit them.- See
./updater/main.py --helpfor additional flags. - The IDEs have
passthru.updateScriptset up to run./updater/main.py. The script then uses theUPDATE_NIX_*environment variables as documented.
- See
To keep things simple, the update script will search for the following markers and may replace any content between them:
update-script-start: urls/update-script-end: urls: URLs for binary IDEsupdate-script-start: version/update-script-end: version: Version and build number for binary IDEsupdate-script-start: source-args/update-script-end: source-args: Arguments formkJetBrainsSourcefor source IDEs.
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 an entry to the URL templates in
updater/updateInfo.json - Add it to
default.nix
TODO:
- drop the community IDEs
- Switch
mkJetBrainsProductto uselib.extendMkDerivation, see also: - move PyCharm overrides to a common place outside of
default.nix - package
patchSharedLibsfromdefault.nixas a hook - cleanup this TODO list, especially the following points, which have been here since 2023
- replace
libxcrypt-legacywithlibxcryptwhen supported - make
jetbrains-remote-dev.patchcleaner - is extraLdPath needed for IDEA?
- from source builds:
- remove timestamps in output
.jarofjps-bootstrap - automated update scripts
- fetch
.jars from stuff built in nixpkgs when available- what stuff built in nixpkgs provides
.jars we care about?- kotlin
- what stuff built in nixpkgs provides
- make
configurePhaserespect$NIX_BUILD_CORES - make the subdir of the resulting tar.gz always have a release number (2023.2.2) instead of a build number (232.9921.89)
- remove timestamps in output
- jdk:
- build on darwin
- use chromium stuff built by nixpkgs for jcef?
- make
buildPhaserespect$NIX_BUILD_CORES - automated update script?
- on
aarch64-linux:- from source build
- see if build (binary or source) works without expat
- on
x86_64-darwin:- from source build
- on
aarch64-darwin:- from source build