Mi-am vândut recent laptop-ul, un HP chiar decent pentru banii pe care îi dădusem, din cauza problemelor cu Wi-Fi-ul (avea o placă Wi-Fi de la Realtek care nu se pupa deloc bine cu BIOS-ul și metodele lui de power saving încât era nevoie să le dezactivezi de tot) și mi-am cumpărat un MacBook Air cu M4 pentru că nu apăruseră încă M5 și din auzite nu ar fi adus prea multe schimbări.
Venind de pe Fedora Workstation cu GNOME eram obișnuit cu schimbatul setărilor desktop environment-ului folosind gsettings așa că erau rare ocaziile când aveam nevoie să schimb ceva dintr-un GUI. Am aflat că există ceva similar și pe MacOS numit defaults dar ceva mai slab; în timp ce gsettings avea o schemă clară și nu puteai să pui ce vrei tu, cu defaults am pățit des să schimb o cheie și să nu facă nimic pentru că aparent cheia aia nu mai e folosită de câteva versiuni încoace. Personal îmi place mult mai mult cum arată GNOME "din fabrică" versus MacOS, așa că am avut destul de multe de modificat și ajunsesem la o versiune destul de bună. Problema era că nu mai știam ce și cum schimbasem, așa că dacă aveam nevoie să șterg tot sau mă mutam pe alt MacBook trebuia să repet tot procesul de încercat comenzi până să îl aduc în aceeași stare.
Dotfiles
Atunci mi-am amintit de conceptul UNIX de dotfiles (practic toate fișierele cu punct în față care conțin config-uri pentru sistemul de operare, utilitare și aplicații). Conceptul ăsta e mult mai popular pe Linux (vezi r/unixporn) așa că resursele pentru un setup de genul pe MacOS sunt mai puține. Am dat totuși de repo-ul ăsta care arăta destul de bine și implementa tot ce aveam eu nevoie (și dotfiles în sine dar și MacOS defaults). Script-urile se așteptau să le rulezi pe un cont de Administrator dar eu folosesc un cont secundar Standard și nu ar fi mers. Am făcut un fork și am încercat să le modific pentru cazul meu, doar că mi-a dat bătăi de cap Make și am hotărât în final să-mi fac eu o versiune a mea de la zero.
Nefiind deloc familiarizat cu Make și Makefiles am zis să încerc să replic aceeași funcționalitate în Bash începând cu instalatul de Homebrew (care a fost o mică bătaie de cap din cauza contului non-admin). Surprinzător chiar mi-a plăcut cum a mers cu Bash și în afară de niște abateri de la principiul DRY, pe care Make nu le face, chiar se potrivește pentru genul ăsta de proiect. Am continuat să mai adaug la el (printre care defaults menționate mai sus, Casks pentru aplicațiile cu GUI, extensii de VSCode, config-uri pentru zsh și git) testând în același timp și prin resetarea MacBook-ului (de prea multe ori să fiu sincer) și pot să spun că am ajuns la o variantă mulțumitoare care acoperă cam 90% din setările pe care ar fi trebuit să le fac manual.