larbs

Automatically deploy dotfiles and install programs to auto-configure an Arch Linux installation
git clone git@git.lukesmith.xyz:larbs
Log | Files | Refs | README | LICENSE

README.md (6703B)


      1 # Luke's Auto-Rice Bootstraping Scripts (LARBS)
      2 
      3 
      4 ## Installation:
      5 
      6 On an Arch based distribution as root, run the following:
      7 
      8 ```
      9 curl -LO lukesmith.xyz/larbs.sh
     10 bash larbs.sh
     11 ```
     12 
     13 That's it.
     14 
     15 ## What is LARBS?
     16 
     17 LARBS is a script that autoinstalls and autoconfigures a fully-functioning
     18 and minimal terminal-and-vim-based Arch Linux environment.
     19 
     20 LARBS was originally intended to be run on a fresh install of Arch Linux, and
     21 provides you with a fully configured diving-board for work or more
     22 customization. But LARBS also works on already configured systems *and* other
     23 Arch-based distros such as Manjaro, Antergos and Parabola (although Parabola,
     24 which uses slightly different repositories might miss one or two minor
     25 programs).
     26 
     27 Here are some of the things LARBS sets up:
     28 
     29 - Installs i3-gaps, a tiling window manager, with my fully featured
     30   configuration along with dozens of lightweight and vim-centric terminal
     31   applications that replace the more over-encumbering
     32   programs on most machines.
     33 - Massive documentation making use even for novices seamless. A help document
     34   with all bindings for the window manager accessible with `Super+F1` at all
     35   times, as well as commands such as `getkeys` which print the default bindings
     36   of terminal applications. You can even stream instructional videos on topics
     37   with `Super+Shift+E`.
     38 - Installs [my dotfiles](https://github.com/lukesmithxyz/voidrice) giving as
     39   popularized on [my YouTube channel](https://youtube.com/c/Lukesmithxyz).
     40 - Sets up system requirements such as users, permissions, networking, audio and
     41   an AUR manager.
     42 - All done behind a `dialog` based user interface.
     43 
     44 ## Changes since first release
     45 
     46 - More documentation in the `getkeys` program and `mod+shift-e`.
     47 - Luke's build of st is now the default terminal, instead of urxvt. This
     48   includes:
     49   	- Full unicode compatibility
     50 	- vim-like bindings
     51 	- Scrollback with keys and mouse, clipboard use and other add ons to
     52 	  the default st build
     53 	- Xresources colors, allowing the use of wal/pywal
     54 - i3status is the status bar instead of Polybar, which was bloated and failed
     55   to build on many machines. The new i3status includes the modules below, all
     56   of which are constructed to be as minimal and light on system resources as
     57   possible:
     58   	- Weather forecasts using `wttr.in`, with highs, lows and rain chance.
     59 	- Current song information from `mpd`
     60 	- Unread mail from Luke's `mutt-wizard`
     61 	- Possible pacman updates
     62 	- Status of torrents in transmission-daemon
     63 	- Expected date, time, battery, internet and volume modules
     64 - Switch from mocp to mpd/ncmpcpp for music.
     65 - System is more minimalist/suckless.
     66 - dmenu is used instead of rofi for simplicity's sake.
     67 - Deployment of my new mutt-wizard for secure offline email configuration
     68   instead of config files for the user to manually edit.
     69 - Firefox instead of qutebrowser for default browser (qutebrowser configs
     70   remain for qutebrowser afeccionados)
     71 - A default profile of Firefox including some privacy features, an ad-blocker
     72   and VimVixen, for vim-based keyboard shortcuts.
     73 - Extensive implementation of dmenu, including for mounting/unmounting drives,
     74   display selection, confirmation for shutdown and other crucial commands, link
     75   handling and screen/audio recording.
     76 - Updates to config files can be pulled with git now.
     77 - i3 window resize now intuitive directions
     78 - Removal of a lot of brainlethood in the original design, where I relocated
     79   configs for alleged extensibility's sake. That's all been fixed now.
     80 - Configs for the new versions of qutebrowser, newsboat/newsbeuter, neomutt,
     81   etc.
     82 - Link handling scripts for mutt, newsboat and vim
     83 - vi mode is now default in bash (with retention of emacs-mode ctrl-l)
     84 - Caps lock functions both as a super key and escape key with xcape.
     85 - Use of the much better, newer version of my shortcut-sync.
     86 - And the repository is *significantly* smaller than it was before, meaning a
     87   faster download.
     88 - A million and one other tweaks and bug fixes.
     89 
     90 ## Customization
     91 
     92 By default, LARBS uses the programs [here in progs.csv](progs.csv) and installs
     93 [my dotfiles repo (voidrice) here](https://github.com/lukesmithxyz/voidrice),
     94 but you can easily change this by either modifying the default variables at the
     95 beginning of the script or giving the script one of these options:
     96 
     97 - `-r`: custom dotfiles repository (URL)
     98 - `-p`: custom programs list/dependencies (local file or URL)
     99 - `-a`: a custom AUR helper (must be able to install with `-S` unless you
    100   change the relevant line in the script
    101 
    102 ### The `progs.csv` list
    103 
    104 LARBS will parse the given programs list and install all given programs. Note
    105 that the programs file must be a three column `.csv`.
    106 
    107 The first column is a "tag" that determines how the program is installed, ""
    108 (blank) for the main repository, `A` for via the AUR or `G` if the program is a
    109 git repository that is meant to be `make && sudo make install`ed.
    110 
    111 The second column is the name of the program in the repository, or the link to
    112 the git repository, and the third comment is a description (should be a verb
    113 phrase) that describes the program. During installation, LARBS will print out
    114 this information in a grammatical sentence. It also doubles as documentation
    115 for people who read the csv or who want to install my dotfiles manually.
    116 
    117 Depending on your own build, you may want to tactically order the programs in
    118 your programs file. LARBS will install from the top to the bottom.
    119 
    120 If you include commas in your program descriptions, be sure to include double quotes around the whole description to ensure correct parsing.
    121 
    122 ### The script itself
    123 
    124 The script is broken up extensively into functions for easier readability and
    125 trouble-shooting. Most everything should be self-explanatory.
    126 
    127 The main work is done by the `installationloop` function, which iterates
    128 through the programs file and determines based on the tag of each program,
    129 which commands to run to install it. You can easily add new methods of
    130 installations and tags as well.
    131 
    132 Note that programs from the AUR can only be built by a non-root user. What
    133 LARBS does to bypass this by default is to temporarily allow the newly created
    134 user to use `sudo` without a password (so the user won't be prompted for a
    135 password multiple times in installation). This is done ad-hocly, but
    136 effectively with the `newperms` function. At the end of installation,
    137 `newperms` removes those settings, giving the user the ability to run only
    138 several basic sudo commands without a password (`shutdown`, `reboot`,
    139 `pacman -Syu`).
    140 
    141 ## To-do list
    142 
    143 - Provide documentation on how to update dotfiles from remote repository.
    144 - Enable tap to click.
    145 - Keyboard luminosity script.
    146 - Add notification icons?