diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..fa15c13 --- /dev/null +++ b/flake.nix @@ -0,0 +1,45 @@ +{ + inputs = { + opam-repository = { + url = "github:ocaml/opam-repository"; + flake = false; + }; + opam-nix.url = "github:tweag/opam-nix"; + opam-nix.inputs.opam-repository.follows = "opam-repository"; + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.follows = "opam-nix/nixpkgs"; + }; + + outputs = { flake-utils, opam-nix, nixpkgs, ... }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + on = opam-nix.lib.${system}; + localPackagesQuery = builtins.mapAttrs (_: pkgs.lib.last) + (on.listRepo (on.makeOpamRepo ./.)); + devPackagesQuery = { + ocaml-lsp-server = "*"; + ocamlformat = "*"; + }; + query = devPackagesQuery // { + ocaml-base-compiler = "*"; + }; + scope = on.buildDuneProject { } "toytt" ./. query; + devPackages = builtins.attrValues + (pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope); + packages = + pkgs.lib.getAttrs (builtins.attrNames localPackagesQuery) scope; + in + { + legacyPackages = scope; + + packages = packages // { default = packages.toytt; }; + + devShells.default = pkgs.mkShell { + inputsFrom = builtins.attrValues packages; + buildInputs = devPackages ++ [ + # Add additional packages from nixpkgs here + ]; + }; + }); +} |