|
166 | 166 | compiler-nix-name = "ghc8107";
|
167 | 167 | };
|
168 | 168 | coopPabFlake = coopPabProj.flake { };
|
169 |
| - |
170 |
| - coopPabCli = pkgs.stdenv.mkDerivation { |
171 |
| - name = "coop-pab-cli"; |
172 |
| - nativeBuildInputs = [ pkgs.makeWrapper ]; |
173 |
| - phases = [ "installPhase" ]; |
174 |
| - installPhase = '' |
175 |
| - mkdir -p $out/bin |
176 |
| - cp ${coopPabProj.getComponent "coop-pab:exe:coop-pab-cli"}/bin/coop-pab-cli $out/bin/coop-pab-cli |
177 |
| - chmod +x $out/bin/coop-pab-cli |
178 |
| - wrapProgram $out/bin/coop-pab-cli --prefix PATH ":" ${coopPlutusCli}/bin/coop-plutus-cli |
179 |
| - ''; |
180 |
| - }; |
| 169 | + coopPabCli = coopPabFlake.packages."coop-pab:exe:coop-pab-cli"; |
181 | 170 |
|
182 | 171 | # Extras
|
183 | 172 | plutusJson = import ./coop-extras/plutus-json/build.nix {
|
|
211 | 200 | };
|
212 | 201 | cardanoProtoExtrasFlake = cardanoProtoExtras.flake { };
|
213 | 202 |
|
| 203 | + coopClis = indexBy (drv: drv.exeName) [ |
| 204 | + coopPabCli |
| 205 | + coopPlutusCli |
| 206 | + coopPublisherCli |
| 207 | + jsFsStoreCli |
| 208 | + plutusJsonCli |
| 209 | + ]; |
| 210 | + |
214 | 211 | coopEnvShell = import ./coop-extras/coop-env/build.nix {
|
215 | 212 | inherit pkgs;
|
216 |
| - plutipLocalCluster = plutip.packages.${system}."plutip:exe:local-cluster"; |
217 |
| - inherit coopPabCli coopPlutusCli jsFsStoreCli coopPublisherCli plutusJsonCli; |
| 213 | + inherit coopClis; |
218 | 214 | cardanoNode = coopPabProj.hsPkgs.cardano-node.components.exes.cardano-node;
|
219 | 215 | cardanoCli = coopPabProj.hsPkgs.cardano-cli.components.exes.cardano-cli;
|
220 | 216 | chainIndex = coopPabProj.hsPkgs.plutus-chain-index.components.exes.plutus-chain-index;
|
| 217 | + plutipLocalCluster = plutip.packages.${system}."plutip:exe:local-cluster"; |
221 | 218 | };
|
222 | 219 |
|
| 220 | + # Various helper functions |
223 | 221 | renameAttrs = rnFn: pkgs.lib.attrsets.mapAttrs' (n: value: { name = rnFn n; inherit value; });
|
| 222 | + indexBy = keyFn: builtins.foldl' (indexed: x: indexed // { "${keyFn x}" = x; }) { }; |
| 223 | + fixNames = builtins.mapAttrs |
| 224 | + (_: drv: |
| 225 | + builtins.mapAttrs |
| 226 | + (name: value: |
| 227 | + if name == "name" |
| 228 | + then "${drv.exeName}-${drv.version}" |
| 229 | + else value |
| 230 | + ) |
| 231 | + drv |
| 232 | + ); |
224 | 233 | in
|
225 | 234 | rec {
|
226 | 235 | # Useful for nix repl
|
227 |
| - inherit pkgs pkgsWithOverlay pkgsForPlutarch plutusJsonCli; |
| 236 | + inherit pkgs pkgsWithOverlay pkgsForPlutarch; |
228 | 237 |
|
229 | 238 | # Standard flake attributes
|
230 |
| - packages = coopPlutusFlake.packages // coopPublisherFlake.packages // coopPabFlake.packages // coopHsTypesFlake.packages // plutusJsonFlake.packages // { |
231 |
| - "coop-plutus-cli" = coopPlutusCli; |
232 |
| - "coop-pab-cli" = coopPabCli; |
233 |
| - "coop-publisher-cli" = coopPublisherCli; |
234 |
| - "js-fs-store-cli" = jsFsStoreCli; |
235 |
| - "plutus-json-cli" = plutusJsonCli; |
236 |
| - "default" = coopPabCli; |
237 |
| - }; |
| 239 | + packages = coopPlutusFlake.packages |
| 240 | + // coopPublisherFlake.packages |
| 241 | + // coopPabFlake.packages |
| 242 | + // coopHsTypesFlake.packages |
| 243 | + // plutusJsonFlake.packages |
| 244 | + // coopClis |
| 245 | + // { "default" = coopPabCli; }; |
238 | 246 |
|
239 | 247 | devShells = rec {
|
240 | 248 | dev-proto = coopProtoDevShell;
|
|
262 | 270 | cardanoProtoExtrasFlake.checks
|
263 | 271 | ) //
|
264 | 272 | { inherit pre-commit-check; } // devShells // packages;
|
| 273 | + |
| 274 | + # FIXME(bladyjoker): Bundlers don't work without `fixNames` because they rely on `builtins.parseDrvName` on `name` rather than `exeName` attribute. |
| 275 | + bundlers = fixNames coopClis; |
265 | 276 | })
|
266 | 277 | // {
|
267 | 278 | # Instruction for the Hercules CI to build on x86_64-linux only, to avoid errors about systems without agents.
|
|
0 commit comments