/ clojure / flake.nix
flake.nix
 1  {
 2    description = "A Nix-flake-based Clojure 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        overlays = [
19          (self: super: rec {
20            jdk = super."jdk${toString javaVersion}";
21            boot = super.boot.override {
22              inherit jdk;
23            };
24            clojure = super.clojure.override {
25              inherit jdk;
26            };
27            leiningen = super.leiningen.override {
28              inherit jdk;
29            };
30          })
31        ];
32        pkgs = import nixpkgs { inherit overlays system; };
33      in
34      {
35        devShells.default = pkgs.mkShell {
36          packages = with pkgs; [ boot clojure leiningen ];
37  
38          shellHook = ''
39            ${pkgs.clojure}/bin/clj --version
40          '';
41        };
42      });
43  }