Code Monkey home page Code Monkey logo

dotfiles's Introduction

Project logo

My Personal Automated Machine Configurator

Status GitHub Issues GitHub Pull Requests License


This project aims to reduce the overhead of setting up a new computer keeping the configuration shared across multiple devices.

๐Ÿ“ Table of Contents

๐Ÿง About/Motivation

People that have worked with me in the past know that one of the things that I dislike the most is doing repetitive tasks. Copying and pasting snippets of code, running the same command multiple times, or clicking on the same UI elements repetitively. Yet I still found myself almost daily wasting a significant amount of time trying to keep all of my devices configured in sync.

I currently have my work MacBook, my personal MacBook, and a personal Debian LXC container hosted on Proxmox running on a web version of VS Code that I connect on my iPad Pro using Blink to do some lightweight coding tasks and administer my homelab servers on the go.

Three different devices, two different operating systems, similar configurations. Apart from that, from time to time, you change jobs, get a different computer or just do a fresh OS install at home.

This project turns the repetitive job of maintaining multiple machines configured exactly the same into a couple of shell script lines that execute a streamlined Ansible playbook.

โš ๏ธ Disclaimer

The scripts and configuration files were written to fulfill my personal needs. Although It's generic enough to be executed in any computer, according to @anishathalye, dotfiles are not meant to be forked, and I tend to agree with this statement.

I still decided to make it open source because it can be a valuable source of inspiration or even serve as a starting point to someone that has decided to do something similar.

๐Ÿ Getting Started

  1. Install Ansible
  2. Clone this repository to your local drive

๐ŸŽˆ Usage

  1. Go to the ansible folder
  2. Run $ ansible-galaxy install -r requirements.yml inside this directory to install required Ansible roles.

๐ŸŽ macOS

  • Run ansible-playbook macos.yml -K. Enter your account password when prompted.

๐Ÿง Linux

This playbook assumes you have a VM or LXC container configured on your Ansible inventory named devbox

๐Ÿ”ง Customizing

There are two types of configurations:

  1. Shared configs
  2. OS specific configs

Shared Configs

Shared configs will be applied to both macOS and Linux. For example, you may always want to have this repo symlinked to ~/.dotfiles or always have a subset of VS Code extensions installed regardless of the OS.

You can customize those by editing common.config.yml.

OS Specific

Other settings are tied to a certain OS. For example, configuration files of applications that are only installed on macOS but not on my Linux LXC container.

These should go to their respective files: linux.yml or macos.yml

๐Ÿš€ What's Installed

Applications

...TBD

Command Line Apps

  • coreutils - GNU File, Shell, and Text utilities for macOS
  • exa - Replacement for ls written in rust.
  • htop - Interactive text-mode process viewer for Unix systems.
  • fd - Simple, fast and user-friendly alternative to 'find'.
  • findutils - Collection of GNU find, xargs, and locate'find'.
  • jq - JSON processor
  • fzf - Command-line fuzzy finder.
  • git - Version control.
  • sqlite - Relational database management system written in C
  • mas - Mac App Store command line interface
  • mosh - The mobile shell
  • ncdu - Disk usage analyzer with an ncurses interface
  • nmap - The Network Mapper
  • openssh - OpenBSD freely-licensed SSH connectivity tools
  • telnet - User interface to the TELNET protocol
  • unzip - Extraction utility for .zip compressed archives
  • neovim - Ambitious Vim-fork focused on extensibility and agility
  • wget - Internet file retriever
  • goku - Manage your Karabiner configuration with ease.
  • zsh - UNIX shell (command interpreter)
  • tmux - Terminal multiplexer
  • curl - Get a file from an HTTP, HTTPS or FTP server
  • z - Jump quickly to directories that you have visited recently
  • lazygit - Simple terminal UI for git commands
  • diff-so-fancy - Good-looking git diffs.
  • tldr - Simplified and community-driven man pages.

๐Ÿ’ฅ TODO

...TBD


โœ๏ธ Authors

๐ŸŽ‰ Acknowledgements

A lot of people have their own personalized ways of doing what this project does. Here I thank some of them for the inspiration or code snippets that I picked from them.

  • @geerlingguy - For the massive amount of Ansible roles written. Some that I use in this repo, some that I used to understand how things work in Ansible.
  • @mathiasbynens - For the base macOS preferences script file that I mostly copied and added a few other personal preferences.
  • @nikitavoloboev - For the huge amount of content shared with the community, that ended up being useful for this repo. Including his dotfiles and his macOS configuration repo
  • @jglovier - For the free logo that I used as a base for mine.

dotfiles's People

Contributors

mateusrevoredo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.