138 lines
4.5 KiB
Nix
138 lines
4.5 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.features.cli.nushell;
|
|
in {
|
|
options.features.cli.nushell.enable = mkEnableOption "enable nushell";
|
|
|
|
config = mkIf cfg.enable {
|
|
programs.nushell = {
|
|
enable = true;
|
|
plugins = with pkgs.nushellPlugins; [
|
|
skim
|
|
];
|
|
envFile.text = ''
|
|
$env.config.show_banner = false
|
|
$env.NIX_PATH = "nixpkgs=channel:nixos-unstable"
|
|
$env.NIX_LOG = "iunfo"
|
|
$env.WEBKIT_DISABLE_COMPOSITING_MODE = "1"
|
|
$env.TERMINAL = "kitty"
|
|
$env.EDITOR = "nvim"
|
|
$env.VISUAL = "zed"
|
|
$env.XDG_DATA_HOME = $"($env.HOME)/.local/share"
|
|
$env.FZF_DEFAULT_COMMAND = "fd --type f --exclude .git --follow --hidden"
|
|
$env.FZF_DEFAULT_OPTS = "
|
|
--preview='bat --color=always -n {}'
|
|
--preview-window up:3:hidden:wrap
|
|
--bind 'ctrl-/:toggle-preview'
|
|
--bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort'
|
|
--color header:bold
|
|
--header 'Press CTRL-Y to copy command into clipboard'"
|
|
$env.FLAKE = $"($env.HOME)/p/nixos/nixos-config"
|
|
'';
|
|
configFile.text = ''
|
|
if (tty) == "/dev/tty1" {
|
|
exec uwsm start -S -F /run/current-system/sw/bin/Hyprland
|
|
}
|
|
if (tty) == "/dev/tty2" {
|
|
exec gamescope -O HDMI-A-1 -W 1920 -H 1080 --adaptive-sync --hdr-enabled --rt --steam -- steam -pipewire-dmabuf -tenfoot
|
|
}
|
|
|
|
alias .. = cd ..
|
|
alias ... = cd ../..
|
|
alias b = yazi
|
|
alias lt = eza --tree --level=2 --long --icons --git
|
|
alias grep = rg
|
|
alias just = just --unstable
|
|
alias fs = du -d 1 | sort-by apparent -r
|
|
|
|
alias n = nix
|
|
alias nd = nix develop -c $nu.current-shell
|
|
alias ns = nix shell
|
|
alias nsn = nix shell nixpkgs#
|
|
alias nb = nix build
|
|
alias nbn = nix build nixpkgs#
|
|
alias nf = nix flake
|
|
|
|
alias nr = sudo nixos-rebuild --flake .
|
|
alias nrs = sudo nixos-rebuild switch --flake .#(sys host | get hostname)
|
|
alias snr = sudo nixos-rebuild --flake .
|
|
alias snrs = sudo nixos-rebuild --flake . switch
|
|
alias hm = home-manager --flake .
|
|
alias hms = home-manager --flake . switch
|
|
alias hmr = do { cd ~/projects/nix-configurations; nix flake lock --update-input dotfiles; home-manager --flake .#(whoami)@(hostname) switch }
|
|
|
|
alias tsu = sudo tailscale up
|
|
alias tsd = sudo tailscale down
|
|
|
|
alias vi = nvim
|
|
alias vim = nvim
|
|
|
|
def history_fuzzy [] {
|
|
let selected = (
|
|
history
|
|
| uniq
|
|
| get command
|
|
| sk --height 40% --layout=reverse --color=fg:#f8f8f2,bg:#282a36,current_bg:#ff79c6,current_fg:#bd93f9,info:#ffb86c,marker:#6272a4,pointer:#50fa7b,spinner:#50fa7b
|
|
)
|
|
if ($selected | is-not-empty) {
|
|
^nu -c ($selected)
|
|
} else {
|
|
null
|
|
}
|
|
}
|
|
def find_fuzzy [] {
|
|
# Find non-hidden text files with matches for any content and select one via fuzzy search
|
|
let selected = (
|
|
^fd --type file --no-hidden -X rg -l --files-with-matches .
|
|
| lines
|
|
| sk --format { $in }
|
|
--height 40%
|
|
--layout=reverse
|
|
--preview { open $in | bat --color=always --line-range :50 }
|
|
--color=fg:#f8f8f2,bg:#282a36,current_bg:#ff79c6,current_fg:#bd93f9,info:#ffb86c,marker:#6272a4,pointer:#50fa7b,spinner:##50fa7b
|
|
)
|
|
|
|
# Open the selected file in the default editor if a selection was made
|
|
if ($selected | is-not-empty) {
|
|
^$env.EDITOR $selected
|
|
}
|
|
}
|
|
|
|
$env.config = {
|
|
keybindings: [
|
|
{
|
|
name: history_fuzzy
|
|
modifier: control
|
|
keycode: char_r
|
|
mode: [emacs, vi_insert, vi_normal]
|
|
event: [
|
|
{
|
|
send: executehostcommand
|
|
cmd: "history_fuzzy"
|
|
}
|
|
]
|
|
}
|
|
{
|
|
name: history_fuzzy
|
|
modifier: control
|
|
keycode: char_t
|
|
mode: [emacs, vi_insert, vi_normal]
|
|
event: [
|
|
{
|
|
send: executehostcommand
|
|
cmd: "find_fuzzy"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
}
|