{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 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) doerg doerg-parser doerg-temml-worker; default = pkgs.doerg; }); overlays.default = final: prev: let graal = x: final.mkGraalBin { cljDrv = x; }; in { ibm-plex-web = final.callPackage ./ibm-plex-web.nix {}; doerg = final.callPackage ./. {}; doerg-parser = final.callPackage ./doerg-parser {}; doerg-temml-worker = final.callPackage ./doerg-temml-worker {}; our-tex = final.callPackage ./our-tex.nix {}; }; 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 zprint clojure babashka sqlite-web pkgs.doerg.test-emacs ]; }; }); }; }