-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·154 lines (134 loc) · 2.4 KB
/
setup.sh
File metadata and controls
executable file
·154 lines (134 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/usr/bin/env zsh
BREW_APPS=(
zsh
git
gpg
bat
httpie
curlie
ncdu
starship
tealdeer
fzf
rust
rustfmt
rust-analyzer
go
stow
git-delta
difftastic
neovim
lazygit
ripgrep
fd
eza
zoxide
carapace
fnm
atuin
worktrunk
)
BREW_UTILS=(
tree-sitter-cli
)
STOW_FOLDERS=(
atuin
ghostty
git
nvim
starship
zsh
lazygit
)
install_homebrew() {
which -s brew
if [[ $? != 0 ]]; then
echo "Installing homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> $HOME/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
else
echo "Updating brew..."
brew upgrade
fi
brew analytics off
}
install_brew_apps() {
echo "installing brew apps..."
brew install ${BREW_APPS[@]}
# install ghostty
brew install --cask ghostty
}
install_brew_utils() {
echo "installing brew utils..."
brew install ${BREW_UTILS[@]}
}
install_standalone_apps() {
# install pnpm
corepack enable
# https://pnpm.io/installation#using-corepac
corepack prepare pnpm@latest --activate
}
backup () {
# nvim
mv ~/.config/nvim{,.bak} # nvim
# zsh
mv ~/.zshenv{.bak}
mv ~/.zshrc{.bak}
# git
mv ~/.gitconfig{.bak}
# Ghostty
mv ~/.config/ghostty{.bak}
}
configure_apps() {
echo "configuring apps..."
# zsh
mkdir -p $HOME/.config/zsh
# fzf
$(brew --prefix)/opt/fzf/install --key-bindings --completion --no-update-rc --no-bash --no-fish
}
stow_files() {
echo "stowing things..."
for folder in $STOW_FOLDERS
do
echo "stowing $folder"
stow --restow $folder
done
}
cleanup () {
if [[ -d ~/.nvm ]]; then
echo "Removing ~/.nvm..."
rm -rf ~/.nvm
else
echo "~/.nvm does not exist, skipping."
fi
}
run_all() {
echo ''
echo '==> Starting setup...'
install_homebrew
install_brew_apps
install_brew_utils
brew cleanup
backup
install_standalone_apps
stow_files
configure_apps
cleanup
echo ''
echo '==> All done!'
echo '==> Close and reopen your terminal to start using everything.'
echo '==> Happy hacking!'
}
if [ -n "$1" ]; then
# Check if the argument is a defined function
if declare -f "$1" > /dev/null; then
"$@" # Run the specific function (and pass any extra args)
else
echo "Error: Function '$1' not found."
exit 1
fi
else
# No arguments provided, run the full script
run_all
fi