From 8b344d2c539cd39a4f894490136774a8422c4dbf Mon Sep 17 00:00:00 2001 From: Leyla Becker Date: Sat, 16 Aug 2025 13:34:44 -0500 Subject: [PATCH] added nix dev shell --- .envrc | 1 + .gitignore | 7 +++--- flake.lock | 25 ++++++++++++++++++++ flake.nix | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ shell.nix | 14 +++++++++++ 5 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 .envrc create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 shell.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..8392d15 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2b925ad..9ab7d63 100644 --- a/.gitignore +++ b/.gitignore @@ -5,18 +5,19 @@ target/ *.bak ~$* - # Windows image file caches Thumbs.db # Windows folder config file Desktop.ini - # Mac junk .DS_Store - # IdeaJ *.idea *.iml + +# enviroemnt packages +.direnv + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..353863f --- /dev/null +++ b/flake.lock @@ -0,0 +1,25 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1754725699, + "narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", + "rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", + "revCount": 841808, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.841808%2Brev-85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054/01989280-4b63-70f9-95b3-49c511cb4d92/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..2951bbe --- /dev/null +++ b/flake.nix @@ -0,0 +1,69 @@ +{ + description = "A Nix-flake-based Java development environment"; + + inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; + + outputs = + inputs: + let + javaVersion = 17; + + supportedSystems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + forEachSupportedSystem = + f: + inputs.nixpkgs.lib.genAttrs supportedSystems ( + system: + f { + pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ inputs.self.overlays.default ]; + }; + } + ); + in + { + overlays.default = + final: prev: + let + jdk = prev."jdk${toString javaVersion}"; + in + { + inherit jdk; + maven = prev.maven.override { jdk_headless = jdk; }; + gradle = prev.gradle.override { java = jdk; }; + lombok = prev.lombok.override { inherit jdk; }; + }; + + devShells = forEachSupportedSystem ( + { pkgs }: + { + default = pkgs.mkShell { + packages = with pkgs; [ + gcc + gradle + jdk + maven + ncurses + patchelf + zlib + ]; + + shellHook = + let + loadLombok = "-javaagent:${pkgs.lombok}/share/java/lombok.jar"; + prev = "\${JAVA_TOOL_OPTIONS:+ $JAVA_TOOL_OPTIONS}"; + in + '' + export JAVA_TOOL_OPTIONS="${loadLombok}${prev}" + ''; + }; + } + ); + }; +} + diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..d7c46b9 --- /dev/null +++ b/shell.nix @@ -0,0 +1,14 @@ +( + import + ( + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + in + fetchTarball { + url = lock.nodes.flake-compat.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } + ) + {src = ./.;} +) +.shellNix