80 lines
1.9 KiB
Nix
80 lines
1.9 KiB
Nix
{
|
|
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-tex;
|
|
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-tex = final.callPackage ./doerg/doerg-tex {};
|
|
};
|
|
|
|
checks = each-system ({ pkgs, system, ... }: {
|
|
packages =
|
|
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-tex
|
|
];
|
|
packages = with pkgs; [
|
|
clojure-lsp
|
|
doerg-parser
|
|
doerg-tex
|
|
# wahhh ibm-plex-web is a dependency of doerg... why must
|
|
# i specify it hereeee.
|
|
# ibm-plex-web
|
|
zprint
|
|
clojure
|
|
babashka
|
|
sqlite-web
|
|
];
|
|
};
|
|
});
|
|
};
|
|
}
|