2025-07-20 01:23:48 +02:00
|
|
|
{ pkgs, ... }:
|
|
|
|
let
|
2025-07-19 17:33:22 +02:00
|
|
|
inherit (pkgs) lib;
|
|
|
|
inherit (lib.meta) getExe;
|
|
|
|
|
|
|
|
nu-config =
|
|
|
|
pkgs.writeText "nu-init"
|
2025-07-20 01:23:48 +02:00
|
|
|
# nu
|
|
|
|
''
|
|
|
|
#!/usr/bin/env nu
|
|
|
|
source ${./config.nu}
|
|
|
|
source ${./prompt.nu}
|
2025-07-19 17:33:22 +02:00
|
|
|
|
2025-07-20 01:23:48 +02:00
|
|
|
let autoload_dir = $nu.user-autoload-dirs.0
|
|
|
|
mkdir $autoload_dir
|
2025-07-19 17:33:22 +02:00
|
|
|
|
2025-07-20 01:23:48 +02:00
|
|
|
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
|
|
|
|
}
|
|
|
|
'';
|
2025-07-19 17:33:22 +02:00
|
|
|
packages = import ./packages.nix pkgs;
|
|
|
|
in
|
2025-07-20 01:23:48 +02:00
|
|
|
(pkgs.symlinkJoin {
|
|
|
|
name = "nushell";
|
|
|
|
paths = [ pkgs.nushell ] ++ packages;
|
|
|
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
|
|
|
postBuild = ''
|
|
|
|
wrapProgram $out/bin/nu --add-flags "\
|
|
|
|
--config ${nu-config}"
|
|
|
|
'';
|
|
|
|
}).overrideAttrs
|
|
|
|
(_: {
|
2025-07-19 17:33:22 +02:00
|
|
|
passthru = {
|
|
|
|
shellPath = "/bin/nu";
|
|
|
|
};
|
|
|
|
meta.mainProgram = "nu";
|
|
|
|
})
|