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

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 { };