devcontainers / devcontainers/features

Nix feature should provide a way to access `flake#devShell`

Open
#274 1 comment 0 reactions 0 assignees View on GitHub
enhancement help wanted
Dominant language
Shell
Stars
1.5k
Forks
621
Avg merge
2d 11h
Merged PRs (30d)
4

Description

It is common for repositories which provide flakes to provide development shells under a top-level attribute `flake#devShells`, with `flake#devShell` being the default one (an alias for `flake#devShells."".default`). These are accessed with the command `nix develop flake#myShell`; an excerpt from https://nixos.wiki/wiki/Flakes:

```
# Used by `nix develop .#`
devShells.""."" = derivation;
# Used by `nix develop`
devShells."".default = derivation;
```

However, you can't pass something like `"flakeUri": "github:owner/repo#devShell"` to the Nix feature provided here, because it (rightly) complains that this isn't a derivation (the correct derivation would be `github:owner/repo#devShell.x86_64-linux`). Fundamentally, this is because the implementation uses `nix profile install`, which searches for derivations under the `flake#packages` top-level attribute:

https://github.com/devcontainers/features/blob/f7f05f76fabda70f4fbcaefd55e6fe6fd09a8145/src/nix/post-install-steps.sh#L11-L15

Ideally, somewhere in this feature a call should be made to `nix develop` to enable access to the development shells provided by a flake, rather than having to use the workaround of `flake#devShell.x86_64-linux`.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.