Migrate from zsh to fish
This commit is contained in:
parent
fdd53faa62
commit
b35c87b4d6
@ -25,7 +25,8 @@ config, ... }: {
|
||||
|
||||
modules = {
|
||||
shell = {
|
||||
zsh.enable = true;
|
||||
# zsh.enable = true;
|
||||
fish.enable = true;
|
||||
direnv.enable = true;
|
||||
};
|
||||
topgrade.enable = true;
|
||||
|
@ -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; };
|
||||
};
|
||||
}
|
||||
|
75
modules/home/fish/default.nix
Normal file
75
modules/home/fish/default.nix
Normal 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";
|
||||
# };
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
12
modules/home/fish/last-working-dir.fish
Normal file
12
modules/home/fish/last-working-dir.fish
Normal 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
|
14
modules/home/fish/starship.toml
Normal file
14
modules/home/fish/starship.toml
Normal 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
|
@ -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; };
|
||||
};
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user