151 lines
3.3 KiB
Nix
151 lines
3.3 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
|
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
|
|
nh.url = "github:viperML/nh";
|
|
|
|
lix = {
|
|
url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz";
|
|
flake = false;
|
|
};
|
|
|
|
lix-module = {
|
|
url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
inputs.lix.follows = "lix";
|
|
};
|
|
};
|
|
|
|
outputs =
|
|
inputs@{
|
|
self,
|
|
nixpkgs,
|
|
flake-utils,
|
|
...
|
|
}:
|
|
let
|
|
lix-overlay = inputs.lix-module.overlays.default;
|
|
lix-module = inputs.lix-module.nixosModules.default;
|
|
nh-overlay = inputs.nh.overlays.default;
|
|
version = builtins.toString self.lastModified;
|
|
in
|
|
flake-utils.lib.eachDefaultSystem (
|
|
system:
|
|
let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
overlays = [
|
|
lix-overlay
|
|
nh-overlay
|
|
];
|
|
modules = [ lix-module ];
|
|
};
|
|
minimal =
|
|
let
|
|
inherit (pkgs.ocamlPackages)
|
|
dune_3
|
|
ocaml
|
|
;
|
|
in
|
|
[
|
|
dune_3
|
|
ocaml
|
|
];
|
|
dev =
|
|
let
|
|
inherit (pkgs.ocamlPackages)
|
|
utop
|
|
ocaml-lsp
|
|
ocamlformat
|
|
ocamlformat-rpc-lib
|
|
;
|
|
in
|
|
[
|
|
utop
|
|
ocaml-lsp
|
|
ocamlformat
|
|
ocamlformat-rpc-lib
|
|
];
|
|
inherit (pkgs) lix nh;
|
|
in
|
|
{
|
|
devShells.default =
|
|
let
|
|
inherit (pkgs) mkShell;
|
|
in
|
|
mkShell {
|
|
buildInputs =
|
|
minimal
|
|
++ dev
|
|
++ [
|
|
lix
|
|
nh
|
|
];
|
|
shellHook =
|
|
let
|
|
justFile = ''
|
|
default:
|
|
@just --list
|
|
|
|
@build:
|
|
nix build .#debug --offline
|
|
|
|
@release:
|
|
nix build --offline
|
|
|
|
@test:
|
|
printf "\\n\\n\\t************ running nix+dune tests ************\\n\\n\\n"
|
|
nix flake check --offline
|
|
|
|
@push:
|
|
git commit -a
|
|
git push
|
|
'';
|
|
in
|
|
''
|
|
printf '${justFile}' > justfile
|
|
'';
|
|
};
|
|
|
|
packages.default = pkgs.callPackage ./nix/default.nix {
|
|
ocaml-deps = minimal;
|
|
inherit version;
|
|
};
|
|
|
|
defaultPackage = self.packages.${system}.default;
|
|
}
|
|
)
|
|
// {
|
|
nixosModules.meat = import ./nix/module.nix {
|
|
meatOverlays = [
|
|
nh-overlay
|
|
self.overlays.meat
|
|
];
|
|
lixModule = lix-module;
|
|
};
|
|
|
|
overlays.meat =
|
|
final: prev:
|
|
let
|
|
ocaml-deps =
|
|
let
|
|
inherit (final.ocamlPackages)
|
|
dune_3
|
|
ocaml
|
|
;
|
|
in
|
|
[
|
|
dune_3
|
|
ocaml
|
|
];
|
|
in
|
|
{
|
|
meat = final.callPackage ./nix/default.nix {
|
|
inherit ocaml-deps version;
|
|
};
|
|
};
|
|
};
|
|
}
|