# nixpkgs extended with all the overlays for LIGO { sources ? import ./sources.nix }: let ocaml-overlay = import ./ocaml-overlay.nix { inherit sources; }; static-overlay = import ./static-overlay.nix pkgs; mac-overlay = import ./mac-overlay.nix; nodejs-overlay = import ./nodejs-overlay.nix; nix-npm-buildpackage = pkgs.callPackage sources.nix-npm-buildpackage { }; pkgs = import sources.nixpkgs { overlays = [ ocaml-overlay nodejs-overlay ] # This is done here to prevent the need for bootstrap nixpkgs ++ (if builtins.currentSystem == "x86_64-darwin" then [ mac-overlay ] else [ ]); }; # Takes $pkg/ligo and creates a new package with $pkg/bin/ligo separateBinary = pkg: pkgs.runCommandNoCC "${pkg.name}-bin" { } "mkdir -p $out/bin; cp -Lr ${pkg}/ligo $out/bin"; tmp = pkgs.runCommandNoCC "tmpdir" { } "mkdir -p $out/tmp"; in pkgs.extend (self: super: { inherit (self.ocamlPackages) ligo ligo-out ligo-tests ligo-doc ligo-coverage; ligo-bin = separateBinary self.ligo-out.bin; ligo-docker = self.callPackage ./docker.nix { ligo = self.ligo-bin; }; ligo-deb = self.callPackage ./packageDeb.nix { }; ligo-editor = self.callPackage ./ligo-editor.nix { inherit sources; }; ligo-editor-docker = self.callPackage ./docker.nix { ligo = self.ligo-editor; name = "ligo-editor"; extraContents = [ tmp ]; }; ligo-website = self.callPackage ./ligo-website.nix { inherit (nix-npm-buildpackage) buildNpmPackage; }; ligo-static = self.pkgsMusl.ligo-bin; pkgsMusl = super.pkgsMusl.extend static-overlay; })