diff --git a/config/home/bash.nix b/config/home/bash.nix index 75f11b4..6aae52f 100644 --- a/config/home/bash.nix +++ b/config/home/bash.nix @@ -1,7 +1,7 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: -let inherit (import ../../options.nix) flakeDir; in -{ +let inherit (import ../../options.nix) flakeDir theShell; in +lib.mkIf (theShell == "bash") { # Configure Bash programs.bash = { enable = true; diff --git a/config/home/default.nix b/config/home/default.nix index 5ee833f..5218c82 100644 --- a/config/home/default.nix +++ b/config/home/default.nix @@ -17,6 +17,7 @@ ./swappy.nix ./swaylock.nix ./swaync.nix + ./zsh.nix # Place Home Files Like Pictures ./files.nix diff --git a/config/home/zsh.nix b/config/home/zsh.nix new file mode 100644 index 0000000..028a52b --- /dev/null +++ b/config/home/zsh.nix @@ -0,0 +1,59 @@ +{ config, lib, pkgs, ... }: + +let inherit (import ../../options.nix) flakeDir theShell; in +lib.mkIf (theShell == "zsh") { + programs.zsh = { + enable = true; + syntaxHighlighting.enable = true; + enableAutosuggestions = true; + historySubstringSearch.enable = true; + profileExtra = '' + #if [ -z "$DISPLAY" ] && [ "$XDG_VNTR" = 1 ]; then + # exec Hyprland + #fi + ''; + initExtra = '' + zstyle ":completion:*" menu select + zstyle ":completion:*" matcher-list "" "m:{a-z0A-Z}={A-Za-z}" "r:|=*" "l:|=* r:|=*" + if type nproc &>/dev/null; then + export MAKEFLAGS="$MAKEFLAGS -j$(($(nproc)-1))" + fi + bindkey '^[[3~' delete-char # Key Del + bindkey '^[[5~' beginning-of-buffer-or-history # Key Page Up + bindkey '^[[6~' end-of-buffer-or-history # Key Page Down + bindkey '^[[1;3D' backward-word # Key Alt + Left + bindkey '^[[1;3C' forward-word # Key Alt + Right + bindkey '^[[H' beginning-of-line # Key Home + bindkey '^[[F' end-of-line # Key End + neofetch + if [ -f $HOME/.zshrc-personal ]; then + source $HOME/.zshrc-personal + fi + eval "$(starship init zsh)" + ''; + initExtraFirst = '' + HISTFILE=~/.histfile + HISTSIZE=1000 + SAVEHIST=1000 + setopt autocd nomatch + unsetopt beep extendedglob notify + autoload -Uz compinit + compinit + ''; + sessionVariables = { + + }; + shellAliases = { + sv="sudo vim"; + flake-rebuild="sudo nixos-rebuild switch --flake ${flakeDir}"; + flake-update="sudo nix flake update ${flakeDir}"; + gcCleanup="nix-collect-garbage --delete-old && sudo nix-collect-garbage -d && sudo /run/current-system/bin/switch-to-configuration boot"; + v="nvim"; + ls="lsd"; + ll="lsd -l"; + la="lsd -a"; + lal="lsd -al"; + ".."="cd .."; + }; + }; +} diff --git a/options.nix b/options.nix index 1202f8c..12742fc 100644 --- a/options.nix +++ b/options.nix @@ -24,6 +24,7 @@ in { theSecondKBDLayout = "pl"; theLCVariables = "en_US.UTF-8"; theTimezone = "America/Chicago"; + theShell = "bash"; # Possible options: bash, zsh cpuType = "intel"; gpuType = "amd"; diff --git a/system.nix b/system.nix index 7520d19..49384f4 100644 --- a/system.nix +++ b/system.nix @@ -4,7 +4,7 @@ let inherit (import ./options.nix) theLocale theTimezone gitUsername - wallpaperDir wallpaperGit + theShell wallpaperDir wallpaperGit theLCVariables theKBDLayout; in { imports = @@ -43,6 +43,8 @@ in { isNormalUser = true; description = "${gitUsername}"; extraGroups = [ "networkmanager" "wheel" "libvirtd" ]; + shell = pkgs.${theShell}; + ignoreShellProgramCheck = true; packages = with pkgs; []; };