{ config, pkgs, lib, ... }:
let
  version = (
    if (config.nixpkgs.config.allowUnfree)
    then "idea-ultimate"
    else "idea-community"
  );
in
{
  # Integrated Development Environment (IDE).

  # Open issues about nix-shell support/integration:
  # - .env run configuration: https://github.com/NixOS/nix-idea/issues/1#issuecomment-590851686
  # - nix-shell IDE-wide: https://github.com/NixOS/nix-idea/issues/1#issuecomment-734997521

  environment.systemPackages = with pkgs; [
    # System-wide installation makes python available as:
    #   /run/current-system/sw/bin/python3
    # This makes it easier to configure it as interpreter in Jetbrain's IDE.
    python3
  ];

  users.users.yoda = {
    packages = with pkgs; [
      jetbrains."${version}"
    ];
  };

  programs.dconf.enable = true;
  home-manager.users.yoda = { osConfig, config, pkgs, lib, ... }: {
    dconf.settings = {
      "org/gnome/shell" = {
        favorite-apps = ["${version}.desktop"];
      };
    };
  };
}
