finish current refactor

This commit is contained in:
Sean Kovacs 2025-11-13 14:50:12 -05:00
commit ae7ab152a4
Signed by: sckova
GPG key ID: 00F325187C68651A
11 changed files with 572 additions and 560 deletions

View file

@ -77,6 +77,7 @@
} }
./system/all.nix ./system/all.nix
./system/browsers/firefox.nix ./system/browsers/firefox.nix
./system/shell/fish.nix
./system/hosts/${hostname}/default.nix ./system/hosts/${hostname}/default.nix
./hardware/${hostname}.nix ./hardware/${hostname}.nix
catppuccin.nixosModules.catppuccin catppuccin.nixosModules.catppuccin
@ -105,7 +106,7 @@
home.homeDirectory = "/home/${user}"; home.homeDirectory = "/home/${user}";
modules = [ modules = [
./home/all.nix ./home/all.nix
./home/${hostname}.nix ./home/hosts/${hostname}.nix
catppuccin.homeModules.catppuccin catppuccin.homeModules.catppuccin
home-manager.homeModules.home-manager home-manager.homeModules.home-manager
plasma-manager.homeModules.plasma-manager plasma-manager.homeModules.plasma-manager

View file

@ -58,550 +58,6 @@
}; };
}; };
xdg.configFile."rclone/synology.conf".text = ''
[synology]
type = sftp
user = sckova
host = nas.taila30609.ts.net
key_file = ~/.ssh/key
'';
systemd.user.services.synology-mount = {
Unit = {
Description = "Mount Synology NAS with Rclone and Home Manager.";
After = [ "network-online.target" ];
};
Service = {
Type = "notify";
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/Synology";
ExecStart = "${pkgs.rclone}/bin/rclone --config=%h/.config/rclone/synology.conf --vfs-cache-mode full --ignore-checksum mount \"synology:\" \"%h/Synology\"";
ExecStop = "/run/wrappers/bin/fusermount -u %h/Synology/%i";
};
Install = {
WantedBy = [ "default.target" ];
};
};
systemd.user.services.input-leap = {
Unit = {
Description = "Autostart Input Leap";
After = [ "graphical-session.target" ];
};
Service = {
Type = "oneshot";
RemainAfterExit = true;
PassEnvironment = "DISPLAY";
ExecStart = "${pkgs.writeShellScript "input-leap-start" ''
sleep 5
${pkgs.input-leap}/bin/input-leap
''}";
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
programs.konsole.enable = false;
programs.kitty = {
enable = true;
enableGitIntegration = true;
themeFile = "Catppuccin-Mocha";
font = {
name = "Noto Sans Mono";
size = 10;
};
shellIntegration.enableFishIntegration = true;
extraConfig = "\nwheel_scroll_multiplier 5.0";
};
programs.fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting # Disable greeting
'';
};
programs.nixvim = {
enable = true;
defaultEditor = true;
waylandSupport = true;
viAlias = true;
vimAlias = true;
clipboard = {
register = "unnamedplus";
providers.wl-copy.enable = true;
};
opts = {
tabstop = 2;
softtabstop = 2;
shiftwidth = 2;
expandtab = true;
number = true;
};
colorschemes.catppuccin = {
enable = true;
settings = {
flavour = "mocha";
};
};
keymaps = [
# --- Normal mode mappings ---
{
mode = "n";
key = "<C-c>";
action = "\"+y";
options = {
noremap = true;
silent = true;
};
}
{
mode = "n";
key = "<C-p>";
action = "\"+p";
options = {
noremap = true;
silent = true;
};
}
# --- Visual mode mappings ---
{
mode = "v";
key = "<C-c>";
action = "\"+y";
options = {
noremap = true;
silent = true;
};
}
{
mode = "v";
key = "<C-p>";
action = "\"+p";
options = {
noremap = true;
silent = true;
};
}
];
plugins = {
nvim-autopairs = {
enable = true;
# autoLoad = true;
};
cmp = {
autoEnableSources = true;
enable = true;
# autoLoad = true;
};
copilot-lua = {
enable = true;
# autoLoad = true;
};
conform-nvim = {
enable = true;
# autoLoad = true;
settings = {
formatters_by_ft = {
lua = [ "stylua" ];
python = [
"isort"
"black"
];
nix = [ "nixfmt" ];
javascript = [
"deno fmt"
"prettier"
];
css = [
"deno fmt"
"prettier"
];
json = [
"deno fmt"
"prettier"
];
jsonc = [
"deno fmt"
"prettier"
];
};
# Default formatting options
default_format_opts = {
lsp_format = "fallback";
};
# Format-on-save behavior
format_on_save = {
timeout_ms = 500;
};
# Custom formatter settings
formatters = {
shfmt = {
append_args = [
"-i"
"2"
];
};
};
};
};
fzf-lua = {
enable = true;
# autoLoad = true;
};
kitty-scrollback = {
enable = true;
# autoLoad = true;
};
lsp = {
enable = true;
# autoLoad = true;
};
lualine = {
enable = true;
settings = {
options = {
theme = {
normal = {
a = {
fg = "#1e1e2e";
bg = "#cba6f7";
};
b = {
fg = "#cdd6f4";
bg = "#313244";
};
c = {
fg = "#cdd6f4";
};
};
insert = {
a = {
fg = "#1e1e2e";
bg = "#89b4fa";
};
};
visual = {
a = {
fg = "#1e1e2e";
bg = "#94e2d5";
};
};
replace = {
a = {
fg = "#1e1e2e";
bg = "#f38ba8";
};
};
inactive = {
a = {
fg = "#cdd6f4";
bg = "#1e1e2e";
};
b = {
fg = "#cdd6f4";
bg = "#1e1e2e";
};
c = {
fg = "#cdd6f4";
};
};
};
component_separators = "";
section_separators = {
left = "";
right = "";
};
};
sections = {
lualine_a = [
{
__unkeyed-1 = "mode";
separator = {
left = " ";
};
right_padding = 2;
}
];
lualine_b = [
"filename"
"branch"
];
lualine_c = [ "%=" ];
lualine_x = [ ];
lualine_y = [
"filetype"
"progress"
];
lualine_z = [
{
__unkeyed-1 = "location";
separator = {
right = " ";
};
left_padding = 2;
}
];
};
inactive_sections = {
lualine_a = [ "filename" ];
lualine_b = [ ];
lualine_c = [ ];
lualine_x = [ ];
lualine_y = [ ];
lualine_z = [ "location" ];
};
tabline = { };
extensions = [ ];
};
# autoLoad = true;
};
};
};
programs.ghostwriter = {
enable = true;
font = {
family = "Noto Sans";
pointSize = 12;
};
};
programs.kate = {
enable = true;
editor = {
font = {
family = "Noto Sans Mono";
pointSize = 10;
};
};
};
programs.plasma = {
enable = true;
overrideConfig = true;
session = {
sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession";
};
workspace = {
iconTheme = "Colloid-Dark";
windowDecorations = {
library = "org.kde.breeze";
theme = "Breeze";
};
cursor.size = 24;
wallpaperPictureOfTheDay.provider = "bing";
wallpaperFillMode = "preserveAspectCrop";
};
kscreenlocker = {
appearance.wallpaperPictureOfTheDay.provider = "bing";
};
window-rules = [
{
description = "Global Changes";
match = {
window-class = {
value = "";
type = "substring";
};
window-types = [ "normal" ];
};
apply = {
opacityactive = {
value = 100;
apply = "force";
};
opacityinactive = {
value = 100;
apply = "force";
};
};
}
{
description = "OpenMW";
match = {
window-class = {
value = "openmw";
type = "substring";
};
window-types = [ "normal" ];
};
apply = {
noborder = {
value = true;
apply = "force";
};
maximizehoriz = {
value = true;
apply = "force";
};
maximizevert = {
value = true;
apply = "force";
};
desktops = {
value = "Desktop_4";
apply = "force";
};
};
}
{
description = "Firefox Picture-in-Picture";
match = {
window-class = {
value = "";
type = "substring";
};
title = {
value = "Picture-in-Picture";
type = "exact";
};
};
apply = {
above = {
value = true;
apply = "force";
};
desktops = {
value = "\\0";
apply = "force";
};
};
}
];
kwin = {
titlebarButtons = {
left = [
"on-all-desktops"
"keep-below-windows"
"keep-above-windows"
];
right = [
"minimize"
"maximize"
"close"
];
};
nightLight = {
enable = true;
mode = "location";
# Atlanta
location.latitude = "33.7501";
location.longitude = "-84.3885";
temperature.day = 6000;
temperature.night = 3500;
transitionTime = 60;
};
virtualDesktops = {
names = [
"1"
"2"
"3"
"4"
];
rows = 1;
};
effects = {
desktopSwitching = {
animation = "slide";
navigationWrapping = true;
};
dimAdminMode.enable = true;
# dimInactive.enable = true;
minimization = {
animation = "magiclamp";
duration = 500;
};
shakeCursor.enable = true;
snapHelper.enable = true;
# translucency.enable = true;
# windowOpenClose.animation = "fade";
blur = {
enable = false;
noiseStrength = 8;
strength = 5;
};
};
};
configFile = {
# kdeglobals.KDE.AutomaticLookAndFeel = true;
kwinrc.Round-Corners.ActiveOutlinePalette = 2;
kwinrc.Round-Corners.ActiveOutlineUseCustom = false;
kwinrc.Round-Corners.ActiveOutlineUsePalette = true;
kwinrc.Round-Corners.ActiveSecondOutlinePalette = 2;
kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false;
kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true;
kwinrc.Round-Corners.InactiveOutlinePalette = 3;
kwinrc.Round-Corners.InactiveOutlineUseCustom = false;
kwinrc.Round-Corners.InactiveOutlineUsePalette = true;
kwinrc.Round-Corners.InactiveSecondOutlinePalette = 3;
kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false;
kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true;
plasmaparc.General.AudioFeedback = false;
kdeglobals.Sounds.Enable = false;
kwinrc.Plugins.forceblurEnabled = true;
kwinrc.Effect-blurplus.BlurDecorations = true;
kwinrc.Effect-blurplus.BlurMatching = false;
kwinrc.Effect-blurplus.BlurMenus = true;
kwinrc.Effect-blurplus.BlurNonMatching = true;
kwinrc.Effect-blurplus.TopCornerRadius = 10;
kwinrc.Effect-blurplus.BottomCornerRadius = 10;
kwinrc.Effect-blurplus.NoiseStrength = 6;
kwinrc.Effect-blurplus.RefractionStrength = 10;
};
panels = [
# Small dock at the bottom right
{
location = "bottom";
height = 40;
hiding = "dodgewindows";
lengthMode = "fit";
floating = true;
alignment = "left";
widgets = [
{
kickoff = {
sortAlphabetically = true;
# icon = "nix-snowflake-white";
};
}
{
iconTasks = {
launchers = [
"applications:firefox.desktop"
"applications:org.kde.dolphin.desktop"
"applications:vesktop.desktop"
"applications:kitty.desktop"
"applications:org.strawberrymusicplayer.strawberry.desktop"
"applications:writer.desktop"
];
};
}
"org.kde.plasma.pager"
];
}
];
};
# This value determines the Home Manager release that your # This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage # configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards # when a new Home Manager release introduces backwards

