From 4175da366830c0ef3bf40ddb1e6594ac5dbe3866 Mon Sep 17 00:00:00 2001 From: Marc Coquand Date: Fri, 10 May 2024 15:04:43 -0500 Subject: Initial commit --- flake.nix | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 flake.nix (limited to 'flake.nix') diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..334a2a8 --- /dev/null +++ b/flake.nix @@ -0,0 +1,68 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs"; + opam-nix.url = "github:tweag/opam-nix"; + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.follows = "opam-nix/nixpkgs"; + }; + outputs = { self, flake-utils, opam-nix, nixpkgs }: + let package = "apbox"; + in flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + on = opam-nix.lib.${system}; + devPackagesQuery = { + # You can add "development" packages here. They will get added to the devShell automatically. + ocaml-lsp-server = "*"; + ocamlformat = "*"; + ocamlfind = "1.9.5"; + utop = "*"; + odoc = "*"; + }; + query = devPackagesQuery // { + ## You can force versions of certain packages here, e.g: + ## - force the ocaml compiler to be taken from opam-repository: + ocaml-base-compiler = "*"; + ## - or force the compiler to be taken from nixpkgs and be a certain version: + # ocaml-system = "4.14.0"; + ## - or force ocamlfind to be a certain version: + }; + scope = on.buildOpamProject' { } ./. query; + overlay = final: prev: { + # You can add overrides here + ${package} = prev.${package}.overrideAttrs (_: { + # Prevent the ocaml dependencies from leaking into dependent environments + doNixSupport = false; + buildInputs = + [ pkgs."gmp" pkgs."libev" pkgs."openssl" pkgs."libargon2" ]; + DUNE_PROFILE = "release"; + }); + }; + scope' = scope.overrideScope' overlay; + # The main package containing the executable + main = scope'.${package}; + # Packages from devPackagesQuery + devPackages = builtins.attrValues + (pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope'); + in { + legacyPackages = scope'; + + packages.default = main; + + apps.apbox.default = { + type = "app"; + program = "${main}/bin/apbox"; + }; + + devShells.default = pkgs.mkShell { + inputsFrom = [ main ]; + buildInputs = devPackages ++ [ + # You can add packages from nixpkgs here + pkgs.sqlite + pkgs.dbmate + pkgs.zeromq + ]; + }; + }); +} + -- cgit v1.2.3