Last active
February 11, 2026 00:47
-
-
Save Endermanbugzjfc/d25ebe79c61f1352e3b6d9f9d7a11ce3 to your computer and use it in GitHub Desktop.
A simple helper to configure Java Platforms in Nix-managed NetBeans installations.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Author: Endermanbugzjfc | |
| # License: Unlicense | |
| let | |
| mkNetBeansJavaPlatform = { | |
| openjdk, | |
| openjdkMajorVersion, | |
| label ? "JDK ${openjdkMajorVersion} (Nix)", | |
| }: let | |
| in '' | |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE platform PUBLIC "-//NetBeans//DTD Java PlatformDefinition 1.0//EN" "http://www.netbeans.org/dtds/java-platformdefinition-1_0.dtd"> | |
| <platform default="no" name="${label}"> | |
| <jdkhome> | |
| <resource>file:${openjdk}/lib/openjdk/</resource> | |
| </jdkhome> | |
| <properties> | |
| <property name="platform.ant.name" value="JDK_${openjdkMajorVersion}"/> | |
| </properties> | |
| <sysproperties> | |
| <property name="java.specification.version" value="${openjdkMajorVersion}"/> | |
| </sysproperties> | |
| </platform> | |
| ''; | |
| dirPrefix = "/home/$(whoami)/.netbeans"; | |
| dirSuffix = "config/Services/Platforms/org-netbeans-api-java-Platform"; | |
| installNetBeansJavaPlatform = { | |
| openjdk, | |
| openjdkMajorVersion, | |
| netBeansMajorVersion, | |
| label ? "JDK ${openjdkMajorVersion} (Nix)", | |
| dir ? "${dirPrefix}/${netBeansMajorVersion}/${dirSuffix}", | |
| file ? "JDK_${openjdkMajorVersion}__Nix.xml", | |
| }: let | |
| config = mkNetBeansJavaPlatform { inherit openjdk openjdkMajorVersion label; }; | |
| in '' | |
| echo "Installing Java Platforms config to \"${dir}/${file}\"" | |
| mkdir -p "${dir}" | |
| cat << 'EOF' > "${dir}/${file}" | |
| ${config} | |
| EOF | |
| ''; | |
| in { | |
| inherit mkNetBeansJavaPlatform installNetBeansJavaPlatform; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| description = '' | |
| https://gist.github.com/Endermanbugzjfc/d25ebe79c61f1352e3b6d9f9d7a11ce3 | Unlicense | |
| mkNetBeansJavaPlatform.nix is a simple helper to configure Java Platforms in Nix-managed NetBeans installations. | |
| (This is an example Flake). | |
| ''; | |
| inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; | |
| inputs.flake-utils.url = "github:numtide/flake-utils"; | |
| inputs.mk-netbeans-java-platform = { | |
| url = "https://gist.github.com/Endermanbugzjfc/d25ebe79c61f1352e3b6d9f9d7a11ce3/raw"; | |
| flake = false; | |
| }; | |
| outputs = { | |
| self, | |
| nixpkgs, | |
| flake-utils, | |
| mk-netbeans-java-platform, | |
| }: flake-utils.lib.eachDefaultSystem (system: let | |
| pkgs = nixpkgs.legacyPackages.${system}; | |
| global = with pkgs; [ | |
| nh | |
| ]; | |
| globalShellHook = label: '' | |
| echo "" | |
| echo "Current Environment: ${label}" | |
| echo "" | |
| echo Ctrl+D = Exit Environment | |
| echo "" | |
| ''; | |
| devShells = { | |
| default = makeJavaShell 21; | |
| java17 = makeJavaShell 17; | |
| java21 = makeJavaShell 21; | |
| java25 = makeJavaShell 25; | |
| }; | |
| makeJavaShell = jdkVersion: let | |
| jdkVersion' = builtins.toString jdkVersion; | |
| jdkJfx = pkgs."openjdk${jdkVersion'}".override { enableJavaFX = true; }; | |
| in pkgs.mkShellNoCC { | |
| packages = [ | |
| jdkJfx | |
| pkgs.jdt-language-server | |
| pkgs.netbeans | |
| ] ++ global; | |
| shellHook = let | |
| label = "NetBeans + java" + jdkVersion'; | |
| installConfig = (import mk-netbeans-java-platform).installNetBeansJavaPlatform { | |
| openjdk = jdkJfx; | |
| openjdkMajorVersion = jdkVersion'; | |
| netBeansMajorVersion = builtins.toString pkgs.netbeans.version; | |
| }; | |
| in '' | |
| ${globalShellHook label} | |
| ${installConfig} | |
| ''; | |
| }; | |
| in { | |
| inherit devShells; | |
| }); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment