nixos-config/home-manager/modules/nushell/default.nix

46 lines
1.4 KiB
Nix

{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.eboskma.programs.nushell;
# TODO: Remove when starship is updated
starshipCmd = "${config.home.profileDirectory}/bin/starship";
nushell_plugin_formats = pkgs.callPackage ./plugin-formats.nix {
inherit (pkgs) stdenv lib rustPlatform;
inherit (pkgs.darwin.apple_sdk_11_0.frameworks) IOKit CoreFoundation;
nushell = config.programs.nushell.package;
};
in
{
options.eboskma.programs.nushell = { enable = mkEnableOption "nu shell"; };
config = mkIf cfg.enable {
programs.nushell = {
enable = true;
package = pkgs.nushell.override { additionalFeatures = p: p ++ [ "dataframe" ]; };
configFile.source = ./config.nu;
envFile.source = ./env.nu;
# TODO: Remove when starship is updated to the new nu 0.78 syntax
extraEnv = ''
let starship_cache = "${config.xdg.cacheHome}/starship"
if not ($starship_cache | path exists) {
mkdir $starship_cache
}
${starshipCmd} init nu | str replace --string 'PROMPT_COMMAND = {' 'PROMPT_COMMAND = { ||' | str replace --string 'PROMPT_COMMAND_RIGHT = {' 'PROMPT_COMMAND_RIGHT = { ||' | save --force ${config.xdg.cacheHome}/starship/init.nu
'';
extraConfig = ''
source ${config.xdg.cacheHome}/starship/init.nu
'';
};
home.packages = with pkgs; [
carapace
nushellPlugins.query
nushell_plugin_formats
];
};
}