diff --git a/glasshouse-desktop/home/default.nix b/glasshouse-desktop/home/default.nix index 67b5228..da2ffde 100644 --- a/glasshouse-desktop/home/default.nix +++ b/glasshouse-desktop/home/default.nix @@ -14,5 +14,6 @@ ++ [ (import ./swaync/swaync.nix)] ++ [ (import ./userpkgs.nix) ] ++ [ (import ./waybar) ] + ++ [ (import ./eza.nix) ] ++ [ (import ./zsh/zshell.nix) ]; } diff --git a/glasshouse-desktop/home/eza.nix b/glasshouse-desktop/home/eza.nix new file mode 100644 index 0000000..a9a8142 --- /dev/null +++ b/glasshouse-desktop/home/eza.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + programs.eza = { + enable = true; + enableZshIntegration = true; + get = true; + }; +} diff --git a/glasshouse-desktop/home/hyprland/config.nix b/glasshouse-desktop/home/hyprland/config.nix index 5cd5fbb..6e16b15 100644 --- a/glasshouse-desktop/home/hyprland/config.nix +++ b/glasshouse-desktop/home/hyprland/config.nix @@ -40,7 +40,7 @@ general = { "$mainMod" = "super"; layout = "dwindle"; - gaps_in = 8; + gaps_in = 4; gaps_out = 8; border_size = 2; "col.active_border" = "rgb(cba6f7) rgb(94e2d5) 45deg"; @@ -76,7 +76,7 @@ }; decoration = { - rounding = 10; + rounding = 7; # active_opacity = 0.90; # inactive_opacity = 0.90; # fullscreen_opacity = 1.0; diff --git a/glasshouse-desktop/home/scripts/scripts.nix b/glasshouse-desktop/home/scripts/scripts.nix index a3fb69d..38e55a1 100644 --- a/glasshouse-desktop/home/scripts/scripts.nix +++ b/glasshouse-desktop/home/scripts/scripts.nix @@ -5,6 +5,8 @@ runbg = pkgs.writeShellScriptBin "runbg" (builtins.readFile ./scripts/runbg.sh); music = pkgs.writeShellScriptBin "music" (builtins.readFile ./scripts/music.sh); lofi = pkgs.writeScriptBin "lofi" (builtins.readFile ./scripts/lofi.sh); + + splash = pkgs.writeShellScriptBin "splash" (builtins.readFile ./scripts/splash.sh); toggle_blur = pkgs.writeScriptBin "toggle_blur" (builtins.readFile ./scripts/toggle_blur.sh); toggle_oppacity = pkgs.writeScriptBin "toggle_oppacity" (builtins.readFile ./scripts/toggle_oppacity.sh); @@ -31,6 +33,7 @@ in { runbg music lofi + splash toggle_blur toggle_oppacity diff --git a/glasshouse-desktop/home/scripts/scripts/splash.sh b/glasshouse-desktop/home/scripts/scripts/splash.sh new file mode 100755 index 0000000..e782a10 --- /dev/null +++ b/glasshouse-desktop/home/scripts/scripts/splash.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +TERMCOUNTER="/tmp/termcounter_$(whoami)" +if [[ ! -f "$TERMCOUNTER" ]]; then + echo 0 > "$TERMCOUNTER" +fi +UPDATES="/tmp/numupdates" +[ ! -e "$UPDATES" ] && UPDATES="0" # if it does not, UPDATES is equal to zero +[ -e "$UPDATES" ] && UPDATES=$(cat "$UPDATES") # if updates file exists, record number of updates + + +TERMINAL_COUNT=$(cat "$TERMCOUNTER") +TERMINAL_COUNT=$((TERMINAL_COUNT+1)) + +CMD_COUNT=$(cat "/tmp/cmdcounter_$(whoami)") +echo "$TERMINAL_COUNT" > "$TERMCOUNTER" + +echo "NixOS kernel ver. $(uname -a | awk '{print $3}') x86_64 GNU/Linux" +date +"%A %B %-d %Y" +echo -e "\033[38;2;0;180;205m$(toilet -t -f Slant.flf glasshouse)\033[0m" +echo -e "\033[38;2;0;180;205mTerminals Opened This Session:\033[0m $TERMINAL_COUNT" +echo -e "\033[38;2;0;180;205mCommands Entered This Session:\033[0m $CMD_COUNT" diff --git a/glasshouse-desktop/home/zsh/zshell.nix b/glasshouse-desktop/home/zsh/zshell.nix index 4646f50..a344809 100644 --- a/glasshouse-desktop/home/zsh/zshell.nix +++ b/glasshouse-desktop/home/zsh/zshell.nix @@ -1,7 +1,9 @@ +{ ... }: + { programs.zoxide = { - enable = true; - enableZshIntegration = true; + enable = true; + enableZshIntegration = true; }; programs.zsh = { enable = true; @@ -13,13 +15,8 @@ VISUAL = "/nixbin/nvim"; LANG = "en_US.UTF-8"; BROWSER = "/nixbin/firefox"; - STARSHIP_CONFIG = /home/pagedmov/.config/starship/starship.toml; - FZF_DEFAULT_COMMAND = "find $HOME \( -path \"$HOME/.steam\" -o -path \"$HOME/.mozilla\" -o -path \"$HOME/go\" \) -prune -o -type f -print"; - GIT_TOKEN = "$(cat supersecret/git-token)"; - PROMPT_COMMAND = "if [[ $? != 0 ]]; then s_check && (aplay ~/sound/sys/error.wav 2> /dev/null &); fi"; }; - oh-my-zsh = { enable = true; plugins = [ "git" "fzf" ]; @@ -32,129 +29,41 @@ size = 10000; share = true; }; + autosuggestion = { enable = true; highlight = "fg=#4C566A,underline"; }; shellAliases = { - enterwifi = "nmtui-connect"; grep = "grep --color=auto"; - v = "nvim"; mv = "mv -v"; cp = "cp -vr"; - rm = "safe_rm"; + gt = "gtrash"; grub-update = "sudo grub-mkconfig -o /boot/grub/grub.cfg"; - mtar = "tar -zcvf"; # mtar ; - utar = "tar -zxvf"; # utar ; - z = "zip -r"; # z ; - uz = "unzip"; # uz -d ; sr = "source ~/.zshrc"; ".." = "cd .."; psg = "ps aux | grep -v grep | grep -i -e VSZ -e" ; mkdir = "mkdir -p"; - fm = "ranger"; - killjob = "kill -9 \$(jobs -l | awk '{print \$3}')"; - rmf = "fzf -m | xargs -ro rm"; - nwt = "ping google.com"; - wiki = "vimwiki"; - uwiki = "wiki_update"; - beep = "paplay $BEEP"; pk = "pkill -9 -f"; - zrc = "nvim $HOME/sysflakes/glasshouse-desktop/modules/zshell.nix"; - vfind = "nvim_find"; - theme = "change_kitty_theme"; - navhelp = "navhelp | less"; - svc = "systemctl --user"; - hmswitch = "home-manager switch"; - hyprconf = "nvim $HOME/sysflakes/glasshouse-desktop/dotfiles/packages/hyprland/hyprland.conf"; - hmconf = "nvim $HOME/sysflakes/glasshouse-desktop/home.nix"; - nixconf = "nvim $HOME/sysflakes/glasshouse-desktop/configuration.nix"; + zrc = "nvim $HOME/dots/zsh/zshell.nix"; + svcu = "systemctl --user"; + svc = "sudo systemctl"; + hyprconf = "nvim $HOME/dots/hyprland/config.nix"; + nixconf = "nvim $HOME/sysflakes/glasshouse-desktop/sys"; + hmconf = "nvim $HOME/sysflakes/glasshouse-desktop/home"; viflake = "nvim flake.nix"; - nvimcfg = "ranger $HOME/sysflakes/glasshouse-desktop/dotfiles/packages/nixvim/"; + nvimcfg = "nvim $HOME/dots/nixvim/config"; }; - initExtraFirst = '' -export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH" -export PATH="$HOME/.nix-profile/bin:$PATH" -export UPDATE_ZSH_DAYS=7 -unalias ls - -# Uncomment the following line to enable command auto-correction. -ENABLE_CORRECTION="true" - -if [[ $- != *i* ]]; then - return -fi - - -typeset -g comppath="$HOME/.cache" -typeset -g compfile="$comppath/.zcompdump" - -if [[ -d "$comppath" ]]; then - [[ -w "$compfile" ]] || rm -rf "$compfile" >/dev/null 2>&1 -else - mkdir -p "$comppath" -fi - - - -preexec() { - cmdcounter="/tmp/cmdcounter_$(whoami)" - - if [[ ! -f "$cmdcounter" ]]; then - echo 0 > "$cmdcounter" - fi - - cmd_count="$(cat "$cmdcounter")" - - cmd_count=$((cmd_count + 1)) - - echo "$cmd_count" > "$cmdcounter" -} s_check() { [ $SOUNDS_ENABLED -eq 1 ] } -snd_restart() { - echo -n "Restarting wireplumber service... " - systemctl --user restart wireplumber; code1=$? && echo "SUCCESS" || echo "FAILED" - [ $code1 -ne 0 ] && exit 1 - echo -n "Restarting pipewire service... " - systemctl --user restart pipewire; code2=$? && echo "SUCCESS" || echo "FAILED" - [ $code2 -ne 0 ] && exit 1 - echo "Audio services successfully restarted" -} - -vid_restart() { - echo -n "Restarting wireplumber service... " - systemctl --user restart wireplumber; code1=$? && echo "SUCCESS" || echo "FAILED" - [ $code1 -ne 0 ] && exit 1 - echo -n "Restarting pipewire service... " - systemctl --user restart pipewire; code2=$? && echo "SUCCESS" || echo "FAILED" - [ $code2 -ne 0 ] && exit 1 - echo -n "Restarting xdg-desktop-portal service... " - systemctl --user restart xdg-desktop-portal; code3=$? && echo "SUCCESS" || echo "FAILED" - [ $code3 -ne 0 ] && exit 1 - echo -n "Restarting xdg-desktop-portal-hyprland service... " - systemctl --user restart xdg-desktop-portal-hyprland; code4=$? && echo "SUCCESS" || echo "FAILED" - [ $code4 -ne 0 ] && exit 1 - echo "Video services successfully restarted" -} - -wiki_update() { - old_pwd=$(pwd) - cd ~/vimwiki > /dev/null - git pull - cd $old_pwd > /dev/null -} - -# Functions ls() { command ls --group-directories-first --color=always -F1 "$@" | sort -f -k1 s_check && (aplay ~/sound/sys/ls.wav > /dev/null 2>&1 &) } -# cd and ls after cd() { export SOUNDS_ENABLED=0 ls "$@" @@ -162,73 +71,18 @@ cd() { export SOUNDS_ENABLED=1 s_check && (aplay ~/sound/sys/cd.wav > /dev/null 2>&1 &) } -src() { - autoload -U zrecompile - rm -rf "$compfile"* - compinit -u -d "$compfile" - zrecompile -p "$compfile" - exec zsh + +mcd() { + mkdir -p $1 + cd $1 } -mcd () { - mkdir -p $1 - cd $1 +crs() { + cargo test && \ + cargo run } -rc(){ - g++ "$1" -o run - ./run -} - -safe_rm() { - played_sound=false - for dir in "$@"; do - # Check if it's a file or directory - if [ -d "$dir" ] || [ -f "$dir" ]; then - # Get size of the directory or file - size=$(du -s "$dir" 2>/dev/null | awk '{print $1/1024}' | awk '{printf("%d\n", $1 + 0.5)}') - - # Count files (recursively if it's a directory) - files=$(find "$dir" | wc -l) - - check=false - is_file_or_dir=$([ -f "$dir" ] && echo 'file' || echo 'directory') - - # If there are many files, or the size is big, warn the user - if [ "$files" -gt 20 ]; then - echo "There's a lot of stuff in '$dir' ($files files) ." - check=true - fi - - if [ "$size" -gt 1024 ]; then - size_in_gb=$(echo "scale=2; $size / 1024" | bc -l) - echo "This $is_file_or_dir ('$dir') is kind of big ($size_in_gb GB)." - check=true - fi - - # Ask for confirmation only if necessary - if [ "$check" = true ]; then - echo "Are you sure you want to remove this $is_file_or_dir '$dir'? (y/n)" - read -r confirm - [ "$confirm" = "y" ] && (aplay ~/sound/sys/rm.wav > /dev/null 2>&1 &) - [ "$confirm" != "y" ] && (aplay ~/sound/sys/cd.wav > /dev/null 2>&1 &) - fi - - # Perform the removal if no checks or confirmation is "y" - if [ "$check" = false ] || [ "$confirm" = "y" ]; then - /run/current-system/sw/bin/rm -rfv "$dir" - [[ "$played_sound" -eq "0" ]] && (aplay ~/sound/sys/rm.wav > /dev/null 2>&1 &) - played_sound=1 - else - echo "Operation cancelled for '$dir'." - fi - else - echo "'$dir' does not exist or is not accessible." - fi - done -} - -nixswitch() { +nixcommit() { s_check && (aplay ~/sound/sys/nixswitch-start.wav > /dev/null 2>&1 &) builtin cd "$HOME/sysflakes" nix flake update @@ -250,71 +104,69 @@ nixswitch() { fi builtin cd $OLDPWD } -journal() { - # journal for keeping track of stuff I do that isn't declared in my nix config - [ ! -f "$HOME/loose_ends" ] && touch "$HOME/loose_ends" - echo "$(date) - $1" >> "$HOME/loose_ends" + +nixswitch() { + s_check && (aplay ~/sound/sys/nixswitch-start.wav > /dev/null 2>&1 &) + builtin cd "$HOME/sysflakes" + + nix flake update + sudo nixos-rebuild switch --flake "$HOME/sysflakes#glasshouse" + if [ $? -eq 0 ]; then + s_check && (aplay ~/sound/sys/update.wav > /dev/null 2>&1 &) + else + s_check && (aplay ~/sound/sys/error.wav > /dev/null 2>&1 &) + fi + builtin cd $OLDPWD } -invoke() { nix run nixpkgs#"$@" } +invoke() { nix run nixpkgs#$"@" } + +nsp() { nix-shell -p "$@" --run zsh } ''; - initExtraBeforeCompInit = '' - source ~/sysflakes/glasshouse-desktop/home/zsh/zsh-style - ''; - initExtra = '' -if [ ! -e $HOME/.zsh_history ]; then - touch $HOME/.zsh_history - chmod 600 $HOME/.zsh_history -fi -HISTFILE=~/.zsh_history # The file where your history will be saved -HISTSIZE=10000 # The number of lines kept in memory -SAVEHIST=10000 # The number of lines kept in the history file -setopt APPEND_HISTORY # Append history to the history file (don't overwrite) -setopt INC_APPEND_HISTORY # Append to the history file incrementally -setopt SHARE_HISTORY # Share history between all zsh sessions -setopt CORRECT -setopt NO_NOMATCH -setopt LIST_PACKED -setopt ALWAYS_TO_END -setopt GLOB_COMPLETE -setopt COMPLETE_ALIASES -setopt COMPLETE_IN_WORD -setopt AUTO_CD -setopt AUTO_CONTINUE -setopt LONG_LIST_JOBS -setopt HIST_VERIFY -setopt SHARE_HISTORY -setopt HIST_IGNORE_SPACE -setopt HIST_SAVE_NO_DUPS -setopt HIST_IGNORE_ALL_DUPS -setopt EXTENDED_GLOB -setopt TRANSIENT_RPROMPT -setopt INTERACTIVE_COMMENTS + initExtra = '' + if [ ! -e $HOME/.zsh_history ]; then + touch $HOME/.zsh_history + chmod 600 $HOME/.zsh_history + fi + setopt APPEND_HISTORY # Append history to the history file (don't overwrite) + setopt INC_APPEND_HISTORY # Append to the history file incrementally + setopt SHARE_HISTORY # Share history between all zsh sessions + setopt CORRECT + setopt NO_NOMATCH + setopt LIST_PACKED + setopt ALWAYS_TO_END + setopt GLOB_COMPLETE + setopt COMPLETE_ALIASES + setopt COMPLETE_IN_WORD + setopt AUTO_CD + setopt AUTO_CONTINUE + setopt LONG_LIST_JOBS + setopt HIST_VERIFY + setopt SHARE_HISTORY + setopt HIST_IGNORE_SPACE + setopt HIST_SAVE_NO_DUPS + setopt HIST_IGNORE_ALL_DUPS + setopt EXTENDED_GLOB + setopt TRANSIENT_RPROMPT + setopt INTERACTIVE_COMMENTS -autoload -U compinit # completion -autoload -U terminfo # terminfo keys -zmodload -i zsh/complist # menu completion -autoload -U promptinit # prompt - -autoload -U up-line-or-beginning-search; zle -N up-line-or-beginning-search -autoload -U down-line-or-beginning-search; zle -N down-line-or-beginning-search - - - -if [ "$TERM" = "linux" ] ; then - echo -en "\e]P0232323" -fi - -clear -source ~/sysflakes/glasshouse-desktop/home/zsh/zkbd -~/coding/scripts/splash.sh -eval "$(starship init zsh)" 2>/dev/null -s_check && (aplay ~/sound/sys/sh-source.wav > /dev/null 2>&1 &) - ''; - - # Options + autoload -U compinit # completion + autoload -U terminfo # terminfo keys + zmodload -i zsh/complist # menu completion + autoload -U promptinit # prompt + autoload -U up-line-or-beginning-search; zle -N up-line-or-beginning-search + autoload -U down-line-or-beginning-search; zle -N down-line-or-beginning-search + bindkey -v + + clear + splash + eval "$(starship init zsh)" 2>/dev/null + s_check && (aplay ~/sound/sys/sh-source.wav > /dev/null 2>&1 &) + ''; }; + } + diff --git a/glasshouse-desktop/home/zsh/zshellold.nix b/glasshouse-desktop/home/zsh/zshellold.nix new file mode 100644 index 0000000..4646f50 --- /dev/null +++ b/glasshouse-desktop/home/zsh/zshellold.nix @@ -0,0 +1,320 @@ +{ + programs.zoxide = { + enable = true; + enableZshIntegration = true; + }; + programs.zsh = { + enable = true; + + sessionVariables = { + SOUNDS_ENABLED = "1"; + EDITOR = "/nixbin/nvim"; + SUDO_EDITOR = "/nixbin/nvim"; + VISUAL = "/nixbin/nvim"; + LANG = "en_US.UTF-8"; + BROWSER = "/nixbin/firefox"; + STARSHIP_CONFIG = /home/pagedmov/.config/starship/starship.toml; + FZF_DEFAULT_COMMAND = "find $HOME \( -path \"$HOME/.steam\" -o -path \"$HOME/.mozilla\" -o -path \"$HOME/go\" \) -prune -o -type f -print"; + GIT_TOKEN = "$(cat supersecret/git-token)"; + PROMPT_COMMAND = "if [[ $? != 0 ]]; then s_check && (aplay ~/sound/sys/error.wav 2> /dev/null &); fi"; + }; + + + oh-my-zsh = { + enable = true; + plugins = [ "git" "fzf" ]; + }; + + enableCompletion = true; + history = { + path = ".zsh_history"; + save = 10000; + size = 10000; + share = true; + }; + autosuggestion = { + enable = true; + highlight = "fg=#4C566A,underline"; + }; + + shellAliases = { + enterwifi = "nmtui-connect"; + grep = "grep --color=auto"; + v = "nvim"; + mv = "mv -v"; + cp = "cp -vr"; + rm = "safe_rm"; + grub-update = "sudo grub-mkconfig -o /boot/grub/grub.cfg"; + mtar = "tar -zcvf"; # mtar ; + utar = "tar -zxvf"; # utar ; + z = "zip -r"; # z ; + uz = "unzip"; # uz -d ; + sr = "source ~/.zshrc"; + ".." = "cd .."; + psg = "ps aux | grep -v grep | grep -i -e VSZ -e" ; + mkdir = "mkdir -p"; + fm = "ranger"; + killjob = "kill -9 \$(jobs -l | awk '{print \$3}')"; + rmf = "fzf -m | xargs -ro rm"; + nwt = "ping google.com"; + wiki = "vimwiki"; + uwiki = "wiki_update"; + beep = "paplay $BEEP"; + pk = "pkill -9 -f"; + zrc = "nvim $HOME/sysflakes/glasshouse-desktop/modules/zshell.nix"; + vfind = "nvim_find"; + theme = "change_kitty_theme"; + navhelp = "navhelp | less"; + svc = "systemctl --user"; + hmswitch = "home-manager switch"; + hyprconf = "nvim $HOME/sysflakes/glasshouse-desktop/dotfiles/packages/hyprland/hyprland.conf"; + hmconf = "nvim $HOME/sysflakes/glasshouse-desktop/home.nix"; + nixconf = "nvim $HOME/sysflakes/glasshouse-desktop/configuration.nix"; + viflake = "nvim flake.nix"; + nvimcfg = "ranger $HOME/sysflakes/glasshouse-desktop/dotfiles/packages/nixvim/"; + }; + + initExtraFirst = '' +export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH" +export PATH="$HOME/.nix-profile/bin:$PATH" +export UPDATE_ZSH_DAYS=7 +unalias ls + +# Uncomment the following line to enable command auto-correction. +ENABLE_CORRECTION="true" + +if [[ $- != *i* ]]; then + return +fi + + +typeset -g comppath="$HOME/.cache" +typeset -g compfile="$comppath/.zcompdump" + +if [[ -d "$comppath" ]]; then + [[ -w "$compfile" ]] || rm -rf "$compfile" >/dev/null 2>&1 +else + mkdir -p "$comppath" +fi + + + +preexec() { + cmdcounter="/tmp/cmdcounter_$(whoami)" + + if [[ ! -f "$cmdcounter" ]]; then + echo 0 > "$cmdcounter" + fi + + cmd_count="$(cat "$cmdcounter")" + + cmd_count=$((cmd_count + 1)) + + echo "$cmd_count" > "$cmdcounter" +} + +s_check() { [ $SOUNDS_ENABLED -eq 1 ] } + +snd_restart() { + echo -n "Restarting wireplumber service... " + systemctl --user restart wireplumber; code1=$? && echo "SUCCESS" || echo "FAILED" + [ $code1 -ne 0 ] && exit 1 + echo -n "Restarting pipewire service... " + systemctl --user restart pipewire; code2=$? && echo "SUCCESS" || echo "FAILED" + [ $code2 -ne 0 ] && exit 1 + echo "Audio services successfully restarted" +} + +vid_restart() { + echo -n "Restarting wireplumber service... " + systemctl --user restart wireplumber; code1=$? && echo "SUCCESS" || echo "FAILED" + [ $code1 -ne 0 ] && exit 1 + echo -n "Restarting pipewire service... " + systemctl --user restart pipewire; code2=$? && echo "SUCCESS" || echo "FAILED" + [ $code2 -ne 0 ] && exit 1 + echo -n "Restarting xdg-desktop-portal service... " + systemctl --user restart xdg-desktop-portal; code3=$? && echo "SUCCESS" || echo "FAILED" + [ $code3 -ne 0 ] && exit 1 + echo -n "Restarting xdg-desktop-portal-hyprland service... " + systemctl --user restart xdg-desktop-portal-hyprland; code4=$? && echo "SUCCESS" || echo "FAILED" + [ $code4 -ne 0 ] && exit 1 + echo "Video services successfully restarted" +} + +wiki_update() { + old_pwd=$(pwd) + cd ~/vimwiki > /dev/null + git pull + cd $old_pwd > /dev/null +} + +# Functions +ls() { + command ls --group-directories-first --color=always -F1 "$@" | sort -f -k1 + s_check && (aplay ~/sound/sys/ls.wav > /dev/null 2>&1 &) +} + +# cd and ls after +cd() { + export SOUNDS_ENABLED=0 + ls "$@" + builtin cd "$@" + export SOUNDS_ENABLED=1 + s_check && (aplay ~/sound/sys/cd.wav > /dev/null 2>&1 &) +} +src() { + autoload -U zrecompile + rm -rf "$compfile"* + compinit -u -d "$compfile" + zrecompile -p "$compfile" + exec zsh +} + +mcd () { + mkdir -p $1 + cd $1 +} + +rc(){ + g++ "$1" -o run + ./run +} + +safe_rm() { + played_sound=false + for dir in "$@"; do + # Check if it's a file or directory + if [ -d "$dir" ] || [ -f "$dir" ]; then + # Get size of the directory or file + size=$(du -s "$dir" 2>/dev/null | awk '{print $1/1024}' | awk '{printf("%d\n", $1 + 0.5)}') + + # Count files (recursively if it's a directory) + files=$(find "$dir" | wc -l) + + check=false + is_file_or_dir=$([ -f "$dir" ] && echo 'file' || echo 'directory') + + # If there are many files, or the size is big, warn the user + if [ "$files" -gt 20 ]; then + echo "There's a lot of stuff in '$dir' ($files files) ." + check=true + fi + + if [ "$size" -gt 1024 ]; then + size_in_gb=$(echo "scale=2; $size / 1024" | bc -l) + echo "This $is_file_or_dir ('$dir') is kind of big ($size_in_gb GB)." + check=true + fi + + # Ask for confirmation only if necessary + if [ "$check" = true ]; then + echo "Are you sure you want to remove this $is_file_or_dir '$dir'? (y/n)" + read -r confirm + [ "$confirm" = "y" ] && (aplay ~/sound/sys/rm.wav > /dev/null 2>&1 &) + [ "$confirm" != "y" ] && (aplay ~/sound/sys/cd.wav > /dev/null 2>&1 &) + fi + + # Perform the removal if no checks or confirmation is "y" + if [ "$check" = false ] || [ "$confirm" = "y" ]; then + /run/current-system/sw/bin/rm -rfv "$dir" + [[ "$played_sound" -eq "0" ]] && (aplay ~/sound/sys/rm.wav > /dev/null 2>&1 &) + played_sound=1 + else + echo "Operation cancelled for '$dir'." + fi + else + echo "'$dir' does not exist or is not accessible." + fi + done +} + +nixswitch() { + s_check && (aplay ~/sound/sys/nixswitch-start.wav > /dev/null 2>&1 &) + builtin cd "$HOME/sysflakes" + nix flake update + + gen=$(readlink /nix/var/nix/profiles/system | sed 's/.*system-\([0-9]*\)-link/\1/') + gen=$((gen + 1)) + + git diff --quiet + if [ $? -eq 1 ]; then + git add . + git commit -m "Commit for generation $gen" + git push + fi + sudo nixos-rebuild switch --flake "$HOME/sysflakes#glasshouse" + if [ $? -eq 0 ]; then + s_check && (aplay ~/sound/sys/update.wav > /dev/null 2>&1 &) + else + s_check && (aplay ~/sound/sys/error.wav > /dev/null 2>&1 &) + fi + builtin cd $OLDPWD +} +journal() { + # journal for keeping track of stuff I do that isn't declared in my nix config + [ ! -f "$HOME/loose_ends" ] && touch "$HOME/loose_ends" + echo "$(date) - $1" >> "$HOME/loose_ends" +} +invoke() { nix run nixpkgs#"$@" } + + ''; + + initExtraBeforeCompInit = '' + source ~/sysflakes/glasshouse-desktop/home/zsh/zsh-style + ''; + initExtra = '' +if [ ! -e $HOME/.zsh_history ]; then + touch $HOME/.zsh_history + chmod 600 $HOME/.zsh_history +fi +HISTFILE=~/.zsh_history # The file where your history will be saved +HISTSIZE=10000 # The number of lines kept in memory +SAVEHIST=10000 # The number of lines kept in the history file +setopt APPEND_HISTORY # Append history to the history file (don't overwrite) +setopt INC_APPEND_HISTORY # Append to the history file incrementally +setopt SHARE_HISTORY # Share history between all zsh sessions +setopt CORRECT +setopt NO_NOMATCH +setopt LIST_PACKED +setopt ALWAYS_TO_END +setopt GLOB_COMPLETE +setopt COMPLETE_ALIASES +setopt COMPLETE_IN_WORD +setopt AUTO_CD +setopt AUTO_CONTINUE +setopt LONG_LIST_JOBS +setopt HIST_VERIFY +setopt SHARE_HISTORY +setopt HIST_IGNORE_SPACE +setopt HIST_SAVE_NO_DUPS +setopt HIST_IGNORE_ALL_DUPS +setopt EXTENDED_GLOB +setopt TRANSIENT_RPROMPT +setopt INTERACTIVE_COMMENTS + +autoload -U compinit # completion +autoload -U terminfo # terminfo keys +zmodload -i zsh/complist # menu completion +autoload -U promptinit # prompt + +autoload -U up-line-or-beginning-search; zle -N up-line-or-beginning-search +autoload -U down-line-or-beginning-search; zle -N down-line-or-beginning-search + + + +if [ "$TERM" = "linux" ] ; then + echo -en "\e]P0232323" +fi + +clear +source ~/sysflakes/glasshouse-desktop/home/zsh/zkbd +~/coding/scripts/splash.sh +eval "$(starship init zsh)" 2>/dev/null +s_check && (aplay ~/sound/sys/sh-source.wav > /dev/null 2>&1 &) + ''; + + # Options + + + }; +}