Skip to content

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

Open
@NickHu

Description

@NickHu

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."<system>".default). These are accessed with the command nix develop flake#myShell; an excerpt from https://nixos.wiki/wiki/Flakes:

  # Used by `nix develop .#<name>`
  devShells."<system>"."<name>" = derivation;
  # Used by `nix develop`
  devShells."<system>".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:

# Install Nix flake in profile if specified
if [ ! -z "${FLAKEURI}" ] && [ "${FLAKEURI}" != "none" ]; then
echo "Installing flake ${FLAKEURI} in profile..."
nix profile install "${FLAKEURI}"
fi

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions