Skip to main content

Notes for a Consistent Devuan Ascii Configuration Across Multiple Machines

Posted on: 09/11/2017 · Estimated reading time: 4 minutes to read

It may sound like a First World Problem, but I’ve got three computers on which I prefer to run some kind of GNU/Linux, and I’ve hard a hard time keeping a consistent configuration on all three.

Also, I’m never going to get any writing done if I don’t layoff the distro-hopping. I decided to go with Devuan GNU/Linux, a distribution that forked from Debian after the majority of Debian’s developers decided to replace SysVinit with systemd. It looked like a solid distro with the old-school Unix feel I prefer, so I decided to go with it on all of my computers:

  • thagirion: a refurbished Lenovo M92p mid-tower.
  • imaginos: a refurbished Lenovo Thinkpad T430s.
  • desdinova: an old System76 Pangolin Performance (Clevo W24AEU) laptop

After downloading the DVD ISO image and following the installation instructions, I compiled the following notes to ensure that I would have a reasonably consistent environment whether I was using thagirion in my home office, desdinova in my living room, or imaginos on the road.

Upgrade to Testing

  1. Open the sources list file.
sudo nano /etc/apt/sources.list
  1. Replace contents with the following.
    deb http://us.mirror.devuan.org/merged/ ascii main non-free contrib

  2. Execute the following commands in order.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get dist-upgrade
sudo apt-get autoremove
sudo shutdown -r now

Install fonts, themes, and additional software

Let’s add some stuff I’m going to need, and some extras for desktop customization.

sudo apt-get install fonts-firacode fonts-noto \
fonts-ebgaramond chameleon-cursor-theme murrine-themes \
faenza-icon-theme intel-microcode emacs git build-essential \
ruby ruby-dev libxss1 quodlibet gimp gimp-help-en \
openbox lxappearance rxvt-unicode pandoc neofetch \
redshift-gtk abcde quodlibet imagemagick jpegoptim \
vim flac claws-mail claws-mail-doc claws-mail-tools \
claws-mail-plugins hexchat hexchat-plugins hexchat-otr \
ttf-mscorefonts-installer zlib1g-dev \
apt-transport-https checkinstall

Performance Improvements

I should also install the Liquorix kernel and add the following tweaks.

sudo tee -a /etc/sysctl.d/99-sysctl.conf <<-EOF
vm.swappiness=1
vm.vfs_cache_pressure=50
EOF

…and…

sudo tee -a /etc/sysctl.d/99-sysctl.conf <<-EOF
vm.dirty_background_bytes=16777216
vm.dirty_bytes=50331648
EOF

For all machines, crack open /etc/fstab and set all ext4 partitions to use the noatime option for improved performance.

Wifi

For laptops with built-in Intel wifi adapters (imaginos and desdinova), also run sudo apt-get install firmware-iwlwifi.

Afterward, add “iwlwifi” to /etc/modules and reboot.

imaginos and desdinova would probably also benefit from TLP: sudo apt-get install tlp.

For thagirion, my Lenovo M92p desktop, I need the current Realtek 802.11ac (rtl8812au) kernel driver. Clone it from Github, build with make, then install using sudo checkinstall.

Once it’s installed, add “8812au” to /etc/modules and reboot. NOTE: The 8812au driver must be rebuilt and re-installed after every kernel upgrade.

Improved font rendering

In each user’s home directory, create a .fonts.conf file containing the following.

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <match target="font">
  <edit mode="assign" name="rgba">
   <const>rgb</const>
  </edit>
 </match>
 <match target="font">
  <edit mode="assign" name="hinting">
   <bool>true</bool>
  </edit>
 </match>
 <match target="font">
  <edit mode="assign" name="hintstyle">
   <const>hintslight</const>
  </edit>
 </match>
 <match target="font">
  <edit mode="assign" name="antialias">
   <bool>true</bool>
  </edit>
 </match>
  <match target="font">
  <edit mode="assign" name="lcdfilter">
    <const>lcddefault</const>
  </edit>
  </match>
</fontconfig>

Improving Firefox

Gonna install some add-ons to make Firefox suck less.

Add-ons for All Machines

  • Privacy Badger
  • uBlock Origin
  • Link Cleaner

That’s right. I block ads. If that bothers you, I suggest you reevaluate your life choices.

Add-ons for Firefox on thagirion

  • NoSquint Plus
  • Custom Style Script

NoSquint Plus allows me to set a default zoom level for all tabs/windows in Firefox. On a big screen I prefer to zoom to at least 120%, and it’s annoying to do so on a per-tab basis.

I need Custom Style Script to make Mastodon suck less. Once it’s installed, add the following CSS for https://octodon.social/web/getting-started.

.drawer {
  width:512px !important;
}

.column {
  width: 512px !important;
}

Now Mastodon looks good on the ultra-wide screen I’ve got hooked up to thagirion.

Set up Jekyll

Execute the following command: sudo gem install bundler jekyll

Clone Repositories from Github

Let’s get the default Spacemacs config.

cd ~
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

Time to pull down my stuff.

cd ~/Documents
git clone https://github.com/matthewgraybosch/matthewgraybosch.com.git
git clone https://github.com/matthewgraybosch/starbreakersaga.com.git
git clone https://github.com/matthewgraybosch/work.git
git clone https://github.com/matthewgraybosch/orgmode.git
git clone https://github.com/matthewgraybosch/commentaries.git
git clone https://github.com/matthewgraybosch/starbreaker-xorg-themes.git
git clone https://github.com/matthewgraybosch/jekyll-blog-posts.git
git clone https://github.com/matthewgraybosch/starbreaker.git

Getting the Latest GNU Emacs

I thought I could get away with using Spacemacs using Emacs 24.5.1, which is is available in Devuan’s Ascii repository, but the initial configuration barfed. That left me with a choice: try pulling only Emacs and its dependencies out of the unstable Ceres repository, a wholesale switch to Ceres, or building from source.

I decided to build from source. After grabbing the latest tarball from the GNU Project FTP site, I had some prep work to do.

First, I created a ~/custom directory for use as an install destination.

Next, I edited my ~/.profile and added $HOME/custom/bin to the beginning of my $PATH variable to ensure that my custom version of Emacs would take precedence.

After that, I extracted my Emacs source tarball, switched to the Emacs source directory, and ran the provided ./configure script. Autoconf reported missing library dependencies, so I installed them until Autoconf stopped bitching. The resulting package list is as follows:

sudo apt-get install libxpm-dev libxpm4 libgif-dev \
libgif7 libtiff5-dev libtiff5 libtinfo5 libtinfo-dev \
libncurses5 libncurses5-dev libmagickcore-dev libmagic1 \
libmagic-dev libgtk-3-0 libgtk-3-dev

Once I had installed these packages, Autoconf spat out a Makefile. I ran it again like so:

./configure --prefix=/home/demifiend/custom
make
make install

Once I had logged out and logged back in, I was rocking a current Emacs. :metal: