{pkgs, ...}: let inherit (pkgs) lib; inherit (lib.meta) getExe; nu-config = pkgs.writeText "nu-init" # nu '' #!/usr/bin/env nu source ${./config.nu} source ${./prompt.nu} let autoload_dir = $nu.user-autoload-dirs.0 mkdir $autoload_dir let zoxide_path = $autoload_dir | path join zoxide.nu if not ($zoxide_path | path exists) { ${getExe pkgs.zoxide} init nushell --cmd cd | save -f $zoxide_path } # Atuin is too slow, sadly. # let atuin_path = $autoload_dir | path join atuin.nu # if not ($atuin_path | path exists) { # ${getExe pkgs.atuin} init nu | save -f $atuin_path # } let carapace_path = $autoload_dir | path join carapace.nu if not ($carapace_path | path exists) { ${getExe pkgs.carapace} _carapace nushell | save -f $carapace_path } ''; packages = import ./packages.nix pkgs; in (pkgs.symlinkJoin { name = "nushell"; paths = [pkgs.nushell] ++ packages; nativeBuildInputs = [pkgs.makeWrapper]; postBuild = '' wrapProgram $out/bin/nu --add-flags "\ --config ${nu-config}" ''; }) .overrideAttrs (_: { passthru = { shellPath = "/bin/nu"; }; meta.mainProgram = "nu"; })