diff --git a/nixos/modules/programs/xonsh.nix b/nixos/modules/programs/xonsh.nix index 7202ed06c6af..167c953f5ffd 100644 --- a/nixos/modules/programs/xonsh.nix +++ b/nixos/modules/programs/xonsh.nix @@ -28,7 +28,7 @@ in type = types.package; default = pkgs.xonsh; defaultText = literalExpression "pkgs.xonsh"; - example = literalExpression "pkgs.xonsh.override { configFile = \"/path/to/xonshrc\"; }"; + example = literalExpression "pkgs.xonsh.override { extraPackages = ps: [ ps.requests ]; }"; description = lib.mdDoc '' xonsh package to use. ''; @@ -83,4 +83,3 @@ in }; } - diff --git a/pkgs/shells/xonsh/default.nix b/pkgs/shells/xonsh/default.nix index faa2ae763088..00b5259ae7e6 100644 --- a/pkgs/shells/xonsh/default.nix +++ b/pkgs/shells/xonsh/default.nix @@ -1,12 +1,12 @@ { lib , fetchFromGitHub -, python3Packages +, python3 , glibcLocales , coreutils , git }: -python3Packages.buildPythonApplication rec { +python3.pkgs.buildPythonApplication rec { pname = "xonsh"; version = "0.14.0"; @@ -29,16 +29,8 @@ python3Packages.buildPythonApplication rec { find scripts -name 'xonsh*' -exec sed -i -e "s|env -S|env|" {} \; find -name "*.xsh" | xargs sed -ie 's|/usr/bin/env|${coreutils}/bin/env|' patchShebangs . - - substituteInPlace scripts/xon.sh \ - --replace 'python' "${python3Packages.python}/bin/python" - ''; - makeWrapperArgs = [ - "--prefix PYTHONPATH : ${placeholder "out"}/lib/${python3Packages.python.libPrefix}/site-packages" - ]; - disabledTests = [ # fails on sandbox "test_colorize_file" @@ -71,9 +63,9 @@ python3Packages.buildPythonApplication rec { ''; nativeCheckInputs = [ glibcLocales git ] ++ - (with python3Packages; [ pyte pytestCheckHook pytest-mock pytest-subprocess ]); + (with python3.pkgs; [ pyte pytestCheckHook pytest-mock pytest-subprocess ]); - propagatedBuildInputs = with python3Packages; [ ply prompt-toolkit pygments ]; + propagatedBuildInputs = with python3.pkgs; [ ply prompt-toolkit pygments ]; meta = with lib; { description = "A Python-ish, BASHwards-compatible shell"; @@ -85,5 +77,6 @@ python3Packages.buildPythonApplication rec { passthru = { shellPath = "/bin/xonsh"; + python = python3; }; } diff --git a/pkgs/shells/xonsh/wrapper.nix b/pkgs/shells/xonsh/wrapper.nix new file mode 100644 index 000000000000..7868404ca5fb --- /dev/null +++ b/pkgs/shells/xonsh/wrapper.nix @@ -0,0 +1,24 @@ +{ runCommand +, xonsh-unwrapped +, lib +, extraPackages ? (ps: [ ]) +}: + +let + xonsh = xonsh-unwrapped; + inherit (xonsh.passthru) python; + + pythonEnv = python.withPackages (ps: [ + (ps.toPythonModule xonsh) + ] ++ extraPackages ps); + +in +runCommand "${xonsh.pname}-${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 +'' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bef5de9b8de2..869af6bbbab0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14751,7 +14751,8 @@ with pkgs; rush = callPackage ../shells/rush { }; - xonsh = callPackage ../shells/xonsh { }; + xonsh = callPackage ../shells/xonsh/wrapper.nix { }; + xonsh-unwrapped = callPackage ../shells/xonsh { }; zsh = callPackage ../shells/zsh { };