All Projects → jthegedus → dotfiles

jthegedus / dotfiles

Licence: MIT License
Dotfiles & Developer Environment. Supports Ubuntu2004+, macOS Catalina+, Windows 10 w WSL

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to dotfiles

Castle Winbuntu
Homesick Castle for use on WSL.
Stars: ✭ 87 (+190%)
Mutual labels:  dotfiles, zsh, ubuntu, wsl
Dotfiles
Windows + WSL 2 Ubuntu + Windows Terminal + zsh + p10k + Docker + IntelliJ IDEA
Stars: ✭ 54 (+80%)
Mutual labels:  dotfiles, zsh, wsl
Dotfiles
Get ready for dotfiles. Contains i3, i3blocks, rofi, dunst, picom, vim, tmux, and zsh.
Stars: ✭ 985 (+3183.33%)
Mutual labels:  dotfiles, zsh, zshrc
Dotfiles
What tools and plugins I use for web development?
Stars: ✭ 73 (+143.33%)
Mutual labels:  dotfiles, zsh, zshrc
dotfiles
My dotfiles for oh-my-zsh, vim and tmux 📟
Stars: ✭ 23 (-23.33%)
Mutual labels:  dotfiles, zsh, zshrc
Dotfiles
🐲 My Arch Linux config [i3-gaps + i3blocks + Zsh + Spacemacs + Rofi + Alacritty + Neofetch]
Stars: ✭ 725 (+2316.67%)
Mutual labels:  dotfiles, zsh, zshrc
q
q - vim like macro registers for your bash and zsh shell!
Stars: ✭ 54 (+80%)
Mutual labels:  zsh, bashrc, zshrc
Ubuntu On Steroids
Developer setup & configuration guide for Ubuntu.
Stars: ✭ 111 (+270%)
Mutual labels:  zsh, zshrc, ubuntu
Dotfiles
Dotfiles
Stars: ✭ 117 (+290%)
Mutual labels:  dotfiles, zsh, ubuntu
Dotfiles Win
🙈 oh-my-zsh on bash on windows configuration files
Stars: ✭ 167 (+456.67%)
Mutual labels:  dotfiles, zsh, wsl
dotfiles
📑 .dotfiles for Bash (Linux) / ZSH (Linux) / Git Bash (Windows) / Cygwin (Windows) / Bash on Ubuntu on Windows
Stars: ✭ 175 (+483.33%)
Mutual labels:  dotfiles, bashrc, zshrc
Dotfiles
💾 Ian's dotfiles, utils, and Zsh/Vim/tmux configs
Stars: ✭ 554 (+1746.67%)
Mutual labels:  dotfiles, zsh, zshrc
Zsh Quickstart Kit
Simple ZSH quickstart for using ZSH and zgen
Stars: ✭ 366 (+1120%)
Mutual labels:  dotfiles, zsh, zshrc
Dotfiles
My dotfiles, mainly Ubuntu and OSX stuff
Stars: ✭ 12 (-60%)
Mutual labels:  dotfiles, zsh, ubuntu
zshrc
📝 Zsh Configuration for nerds with zplug
Stars: ✭ 28 (-6.67%)
Mutual labels:  dotfiles, zsh, zshrc
Dotfiles
My personal configuration management system
Stars: ✭ 66 (+120%)
Mutual labels:  dotfiles, zsh, ubuntu
Dotfiles
My lovely dots ~/.💖
Stars: ✭ 212 (+606.67%)
Mutual labels:  dotfiles, zsh, ubuntu
Dotfiles
🐢 💨 Speedup your MacOS setup with this fine tuning settings
Stars: ✭ 174 (+480%)
Mutual labels:  dotfiles, zsh, zshrc
dotfiles
🚀 tmux, ohmyzsh, powerlevel10k, neovim 🔧
Stars: ✭ 24 (-20%)
Mutual labels:  dotfiles, zsh, zshrc
dotfiles
vim ⌨️ tmux 🖥 git ⑃ zsh 💤
Stars: ✭ 12 (-60%)
Mutual labels:  dotfiles, zshrc

Dotfiles & Developer Environment Lint

Cross-platform dotfiles & developer environment for PopOS (Ubuntu), macOS Catalina+ & Windows 11 with WSL2

