Change:
{ 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>

Discussion:
The wrapper introduced in is supposed to accept code like: , and then should be importable in the resulting Xonsh package. However, when building this package, I am met with: <summary<pre<codeerror: function 'anonymous lambda' called with unexpected argument 'extraPackages' at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl-source/pkgs/by- </code</pre<details<pre<codeerror: … while calling a functor (an attribute set with a 'functor' attribute) at /nix/store/81ai25ifhr0l8rryf83h4pj8k0q2pjaj- 3| outputs = { self, nixpkgs }: { 4| packages.x8664-linux.default = nixpkgs.legacyPackages.x8664- { | ^ 5| extraPackages = ps: [ ]; … from call site at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl- 954| { # TODO: Should we add call-time "type" checking like built in? 955| functor = self: f; | ^ 956| functionArgs = args; … while calling anonymous lambda at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl- 143| # Re-call the function but with different arguments 144| overrideArgs = mirrorArgs (newArgs: makeOverridable f (overrideWith newArgs)); | ^ 145| # Change the result of the function call by applying g to it … while calling a functor (an attribute set with a 'functor' attribute) at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl- 143| # Re-call the function but with different arguments 144| overrideArgs = mirrorArgs (newArgs: makeOverridable f (overrideWith newArgs)); | ^ 145| # Change the result of the function call by applying g to it … from call site at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl- 954| { # TODO: Should we add call-time "type" checking like built in?

955| functor = self: f; | ^ 956| functionArgs = args; … while calling anonymous lambda at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl- 135| in 136| mirrorArgs (origArgs: | ^ 137| let … while evaluating a branch condition at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl- 147| in 148| if isAttrs result then | ^ 149| result // { … while calling the 'isAttrs' builtin at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl- 147| in 148| if isAttrs result then | ^ 149| result // { … from call site at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl- 137| let 138| result = f origArgs; | ^ 139| error: function 'anonymous lambda' called with unexpected argument 'extraPackages' at /nix/store/nm7g9fgcffl6nar6vpib220b51dyv0fl-source/pkgs/by- 1| { | ^ 2| lib, </code</pre</details</summaryIs there a different way of getting to the wrapped Xonsh? To reproduce: Xonsh should build. Possibly relevant issues: 2023-07-07 2023-03-08 2023-03-22 2023-04-04 ("likely caused by ") 2023-04-05 ( Please run and paste the result. Add a :+1: [reaction] to [issues you find important]. [reaction]: [issues you find important]:
use instead of This is documented in the option search:
This behavior was changed in , which includes a refactor, and the top-level xonsh package is not the wrapper now. I'm restoring the original behavior in

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