19
home/kde/other.nix Normal file
View file

@ -0,0 +1,19 @@
{
programs.ghostwriter = {
enable = true;
font = {
family = "Noto Sans";
pointSize = 12;
};
};
programs.kate = {
enable = true;
editor = {
font = {
family = "Noto Sans Mono";
pointSize = 10;
};
};
};
}

215
home/kde/plasma.nix Normal file
View file

@ -0,0 +1,215 @@
{
programs.plasma = {
enable = true;
overrideConfig = true;
session = {
sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession";
};
workspace = {
iconTheme = "Colloid-Dark";
windowDecorations = {
library = "org.kde.breeze";
theme = "Breeze";
};
cursor.size = 24;
wallpaperPictureOfTheDay.provider = "bing";
wallpaperFillMode = "preserveAspectCrop";
};
kscreenlocker = {
appearance.wallpaperPictureOfTheDay.provider = "bing";
};
window-rules = [
{
description = "Global Changes";
match = {
window-class = {
value = "";
type = "substring";
};
window-types = [ "normal" ];
};
apply = {
opacityactive = {
value = 100;
apply = "force";
};
opacityinactive = {
value = 100;
apply = "force";
};
};
}
{
description = "OpenMW";
match = {
window-class = {
value = "openmw";
type = "substring";
};
window-types = [ "normal" ];
};
apply = {
noborder = {
value = true;
apply = "force";
};
maximizehoriz = {
value = true;
apply = "force";
};
maximizevert = {
value = true;
apply = "force";
};
desktops = {
value = "Desktop_4";
apply = "force";
};
};
}
{
description = "Firefox Picture-in-Picture";
match = {
window-class = {
value = "";
type = "substring";
};
title = {
value = "Picture-in-Picture";
type = "exact";
};
};
apply = {
above = {
value = true;
apply = "force";
};
desktops = {
value = "\\0";
apply = "force";
};
};
}
];
kwin = {
titlebarButtons = {
left = [
"on-all-desktops"
"keep-below-windows"
"keep-above-windows"
];
right = [
"minimize"
"maximize"
"close"
];
};
nightLight = {
enable = true;
mode = "location";
# Atlanta
location.latitude = "33.7501";
location.longitude = "-84.3885";
temperature.day = 6000;
temperature.night = 3500;
transitionTime = 60;
};
virtualDesktops = {
names = [
"1"
"2"
"3"
"4"
];
rows = 1;
};
effects = {
desktopSwitching = {
animation = "slide";
navigationWrapping = true;
};
dimAdminMode.enable = true;
# dimInactive.enable = true;
minimization = {
animation = "magiclamp";
duration = 500;
};
shakeCursor.enable = true;
snapHelper.enable = true;
# translucency.enable = true;
# windowOpenClose.animation = "fade";
blur = {
enable = false;
noiseStrength = 8;
strength = 5;
};
};
};
configFile = {
# kdeglobals.KDE.AutomaticLookAndFeel = true;
kwinrc.Round-Corners.ActiveOutlinePalette = 2;
kwinrc.Round-Corners.ActiveOutlineUseCustom = false;
kwinrc.Round-Corners.ActiveOutlineUsePalette = true;
kwinrc.Round-Corners.ActiveSecondOutlinePalette = 2;
kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false;
kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true;
kwinrc.Round-Corners.InactiveOutlinePalette = 3;
kwinrc.Round-Corners.InactiveOutlineUseCustom = false;
kwinrc.Round-Corners.InactiveOutlineUsePalette = true;
kwinrc.Round-Corners.InactiveSecondOutlinePalette = 3;
kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false;
kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true;
plasmaparc.General.AudioFeedback = false;
kdeglobals.Sounds.Enable = false;
kwinrc.Plugins.forceblurEnabled = true;
kwinrc.Effect-blurplus.BlurDecorations = true;
kwinrc.Effect-blurplus.BlurMatching = false;
kwinrc.Effect-blurplus.BlurMenus = true;
kwinrc.Effect-blurplus.BlurNonMatching = true;
kwinrc.Effect-blurplus.TopCornerRadius = 10;
kwinrc.Effect-blurplus.BottomCornerRadius = 10;
kwinrc.Effect-blurplus.NoiseStrength = 6;
kwinrc.Effect-blurplus.RefractionStrength = 10;
};
panels = [
# Small dock at the bottom right
{
location = "bottom";
height = 40;
hiding = "dodgewindows";
lengthMode = "fit";
floating = true;
alignment = "left";
widgets = [
{
kickoff = {
sortAlphabetically = true;
# icon = "nix-snowflake-white";
};
}
{
iconTasks = {
launchers = [
"applications:firefox.desktop"
"applications:org.kde.dolphin.desktop"
"applications:vesktop.desktop"
"applications:kitty.desktop"
"applications:org.strawberrymusicplayer.strawberry.desktop"
"applications:writer.desktop"
];
};
}
"org.kde.plasma.pager"
];
}
];
};
}

