flake-compat icon indicating copy to clipboard operation
flake-compat copied to clipboard

Nix shell

Open kloenk opened this issue 4 years ago • 5 comments

Provide a way to create a shell.nix with the same behavior as nix develop

kloenk avatar Oct 28 '20 13:10 kloenk

With nix develop behaviour, you mean setting the output environment variables to outputs/<name>?

edolstra avatar Oct 28 '20 14:10 edolstra

I mostly mean installing all dependencies, and setting env variables, so make for example can build the local project via the makefile in the same folder (if it's a make project)

kloenk avatar Oct 28 '20 14:10 kloenk

At the moment, an additional shell.nix file has to be added with the following content:

{ system ? builtins.currentSystem }:
(import ./. { src = ./.; inherit system; }).shellNix

zimbatm avatar Oct 28 '20 15:10 zimbatm

In my case I needed to put:

(
  import (fetchTarball https://github.com/edolstra/flake-compat/archive/master.tar.gz) {
    src = builtins.fetchGit ./.;
  }
).shellNix

(the solution proposed by zimbatm gave me some errors)

However, while now I can use both nix develop and nix shell, direnv is not really successful to load my environment fully. Indeed, it does export the shell variables given in shellHook, but it does not run the echo commands (useful to provide some documentation), nor the alias command. I tried both use nix and use flake, and both fail to load the alias/echo commands (note however that alias can be replaced with a script, and that this is more portable across shells, so it is not too much of a problem for now).

tobiasBora avatar Nov 04 '20 14:11 tobiasBora

Hey, I'm not finding overrideAttrs on the .shellNix. Any way around that?

mightyiam avatar Jul 20 '23 15:07 mightyiam