Skip to content

Documentation and code useful for setting up your macos system for the first time.

License

Notifications You must be signed in to change notification settings

jorgearma1982/macos-setup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 

Repository files navigation

MacOS Setup

Introducción

En esta guía describo las configuraciones del sistema macOS sobre la arquitectura M1 para adaptarlo a un ambiente de trabajo en donde pueda realizar tareas relacionadas a la administración de este tipo de sistemas:

  • Laptop de trabajo
  • Servidores Linux
  • Recursos Cloud
  • Clusters Kubernetes
  • Desarrollo de software

Intentare usar en su mayoría software libre que estoy acostumbrado a usar en otros sistemas GNU/Linux como Kubuntu Desktop que normalmente usaba en arquitecturas x86.

Objetivos

Para dejar a punto la máquina, realizaremos la configuración de los siguientes componentes:

  • Actualizaciones del sistema
  • Cifrar los datos del disco
  • Entornos de desarrollo
  • Gestores de paquetes
  • Editor de textos
  • Emulador de Terminal
  • Entorno del shell
  • Herramientas de gestión Cloud
  • Gestión de base de datos
  • Desarrollo de software
  • Cliente VPN
  • Herramientas de red
  • Mouse externo

Actualizar sistema

Primero que nada vamos a actualizar el sistema, en este caso System Settings, buscamos Software Updates, y en la sección de Automatic Updates configuramos de la siguiente forma:

  • Check for updates: Enabled
  • Download new updates when available: Enabled
  • Install macOS updates: Enabled
  • Install application updates from the App Store: Disabled
  • Install Security Responses and system files: Enabled

En la sección de abajo podemos listar las actualizaciones pendientes, en caso de querer aplicarlas hacemos clic en Upgrade Now y esperamos a que termine el proceso, al final se recomienda reiniciar.

Cifrar el disco

En el trabajo me dieron una laptop MacBook Pro, regularmente salgo con ella, para prevenir perdida o robo de información, vamos a cifrar los datos del disco de forma automática, para esto vamos a System Settings, luego a Privacy & Security, en la sección de Security vamos a la opción de FileVault, con esta herramienta aseguraremos nuestros datos, por defecto viene desactivado, hacemos clic en Turn On... para iniciar el proceso.

Al principio nos saldrá un mensaje para elegir el método para desbloquear el disco y resetear la contraseña en caso de olvidarla, podemos usar el método basado en tu cuenta iCloud o a través de una recovery key, la cual no de tu cuenta iCloud.

Una vez seleccionado el método, inicia el proceso de cifrado, el cual tarda un poco dependiendo de los datos actuales.

Herramientas de entorno de desarrollo XCode

Instalamos el entorno de desarrollo de apps de apple XCode:

xcode-select --install

En una máquina nueva este componente no vienen instalado, por lo que aparece una ventana para seleccionar la instalación, se aceptan las condiciones y nos vamos a tomar un café porque va a tomar un buen rato.

Al terminar verificamos la instalación de xcode:

xcode-select -p

Gestor de paquetes Brew

Para complementar las herramientas que el sistema macOS incluye en su base de unix, instalaremos brew como herramienta de gestión de paquetes para macOS, esta es una herramienta del tipo apt o yum en distribuciones Linux.

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

Configuramos el perfil del shell para usar brew:

echo >> /Users/jmedina/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/jmedina/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

Configuramos los repositorios de paquetes:

brew tap homebrew/cask

Mostrando taps:

$ brew tap
homebrew/cask
homebrew/core

Instalando los paquetes git y wget para descargar software desde el Internet:

brew install git wget

Actualizando paquetes:

brew update && brew upgrade

Con el siguiente comando realizamos una limpieza de paquetes viejos:

brew cleanup

Instalando comandos GNU

No me gusta usar el comando tar que trae por defecto macos, por lo que instalo la versión de GNU de tar que estoy acostumbrado a usar en Linux.

brew install gnu-tar

