aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorMarc Coquand <marc@mccd.space>2023-12-20 20:43:25 -0600
committerMarc Coquand <marc@mccd.space>2023-12-20 20:43:25 -0600
commitcc783c157f31e7e713c8b83be67449b1859dac27 (patch)
tree52559c115159671839f4b497b9191222faa35520 /flake.nix
downloadfixgen-cc783c157f31e7e713c8b83be67449b1859dac27.tar.gz
fixgen-cc783c157f31e7e713c8b83be67449b1859dac27.tar.bz2
fixgen-cc783c157f31e7e713c8b83be67449b1859dac27.zip
Initial commit
Diffstat (limited to '')
-rw-r--r--flake.nix66
1 files changed, 66 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..20b8532
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,66 @@
+{
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs";
+ opam-nix.url = "github:tweag/opam-nix";
+ opam-repository = {
+ url = "github:ocaml/opam-repository";
+ flake = false;
+ };
+ opam-nix.inputs.opam-repository.follows = "opam-repository";
+ opam-nix.inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ outputs = { self, nixpkgs, opam-nix, flake-utils, ... }:
+ flake-utils.lib.eachDefaultSystem (system:
+ let
+ system = "x86_64-linux";
+ pkgs = nixpkgs.legacyPackages.${system};
+ inherit (opam-nix.lib.${system})
+ buildOpamProject
+ materializedDefsToScope
+ materializeOpamProject';
+ package = "ann_bloop";
+ devPackagesQuery = {
+ ocaml-lsp-server = "*";
+ ocamlformat = "*";
+ # 1.9.6 fails to build
+ ocamlfind = "1.9.5";
+ utop = "*";
+ };
+ query = {
+ ocaml-base-compiler = "*";
+ };
+ overlay = final: prev: {
+ "${package}" = prev.${package}.overrideAttrs (_: {
+ # override derivation attributes, e.g. add additional dependacies
+ buildInputs = [
+ pkgs."gmp"
+ pkgs."libev"
+ pkgs."openssl"
+ ];
+ });
+ };
+ devBuildInputs = [ pkgs.ocamlPackages.ocamlformat ];
+ resolved-scope =
+ let scope = buildOpamProject { } package ./. query;
+ in scope.overrideScope' overlay;
+ materialized-scope =
+ let scope = materializedDefsToScope
+ { sourceMap.${package} = ./.; } ./package-defs.json;
+ in scope.overrideScope' overlay;
+ in rec {
+ packages = {
+ resolved = resolved-scope;
+ materialized = materialized-scope;
+ # to generate:
+ # cat $(nix eval .#package-defs --raw) > package-defs.json
+ package-defs = materializeOpamProject' { } ./. query;
+ };
+ defaultPackage = packages.materialized.${package};
+ devShells.default = pkgs.mkShell {
+ inputsFrom = [ defaultPackage ];
+ buildInputs = devBuildInputs;
+ };
+ }
+ );
+}