Skip to content
dotfiles for archlinux/ubuntu with emphasis on terminal
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
_doc
airy
android-input
android-net
android
arc
archlinux
at
audio
awk
backlight
backup
bar
bash
bin
bitlbee
blind
bluetooth
boot
btrfs
calc
callgraph
camera
capture
ccache
chroot
color
compton
confluence
conky
console
copyq
core
cppcheck
ct
ctags
cvs
dash
davmail
dbus
dedup
defaults
dict
diff
disk
djvu
dlt
dmenu
doxygen
drivers
dunst
eclipse
elf
elinks
emacs
evernote
fbless
feh
festival
ffmpeg
filter
find
firefox
firewall
firmware-asus
fonts
fs
ftp
fzf
gamepad
gcalcli
gcc
gdb
general
getmail
git
gnome-keyring
gnupg
gperftools
graphviz
grep
gtk
guile
haskell
hex
hg
i3
imagemagick
imapfilter
init
iptables
irc
j8
java
jira
json
jtag
kernel
kinesis
krita
latex
lisp
locate
lock
logitech
mailsync
maint
mbsync
mcomix
media
minicom
moc
modprobe
monitor
mouse
mpd
mpv
mutt
ncmpcpp
net
netctl
nfs
notify
notmuch
open
pacman
pager
pandoc
parallel
pass
patch
perl
pidgin
playonlinux
power
pqiv
printer
privoxy
python
qemu
qr-code
qute
radare2
ramdisk
ranger
readline
regex/doc
rsync
rtorrent
ruby
samba
screen
sed
serial
sh
sir
site
skype
slides
snapper
snow
socat
sql
ssh
st
steam
surf
surfraw
svn
sxiv
syncthing
synergy
systemd
tcpdump
tftp
tizen
tmux
tor
touchpad
trace
traceroute
tray
tty
ubuntu
udev
urxvt
util
uzbl
valgrind
vbox
video-amd
video-intel
video-nvidia-old
video-nvidia
video-optimus
video
vifm
vim
vimb
vis
vnc
vpn
w3m
wacom
webex
weechat
wget
wifi
windows
wine
wm
wolframalpha
work/doc
wxhexeditor
xautolock
xdg-open
xkb
xmind
xml
xmonad
xorg
xsel
xurls
yaml
youtube
zathura
zeal
znc
zsh
.gitignore
LICENSE
Makefile
README.md

README.md

airy

Modular system configuration and package installation.

  • Encapsulates user settings to manage by version control systems.
  • Aimed for development purposes with bias to vim, tiling WM and terminals.
  • Automatic setup on clean system, with following update/maintenance.

Currently supported host systems:

  • Arch Linux (preferable)
  • Ubuntu-based distro (clean if possible)

Initial

TEMP: Manually symlink or mount --bind

ln -s  /data/chroots /chroot
ln -s  /home/work    /work
ln -s  ~/Downloads   /_dld
ln -s  /data/music   ~/.config/mpd/music

ALSO

  • ecrypt your SSH keys
  • add SSH keys to github/gitlab

Install

If you wish to feel what it's like, default setup contains only necessary symlinks and terminal tools, preserving your system as much as possible.

mkdir -p ~/aura && cd ~/aura
git clone https://github.com/amerlyq/airy
cd airy
make           # install basic 'airy' symlinks
make all       # clean all and then install pkgs
make continue  # to continue installation after error was fixed

Go make some tea, in one minute basic shell tools will be installed.

Private parts

You can keep your system profiles and private modules/resources in your own private repository (gitlab.com, bitbucket.com, dropbox, etc).

Overall directories structure (in repo's root or some subdirectory) is next:

repo
├── mods
│   ├── fonts
│   │   └── setup
│   └── mutt_gmail
│       ├── install
│       └── setup
├── prf
│   ├── hostname1  # home
│   ├── hostname2  # work
│   └── hostname3  # server (headless)
└── setup

Main repo/setup must be launched on clean system before everything else. It will symlink your choosen profile/modules and launches system setup.

#!/bin/bash -eu
cd "$(dirname "$(readlink -e "$0")")"

airy=~/aura/airy
[[ -d $airy ]] || (mkdir -p "${airy%/*}" &&
  git clone 'https://github.com/amerlyq/airy' "$airy")

config=${XDG_CONFIG_HOME:-~/.config}/airy
[[ -d ~/.local/bin && -L $config ]] || (cd "$airy" && make install)
[[ -L $config ]] || (echo 'Err: $config must be symlink'; exit)

[[ :$PATH: == *:$HOME/.local/bin:* ]] || export PATH=~/.local/bin:$PATH

repo=$(git rev-parse --show-toplevel)
linkcp "$repo/prf" "$config/prf"
linkcp "$repo/prf/$(hostname)" "$config/profile"
linkcp "$repo/mods" "$config/mod/${repo##*/}"

In such way your own clean system setup will be as simple as:

mkdir -p ~/aura && cd ~/aura
git clone https://github.com/$yourname/$reponame
cd $reponame && ./setup

Note, that in case of using Xorg mods, to fully setup system you must run setup command inside Xorg session -- because some vars (like dpi) impossible to extract from plain console. Therefore on clean system install the setup script must be run twice -- in console and then in Xorg.

Profile

Each profile prf/hostname is written in plain bash. These text files usually non-executable and sourced by scripts explicitly.

# vim: ft=sh
CURR_PROF=home
AIRY_MODS=( airy pacman git zsh vim ranger tmux xorg )

### Git ###
MAIN_NAME="<Full Name>"
MAIN_MAIL="username@gmail.com"
MAIN_SKYPE="<username>"

Profiles can be nested/inherited. This allows to distribute settings and nicely reuse parts of configs for similar hosts.

dprf=$(dirname "$(readlink -e "$BASH_SOURCE")")
source "$dprf/home" || return
CURR_PROF=home_vbox
AIRY_SKIP+=( browser )
MAIN_MAIL="vboxuser@email.com"

Example how to use profile vars in your own modules/scripts:

#!/bin/bash -e
source ~/.shell/profile
...
r.mutt-acc ${MAIN_MAIL:?}
You can’t perform that action at this time.