Change:
Using xonsh in a environment can override the Python interpreter, which is a problem if the environment is supposed to use a specific one. Then create containing Then inside xonsh, a different Python interpreter is used: Running xonsh should not modify the such that a different executable is used. In the above, when we run we should get the library. Running removes the problematic PATH entry but this is pretty hacky. Please run and paste the result.
I think the recommended way to do this is to add an override to xonsh. See
That's a help but if I launch a nested xonsh by running in xonsh, the extra packages are gone. I've removed these unwanted entries by doing, e.g. in : Everything works fine so far.
since your PR was is this issue still fixed? ETA: looks ok but if anyone still has in their config they should probably remove it before upgrading xonsh or they may get
To make it clear, was reapplied in , while reverting
Oops, it seems we have re-introduced this issue in

Discussion:
}; package = lib.mkPackageOption pkgs "xonsh" { <del> example = "xonsh.wrapper.override { extraPackages = ps: [ ps.requests ]; }"; </del> <ins> example = "pkgs.xonsh.override { extraPackages = ps: [ ps.requests ]; }"; </ins> }; config = lib.mkOption {

{ lib, <del> callPackage, coreutils, fetchFromGitHub, git, gitUpdater, glibcLocales, python3Packages, </del> <ins> python3, runCommand, # configurable options extraPackages ? (ps: [ ]), </ins> }: let <del> argset = { pname = "xonsh"; version = "0.17.0"; pyproject = true; # PyPI package ships incomplete tests src = fetchFromGitHub { owner = "xonsh"; repo = "xonsh"; rev = "refs/tags/${argset.version}"; hash = "sha256-9sRY9aetWWXzCFfgdHCBCia48THIJcMxsYMnFR6Xa8A="; }; nativeBuildInputs = with python3Packages; [ setuptools wheel ]; propagatedBuildInputs = (with python3Packages; [ ply prompt-toolkit pygments ]); nativeCheckInputs = [ git glibcLocales ] ++ (with python3Packages; [ pip pyte pytest-mock pytest-subprocess pytestCheckHook requests ]); disabledTests = [ # fails on sandbox "test_colorize_file" "test_loading_correctly" "test_no_command_path_completion" "test_bsd_man_page_completions" "test_xonsh_activator" # fails on non-interactive shells "test_capture_always" "test_casting" "test_command_pipeline_capture" "test_dirty_working_directory" "test_man_completion" "test_vc_get_branch" "test_bash_and_is_alias_is_only_functional_alias" "test_spec_modifier_alias_output_format" # flaky tests "test_script" "test_alias_stability" "test_alias_stability_exception" "test_complete_import" "test_subproc_output_format" ]; disabledTestPaths = [ # fails on sandbox "tests/completers/test_command_completers.py" "tests/test_ptk_highlight.py" "tests/test_ptk_shell.py" # fails on non-interactive shells "tests/prompt/test_gitstatus.py" "tests/completers/test_bash_completer.py" ]; env.LC_ALL = "en_US.UTF-8"; postPatch = '' sed -ie 's|/bin/ls|${lib.getExe' coreutils "ls"}|' tests/test_execer.py sed -ie 's|SHELL=xonsh|SHELL=$out/bin/xonsh|' tests/test_integrations.py for script in tests/test_integrations.py scripts/xon.sh $(find -name "*.xsh"); do sed -ie 's|/usr/bin/env|${lib.getExe' coreutils "env"}|' $script done patchShebangs . ''; preCheck = '' export HOME=$TMPDIR export PATH=$out/bin:$PATH ''; passthru = { shellPath = "/bin/xonsh"; python = python3Packages.python; # To the wrapper wrapper = callPackage ./wrapper.nix { }; updateScript = gitUpdater { }; }; meta = { homepage = "https://xon.sh/"; description = "A Python-ish, BASHwards-compatible shell"; changelog = "https://github.com/xonsh/xonsh/raw/main/CHANGELOG.rst"; license = with lib.licenses; [ bsd3 ]; mainProgram = "xonsh"; maintainers = with lib.maintainers; [ samlukeyes123 ]; }; }; </del> <ins> pythonEnv = python3.withPackages (ps: [ ps.xonsh ] ++ extraPackages ps); xonsh = python3.pkgs.xonsh; </ins> in <del> python3Packages.buildPythonApplication argset </del> <ins> runCommand "xonsh-${xonsh.version}" { inherit (xonsh) pname version meta passthru; } '' mkdir -p $out/bin for bin in ${lib.getBin xonsh}/bin/*; do ln -s ${pythonEnv}/bin/$(basename "$bin") $out/bin/ done '' </ins>

<ins> { lib, coreutils, fetchFromGitHub, git, gitUpdater, glibcLocales, pythonPackages, }: let argset = { pname = "xonsh"; version = "0.18.2"; pyproject = true; # PyPI package ships incomplete tests src = fetchFromGitHub { owner = "xonsh"; repo = "xonsh"; rev = "refs/tags/${argset.version}"; hash = "sha256-iTdUu2yGixWwDJICDLfzRcwgGe+xlq2CvxUeSbmDiUU="; }; nativeBuildInputs = with pythonPackages; [ setuptools wheel ]; propagatedBuildInputs = ( with pythonPackages; [ ply prompt-toolkit pygments ] ); nativeCheckInputs = [ git glibcLocales ] ++ (with pythonPackages; [ pip pyte pytest-mock pytest-subprocess pytestCheckHook requests ]); disabledTests = [ # fails on sandbox "test_colorize_file" "test_loading_correctly" "test_no_command_path_completion" "test_bsd_man_page_completions" "test_xonsh_activator" # fails on non-interactive shells "test_capture_always" "test_casting" "test_command_pipeline_capture" "test_dirty_working_directory" "test_man_completion" "test_vc_get_branch" "test_bash_and_is_alias_is_only_functional_alias" # flaky tests "test_script" "test_alias_stability" "test_alias_stability_exception" "test_complete_import" "test_subproc_output_format" # https://github.com/xonsh/xonsh/issues/5569 "test_spec_decorator_alias_output_format" ]; disabledTestPaths = [ # fails on sandbox "tests/completers/test_command_completers.py" "tests/shell/test_ptk_highlight.py" # fails on non-interactive shells "tests/prompt/test_gitstatus.py" "tests/completers/test_bash_completer.py" ]; # https://github.com/NixOS/nixpkgs/issues/248978 dontWrapPythonPrograms = true; env.LC_ALL = "en_US.UTF-8"; postPatch = '' sed -ie 's|/bin/ls|${lib.getExe' coreutils "ls"}|' tests/test_execer.py sed -ie 's|SHELL=xonsh|SHELL=$out/bin/xonsh|' tests/test_integrations.py for script in tests/test_integrations.py scripts/xon.sh $(find -name "*.xsh"); do sed -ie 's|/usr/bin/env|${lib.getExe' coreutils "env"}|' $script done patchShebangs . ''; preCheck = '' export HOME=$TMPDIR export PATH=$out/bin:$PATH ''; passthru = { shellPath = "/bin/xonsh"; python = pythonPackages.python; # To the wrapper wrapper = throw "The top-level xonsh package is now wrapped. Use it directly."; updateScript = gitUpdater { }; }; meta = { homepage = "https://xon.sh/"; description = "Python-ish, BASHwards-compatible shell"; changelog = "https://github.com/xonsh/xonsh/raw/main/CHANGELOG.rst"; license = with lib.licenses; [ bsd3 ]; mainProgram = "xonsh"; maintainers = with lib.maintainers; [ samlukeyes123 ]; }; }; in pythonPackages.buildPythonPackage argset </ins>

<del> { lib, runCommand, xonsh, # configurable options extraPackages ? (ps: [ ]), }: let inherit (xonsh.passthru) python; pythonEnv = python.withPackages (ps: [ (ps.toPythonModule xonsh) ] ++ extraPackages ps); in runCommand "xonsh-wrapped-${xonsh.version}" { inherit (xonsh) pname version meta passthru; } '' mkdir -p $out/bin for bin in ${lib.getBin xonsh}/bin/*; do ln -s ${pythonEnv}/bin/$(basename "$bin") $out/bin/ done '' </del>

xnd = callPackage ../development/python-modules/xnd { }; <del> xonsh = toPythonModule (pkgs.xonsh.override { python3Packages = self; }); </del> <ins> xonsh = callPackage ../by-name/xo/xonsh/unwrapped.nix { }; </ins> xpath-expressions = callPackage ../development/python-modules/xpath-expressions { };