amtoine / dotfiles

My personal archlinux config files.
GNU General Public License v3.0
21 stars 2 forks source link
config

This is my personal config repository for archlinux.

The following document gives a high level overview of my linux config.
This particular config has been tested on ArchLinux only (last update on 22-02-20).
Thus, only pacman and yay have been used and tested as arch and AUR package managers respectively.
The reader is highly adviced to search the internet and in particular the ArchWiki, EVEN in NON arch-based systems!!

First, an overview of the repo is given in section 1.
The software I use and a link to the official doc are presented and linked in section 2.
In section 3, the automatic install script is presented.
Finally, ways to contribute to this project are put forward in section 4 for who is interested and a gallery of photos is presented in section 5, to give an idea of the final rendering of the config.

If you want a quick brief of what dotfiles really are, I recommend this video of FireShip.

Table Of Content.

1. Overview and architecture. [toc]

This repo has been created using a bare repository, i.e. initialization has been done with git init --bare $HOME/.dotfiles instead of the usual git init. This command creates a bare repository, meaning that there is no working directory inside it, only .git files. This is normal as bare repositories are not meant to host working files, but only track files inside the working directory.
This makes the process of tracking dotfiles much easier! There is no need anymore to copy files into the dotfiles repository, track them and put them back where they should be using symlinks! A simple alias of the form cfg='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' is enough to use git on any file inside $HOME.

Hence, the architecture of the files above is a perfect mirror, regarding tracked files only, of my system!

Notes:

If you want more information about bare git repositories, you can check one of the following resources:

2. The software I use. [toc]

COMING SOON

Note

  • the surf config has been moved here
  • the qtile config has been moved here

3. The install process. [toc]

download Arch

some requirements

on Ubuntu, there are some requirements to install before anything else

# general
sudo apt install git cmake curl

# nushell
sudo apt install libssl-dev

# neovim
sudo apt install libtool-bin gettext

on ArchLinux

# minimal
sudo pacman -S openssl openssh vim git libxft cmake unzip xorg xorg-xinit bspwm sxhkd tmux qutebrowser xclip libnotify rofi slock dunst pinentry at-spi2-core gtk3 bluez bluez-utils cronie ranger

first of all, we will install Nushell to make our lives easier:

use /tmp/nupm/nupm nupm install --path /tmp/nupm/ nupm install --path /tmp/nu-git-manager/


> **Note**  
> in the following we assume `nupm` and `gm` have been brought into scope with
> ```nushell
> use nupm
> ```
> and
> ```nushell
> use nu-git-manager gm
> ```
> respectively

- pull down repositories
```nushell
const REPOS = [
    [url,                                         bare,  fetch, push];

    [git://git.suckless.org/st,                   false, git,   git],
    [https://github.com/amtoine/nu-git-manager,   false, https, ssh],
    [https://github.com/amtoine/dotfiles,         true,  https, ssh],
    [https://github.com/amtoine/scripts,          false, https, ssh],
    [https://github.com/amtoine/tmux-sessionizer, false, https, ssh],
    [https://github.com/neovim/neovim,            false, https, https],
    [https://github.com/nushell/nu_scripts,       false, https, https],
    [https://github.com/nushell/nupm,             false, https, https],
    [https://github.com/nushell/nushell,          false, https, https],
]

$REPOS | each {|repo|
    if $repo.bare {
        gm clone $repo.url --fetch $repo.fetch --push $repo.push --bare
    } else {
        gm clone $repo.url --fetch $repo.fetch --push $repo.push
    }
}

$PKGS | each {|pkg| nupm install --force --path (gm status | get root.path | path join $pkg) }

- install Nushell from source

cargo install --path (gm list --full-path | find "nushell/nushell" | get 0)

- install the ST terminal emulator

in st/st

cp ~/.config/st/config.h . sudo make clean install

- install the Rio terminal emulator from source

cargo install --force --locked --git https://github.com/raphamorim/rio

- install the Alacritty terminal emulator from source

cargo install --force --locked --git https://github.com/alacritty/alacritty --rev cad0cbec

- install the Zellij terminal multiplexer

cargo install --locked zellij@0.38.0

- install Neovim from source

in neovim/neovim

git checkout v0.9.0 make CMAKE_BUILD_TYPE=Release sudo make install

in amtoine/kickstart.nvim

tk setup tk update

- install Nix

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

- install some more software

cargo install git-delta fd-find ripgrep sd sudo apt install gnome-screensaver gnome-shell-extensions tmux wl-clipboard bat

- enable bluetooth

systemctl enable bluetooth

- enable cron jobs

systemctl enable cronie

- install Discord with `use ~/.config/discord/install.nu *` and then `discord install --help`

## Ubuntu-specific instructions
- settings > multitasking > 4 workspaces
- settings > keyboard > default layout to us
- edit `/etc/default/keyboard` with
```bash
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=
XKBOPTIONS=""

BACKSPACE="guess"

4. Contribute. [toc]

YOU can contribute to this project in the wonderfull world of linux, arch and configuration!

5. Gallery. [toc]

COMING SOON