Configurations

{ inputs, ... }:
let
  lib = import ../../../lib;
  wrapForUseAsNixvimConfig =
    path:
      { programs.nixvim = import path; };
in
{
  imports = [
    inputs.nixvim.homeModules.nixvim
  ] ++ map wrapForUseAsNixvimConfig (lib.importNixFiles ./nixvim);
}
let
  commonAliases = import ../../../lib/aliases.nix;
in
{
    programs.nushell = {
        enable = true;
        configFile.source = ./nushell/config.nu;
        shellAliases = commonAliases // {
            # NixOS-specific
            flakeGen = "nu -c 'cd /etc/nixos; nix run .#genflake flake.nix; cd -'";
            switch   = "nh os switch (#$env.NIXOS_FLAKE_TARGET)";
            test     = "nh os test (#$env.NIXOS_FLAKE_TARGET)";
            upgrade  = "sudo nix-env --upgrade";
            optimize = "sudo nix-store --optimize";
            whoami   = "coreutils --coreutils-prog=whoami";
            notebook = "nix run /etc/nixos#notebook";
        };
    };

    programs.carapace = {
        enable = true;
        enableNushellIntegration = true;
    };

    programs.starship = {
        enable = true;
        settings = {
            add_newline = true;
            character = {
                success_symbol = "[➜](bold green)";
                error_symbol = "[➜](bold red)";
            };
        };
    };
}