1
0
Fork 0
mirror of https://github.com/hercules-ci/flake-parts.git synced 2024-12-14 11:47:31 +00:00
flake-parts/examples/shell-environments/README.md
2023-07-04 12:19:47 +02:00

1.5 KiB

shell-environment

Warning

If you copy the flake.nix remember to git add [-N|--intent-to-add] flake.nix, otherwise it won't work

This example shows how to create a shell environment which includes a diverse set of tools:

terraform
wget
bat
nixpkgs-fmt

You can search for more packages in nix packages

Usage

The devShells option is used by the following command:

nix develop

You can have as many shells as you want, in this flake.nix, you also have another_env which includes curl. To open it:

nix develop .#another_env

Troubleshooting

I get bash instead of my shell

nix develop was designed for Nixpkgs stdenv, which uses bash, so that you can troubleshoot a Nix build with it. If you use a different shell, you'll want to get just the variables instead.

There are 3 possible solutions:

First, using direnv to manage your dev environments. See direnv-guide. This is the recommended approach.

Second is a simple-unreliable hack, which is adding a shellHook to devShells

devShells.default = pkgs.mkShell {
  shellHook = ''
    exec $SHELL
  '';
};

You might get a lot different issues, use it at your own risk.

Lastly, there's nix print-dev-env which returns the variables - in case you're feeling adventurous, because this is far from a complete solution. See nix print-dev-env --help.