[Nix-dev] obtaining the drv from an imported object

stewart mackenzie setori88 at gmail.com
Sat Oct 22 20:17:26 CEST 2016


Greetings,

I have a specialization repo for fractalide i.e. the repos may import
each others components and contracts. They are just specializations /
experimental places
(https://github.com/fractalide/fractalide_external_opensource_example)

I want the specialization repo to be importable by canonical i.e:
https://github.com/fractalide/fractalide/blob/master/components/vendor/external/opensource/example/default.nix#L11

and I also want the programmer to be able to `cd specialization/` and
then build a vm right there instead of having to go into the
fractalide repo to build the vm.

This is the code I have so far for this repo
https://github.com/fractalide/fractalide_external_opensource_example/default.nix

{ fractalide ? import (fetchTarball
https://github.com/fractalide/fractalide/archive/master.tar.gz) {}
  , pkgs ? fractalide.pkgs
  , support ? fractalide.support
  , contracts ? fractalide.contracts
  , components ? fractalide.components}:
let
  publicComponentOrSubnet = allComponents.vendor_test_nand;
  allContracts = contracts // import ./contracts {inherit pkgs support
allContracts;};
  allComponents = components // import ./components {inherit pkgs
support allContracts allComponents;};
  componentOrSubnetOrVm = if fractalide == null then publicComponentOrSubnet
  else import fractalide { inherit pkgs support allContracts
allComponents; exeSubnet = publicComponentOrSubnet;};
in
componentOrSubnetOrVm

The line in question is this one:   else import fractalide { inherit
pkgs support allContracts allComponents; exeSubnet =
publicComponentOrSubnet;};

I want to find the drv of fractalide so I can `else import
fractalide.drv/support/vm { ...} (to that effect)

where the path points to this file:
https://github.com/fractalide/fractalide/blob/master/support/vm/default.nix

How do I obtain the drv?

Kind regards
Stewart


More information about the nix-dev mailing list