summaryrefslogtreecommitdiff
path: root/modules/templates/java/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/templates/java/flake.nix')
-rw-r--r--modules/templates/java/flake.nix40
1 files changed, 40 insertions, 0 deletions
diff --git a/modules/templates/java/flake.nix b/modules/templates/java/flake.nix
new file mode 100644
index 0000000..d69e2c6
--- /dev/null
+++ b/modules/templates/java/flake.nix
@@ -0,0 +1,40 @@
+{
+ description = "Base dev env for Java";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+ flake-utils.url = "github:numtide/flake-utils";
+ };
+
+ outputs = {
+ self,
+ nixpkgs,
+ flake-utils,
+ }:
+ flake-utils.lib.eachDefaultSystem (system: let
+ pkgs = nixpkgs.legacyPackages.${system};
+ in {
+ devShells.default = pkgs.mkShell {
+ packages = with pkgs; [
+ jdk21
+ maven
+ gradle
+ jdt-language-server # LSP for editors
+ ];
+
+ shellHook = ''
+ echo "Java $(java -version 2>&1 | head -1)"
+
+ alias jbuild='find src -name "*.java" | xargs javac -d out && echo "Build success"'
+ alias jrun='jbuild && java -cp out src.Main'
+ alias jclean='rm -rf out && echo "Cleaned"'
+
+ mkdir -p out
+
+ echo " jbuild — compile all sources"
+ echo " jrun — compile and run"
+ echo " jclean — remove compiled output"
+ '';
+ };
+ });
+}