{"id":27612779,"url":"https://github.com/lauslim12/provisions","last_synced_at":"2025-04-23T01:55:32.631Z","repository":{"id":39913408,"uuid":"363104459","full_name":"lauslim12/provisions","owner":"lauslim12","description":"Personal configurations and a note for myself if I ever get a new device. Windows/MacOS/Linux.","archived":false,"fork":false,"pushed_at":"2025-04-11T15:25:04.000Z","size":145,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T01:55:23.747Z","etag":null,"topics":["ansible","automation","bash","dotfiles","linux","macos","shell","windows","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lauslim12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-04-30T10:21:13.000Z","updated_at":"2025-04-11T15:25:08.000Z","dependencies_parsed_at":"2024-01-30T15:41:22.117Z","dependency_job_id":"204f4148-e7f2-4269-ab79-6018c39cf5cd","html_url":"https://github.com/lauslim12/provisions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauslim12%2Fprovisions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauslim12%2Fprovisions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauslim12%2Fprovisions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lauslim12%2Fprovisions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lauslim12","download_url":"https://codeload.github.com/lauslim12/provisions/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250354301,"owners_count":21416751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","automation","bash","dotfiles","linux","macos","shell","windows","zsh"],"created_at":"2025-04-23T01:55:31.994Z","updated_at":"2025-04-23T01:55:32.625Z","avatar_url":"https://github.com/lauslim12.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Provisions\n\nThis repository is my digital toolbox, a personal note to me if I ever get a new device in order to make the shifting process as swift as possible. In order to separate the concerns between personal use and development, please do not use the same device for work and personal matters (my personal preference is Windows machines for personal use and Unix systems for software engineering). I will try to avoid programming in Windows for separation of concerns between my personal life and my development life. Windows machines are simple and I don't think the process could get any more straightforward than it is already. The provisioning process is done by using Shell script(s) for portability and ease of use.\n\n## Structure\n\nThe project is structured like the following:\n\n- `dotfiles` contains my personal dotfiles for `iTerm2`, `oh-my-zsh`, `vscode`, and ordinary Terminal dotfiles.\n- `scripts` contains useful scripts for performing the provisioning and the after-provisioning needs (setup, updates, and the like).\n\n## Notes\n\nSome notes to keep in mind before provisioning your device:\n\n- Make sure you get a PC with Intel processors. Homebrew (for Linux) does not support ARM processors. Please use either MacOS or the Debian family.\n- I am a 'minimalist' developer. I don't really have any personal configurations other than the synchronized one in Visual Studio Code and my simple dotfiles.\n- We keep everything simple in local machine, and we can use Docker if we need more complicated tools (databases, caches, etcetera).\n- The provisioning process is kept sane, that is, no files/lines will be changed if they already exist.\n- Several `zsh` themes are available through `oh-my-zsh`.\n\n## Preparations\n\nBefore starting to automatically configure stuff, we have to configure our machine manually first.\n\nFor Windows:\n\n- Take care of Windows Updates and Drivers first to prevent any unwanted happenings.\n- Log in to Microsoft Account, link it to the device, setup synchronizations (settings, accounts).\n- Install Chrome, Drive, and essential applications. This should not be the main development machine if possible.\n\nFor MacOS:\n\n- Take care of Apple Updates.\n- Log in to iCloud. Setup synchronizations and settings.\n\nFor Ubuntu/Linux:\n\n- Update software using `sudo apt update` and `sudo apt upgrade`.\n- Install `build-essential` and `zsh` and set it to as the default Shell: `sudo apt install build-essential zsh` and `chsh -s $(which zsh)`.\n\n## Setup\n\n- Initially, we have to start by installing `git` on Debian or `xcode-select` on MacOS:\n\n```bash\n# Debian\nsudo apt install git\n\n# MacOS\nxcode-select --install\n```\n\n- Clone this repository in your home directory.\n\n```bash\ncd $HOME\ngit clone https://github.com/lauslim12/provisions.git\n```\n\n- Run this script, and delete the folder once you're done. You're going to use `provisions` in `$HOME/Projects/provisions` for the next parts.\n\n```bash\ncd provisions \u0026\u0026 make setup\ncd .. \u0026\u0026 rm -rf provisions\n```\n\n- You're done! All that's left to do is doing manual configurations.\n\n## Manual Configurations\n\nAfter you have configured everything in your system, it's time to do some manual works (recommended to be in order):\n\nConfigure Google Chrome:\n\n- Install [Google Chrome](https://www.google.com/chrome/) as a web browser.\n- Log in to all of Google Accounts and all webservices that I use.\n- Setup Google Synchronization (Contacts, Drive, Calendar, and more).\n- Change Privacy and Security to Public DNS.\n\nConfigure Git:\n\n- Setup GitHub's username: `git config --global user.name \u003cMY_GITHUB_NAME\u003e`.\n- Setup GitHub's email: `git config --global user.email \u003cMY_GITHUB_EMAIL\u003e`.\n- Generate [SSH key for GitHub](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent), [add it to your GitHub account](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account), and test your connection, don't remember to [verify the RSA fingerprint](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/testing-your-ssh-connection) (`ssh -T git@github.com`).\n\nConfigure MacOS:\n\n- Finder -\u003e Preferences -\u003e Show Home Folder in Sidebar \u0026 Show Mac.\n- System Preferences -\u003e Keyboard -\u003e Input Sources -\u003e Add Japanese - Romaji.\n- System Preferences -\u003e Keyboard -\u003e Shortcuts -\u003e Input Sources -\u003e Check both.\n- System Preferences -\u003e Night Shift -\u003e Schedule night light.\n- Tidy up dock and desktop icons.\n\nConfigure iTerm2:\n\n- iTerm2 -\u003e Preferences -\u003e Profiles -\u003e Other Actions -\u003e Import JSON Profiles.\n- iTerm2 -\u003e Preferences -\u003e Profiles -\u003e Other Actions -\u003e Set as Default.\n- iTerm2 -\u003e Preferences -\u003e Appearance -\u003e Status Bar Location -\u003e Bottom.\n\nConfigure Windows:\n\n- Settings -\u003e Taskbar -\u003e Automatically Hide Taskbar in Desktop.\n- Settings -\u003e Night Light - Configure Night Light.\n- Settings -\u003e Region and Language -\u003e Add Language -\u003e Add Japanese.\n- Tidy up taskbar and desktop icons.\n- If using WSL, install `Windows Terminal` for better terminal experience.\n\nConfigure Visual Studio Code:\n\n- Log in to Microsoft Account inside Visual Studio Code to sync all of my extensions and settings.\n- My settings and extensions can be found in `dotfiles/vscode`.\n\n## Scripts\n\nWith the help of `Makefile`, several commands have been made to act as shortcuts to ease up the provisioning and update process. Make sure you are in the `provisions` folder before using these commands.\n\n- `make setup`: to setup/provision your whole device.\n- `make setup-work`: to setup/provision device for professional usage.\n- `make update`: to update all software packages (`brew`, `apt`, `npm`, and things like it with sane defaults).\n\n## Next Steps\n\n- Download all of essential data that might still be used from Google Drive. Keep data backed up and updated!\n- Fetch all currently being worked on projects from GitHub. Just a simple `git clone` will suffice.\n- Once a week, please update all dependencies by using the available commands.\n- Don't forget to check for updates for your system at all times.\n- Check the repository once in a while to update the commands and links (should be highly unlikely).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flauslim12%2Fprovisions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flauslim12%2Fprovisions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flauslim12%2Fprovisions/lists"}