{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.jetbrains-remote; in { meta.maintainers = with lib.maintainers; [ genericnerdyusername ]; options.programs.jetbrains-remote = { enable = mkEnableOption "JetBrains remote development system"; ides = mkOption { type = types.listOf types.package; default = [ ]; example = literalExpression '' with pkgs.jetbrains; [ clion pycharm-professional ]; ''; description = '' IDEs accessible to the JetBrains remote development system. ''; }; }; config = mkIf (cfg.enable && cfg.ides != [ ]) { home.activation.jetBrainsRemote = let mkLine = ide: # Errors out if the symlink already exists "${ide}/bin/${ide.meta.mainProgram}-remote-dev-server registerBackendLocationForGateway || true"; lines = map mkLine cfg.ides; linesStr = '' rm $HOME/.cache/JetBrains/RemoteDev/userProvidedDist/_nix_store* '' + concatStringsSep "\n" lines; in hm.dag.entryAfter [ "writeBoundary" ] linesStr; }; }