66 lines
3.2 KiB
Markdown
66 lines
3.2 KiB
Markdown
|
This directory contains the build expressions needed to build any of the jetbrains IDEs.
|
||
|
The jdk is in `pkgs/development/compilers/jetbrains-jdk`.
|
||
|
To test the build process of every IDE (as well as the process for adding plugins), build `jetbrains.plugins.tests.default`.
|
||
|
|
||
|
## How to use plugins:
|
||
|
- Get the ide you want and call `jetbrains.plugins.addPlugins` with a list of plugins you want to add.
|
||
|
- The list of plugins can be a list of ids or names (as in `plugins/plugins.json`)
|
||
|
- Example: `jetbrains.plugins.addPlugins jetbrains.pycharm-professional [ "nixidea" ]`
|
||
|
- The list can also contain a drv giving a `.jar` or `.zip` (this is how you use a plugin not added to nixpkgs)
|
||
|
|
||
|
### How to add a new plugin to nixpkgs
|
||
|
- Find the page for the plugin on https://plugins.jetbrains.com
|
||
|
- Find the id (it's the number after https://plugins.jetbrains.com/plugin/)
|
||
|
- Run `plugins/update_plugins.py` add (plugin id)
|
||
|
- If binaries need patch or some other special treatment, add an entry to `plugins/specialPlugins.nix`
|
||
|
|
||
|
## How to update stuff:
|
||
|
- Run ./bin/update_bin.py
|
||
|
- This will update binary IDEs and plugins, and automatically commit them
|
||
|
- Source builds need a bit more effort, as they aren't automated at the moment:
|
||
|
- Find the build of the stable release you want to target (usually different for pycharm and idea, should have three components)
|
||
|
- I find this at https://jetbrains.com/updates/updates.xml (search for `fullNumber`)
|
||
|
- Update the `buildVer` field in source/default.nix
|
||
|
- Empty the `ideaHash`, `androidHash` and `jpsHash` (only `ideaHash` changes on a regular basis) fields and try to build to get the new hashes
|
||
|
- Run `nix build .#jetbrains.(idea/pycharm)-community-source.src`, then `./source/build_maven.py source/idea_maven_artefacts.json result/`
|
||
|
- Update `source/brokenPlugins.json` (from https://plugins.jetbrains.com/files/brokenPlugins.json)
|
||
|
- Do a test build
|
||
|
- If it succeeds, make a PR/merge
|
||
|
- If it fails, ping/message GenericNerdyUsername
|
||
|
|
||
|
## How to add an IDE:
|
||
|
- Make dummy entries in `bin/versions.json` (make sure to set the version to something older than the real one)
|
||
|
- Run `bin/update_bin.py`
|
||
|
- Add an entry in `bin/ides.json`
|
||
|
- Add an entry in `default.nix`
|
||
|
|
||
|
### TODO:
|
||
|
- move/copy plugin docs to nixpkgs manual
|
||
|
- replace `libxcrypt-legacy` with `libxcrypt` when supported
|
||
|
- make `jetbrains-remote-dev.patch` cleaner
|
||
|
- is extraLdPath needed for IDEA?
|
||
|
- set meta.sourceProvenance for everything
|
||
|
- from source builds:
|
||
|
- remove timestamps in output `.jar` of `jps-bootstrap`
|
||
|
- automated update scripts
|
||
|
- fetch `.jar` s from stuff built in nixpkgs when available
|
||
|
- what stuff built in nixpkgs provides `.jar`s we care about?
|
||
|
- kotlin
|
||
|
- make `configurePhase` respect `$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)
|
||
|
- jdk:
|
||
|
- build on darwin
|
||
|
- use chromium stuff built by nixpkgs for jcef?
|
||
|
- make `buildPhase` respect `$NIX_BUILD_CORES`
|
||
|
- automated update script?
|
||
|
- on `aarch64-linux`:
|
||
|
- test plugins
|
||
|
- from source build
|
||
|
- see if build (binary or source) works without expat
|
||
|
- on `x86_64-darwin`:
|
||
|
- test plugins
|
||
|
- from source build
|
||
|
- on `aarch64-darwin`:
|
||
|
- test plugins
|
||
|
- from source build
|