Coder Social home page Coder Social logo

akatrevorjay / dotfiles Goto Github PK

View Code? Open in Web Editor NEW
46.0 2.0 2.0 4.96 MB

Opinionated garbage for your terminal. Gotta get that yolo swag.

Shell 14.18% Python 37.34% Ruby 0.09% Perl 10.62% Prolog 0.10% Scheme 0.10% Lua 1.25% CSS 0.10% GDB 0.01% Vim Script 36.22%
zsh nvim vim python magic linux osx plugins

dotfiles's Introduction

dotfiles

Opinionated garbage for my dotfiles setup. Uses yadm to manage them in your home.

Used daily by a few people at this point. Lord Zulu help them.

I've been trying to at least put the most useful pieces into gists or their own repos, on an as time allots kind of deal.

A lot of what's here is pure hackery at best, but a lot took some time too. Due to this, I don't promise that everything is exactly documented, but I do promise good things to those who read. If something sucks, tell me why! I don't mind strong opinions; especially so if they have backing data.

Yolo swag.

News

We've been doing a mass non-opinionation as others have started to utilize these as well. This is being done on pure best effort, and PRs are welcome for just about anything.

Goals

  • Primarily Linux, but OSX is also targetted, ie nothing should break.
    • This is true even in the case of osx's insane PATH order enforcement; which this works around in zshenv.
  • Relatively easy to understand, with bells and whistles galore.
  • Attempts to adhere to XDG spec (for the important tidbits at least).
  • Everything should be a plugin (batteries included, but removable).
  • Obviously opinionated portions should not be enabled by default.
  • Plugins should check for requirements and disable themselves automagically if not available.

Features

Vigorous [Zsh] setup [dotfiles-zsh]

  • SSH: If you're remote, prefix prompt with $HOSTNAME.

  • Linux: libtrash used if available for rm, otherwise supports such things as [gomi], [safe-rm], etc

  • colorcat is a cat drop-in wrapper that automatically applies highlighting to the output without breaking usage.

    • Breakage is avoided by paying attention to if you have a tty, have stdin, are interactive, etc etc
    • If used on multiple files, it will even prefix each file with it's name (to stderr only just in case)
  • antibody as a lightweight shim for parallel plugin loads/updates.

    • Note: I currently use my fork because I have breaking changes that still haven't integrated
  • airline/promptline based prompts (but totally configurable to whatever you want)

  • A zillion other tools, mostly that I've written, some modified.

  • Nearly everything supports local extension via ~/.local/zsh/; analogous to ~/.config/zsh here, but local to your machine. This of course includes plugins, functions, and completions. Same idea goes for a lot of this, eg user bin (~/.local/{s,}bin take precedence over ~/{s,bin}), manpath's, etc.

  • Lots of development environment support.

  • Defaults aim to work for most, but all paths should be overridable to taste via env vars.

  • Plugins don't load if their requirements are not met.

  • Smart completion caching for slow-to-export completion functions.

    This is for applications that have this god awful idea that I want to execute them each time I load my shell.

    If the binary has updated since the cache was created however, the cache is busted.

    By avoiding this, shell startup is lightning quick, but your bells and whistles still intact, even on extremely low powered embedded devices, which I use these on all the time ;)

    Shame list includes pip* and nearly every app written in golang.

Paths to browse:

  • bin/
    • bin/3p: Mostly automagic source code compilation and installation.
    • bin/up: Update everything, yo.
  • .config/zsh/{zprofile,zshenv,zshrc}: Primary entrypoints. Sets up environment and loads plugins.
  • .config/zsh/zshplugins: States what plugins should load.
  • .config/zsh/plugins*/: Isolated zsh plugin bundles.

Semi-organized vim configuration

  • Primarily meant for Neovim, but also usable with vim8 for those times you may need it.
    • With stock vim builds (including MacVim, gvim), some degradation of functionality is there, but namely it shouldn't break.
    • When on vim8 instead, neovim remote plugin support is somewhat supported thanks to a shim from the guy who wrote vim-completion-manager. Better than nothing. YMMV.
  • Supports most GUIs such as nvim-qt or pynvim with simple hooks for when you need them to deviate from the cli.
  • vim-plug for plugin management; check .config/nvim/plugins.d/

Paths to browse:

  • .config/nvim/: Neovim configuration, but also is used in vim8.

tmux configuration:

  • SSH: If you're remote; auto-spawns tmux session.
  • tpm for plugins

Paths to browse:

  • .config/tmux/: Tmux configuration

Usage

  1. Install (using yadm, which is effectively just a dope wrapper around git):
case "${OSTYPE:?}" in
  linux*)   sudo apt install -y yadm ;;
  darwin*)  brew install yadm ;;
esac
  1. Clone:
yadm clone --bootstrap '[email protected]:akatrevorjay/dotfiles.git'
  1. Yolo

sweg sweg sweg sweg

dotfiles's People

Contributors

akatrevorjay avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dotfiles's Issues

Resolve git alias duplicates

$ git config -f config.alias -l | sort | cut -d= -f 1 | sort | uniq -c | grep ' alias\.' | grep -v -E '^\s+1 '
      2 alias.d
      2 alias.dm
      2 alias.fc
      2 alias.fm
      2 alias.gl
      2 alias.id
      2 alias.ir
      2 alias.ix
      2 alias.p
      2 alias.pa
      2 alias.r
      2 alias.ra
      2 alias.rs
      2 alias.s
      2 alias.sl
      2 alias.ss
      2 alias.sx
      3 alias.di

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.