Install with curl bash which will download, clone and execute script:

curl -fsSL https://raw.githubusercontent.com/jthegedus/dotfiles/main/dotfiles.bash | bash

⚠️ Always read script contents before executing via "curl-bash" - read Friends don't let friends Curl | Bash

Run install script locally after clone:

git clone https://github.com/jthegedus/dotfiles ~/projects/dotfiles
bash ~/projects/dotfiles/dotfiles.bash

Contents

Types of Software

There are 2 categories of software:

  1. install once with rolling version updates: OS, browsers, editors, shells, prompts etc.
  2. install multiple times & pin to specific versions: runtimes and tools used to develop & build projects defined on a per-project basis (asdf as an example)
Available solutions to this problem

How you manage and install these 2 categories of software is very difficult to maintain, especially across multiple machines and OSs. How should you manage dependencies that span the boundaries of these two types of top-level software categories? Eg: your browser could require a dependency to be updated that is used by a pinned version of a runtime used for a specific project. There doesn't seem to be a perfect solution.

Desired properties to tackle this problem can be observed below:

tool os-level install manages dep graph version pinning per-project Debian/Ubuntu Windows11 (non-WSL) macOS
aptitude
Homebrew
asdf
Nix *
Docker/Vagrant *

NixOS appears to be the best solution to this problem. Unfortunately it does not support windows11, NixOS is itself an operating system and configuration requires learning the .nix language.

In my opinion rolling version updates should use the systems native package manager. And unless you're willing to put in the hours to learn Nix then asdf is a decent fit for version pinning per-project.

Installled with script

Rolling Version Software

  • nushell: a new type of shell
  • starship: cross-shell theme
  • asdf: Manage multiple runtime versions with a single CLI tool
  • powerline fonts
  • ripgrep: recursively search directories for a regex pattern while respecting your gitignore
  • zoxide: A smarter cd command
  • bat: A cat(1) clone with wings
  • fd: A simple, fast and user-friendly alternative to 'find'

Pinned Version Software

Naturally these should be managed per-project for which we have chosen asdf.

Other Useful Software

Not installed automatically with this repo's script, but worth looking into:

Fonts

PopOS / Gnome stuff

I rely on the PopOS distro for:

  • tiling behaviour in Gnome as previous extensions I used were not as reliable
  • make tab switching swap all app windows not just apps: Settings > Keyboard > customize keyboard shortcuts > Navigation > Switch Windows: set to use the keyboard combo you like, eg: alt+tab

Gnome Extensions:

  • Caffeine: Disable the screensaver and auto suspend

Uninstall

curl -fsSL https://raw.githubusercontent.com/jthegedus/dotfiles/dotfiles.bash | bash -- -s --uninstall

or locally

bash ~/projects/dotfiles/dotfiles.bash --uninstall

Why Nushell

Nushell has a delightful core set of features that allow easy replacement of many tools. It achieves most of these features by treating "everything as data". For example, jq or jql can be replaced with inbuilt commands:

dotfiles on  main took 521ms 
➜ fetch https://api.github.com/repos/jthegedus/dotfiles | select created_at
───┬──────────────────────
 # │      created_at      
───┼──────────────────────
 0 │ 2017-03-28T01:04:13Z 
───┴──────────────────────


dotfiles on  main 
➜ (fetch https://api.github.com/repos/jthegedus/dotfiles).created_at
2017-03-28T01:04:13Z

Over the years I have slowly moved from extremely custom systems to a smaller set of more powerful tools allowing the same flexibility. From i3wm on Ubuntu to PopOS with it's tiling defaults, bash -> zsh -> nushell achieves the same simplification of toolset by utilising a newer tool that is built on the experience and learning from the past.

TODO

  • macOS support in installer script
  • native Windows11 support
  • find binary alternative(s) to thefuck
  • per-directory gitconfigs like https://stackoverflow.com/a/43884702
    • global with includes to per-dir configs: ~/.gitconfig -> symlinked to ~/projects/dotfiles/gitconfigs/.global.gitconfig
    • personal: ~/projects/dotfiles/gitconfigs/.personal.gitconfig
    • work: ~/projects/dotfiles/gitconfigs/.work.gitconfig

License

MIT License © James Hegedus

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].