/ java / flake.nix
flake.nix
 1  {
 2    description = "A Nix-flake-based Java development environment";
 3  
 4    inputs = {
 5      nixpkgs.url = "github:NixOS/nixpkgs/release-22.11";
 6      flake-utils.url = "github:numtide/flake-utils";
 7    };
 8  
 9    outputs =
10      { self
11      , nixpkgs
12      , flake-utils
13      }:
14  
15      flake-utils.lib.eachDefaultSystem (system:
16      let
17        javaVersion = 17;
18  
19        overlays = [
20          (self: super: rec {
21            jdk = super."jdk${toString javaVersion}";
22            gradle = super.gradle.override {
23              java = jdk;
24            };
25            maven = super.maven.override {
26              inherit jdk;
27            };
28          })
29        ];
30  
31        pkgs = import nixpkgs { inherit overlays system; };
32      in
33      {
34        devShells.default = pkgs.mkShell {
35          packages = with pkgs; [ gradle jdk maven ];
36  
37          shellHook = ''
38            ${pkgs.jdk}/bin/java -version
39          '';
40        };
41      });
42  }