15 KiB
Fedora Gaming PC
Drive Setup
This assumes 2x 1TB drives and 1x 500GB drive. Note that I'm not encrypting the steam drive. This is because you can get slightly better performance out of an unencrypted drive. Plus, realistically, nothing but steam common stuff will be stored there so there's nothing to protect.
- Erase the drives completely. Don't format. Make sure each only has free space.
- Launch the installer
- Select all 3 drives and select "Advanced Custom (Blivet-GUI)"
- Click Done
- On the 500GB drive create a 1024MB ext4 partition, label it boot, and mount it at "/boot"
- On the 500GB drive create a 600MB efi partition, label it efi, and mount it at "/boot/efi"
- On the 500GB drive create an encrypted btrfs partition with the rest of the space and mount it at "/"
- On the slower 1TB drive create an encrypted btrfs partition and mount it at "/home"
- On the faster 1TB drive create an unencrypted btrfs partition and mount it at "/steam"
- Click "Done" and begin installation
btrbk
sudo dnf install btrbk
As usual, you'll need a snapshot service and backup service. These get more complicated with multi-drive mounts (but actually easier at the same time since each volume is self- contained).
/etc/btrbk/btrbk_snapshots.conf
snapshot_preserve_min 24h
snapshot_preserve 24h 14d
volume /mnt/btr_pools
subvolume root
snapshot_dir root/.snapshots
volume /mnt/btr_pools
subvolume home
snapshot_dir home/.snapshots
volume /mnt/btr_pools
subvolume steam
snapshot_dir steam/.snapshots
/etc/btrbk/btrbk_backup.conf
snapshot_preserve_min all
snapshot_create no
target_preserve_min no
target_preserve 24h 7d 4w *m
volume /mnt/btr_pools
subvolume root
snapshot_dir root/.snapshots
target /mnt/backup/root
volume /mnt/btr_pools
subvolume home
snapshot_dir home/.snapshots
target /mnt/backup/home
volume /mnt/btr_pools
subvolume steam
snapshot_dir steam/.snapshots
target /mnt/backup/steam
Then you'll need a service to run btrbk_snapshots and btrbk_backup.
/etc/systemd/system/btrbk_snapshots.service
[Unit]
Description=Runs btrbk with config file at /etc/btrbk/btrbk_snapshots.conf
[Service]
ExecStart=/usr/bin/btrbk -c /etc/btrbk/btrbk_snapshots.conf -v run
/etc/systemd/system/btrbk_backup.service
[Unit]
Description=Runs btrbk with config file at /etc/btrbk/btrbk_backup.conf
[Service]
ExecStart=/usr/bin/btrbk -c /etc/btrbk/btrbk_backup.conf -v run
And timers to run the btrbk services on a regular schedule.
/etc/systemd/system/btrbk_snapshots.timer
[Unit]
Description=Run btrbk_snapshots every hour
[Timer]
OnCalendar=hourly
AccuracySec=10min
Persistent=true
Unit=btrbk_snapshots.service
[Install]
WantedBy=timers.target
/etc/systemd/system/btrbk_backup.timer
[Unit]
Description=Run btrbk_backup every hour
[Timer]
OnCalendar=hourly
AccuracySec=10min
Persistent=true
Unit=btrbk_backup.service
[Install]
WantedBy=timers.target
RDP with autologin
https://askubuntu.com/questions/1396745/21-10-make-screen-share-password-permanent
Autologin
- Enable autologin from the gnome user settings
Create an RDP keychain
- Open "Passwords and Keys" app on the desktop. Password and Keys App
- Create a new "Password Keyring" using the "+" icon. Create a new Password Keyring
- Name the new keyring "Zero Security Keyring" or something that reminds you it will be un-encrypted. Leave the password blank so that the keychain is unencrypted. You will be warned that you are creating an unencrypted keychain.
- Right-click on the new keyring and choose "set as default" Set the new keyring as the default
- Click on the old "Default" keyring and delete "GNOME Remote Desktop RDP Credentials" Delete the old RDP password from the "Default keyring"
- Open settings and set a new RDP password set a new RDP password
- Check that the password was stored under the "Zero Security Keyring" Check that the RDP password was stored in the new keychain
- Right click on "Default" keyring and choose "set as default" Remember to set "Default keyring" as the default
Set Hostname
hostnamectl set-hostname gamebox
Fira Code
Copy all ttf files into /usr/share/fonts/FiraCode
sudo fc-cache -v
Terminal
- Rename default profile to "Fira Code"
- Set the terminal size to 160x60
- Set the default font to Fira Code
- Relaunch the terminal
Disable Gnome Software Updates (packagekitd and software)
To prevent Gnome Shell from starting Software open Settings->Search and disable Software from there.
Run the following to disable auto updating:
sudo systemctl disable packagekit
sudo systemctl stop packagekit
sudo systemctl mask packagekit
dconf write /org/gnome/software/allow-updates false
dconf write /org/gnome/software/download-updates false
Update the system:
sudo dnf update --refresh
Reboot.
Gnome Tweaks
sudo dnf install gnome-tweaks
- Fonts -> Monospace Text -> Fira Code Regular
- Keyboard & Mouse -> Acceleration Profile -> Flat
- Top Bar -> Clock -> Weekday -> On
- Top Bar -> Clock -> Seconds -> On
Disable Hot Corner
dconf write /org/gnome/desktop/interface/enable-hot-corners false
Extensions
sudo dnf install gnome-extensions-app
Restore to ~/.local/share/gnome-shell/extensions
Vitals:
- CPU GHz, CPU %, CPU Temp
- RAM Free
- Disk Free
- Network down, Network up
Automatic Disk Decryption with TPM2
sudo dnf install vim
It's a friendlier experience to just encrypt your root partition with tpm and unlock your remaining drives with key files stored at /etc/lukskeys. This way you only need to reregister one key with your tpm and the remaining drives will be unlocked automatically.
https://gist.github.com/jdoss/777e8b52c8d88eb87467935769c98a95
Create a function in ~./bashrc.d/cryptenroll.sh:
function tpm-luks-enroll {
read -s -p "Password: " PASSWORD
export PASSWORD=$PASSWORD
sudo -E systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+2+4+7 /dev/nvme1n1p3
unset password
}
function tpm-luks-reenroll {
read -s -p "Password: " PASSWORD
export PASSWORD=$PASSWORD
sudo -E systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+2+4+7 --wipe-slot=tpm2 /dev/nvme1n1p3
unset password
}
Add your luks keys to the tpm module and set up boot parameters:
# Enroll for the first time
tpm-luks-enroll
# Add tpm2 configuration option to /etc/crypttab FOR EVERY DISK
luks-$UUID UUID=disk-$UUID none tpm2-device=auto,discard
# Add rd.luks.options=tpm2-device=auto to grub
sudo grubby --args="rd.luks.options=tpm2-device=auto" --update-kernel=ALL
sudo dracut -f
When you update the kernel:
tpm-luks-reenroll
Reboot.
Or you can create a systemd service which does the reenroll automatically:
[Unit]
Description=Automatically runs systemd-cryptenroll on login
[Service]
Type=oneshot
ExecStart=/usr/bin/systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+2+4+7 --wipe-slot=tpm2 /dev/nvme0n1p3
Environment=PASSWORD=<password>
[Install]
WantedBy=multi-user.target
RDP with autologin
https://askubuntu.com/questions/1396745/21-10-make-screen-share-password-permanent
Autologin
- Enable autologin from the gnome user settings
- Create a systemd user service to lock the screen after autologin
mkdir -p ~/.local/share/systemd/user/autolock.service
vim ~/.local/share/systemd/user/autolock.service
~/.local/share/systemd/user/autolock.service
[Unit]
Description=Auto lock after auto login
[Service]
Type=oneshot
ExecStart=/bin/bash -c "sleep 5 && loginctl lock-session"
[Install]
WantedBy=default.target
systemctl --user enable autolock.service
Create an RDP keychain
sudo dnf install seahorse
- Open "Passwords and Keys" app on the desktop. Password and Keys App
- Create a new "Password Keyring" using the "+" icon. Create a new Password Keyring
- Name the new keyring "Zero Security Keyring" or something that reminds you it will be un-encrypted. Leave the password blank so that the keychain is unencrypted. You will be warned that you are creating an unencrypted keychain.
- Right-click on the new keyring and choose "set as default" Set the new keyring as the default
- Click on the old "Default" keyring and delete "GNOME Remote Desktop RDP Credentials" Delete the old RDP password from the "Default keyring"
- Open settings and set a new RDP password set a new RDP password
- Check that the password was stored under the "Zero Security Keyring" Check that the RDP password was stored in the new keychain
- Right click on "Default" keyring and choose "set as default" Remember to set "Default keyring" as the default
Reboot.
Flatpack
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak update
Steam
Install ProtonUp-Qt
flatpak install flathub net.davidotek.pupgui2
Install Steam
sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install steam
sudo chown ducoterra:ducoterra /steam
# If libbz2 is missing (or some other error)
cd ~/.local/share/Steam/
./steam.sh --reset
Flatpak
sudo flatpak install com.valvesoftware.Steam
sudo flatpak install com.valvesoftware.Steam.CompatibilityTool.Proton-GE
flatpak override --user --filesystem=/home/ducoterra/Steam com.valvesoftware.Steam
Enable OBS Game Capture
https://github.com/nowrep/obs-vkcapture
sudo dnf install cmake gcc gcc-c++ obs-studio-devel mesa-libGL-devel vulkan-loader-devel
git clone ssh://git@gitea.reeseapps.com:2222/mirrors/obs-vkcapture.git
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make && make install
Add env OBS_VKCAPTURE=1 %command% to your launch options for the game you want to capture.
OBS
https://www.reddit.com/r/linux_gaming/comments/w4i3qf/easy_way_to_get_good_4k_60fps_obs_encoding
sudo flatpak install \
com.obsproject.Studio \
com.obsproject.Studio.Plugin.Gstreamer \
org.freedesktop.Platform.GStreamer.gstreamer-vaapi \
com.obsproject.Studio.Plugin.OBSVkCapture
Create a new scene and add "Game Capture" to it. When you start a game with the above
launch option (env OBS_VKCAPTURE=1 %command%) OBS will automatically pick it up.
Use advanced settings to select the GStreamer encoder and the VA-API encoder type.
FFMPEG with hardware encoding/decoding
First you'll need mesa-va-drivers-freeworld which provides x264 and hevc support for vaapi decoding. First you'll need to install [https://rpmfusion.org/Configuration](rpm fusion). Then the freeworld drivers need to be swapped with mesa-va-drivers:
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
To check what hardware decoding is supported by your system you'll need vainfo:
sudo dnf install libva-utils
Running vainfo will show all available profiles. You should see H264, HEVC, AV1, and VP9.
Then with ffmpeg you can run
ffmpeg \
-hwaccel vaapi \
-vaapi_device /dev/dri/renderD128 \
-hwaccel_output_format vaapi \
-i input.mkv \
-c:v hevc_vaapi \
-b:v 0 \
test.mp4
Power Button Behavior
The power button is controlled from 2 locations:
- DCONF (or gnoem settings) at
gnome.settings-daemon.plugins.power - ACPI at /etc/acpi/events/powerconf
The powerconf acpi configuration will execute at the same time the gnome settings do. This can lead to situations where the gnome settings say "suspend" but the acpi settings say "shutdown". On waking up your laptop it will immediately shutdown.
The solution is to comment out everything in /etc/acpi/events/powerconf and rely on the
gnome settings OR set the gnome settings to "nothing" and edit
/etc/acpi/actions/power.sh with the behavior you expect. Either way you should pick
one to control power button behavior.
Discord
vim ~/.local/share/applications/Discord.desktop
[Desktop Entry]
Encoding=UTF-8
Name=Discord
Exec=/home/ducoterra/Applications/Discord/Discord
Icon=/home/ducoterra/Applications/Discord/discord.png
Type=Application
Categories=Communication;
AppImage Launcher
Download RPM from https://github.com/TheAssassin/AppImageLauncher/releases/tag/v2.2.0
Snap
sudo dnf install -y snapd
sudo ln -s /var/lib/snapd/snap /snap # for classic snap support
ln -s /var/lib/snapd/desktop/applications ~/.local/share/applications/snap # make apps show up in gnome
sudo reboot now
Minecraft
- You can find extra java versions at /etc/alternatives
- You need to
dnf install xrandrto launch any modpacks - You can create a desktop icon by putting this at ~/.local/share/applications/*.desktop:
[Desktop Entry]
Encoding=UTF-8
Name=Minecraft
Exec=/home/ducoterra/Applications/minecraft-launcher
Icon=/home/ducoterra/.icons/minecraft-launcher.png
Type=Application
Categories=Games;
Sound
If you want to disable a specific device or tell Fedora not to use a specific device as output or input (looking at you yeti microphone, you're not a speaker), you can install pulse audio control for much more fine-tuned... control.
Setting your speakers to analog output seems to work best for a USB dac if it has a separate volume knob since this ties the volume knob on the dac to the internal volume of your computer.
Setting your mic to analog input works just fine on a yeti usb mic.
sudo dnf install pavucontrol
Disable Wayland (Don't do this)
Edit /etc/gdm/custom.conf
[daemon]
WaylandEnable=false
DefaultSession=gnome-xorg.desktop
Discord sharing not working
THIS IS PROBABLY A PER-APP THING
Likely the thing you're trying to share doesn't work, it's not wayland's fault.
If you're trying to share firefox - download the firefox binary and dnf uninstall the other one. For whatever reason the preinstalled binary doesn't like screen share. You can use the following:
~/.local/share/applications/firefox.desktop
[Desktop Entry]
Encoding=UTF-8
Name=Firefox
Exec=/home/ducoterra/Applications/firefox/firefox-bin
Icon=/home/ducoterra/.icons/firefox.svg
Type=Application
Categories=Browser;
Install ffmpegthumbnailer, remove totem
totem-thumbnailer crashes all the time and isn't as good as ffmpeg's thumbnailer. What's more, totem video player ("Videos" by default on gnome) is not as good as vlc and doesn't work very well for anything more than basic video playback.
sudo dnf remove totem
sudo dnf install ffmpegthumbnailer
Login script from SSH
Useful for when you can't log in yourself but you need to launch steam.
loginctl unlock-sessions
read -s pass && echo -n $pass | gnome-keyring-daemon --unlock --replace
