Post-install script for Fedora and RHEL 9 clones to create your ultimate development environment
UPDATE: Work has now moved to the Debian version. Debian 12 is now the best platform.
Are you tired of spending hours setting up your development environment every time you switch to a new machine? Look no further than the Developer Workstation Setup Script!
This setup script uses Ansible and Bash to quickly and easily install a variety of development and general use software on both cutting edge Fedora and stable Red Hat Enterprise Linux 9 compatible distributions.
The Developer Workstation Setup Script has the following features:
Development | Browsers | Graphics | Sound and video | Security and backup |
---|---|---|---|---|
Helix | Firefox | Krita | MPV | KeepassXC |
Node.js / Deno | nnn file browser | ImageMagick | Handbrake | BorgBackup |
Kitty | MKVToolNix | |||
Lazygit | Blender | |||
GitHub CLI | OBS Studio | |||
Pandoc | ||||
Shellcheck / Shfmt | ||||
Bat | ||||
Ripgrep | ||||
Delta |
These scripts are designed to be run immediately after installing the operating system.
workstation
from the software selection option during installation. You must also give your user account administrative privileges, this is a tick-box when you are creating the user.cd
into it: git clone https://github.com/David-Else/developer-workstation-setup-script
If you are using el9, you need to first enable the epel repository:
sudo dnf config-manager --set-enabled crb
and sudo dnf install epel-release
.
Install Ansible and the community collection:
sudo dnf install ansible-core ansible-collection-community-general
install.yml
and install-setup.bash
scripts with your own software preferences.ansible-playbook ./install.yml -K
and ./install-setup.bash
Note: Your BECOME
password in Ansible is your user password, your account must have administrative privileges.
After installation, you must run nnn
once with -a
to create the fifo file for the preview feature to work.
Based on your software selection, hardware, and personal preferences, you may want to make the following changes:
cat /proc/asound/cards
Example output:
0 [HDMI ]: HDA-Intel - HDA ATI HDMI
HDA ATI HDMI at 0xf7e60000 irq 31
1 [USB ]: USB-Audio - Scarlett 6i6 USB
Focusrite Scarlett 6i6 USB at usb-0000:00:14.0-10, high speed
Play some audio and examine the stream for your audio interface (in this case card1
):
cat /proc/asound/card1/stream0
Example output:
Focusrite Scarlett 6i6 USB at usb-0000:00:14.0-10, high speed : USB Audio
Playback:
Status: Running
Interface = 1
Altset = 1
Packet Size = 216
Momentary freq = 48000 Hz (0x6.0000)
Feedback Format = 16.16
Interface 1
Altset 1
Format: S32_LE
Channels: 6
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Bits: 24
Channel map: FL FR FC LFE RL RR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 1
Implicit Feedback Mode: No
cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/
~/.config/pipewire/pipewire.conf
:The Fedora default is:
#default.clock.allowed-rates = [ 48000 ]
For the Scarlett 6i6 example above replace it with:
default.clock.allowed-rates = [ 44100 48000 88200 96000 176400 192000 ]
Don't forget to remove the #
comment.
Note: Copy code blocks by clicking on the top right-hand corner, then just paste them into your terminal.
cat <<'EOF' | sudo tee /etc/security/limits.d/audio.conf
@audio - rtprio 95
@audio - memlock unlimited
EOF
Add yourself to the audio
group that you have given the privileges to with sudo usermod -aG audio [username]
.
Create a user config file for your (PipeWire) JACK settings:
mkdir -p ~/.config/pipewire/jack.conf.d/
cat >~/.config/pipewire/jack.conf.d/jack.conf <<EOF
jack.properties = {
node.latency = 256/96000
node.rate = 1/96000
node.quantum = 256/96000
node.force-quantum = 256
}
EOF
libva-intel
(older systems) or intel-media-driver
driver for Intel CPUs with built-in GPUs to use HW acceleration with MPV.This is needed since Fedora 37 and later... and mainly concern AMD hardware since NVIDIA hardware with nouveau doesn't work well:
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld
Settings/Displays
it often forgets.Create a file /usr/share/glib-2.0/schemas/93_hidpi.gschema.override
with the following content for 200% scaling:
[org.gnome.desktop.interface]
scaling-factor=2
Reinitialize schemas with sudo glib-compile-schemas /usr/share/glib-2.0/schemas
deno completions bash > deno.sh
and sudo mv deno.sh /etc/profile.d
.Change the global .vale.ini
file in your $HOME
directory to point to an empty directory you want to store your styles, for example:
StylesPath = ~/Documents/styles
Run vale sync
. You can create a new config file at Config Generator
.HEIC
photos) by adding:sudo dnf install libheif-freeworld libheif-tools heif-pixbuf-loader webp-pixbuf-loader
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
git config --global user.signingkey key
git config --global commit.gpgsign true
If you would like to use Code for things that Helix still struggles with (like debugging), and still use all the modal keyboard shortcuts, I suggest installing silverquark.dancehelix
or asvetliakov.vscode-neovim
and using these settings:
settings.json
{
// font size
"editor.fontSize": 15,
"markdown.preview.fontSize": 15,
"terminal.integrated.fontSize": 15,
// asvetliakov.vscode-neovim
"editor.scrollBeyondLastLine": false,
"vscode-neovim.neovimExecutablePaths.linux": "/usr/local/bin/nvim", // for el9 clones, or "/usr/bin/nvim" for Fedora
"workbench.list.automaticKeyboardNavigation": false,
// various
"window.titleBarStyle": "custom", // adjust the appearance of the window title bar for linux
"editor.minimap.enabled": false, // controls whether the minimap is shown
"workbench.activityBar.visible": false, // controls the visibility of the activity bar in the workbench
"window.menuBarVisibility": "hidden", // control the visibility of the menu bar
"files.restoreUndoStack": false, // don't restore the undo stack when a file is reopened
"editor.dragAndDrop": false, // controls whether the editor should allow moving selections via drag and drop
"telemetry.enableTelemetry": false // disable diagnostic data collection
}
You might also like to install ms-vscode.live-server
for live debugging in Code or the browser.
Q: Does this script disable the caps lock key? I've noticed that it works during login but after that it stops working altogether.
A: It makes the caps lock into delete for touch typing purposes, to change it modify this line in install.yml
:
- { key: "/org/gnome/desktop/input-sources/xkb-options", value: "['caps:backspace', 'terminate:ctrl_alt_bksp', 'lv3:rwin_switch', 'altwin:meta_alt']" }