Coder Social home page Coder Social logo

jgarte / dotfiles-4 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bricewge/dotfiles

0.0 0.0 0.0 7.68 MB

Personal dotfiles

License: Creative Commons Zero v1.0 Universal

Shell 39.75% Python 0.83% Emacs Lisp 28.07% YASnippet 2.05% Makefile 1.92% M4 22.32% Scheme 5.06%

dotfiles-4's Introduction

dotfiles

Brice Waegeneire’s dotfiles for *NIX, inspired by Kraymer/dotfiles and terlar/dotfiles.

Tutorial

Dependencies

Those dotfiles depends on a minimal set of programs, most of which are probably already installed on your system. If it’s not the case install the following packages with your package manager of choice:

  • git, the version control system
  • stow, a symlink manager
  • make, as dependency manager
  • m4, as theme engine

Using this dotfiles repository as a whole

To install all the configurations of this repository, enter the following in your terminal:

git clone https://github.com/bricewge/dotfiles.git
make all

Using part of the configurations

If you only want to use a subset of the repository, let’s say the configuration just for tmux and git, then write the following in your terminal:

git clone https://github.com/bricewge/dotfiles.git
make tmux git

How-to guides

How-to add a new module

How-to add OS specific configuration

How-to work on breaking changes

git worktree but it doesn’t work with git-crypt (AGWA/git-crypt#105) so maybe it can be replaced by git-secret.

How-to manage secrets

Some file contains sensitive information and are best being kept private to do so we can encrypt them with git-crypt.

However note that this method may not be sufficient in regard to your threat model, in that case, please, do not put them on the Internet nor in a public git repository.

How to uninstall some modules

When you want to remove a specific module from your $HOME just do:

make uninstall PACKAGES=foo

To uninstall several modules at once, separate them with commas like this PACKAGES=foo,bar,baz. If you want to remove all the modules then just do a make uninstall.

Note: not all the installed modifications will be removed since it’s only an unstow of the symlinks. So what was done in stow’s hooks pre-stow and post-stow won’t be removed.

How-to use m4 as a theme engine

When a configuration format doesn’t allow you to put a space before the variable you want to be replaced with m4 you need to quote the string before it.

Here is an example for polybar when using format tags:

separator = %{`F'COLOR_FOREGROUND_DIM}|%{F-}

Which, when passed through m4 will result in:

separator = %{F#123456}|%{F-}

Discussion

Priorities

Portable

Sticking strictly to POSIX’s shell and requiring minimal dependencies make those dotfiles portable to most systems I use, in particular the ones running busybox that doesn’t have bash installed and not much space to install additional software.

Modular

You will rarely need to install the configuration for all of the software you have configure, except your workstation. You won’t uses mpv configurations on a server for example.

KISS

Declaring dotfiles bankruptcy never feel good, but not having a way to manage all those configuration is worse. So let’s keep it as simple as possible.

Hackable

They’re will always be a time when you are forced to use a dirty workaround or have some exotic edge-case to take into account, none of which a handy shell script can’t overcome.

Why this organization?

Past alternatives

Previous ways that I used to managed this repository.

unordered shell scripts

vcsh with myrepos

salt

bork

  • bash
  • not maintained anymore

Other alternatives

  • homemanager, Nix based

Reference

Module

Naming scheme

Hierarchy patternDescriptionExample
_*Will never be stowedalacritty/_alacritty.terminfo
\@*Subpackage, stowed when explicitly namedgpg/@macos
{pre,post}-stowExecuted before or after package installationgit/post-stow
.shell/login.d/*Evaluated by login shellsgpg/.shell/login.d/gpg
.shell/interactive.d/*Evaluated by interactive shells

License

All of this repository is under CC0 1.0 license except the wallpaper subdirectory.

dotfiles-4's People

Contributors

bricewge 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.