neuralgia-core/flake.nix
2026-01-08 19:49:32 +02:00

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));
};
};
};
}