50
home/systemd/default.nix Normal file
View file

@ -0,0 +1,50 @@
{ pkgs, ... }:
{
xdg.configFile."rclone/synology.conf".text = ''
[synology]
type = sftp
user = sckova
host = nas.taila30609.ts.net
key_file = ~/.ssh/key
'';
systemd.user.services.synology-mount = {
Unit = {
Description = "Mount Synology NAS with Rclone and Home Manager.";
After = [ "network-online.target" ];
};
Service = {
Type = "notify";
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/Synology";
ExecStart = "${pkgs.rclone}/bin/rclone --config=%h/.config/rclone/synology.conf --vfs-cache-mode full --ignore-checksum mount \"synology:\" \"%h/Synology\"";
ExecStop = "/run/wrappers/bin/fusermount -u %h/Synology/%i";
};
Install = {
WantedBy = [ "default.target" ];
};
};
systemd.user.services.input-leap = {
Unit = {
Description = "Autostart Input Leap";
After = [ "graphical-session.target" ];
};
Service = {
Type = "oneshot";
RemainAfterExit = true;
PassEnvironment = "DISPLAY";
ExecStart = "${pkgs.writeShellScript "input-leap-start" ''
sleep 5
${pkgs.input-leap}/bin/input-leap
''}";
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
}

View file

@ -0,0 +1,15 @@
{
programs.kitty = {
enable = true;
enableGitIntegration = true;
themeFile = "Catppuccin-Mocha";
font = {
name = "Noto Sans Mono";
size = 10;
};
shellIntegration = {
enableFishIntegration = true;
};
extraConfig = "\nwheel_scroll_multiplier 5.0";
};
}

View file

@ -0,0 +1,245 @@
{
programs.nixvim = {
enable = true;
defaultEditor = true;
waylandSupport = true;
viAlias = true;
vimAlias = true;
clipboard = {
register = "unnamedplus";
providers.wl-copy.enable = true;
};
opts = {
tabstop = 2;
softtabstop = 2;
shiftwidth = 2;
expandtab = true;
number = true;
};
colorschemes.catppuccin = {
enable = true;
settings = {
flavour = "mocha";
};
};
keymaps = [
# --- Normal mode mappings ---
{
mode = "n";
key = "<C-c>";
action = "\"+y";
options = {
noremap = true;
silent = true;
};
}
{
mode = "n";
key = "<C-p>";
action = "\"+p";
options = {
noremap = true;
silent = true;
};
}
# --- Visual mode mappings ---
{
mode = "v";
key = "<C-c>";
action = "\"+y";
options = {
noremap = true;
silent = true;
};
}
{
mode = "v";
key = "<C-p>";
action = "\"+p";
options = {
noremap = true;
silent = true;
};
}
];
plugins = {
nvim-autopairs = {
enable = true;
# autoLoad = true;
};
cmp = {
autoEnableSources = true;
enable = true;
# autoLoad = true;
};
copilot-lua = {
enable = true;
# autoLoad = true;
};
conform-nvim = {
enable = true;
# autoLoad = true;
settings = {
formatters_by_ft = {
lua = [ "stylua" ];
python = [
"isort"
"black"
];
nix = [ "nixfmt" ];
javascript = [
"deno fmt"
"prettier"
];
css = [
"deno fmt"
"prettier"
];
json = [
"deno fmt"
"prettier"
];
jsonc = [
"deno fmt"
"prettier"
];
};
# Default formatting options
default_format_opts = {
lsp_format = "fallback";
};
# Format-on-save behavior
format_on_save = {
timeout_ms = 500;
};
# Custom formatter settings
formatters = {
shfmt = {
append_args = [
"-i"
"2"
];
};
};
};
};
fzf-lua = {
enable = true;
# autoLoad = true;
};
kitty-scrollback = {
enable = true;
# autoLoad = true;
};
lsp = {
enable = true;
# autoLoad = true;
};
lualine = {
enable = true;
settings = {
options = {
theme = {
normal = {
a = {
fg = "#1e1e2e";
bg = "#cba6f7";
};
b = {
fg = "#cdd6f4";
bg = "#313244";
};
c = {
fg = "#cdd6f4";
};
};
insert = {
a = {
fg = "#1e1e2e";
bg = "#89b4fa";
};
};
visual = {
a = {
fg = "#1e1e2e";
bg = "#94e2d5";
};
};
replace = {
a = {
fg = "#1e1e2e";
bg = "#f38ba8";
};
};
inactive = {
a = {
fg = "#cdd6f4";
bg = "#1e1e2e";
};
b = {
fg = "#cdd6f4";
bg = "#1e1e2e";
};
c = {
fg = "#cdd6f4";
};
};
};
component_separators = "";
section_separators = {
left = "";
right = "";
};
};
sections = {
lualine_a = [
{
__unkeyed-1 = "mode";
separator = {
left = " ";
};
right_padding = 2;
}
];
lualine_b = [
"filename"
"branch"
];
lualine_c = [ "%=" ];
lualine_x = [ ];
lualine_y = [
"filetype"
"progress"
];
lualine_z = [
{
__unkeyed-1 = "location";
separator = {
right = " ";
};
left_padding = 2;
}
];
};
inactive_sections = {
lualine_a = [ "filename" ];
lualine_b = [ ];
lualine_c = [ ];
lualine_x = [ ];
lualine_y = [ ];
lualine_z = [ "location" ];
};
tabline = { };
extensions = [ ];
};
# autoLoad = true;
};
};
};
}

View file

@ -27,7 +27,12 @@
imports = [ imports = [
../home/all.nix ../home/all.nix
../home/browsers/firefox/default.nix ../home/browsers/firefox/default.nix
../home/${config.networking.hostName}.nix ../home/systemd/default.nix
../home/terminal/nvim/default.nix
../home/terminal/kitty/default.nix
../home/kde/plasma.nix
../home/kde/other.nix
../home/hosts/${config.networking.hostName}.nix
]; ];
}; };
@ -122,16 +127,6 @@
hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0";
}; };
programs.bash = {
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
environment = { environment = {
@ -153,10 +148,6 @@
services.openssh.enable = true; services.openssh.enable = true;
networking.firewall.enable = false; networking.firewall.enable = false;
networking.extraHosts = ''
0.0.0.0 apresolve.spotify.com
'';
# This value determines the NixOS release from which the default # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions # settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave # on your system were taken. Its perfectly fine and recommended to leave

20
system/shell/fish.nix Normal file
View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
programs.bash = {
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
programs.fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting # Disable greeting
'';
};
}