Користувальницькькі налаштування

Налаштування сайту


software:os:mac:install

Це стара версія документу!


How to setup Mac

Configure username

Go to System Settings → Users and Groups → click with two fingers on your user, select Advanced settings.

here check User name - that is real login. If you don't like, it's better to create new user

Configure Apple user

Very important and complicated. Apple store is unavailable without it

Open System Settings, click at the top on user. Enter login and password of your Apple account. After that enter 2FA code from SMS.

And after that Apple will require you to enter password from one of your old computers! Be sure to have old computer nearby if you can! Do not wipe it before you setup Apple user on new computer!

(Optional) Configure Safari

Configure profiles

  1. Open Safari
  2. Menu SafariCreate Profile..
  3. Click Start Using Profiles

Now configure at least 2 profiles: Work, Personal

Install Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

(Optional) Install programs from Apple Store

First install CLI tool mas:

brew install mas

Now you can search for programs with

mas search nicetool

Install programs with

mas install <app-id> ...

list of useful programs and app-ids:

Programapp-id
Bitwarden1111111

Create file Brewfile:

Brewfile
# Main, always install
brew "mas"
brew "tree"
brew "bash"
brew "bash-completion@2"
brew "bat"
brew "coreutils"
brew "direnv"
brew "z"
brew "jq"
brew "yq"
brew "lynx"
brew "midnight-commander"
brew "htop"
brew "p7zip"
brew "pipenv"
brew "pipx"
brew "pkgconf"
brew "pv"
brew "pwgen"
brew "sf-pwgen"
brew "speedtest-cli"
brew "telnet"
brew "wget"
brew "ykman"
brew "coreutils"
brew "neofetch"
brew "eza"
# Next GUI programs
cask "iterm2"
cask "bitwarden"
cask "firefox"
cask "font-fira-code"
cask "font-fira-mono"
cask "font-jetbrains-mono-nerd-font"
cask "iterm2"
cask "keepassxc"
cask "libreoffice"
cask "obsidian"
cask "spotify"
cask "syncthing-app"
cask "textmate"
cask "viber"
cask "vlc"
cask "zoom"
# And finally install from Apple Store
mas "Time out", id: 402592703

and install programs from this file with

brew bundle

Install Oh-my-zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Install Powerlevel10k (Zsh theme)

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

After that open ~/.zshrc and change theme (comment existing):

ZSH_THEME="powerlevel10k/powerlevel10k"

now exit terminal and open it again (should be ZSH!). Now Powerlevel 10k configurator script must start automatically. Answers:

Install Meslo Nerd Font? Yes
restart iterm2
Does this look like a diamond (rotated square)? Yes (check if it is!)
Does this look like lock? Yes
Does this look like an upwards arrow? Yes
...<continue while it's obvious>
Prompt style: Rainbow
Character Set: Unicode
Show current time? 24-hour format
Prompt separators: Angled (or anything you like)
Prompt Heads: Sharp (or anything you like)
Prompt Tails: Flat
Prompt Height: 2 lines
Prompt connection: Dotted
Prompt Frame: Left
Connection and Frame color: Light
Prompt spacing: Sparse
Icons: Many icons
Prompt Flow: Concise
Enable Transient Prompt? Yes
Instant Prompt Mode: Verbose
Save: Yes

Install useful ZSH plugins

Let's add plugins zsh-autosuggestions, zsh-syntax-highlighting:

brew install zsh-autosuggestions zsh-syntax-highlighting
mkdir -pv ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/{zsh-autosuggestions,zsh-syntax-highlighting}
ln -s $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
ln -s $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh

Improve .zshrc

To configure Brewfile, add to beginning of .zshrc:

# --- macOS brew ---
if [[ "$(uname)" == "Darwin" ]]; then
    # Improve PATH, MANPATH, INFOPATH
    if [[ -x /opt/homebrew/bin/brew ]]; then
        eval "$(/opt/homebrew/bin/brew shellenv)"
    elif [[ -x /usr/local/bin/brew ]]; then
        eval "$(/usr/local/bin/brew shellenv)"
    fi
fi

After “#export PATH” line add next block:

typeset -U path

path=(
  $HOME/.local/bin
  $HOME/bin
  $path
)

Now scroll to “plugins=” and change to:

plugins=(
  git
  terraform
  direnv
  z
  zsh-autosuggestions
  zsh-syntax-highlighting
)

remove git and terraform for personal computer

Configure iTerm2

Create new profile by duplicating default one.

In Text tab:

Font: JetBrainsMono Nerd Font Mono
Boldness: Medium (or play yourself)
Size: 15-16

Consider setting “Use ligatures”

Aliases

Add next files to ~/.oh-my-zsh/custom directory:

my-aliases-common.zsh
### Common aliases
alias dir="ls -a"
alias l="ls -la"
if (( $+commands[eza] )); then
  alias ls2='eza --group-directories-first --icons'
  alias dir2='ls2 -a'
  alias la2='ls2 -a'
  alias ll2='ls2 -l --group'
  alias tree2='ls2 --tree'
