{ config, pkgs, lib, ... }: let cfg = config.alqueva.xonsh; inherit (pkgs) fetchFromGitHub; in { options.alqueva.xonsh = { enable = lib.mkEnableOption "xonsh"; }; config = lib.mkIf cfg.enable { programs = { xonsh = { config = "from xonsh.xontribs import get_xontribs\n" + lib.concatStringsSep "\n" (builtins.attrValues (builtins.mapAttrs (n: v: "aliases['${n}'] = '${v}'\n") config.environment.shellAliases)) + '' for xontrib in get_xontribs(): xontrib load @(xontrib) execx($(zoxide init xonsh --cmd j), 'exec', __xonsh__.ctx, filename='zoxide') ''; package = pkgs.xonsh.override { extraPackages = ps: [ (let name = "xontrib-fish-completer"; version = "0.0.1"; in ps.buildPythonPackage { inherit name version; src = fetchFromGitHub { owner = "xonsh"; repo = name; rev = version; hash = "sha256-PhhdZ3iLPDEIG9uDeR5ctJ9zz2+YORHBhbsiLrJckyA="; }; }) (let name = "xontrib-prompt-starship"; version = "0.3.6"; in ps.buildPythonPackage { inherit name version; src = fetchFromGitHub { owner = "anki-code"; repo = name; tag = version; hash = "sha256-CLOvMa3L4XnH53H/k6/1W9URrPakPjbX1T1U43+eSR0="; }; }) ]; }; enable = true; }; }; environment.systemPackages = [ pkgs.zoxide pkgs.amadaluzian-starship ]; }; }