66 lines
2 KiB
Nix
66 lines
2 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
flake-parts.url = "github:hercules-ci/flake-parts";
|
|
systems.url = "github:nix-systems/default";
|
|
};
|
|
|
|
outputs = inputs:
|
|
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
|
|
systems = import inputs.systems;
|
|
|
|
perSystem = { config, self', pkgs, lib, system, ... }: let
|
|
|
|
pkgs = import inputs.nixpkgs {
|
|
inherit system;
|
|
config.allowUnfree = true;
|
|
};
|
|
|
|
javaVersions = with pkgs; [
|
|
|
|
{ name = "JDK17"; pkg = pkgs.javaPackages.compiler.openjdk17; }
|
|
{ name = "JDK21"; pkg = pkgs.javaPackages.compiler.openjdk21; }
|
|
{ name = "JDK8"; pkg = pkgs.javaPackages.compiler.openjdk8; }
|
|
];
|
|
|
|
javaPackages = map (j: j.pkg) javaVersions;
|
|
|
|
primaryJava = builtins.head javaPackages;
|
|
|
|
ide = pkgs.writeShellScriptBin "ide" "${pkgs.jetbrains.idea-oss}/bin/idea-oss $PROJECT_PATH";
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
primaryJava
|
|
git
|
|
|
|
];
|
|
|
|
buildInputs = with pkgs; [
|
|
libGL
|
|
glfw3-minecraft # Not always needed, but in case it is, it's here.
|
|
flite # TTS
|
|
libpulseaudio
|
|
#(gradle.override {java = primaryJava;})
|
|
|
|
#pkgs.javaPackages.compiler.openjdk17
|
|
(pkgs.gradle-packages.mkGradle {version = "8.14.3"; defaultJava = primaryJava; hash = "sha256-vXEQIhNJMGCVbsIp2Ua+7lcVjb2J0OYrkbyg+ixfNTE=";})
|
|
];
|
|
in {
|
|
devShells.default = pkgs.mkShell {
|
|
inherit nativeBuildInputs buildInputs;
|
|
|
|
shellHook = ''
|
|
export PROJECT_PATH="$PWD"
|
|
${ide}/bin/ide
|
|
exit
|
|
'';
|
|
|
|
env = {
|
|
LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs;
|
|
JAVA_HOME = "${primaryJava.home}";
|
|
PROJECT_PATH="$PWD";
|
|
} // (builtins.listToAttrs (map (j: { name = j.name; value = j.pkg.home; }) javaVersions));
|
|
};
|
|
};
|
|
};
|
|
}
|