# dot
## Description
There is no place like $HOME. Home directory setup and bootstrapping guide.
## Table of Contents
* [XDG](#xdg)
* [Full Install](#full-install)
* [Dotfiles](#dotfiles)
* [Bootstrap](#bootstrap)
* [Acknowledgments](#acknowledgments)
* [License](#license)
## XDG
xdg-user-dirs is a tool to help manage "well known" user directories like the
desktop folder and the music folder. It also handles localization
(i.e. translation) of the filenames.
xdg-user-dirs-update is ran early in the login phase. It reads a configuration
file `/etc/xdg/xdg-user-dirs.defaults`. You should replace this file as root
before logging in or opening the file manager. I usually truncate the original
names, and add a few more directories.
You can find the original `/etc/xdg/xdg-user-dirs.defaults`[Here](https://myrepos.dev/Randy-Jordan/eg/raw/branch/main/xdg/user-dirs.defaults)
You can find the custom `/etc/xdg/xdg-user-dirs.defaults`[Here](https://myrepos.dev/Randy-Jordan/eg/raw/branch/main/xdg/user-dirs.custom)
Here is an easy script to automate the download and replacement of the defaults.
`curl -fsSL https://myrepos.dev/Randy-Jordan/sh/raw/branch/main/xdg_custom.sh | /bin/bash`
## Full Install
Once you've got your home directories setup, you may want to download all
needed packages from apt. Here is a script to automate a full install.
`curl -fsSL https://myrepos.dev/Randy-Jordan/sh/raw/branch/main/full_install.sh | /bin/bash`
## Dotfiles
Now that we've got all the needed packages. Lets take care of our dotfiles. I
will be following the guide in the acknowledgments.
From scratch.
```bash
git init --bare $HOME/.dot
alias config='/usr/bin/git --git-dir=$HOME/.dot/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no
echo "alias config='/usr/bin/git --git-dir=$HOME/.dot/ --work-tree=$HOME'" >> $HOME/.bashrc
```
Now add all of your dotfiles. Here is a snippet to make things easier.
`curl -fsSL https://myrepos.dev/Randy-Jordan/sh/raw/branch/main/init_dot.sh | /bin/bash`
Here is how you can migrate this setup to another system.
```bash
git clone --bare https://myrepos.dev/Randy-Jordan/dot.git $HOME/.dot
function config {
/usr/bin/git --git-dir=$HOME/.dot/ --work-tree=$HOME $@
}
mkdir -p .config-backup
config checkout
if [ $? = 0 ]; then
echo "Checked out config.";
else
echo "Backing up pre-existing dot files.";
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | xargs -I{} mv {} .config-backup/{}
fi;
config checkout
config config status.showUntrackedFiles no
```
And here is that in a snippet as well.
`curl -fsSL https://myrepos.dev/Randy-Jordan/sh/raw/branch/main/init_dl.sh | /bin/bash`
## Bootstrap
Here is a script to automate all of this.
`curl -fsSL https://myrepos.dev/Randy-Jordan/sh/raw/branch/main/bootstrap.sh | /bin/bash`
## Acknowledgments
[Tom Preston-Werner README Driven Development](https://tom.preston-werner.com/2010/08/23/readme-driven-development)
[Make a README](https://www.makeareadme.com/)
[Choose a LICENSE](https://choosealicense.com/)
[Atlassian - How to store Dotfiles](https://www.atlassian.com/git/tutorials/dotfiles)
## License