Git Product home page Git Product logo

.dotfiles's Introduction

Dotfiles

Kuhy’s literate dotfiles. ./screenshot.png

Contents

Repository contains following configuration files:

How does it work?

Every part of my system is configured using some Org Mode file. Each file contains textual description alongside code blocks containing the actual configuration. These code blocks can be tangled (extracted) into the dotfiles at specified path using Babel. The whole setup requires only Emacs with default packages.

Org files contain the following header arguments:

  • :tangle file_path which specifies the actual path to the dotfile
  • :noweb tangle to allow expansion of code block’s references
  • :comments yes to tangle also comments
  • :mkdirp yes to allow creating parent directories for tangled files
  • :tangle-mode (identity #o440) to set permissions of tangled files

Some files such as variables.org and secrets.org contains code blocks which are shared between multiple Org files (these code blocks are annotated with #+NAME: block_id); because of that, multiple applications can share the same color scheme, etc. These files are included in other files using #+INCLUDE: file_path statements. Included source blocks are then referenced in code like this: <<block_id>>. To prevent tangling definitions of shared source blocks, the :tangle no option is used. Because of that, files which are including these shared files must use #+OPTIONS: prop:t; this ensures that custom properties (like :tangle no) are also included in destination files.

File secrets.org contains some sensitive data, therefore content of this file is encrypted using Org Crypt (headers are annotated with :crypt: tag).

Unfortunately, built-in function org-babel-tangle which is responsible for tangling, does not work correctly with #+INCLUDE statements and encrypted files. Because of that, I created a simple script which overcomes those shortcomings.

.dotfiles's People

Contributors

indiebrain avatar kuhy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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