From 1cbfd7ab33969c9ef4c79be2c8ac03077add3a20 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 8 Apr 2024 17:55:51 -0500 Subject: [PATCH] Removed phoenix script, added and refactored some scripts --- pull.sh | 21 +++++ sync-posthook.sh | 21 +++++ sync.sh | 13 +++ update.sh | 24 +---- upgrade.sh | 10 ++ user/bin/phoenix.nix | 212 ------------------------------------------- 6 files changed, 69 insertions(+), 232 deletions(-) create mode 100755 pull.sh create mode 100755 sync-posthook.sh create mode 100755 sync.sh create mode 100755 upgrade.sh delete mode 100644 user/bin/phoenix.nix diff --git a/pull.sh b/pull.sh new file mode 100755 index 0000000..de05b16 --- /dev/null +++ b/pull.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Automated script to update my non-primary systems +# to be in sync with upstream git repo while +# preserving local edits to dotfiles via git stash + +# Relax permissions temporarily so git can work +sudo ~/.dotfiles/soften.sh ~/.dotfiles; + +# Stash local edits, pull changes, and re-apply local edits +pushd ~/.dotfiles; +git stash; +git pull; +git stash apply; +popd; + +# Permissions for files that should be owned by root +sudo ~/.dotfiles/harden.sh ~/.dotfiles; + +# Synchronize system +~/.dotfiles/sync.sh; diff --git a/sync-posthook.sh b/sync-posthook.sh new file mode 100755 index 0000000..133d2e1 --- /dev/null +++ b/sync-posthook.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Post hooks to be called after a +# configuration sync + +# Mainly just to reload stylix + +# xmonad +ps -C xmobar &> /dev/null && echo "Killing old xmobar instances" && echo "Running killall xmobar" && killall xmobar &> /dev/null; # xmonad will restart xmobar +ps -C xmonad &> /dev/null && echo "Recompiling xmonad" && echo "Running xmonad --recompile && xmonad --restart" && xmonad --recompile && xmonad --restart; +ps -C .dunst-wrapped &> /dev/null && echo "Restarting dunst" && killall .dunst-wrapped && echo "Running dunst" && dunst &> /dev/null & disown; +ps -C xmonad &> /dev/null && echo "Reapplying background from stylix via feh" && echo "Running ~/.fehbg-stylix" && ~/.fehbg-stylix; + +# hyprland +ps -C Hyprland &> /dev/null && echo "Reloading hyprland" && hyprctl reload +ps -C .waybar-wrapped &> /dev/null && echo "Restarting waybar" && killall .waybar-wrapped && echo "Running waybar" && waybar &> /dev/null & disown; +ps -C fnott &> /dev/null && echo "Restarting fnott" && killall fnott && echo "Running fnott" && fnott &> /dev/null & disown; +ps -C Hyprland &> /dev/null && echo "Reapplying background from stylix via swaybg" && echo "Running ~/.swaybg-stylix" && ~/.swaybg-stylix; + +# emacs +ps -C emacs &> /dev/null && echo "Reloading emacs stylix theme" && echo "Running emacsclient --no-wait --eval \"(load-theme 'doom-stylix t nil)\"" && emacsclient --no-wait --eval "(load-theme 'doom-stylix t nil)"; diff --git a/sync.sh b/sync.sh new file mode 100755 index 0000000..c984fd9 --- /dev/null +++ b/sync.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Script to synchronize system state +# with configuration files for nixos system +# and home-manager + +# Rebuild system +sudo nixos-rebuild switch --flake ~/.dotfiles#system; + +# Install and build home-manager configuration +home-manager switch --flake ~/.dotfiles#user; + +~/.dotfiles/sync-posthook.sh diff --git a/update.sh b/update.sh index 8c890b6..129701b 100755 --- a/update.sh +++ b/update.sh @@ -1,23 +1,7 @@ #!/bin/sh -# Automated script to update my non-primary systems -# to be in sync with upstream git repo while -# preserving local edits to dotfiles via git stash - -# Relax permissions temporarily so git can work -sudo ~/.dotfiles/soften.sh ~/.dotfiles; - -# Stash local edits, pull changes, and re-apply local edits -git stash -git pull -git stash apply - -# Permissions for files that should be owned by root -sudo ~/.dotfiles/harden.sh ~/.dotfiles; - -# Rebuild system -sudo nixos-rebuild switch --flake ~/.dotfiles#system; - -# Install and build home-manager configuration -home-manager --extra-experimental-features nix-command --extra-experimental-features flakes -- switch --flake ~/.dotfiles#user; +# Script to update my flake without +# synchronizing configuration +# Update flake +sudo nix flake update ~/.dotfiles; diff --git a/upgrade.sh b/upgrade.sh new file mode 100755 index 0000000..005faff --- /dev/null +++ b/upgrade.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +# Script to update system and sync +# Does not pull changes from git + +# Update flake +~/.dotfiles/update.sh; + +# Synchronize system +~/.dotfiles/sync.sh; diff --git a/user/bin/phoenix.nix b/user/bin/phoenix.nix deleted file mode 100644 index 4814659..0000000 --- a/user/bin/phoenix.nix +++ /dev/null @@ -1,212 +0,0 @@ -{ pkgs, userSettings, ... }: - -let - # This sets up my "phoenix" script with my configuration paths - # =phoenix= is just my wrapper script for easier access to nix/nixos commands - myPhoenixScript = '' - RED='\033[0;31m' - GREEN='\033[0;32m' - ORANGE='\033[0;33m' - BLUE='\033[0;34m' - PURPLE='\033[0;35m' - CYAN='\033[0;36m' - NC='\033[0m' - FRAMES="/ | \\ -" - function non_blocking_wait { - PID=$1 - if [ ! -d "/proc/$PID" ]; then - wait $PID - CODE=$? - else - CODE=127 - fi - return $CODE - } - function animate_msg { - pid=$!; - while ps -p $pid > /dev/null; - do - for frame in $FRAMES; - do - printf "\r$frame $1"; - sleep 0.2; - done - non_blocking_wait $pid; - status=$?; - done - if [ $status = 0 ]; then - printf "\r$GREEN✓$NC $1$GREEN [Success!]$NC"; - else - printf "\r$RED×$NC $1$RED [Failed!]$NC"; - fi - printf "\n" - } - function sync_system { - echo -e "$ORANGE### Syncing system configuration ###$NC" - pushd ''+userSettings.dotfilesDir+'' &> /dev/null; - if [ "$1" = "verbose" ]; then - echo "Syncing system configuration (stack traces will be shown):" - sudo systemd-run --no-ask-password --uid=0 --system --scope -p MemoryLimit=16000M -p CPUQuota=60% nixos-rebuild switch --flake .#system --show-trace; - else - sudo bash -c ' - RED="\033[0;31m"; - GREEN="\033[0;32m"; - NC="\033[0m" - FRAMES="/ | \\ -"; - systemd-run --no-ask-password --uid=0 --system --scope -p MemoryLimit=16000M -p CPUQuota=60% nixos-rebuild switch --flake .#system &> /dev/null & - pid=$!; - while ps -p $pid > /dev/null; - do - for frame in $FRAMES; - do - printf "\r$frame Syncing system configuration..."; - sleep 0.2; - done - if [ ! -d "/proc/$pid" ]; then - wait $pid - status=$? - else - status=127 - fi - done - if [ $status = 0 ]; then - printf "\r$GREEN✓$NC Syncing system configuration...$GREEN [Success!]$NC"; - else - printf "\r$RED×$NC Syncing system configuration...$RED [Failed!]$NC"; - fi - printf "\n"' - fi - popd &> /dev/null; - echo -e "$ORANGE### System configuration sync finished ###$NC" - } - function sync_user { - echo -e "$BLUE### Syncing user configuration ###$NC" - pushd ''+userSettings.dotfilesDir+'' &> /dev/null; - if [ "$1" = "verbose" ]; then - echo "Syncing user configuration (stack traces will be shown):" - echo "Running home-manager switch --flake .#user --show-trace" - systemd-run --no-ask-password --uid=1000 --user --scope -p MemoryLimit=16000M -p CPUQuota=60% home-manager switch --flake .#user --show-trace; - which xmobar &> /dev/null && echo "Killing old xmobar instances" && echo "Running killall xmobar" && killall xmobar &> /dev/null; - which xmonad &> /dev/null && echo "Recompiling xmonad" && echo "Running xmonad --recompile && xmonad --restart" && xmonad --recompile && xmonad --restart; - which emacsclient &> /dev/null && echo "Reloading emacs stylix theme" && echo "Running emacsclient --no-wait --eval \"(load-theme 'doom-stylix t nil)\"" && emacsclient --no-wait --eval "(load-theme 'doom-stylix t nil)"; - [ -f ~/.fehbg-stylix ] &> /dev/null && echo "Reapplying background from stylix via feh" && echo "Running ~/.fehbg-stylix" && ~/.fehbg-stylix; - [ -f ~/.swaybg-stylix ] &> /dev/null && echo "Reapplying background from stylix via swaybg" && echo "Running ~/.swaybg-stylix" && ~/.swaybg-stylix; - else - systemd-run --no-ask-password --uid=1000 --user --scope -p MemoryLimit=16000M -p CPUQuota=60% home-manager switch --flake .#user &> /dev/null & - animate_msg "Syncing user configuration..." - which xmobar &> /dev/null && killall xmobar &> /dev/null & - which xmonad &> /dev/null && xmonad --recompile &> /dev/null & - animate_msg "Refreshing xmonad..." - which emacsclient &> /dev/null && emacsclient --no-wait --eval "(load-theme 'doom-stylix t nil)" &> /dev/null & - animate_msg "Reloading stylix theme..." - [ -f ~/.fehbg-stylix ] &> /dev/null && ~/.fehbg-stylix &> /dev/null & - [ -f ~/.swaybg-stylix ] &> /dev/null && ~/.swaybg-stylix &> /dev/null & - fi - popd &> /dev/null; - echo -e "$BLUE### User configuration sync finished ###$NC" - } - function update_flake { - echo -e "$CYAN### Updating flake and other package managers$NC"; - pushd ''+userSettings.dotfilesDir+'' &> /dev/null; - if [ "$1" = "verbose" ]; then - echo "Updating flake inputs"; - echo "Running nix flake update"; - nix flake update; - if [ -d ~/.emacs.d/eaf/app/browser ] &> /dev/null; - then - echo "Updating npm dependencies for eaf" - echo "Navigating to ~/.emacs.d/eaf/app/browser" - pushd ~/.emacs.d/eaf/app/browser; - echo "Running rm package*.json"; - rm package*.json; - echo "Running npm install darkreader @mozilla/readability"; - npm install darkreader @mozilla/readability; - echo "Running rm package*.json"; - rm package*.json; - echo "Returning to ''+userSettings.dotfilesDir+''" - popd &> /dev/null; - fi - echo "" - echo "Updating flatpaks"; - echo "Running sudo flatpak update -y"; - sudo flatpak update -y; - else - nix flake update &> /dev/null & - animate_msg "Updating flake inputs..." - if [ -d ~/.emacs.d/eaf/app/browser ] &> /dev/null; - then - pushd ~/.emacs.d/eaf/app/browser &> /dev/null; - rm package*.json &> /dev/null; - npm install darkreader @mozilla/readability &> /dev/null & - animate_msg "Updating npm dependencies for eaf..."; - rm package*.json &> /dev/null; - popd; - fi - echo "Reqesting authentication for flatpak update.." - sudo bash -c ' - RED="\033[0;31m"; - GREEN="\033[0;32m"; - NC="\033[0m" - FRAMES="/ | \\ -"; - flatpak update -y &> /dev/null & - pid=$!; - while ps -p $pid > /dev/null; - do - for frame in $FRAMES; - do - printf "\r$frame Updating flatpaks..."; - sleep 0.2; - done - if [ ! -d "/proc/$pid" ]; then - wait $pid - status=$? - else - status=127 - fi - done - if [ $status = 0 ]; then - printf "\r$GREEN✓$NC Updating flatpaks...$GREEN [Success!]$NC"; - else - printf "\r$RED×$NC Updating flatpaks...$RED [Failed!]$NC"; - fi - printf "\n"' - fi - popd &> /dev/null; - echo -e "$CYAN### Flake and other updates finished ###$NC"; - echo -e "Please run$GREEN git$NC diff HEAD flake.lock inside ''+userSettings.dotfilesDir+(" "+'' to see flake input changes";'')+ - ''} - if [ "$1" = "sync" ]; then - if [ "$#" = 1 ]; then - sync_system; - sync_user; - elif [ "$2" = "user" ]; then - sync_user; - elif [ "$2" = "system" ]; then - sync_system; - else - echo "Please pass 'system' or 'user' if supplying a second argument" - fi - elif [ "$1" = "update" ]; then - if [ "$#" -gt 1 ]; then - echo "Warning: The 'update' command has no subcommands (no $2 subcommand)" - fi - update_flake; - elif [ "$1" = "gc" ]; then - if [ "$2" = "full" ]; then - sudo nix-collect-garbage --delete-old; - nix-collect-garbage --delete-old; - elif [ "$2" ]; then - sudo nix-collect-garbage --delete-older-than $2; - nix-collect-garbage --delete-older-than $2; - else - sudo nix-collect-garbage --delete-older-than 30d; - nix-collect-garbage --delete-older-than 30d; - fi - fi - ''; -in -{ - home.packages = [ - (pkgs.writeScriptBin "phoenix" myPhoenixScript) - ]; -}