mirror of
https://github.com/hercules-ci/flake-parts.git
synced 2025-03-05 16:36:56 +00:00
55 lines
1.5 KiB
Markdown
55 lines
1.5 KiB
Markdown
# 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:
|
|
|
|
```sh
|
|
terraform
|
|
wget
|
|
bat
|
|
nixpkgs-fmt
|
|
```
|
|
|
|
You can search for more packages in [nix packages](https://search.nixos.org/packages)
|
|
|
|
## Usage
|
|
|
|
The [`devShells` option](https://flake.parts/options/flake-parts.html#opt-perSystem.devShells) is used by the following command:
|
|
|
|
```sh
|
|
nix develop
|
|
```
|
|
|
|
You can have as many shells as you want, in this [flake.nix](./flake.nix), you also have
|
|
`another_env` which includes `curl`. To open it:
|
|
|
|
```sh
|
|
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](https://direnv.net/) to manage your dev environments. See [direnv-guide](https://haskell.flake.page/direnv). This is the recommended approach.
|
|
|
|
Second is a simple-unreliable hack, which is adding a `shellHook` to `devShells`
|
|
|
|
```nix
|
|
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`.
|