{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; clj-nix.url = "github:jlesquembre/clj-nix"; sydpkgs.url = "github:msyds/sydpkgs"; }; outputs = { self, nixpkgs, clj-nix, ... }@inputs: let supportedSystems = [ "aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux" ]; each-system = f: nixpkgs.lib.genAttrs supportedSystems (system: f rec { pkgs = import nixpkgs { inherit system; overlays = [ inputs.sydpkgs.overlays.default clj-nix.overlays.default self.overlays.default ]; }; inherit (pkgs) lib; inherit system; }); in { # Exposed as a REPL convenience. _pkgs = each-system ({ pkgs, ... }: pkgs); packages = each-system ({ pkgs, ... }: { inherit (pkgs) publisher doerg doerg-parser doerg-temml-worker; default = pkgs.publisher; }); overlays.default = final: prev: let graal = x: final.mkGraalBin { cljDrv = x; }; vendored = final.callPackage ./vendor {}; in { inherit (vendored) ibm-plex-web; publisher = final.callPackage ./publisher/package.nix {}; doerg = final.callPackage ./doerg/package.nix {}; doerg-parser = final.callPackage ./doerg/doerg-parser {}; doerg-temml-worker = final.callPackage ./doerg/doerg-temml-worker {}; }; checks = each-system ({ pkgs, system, ... }: { build-all = pkgs.linkFarmFromDrvs "all" (pkgs.lib.attrValues self.packages.${system}); }); devShells = each-system ({ pkgs, system, ... }: { default = pkgs.mkShell { inputsFrom = [ pkgs.doerg pkgs.doerg-parser pkgs.doerg-temml-worker ]; packages = with pkgs; [ clojure-lsp doerg-parser doerg-temml-worker # wahhh ibm-plex-web is a dependency of doerg... why must # i specify it hereeee. # ibm-plex-web zprint clojure babashka sqlite-web ]; }; }); }; }