remove reliance on nh for most things
This commit is contained in:
parent
56d0dc028f
commit
1a2ca2dcbd
7 changed files with 242 additions and 318 deletions
190
flake.nix
190
flake.nix
|
@ -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;
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue