Giter Club home page Giter Club logo

dotfiles's Introduction

Ahmed’s dotfiles luacheck

⚠️ Disclaimer! ⚠️

Please DO NOT blindly copy or run the installer snippet if you do not fully understand what it does!. I use this place as a backup :)

Feel free to take whatever you want, though.

License Github commits (since latest release) GitHub last commit Github Commits Last Year GitHub repo size

Running kitty with custom Spaceship-zsh theme.

The font is JetBrains Mono

Screenshot

Screenshot Screenshot Screenshot

Table of Contents

What's it

This is where I keep all my dotfiles and configs, and as well as all the tools I commonly use. Every time I set up a new OS X machine I can execute a single command to bootstrap a new system and pull down all of my dotfiles and configs.

What's inside

A lot of stuff and you can check them out in the file browser above. Main components are:

  • Homebrew: Used for managing and installing macOS dependencies and Cask for managing and installing GUI apps like Chrome, Firefox, VSCode,...etc.
  • Tmux: Used for pane and window management, copy-mode for navigating output, and session management make it a no-brainer for those who live in the terminal (and especially vim) Screenshot
  • Neovim: A drop-in replacement for Vim with my own customizations applied. README
  • ZSH: Shell with various customization`:
    • 🚀Spaceships ZSH as a prompt.
    • 🌺ZPLUG for dependency management.
    • ⚡️ Power up and beautify terminal with ZSH completions.
    • 💄 Syntax highlighting of commands.
    • 🏎 Autosuggestions for most of commands.
    • 🕵️‍ Fuzzy Finder for VIM, Git and ZSH
    • ⌨️ ZSH VIM bindings for VIM nerds.
    • 🛸 Useful aliases.
    • 🛠 Custom Git config, global .gitignore file and aliases.
  • Hammerspoon: a MacOS automation solution using Lua to solve interesting problems in an easy way
  • Newsboat: an RSS feed reader for the text terminals.
  • Files: directory where all extra configs live that will be symlink into your $HOME.
  • Extras/bin: Anything in bin will get added to your $PATH and be made available everywhere.

Missing feature? 🍴 Fork this repo and make it better ❤️

Setup

To set up the my dotfiles, run the appropriate snippet in the terminal:

Downloader Snippet
curl bash -c "$(curl -fsSL https://raw.githubusercontent.com/AhmedAbdulrahman/dotfiles/master/installer.sh)"
wget bash -c "$(wget https://raw.githubusercontent.com/AhmedAbdulrahman/dotfiles/master/installer.sh -O -)"
git git clone [email protected]:AhmedAbdulrahman/dotfiles.git ~/dotfiles && source ~/dotfiles/installer.sh

By default it Installs Personal prefered stuff, for Work related stuff you need to pass work as an argument to the snippet:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/AhmedAbdulrahman/dotfiles/master/installer.sh)" work

That's it! 🎉. When installer is run, you are prompted to choose one option from the list as seen below:

    What you want to do?

    1) All                        6) Install macOS Apps
    2) Install package manager    7) Override macOS System Settings
    3) Install Git and Setup SSH  8) Change shell
    4) Clone Ahmeds dotfiles      9) Install XCode tools
    5) Symlink files             10) Quit

    Enter your choice (must be a number):               # Choose a number

The installer attempts to only select relevant script based on your choice. Say you choose 1 for All, then the process does a few things:

  • Download Homebrew our main macOS dependency manager.
  • Install Git if it's not installed in your machine.
  • Install ZSH shell and set it as primary shell for your terminal.
  • Clone my dotfiles repo on your computer (by default it will suggest ~/dotfiles).
  • Create some additional [directories][dirs].
  • Symlink zsh, vim, tmux, files, newsboat, extras/bin files.
  • Install applications and command-line tools for macOS, Nodejs including global packages, and Python packages.
  • Set custom macOS preferences.
  • Install vim plugins as Git Submodules, and zsh plugins.

Customize

Local Settings

My dotfiles config can be easily extended to suit additional local requirements by using *.local files which will be created using installer script

~/.zshrc.local

You can add or overwrite any existing aliases, settings, PATH, ... etc for zsh using ~/.zshrc.local file located in your $HOME dir, and it will be automatically sourced after all the other zsh. Then you can add your own configs ;)

#!/usr/bin/env zsh

# Example: Set local aliases.
alias vim="nvim"

# Set PATH additions.
PATH="$PATH:$HOME/projects/dotfiles/src/bin" # Here we are adding bin directory to PATH
export PATH  # Then export it

~/.gitconfig.local and ~/.vimrc.local

Same goes for git and vim. You can add or overwrite your custom config to ~/.gitconfig.local file including your sensitive information such as your git credentials and this file will be automatically included after the configurations from ~/.gitconfig.

[user]

    name = Ahmed Abdulrahman
    email = [email protected]
    signingkey = XXXXXXXX

Resources

This repo is inspired and influenced by

License

Copyright © 2020 Ahmed Abdulrahman Licensed under the MIT license.

dotfiles's People

Contributors

ahmedabdulrahman avatar muescha 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

Watchers

 avatar  avatar

dotfiles's Issues

How can you handle icons using fzf?

Hey I read your recent medium post about fzf. Really awesome stuff. Thank you! I left a comment there, but apparently you did not see it, that's why I try to reach for you out one last time via GitHub.

I could get everything to work but one thing:

The preview icons on the left side of the files can be displayed, but I did not find a way to exclude them from my search results. (https://miro.medium.com/max/2240/1*Cizs8B5okJSqPwxrd364VQ.gif)

The preview box is not working anymore as well (For example it gives me the error [bat error]: ' Desktop/01_Introduction.pdf': No such file or directory (os error 2))

How did you work around this issue?
Best, Till

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.