- Checklist
- Make Drive Space for Fedora Install
- Download Fedora Silverblue
- Write Silverblue Installer to USB Drive
- Install Fedora Silverblue
- Firstboot Questions
- Set the hostname
- Install Silverblue Packages
- Enable sshd
- Clone this repo
- Install Flatpaks for Chromium and Spotify
- Git Config (~/.gitconfig)
- Bashrc Customizations
- Keyboard Shortcuts
- Install dotnet
- Install Node, Yarn
- Setup Neovim
- Install/Setup JetBrains Rider
- Install/Setup VS Code
- Install AWS CLI
- Disable Intel Wifi Powersaving
- Install Rust with ARM Target Support
- Add user to dialout group to allow use of serial ports
- Toolbox Notes
Setup checklist and guide for getting up and running quickly on a new Fedora Silverblue installation
-
Download latest Fedora Silverblue and write to USB stick
-
Follow GUI installer, making space in partition tool if needed.
-
GUI apps: VS Code, Rider, Chrome, Spotify
-
CLI apps: nvim, gcc/make/etc, strace, lsof, patch, jq
-
Dev tools: nodejs, npm, yarn, cargo, dotnet, aws
-
Setup git (name, email)
-
Setup NVIM using nvim.appimage and restore VIM config dir from git
-
Install and configure VS Code with custom vim config
-
Install and configure Rider with custom vim config
You probably already have Windows installed on your PC or laptop. This installation is likely taking up nearly the whole drive so you need to make space for Linux.
Good news: Recent versions of Windows allow you to easily resize the primary partition (C:) using a built-in utility.
Get installation media here: https://silverblue.fedoraproject.org/download
Use the Fedora Media Writer or your favorite disk image writing tool.
-
Boot from the USB disk
-
Select automatic partitioning
-
Wait 10-20 minutes while installer does its thing
Enable third party software repositories so you can use closed-source software like proprietary GPU drivers (nvidia) and Google Chrome.
Before doing anything else, go ahead and update all packages.
First, cancel any automatically running rpm-ostree tasks:
sudo rpm-ostree cancel
Then refresh package metadata:
sudo rpm-ostree refresh-md
Perform an atomic system upgrade:
sudo rpm-ostree upgrade
Install additional layered packages. NOTE: These are the packages that I need in my everyday work/life:
rpm-ostree install ccache chrpath diffstat docbook5-schemas docbook-dtds gcc-c++ java-1.8.0-openjdk libzip mesa-libGL-devel minicom openjade pandoc perl-bignum perl-Thread-Queue python2 python3-GitPython python3-jinja2 rpcgen rubygem-asciidoctor SDL-devel socat strace texinfo wireguard-tools xterm google-chrome pwgen autoconf automake binutils bison flex gdb glibc-devel libtool make byacc cscope ctags elfutils indent ltrace perf valgrind ElectricFence astyle cbmc check cmake coan cproto insight nasm pscan python3-scons remake scorep splint yasm zzuf picocom libusb1-devel libhid-devel openssl1.1
Finally reboot to use all new packages:
sudo systemctl reboot
The new-machine-quick-setup-guide git repository contains this guide along with some useful scripts we will run:
cd ~/Code git clone https://github.com/xtianbetz/new-machine-quick-setup-guide.git cd new-machine-quick-setup-guide
Run 'bin/setup-flatpak-apps.sh' script:
./bin/setup-flatpak-apps.sh
Example git config file:
[user] email = your.name@company.com name = Your Name [init] defaultBranch = main
All customizations are now stored in the bash/x.sh file
You also want git-prompt.sh which will give you a nice bash prompt.
The default bashrc/bash_profile on recent Fedora versions automatically searches for a .bashrc.d folder.
Just create a ~/.bashrc.d directory and copy both files there.
mkdir -p ~/.bashrc.d
Make sure to adjust any paths in x.sh for your desired tool versions.
Use gnome keyboard settings to add a custom mapping so Ctrl+Alt+T launches a new terminal
Download the latest dotnet and extract in $HOME/Toolchains.
Prevent build related to openssl errors by modifying /etc/ssl/openssl.cnf and commenting the line as shown here:
#openssl_conf = openssl_init
To prevent errors related to libicu, you must set an environment variable so that dotnet knows to look for a specific libicu version. The 'bash/x.sh' file already includes the following:
export CLR_ICU_VERSION_OVERRIDE="72.1"
Download node and extract it in $HOME/Toolchains.
Use the following commands to configure 'npm' to install "global" packages into your home directory.
mkdir "${HOME}/.npm-packages" npm config set prefix "${HOME}/.npm-packages"
Download nvim.appimage and put it in $HOME/bin.
Install nvim configs:
cd ~/.config git clone git@github.com:xtianbetz/.vim.git nvim --recurse-submodules
Inside nvim you will need to install a few interesting things:
:CocInstall coc-tsserver coc-json coc-html coc-css coc-phpls coc-omnisharp
Extract Rider tar.gz under ~/Toolchains
Install the vim extension.
Use ~/.ideavimrc for setup (see the ideavimrc in my vimrc repo)
Install a Desktop shortcut from the 'Tools' menu.
Download VS Code to ~/Toolchains/VSCode-linux-x64
Add desktop entry ~/.local/share/applications/vscode.desktop:
[Desktop Entry] Version=1.0 Type=Application Name=Visual Studio Code Icon=/var/home/x/Toolchains/VSCode-linux-x64/resources/app/resources/linux/code.png Exec=/var/home/x/Toolchains/VSCode-linux-x64/bin/code Comment=A cross-platform IDE for Everything Categories=Development;IDE; Terminal=false StartupNotify=true
Launch 'Code' from GNOME launcher and immediately install the Vim and C# extensions.
TODO: link to settings.json for VIM vscode
create /etc/modprobe.d/iwlwifi.conf with following contents:
options iwlwifi beacon_timeout=128
Get rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Install rust stable
rustup install stable
Install the target needed to build for 32-bit ARM Linux:
rustup target add armv7-unknown-linux-gnueabihf
Modify ~/.cargo/config so linker works (note: this assumes you the right binary in ~/Toolchains and in your PATH).
[target.armv7-unknown-linux-gnueabihf] linker = "arm-none-linux-gnueabihf-gcc"
Let your user use serial ports like /dev/ttyUSB0
sudo su grep -E '^dialout:' /usr/lib/group >> /etc/group usermod -aG dialout yourusername