nixpkgs/pkgs/applications/editors/jetbrains
Silvan Mosberger 4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00
..
bin treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
patches jetbrains.*: fix remote development server 2024-11-06 16:56:33 -05:00
plugins treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
source treewide: use src.name in sourceRoot 2024-08-02 14:56:50 +02:00
default.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
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. 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

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 product name=", then fullNumber)
    • Update the buildVer field in source/default.nix
    • Empty the ideaHash, androidHash, jpsHash and restarterHash (only ideaHash and restarterHash changes on a regular basis) fields and try to build to get the new hashes
    • Run nix build .#jetbrains.(idea/pycharm)-community-src.src.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 .jars 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