-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.bash
More file actions
executable file
·384 lines (334 loc) · 8.68 KB
/
setup.bash
File metadata and controls
executable file
·384 lines (334 loc) · 8.68 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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
#!/usr/bin/env bash
# see:
# - https://qiita.com/autotaker1984/items/bc758fcf368c1a167353#%E3%81%8A%E3%81%BE%E3%81%98%E3%81%AA%E3%81%84
# - https://memo.yammer.jp/posts/macos-defaults
set -euxo pipefail
#
# Defines
#
mail_address=junkjunctions@gmail.com
dotfiles_path=kaave/dotfiles.git
# brew apps
apps=(
bash
zsh
fish
# bash-completion@2
# java
# python3
# go
# ansible
carthage
# sbt
# haskell-stack
curl
mise
direnv
fswatch
gpg
gnu-sed
wget
openssl
# openssl, state: linked, install_options: force } # can't make link with brew's openssl
icdiff
terminal-notifier
tree
lsd
fd
bat
fzf
ripgrep
tmux
reattach-to-user-namespace
# git
# git-flow
git-delta
gh
daipeihust/tap/im-select # For VS Code's VIM extension
shellcheck
readline
# ghostscript
# nginx
fping
htop
rsync
unison
ag
bison
coreutils
icu4c
libtool
unixodbc
unzip
ctags
figlet
screenfetch
jq
jid
massren
trash
gnu-tar
highlight
re2c
# jpeg
# libxml2
# libxml2, state: linked, install_options: force }
# libxslt
# libiconv
# libpng
giflib
# webp
# glslang
vim
neovim/neovim/neovim
autoconf
automake
awscli
gcloud-cli
bazelisk
buildifier
ffmpeg # Note: To be placed at the end.
)
# brew cask apps
cask_apps=(
# Note: To be placed at the top.
xquartz
# browser, mailer, and apps for web services
google-chrome
google-chrome@canary
firefox
firefox@developer-edition
brave-browser
safari-technology-preview
arc
# development
another-redis-desktop-manager
# antigravity
apparency
chatgpt
claude
codex
codex-app
# cursor
db-browser-for-sqlite
diffmerge
docker
# dotnet
figma
gcloud-cli
ghostty
gitup
# jetbrains-toolbox
kubernetes-cli
ngrok
postman
# robo-3t
switchhosts
typora
vagrant
visual-studio-code
visual-studio-code@insiders
wireshark
# utility
anki
appcleaner
bettermouse
bettertouchtool
clipy
# diskwave
deepl
google-drive
google-japanese-ime
karabiner-elements
keka
notion
obsidian
raycast
shifty
teensy
todoist-app
iina
vlc
discord
xbar
xld
# QuickLook
qlcolorcode # support Syntax highlighting
qlprettypatch # support .patch
qlmarkdown # support .md
qlswift # support .swift
qlstephen # support some PlainText files
qlvideo # support some video files
quicklook-csv # support .csv
scriptql # support AppleScript
webpquicklook # support .webp
avifquicklook # support .avif
quicklookase # support .ase
# fonts
font-sf-pro # San Francisco Pro
font-sf-compact # San Francisco Compact
font-sf-mono # San Francisco Mono
font-sf-mono-for-powerline # San Francisco Mono
font-new-york # San Francisco New York
font-sf-arabic # San Francisco Arabic
font-genjyuugothic
font-hackgen
font-hackgen-nerd
font-udev-gothic
font-udev-gothic-nf
font-noto-mono
font-noto-mono-for-powerline
font-noto-sans
font-noto-serif
font-biz-udgothic
font-biz-udmincho
font-biz-udpgothic
font-biz-udpmincho
font-ubuntu
font-ubuntu-mono
font-ubuntu-mono-nerd-font
font-ubuntu-condensed
font-ubuntu-mono-derivative-powerline
font-ubuntu-nerd-font
font-roboto
font-roboto-slab
font-roboto-mono
font-roboto-mono-nerd-font
font-roboto-mono-for-powerline
font-montserrat
font-source-code-pro
font-source-code-pro-for-powerline
font-jetbrains-mono
font-jetbrains-mono-nerd-font
)
arranges() {
# Generate SSH key
# 公開鍵ファイルのパスを変数に定義
SSH_KEY_FILE="$HOME/.ssh/id_ed25519.pub"
# ファイルが存在しない (!) 場合にのみ実行
if [ ! -f "$SSH_KEY_FILE" ]; then
echo "🗣️ Creating an SSH key..."
ssh-keygen -t ed25519 -C $mail_address
pbcopy < "$SSH_KEY_FILE"
echo "🗣️ Copied pub key to clipboard, please add to GitHub \n"
open https://github.com/settings/keys
read -p "Press [Enter] key after add key..."
else
echo "ℹ️ SSH key already exists. Skipping generation."
fi
echo "🗣️ Kill low power mode"
sudo pmset -a lowpowermode 0
# echo "🗣️ Kill gatekipper"
# sudo spctl --master-disable
echo "🗣️ Installing xcode-stuff"
xcode-select --install
echo "🗣️ Installing Rosetta"
sudo softwareupdate --install-rosetta
cd ~
}
macos_configs() {
echo "🗣️ Setting some Mac settings..."
# stop automatic capitalization
defaults write NSGlobalDomain NSAutomaticCapitalizationEnabled -bool false
# show all filename extensions
defaults write NSGlobalDomain AppleShowAllExtensions -bool false
# saving to disk (not to iCloud) by default
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
# enabling full keyboard access for all controls (e.g. enable Tab in modal dialogs)
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
defaults write -g ApplePressAndHoldEnabled -bool false
# expanding the save panel by default
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true
# set dock tilesize
defaults write com.apple.dock tilesize -float 30
# set dock large-tilesize
defaults write com.apple.dock largesize -float 50
# minimize to application icon
defaults write com.apple.dock minimize-to-application -bool true
# enable Auto hide
defaults write com.apple.dock autohide -bool true
# hide Recents
defaults write com.apple.dock show-recents -bool false
# show status bar
defaults write com.apple.finder ShowStatusBar -bool true
# show path bar
defaults write com.apple.finder ShowPathBar -bool true
# keep folders on top when sorting by name
defaults write com.apple.finder _FXSortFoldersFirst -bool true
# stop extension change warning
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
# stop empty trash warning
defaults write com.apple.finder WarnOnEmptyTrash -bool true
# set default search target to current folder
defaults write com.apple.finder FXDefaultSearchScope -string SCcf
# set default view style to list view
defaults write com.apple.finder FXPreferredViewStyle -string Nlsv
# set sidebar icon size to large
defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 3
# set Key Repeat Speed
defaults write "Apple Global Domain" key=KeyRepeat -int 2
# set Initial Key Repeat Speed
defaults write "Apple Global Domain" key=KeyRepeat -int 15
# show folders first on desktop
defaults write com.apple.finder "_FXSortFoldersFirstOnDesktop" -bool "true"
# show hard drives on desktop
defaults write com.apple.finder "ShowHardDrivesOnDesktop" -bool "true"
# show external drives on desktop
defaults write com.apple.finder "ShowMountedServersOnDesktop" -bool "true"
# set keyboard repeat rate
defaults write NSGlobalDomain InitialKeyRepeat -int 15
defaults write NSGlobalDomain KeyRepeat -int 2
# enable three finger drag mode
defaults write com.apple.AppleMultitouchTrackpad "TrackpadThreeFingerDrag" -bool "true"
# don't write DS_Store files on Network stores
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
# don't write DS_Store files on USB devices
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
# don't offer new disks for TimeMachine
defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
# set date format
defaults write com.apple.menuextra.clock "DateFormat" -string "\"EEE d MMM HH:mm\""
echo "🗣️ Activate dock configs."
killall Finder
echo "🗣️ Activate finder configs."
killall Dock
echo "🗣️ Activate UI configs."
killall SystemUIServer
cd ~
}
homebrew() {
if ! type brew >/dev/null 2>&1; then
echo "🗣️ Installing homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
fi
eval "$(/opt/homebrew/bin/brew shellenv)"
Update homebrew recipes
echo "🗣️ Updating homebrew..."
brew update
echo "🗣️ Installing brew apps..."
brew install "${apps[@]}"
echo "🗣️ Installing brew cask apps..."
brew install --cask "${cask_apps[@]}"
echo "🗣️ Cleaning up brew"
brew cleanup
cd ~
}
user_setup() {
echo "🗣️ Copying dotfiles from Github"
git clone "git@github.com:$dotfiles_path" ~/dotfiles
echo "🗣️ Start some services"
cd ~
}
main() {
# eval "$(/opt/homebrew/bin/brew shellenv)"
arranges
macos_configs
homebrew
user_setup
# Memo
# curl -fsSL https://claude.ai/install.sh | bash
echo "🎉 Done!"
}
main