Shells in OCaml

Flakey flake

+255 -4
+1
.gitignore
··· 1 + result 1 2 _build 2 3 test.sh 3 4 fatal.sh
+4 -2
dune-project
··· 21 21 (synopsis "A shell library") 22 22 (description "A library for writing shells") 23 23 (depends 24 - morbig 25 24 linenoise 25 + visitors 26 26 re 27 27 terminal 28 + (menhir 29 + (= 20250912)) 28 30 (yojson 29 - (>= 2.2.2)) 31 + (= 2.2.2)) 30 32 (ppxlib 31 33 (>= 0.37.0)) 32 34 (ppx_deriving_yojson
+193
flake.lock
··· 1 + { 2 + "nodes": { 3 + "flake-compat": { 4 + "flake": false, 5 + "locked": { 6 + "lastModified": 1747046372, 7 + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", 8 + "owner": "edolstra", 9 + "repo": "flake-compat", 10 + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", 11 + "type": "github" 12 + }, 13 + "original": { 14 + "owner": "edolstra", 15 + "repo": "flake-compat", 16 + "type": "github" 17 + } 18 + }, 19 + "flake-utils": { 20 + "inputs": { 21 + "systems": "systems" 22 + }, 23 + "locked": { 24 + "lastModified": 1731533236, 25 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 26 + "owner": "numtide", 27 + "repo": "flake-utils", 28 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 29 + "type": "github" 30 + }, 31 + "original": { 32 + "owner": "numtide", 33 + "repo": "flake-utils", 34 + "type": "github" 35 + } 36 + }, 37 + "mirage-opam-overlays": { 38 + "flake": false, 39 + "locked": { 40 + "lastModified": 1710922379, 41 + "narHash": "sha256-j4QREQDUf8oHOX7qg6wAOupgsNQoYlufxoPrgagD+pY=", 42 + "owner": "dune-universe", 43 + "repo": "mirage-opam-overlays", 44 + "rev": "797cb363df3ff763c43c8fbec5cd44de2878757e", 45 + "type": "github" 46 + }, 47 + "original": { 48 + "owner": "dune-universe", 49 + "repo": "mirage-opam-overlays", 50 + "type": "github" 51 + } 52 + }, 53 + "nixpkgs": { 54 + "locked": { 55 + "lastModified": 1770473678, 56 + "narHash": "sha256-2jWALGZyRKEW4ycxfAqG04UuZCqJwt34sfJnJkf4jzo=", 57 + "owner": "nixos", 58 + "repo": "nixpkgs", 59 + "rev": "c03cfff2b79dd525b374df7022ab3499ac12e59d", 60 + "type": "github" 61 + }, 62 + "original": { 63 + "owner": "nixos", 64 + "repo": "nixpkgs", 65 + "type": "github" 66 + } 67 + }, 68 + "opam-nix": { 69 + "inputs": { 70 + "flake-compat": "flake-compat", 71 + "flake-utils": [ 72 + "flake-utils" 73 + ], 74 + "mirage-opam-overlays": "mirage-opam-overlays", 75 + "nixpkgs": [ 76 + "nixpkgs" 77 + ], 78 + "opam-overlays": "opam-overlays", 79 + "opam-repository": [ 80 + "opam-repository" 81 + ], 82 + "opam2json": "opam2json" 83 + }, 84 + "locked": { 85 + "lastModified": 1769900026, 86 + "narHash": "sha256-O1cK8GVRNDKvAXU0mZjqpmftRnAeyDgyP7lf/3P/Pdg=", 87 + "owner": "tweag", 88 + "repo": "opam-nix", 89 + "rev": "1f373ef8c4cc1237a74c681b47bbdbdf7ab185a6", 90 + "type": "github" 91 + }, 92 + "original": { 93 + "owner": "tweag", 94 + "repo": "opam-nix", 95 + "type": "github" 96 + } 97 + }, 98 + "opam-overlays": { 99 + "flake": false, 100 + "locked": { 101 + "lastModified": 1741116009, 102 + "narHash": "sha256-Z0PIW82fHJFvAv/JYpAffnp2DaOjLhsPutqyIrORZd0=", 103 + "owner": "dune-universe", 104 + "repo": "opam-overlays", 105 + "rev": "e031bb64e33bf93be963e9a38b28962e6e14381f", 106 + "type": "github" 107 + }, 108 + "original": { 109 + "owner": "dune-universe", 110 + "repo": "opam-overlays", 111 + "type": "github" 112 + } 113 + }, 114 + "opam-repository": { 115 + "flake": false, 116 + "locked": { 117 + "lastModified": 1770398609, 118 + "narHash": "sha256-umhfG0YRCc59Gw7Xm8Um6gPSC6vaJo7knIt9EfULs1Q=", 119 + "owner": "ocaml", 120 + "repo": "opam-repository", 121 + "rev": "340ee6fd1ff10d0fce25e21ba1caca9ed1cfec68", 122 + "type": "github" 123 + }, 124 + "original": { 125 + "owner": "ocaml", 126 + "repo": "opam-repository", 127 + "type": "github" 128 + } 129 + }, 130 + "opam2json": { 131 + "inputs": { 132 + "nixpkgs": [ 133 + "opam-nix", 134 + "nixpkgs" 135 + ], 136 + "systems": "systems_2" 137 + }, 138 + "locked": { 139 + "lastModified": 1749457947, 140 + "narHash": "sha256-+QVm+HOYikF3wUhqSIV8qJbE/feSG+p48fgxIosbHS0=", 141 + "owner": "tweag", 142 + "repo": "opam2json", 143 + "rev": "0ecd66fc2bfb25d910522c990dd36412259eac1f", 144 + "type": "github" 145 + }, 146 + "original": { 147 + "owner": "tweag", 148 + "repo": "opam2json", 149 + "type": "github" 150 + } 151 + }, 152 + "root": { 153 + "inputs": { 154 + "flake-utils": "flake-utils", 155 + "nixpkgs": "nixpkgs", 156 + "opam-nix": "opam-nix", 157 + "opam-repository": "opam-repository" 158 + } 159 + }, 160 + "systems": { 161 + "locked": { 162 + "lastModified": 1681028828, 163 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 164 + "owner": "nix-systems", 165 + "repo": "default", 166 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 167 + "type": "github" 168 + }, 169 + "original": { 170 + "owner": "nix-systems", 171 + "repo": "default", 172 + "type": "github" 173 + } 174 + }, 175 + "systems_2": { 176 + "locked": { 177 + "lastModified": 1681028828, 178 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 179 + "owner": "nix-systems", 180 + "repo": "default", 181 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 182 + "type": "github" 183 + }, 184 + "original": { 185 + "owner": "nix-systems", 186 + "repo": "default", 187 + "type": "github" 188 + } 189 + } 190 + }, 191 + "root": "root", 192 + "version": 7 193 + }
+54
flake.nix
··· 1 + # Mostly copied from RyanGibb/eon 2 + { 3 + inputs = { 4 + nixpkgs.url = "github:nixos/nixpkgs"; 5 + opam-nix.url = "github:tweag/opam-nix"; 6 + flake-utils.url = "github:numtide/flake-utils"; 7 + opam-nix.inputs.nixpkgs.follows = "nixpkgs"; 8 + opam-nix.inputs.flake-utils.follows = "flake-utils"; 9 + # maintain a different opam-repository to those pinned upstream 10 + opam-repository = { 11 + url = "github:ocaml/opam-repository"; 12 + flake = false; 13 + }; 14 + self.submodules = true; 15 + opam-nix.inputs.opam-repository.follows = "opam-repository"; 16 + }; 17 + outputs = { self, nixpkgs, flake-utils, opam-nix, ... }@inputs: 18 + # create outputs for each default system 19 + flake-utils.lib.eachDefaultSystem (system: 20 + let 21 + package = "merry"; 22 + pkgs = nixpkgs.legacyPackages.${system}; 23 + opam-nix-lib = opam-nix.lib.${system}; 24 + devPackagesQuery = { 25 + ocaml-lsp-server = "*"; 26 + ocamlformat = "*"; 27 + utop = "*"; 28 + }; 29 + query = { 30 + ocaml-base-compiler = "*"; 31 + }; 32 + scope = 33 + # recursive finds vendored dependancies in duniverse 34 + opam-nix-lib.buildOpamProject' { recursive = true; } ./. (query // devPackagesQuery); 35 + in { 36 + packages.default = scope.${package}; 37 + defaultPackage = scope.${package}; 38 + 39 + devShells.default = let 40 + devPackages = builtins.attrValues 41 + (pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope); 42 + in pkgs.mkShell { 43 + inputsFrom = [ scope.${package} ]; 44 + buildInputs = devPackages; 45 + }; 46 + }) // { 47 + nixosModules = { 48 + default.imports = [ (import ./module.nix self.packages) ]; 49 + }; 50 + 51 + formatter = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed 52 + (system: nixpkgs.legacyPackages.${system}.nixfmt); 53 + }; 54 + }
+3 -2
merry.opam
··· 9 9 doc: "https://url/to/documentation" 10 10 depends: [ 11 11 "dune" {>= "3.20"} 12 - "morbig" 13 12 "linenoise" 13 + "visitors" 14 14 "re" 15 15 "terminal" 16 - "yojson" {>= "2.2.2"} 16 + "menhir" {= "20250912"} 17 + "yojson" {= "2.2.2"} 17 18 "ppxlib" {>= "0.37.0"} 18 19 "ppx_deriving_yojson" {>= "3.10.0"} 19 20 "globlon" {>= "0"}