This repository stores and manages personal and system configurations for Fedora 40. It is based on a bare repository and inspired by Atlassian's article and DT's video. Some system configurations are inspired by devangshekhawat.
- Setup
- Usage
- Software
- DNF Tuning / Faster Updated
- Firmware Update
- Media Codecs
- H/W Video Acceleration
# change to home directory
cd $HOME
# create (temporary) directory for system_mindset
sm_dir=$HOME/.config/sm/
mkdir -p $sm_dir
# create (temporary) alias for system mindset
alias sm='/usr/bin/git --git-dir=${sm_dir}system_mindset/ --work-tree=$HOME'
# add Repository to .gitignore to prevent recursion problems and delete
# previous added lines
sed -i '/system_mindset/d' .gitignore
echo ".config/sm # inserted by system_mindset" >> .gitignore
# clone system_mindset
git clone --bare [email protected]:dpelkmann/system_mindset.git ${sm_dir}system_mindset
# checkout bare repository. It would overwrite existing config files, therefore
# they will be backuped.
backup_dir=backup_$(date +%F_%T)
for file2backup in $(sm checkout 2>&1 | egrep "\s+\." | awk {'print $1'})
do
echo "$file2backup"
dest=$(dirname $file2backup)
mkdir -p ${sm_dir}${backup_dir}/$dest/
mv $file2backup ${sm_dir}${backup_dir}/$dest/
done
# finally checkout
sm checkout
# untracked files should not be shown
sm config --local status.showUntrackedFiles no
# download indexed submodules
sm submodule update --init --recursive
# update downloaded submodules
sm submodule update --recursive --remote
Keep in mind that your .bashrc need this sm entry:
###############################################################################
# + system_mindset - Dotfile Management via git bare
# | 1. source: https://www.youtube.com/watch?v=tBoLDpTWVOM
# | 2. source: https://www.atlassian.com/git/tutorials/dotfiles
sm_dir=$HOME/.config/sm/
alias sm='/usr/bin/git --git-dir=${sm_dir}system_mindset/ --work-tree=$HOME'
# +--+ manually managed, so not show other files in $HOME
sm config --local status.showUntrackedFiles no
# +--+ update modified, deleted and new files to commit
alias sm_stage-changes='sm add $(sm status | grep "modified\|deleted\|new file" | sed "s/.*://")'
# +--+ remove updated files
alias sm_unstage-changes='sm reset --mixed'
# +--+ add tig support
sm config tig.status-show-untracked-files false
alias sm_tig='GIT_DIR=${sm_dir}system_mindset/ GIT_WORK_TREE=$HOME tig'
You can therefore work with sm <cmd>
in the same way as with git <cmd>
. For example, use sm pull
to pull or sm push
to push. Add aliases that suit you best. I like the command line tool tig, so I use the alias sm_tig
to use it for adding, deploying and committing my changes.
# + MenuLibre (advanced menu editor: https://github.com/bluesabre/menulibre)
sudo dnf install menulibre
# + dconf-editor (A GSettings editor for GNOME: https://gitlab.gnome.org/GNOME/dconf-editor)
# | 1. /org/gnome/settings-daemon/plugins/media-keys/volume-step => 1
sudo dnf install dconf-editor
# + Gnome Tweaks (https://gitlab.gnome.org/GNOME/gnome-tweaks)
sudo dnf install gnome-tweaks
# + Gnome Extension Manager (https://github.com/mjakeman/extension-manager)
flatpak install flathub com.mattjakeman.ExtensionManager
# + Gnome Extensions
# +--+ AppIndicator and KStatusNotifierItem Support
firefox https://extensions.gnome.org/extension/615/appindicator-support/
# +--+ Bing Wallpaper
firefox https://extensions.gnome.org/extension/1262/bing-wallpaper-changer/
# +--+ Hue Lights
firefox https://extensions.gnome.org/extension/3737/hue-lights/
# +--+ Espresso
firefox https://extensions.gnome.org/extension/4135/espresso/
# +--+ Vitals
firefox https://extensions.gnome.org/extension/1460/vitals/
# +--+ Brightness control using ddcutil
firefox https://extensions.gnome.org/extension/2645/brightness-control-using-ddcutil/
# +--+ No overview at start-up
firefox https://extensions.gnome.org/extension/4099/no-overview/
# +--+ Tiling Shell
firefox https://extensions.gnome.org/extension/7065/tiling-shell/
# + Application Programs
# +--+ AusweisApp2 (eID client of the Federal Republic of Germany)
sudo dnf install AusweisApp2
# +--+ Cryptomator (https://github.com/cryptomator)
flatpak install flathub org.cryptomator.Cryptomator
# +--+ OneDrive CLI-Tool (https://github.com/abraunegg/onedrive)
sudo dnf install onedrive
# | +--+ OneDrive GUI (https://github.com/bpozdena/OneDriveGUI/releases/latest/)
# | | 1. Download newest AppImage
# | | 2. Create or update OneDriveGUI Application entry in Menu Editor with AppImage
# | | 3. Add image to startup application in Gnome Tweaks
mkdir -p $HOME/Software/OneDriveGUI/
cd $HOME/Software/OneDriveGUI/
wget https://github.com/bpozdena/OneDriveGUI/releases/download/v1.0.3/OneDriveGUI-1.0.3-x86_64.AppImage
chmod +x ./OneDriveGUI*
cd
# +--+ LibreWolf
# | +--+ add the repo
curl -fsSL https://rpm.librewolf.net/librewolf-repo.repo | pkexec tee /etc/yum.repos.d/librewolf.repo
# | +--+ install the package
sudo dnf install librewolf
# | | * disable tabs: https://superuser.com/a/1619663
# +--+ Microsoft Edge Browser
flatpak install flathub com.microsoft.Edge
# +--+ KeePassXC (https://github.com/keepassxreboot/keepassxc)
sudo dnf install keepassxc
# + Color Picker
sudo dnf install gcolor3
# + DDC Control
sudo dnf install ccdcontrol-gtk
# + solaar (Linux device manager for Logitech devices: https://github.com/pwr-Solaar/Solaar)
# | 1. Add to startup applications in Gnome Tweaks
sudo dnf install solaar
# + inkscape
sudo dnf install inkscape
# + cherrytree
flatpak install flathub com.giuspen.cherrytree
# + Spotify
flatpak install flathub com.spotify.Client
# + OpenRGB
# | install udev (https://openrgb.org/udev)
flatpak install flathub org.openrgb.OpenRGB
# + MQTT Explorer (https://github.com/thomasnordquist/MQTT-Explorer)
# | 1. Download newest AppImage (https://github.com/thomasnordquist/MQTT-Explorer/releases/latest/)
# | 2. Create or update MQTT-Explorer Application entry in Menu Editor with AppImage
# | 3. Add image to startup application in Gnome Tweaks
mkdir -p $HOME/Software/mqtt-explorer/
cd $HOME/Software/mqtt-explorer/
wget https://github.com/thomasnordquist/MQTT-Explorer/releases/download/v0.4.0-beta.6/MQTT-Explorer-0.4.0-beta.6.AppImage
chmod +x ./MQTT-Explorer*
cd
# + system
dnf update --refresh
# +--+ nodejs
npm install -g npm
npm update
npm audit
# +--+ neovim
# | +--+ update Plug
nvim --headless +PlugUpgrade +qa
# | +--+ update plugins
nvim --headless +PlugUpdate +qa
# | +--+ update coc-modules
nvim +CocUpdate
The standard dnf settings can be improved to make it faster (inspired by devangshekhawat). Add to your /etc/dnf/dnf.conf:
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
skip_if_unavailable=True
best=False
fastestmirror=0
deltarpm=true
max_parallel_downloads=10
If your system supports firware update through lvfs, update it.
fwupdmgr get-devices
fwupdmgr refresh --force
fwupdmgr get-updates
fwupdmgr update
dnf groupupdate 'core' 'multimedia' 'sound-and-video' --setopt='install_weak_deps=False' --exclude='PackageKit-gstreamer-plugin' --allowerasing && sync
dnf swap 'ffmpeg-free' 'ffmpeg' --allowerasing
dnf install gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel ffmpeg gstreamer-ffmpeg
dnf install lame\* --exclude=lame-devel
dnf group upgrade --with-optional Multimedia
dnf install ffmpeg ffmpeg-libs libva libva-utils
dnf config-manager --set-enabled fedora-cisco-openh264
# enable OpenH264 plugin in firefox (about:addons => Plugins)