Edito la configuración del shell para agregar el path:

export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"

Instalamos paquete de coreutils:

brew install coreutils

Editamos el archivo de configuración de zsh, al final agregamos el PATH personalizado:

# Custom PATH
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"

Instalamos la siguiente lista de paquetes para usar en el día a día para descargar, construir y asegurar software:

brew install curl make autoconf mcrypt gpg2 gettext readline openssl unzip

Al final del archivo .zshrc agregamos las siguientes líneas para modificar el PATH:

# Custom PATH
export PATH="/opt/homebrew/opt/curl/bin:$PATH"
export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"

Recargamos configuración:

source $HOME/.zshrc

Instalamos tree:

brew install tree

Instalamos watch:

brew install watch

Editor de textos vim

Instalamos el editor de textos vim:

brew install vim

Actualizamos la configuración del editor para realizar las personalizaciones locales:

vim .vimrc

Agregamos el contenido inicial:

" .vimrc

" Configuración general
set title " Muestra el nombre del archivo en la ventana de la terminal
set number " Muestra los números de las líneas
set nowrap " No dividir la línea si es muy larga
set cursorline " Resalta la línea actual
set colorcolumn=120 " Muestra la columna límite a 120 caracteres
set nocompatible " Desactiva modo compatible
filetype plugin on " Habilita plugin para tipos de archivos
syntax on " Activa resaltado de sintaxis

" Indentación a 2 espacios
set tabstop=2
set shiftwidth=2
set softtabstop=2
set shiftround
set expandtab " Insertar espacios en lugar de <Tab>s
set imrmguicolors " Activa true colors en la terminal

Configuramos el corrector ortográfico spell, primero creamos directorio para spell check:

mkdir -p ~/.vim/spell
cd ~/.vim/spell

Descargaremos los siguientes archivos:

wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.latin1.spl
wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.latin1.sug
wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.utf-8.spl
wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.utf-8.sug

Creamos los archivos para los diccionarios locales:

touch ~/.vim/spell/es.utf-8.add
touch ~/.vim/spell/en.utf-8.add

Al final del archivo .vimrc agregamos las siguientes líneas:

" Configuracion spell check
"set spell
set nospell
setlocal spell spelllang=es,en " Corregir palabras usando diccionarios en español