fi
alias cls="clear"
alias cw="clear; w"
alias x="exit"
alias tree="\tree -C --dirsfirst"
alias bc="bc -ql"
alias tt=traceroute
alias ports="sudo netstat -luntp"
alias myip="curl -s icanhazip.com"
alias weather='curl wttr.in/kyiv'
alias batcat="bat"
alias h='fc -li'
alias hg='fc -li | grep'
alias va='source ./venv/bin/activate'
alias ve='python3 -m venv ./venv'
alias list_instances="aws ec2 describe-instances --no-cli-pager --color off --filters Name=tag-key,Values=Name Name=instance-state-name,Values=running --query 'Reservations[*].Instances[*].{Instance_Id:InstanceId,Type:InstanceType,Public_IP:PublicIpAddress,Private_IP:PrivateIpAddress,SSH_Key:KeyName,Name:Tags[?Key==\`Name\`]|[0].Value}' --output table"
 
# Find top 5 big files
alias findbig="find . -type f -exec ls -s {} \; | sort -n -r | head -5"
 
# To clear all the history and screen
alias hcl='history -c; clear'
 
# Make basic commands verbose
alias cp="cp -v"
alias rm="rm -v"
alias mv="mv -v"
 
# To navigate to the different directories
alias ..='cd ..'
alias ...='cd ../..'
 
# Create and change to a new directory
mcd() {
    if [[ -z "$1" ]]; then
        echo "Usage: mcd <directory>"
        return 1
    fi
    mkdir -p "$1" && cd "$1"
}
 
# display currently mounted file systems nicely
showmounted() { (echo "DEVICE PATH TYPE FLAGS" && mount | awk '$2=$4="";1') | column -t; }
 
# Local aliases
alias gfo="git fetch origin && git status"
alias zimdate="LC_TIME=en_US.UTF-8 date '+Week %V%n%A, %d.%m.%Y'"
 
if (( $+commands[apg] )); then
    alias apg1="apg -a 0 -n 1 -m 8 -x 10 -M NCL -E I1l0O"
    alias apg2="apg -a 0 -n 1 -m 14 -x 16 -M NCL -E I1l0O"
    alias apg3="apg -a 0 -n 1 -m 14 -x 16 -M NCLS -E I1l0O"
fi
 
#########################################################################################
### OS-specific
case "$(uname)" in
  Darwin)
    # Configuration if Brew installed
    () {
        local bp=""
        [[ -x /opt/homebrew/bin/brew ]] && bp="/opt/homebrew"
        [[ -x /usr/local/bin/brew ]] && bp="/usr/local"
 
        if [[ -n "$bp" ]]; then
            export HOMEBREW_AUTO_UPDATE_SECS=86400
            export HOMEBREW_NO_ANALYTICS=1
 
            if (( $+commands[gls] )); then
                # Using local variable for aliases
                alias ls="$bp/bin/gls --color=never -F --group-directories-first"
                alias date="$bp/bin/gdate"
                alias findbig="gfind . -type f -printf '%s %p\n' | sort -rn | head -5"
            else
                [[ -t 1 ]] && echo "\e[33mNotice:\e[0m Coreutils not found. Run: brew install coreutils"
            fi
        fi
    }
 
    alias openfinder='open -a Finder $1'
    alias flushdns='sudo dscacheutil -flushcache'
    alias cleanup="find . -type f -name '*.DS_Store' -ls -delete" # This alias will find and delete all ".DS_Store" files in the current directory and all subdirectories.
    alias battery="pmset -g batt | grep -Eo '[0-9]+%' | sed 's/%//'"
    alias play_alert='afplay ~/Sync/music/effects/Train\ Fx\ 2.wav'
    alias update='~/scripts/update_macos.sh'
    alias showfiles='defaults write com.apple.finder AppleShowAllFiles YES && killall Finder'
    alias hidefiles='defaults write com.apple.finder AppleShowAllFiles NO && killall Finder'
    alias localip='ipconfig getifaddr en0'
    ;;
  Linux)
    alias ls='/bin/ls --color=never -F --group-directories-first'
    alias bat='/usr/bin/batcat'
    alias monitor_turn_off='xset dpms force off'
    alias play_alert='aplay ~/Sync/music/effects/Train\ Fx\ 2.wav'
    alias psc='ps xawf -eo pid,user,cgroup,args'
    alias pss='systemd-cgls'
    alias update='~/scripts/update.sh'
    alias update_download_only='sudo apt update && sudo apt upgrade --download-only --assume-yes'
    alias update_small='sudo apt upgrade --assume-yes'
    alias pbcopy="$HOME/scripts/stub_pbcopy.sh"
    alias findbig="find . -type f -exec ls -s {} \; | sort -n -r | head -5"
    ;;
esac
 
# Pictures (ZSH suffixes)
if [[ "$TERM_PROGRAM" == "WezTerm" ]]; then
    alias icat="wezterm imgcat"
elif [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
    alias icat="imgcat"
elif [[ "$TERM" == *"konsole"* ]]; then
    alias icat="img2sixel"
else
    alias icat="open"
fi
 
alias -s png="icat"
alias -s jpg="icat"
alias -s jpeg="icat"
alias -s gif="icat"
alias -s bmp="icat"
alias -s webp="icat"
alias -s ico="icat"
# preview all images in current directory
icatdir() {
  for img in *.{png,jpg,jpeg,gif,webp,bmp}(N); do
    echo "--- $img ---"
    icat "$img"
  done
}
software/os/mac/install.1774576274.txt.gz · Востаннє змінено: 2026/03/27 03:51 повз charon