Also you don’t need to use toString, below should also work:
 
  import (my-nixpkgs.path + "/nixos/tests/make-test.nix”) ({…});

—
aycan



> On 03 Aug 2016, at 05:36, Tomasz Czyż <[email protected]> wrote:
> 
> I'm just adding solution I was looking for and finally found:
> 
> (import "${toString my-nixpkgs.path}/nixos/lib/testing.nix")
> 
> that's how you get the path from custom nixpkgs.
> 
> 2016-06-23 1:43 GMT+01:00 Tomasz Czyż <[email protected]>:
> 
> 
> 2016-06-23 1:39 GMT+01:00 Maarten Hoogendoorn <[email protected]>:
> Cool.
> 
> For development environments, it is recommended to use the nix-shell program.
> 
> +1, I'm constantly forgetting about it. 
> A good example is nixops (nixos/nixops on github).
> 
> PS, I've added the list again.
> 
> Cheers :-)
> 
> Tom 
> Op 23 jun. 2016 02:34 schreef "Tomasz Czyż" <[email protected]>:
> 
> Maarten,
> 
> thank you for showing this, I definitely omitted this part, now I see how you 
> set NIX_PATH in test.sh.
> 
> I think this approach is fine, and I'll use that solution if I won't figure 
> out better way.
> 
> I have tree like that:
> ./nixpkgs.nix  # this stuff is importing specific nixpkgs commit
> ./app1
> ./app2
> ./app3
> ./tests
> 
> each app is importing "../nixpkgs.nix" separately and tests are importing it 
> as well so all separately are using same nix version "internally".
> 
> By avoiding wrapper I can go to every directory and run nix-build and it will 
> work and app will be bound to specific nixpkgs version. 
> 
> Another solution would be, as you pointed, setting -I / NIX_PATH, but this is 
> another manual step that needs to be done. You have to add this to .profile 
> (but this is not project specific :[) or you have to set this in every 
> terminal you are working in, or figure out other way to set up this. I'll go 
> this route if I have no other options.
> 
> Right now with small workaround I described in previous post all stuff is 
> working without any other setup.
> 
> 1. Clone the repo
> 2. nix-build in every directory you want
> 
> 2016-06-23 1:23 GMT+01:00 Maarten Hoogendoorn <[email protected]>:
> You could set the nixpkgs path with the -I option, or as I do, with a shell 
> variable.
> Point it to your fork of nixpkgs, and you're done.
> 
> Alternatively, there is some overridePackage(s?) function that might interest 
> you. (I myself should look at in detail as well ;))
> 
> Op 23 jun. 2016 02:19 schreef "Tomasz Czyż" <[email protected]>:
> 
> Maarten, 
> 
> thank you for sharing your work.
> 
> I think you are using approach with "import <nixpkgs>" and not overriden pkgs 
> inside testing config/machine - which I prefer to avoid, because I want to 
> have bound nixpkgs version, I don't want to use "system" version. (maybe I'm 
> missing some piece, in that case please point it out).
> 
> In the meantime I found, that I can pass/override pinned pkgs inside 
> config/machine description with a little trick.
> 
>   import <nixpkgs/nixos/tests/make-test.nix> ({
>     machine = {config,pkgs,...}: {
>       _module.args.pkgs = my-nixpkgs;  # this trick overrides pkgs argument 
> for all modules
>       imports = [
>           ... my modules...
>       ];
> 
>     };
>     testScript=''
>         ...
>     '';
>   })
> 
> 
> I would prefer to not use this method as probably "pkgs" argument can "leak" 
> in some places (the other version of nixpkgs can be used and I will not 
> detect this easily). But that's the best I have so far.
> 
> 
> 
> 2016-06-23 1:10 GMT+01:00 Maarten Hoogendoorn <[email protected]>:
> Hi Tomasz,
> 
> Some weeks ago, I looked into this to run zfs integration tests for a rust 
> binding to libzfs.
> 
> The GitHub repository [1] is set up to run a qemu vm on Travis, so that my 
> tests can run with a kernel that supports zfs. It also provides some 
> isolation during development. I'd rather not destroy my main pool by accident 
> ;)
> 
> Good luck, and let me know if this helps you out :)
> Maarten
> 
> [1] https://github.com/moretea/rust-zfs
> 
> 2016-06-23 1:23 GMT+02:00 Tomasz Czyż <[email protected]>:
> Hello,
> 
> I found makeTest function from nixos useful and I would like to use it in my 
> projects for building integration testing environments.
> 
> The only method I found by now, how to access it is:
> 
> (import <nixpkgs/nixos/lib/testing.nix>).makeTest
> 
> The problem is: in the script I'm running, the fixed nixpkgs version is 
> passed as "pkgs" argument. The script must test programs against that 
> specific nixpkgs version.
> 
> I see two options:
> 1. grab makeTest command from pinned nixpkgs
> 2. grab makeTest from <nixpkgs> and pass pinned nixpkgs as argument to 
> makeTest (and further to machine/nodes).
> 
> 1. I couldn't find the attribute which is pointing to that function or file, 
> if looks like I can access it only using path syntax like 
> <nixpkgs/nixos/lib/testing.nix>. Is there any way to get path for current 
> "pkgs" set? Or are there any other ways how I can access this file/function?
> 
> 2. I didn't find any way to pass pkgs argument down the stack, looks like 
> other funtions inside makeTest are just importing pkgs from "local" files so 
> probably this way won't work.
> 
> 3. I could copy the files and bind them to attributes but I prefer to avoid 
> that if possible.
> 
> If anyone have some suggestions please let me know.
> 
> Tom
> 
> -- 
> Tomasz Czyż
> 
> _______________________________________________
> nix-dev mailing list
> [email protected]
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
> 
> 
> 
> 
> 
> -- 
> Tomasz Czyż
> 
> 
> 
> -- 
> Tomasz Czyż
> 
> 
> 
> -- 
> Tomasz Czyż
> 
> 
> 
> -- 
> Tomasz Czyż
> _______________________________________________
> nix-dev mailing list
> [email protected]
> http://lists.science.uu.nl/mailman/listinfo/nix-dev

_______________________________________________
nix-dev mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-dev

Reply via email to