Coder Social home page Coder Social logo

dotfiles's Introduction

dotfiles

image

Goal

I use various devices running macOS, Windows (with WSL) and various Linux Distors on a daily bases for work and in my spare time. Keeping my work environment consitant becomes annoying and error prune, when hopping devices. Additionally, I take this as a chance for a lerning investment in a keyboard focused work flow, deep dive into the TUI rabbit hole and have some fun in the terminal.

Why Ansible?

One of the best tools for automated infrastructure provisioning is Ansible. I happen to have used Ansible to deploy various applications and infrastuctures in the past, so why not deploy my own work environment with it?

Supported Operating Systems

Currently only are tested:

  • macOS
    • 14 Sonoma
  • Linux
    • Fedora 40 KDE Wayland

Install

git clone https://github.com/FreddyFunk/dotfiles.git ~/dotfiles
echo "SuperSecurePassword" > ~/dotfiles/vaultpw
sh ~/dotfiles/init.sh

macOS Key Binding Conflicts

tmux pane resizing vs Misson Control / Dock

  • Settings -> Keyboard -> Keyboard Shortcuts... -> Mission Control -> Mission Control from ctrl + ↑ to ctrl + cmd + ↑
  • Settings -> Keyboard -> Keyboard Shortcuts... -> Mission Control -> Application windows from ctrl + ↓ to ctrl + cmd + ↓
  • Settings -> Keyboard -> Keyboard Shortcuts... -> Mission Control -> Mission Control -> Move left a space from ctrl + ← to ctrl + cmd + ←
  • Settings -> Keyboard -> Keyboard Shortcuts... -> Mission Control -> Mission Control -> Move right a space from ctrl + → to ctrl + cmd + →

macOS Window Management

Amethyst is used as the Window Manager. While alternatives like yabai are arguably more powerful, Amethyst can run while keeping macOS System Integrety Protection enabled, which is desired for company devices.

Please make sure to manually Update the Accessibilty and Mission Control settings, after manually starting Amethyst for the first time. More details can be found in the Amethyst documentation.

Update

Once the init.sh script was executed, you can do a full update of the dotfiles running the following simple command:

dotu

Credentials & Sensitive Data

All kind of credentials like keys, tokens and passwords are securely stored as AES256 encrypted variables using Ansible Vault.

Securing sensitive data like personal or work related e-mail addresses are also rather important, since this repository available to the public. Therefore, all sensitive data is also encrypted.

It is expected that the user manually stores the Ansible Vault password in a plain file located at ~/dotfiles/vaultpw.

To add encrypt values do the following:

# string
ansible-vault encrypt_string $HOME/dotfiles/vaultpw "mynewsecret" --name "MY_SECRET_VAR"
# file
cat myfile.conf | ansible-vault encrypt_string $HOME/dotfiles/vaultpw --stdin-name "myfile"

You can pipe the output of ansible-vault directly to the clipboard by appending the following command:

  • macOS: | pbcopy
  • Linux: | xclip -selection clipboard

Running specific role

dotu "role_name"
# example for role "chromium"
dotu chromium
# example for running multiple roles
dotu system,ssh,git,chromium

Credits

This setup is heavily inspired by:

dotfiles's People

Contributors

freddyfunk avatar

Watchers

 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.