Fedora 28 Setup Guide
When I sit down to write anything, I want to be using an Operating System that is stable, supports the tools I use, and maximizes the amount of time I spend being productive. This post is WIP.
I keep coming back to Fedora; the latest version is stable enough to rely on, with support for the latest packages. Previously I ran exclusively Debian after a long period of turmoil with Manjaro, Fedora, Ubuntu and many others. Debian is very reliable, but as I broaden my tinkering, it seemed more difficult than was warranted to keep all my tools up to date on Debian.
And so, I use Fedora. Here is how I configure my personal OS.
Important: I assume the reader is able to distinguish between commands that require SuperUser and commands that should be run without. Installing libraries or modules as a superuser in js, python and ruby will cause awful problems.
Table of Contents:
Baseline
Install Fedora
- Download a Fedora Workstation disk image.
- Become superuser with
su
orsudo su
- Check how to address your usb with
lsblk
- Unmount all USB partitions with
umount //dev/sdx*
- Format the USB drive with
mkfs.vfat //dev/sdx
- Write the downloaded image to the USB with
dd
- Install Fedora on your machine.
Update Packages
Before continuing, it is best to update everything and reboot so the new kernel is used. First, configure dnf by adding the following lines to //etc/dnf/dnf.conf
(you’ll need to be SuperUser):
fastestmirror=true
deltarpm=true
Next, update the system with dnf update --refresh
.
In the future, the following commands can be used to update and install packages:
# To gain SuperUser priviliges:
su
# To update the system's packages:
dnf update
# To install any package:
dnf install packagename
# To leave SuperUser mode:
exit
Important Tweaks
- Set up the terminal by installing the
terminus-fonts
andterminus-fonts-console
packages, setting Terminus as the custom font, disabling scrollbars, disabling the terminal bell, hiding the menu bar by default, and setting the color scheme to white on black. Add terminal to your GNOME favourites. - Swap the CapsLock key for an additional Esc; it’s far easier to hit Esc when it’s right by your pinkie. Do this by installing
gnome-tweak-tool
and checking make caps lock an additional esc in Keyboard and Mouse > Additional Layout Options. (I also set window focus to Sloppy at this point, and enable the window minimize button.) - Set the hostname: as SuperUser:
hostnamectl set-hostname --static "newname"
# Many popular packages are found in the RPMFusion repos,
# so it's a good idea to add them:
dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
Install Development Tools
Install the major dependancies for most development:
dnf groupinstall "Development Tools"
Version Control
Git with SSH keys makes version control a breeze. assuming all your projects are stored in GitHub repos, generating and storing an SSH key means you won’t need to type your password with every push, as you would with simple HTTP authentication. First, generate the key; it is safe to accept all the defaults.
ssh-keygen -t rsa -b 4096 -C "email@email.com"
Assuming you have an ssh agent installed (most distros do by default,) add the key to your ssh service:
ssh-add ~/.ssh/id_rsa
Assuming Github is being used, the publickey located at ~/.ssh/id_rsa.pub
can be saved as a new SSH key in you Github account settings. To complete git setup, it is also necessary to set git defaults:
git config --global user.name "First Last"
git config --global user.email "email@email.com"
git config --global core.editor vim
Repositories can now be cloned like so:
git clone git@github.com:UserName/RepoName.git
C and C++
Well, this is pretty easy on Unixlikes:
dnf install gcc gcc-c++
Java
I typically program with Java 8, which is also a Scala dependancy:
dnf install java-1.8.0-openjdk-devel
JavaScript
To install nodejs and npm:
dnf install nodejs
Python
To install Python 3 and pip:
dnf install python3-devel
Scala
For basic fiddling, install the basic scala repl:
dnf install scala
For larger projects, SBT is required:
curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
sudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/
sudo dnf install sbt
Ruby
Install ruby prerequisites:
dnf install git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel openssl-devel readline-devel zlib-devel
Install RBENV (not as SuperUser):
cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
rbenv install 2.4.2
gem install bundler
LaTeX
Configure Development Tools
Vim
Write your vim config, .vimrc
, to ~/.vimrc
.
syntax on
colorscheme ron
set tabstop=2
set shiftwidth=2
set softtabstop=0
set expandtab
set smarttab
set autoindent
nnoremap <F4> :! clear && gcc % && clear && ./a.out<cr>
dnf install gnome-terminal-nautilus
Extras
Google Chrome
dnf install fedora-workstation-repositories
dnf config-manager --set-enabled google-chrome
dnf install google-chrome-stable