Los atajos de teclado para manejar el spelling:

  • ]s – Siguiente falta ortográfica
  • [s – Anterior falta ortográfica
  • z= – Mostrar sugerencias para una palabra incorrecta.
  • zg – Añadir una palabra al diccionario.
  • zug – Deshacer la adición de una palabra al diccionario.
  • zw – Eliminar una palabra del diccionario.

Ahora instalamos la herramienta para gestión de plugins: vim-plug:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Editamos la configuración de vim para añadir la Configuración de Plugins:

"
" PLUGINS: https://github.com/junegunn/vim-plug
"

" Specify a directory for plugins
call plug#begin('~/.vim/plugged')
" fzf
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
" Challenger-deep-theme: https://github.com/junegunn/vim-plug
Plug 'challenger-deep-theme/vim', { 'as': 'challenger-deep' }
" NERDTree
Plug 'preservim/nerdtree'
" vimwiki
Plug 'vimwiki/vimwiki'
" Initialize plugin system
call plug#end()

"
" THEME:
"
colorscheme challenger_deep

Guardar vim, salir, y volver a entrar, entonces:

:PlugInstall

Emulador de terminal Kitty

Instalamos el paquete Kitty:

brew install kitty

Descargamos los temas de kitty:

git clone --depth 1 https://github.com/dexpota/kitty-themes.git ~/.config/kitty/kitty-themes

Configuramos el tema de Dracula:

cd ~/.config/kitty
ln -s ./kitty-themes/themes/Dracula.conf ~/.config/kitty/theme.conf

El shell zsh con oh-my-zsh

Instalamos el shell zsh:

brew install zsh

Instalamos oh my zsh:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Cambiamos el shell default:

chsh -s $(which zsh)

Configuración de plugins integrados en zsh

Editamos el archivo de configuración de zsh:

vim .zshrc

Para habilitar los diferentes plugins cambiamos:

plugins=(git)

por:

plugins=(cp colored-man-pages colorize pip python brew git vi-mode)

Guardamos y re cargamos configuración:

source .zshrc

Configuración del tema integrado en zsh

Editamos el archivo de configuración de zsh:

vim .zshrc

Para cambiar el tema cambiamos:

ZSH_THEME="robbyrussell"

Por:

ZSH_THEME="agnoster"

Guardamos y re cargamos configuración:

source .zshrc

Lista de temas: https://github.com/ohmyzsh/ohmyzsh/wiki/themes.

Configurando tema Powerlevel19k con fuente Powerline

Instalamos la fuente Powerline:

cd data/vcs/jorge.medina
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
cd

Instalamos el tema powerlevel9k:

git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

Editamos el archivo de configuración de zsh:

vim .zshrc

Agregamos la lista de sources:

ZSH_THEME="powerlevel9k/powerlevel9k"
# Powerlevel9k settings
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(user host dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status battery time)
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_OS_ICON_BACKGROUND="white"
POWERLEVEL9K_OS_ICON_FOREGROUND="blue"
POWERLEVEL9K_TIME_FORMAT="%D{%H:%M:%S | %d.%m.%y}"

Otras opciones:

POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=""
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=""

Guardamos y re cargamos configuración:

source .zshrc

Proyecto: https://github.com/Powerlevel9k/powerlevel9k/wiki/Install-Instructions#option-2-install-for-oh-my-zsh

Configuración del plugin syntax highlighting en zsh

Instalar resaltado de sintaxis en zsh:

brew install zsh-syntax-highlighting

Editamos el archivo de configuración de zsh:

vim .zshrc

Agregar a la lista de sources:

source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

Guardamos y re cargamos configuración:

source .zshrc

Proyecto: https://mimosa-pudica.net/zsh-incremental.html

Configuración del plugin auto suggestions en zsh

Instalamos auto sugerencias en zsh:

brew install zsh-autosuggestions

Editamos el archivo de configuración de zsh:

vim .zshrc

Agregar a la lista de sources:

source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh

Guardamos y re cargamos configuración:

source .zshrc

Configuración del plugin auto completar incr en zsh

Instalamos plugin incr:

cd $HOME/.oh-my-zsh/custom/plugins
mkdir incr
cd incr
wget http://mimosa-pudica.net/src/incr-0.2.zsh
cd

Editamos el archivo de configuración de zsh:

vim .zshrc

Después de la linea:

source $ZSH/oh-my-zsh.sh

Insertar:

source $ZSH/custom/plugins/incr/incr*.zsh

Guardamos y re cargamos configuración:

source .zshrc

Proyecto: https://mimosa-pudica.net/zsh-incremental.html

Herramientas de búsqueda en linea de comandos

Instalamos fzf:

brew install fzf

Habilitamos la integración para zsh, editamos configuración y agregamos::

# zsh
source <(fzf --zsh)

Usar fzf en vim:

vim .vimrc

Al final agregar:

set rtp+=/opt/homebrew/opt/fzf

Instalamos ack para búsquedas:

brew install ack

Instalamos the silver searcher:

brew install the_silver_searcher

Herramientas de gestión Cloud

Instalamos google-cloud-sdk para gestionar recursos en Google Cloud::

brew install google-cloud-sdk

Editamos el archivo de configuración de zsh y agregamos la siguiente línea::

source /opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc

Instalamos el plugin para autenticarse con google cloud para clusters GKE:

gcloud components install gke-gcloud-auth-plugin

Instalamos las herramientas tfenv y terragrunt para gestionar la infraestructura cloud cómo código:

brew install tfenv terragrunt

Instalamos las herramientas tflint y terraform-docs para mejorar la calidad del código de terraform:

brew install tflint terraform-docs

Instalamos template de terraform para m1:

brew install kreuzwerker/taps/m1-terraform-provider-helper
m1-terraform-provider-helper install hashicorp/template -v v2.2.0

Instalamos la herramienta kubectl para gestionar clusters de contenedores Kubernetes:

brew install kubectl

Instalamos ansible para automatizar las configuraciones de servidores Linux:

brew install ansible

Instalamos generador de contraseñas en cli:

brew install pwgen

Instalamos KeepassXC para gestionar nuestras contraseñas de forma local:

brew install --cask keepassxc

Instalamos helm para instalar aplicaciones y servicios en kubernetes de forma simple:

brew install helm

Agregamos los repositorios de los charts que usaremos:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add jetstack https://charts.jetstack.io
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo add datadog https://helm.datadoghq.com

Actualizamos los repositorios:

helm repo update

Herramientas de Bases de datos

Instalamos el cliente de bases de datos postgreSQL:

brew install postgresql

Ahora instalamos dbeaver, una herramienta para gestión de datos compatible con postgres:

brew install dbeaver-community

Desarrollo

En esta sección instalamos algunas herramientas que se usan en el desarrollo de software, en especifico para la gestión de paquetes para elixir, python y nodejs:

brew install asdf python npm yarn

Instalamos yamllint e yq:

brew install yamllint yq

Instalamos cookiecutter para generar plantillas del boilerplate de proyectos de software:

brew install cookiecutter

Instalamos el framework pre-commit:

pip3 install pre-commit

Instalamos colima y docker para construir y correr contenedores en local sin tener que pagar por licencias de Docker Desktop:

brew install colima docker

Ahora instalamos kind para crear clusters kubernetes en local:

brew install kind 

Instalamos k6 para realizar pruebas de carga en aplicaciones web:

brew install k6

Configurando la VPN

Para conectarse de forma segura a los recursos cloud regularmente se usa alguna VPN por ejemplo basadas en OpenVPN, para conectarnos instalamos el software Tunnelblick, el cual es un cliente de OpenVPN para macOS.

Con este software es fácil conectarse a más de una VPN sin afectar nuestra navegación.

Herramientas de Redes

En esta sección listamos la instalación de algunas otras herramientas de red.

Empezamos con ipcalc por la calculadora de direcciones IP:

brew install ipcalc

Luego instalamos mtr la herramienta para generar trazado de tráfico:

brew install mtr

Seguimos con la instalación de nmap, una herramienta para escaneo de red:

brew install nmap

Configurando mouse trackball Kensington

Cuando trabajo con la macbook en casa, prefiero usar un mouse externo, en mi caso particular, prefiero usar la mac con la mano izquierda, así que necesito personalizar la configuración del Kensington Expert Mouse, el cual es un mouse de tipo trackball con 4 botones y scroll.

Vamos a la página de KensingtonWorks y descargamos la versión para macOS 14 Sonoma, lo instalamos y durante el proceso damos los permisos necesarios para que el software pueda realizar las personalizaciones necesarias.

En BUTTONS invertimos los botones Left Click y Right Click, también Back y Middle Clic.

Aquí realizo otras personalizaciones para las diferentes combinaciones de botones, sean atajos generales o por aplicación.

En POINTER se cambia la velocidad predefinida, prefiero tener algo más rápido, un 6 por ejemplo, y habilitamos la aceleración y lo ponemos en 4.

En SCROLLING subimos la velocidad a 4.

Otras herramientas de Escritorio

Adicional al software que instalo desde repositorios públicos también hago uso de estos otros programas que vienen en formato de paquetes dmg.

  • Google Chrome, iniciar sesión y sincronizar configuraciones: googlechrome.dmg
  • Brave Browser, iniciar sesión y sincronizar configuraciones: Brave-Browser-arm64.dmg

About

Documentation and code useful for setting up your macos system for the first time.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published