remove reliance on nh for most things

This commit is contained in:
atagen 2025-06-20 12:54:21 +10:00
parent 56d0dc028f
commit 1a2ca2dcbd
7 changed files with 242 additions and 318 deletions

190
flake.nix
View file

@ -1,150 +1,88 @@
{
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";
};
nix-systems.url = "github:nix-systems/default-linux";
unf.url = "git+https://git.atagen.co/atagen/unf";
};
outputs =
inputs@{
self,
nixpkgs,
flake-utils,
...
}:
inputs:
with inputs;
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
[
collectPkgs = builtins.attrValues;
forEachSystem =
function:
nixpkgs.lib.genAttrs (import nix-systems) (system: function nixpkgs.legacyPackages.${system});
deps = forEachSystem (pkgs: {
build = collectPkgs {
inherit (pkgs.ocamlPackages)
dune_3
ocaml
];
dev =
let
inherit (pkgs.ocamlPackages)
utop
ocaml-lsp
ocamlformat
ocamlformat-rpc-lib
;
in
[
;
};
dev = collectPkgs {
inherit (pkgs.ocamlPackages)
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
;
};
});
in
{
devShells = forEachSystem (pkgs: {
default = pkgs.mkShell {
packages = pkgs.lib.mapAttrsToList (_: v: v) deps.${pkgs.system};
shellHook =
let
justFile = ''
default:
@just --list
@build:
nix build .#debug --offline
@build:
nix build .#debug --offline
@release:
nix build --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
@test:
printf "\\n\\n\\t************ running nix+dune tests ************\\n\\n\\n"
nix flake check --offline
'';
};
in
''
printf '${justFile}' > justfile
'';
};
});
packages.default = pkgs.callPackage ./nix/default.nix {
ocaml-deps = minimal;
packages = forEachSystem (pkgs: {
default = pkgs.callPackage ./nix/default.nix {
buildInputs = deps.${pkgs.system}.build;
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;
};
docs = pkgs.callPackage unf.lib.pak-chooie {
inherit self;
projectName = "meat";
newPath = "https://git.atagen.co/atagen/meat/src";
modules = [
self.nixosModules.meat
];
};
});
nixosModules.meat =
{
pkgs,
lib,
...
}:
{
imports = [ ./nix/module.nix ];
programs.meat.package = self.packages.${pkgs.system}.default;
};
};
}