blob: 901c8bebf3669de61e0d0327535ba385ffbc048e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
Metadot: modular dotfile management system
==========================================
Metadot allows you to easilly manage and reuse existing dotfiles repositories
by simply cloning then to your `~/.dotfiles/modules` and renaming a few files.
By being modular, it's possible to create modules for specific applications
(vim, mutt, emcas, git, etc). By using git submodules, one can even create her
own dotfile bundle.
Inspired by [holman does dotfiles](https://github.com/holman/dotfiles) and many
other initiatives but with a modular design to ease dotfile sharing as the
`metadot` code is split from the dotfile folder.
Instalation
-----------
Get the code:
git clone --recursive git://git.sarava.org/metadot.git
Save the metadot repository anywhere but make sure it's available in your `$PATH`.
Then get some modules. You can get the whole standard module bundle with:
git clone --recursive git://git.sarava.org/rhatto/dotfiles.git ~/.dotfiles
This bundle will hardly suit all your needs. You can fetch individual modules or even
start your own bundle:
mkdir -p ~/.dotfiles/modules
git clone --recursive git://git.sarava.org/rhatto/dotfiles/vim.git ~/.dotfiles/modules/vim
Usage
-----
List existing modules:
metadot ls
Load a module:
metadot load <module>
Load all modules:
metadot load --all
Update a module bundle:
metadot update
Backups are made whenever a module is loaded.
Layout
------
- ~/.dotfiles: where all dotfiles modules are stored
- ~/.backups: backups of old config files
- ~/.custom: some modules use this folder where custom configuration can override default parameters
Module format
-------------
Modules rest at ~/.dotfiles/modules and can be git submodules. File format is:
[path/]<name>[.dot][.link]
Which means files
- with a .link extension are linked at $HOME.
- with a .dot.link extension are converted to a dotfile: vimrc.dot.link is linked as ~/.vimrc.
- with other extensions are ignored.
Also,
- file structure is preserved: file apps/scripts.link is linked as $HOME/apps/scripts.
- nested structures are allowed: config.dot/awesome.link is linked as $HOME/.config/awesome
TODO
----
- Split: metadot, dotfiles and modules should be separate repositories.
- Profile: automatic $PATH inclusion for installed script repositories.
- Check if module is correctly installed.
- Track loaded modules.
- Module descriptions and dependencies.
- Module unloading and restoration.
- Integration with scripts project.
- More file types:
- .sample: copied if no origin file exists
- .sh: added to the profile
- .mkdir: are simply created
- .cp: are copied
- .template: are copied and transformed according to environment or config variables
|