diff options
| -rw-r--r-- | flake.lock | 189 | ||||
| -rw-r--r-- | flake.nix | 54 |
2 files changed, 243 insertions, 0 deletions
diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..cdff25c --- /dev/null +++ b/flake.lock | |||
| @@ -0,0 +1,189 @@ | |||
| 1 | { | ||
| 2 | "nodes": { | ||
| 3 | "flake-compat": { | ||
| 4 | "flake": false, | ||
| 5 | "locked": { | ||
| 6 | "lastModified": 1627913399, | ||
| 7 | "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", | ||
| 8 | "owner": "edolstra", | ||
| 9 | "repo": "flake-compat", | ||
| 10 | "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", | ||
| 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": 1701680307, | ||
| 25 | "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", | ||
| 26 | "owner": "numtide", | ||
| 27 | "repo": "flake-utils", | ||
| 28 | "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", | ||
| 29 | "type": "github" | ||
| 30 | }, | ||
| 31 | "original": { | ||
| 32 | "owner": "numtide", | ||
| 33 | "repo": "flake-utils", | ||
| 34 | "type": "github" | ||
| 35 | } | ||
| 36 | }, | ||
| 37 | "flake-utils_2": { | ||
| 38 | "locked": { | ||
| 39 | "lastModified": 1638122382, | ||
| 40 | "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", | ||
| 41 | "owner": "numtide", | ||
| 42 | "repo": "flake-utils", | ||
| 43 | "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", | ||
| 44 | "type": "github" | ||
| 45 | }, | ||
| 46 | "original": { | ||
| 47 | "owner": "numtide", | ||
| 48 | "repo": "flake-utils", | ||
| 49 | "type": "github" | ||
| 50 | } | ||
| 51 | }, | ||
| 52 | "mirage-opam-overlays": { | ||
| 53 | "flake": false, | ||
| 54 | "locked": { | ||
| 55 | "lastModified": 1661959605, | ||
| 56 | "narHash": "sha256-CPTuhYML3F4J58flfp3ZbMNhkRkVFKmBEYBZY5tnQwA=", | ||
| 57 | "owner": "dune-universe", | ||
| 58 | "repo": "mirage-opam-overlays", | ||
| 59 | "rev": "05f1c1823d891ce4d8adab91f5db3ac51d86dc0b", | ||
| 60 | "type": "github" | ||
| 61 | }, | ||
| 62 | "original": { | ||
| 63 | "owner": "dune-universe", | ||
| 64 | "repo": "mirage-opam-overlays", | ||
| 65 | "type": "github" | ||
| 66 | } | ||
| 67 | }, | ||
| 68 | "nixpkgs": { | ||
| 69 | "locked": { | ||
| 70 | "lastModified": 1682362401, | ||
| 71 | "narHash": "sha256-/UMUHtF2CyYNl4b60Z2y4wwTTdIWGKhj9H301EDcT9M=", | ||
| 72 | "owner": "nixos", | ||
| 73 | "repo": "nixpkgs", | ||
| 74 | "rev": "884ac294018409e0d1adc0cae185439a44bd6b0b", | ||
| 75 | "type": "github" | ||
| 76 | }, | ||
| 77 | "original": { | ||
| 78 | "owner": "nixos", | ||
| 79 | "ref": "nixos-unstable", | ||
| 80 | "repo": "nixpkgs", | ||
| 81 | "type": "github" | ||
| 82 | } | ||
| 83 | }, | ||
| 84 | "opam-nix": { | ||
| 85 | "inputs": { | ||
| 86 | "flake-compat": "flake-compat", | ||
| 87 | "flake-utils": "flake-utils_2", | ||
| 88 | "mirage-opam-overlays": "mirage-opam-overlays", | ||
| 89 | "nixpkgs": "nixpkgs", | ||
| 90 | "opam-overlays": "opam-overlays", | ||
| 91 | "opam-repository": "opam-repository", | ||
| 92 | "opam2json": "opam2json" | ||
| 93 | }, | ||
| 94 | "locked": { | ||
| 95 | "lastModified": 1701855685, | ||
| 96 | "narHash": "sha256-38RprSyq38aGCsniQQaoYYmITzbgq2wssDQtVqnHfWE=", | ||
| 97 | "owner": "tweag", | ||
| 98 | "repo": "opam-nix", | ||
| 99 | "rev": "73b179d9a5e4b9849e7b857eef9ad2a065e489be", | ||
| 100 | "type": "github" | ||
| 101 | }, | ||
| 102 | "original": { | ||
| 103 | "owner": "tweag", | ||
| 104 | "repo": "opam-nix", | ||
| 105 | "type": "github" | ||
| 106 | } | ||
| 107 | }, | ||
| 108 | "opam-overlays": { | ||
| 109 | "flake": false, | ||
| 110 | "locked": { | ||
| 111 | "lastModified": 1654162756, | ||
| 112 | "narHash": "sha256-RV68fUK+O3zTx61iiHIoS0LvIk0E4voMp+0SwRg6G6c=", | ||
| 113 | "owner": "dune-universe", | ||
| 114 | "repo": "opam-overlays", | ||
| 115 | "rev": "c8f6ef0fc5272f254df4a971a47de7848cc1c8a4", | ||
| 116 | "type": "github" | ||
| 117 | }, | ||
| 118 | "original": { | ||
| 119 | "owner": "dune-universe", | ||
| 120 | "repo": "opam-overlays", | ||
| 121 | "type": "github" | ||
| 122 | } | ||
| 123 | }, | ||
| 124 | "opam-repository": { | ||
| 125 | "flake": false, | ||
| 126 | "locked": { | ||
| 127 | "lastModified": 1701363371, | ||
| 128 | "narHash": "sha256-DeiPIuWNDSOxvlF41YPae7UpVGZLf7/E3qp2JMerovg=", | ||
| 129 | "owner": "ocaml", | ||
| 130 | "repo": "opam-repository", | ||
| 131 | "rev": "bc52affc41b55ff00c0d3ac9a376538d79695aaf", | ||
| 132 | "type": "github" | ||
| 133 | }, | ||
| 134 | "original": { | ||
| 135 | "owner": "ocaml", | ||
| 136 | "repo": "opam-repository", | ||
| 137 | "type": "github" | ||
| 138 | } | ||
| 139 | }, | ||
| 140 | "opam2json": { | ||
| 141 | "inputs": { | ||
| 142 | "nixpkgs": [ | ||
| 143 | "opam-nix", | ||
| 144 | "nixpkgs" | ||
| 145 | ] | ||
| 146 | }, | ||
| 147 | "locked": { | ||
| 148 | "lastModified": 1671540003, | ||
| 149 | "narHash": "sha256-5pXfbUfpVABtKbii6aaI2EdAZTjHJ2QntEf0QD2O5AM=", | ||
| 150 | "owner": "tweag", | ||
| 151 | "repo": "opam2json", | ||
| 152 | "rev": "819d291ea95e271b0e6027679de6abb4d4f7f680", | ||
| 153 | "type": "github" | ||
| 154 | }, | ||
| 155 | "original": { | ||
| 156 | "owner": "tweag", | ||
| 157 | "repo": "opam2json", | ||
| 158 | "type": "github" | ||
| 159 | } | ||
| 160 | }, | ||
| 161 | "root": { | ||
| 162 | "inputs": { | ||
| 163 | "flake-utils": "flake-utils", | ||
| 164 | "nixpkgs": [ | ||
| 165 | "opam-nix", | ||
| 166 | "nixpkgs" | ||
| 167 | ], | ||
| 168 | "opam-nix": "opam-nix" | ||
| 169 | } | ||
| 170 | }, | ||
| 171 | "systems": { | ||
| 172 | "locked": { | ||
| 173 | "lastModified": 1681028828, | ||
| 174 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | ||
| 175 | "owner": "nix-systems", | ||
| 176 | "repo": "default", | ||
| 177 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | ||
| 178 | "type": "github" | ||
| 179 | }, | ||
| 180 | "original": { | ||
| 181 | "owner": "nix-systems", | ||
| 182 | "repo": "default", | ||
| 183 | "type": "github" | ||
| 184 | } | ||
| 185 | } | ||
| 186 | }, | ||
| 187 | "root": "root", | ||
| 188 | "version": 7 | ||
| 189 | } | ||
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..bcd9ed1 --- /dev/null +++ b/flake.nix | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | { | ||
| 2 | inputs = { | ||
| 3 | opam-nix.url = "github:tweag/opam-nix"; | ||
| 4 | flake-utils.url = "github:numtide/flake-utils"; | ||
| 5 | nixpkgs.follows = "opam-nix/nixpkgs"; | ||
| 6 | }; | ||
| 7 | outputs = { self, nixpkgs, flake-utils, opam-nix, ... }: | ||
| 8 | flake-utils.lib.eachDefaultSystem (system: | ||
| 9 | let | ||
| 10 | pkgs = import nixpkgs { inherit system; }; | ||
| 11 | |||
| 12 | package = "sand"; | ||
| 13 | on = opam-nix.lib.${system}; | ||
| 14 | localPackagesQuery = builtins.mapAttrs (_: pkgs.lib.last) | ||
| 15 | (on.listRepo (on.makeOpamRepo ./.)); | ||
| 16 | devPackagesQuery = { | ||
| 17 | ocaml-lsp-server = "*"; | ||
| 18 | ocamlformat = "*"; | ||
| 19 | utop = "*"; | ||
| 20 | }; | ||
| 21 | query = devPackagesQuery // { | ||
| 22 | ocaml-base-compiler = "*"; | ||
| 23 | }; | ||
| 24 | scope = on.buildDuneProject { } package ./. query; | ||
| 25 | overlay = final: prev: | ||
| 26 | { | ||
| 27 | # You can add overrides here | ||
| 28 | }; | ||
| 29 | scope' = scope.overrideScope' overlay; | ||
| 30 | # Packages from devPackagesQuery | ||
| 31 | devPackages = builtins.attrValues | ||
| 32 | (pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope'); | ||
| 33 | # Packages in this workspace | ||
| 34 | packages = | ||
| 35 | pkgs.lib.getAttrs (builtins.attrNames localPackagesQuery) scope'; | ||
| 36 | in { | ||
| 37 | legacyPackages = scope'; | ||
| 38 | |||
| 39 | inherit packages; | ||
| 40 | |||
| 41 | devShells.default = pkgs.mkShell { | ||
| 42 | |||
| 43 | inputsFrom = builtins.attrValues packages; | ||
| 44 | |||
| 45 | buildInputs = devPackages ++ [ | ||
| 46 | # You can add packages from nixpkgs here | ||
| 47 | ]; | ||
| 48 | |||
| 49 | shellHook = '' | ||
| 50 | echo "version = `ocamlformat --version`" > .ocamlformat | ||
| 51 | ''; | ||
| 52 | }; | ||
| 53 | }); | ||
| 54 | } | ||
