NixOS / nix

Nix, the purely functional package manager
https://nixos.org/
GNU Lesser General Public License v2.1
11.46k stars 1.44k forks source link

nix develop shell incomplete PATH contents #10615

Open corpix opened 2 months ago

corpix commented 2 months ago

Describe the bug

Packages specified inside flake devShell packages is not listed in PATH inside nix develop shell. Is it different from nix-shell? Why?

Steps To Reproduce

Create flake.nix with this content:

{
  inputs.nixpkgs.url = "nixpkgs/nixos-unstable";

  outputs = { self, nixpkgs }:
    let
      arch = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${arch}.pkgs;

      inherit (pkgs)
        writeScript
        stdenv
        mkShell
      ;

      inherit (pkgs)
        ocserv
        go
        gnumake
      ;
    in {
      devShells.${arch}.default = mkShell {
        name = "authentik-ocserv";
        packages = [
          ocserv
          go
          gnumake
        ];
      };
    };
}

Enter nix develop, run ocserv, get command not found in response:

 ~/projects/src/git.backbone/corpix/authentik-ocserv  λ  echo $SHELLcf5qqa9yfxj59ki1rb21209x7wja0m-fish-3.7.1/bin/fish
 ~/projects/src/git.backbone/corpix/authentik-ocserv  λ  nix develop                                                                                                                               
Welcome to fish, the friendly interactive shell
 ~/projects/src/git.backbone/corpix/authentik-ocserv  λ  echo $SHELL                                                                                                                               
/nix/store/31cf5qqa9yfxj59ki1rb21209x7wja0m-fish-3.7.1/bin/fish
 ~/projects/src/git.backbone/corpix/authentik-ocserv  λ  ocserv                                                                                                                                    
fish: Unknown command: ocserv
 ~/projects/src/git.backbone/corpix/authentik-ocserv  λ  nix --version
nix (Nix) 2.18.2

Expected behavior

All packages listed under packages of mkShell exists in PATH.

nix-env --version output

nix-env (Nix) 2.18.2

Priorities

Add :+1: to issues you find important.

corpix commented 2 months ago

This could possibly be worked around with this ugly hack:

nix develop -c bash -ec 'exec fish'