Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sydrawat01/dotfiles

💻 Automated personal dotfiles for macOS workspace/settings. One-click install & setup.
https://github.com/sydrawat01/dotfiles

dotfiles easy-install homebrew personal-dotfiles workspace workspace-configuration workspace-settings

Last synced: 19 days ago
JSON representation

💻 Automated personal dotfiles for macOS workspace/settings. One-click install & setup.

Awesome Lists containing this project

README

        

# .files

[![Release](https://github.com/sydrawat01/dotfiles/actions/workflows/release.yml/badge.svg)](https://github.com/sydrawat01/dotfiles/actions/workflows/release.yml)

A simple way to setup a new MacOS laptop/desktop for development, using just one command.

> \[!NOTE]\
> This repository contains sysconfigs for my personal computer, please use these at your own risk!

## One script install

To install, copy the below command and paste it in your terminal:

```shell
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/sydrawat01/dotfiles/master/osx.sh)"
```

## Clone and setup

Clone this repository in your desired path using:

```shell
https://github.com/sydrawat01/dotfiles.git
```

To run the script to install all basic software with personal configs on your Mac, use this shell script: `osx.sh`.

Although not required, provide exec permissions to this file, just to avoid any problems executing the shell script:

```shell
chmod +x osx.sh
```

Then, run the file:

```shell
./osx.sh
```

## GNU Stow

The GNU Stow is an open source project that helps maintain "symlink farms". I'm using it to maintain symlinks to my system configuration files that live in my `$HOME` directory, mostly the `.config/`, `.zshrc`, `.zshrc_aliases`, `.tmux`, `.vimrc` and other such application configs. This way, I have full control of my application settings, and can be synced across multiple devices since they are version controlled using Git.

## Working with Stow

Once all softwares are installed as in the previous step using the `osx.sh` shell script, we need to install a couple of things manually before we can fully utilize `stow`.

Install `Node Version Manager` or `nvm`, which is required by some `Lua` packages for `LazyVim` (in turn `NeoVim`), this way we avoid any errors when using symlinks to setup NeoVim. With `nvm` installed, we will then install the LTS version of `node`, which will also install `npm` for us.

```bash
brew install nvm
# check nvm
nvm --version
nvm install --lts
# check node and npm
node --version
npm --version
```

With this, we can now setup our dotfiles with `stow`. If you have not already cloned this repository, do it now, and place it in a location where you want to manage your dotfiles from.

Now, let's run the `stow` command to generate symlinks with the `dotfiles` option, which is optimized for handling dotfiles symlinks.

```bash
# cd into the dotfiles folder.
cd ~/Developer/dotfiles
stow --dotfiles . --target=~/
```

The above command should automatically generate symlinks based on the folder structure (works with nested directories as well).

> \[!IMPORTANT]\
> The `configs/` folder contains a backup of older configuration files from `v2.x`, although VSCode setup requires the [`extensions.txt`](./configs/vscode/extensions.txt) file to setup the extensions. Other configurations are left as backup of older configs.

## WIP

> \[!WARNING]\
> This is something subjective, so DevOps tools like `Docker`, `Kubernetes`, `Kind`, `Minikube`, `Terraform`, `Packer`, `Ansible` etc., will be added to the install script in the future releases as per required. Note that the user will not be prompted to install/skip these tools, and will be installed regardless. In case these are required, I'll add a simple bash command to install these outside of the install script.

Install Devops related tools with `homebrew` in the install script `osx.sh`.

## Author

[Siddharth Rawat](mailto:[email protected])

## License

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)