summaryrefslogtreecommitdiff
path: root/flake.nix
blob: 88e1be6173562fe6df98fd403ff9083e91f70612 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{
  description = "stem";
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
  };

  outputs = { self, nixpkgs }:
    let
      system = "x86_64-linux";
      pkgs = import nixpkgs {
        inherit system;
      };
      mavenRepo = repo: name: version: hash:
        let
          pnm = builtins.elemAt name (builtins.length name - 1);
        in pkgs.stdenv.mkDerivation rec {
          pname = pnm;
          base = builtins.foldl' (x: y: "${x}/${y}") repo name;
          inherit version;
          src = pkgs.fetchurl {
            url = "${base}/${version}/${pnm}-${version}.jar";
            inherit hash;
          };
          phases = ["installPhase"];
          installPhase = ''
            mkdir -p $out/share/java
            install -Dm644 $src $out/share/java/
          '';
        };
      maven = mavenRepo "https://repo1.maven.org/maven2";
      clojars = mavenRepo "https://repo.clojars.org";
    in {
      devShells.${system}.default = pkgs.mkShell {
        buildInputs = [
          # clojure
          (maven ["org" "clojure" "clojure"] "1.12.3" "sha256-yyoaPbHCzXbvT6SlRdWmXxCxtIt/dnLwoQn1R28FcWY=")

          # cljs and closure compiler
          (maven ["org" "clojure" "spec.alpha"] "0.5.238" "sha256-lM2ZtupjlkHzevSGCmQ7btOZ7lqL5dcXz/C2Y8jXUHc=")
          (maven ["org" "clojure" "core.specs.alpha"] "0.4.74" "sha256-63OsCM9JuoQMiLpnvu8RM2ylVDM9lAiAjXiUbg/rnds=")

          (maven ["org" "clojure" "clojurescript"] "1.12.42" "sha256-rIruj3lFf+MuY9XrVYERzQw1ZAT6t7364zGLrvVzmjs=")
          (maven ["org" "javassist" "javassist"] "3.18.1-GA" "sha256-P7cSMa/QmLsPk/Xrl6qCkcjQVWN5El5Zb5Lsj5RMYWI=")
          (maven ["org" "clojure" "tools.reader"] "1.3.6" "sha256-EdGzHyxlwzVbKSu5tEuPyv2lS0TaY+NKuXt5qKs7uOA=")
          (maven ["org" "clojure" "google-closure-library"] "0.0-20250515-f04e4c0e" "sha256-RRzDKmiXRIySWpxyM4p6VzqHS9PaCzhe2ofoHAYNfho=")
          (maven ["javax" "xml" "bind" "jaxb-api"] "2.3.0" "sha256-iDAHmJ03PRnzUrqXkrJd7CHcfQ4gWnEKk6OBUQG7PQM=")
          (maven ["com" "fasterxml" "jackson" "core" "jackson-core"] "2.8.7" "sha256-JW/zQRirKS0bTz7k0sPl5fD2CdjgfFforR9RxG1Pu0Y=")
          (maven ["com" "google" "javascript" "closure-compiler"] "v20250402" "sha256-b8vSD3WZTtxoVuM2vAFHzj3XEQxrOhMuk+31gGc8crs=")
          (maven ["org" "clojure" "google-closure-library-third-party"] "0.0-20250515-f04e4c0e" "sha256-SZqLXub/xjYyvedFqYAjlnp6Zsy2rXZBESH7J0XY06M=")
          (maven ["com" "cognitect" "transit-java"] "1.0.362" "sha256-62hXPUbdqFYBzGPZscKH/rXonnbpJQLoJu/QoyP3y1Q=")
          (maven ["com" "googlecode" "json-simple" "json-simple"] "1.1.1" "sha256-TmlpaJK4i0HFXUmrL9zCHurZK/VKzFiMAFBZbDt1GZw=")

          # nrepl
          (clojars ["nrepl" "nrepl"] "1.7.0" "sha256-0HOQJ3GQ4Kl04Ul/1EhQBaSWT59ValC9UwUJ9IumXBs=")

          # cider
          (clojars ["cider" "cider-nrepl"] "0.59.0" "sha256-IgNXuRhGLbP2DgKJUbqFgI1wCTduhCGFjcHygTFlZCw=")
          (clojars ["cider" "orchard"] "0.41.0" "sha256-bR8oL2MsHI/fx9/SrPPEvp0qu/+69LXH84YUwrIdcYM=")
          (clojars ["cider" "piggieback"] "0.6.1" "sha256-v1kWMg8jk6LdmcRw4Vgj2S323ICz5mJbR8+uD2RR5js=")
          (clojars ["compliment" "compliment"] "0.7.1" "sha256-HqLyvCErmmum3vNucdFOMsNd0Uad3n9rQOo/hLYhQ28=")
          (clojars ["io" "github" "tonsky" "clj-reload"] "1.0.0" "sha256-cZUMORmHYZZzehoEV4ekG715IxP+WRnZ0Stk/YhEmjE=")
          (clojars ["mx" "cider" "logjam"] "0.3.0" "sha256-h1moSv+GjTrjwDEil7l6psf7j5NUK39llkv5kT9K4J8=")
          (clojars ["org" "rksm" "suitable"] "0.6.2" "sha256-o1XNzK522A2EU+s9kYQDQzAjWYYhbN8+lKdUngVilYc=")
        ];
        nativeBuildInputs = [
          pkgs.jdk # has a hook that adds jars from buildInputs to CLASSPATH
          pkgs.clojure
          pkgs.clj-kondo
          pkgs.web-ext
        ];
      };
    };
}