Migrate from zsh to fish

This commit is contained in:
Julian Mutter 2024-03-18 17:04:37 +01:00
parent fdd53faa62
commit b35c87b4d6
7 changed files with 112 additions and 7 deletions

View File

@ -25,7 +25,8 @@ config, ... }: {
modules = {
shell = {
zsh.enable = true;
# zsh.enable = true;
fish.enable = true;
direnv.enable = true;
};
topgrade.enable = true;

View File

@ -20,7 +20,9 @@ config, ... }:
with lib;
let cfg = config.modules.shell.direnv;
let
cfg = config.modules.shell.direnv;
shellcfg = config.modules.shell;
in {
options.modules.shell.direnv = { enable = mkOption { default = false; }; };
@ -28,7 +30,7 @@ in {
programs.direnv = {
enable = true;
nix-direnv.enable = true;
enableZshIntegration = true;
};
} // mkIf shellcfg.zsh.enable { enableZshIntegration = true; }
// mkIf shellcfg.fish.enable { enableFishIntegration = true; };
};
}

View File

@ -0,0 +1,75 @@
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# An instance of `pkgs` with your overlays and packages applied is also available.
pkgs,
# You also have access to your flake's inputs.
inputs,
# Additional metadata is provided by Snowfall Lib.
system, # The system architecture for this host (eg. `x86_64-linux`).
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
format, # A normalized name for the system target (eg. `iso`).
virtual
, # A boolean to determine whether this system is a virtual target using nixos-generators.
systems, # An attribute map of your defined hosts.
# All other arguments come from the module system.
config, ... }:
with lib;
let cfg = config.modules.shell.fish;
in {
options.modules.shell.fish = { enable = mkOption { default = false; }; };
config = mkIf cfg.enable {
home.file = { ".config/starship.toml".source = ./starship.toml; };
home.packages = with pkgs; [ starship ];
programs.starship = {
enable = true;
enableFishIntegration = true;
};
programs.fish = {
enable = true;
interactiveShellInit = "set fish_greeting"; # Disable default greeting
plugins = [
{
name = "z";
src = pkgs.fishPlugins.z.src;
}
{
name = "lwd";
src = ./last-working-dir.fish;
}
];
functions = {
fzf-z = ''
set dir $(z --list | fzf --tiebreak=index --tac | sed -E 's/^[0-9]+[[:space:]]+//')
cd $dir
'';
mkcd = ''
mkdir $argv
cd $argv
'';
run = ''
nix run nixpkgs#"$argv[1]" -- $argv[2..-1]
'';
# Last working directory functionality
# __onpwd = {
# onVariable = "PWD";
# body = "set --universal LAST_WORKING_DIR $PWD";
# };
};
};
};
}

View File

@ -0,0 +1,12 @@
if status --is-interactive; and test -d $LAST_WORKING_DIR; and test $PWD = $HOME
cd $LAST_WORKING_DIR
end
function lwd
cd $LAST_WORKING_DIR
end
function __onpwd --on-variable PWD
set --universal LAST_WORKING_DIR $PWD
end
# __onpwd

View File

@ -0,0 +1,14 @@
# newline between shell prompts
add_newline = false
#format = "$all$directory$character"
[line_break]
disabled = true
[directory]
fish_style_pwd_dir_length = 1
[status]
map_symbol = true
format = '[$symbol$status $common_meaning$signal_name$maybe_int]($style) '
disabled = false

View File

@ -28,7 +28,7 @@ in {
# this would need you to config rofi using home-manager
# programs.rofi = { enable = true; };
# home.packages = with pkgs; [ rofi ];
home.packages = with pkgs; [ rofi ];
home.file = { ".config/rofi/config.rasi".source = ./config.rasi; };
};

View File

@ -145,14 +145,15 @@
description = "Julian";
uid = 1000;
group = "julian";
shell = pkgs.zsh;
extraGroups = [ "networkmanager" "wheel" "docker" ];
shell = pkgs.fish;
extraGroups = [ "networkmanager" "wheel" "docker" "vboxusers" ];
packages = with pkgs; [ ]; # Using home-manager instead
};
home-manager.useGlobalPkgs =
true; # make overlays for nixpkgs work for home-manager, not only the system
programs.fish.enable = true;
programs.zsh.enable = true;
programs.nix-ld.enable = true;