diff --git a/.github/workflows/test-in-nix.yml b/.github/workflows/test-in-nix.yml new file mode 100644 index 0000000..4ac9440 --- /dev/null +++ b/.github/workflows/test-in-nix.yml @@ -0,0 +1,33 @@ +name: Test in Nix +on: + pull_request: + push: + branches: + - master + +jobs: + run: + name: Build and test + strategy: + fail-fast: false + matrix: + os: + - macos-latest + - ubuntu-latest + ocaml-compiler: + - 4_11 + - 4_12 + - 4_13 + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + - name: Setup Nix + uses: cachix/install-nix-action@v15 + with: + nix_path: nixpkgs=channel:nixos-21.11 + extra_nix_config: | + trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= + substituters = https://cache.nixos.org/ + max-jobs = auto + cores = 0 + - run: nix-shell --argstr ocamlVersion ${{ matrix.ocaml-compiler }} --run 'dune runtest' diff --git a/.gitignore b/.gitignore index 1ec4270..8767938 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ _build/ *.install *.elc .*.swp + +/result* diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..16424d4 --- /dev/null +++ b/default.nix @@ -0,0 +1,9 @@ +{ pkgs ? import {} +, ocamlVersion ? import ./nix/ocamlDefaultVersion.nix +, opam2nix ? + pkgs.callPackage ./nix/opam2nix.nix { + inherit pkgs; + ocamlPackagesOverride = pkgs.ocaml-ng."ocamlPackages_${ocamlVersion}"; +} }: + +pkgs.callPackage ./nix { inherit ocamlVersion opam2nix; } diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 0000000..c46bade --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,30 @@ +{ pkgs, lib, stdenv, ocamlVersion, opam2nix }: +let + inherit (lib) strings; + args = { + inherit (pkgs.ocaml-ng."ocamlPackages_${ocamlVersion}") ocaml; + src = + let ignores = pkgs.lib.strings.fileContents ../.gitignore; + in pkgs.nix-gitignore.gitignoreSourcePure ignores ../.; + }; + + opam-selection = opam2nix.build (args // { + selection = "${./opam-selection_${ocamlVersion}.nix}"; + }); + + localPackages = + let contents = builtins.attrNames (builtins.readDir ../.); + in builtins.filter (strings.hasSuffix ".opam") contents; + + resolve = opam2nix.resolve (args // { + selection = "./nix/opam-selection_${ocamlVersion}.nix"; + }) localPackages; + +in (builtins.listToAttrs (builtins.map (fname: + let packageName = strings.removeSuffix ".opam" fname; + in { + name = packageName; + value = builtins.getAttr packageName opam-selection; + }) localPackages)) // { + inherit resolve opam-selection; + } diff --git a/nix/ocamlDefaultVersion.nix b/nix/ocamlDefaultVersion.nix new file mode 100644 index 0000000..3c83a22 --- /dev/null +++ b/nix/ocamlDefaultVersion.nix @@ -0,0 +1 @@ +"4_13" diff --git a/nix/opam-selection_4_11.nix b/nix/opam-selection_4_11.nix new file mode 100644 index 0000000..d372229 --- /dev/null +++ b/nix/opam-selection_4_11.nix @@ -0,0 +1,555 @@ +### This file is generated by opam2nix. + +self: +let + lib = self.lib; + pkgs = self.pkgs; + selection = self.selection; + repoPath = self.repoPath; + repos = + { + opam-repository = + rec { + fetch = + { + owner = "ocaml"; + repo = "opam-repository"; + rev = "7cf7c46fd0c289f632b288a2ae1bc99ea3d378cc"; + sha256 = "0xiibs33w7hn8fkmk8mvgxdly70rral2nadkip5rmivlv6f91n3h"; + }; + src = (pkgs.fetchFromGitHub) fetch; + }; + }; +in +{ + format-version = 4; + inherit repos; + ocaml-version = "4.11.2"; + selection = + { + base-bytes = + { + pname = "base-bytes"; + version = "base"; + src = null; + opamInputs = { + inherit (selection) ocamlfind ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-bytes/base-bytes.base"; + hash = "sha256:0a68lmbf68jgm1i3b59j2sc3ha9yhv4678f9mfwwvczw88prq7l3"; + }; + }; + base-threads = + { + pname = "base-threads"; + version = "base"; + src = null; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-threads/base-threads.base"; + hash = "sha256:1c4bpyh61ampjgk5yh3inrgcpf1z1xv0pshn54ycmpn4dyzv0p2x"; + }; + }; + base-unix = + { + pname = "base-unix"; + version = "base"; + src = null; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-unix/base-unix.base"; + hash = "sha256:0mpsvb7684g723ylngryh15aqxg3blb7hgmq2fsqjyppr36iyzwg"; + }; + }; + camomile = + { + pname = "camomile"; + version = "1.0.2"; + src = pkgs.fetchurl + { + url = "https://github.com/yoriyuki/Camomile/releases/download/1.0.2/camomile-1.0.2.tbz"; + sha256 = "0chn7ldqb3wyf95yhmsxxq65cif56smgz1mhhc7m0dpwmyq1k97h"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/camomile/camomile.1.0.2"; + hash = "sha256:08z0c35bcm72ch2n7w0b1x7xnwn2hhcky5r6vyz8hi4m9jqv6azv"; + }; + }; + charInfo_width = + { + pname = "charInfo_width"; + version = "1.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/charInfo_width/archive/1.1.0.tar.gz"; + sha256 = "0wl1hcwbx2mmgbhwh1wwgjixvppjq0k43nqyq13xm4pvgdxfvci1"; + }; + opamInputs = + { + inherit (selection) result ocaml dune camomile; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/charInfo_width/charInfo_width.1.1.0"; + hash = "sha256:1vx3dlvd3xslkc9q93yyqnn479sj4wpmp9xwngipnibla7mcpyq7"; + }; + }; + cppo = + { + pname = "cppo"; + version = "1.6.8"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/cppo/archive/v1.6.8.tar.gz"; + sha256 = "0lxy4xkkkwgs1cj6d9lyzsqi9f6fc9r6cir5imi7yjqrpd86s1by"; + }; + opamInputs = + { + inherit (selection) ocaml dune base-unix; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/cppo/cppo.1.6.8"; + hash = "sha256:0pzd8irqkkkpfgw8nq9d21z9rj5m3qlzixyb7ybfy4b1fwh3n8bp"; + }; + }; + csexp = + { + pname = "csexp"; + version = "1.5.1"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-dune/csexp/releases/download/1.5.1/csexp-1.5.1.tbz"; + sha256 = "00mc19f89pxpmjl62862ya5kjcfrl8rjzvs00j05h2m9bw3f81fn"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/csexp/csexp.1.5.1"; + hash = "sha256:01lc95kz13gpki4xazyh6n20kv1g9inyb5myv240wl2n9v50z8fl"; + }; + }; + dune = + { + pname = "dune"; + version = "2.9.2"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/dune/releases/download/2.9.2/dune-site-2.9.2.tbz"; + sha256 = "0ivl5r9diky8r1rfka7427kc3lh168mrz0ywdxgv8y5rgx8crrxq"; + }; + opamInputs = + { + inherit (selection) base-unix + base-threads; + ocamlfind-secondary = selection.ocamlfind-secondary or null; + ocaml = selection.ocaml or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/dune/dune.2.9.2"; + hash = "sha256:0qzzy2kn29ww9ryl2fvhkph9lmc112yr86xn8r8s9rbaz2zfkm6x"; + }; + }; + dune-configurator = + { + pname = "dune-configurator"; + version = "2.9.1"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz"; + sha256 = "09lzq04b642iy0ljp59p32lgk3q8iphjh8fkdp69q29l5frgwx5k"; + }; + opamInputs = + { + inherit (selection) result ocaml dune csexp; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/dune-configurator/dune-configurator.2.9.1"; + hash = "sha256:1aik9w82r8vbb9fsfphpb0vam68s19ggkxprnqr99ygyalp2b71j"; + }; + }; + lambda-term = + { + pname = "lambda-term"; + version = "3.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/lambda-term/archive/3.1.0.tar.gz"; + sha256 = "1462j2c2nnzv6ng8b6907bw0zy3mhhnnjdm8k6as0sgm9ls0r77r"; + }; + opamInputs = + { + inherit (selection) zed react ocaml mew_vi lwt_react lwt_log lwt dune + camomile; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lambda-term/lambda-term.3.1.0"; + hash = "sha256:0v2wk9gxj0p1znivgrbshj038l2rjhzrhk61s7kiayy9ka101cav"; + }; + }; + lwt = + { + pname = "lwt"; + version = "5.5.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocsigen/lwt/archive/refs/tags/5.5.0.tar.gz"; + sha256 = "15gr6nhhfjyh91v9chvm6j7vnp1hhc60y3plgvcgl5yl5k7xbbj9"; + }; + opamInputs = + { + inherit (selection) seq result ocplib-endian ocaml mmap + dune-configurator dune + cppo; + ocaml-syntax-shims = selection.ocaml-syntax-shims or null; + conf-libev = selection.conf-libev or null; + base-unix = selection.base-unix or null; + base-threads = selection.base-threads or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt/lwt.5.5.0"; + hash = "sha256:0iadlycd4q93lsk07k9zaimlysgd38sj6v50dc3cb491vl0icipz"; + }; + }; + lwt_log = + { + pname = "lwt_log"; + version = "1.1.1"; + src = pkgs.fetchurl + { + url = "https://github.com/aantron/lwt_log/archive/1.1.1.tar.gz"; + sha256 = "0gszc8nvk2hpfq47plb36qahlnyfq28sa9mhicnf6mg5c7n1kyql"; + }; + opamInputs = { + inherit (selection) lwt dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt_log/lwt_log.1.1.1"; + hash = "sha256:18iddwpvs7hwkmsbii11kiw0aaad4kf8iv9vjw01npflxh729vig"; + }; + }; + lwt_react = + { + pname = "lwt_react"; + version = "1.1.5"; + src = pkgs.fetchurl + { + url = "https://github.com/ocsigen/lwt/archive/refs/tags/5.5.0.tar.gz"; + sha256 = "15gr6nhhfjyh91v9chvm6j7vnp1hhc60y3plgvcgl5yl5k7xbbj9"; + }; + opamInputs = + { + inherit (selection) react ocaml lwt dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt_react/lwt_react.1.1.5"; + hash = "sha256:1k0ysm1wdx55dzma6k1ifx0s09ijxg7jvjh2ak5l540lbjx30cf2"; + }; + }; + mew = + { + pname = "mew"; + version = "0.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/mew/archive/0.1.0.tar.gz"; + sha256 = "1rjri9mgfb9gn9fmjn0ax21y9jd9wkvr7mmx2jrlqmzgabmqrlv4"; + }; + opamInputs = + { + inherit (selection) trie result ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mew/mew.0.1.0"; + hash = "sha256:0g9xms016f909fzbwgxcy0k4xmvr5zk5bhnz66v9vpsiak2qm4s3"; + }; + }; + mew_vi = + { + pname = "mew_vi"; + version = "0.5.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/mew_vi/archive/0.5.0.tar.gz"; + sha256 = "1nmg3cysglgw4115n5zpz4azrfbnfxkn2kvw73chzs69viygm4m6"; + }; + opamInputs = + { + inherit (selection) react ocaml mew dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mew_vi/mew_vi.0.5.0"; + hash = "sha256:0zsfhxpff78cqk2c81parajb59m7hqf6v8arksxbyfha6mls65hz"; + }; + }; + mmap = + { + pname = "mmap"; + version = "1.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/mirage/mmap/releases/download/v1.1.0/mmap-v1.1.0.tbz"; + sha256 = "0l6waidal2n8mkdn74avbslvc10sf49f5d889n838z03pra5chsc"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mmap/mmap.1.1.0"; + hash = "sha256:1snhaf6mixmmb49gcin5wmbz4bfjz406mip4556lids8ajm22ibh"; + }; + }; + ocaml = + { + pname = "ocaml"; + version = "4.11.2"; + src = null; + opamInputs = + { + inherit (selection) + ocaml-config; + ocaml-variants = selection.ocaml-variants or null; + ocaml-system = selection.ocaml-system or null; + ocaml-base-compiler = selection.ocaml-base-compiler or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml/ocaml.4.11.2"; + hash = "sha256:14clfk687d596dyhfblf9sljbk31937rrnyx2nqi7ii52qwknn5x"; + }; + }; + ocaml-base-compiler = + { + pname = "ocaml-base-compiler"; + version = "4.11.2"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/ocaml/archive/4.11.2.tar.gz"; + sha256 = "02day17rxrd0vla89mxl1yac657d1hs0lxspj8sd58ygyrl2ljh4"; + }; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml-base-compiler/ocaml-base-compiler.4.11.2"; + hash = "sha256:0zaxk9ndzqf392h8arbl11qdllm0aljgahzam9ql2mq41pccpfdg"; + }; + }; + ocaml-config = + { + pname = "ocaml-config"; + version = "1"; + src = null; + opamInputs = + { + ocaml-variants = selection.ocaml-variants or null; + ocaml-system = selection.ocaml-system or null; + ocaml-base-compiler = selection.ocaml-base-compiler or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml-config/ocaml-config.1"; + hash = "sha256:1gc3pyhb64j8a91bgbpy9fzljpb1ps2ylgw31ldx879vdkk46nhp"; + }; + }; + ocamlbuild = + { + pname = "ocamlbuild"; + version = "0.14.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz"; + sha256 = "0y1fskw9rg2y1zgb7whv3v8v4xw04svgxslf3856q2aqd7lrrcl7"; + }; + opamInputs = { + inherit (selection) ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocamlbuild/ocamlbuild.0.14.0"; + hash = "sha256:1r5qnrcxfypzyvjvb3zd9f66kr5ldxdl3g9rsi3pb6040krqb5w7"; + }; + }; + ocamlfind = + { + pname = "ocamlfind"; + version = "1.9.3"; + src = pkgs.fetchurl + { + url = "http://download.camlcity.org/download/findlib-1.9.3.tar.gz"; + sha256 = "0hfcwamcvinmww59b5i4yxbf0kxyzkp5qv3d1c7ybn9q52vgq463"; + }; + opamInputs = + { + inherit (selection) ocaml; + graphics = selection.graphics or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocamlfind/ocamlfind.1.9.3"; + hash = "sha256:1wq1lkw3rpgilprlakznsxxf60mcidn3fzi3vjrgjdrnnp9hvh19"; + }; + }; + ocplib-endian = + { + pname = "ocplib-endian"; + version = "1.2"; + src = pkgs.fetchurl + { + url = "https://github.com/OCamlPro/ocplib-endian/archive/refs/tags/1.2.tar.gz"; + sha256 = "085kskr0cxcnv2d62n3jq1r273p7giisy56zfl26mm7amvl79blp"; + }; + opamInputs = + { + inherit (selection) ocaml dune cppo base-bytes; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocplib-endian/ocplib-endian.1.2"; + hash = "sha256:1jldvb471gyhkrzwfvqg722l3a8dc37hhhyas66skjzfmqyi2pnh"; + }; + }; + react = + { + pname = "react"; + version = "1.2.1"; + src = pkgs.fetchurl + { + url = "http://erratique.ch/software/react/releases/react-1.2.1.tbz"; + sha256 = "1aj8w79gdd9xnrbz7s5p8glcb4pmimi8jp9f439dqnf6ih3mqb3v"; + }; + opamInputs = + { + inherit (selection) topkg ocamlfind ocamlbuild ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/react/react.1.2.1"; + hash = "sha256:0wk5i83r2hxz1r1skkhzz8rild68m4g9i9blxigbg9r60hgw18z5"; + }; + }; + result = + { + pname = "result"; + version = "1.5"; + src = pkgs.fetchurl + { + url = "https://github.com/janestreet/result/releases/download/1.5/result-1.5.tbz"; + sha256 = "0cpfp35fdwnv3p30a06wd0py3805qxmq3jmcynjc3x2qhlimwfkw"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/result/result.1.5"; + hash = "sha256:0ybmvlisfz5swvbcq855czz1ysv9zxmb79f1m0x8284hczmfm98f"; + }; + }; + seq = + { + pname = "seq"; + version = "base"; + src = null; + opamInputs = { + inherit (selection) ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/seq/seq.base"; + hash = "sha256:1vm8mk6zm2q3fwnkprl6jib048zr4ysldw0bl74x6wwbxj0vx6k9"; + }; + }; + topkg = + { + pname = "topkg"; + version = "1.0.4"; + src = pkgs.fetchurl + { + url = "https://erratique.ch/software/topkg/releases/topkg-1.0.4.tbz"; + sha256 = "1kzw5cxkizcvh4rgzwgpjlj9hfxfk6yr686bxx6wrbsfs8as371k"; + }; + opamInputs = + { + inherit (selection) ocamlfind ocamlbuild ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/topkg/topkg.1.0.4"; + hash = "sha256:0gvngd4nayhhw02gcsljvmx6jkjpv9m3mqwpgimcfq04h0cf4knb"; + }; + }; + trie = + { + pname = "trie"; + version = "1.0.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/trie/archive/1.0.0.tar.gz"; + sha256 = "1slq4kiwnc723dsaw15ms7xxpqz061v8zck1m6iyc5j2li70by62"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/trie/trie.1.0.0"; + hash = "sha256:1ds07ikjjymacnlxfx1widfi7qz0js61lsqqq0xa90501p17nq10"; + }; + }; + utop = + { + pname = "utop"; + version = "development"; + src = self.directSrc "utop"; + opamInputs = + { + inherit (selection) react ocamlfind ocaml lwt_react lwt lambda-term + dune cppo camomile base-unix base-threads; + }; + opamSrc = "utop.opam"; + }; + zed = + { + pname = "zed"; + version = "3.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/zed/archive/3.1.0.tar.gz"; + sha256 = "1z95fs49hi00xy078a83m0vfdqwjb5953rwr15lfpirldi4v11y3"; + }; + opamInputs = + { + inherit (selection) react ocaml dune charInfo_width camomile + base-bytes; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/zed/zed.3.1.0"; + hash = "sha256:1k1yd4dwg6x5rija3lan3q57nr6f1xa45248613rr7k2x5zdp2nx"; + }; + }; + }; +} + diff --git a/nix/opam-selection_4_12.nix b/nix/opam-selection_4_12.nix new file mode 100644 index 0000000..53145b6 --- /dev/null +++ b/nix/opam-selection_4_12.nix @@ -0,0 +1,555 @@ +### This file is generated by opam2nix. + +self: +let + lib = self.lib; + pkgs = self.pkgs; + selection = self.selection; + repoPath = self.repoPath; + repos = + { + opam-repository = + rec { + fetch = + { + owner = "ocaml"; + repo = "opam-repository"; + rev = "7cf7c46fd0c289f632b288a2ae1bc99ea3d378cc"; + sha256 = "0xiibs33w7hn8fkmk8mvgxdly70rral2nadkip5rmivlv6f91n3h"; + }; + src = (pkgs.fetchFromGitHub) fetch; + }; + }; +in +{ + format-version = 4; + inherit repos; + ocaml-version = "4.12.0"; + selection = + { + base-bytes = + { + pname = "base-bytes"; + version = "base"; + src = null; + opamInputs = { + inherit (selection) ocamlfind ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-bytes/base-bytes.base"; + hash = "sha256:0a68lmbf68jgm1i3b59j2sc3ha9yhv4678f9mfwwvczw88prq7l3"; + }; + }; + base-threads = + { + pname = "base-threads"; + version = "base"; + src = null; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-threads/base-threads.base"; + hash = "sha256:1c4bpyh61ampjgk5yh3inrgcpf1z1xv0pshn54ycmpn4dyzv0p2x"; + }; + }; + base-unix = + { + pname = "base-unix"; + version = "base"; + src = null; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-unix/base-unix.base"; + hash = "sha256:0mpsvb7684g723ylngryh15aqxg3blb7hgmq2fsqjyppr36iyzwg"; + }; + }; + camomile = + { + pname = "camomile"; + version = "1.0.2"; + src = pkgs.fetchurl + { + url = "https://github.com/yoriyuki/Camomile/releases/download/1.0.2/camomile-1.0.2.tbz"; + sha256 = "0chn7ldqb3wyf95yhmsxxq65cif56smgz1mhhc7m0dpwmyq1k97h"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/camomile/camomile.1.0.2"; + hash = "sha256:08z0c35bcm72ch2n7w0b1x7xnwn2hhcky5r6vyz8hi4m9jqv6azv"; + }; + }; + charInfo_width = + { + pname = "charInfo_width"; + version = "1.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/charInfo_width/archive/1.1.0.tar.gz"; + sha256 = "0wl1hcwbx2mmgbhwh1wwgjixvppjq0k43nqyq13xm4pvgdxfvci1"; + }; + opamInputs = + { + inherit (selection) result ocaml dune camomile; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/charInfo_width/charInfo_width.1.1.0"; + hash = "sha256:1vx3dlvd3xslkc9q93yyqnn479sj4wpmp9xwngipnibla7mcpyq7"; + }; + }; + cppo = + { + pname = "cppo"; + version = "1.6.8"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/cppo/archive/v1.6.8.tar.gz"; + sha256 = "0lxy4xkkkwgs1cj6d9lyzsqi9f6fc9r6cir5imi7yjqrpd86s1by"; + }; + opamInputs = + { + inherit (selection) ocaml dune base-unix; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/cppo/cppo.1.6.8"; + hash = "sha256:0pzd8irqkkkpfgw8nq9d21z9rj5m3qlzixyb7ybfy4b1fwh3n8bp"; + }; + }; + csexp = + { + pname = "csexp"; + version = "1.5.1"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-dune/csexp/releases/download/1.5.1/csexp-1.5.1.tbz"; + sha256 = "00mc19f89pxpmjl62862ya5kjcfrl8rjzvs00j05h2m9bw3f81fn"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/csexp/csexp.1.5.1"; + hash = "sha256:01lc95kz13gpki4xazyh6n20kv1g9inyb5myv240wl2n9v50z8fl"; + }; + }; + dune = + { + pname = "dune"; + version = "2.9.2"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/dune/releases/download/2.9.2/dune-site-2.9.2.tbz"; + sha256 = "0ivl5r9diky8r1rfka7427kc3lh168mrz0ywdxgv8y5rgx8crrxq"; + }; + opamInputs = + { + inherit (selection) base-unix + base-threads; + ocamlfind-secondary = selection.ocamlfind-secondary or null; + ocaml = selection.ocaml or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/dune/dune.2.9.2"; + hash = "sha256:0qzzy2kn29ww9ryl2fvhkph9lmc112yr86xn8r8s9rbaz2zfkm6x"; + }; + }; + dune-configurator = + { + pname = "dune-configurator"; + version = "2.9.1"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz"; + sha256 = "09lzq04b642iy0ljp59p32lgk3q8iphjh8fkdp69q29l5frgwx5k"; + }; + opamInputs = + { + inherit (selection) result ocaml dune csexp; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/dune-configurator/dune-configurator.2.9.1"; + hash = "sha256:1aik9w82r8vbb9fsfphpb0vam68s19ggkxprnqr99ygyalp2b71j"; + }; + }; + lambda-term = + { + pname = "lambda-term"; + version = "3.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/lambda-term/archive/3.1.0.tar.gz"; + sha256 = "1462j2c2nnzv6ng8b6907bw0zy3mhhnnjdm8k6as0sgm9ls0r77r"; + }; + opamInputs = + { + inherit (selection) zed react ocaml mew_vi lwt_react lwt_log lwt dune + camomile; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lambda-term/lambda-term.3.1.0"; + hash = "sha256:0v2wk9gxj0p1znivgrbshj038l2rjhzrhk61s7kiayy9ka101cav"; + }; + }; + lwt = + { + pname = "lwt"; + version = "5.5.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocsigen/lwt/archive/refs/tags/5.5.0.tar.gz"; + sha256 = "15gr6nhhfjyh91v9chvm6j7vnp1hhc60y3plgvcgl5yl5k7xbbj9"; + }; + opamInputs = + { + inherit (selection) seq result ocplib-endian ocaml mmap + dune-configurator dune + cppo; + ocaml-syntax-shims = selection.ocaml-syntax-shims or null; + conf-libev = selection.conf-libev or null; + base-unix = selection.base-unix or null; + base-threads = selection.base-threads or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt/lwt.5.5.0"; + hash = "sha256:0iadlycd4q93lsk07k9zaimlysgd38sj6v50dc3cb491vl0icipz"; + }; + }; + lwt_log = + { + pname = "lwt_log"; + version = "1.1.1"; + src = pkgs.fetchurl + { + url = "https://github.com/aantron/lwt_log/archive/1.1.1.tar.gz"; + sha256 = "0gszc8nvk2hpfq47plb36qahlnyfq28sa9mhicnf6mg5c7n1kyql"; + }; + opamInputs = { + inherit (selection) lwt dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt_log/lwt_log.1.1.1"; + hash = "sha256:18iddwpvs7hwkmsbii11kiw0aaad4kf8iv9vjw01npflxh729vig"; + }; + }; + lwt_react = + { + pname = "lwt_react"; + version = "1.1.5"; + src = pkgs.fetchurl + { + url = "https://github.com/ocsigen/lwt/archive/refs/tags/5.5.0.tar.gz"; + sha256 = "15gr6nhhfjyh91v9chvm6j7vnp1hhc60y3plgvcgl5yl5k7xbbj9"; + }; + opamInputs = + { + inherit (selection) react ocaml lwt dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt_react/lwt_react.1.1.5"; + hash = "sha256:1k0ysm1wdx55dzma6k1ifx0s09ijxg7jvjh2ak5l540lbjx30cf2"; + }; + }; + mew = + { + pname = "mew"; + version = "0.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/mew/archive/0.1.0.tar.gz"; + sha256 = "1rjri9mgfb9gn9fmjn0ax21y9jd9wkvr7mmx2jrlqmzgabmqrlv4"; + }; + opamInputs = + { + inherit (selection) trie result ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mew/mew.0.1.0"; + hash = "sha256:0g9xms016f909fzbwgxcy0k4xmvr5zk5bhnz66v9vpsiak2qm4s3"; + }; + }; + mew_vi = + { + pname = "mew_vi"; + version = "0.5.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/mew_vi/archive/0.5.0.tar.gz"; + sha256 = "1nmg3cysglgw4115n5zpz4azrfbnfxkn2kvw73chzs69viygm4m6"; + }; + opamInputs = + { + inherit (selection) react ocaml mew dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mew_vi/mew_vi.0.5.0"; + hash = "sha256:0zsfhxpff78cqk2c81parajb59m7hqf6v8arksxbyfha6mls65hz"; + }; + }; + mmap = + { + pname = "mmap"; + version = "1.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/mirage/mmap/releases/download/v1.1.0/mmap-v1.1.0.tbz"; + sha256 = "0l6waidal2n8mkdn74avbslvc10sf49f5d889n838z03pra5chsc"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mmap/mmap.1.1.0"; + hash = "sha256:1snhaf6mixmmb49gcin5wmbz4bfjz406mip4556lids8ajm22ibh"; + }; + }; + ocaml = + { + pname = "ocaml"; + version = "4.12.0"; + src = null; + opamInputs = + { + inherit (selection) + ocaml-config; + ocaml-variants = selection.ocaml-variants or null; + ocaml-system = selection.ocaml-system or null; + ocaml-base-compiler = selection.ocaml-base-compiler or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml/ocaml.4.12.0"; + hash = "sha256:038vq14gnl2qzgk4mjr0xif1xln30wk5hbj2icvq3ql6hszyrf9g"; + }; + }; + ocaml-base-compiler = + { + pname = "ocaml-base-compiler"; + version = "4.12.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/ocaml/archive/4.12.0.tar.gz"; + sha256 = "0i37laikik5vwydw1cwygxd8xq2d6n35l20irgrh691njlwpmh5d"; + }; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml-base-compiler/ocaml-base-compiler.4.12.0"; + hash = "sha256:12clsv2kmwsfy685kjkjsyv41krfrr04ccpc11xhv6ar0090bsh5"; + }; + }; + ocaml-config = + { + pname = "ocaml-config"; + version = "2"; + src = null; + opamInputs = + { + ocaml-variants = selection.ocaml-variants or null; + ocaml-system = selection.ocaml-system or null; + ocaml-base-compiler = selection.ocaml-base-compiler or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml-config/ocaml-config.2"; + hash = "sha256:0h0hgqq9mbywvqygppfdc50gf9ss8a97l4dgsv3hszmzh6gglgrg"; + }; + }; + ocamlbuild = + { + pname = "ocamlbuild"; + version = "0.14.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz"; + sha256 = "0y1fskw9rg2y1zgb7whv3v8v4xw04svgxslf3856q2aqd7lrrcl7"; + }; + opamInputs = { + inherit (selection) ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocamlbuild/ocamlbuild.0.14.0"; + hash = "sha256:1r5qnrcxfypzyvjvb3zd9f66kr5ldxdl3g9rsi3pb6040krqb5w7"; + }; + }; + ocamlfind = + { + pname = "ocamlfind"; + version = "1.9.3"; + src = pkgs.fetchurl + { + url = "http://download.camlcity.org/download/findlib-1.9.3.tar.gz"; + sha256 = "0hfcwamcvinmww59b5i4yxbf0kxyzkp5qv3d1c7ybn9q52vgq463"; + }; + opamInputs = + { + inherit (selection) ocaml; + graphics = selection.graphics or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocamlfind/ocamlfind.1.9.3"; + hash = "sha256:1wq1lkw3rpgilprlakznsxxf60mcidn3fzi3vjrgjdrnnp9hvh19"; + }; + }; + ocplib-endian = + { + pname = "ocplib-endian"; + version = "1.2"; + src = pkgs.fetchurl + { + url = "https://github.com/OCamlPro/ocplib-endian/archive/refs/tags/1.2.tar.gz"; + sha256 = "085kskr0cxcnv2d62n3jq1r273p7giisy56zfl26mm7amvl79blp"; + }; + opamInputs = + { + inherit (selection) ocaml dune cppo base-bytes; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocplib-endian/ocplib-endian.1.2"; + hash = "sha256:1jldvb471gyhkrzwfvqg722l3a8dc37hhhyas66skjzfmqyi2pnh"; + }; + }; + react = + { + pname = "react"; + version = "1.2.1"; + src = pkgs.fetchurl + { + url = "http://erratique.ch/software/react/releases/react-1.2.1.tbz"; + sha256 = "1aj8w79gdd9xnrbz7s5p8glcb4pmimi8jp9f439dqnf6ih3mqb3v"; + }; + opamInputs = + { + inherit (selection) topkg ocamlfind ocamlbuild ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/react/react.1.2.1"; + hash = "sha256:0wk5i83r2hxz1r1skkhzz8rild68m4g9i9blxigbg9r60hgw18z5"; + }; + }; + result = + { + pname = "result"; + version = "1.5"; + src = pkgs.fetchurl + { + url = "https://github.com/janestreet/result/releases/download/1.5/result-1.5.tbz"; + sha256 = "0cpfp35fdwnv3p30a06wd0py3805qxmq3jmcynjc3x2qhlimwfkw"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/result/result.1.5"; + hash = "sha256:0ybmvlisfz5swvbcq855czz1ysv9zxmb79f1m0x8284hczmfm98f"; + }; + }; + seq = + { + pname = "seq"; + version = "base"; + src = null; + opamInputs = { + inherit (selection) ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/seq/seq.base"; + hash = "sha256:1vm8mk6zm2q3fwnkprl6jib048zr4ysldw0bl74x6wwbxj0vx6k9"; + }; + }; + topkg = + { + pname = "topkg"; + version = "1.0.4"; + src = pkgs.fetchurl + { + url = "https://erratique.ch/software/topkg/releases/topkg-1.0.4.tbz"; + sha256 = "1kzw5cxkizcvh4rgzwgpjlj9hfxfk6yr686bxx6wrbsfs8as371k"; + }; + opamInputs = + { + inherit (selection) ocamlfind ocamlbuild ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/topkg/topkg.1.0.4"; + hash = "sha256:0gvngd4nayhhw02gcsljvmx6jkjpv9m3mqwpgimcfq04h0cf4knb"; + }; + }; + trie = + { + pname = "trie"; + version = "1.0.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/trie/archive/1.0.0.tar.gz"; + sha256 = "1slq4kiwnc723dsaw15ms7xxpqz061v8zck1m6iyc5j2li70by62"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/trie/trie.1.0.0"; + hash = "sha256:1ds07ikjjymacnlxfx1widfi7qz0js61lsqqq0xa90501p17nq10"; + }; + }; + utop = + { + pname = "utop"; + version = "development"; + src = self.directSrc "utop"; + opamInputs = + { + inherit (selection) react ocamlfind ocaml lwt_react lwt lambda-term + dune cppo camomile base-unix base-threads; + }; + opamSrc = "utop.opam"; + }; + zed = + { + pname = "zed"; + version = "3.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/zed/archive/3.1.0.tar.gz"; + sha256 = "1z95fs49hi00xy078a83m0vfdqwjb5953rwr15lfpirldi4v11y3"; + }; + opamInputs = + { + inherit (selection) react ocaml dune charInfo_width camomile + base-bytes; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/zed/zed.3.1.0"; + hash = "sha256:1k1yd4dwg6x5rija3lan3q57nr6f1xa45248613rr7k2x5zdp2nx"; + }; + }; + }; +} + diff --git a/nix/opam-selection_4_13.nix b/nix/opam-selection_4_13.nix new file mode 100644 index 0000000..7c7f0e7 --- /dev/null +++ b/nix/opam-selection_4_13.nix @@ -0,0 +1,555 @@ +### This file is generated by opam2nix. + +self: +let + lib = self.lib; + pkgs = self.pkgs; + selection = self.selection; + repoPath = self.repoPath; + repos = + { + opam-repository = + rec { + fetch = + { + owner = "ocaml"; + repo = "opam-repository"; + rev = "7cf7c46fd0c289f632b288a2ae1bc99ea3d378cc"; + sha256 = "0xiibs33w7hn8fkmk8mvgxdly70rral2nadkip5rmivlv6f91n3h"; + }; + src = (pkgs.fetchFromGitHub) fetch; + }; + }; +in +{ + format-version = 4; + inherit repos; + ocaml-version = "4.13.1"; + selection = + { + base-bytes = + { + pname = "base-bytes"; + version = "base"; + src = null; + opamInputs = { + inherit (selection) ocamlfind ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-bytes/base-bytes.base"; + hash = "sha256:0a68lmbf68jgm1i3b59j2sc3ha9yhv4678f9mfwwvczw88prq7l3"; + }; + }; + base-threads = + { + pname = "base-threads"; + version = "base"; + src = null; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-threads/base-threads.base"; + hash = "sha256:1c4bpyh61ampjgk5yh3inrgcpf1z1xv0pshn54ycmpn4dyzv0p2x"; + }; + }; + base-unix = + { + pname = "base-unix"; + version = "base"; + src = null; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/base-unix/base-unix.base"; + hash = "sha256:0mpsvb7684g723ylngryh15aqxg3blb7hgmq2fsqjyppr36iyzwg"; + }; + }; + camomile = + { + pname = "camomile"; + version = "1.0.2"; + src = pkgs.fetchurl + { + url = "https://github.com/yoriyuki/Camomile/releases/download/1.0.2/camomile-1.0.2.tbz"; + sha256 = "0chn7ldqb3wyf95yhmsxxq65cif56smgz1mhhc7m0dpwmyq1k97h"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/camomile/camomile.1.0.2"; + hash = "sha256:08z0c35bcm72ch2n7w0b1x7xnwn2hhcky5r6vyz8hi4m9jqv6azv"; + }; + }; + charInfo_width = + { + pname = "charInfo_width"; + version = "1.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/charInfo_width/archive/1.1.0.tar.gz"; + sha256 = "0wl1hcwbx2mmgbhwh1wwgjixvppjq0k43nqyq13xm4pvgdxfvci1"; + }; + opamInputs = + { + inherit (selection) result ocaml dune camomile; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/charInfo_width/charInfo_width.1.1.0"; + hash = "sha256:1vx3dlvd3xslkc9q93yyqnn479sj4wpmp9xwngipnibla7mcpyq7"; + }; + }; + cppo = + { + pname = "cppo"; + version = "1.6.8"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/cppo/archive/v1.6.8.tar.gz"; + sha256 = "0lxy4xkkkwgs1cj6d9lyzsqi9f6fc9r6cir5imi7yjqrpd86s1by"; + }; + opamInputs = + { + inherit (selection) ocaml dune base-unix; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/cppo/cppo.1.6.8"; + hash = "sha256:0pzd8irqkkkpfgw8nq9d21z9rj5m3qlzixyb7ybfy4b1fwh3n8bp"; + }; + }; + csexp = + { + pname = "csexp"; + version = "1.5.1"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-dune/csexp/releases/download/1.5.1/csexp-1.5.1.tbz"; + sha256 = "00mc19f89pxpmjl62862ya5kjcfrl8rjzvs00j05h2m9bw3f81fn"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/csexp/csexp.1.5.1"; + hash = "sha256:01lc95kz13gpki4xazyh6n20kv1g9inyb5myv240wl2n9v50z8fl"; + }; + }; + dune = + { + pname = "dune"; + version = "2.9.2"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/dune/releases/download/2.9.2/dune-site-2.9.2.tbz"; + sha256 = "0ivl5r9diky8r1rfka7427kc3lh168mrz0ywdxgv8y5rgx8crrxq"; + }; + opamInputs = + { + inherit (selection) base-unix + base-threads; + ocamlfind-secondary = selection.ocamlfind-secondary or null; + ocaml = selection.ocaml or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/dune/dune.2.9.2"; + hash = "sha256:0qzzy2kn29ww9ryl2fvhkph9lmc112yr86xn8r8s9rbaz2zfkm6x"; + }; + }; + dune-configurator = + { + pname = "dune-configurator"; + version = "2.9.1"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/dune/releases/download/2.9.1/dune-2.9.1.tbz"; + sha256 = "09lzq04b642iy0ljp59p32lgk3q8iphjh8fkdp69q29l5frgwx5k"; + }; + opamInputs = + { + inherit (selection) result ocaml dune csexp; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/dune-configurator/dune-configurator.2.9.1"; + hash = "sha256:1aik9w82r8vbb9fsfphpb0vam68s19ggkxprnqr99ygyalp2b71j"; + }; + }; + lambda-term = + { + pname = "lambda-term"; + version = "3.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/lambda-term/archive/3.1.0.tar.gz"; + sha256 = "1462j2c2nnzv6ng8b6907bw0zy3mhhnnjdm8k6as0sgm9ls0r77r"; + }; + opamInputs = + { + inherit (selection) zed react ocaml mew_vi lwt_react lwt_log lwt dune + camomile; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lambda-term/lambda-term.3.1.0"; + hash = "sha256:0v2wk9gxj0p1znivgrbshj038l2rjhzrhk61s7kiayy9ka101cav"; + }; + }; + lwt = + { + pname = "lwt"; + version = "5.5.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocsigen/lwt/archive/refs/tags/5.5.0.tar.gz"; + sha256 = "15gr6nhhfjyh91v9chvm6j7vnp1hhc60y3plgvcgl5yl5k7xbbj9"; + }; + opamInputs = + { + inherit (selection) seq result ocplib-endian ocaml mmap + dune-configurator dune + cppo; + ocaml-syntax-shims = selection.ocaml-syntax-shims or null; + conf-libev = selection.conf-libev or null; + base-unix = selection.base-unix or null; + base-threads = selection.base-threads or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt/lwt.5.5.0"; + hash = "sha256:0iadlycd4q93lsk07k9zaimlysgd38sj6v50dc3cb491vl0icipz"; + }; + }; + lwt_log = + { + pname = "lwt_log"; + version = "1.1.1"; + src = pkgs.fetchurl + { + url = "https://github.com/aantron/lwt_log/archive/1.1.1.tar.gz"; + sha256 = "0gszc8nvk2hpfq47plb36qahlnyfq28sa9mhicnf6mg5c7n1kyql"; + }; + opamInputs = { + inherit (selection) lwt dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt_log/lwt_log.1.1.1"; + hash = "sha256:18iddwpvs7hwkmsbii11kiw0aaad4kf8iv9vjw01npflxh729vig"; + }; + }; + lwt_react = + { + pname = "lwt_react"; + version = "1.1.5"; + src = pkgs.fetchurl + { + url = "https://github.com/ocsigen/lwt/archive/refs/tags/5.5.0.tar.gz"; + sha256 = "15gr6nhhfjyh91v9chvm6j7vnp1hhc60y3plgvcgl5yl5k7xbbj9"; + }; + opamInputs = + { + inherit (selection) react ocaml lwt dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/lwt_react/lwt_react.1.1.5"; + hash = "sha256:1k0ysm1wdx55dzma6k1ifx0s09ijxg7jvjh2ak5l540lbjx30cf2"; + }; + }; + mew = + { + pname = "mew"; + version = "0.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/mew/archive/0.1.0.tar.gz"; + sha256 = "1rjri9mgfb9gn9fmjn0ax21y9jd9wkvr7mmx2jrlqmzgabmqrlv4"; + }; + opamInputs = + { + inherit (selection) trie result ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mew/mew.0.1.0"; + hash = "sha256:0g9xms016f909fzbwgxcy0k4xmvr5zk5bhnz66v9vpsiak2qm4s3"; + }; + }; + mew_vi = + { + pname = "mew_vi"; + version = "0.5.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/mew_vi/archive/0.5.0.tar.gz"; + sha256 = "1nmg3cysglgw4115n5zpz4azrfbnfxkn2kvw73chzs69viygm4m6"; + }; + opamInputs = + { + inherit (selection) react ocaml mew dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mew_vi/mew_vi.0.5.0"; + hash = "sha256:0zsfhxpff78cqk2c81parajb59m7hqf6v8arksxbyfha6mls65hz"; + }; + }; + mmap = + { + pname = "mmap"; + version = "1.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/mirage/mmap/releases/download/v1.1.0/mmap-v1.1.0.tbz"; + sha256 = "0l6waidal2n8mkdn74avbslvc10sf49f5d889n838z03pra5chsc"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/mmap/mmap.1.1.0"; + hash = "sha256:1snhaf6mixmmb49gcin5wmbz4bfjz406mip4556lids8ajm22ibh"; + }; + }; + ocaml = + { + pname = "ocaml"; + version = "4.13.1"; + src = null; + opamInputs = + { + inherit (selection) + ocaml-config; + ocaml-variants = selection.ocaml-variants or null; + ocaml-system = selection.ocaml-system or null; + ocaml-base-compiler = selection.ocaml-base-compiler or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml/ocaml.4.13.1"; + hash = "sha256:1ahflchxawi94yk4vwdhihkdlw51x2f9ljwngmd9ymzh88lyzfpn"; + }; + }; + ocaml-base-compiler = + { + pname = "ocaml-base-compiler"; + version = "4.13.1"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/ocaml/archive/4.13.1.tar.gz"; + sha256 = "1i7ad8lh5l74wb3yzmhlv529wc75a5sjybzkad7wdl8zrj47jk0r"; + }; + opamInputs = { + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml-base-compiler/ocaml-base-compiler.4.13.1"; + hash = "sha256:069i5vsndd9lsvdm5wk898nfnc85ww7459nibjg6881ww43w8ck1"; + }; + }; + ocaml-config = + { + pname = "ocaml-config"; + version = "2"; + src = null; + opamInputs = + { + ocaml-variants = selection.ocaml-variants or null; + ocaml-system = selection.ocaml-system or null; + ocaml-base-compiler = selection.ocaml-base-compiler or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocaml-config/ocaml-config.2"; + hash = "sha256:0h0hgqq9mbywvqygppfdc50gf9ss8a97l4dgsv3hszmzh6gglgrg"; + }; + }; + ocamlbuild = + { + pname = "ocamlbuild"; + version = "0.14.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml/ocamlbuild/archive/0.14.0.tar.gz"; + sha256 = "0y1fskw9rg2y1zgb7whv3v8v4xw04svgxslf3856q2aqd7lrrcl7"; + }; + opamInputs = { + inherit (selection) ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocamlbuild/ocamlbuild.0.14.0"; + hash = "sha256:1r5qnrcxfypzyvjvb3zd9f66kr5ldxdl3g9rsi3pb6040krqb5w7"; + }; + }; + ocamlfind = + { + pname = "ocamlfind"; + version = "1.9.3"; + src = pkgs.fetchurl + { + url = "http://download.camlcity.org/download/findlib-1.9.3.tar.gz"; + sha256 = "0hfcwamcvinmww59b5i4yxbf0kxyzkp5qv3d1c7ybn9q52vgq463"; + }; + opamInputs = + { + inherit (selection) ocaml; + graphics = selection.graphics or null; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocamlfind/ocamlfind.1.9.3"; + hash = "sha256:1wq1lkw3rpgilprlakznsxxf60mcidn3fzi3vjrgjdrnnp9hvh19"; + }; + }; + ocplib-endian = + { + pname = "ocplib-endian"; + version = "1.2"; + src = pkgs.fetchurl + { + url = "https://github.com/OCamlPro/ocplib-endian/archive/refs/tags/1.2.tar.gz"; + sha256 = "085kskr0cxcnv2d62n3jq1r273p7giisy56zfl26mm7amvl79blp"; + }; + opamInputs = + { + inherit (selection) ocaml dune cppo base-bytes; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/ocplib-endian/ocplib-endian.1.2"; + hash = "sha256:1jldvb471gyhkrzwfvqg722l3a8dc37hhhyas66skjzfmqyi2pnh"; + }; + }; + react = + { + pname = "react"; + version = "1.2.1"; + src = pkgs.fetchurl + { + url = "http://erratique.ch/software/react/releases/react-1.2.1.tbz"; + sha256 = "1aj8w79gdd9xnrbz7s5p8glcb4pmimi8jp9f439dqnf6ih3mqb3v"; + }; + opamInputs = + { + inherit (selection) topkg ocamlfind ocamlbuild ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/react/react.1.2.1"; + hash = "sha256:0wk5i83r2hxz1r1skkhzz8rild68m4g9i9blxigbg9r60hgw18z5"; + }; + }; + result = + { + pname = "result"; + version = "1.5"; + src = pkgs.fetchurl + { + url = "https://github.com/janestreet/result/releases/download/1.5/result-1.5.tbz"; + sha256 = "0cpfp35fdwnv3p30a06wd0py3805qxmq3jmcynjc3x2qhlimwfkw"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/result/result.1.5"; + hash = "sha256:0ybmvlisfz5swvbcq855czz1ysv9zxmb79f1m0x8284hczmfm98f"; + }; + }; + seq = + { + pname = "seq"; + version = "base"; + src = null; + opamInputs = { + inherit (selection) ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/seq/seq.base"; + hash = "sha256:1vm8mk6zm2q3fwnkprl6jib048zr4ysldw0bl74x6wwbxj0vx6k9"; + }; + }; + topkg = + { + pname = "topkg"; + version = "1.0.4"; + src = pkgs.fetchurl + { + url = "https://erratique.ch/software/topkg/releases/topkg-1.0.4.tbz"; + sha256 = "1kzw5cxkizcvh4rgzwgpjlj9hfxfk6yr686bxx6wrbsfs8as371k"; + }; + opamInputs = + { + inherit (selection) ocamlfind ocamlbuild ocaml; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/topkg/topkg.1.0.4"; + hash = "sha256:0gvngd4nayhhw02gcsljvmx6jkjpv9m3mqwpgimcfq04h0cf4knb"; + }; + }; + trie = + { + pname = "trie"; + version = "1.0.0"; + src = pkgs.fetchurl + { + url = "https://github.com/kandu/trie/archive/1.0.0.tar.gz"; + sha256 = "1slq4kiwnc723dsaw15ms7xxpqz061v8zck1m6iyc5j2li70by62"; + }; + opamInputs = { + inherit (selection) ocaml dune; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/trie/trie.1.0.0"; + hash = "sha256:1ds07ikjjymacnlxfx1widfi7qz0js61lsqqq0xa90501p17nq10"; + }; + }; + utop = + { + pname = "utop"; + version = "development"; + src = self.directSrc "utop"; + opamInputs = + { + inherit (selection) react ocamlfind ocaml lwt_react lwt lambda-term + dune cppo camomile base-unix base-threads; + }; + opamSrc = "utop.opam"; + }; + zed = + { + pname = "zed"; + version = "3.1.0"; + src = pkgs.fetchurl + { + url = "https://github.com/ocaml-community/zed/archive/3.1.0.tar.gz"; + sha256 = "1z95fs49hi00xy078a83m0vfdqwjb5953rwr15lfpirldi4v11y3"; + }; + opamInputs = + { + inherit (selection) react ocaml dune charInfo_width camomile + base-bytes; + }; + opamSrc = repoPath (repos.opam-repository.src) + { + package = "packages/zed/zed.3.1.0"; + hash = "sha256:1k1yd4dwg6x5rija3lan3q57nr6f1xa45248613rr7k2x5zdp2nx"; + }; + }; + }; +} + diff --git a/nix/opam2nix.nix b/nix/opam2nix.nix new file mode 100644 index 0000000..da19658 --- /dev/null +++ b/nix/opam2nix.nix @@ -0,0 +1,4 @@ +{ source ? builtins.fetchTarball "https://github.com/timbertson/opam2nix/archive/v1.tar.gz" +, pkgs +, ocamlPackagesOverride }: +import source { inherit pkgs ocamlPackagesOverride; } diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..d63e85d --- /dev/null +++ b/shell.nix @@ -0,0 +1,10 @@ +{ pkgs ? import {} +, ocamlVersion ? import ./nix/ocamlDefaultVersion.nix }: +let + ocamlPackages = pkgs.ocaml-ng."ocamlPackages_${ocamlVersion}"; + local = pkgs.callPackage ./. { inherit ocamlVersion; }; +in +pkgs.mkShell { + inputsFrom = with local; [ utop ]; + buildInputs = [ ocamlPackages.ocaml-lsp ocamlPackages.ocp-indent ]; +}