mirror of
https://github.com/hercules-ci/flake-parts.git
synced 2025-03-06 08:56:51 +00:00
52 lines
1.1 KiB
Markdown
52 lines
1.1 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
|
|
git
|
|
```
|
|
|
|
You can search for more package 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
|
|
|
|
### My shell has changed
|
|
|
|
There 2 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.
|
|
|