Instructions
+Table of Contents
+-
+
- 0.1. information info +
- 0.2. installing fedora minimal with btrfs snapshots (snapper) + + +
- 0.3. how to make new user and add to wheel +
- 0.4. prerequisites +
- 0.5. installing dotfiles + + +
- 0.6. setting up rpmfusion +
- 0.7. installing dnf packages +
- 0.8. installing swayfx (window manager) +
- 0.9. configuring sudoers +
- 0.10. Make zsh the default shell for the user. +
- 0.11. librewolf (browser) + + +
- 0.12. doom emacs +
- 0.13. lf (file manager) +
- 0.14. interception tools (keyboard input mappings) + + +
- 0.15. sway notifications +
- 0.16. autotiling in sway (optional) +
- 0.17. sworkstyle (workspace icons) (optional) + + +
- 0.18. uxn +
- 0.19. sc-im (terminal spreadsheet) +
- 0.20. nsxiv (image viewer) +
- 0.21. pip packages + + +
- 0.22. go packages
+
-
+
- 0.22.1. pup +
+ - 0.23. packages from source/binaries + + +
- 0.24. AppImages + + +
- 0.25. installing cargo +
- 0.26. setting up flatpak +
- 0.27. setting up virtualbox +
- 0.28. flatpak packages + + +
0.1. information info
++This org document is a list of instructions on how to install the whole setup of my personal system, including installation of standalone programs. +
+0.2. installing fedora minimal with btrfs snapshots (snapper)
++this sections assumes that you know how to use sway (window manager), neovim (text editor), basic terminal shell commands, burn an iso to disk, as well as using the anaconda installer. +
+ ++get the os image (Fedora Everything) from here https://alt.fedoraproject.org/en/ and burn it to your usb/other. +
+0.2.1. verifying the iso file
+-
+
- Download the checksum file (from https://alt.fedoraproject.org/en/) into the same directory as the image you downloaded. + +
- Import Fedora’s GPG key(s) +
curl -O https://fedoraproject.org/fedora.gpg
+
+-
+
- Verify the CHECKSUM file is valid +
gpgv --keyring ./fedora.gpg *-CHECKSUM ++
-
+
- Verify the checksum matches +
sha256sum -c *-CHECKSUM ++
0.2.2. installing fedora and setting up btrfs with snapshots
++differences/notes before continuing with the installation: +
+ +-
+
- some dependencies aren’t available with ’fedora custom operating system’. before installing snapper install these packages: +
sudo dnf install neovim sway firefox locate git bzip2 ++
-
+
neovim
: a text editor to edit files
+firefox
: a browser to follow along guide
+locate
,git
,bzip2
: missing dependencies not included in the guide.
+
+- software selection will be
fedora custom operating system
+
+boot your fedora installer media and follow this guide, make sure to boot with EUFI mode: +https://sysguides.com/install-fedora-38-with-snapshot-and-rollback-support/ +or for full disk encryption +https://sysguides.com/install-fedora-38-with-full-disk-encryption-snapshot-and-rollback-support/ +
+0.3. how to make new user and add to wheel
+# make a user and add to the wheel group +useradd -m -g wheel user_name +# set a password +passwd user_name ++
0.4. prerequisites
++for building/installing packages, also some dependencies for doomemacs, and zsh. +
+ +sudo dnf install curl ca-certificates make automake gcc gcc-c++ kernel-devel git util-linux-user zsh ntpsec dnf-plugins-core golang flatpak cmake libevdev-devel systemd-devel yaml-cpp-devel boost-devel ripgrep fd-find ShellCheck tar pip npm ++
0.5. installing dotfiles
+# getting dotfiles +git clone https://gitea.bubbletea.dev/cho/dotfiles ~/.dots + +cp -rv ~/.dots/home/default/.* ~/ + +# or using stow +# make sure you make directories you don't want as symlinks +mkdir -p ~/.local/share/applications +mkdir -p ~/.local/bin +mkdir -p ~/.config +mkdir -p ~/.config/shell +mkdir -p ~/.config/mpd +mkdir -p ~/.config/zsh +mkdir -p ~/.config/newsboat +mkdir -p ~/.config/nvim + +cd ~/.dots/home/ && stow default --target=$HOME/ ++
0.5.1. how to unstow dotfiles
+cd ~/.dots/home/ && stow -D default --target=$HOME/ ++
0.6. setting up rpmfusion
++from https://rpmfusion.org/Configuration and https://rpmfusion.org/Howto/Multimedia +
+ +# rpmfusion +sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm +sudo dnf groupupdate core + +# multimedia +sudo dnf swap ffmpeg-free ffmpeg --allowerasing +sudo dnf groupupdate multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin +sudo dnf groupupdate sound-and-video + +#amd +sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld +sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld + +#dvd +sudo dnf install rpmfusion-free-release-tainted +sudo dnf install libdvdcss + +# non-free firmware +sudo dnf install rpmfusion-nonfree-release-tainted +sudo dnf --repo=rpmfusion-nonfree-tainted install "*-firmware" ++
0.7. installing dnf packages
++this will install programs, as well as (99% of) dependencies of shell scripts and configuration included within lf (file manager) +the other dependency not included in packages.txt is `pup` (included in a section below) +
+ +sudo dnf install -y $(cat ~/.dots/packages.txt) ++
0.8. installing swayfx (window manager)
+sudo dnf copr enable swayfx/swayfx +sudo dnf install ++
0.9. configuring sudoers
++Allow wheel users to sudo with password and allow several system commands +(like `shutdown` to run without password). +
+ +echo "%wheel ALL=(ALL:ALL) ALL" >/etc/sudoers.d/00-wheel-can-sudo +echo "%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/shutdown,/usr/bin/reboot,/usr/bin/systemctl suspend,/usr/bin/wifi-menu,/usr/bin/mount,/usr/bin/umount,/usr/bin/dnf update,/usr/bin/dnf update -y,/usr/bin/dnf upgrade,/usr/bin/dnf upgrade,/usr/bin/dnf makecache,/usr/bin/dnf makecache -y,/usr/bin/loadkeys" >/etc/sudoers.d/01-cmds-without-password +echo "Defaults editor=/usr/bin/nvim" >/etc/sudoers.d/02-visudo-editor ++
0.10. Make zsh the default shell for the user.
+name=$USER +chsh -s /bin/zsh "$name" >/dev/null 2>&1 +sudo -u "$name" mkdir -p "/home/$name/.cache/zsh/" +sudo -u "$name" mkdir -p "/home/$name/.config/abook/" +sudo -u "$name" mkdir -p "/home/$name/.config/mpd/playlists/" ++
+at this point, you should logout and login again to set the variables. +
+0.11. librewolf (browser)
++from https://librewolf.net/installation/fedora/ +
+ +sudo dnf config-manager --add-repo https://rpm.librewolf.net/librewolf-repo.repo + +sudo dnf install librewolf ++
0.11.1. plugins, etc
++https://github.com/ranmaru22/firefox-vertical-tabs +https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/ +https://addons.mozilla.org/en-US/firefox/addon/nicothin-dark-theme/ +https://addons.mozilla.org/en-US/firefox/addon/tomorrow-theme-night +https://support.mozilla.org/en-US/kb/compact-mode-workaround-firefox +
+0.12. doom emacs
++first we need to install marked for markdown support +
+sudo npm install -g marked
+
++then install emacs +
+sudo dnf install emacs
+
++alternatively build emacs with native compilation and pgtk for better compatibility with wayland +
++## clone the emacs repository +git clone git://git.savannah.gnu.org/emacs.git + +## install dependencies +sudo dnf install gcc atk-devel cairo-devel freetype-devel fontconfig-devel dbus-devel giflib-devel glibc-devel libgccjit-devel libpng-devel libjpeg-turbo-devel libjpeg-turbo libtiff-devel libX11-devel libXau-devel libXdmcp-devel libXrender-devel libXt-devel libXpm-devel ncurses-devel xorg-x11-proto-devel zlib-devel gnutls-devel librsvg2-devel m17n-lib-devel libotf-devel libselinux-devel alsa-lib-devel gpm-devel liblockfile-devel libxml2-devel autoconf bzip2 cairo texinfo gzip desktop-file-utils libacl-devel harfbuzz-devel jansson-devel systemd-devel lcms2-devel systemd-rpm-macros libtree-sitter-devel gtk3-devel webkit2gtk3-devel gnupg2 sysprof-devel + +## build emacs 29.1 +cd emacs +git checkout emacs-29.1.90 +./autogen.sh +./configure --with-dbus --with-gif --with-jpeg --with-png --with-rsvg \ + --with-tiff --with-xft --with-xpm --with-gpm=no \ + --with-xwidgets --with-modules --with-harfbuzz --with-cairo --with-json \ + --with-tree-sitter --with-pgtk --with-native-compilation +make -j$(nproc) +sudo make install ++
+install doom emacs: +
+git clone https://github.com/doomemacs/doomemacs ~/.emacs.d
+~/.emacs.d/bin/doom install
+
+0.13. lf (file manager)
++this fork of lf allows for sixel graphics, which allows you to see images in terminals that supports sixel +
+ ++from https://github.com/horriblename/lf#installation +
+ +env CGO_ENABLED=0 go install -ldflags="-s -w" github.com/horriblename/lf@latest +mkdir -p $HOME/.cache/lf ++
0.14. interception tools (keyboard input mappings)
++change caps lock to escape (when pressed) and mod (when held down) +
+ ++INSTALL FROM SOURCE +
+ +git clone https://gitlab.com/interception/linux/tools.git interception-tools +cd interception-tools +cmake -B build -DCMAKE_BUILD_TYPE=Release +cmake --build build +cd build +sudo make install ++
git clone https://gitlab.com/interception/linux/plugins/dual-function-keys.git +cd dual-function-keys +make && sudo make install ++
+it’s a good idea to install these as well, if anything doesn’t compile. +
+ +sudo dnf groupinstall "Development Tools" "Development Libraries" ++
0.14.1. installing the configuration
+sudo cp -rv ~/.dots/etc/interception /etc/ +sudo cp ~/.dots/etc/systemd/system/udevmon.service /etc/systemd/system/ + +# enable +sudo systemctl enable udevmon.service ++
0.15. sway notifications
++from https://github.com/ErikReider/SwayNotificationCenter#fedora +
+dnf copr enable erikreider/SwayNotificationCenter +dnf install SwayNotificationCenter ++
0.16. autotiling in sway (optional)
+pip install i3ipc +pip install autotiling==1.8 ++
0.17. sworkstyle (workspace icons) (optional)
++this is disabled by default within sway config, but compatible with waybar and sway +
+ ++installing this needs cargo, to install go here: 0.25 +this also needs 0.17.1 +
+cargo install sworkstyle ++
0.17.1. install icon fonts (Nerd Fonts)
++for sworkstyle icons in waybar +
+ +mkdir ~/.local/share/fonts +curl -LOv https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/NerdFontsSymbolsOnly.tar.xz --output-dir /tmp/ +tar -xvf /tmp/NerdFontsSymbolsOnly.tar.xz -C ~/.local/share/fonts/ ++
0.18. uxn
++installing this just for catclock +
+cd Downloads/ +curl -LOv https://rabbits.srht.site/uxn/uxn-essentials-lin64.tar.gz +tar xvf uxn-essentials-lin64.tar.gz +mv uxn ~/.local/ ++
0.19. sc-im (terminal spreadsheet)
++I’m using this for sc files +
+ ++from https://github.com/andmarti1424/sc-im/wiki/Installing-on-Fedora-27 +
+sudo dnf install libzip libzip-devel libxml2-devel ncurses-devel byacc git gcc gnuplot +git clone https://github.com/andmarti1424/sc-im.git +cd sc-im/src/ +make +sudo make install ++
0.20. nsxiv (image viewer)
+dnf copr enable mamg22/nsxiv +dnf install nsxiv ++
0.21. pip packages
+0.21.1. keepmenu (dmenu keepassxc client)
++https://github.com/firecat53/keepmenu/blob/main/docs/install.md#install-recommended +
+pip install --user keepmenu ++
0.21.2. pulsemixer (pulseaudio controller)
+pip install --user pulsemixer ++
0.21.3. termdown (terminal timer/stopwatch)
+pip install termdown ++
0.22. go packages
+0.22.1. pup
++needed for rssadd RSS scanning to work +
+ +go install github.com/ericchiang/pup@latest ++
0.23. packages from source/binaries
+0.23.1. simple-mtpfs (for mounting usb)
++install dependencies: +
+sudo dnf install libgcc fuse-devel libmtp-devel autoconf-archive
+
++https://github.com/phatina/simple-mtpfs#installation +
+ +git clone https://github.com/phatina/simple-mtpfs +cd simple-mtpfs +./autogen.sh +mkdir build && cd build +../configure +make +sudo make install ++
0.23.2. mpvpaper
++animated wallpapers (used by `change-background`) +
+ +# install dependencies +sudo dnf install meson ninja-build pkg-config wayland-protocols-devel wayland-devel mpv-devel wlroots-devel +# Clone +git clone --single-branch https://github.com/GhostNaN/mpvpaper +# Build +cd mpvpaper +meson build --prefix=/usr/local +ninja -C build +# Install +sudo ninja -C build install ++
0.23.3. 7-zip
++get the downloads from https://www.7-zip.org/download.html +if you’re using modern hardware, it’s usually 64-bit linux x86-x64 +
+ +# downloading and extracting the file +cd ~/Downloads/ +curl -O <download-url> +mkdir 7-zip/ +cd 7-zip/ +tar -xvf ../<filename>.tar.xz +# put it into a PATH directory +sudo cp 7zz /usr/local/bin/ ++
0.24. AppImages
+0.24.1. syncplay
++from https://syncplay.pl/download/ +
+curl -LOv https://github.com/Syncplay/syncplay/releases/download/v1.7.0/Syncplay-1.7.0-x86_64.AppImage +chmod +x Syncplay-*.AppImage +mv Syncplay-*.AppImage ~/.local/bin/syncplay ++
0.25. installing cargo
++https://doc.rust-lang.org/cargo/getting-started/installation.html +
+ +
+when asked, choose to customize installation, and then choose `no` when it asks to modify PATH variable. (it’s already set in ~/config/shell/profile
)
+
curl https://sh.rustup.rs -sSf | sh
+
+0.26. setting up flatpak
++from https://flatpak.org/setup/Fedora +
+ +flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo ++
0.27. setting up virtualbox
+sudo usermod -a -G vboxusers default
+
+0.28. flatpak packages
++remember to set permissions with Flatseal, especially access to personal files according to what you want the software to have before launching them. +
+0.28.1. flatseal
+flatpak install -y com.github.tchx84.Flatseal ++
0.28.2. Unity
+flatpak install flathub com.unity.UnityHub ++
0.28.3. Foliate (Epub reader)
+flatpak install flathub com.github.johnfactotum.Foliate ++
0.28.4. bottles and dependencies
+-
+
- gamescope +
- mangohud +
- OBS VkCapture tools +
- OBS VkCapture plugin +
flatpak install -y com.valvesoftware.Steam.Utility.gamescope com.usebottles.bottles org.freedesktop.Platform.VulkanLayer.MangoHud org.freedesktop.Platform.VulkanLayer.OBSVkCapture obs-studio-plugin-vkcapture com.obsproject.Studio ++
0.28.5. steam
+flatpak install -y com.valvesoftware.Steam ++
0.28.6. rpsc3
+sudo flatpak install -y net.rpcs3.RPCS3
+
++limits.conf settings https://github.com/RPCS3/rpcs3/issues/9328 +
+ +sudo su +printf '* hard memlock unlimited\n* soft memlock unlimited' >> /etc/security/limits.conf ++
0.28.7. cemu
+flatpak install flathub info.cemu.Cemu ++
0.28.8. discord
+flatpak install flathub com.discordapp.Discord ++
0.28.9. spotify
+flatpak install flathub io.github.hrkfdn.ncspot +flatpak install flathub com.spotify.Client ++
1. fixes
+1.1. crashes with wayland under amd gpus
++see https://bbs.archlinux.org/viewtopic.php?id=270468 +https://forum.manjaro.org/t/graphics-glitches-freeze-up-with-new-comp-error-ring-gfx-timeout/55979/6 +
+sudo cp ~/.dots/usr/local/bin/radcard* /usr/local/bin/ +sudo cp ~/.dots/etc/systemd/system/radcard.service /etc/systemd/system/ +sudo systemctl enable --now radcard.service ++
+you can check the status with `radcard.sh get` , make sure the output is as follows: +
+power_dpm_state: performance +power_dpm_force_performance_level: high ++
2. todos
+2.1. TODO remove Virtual Box
+2.2. TODO remove autotiling
+2.3. TODO write dependencies and programs to separate files
+2.4. add packages / other
+2.4.1. installing bubblejail (WIP)
+git clone https://github.com/igo95862/bubblejail +cd bubblejail +git checkout tags/0.8.1 +sudo dnf install scdoc +sudo dnf install python3 +sudo dnf install python3-jinja2 +sudo dnf install python3-tomli-w +sudo dnf install python3-tomli +sudo dnf install libseccomp +sudo dnf install python3-pyqt6 +sudo dnf install python3-pyxdg +sudo dnf install bubblewrap +sudo dnf install xdg-dbus-proxy +meson setup build +cd build +meson compile +sudo meson install ++
2.5. setting up termux (WIP)
+-
+
- install termux-api and termux-styling from fdroid +
- install these packages +
pkg install termux-api fd ripgrep git emacs neovim shellcheck rsync nodejs lf man ffmpeg jq pup recode python-pip clang fontconfig-utils which
+
+-
+
- setup storage +
termux-setup-storage ++
-
+
- install doom emacs +
sudo npm install -g marked +git clone https://github.com/doomemacs/doomemacs ~/.emacs.d +~/.emacs.d/bin/doom install ++
-
+
- yt-dlp +
pip install yt-dlp ++
2.6. ryujinx (WIP)
++sudo sysctl -w vm.maxmapcount=524288 +
+2.7. setup flatpak env variable for theme
+flatpak install org.gtk.Gtk3theme.Materia-dark +flatpak install org.gtk.Gtk3theme.Materia +sudo flatpak override --env GTK_THEME=Materia-dark ++
2.8. wlrobs
+sudo dnf install wayland-devel obs-studio-devel pkg-config meson
+
+hg clone https://hg.sr.ht/~scoopta/wlrobs
+cd wlrobs
+meson setup build
+ninja -C build
+
+