aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 4c48b65f0f79e9f72fbe095bb1f42752baaa1281 (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
95
96
97
98
99
100
101
RSD - Rhatto Software Distribution
==================================

_A repository with locally-installed applications_

This repository hosts applications I keep installed locally inside my home
directory. Some of these applications also manages my configurations such as
dotfiles.

It is my starting point to keep all my configuration centralized in a single
versioned tree, so if I need to setup an account in a new machine -- be it
a server or personal computer -- I just need to clone this little thing and
run a couple commands to have my usual configuration ready to use.

In other words... this is where everything begins. The way I bootstrap my
whole digital environment across machines along with tools that helps me
manage my computing machinery. The metaproject, the mother of all my folder
structure that unfolds from here.

If you don't like my config -- which might be the case as this kind of thing is
so personal -- you still can use my approach to do the same management with
your own stuff. In that case, fork this repository and replace my setup with
your own submodules, dotfiles and inception procedure :)

Installation
------------

Get the code:

    git clone --recursive https://git.fluxo.info/rhatto/apps $HOME/apps

Then check the source integrity of the latest release:

    /usr/bin/git -C $HOME/apps verify-commit HEAD

Note that `/usr/bin/git` is called to avoid any other `git` wrappers or aliases
you might have available on your shell.

To use a project distributed by this repository simply add it's folder into
your `$PATH`.

Inception
---------

**WARNING:** running `inception` might replace your existing configuration with
my defaults. You probably don't want to do that, except if you like my config.
If you just want to use my scripts, skip the rest of this file.

If you want to use `inception` with your own config, feel free to change things
the way it best fits your taste.

If you want to use all all my applications and dotfiles, replacing your
existing configuration with mine, simply run

    $HOME/apps/inception install --all --deps

Once installed locally, you can sincronize this config to a remote host using
rsync+ssh:

    inception deploy <hostname>

This commands uses rsync to send all contents of your `$HOME/apps` and
`$HOME/.dotfiles` to a remote server, so please do not add personal or
sensitive stuff in those places. Then it makes sure your dotfiles are properly
linked.

Updating
--------

You can fetch updates in this repository using

    inception fetch

This commands don't automatically update your working copy. Instead, it just
does a git fetch in the `remotes/origin` repository and display it's last
commit log including git signature.

You can check version differences using `inception version` and also standard
git commands such as `git-log(1)`. Once you're satisfied and want to apply
changes to the current working copy including updating and initializing
submodules, type

    inception merge

Folder structure
----------------

This repository also plays well with the following `$HOME` folder structure:

    apps: this repository
    code: other software projects
    data: media assets (git-annex and other repositories)
    file: other, non-software projects
    load: download area
    mail: maildir
    temp: temporary folder

Note that all folder names have:

* The same lenght so I get free alignment on lists.
* Lowercase characters to save typing.