2023-06-29 11:26:03 -04:00
#+title : Instructions
2023-09-05 09:43:34 -04:00
** information
This org document is a list of instructions on how to install the whole setup of my personal system, including installation of standalone programs.
2023-06-29 11:26:03 -04:00
2023-08-04 00:27:06 -04:00
** 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.
*** verifying the iso file
1. Download the checksum file (from https://alt.fedoraproject.org/en/ ) into the same directory as the image you downloaded.
2. Import Fedora's GPG key(s)
#+BEGIN_SRC sh
curl -O https://fedoraproject.org/fedora.gpg
#+END_SRC
3. Verify the CHECKSUM file is valid
#+BEGIN_SRC sh
gpgv --keyring ./fedora.gpg *-CHECKSUM
#+END_SRC
4. Verify the checksum matches
#+BEGIN_SRC sh
sha256sum -c *-CHECKSUM
#+END_SRC
*** installing fedora and setting up btrfs with snapshots
differences/notes before continuing with the installation:
1. some dependencies aren't available with 'fedora custom operating system'. before installing snapper make sure to install these packages:
#+BEGIN_SRC sh
sudo dnf install neovim sway firefox locate git bzip2
#+END_SRC
a) neovim is the text editor of my choice
b) install a browser such as firefox to follow along guide
c) locate, git, bzip2 are the missing dependencies not included in the guide.
2. 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/
2023-09-28 09:14:15 -04:00
or for full disk encryption
https://sysguides.com/install-fedora-38-with-full-disk-encryption-snapshot-and-rollback-support/
2023-08-04 00:27:06 -04:00
** how to make new user and add to wheel
2023-06-29 11:26:03 -04:00
#+BEGIN_SRC sh
# make a user and add to the wheel group
useradd -m -g wheel user_name
# set a password
passwd user_name
#+END_SRC
** prerequisites
for building/installing packages, also some dependencies for doomemacs, and zsh.
#+BEGIN_SRC sh
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
#+END_SRC
2023-09-05 09:43:34 -04:00
** installing dotfiles
2023-06-29 11:26:03 -04:00
#+BEGIN_SRC sh
# getting dotfiles
git clone https://gitea.bubbletea.dev/cho/dotfiles ~/ .dots
cp -rv ~/.dots/home/default/.* ~ /
2023-07-02 05:41:21 -04:00
2023-06-29 11:26:03 -04:00
# or using stow
2023-07-02 05:41:21 -04:00
# 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
2023-09-05 09:43:34 -04:00
mkdir -p ~/.config/nvim
2023-07-02 05:41:21 -04:00
2023-06-29 11:26:03 -04:00
cd ~/.dots/home/ && stow default --target=$HOME/
#+END_SRC
2023-07-02 05:41:21 -04:00
*** how to unstow dotfiles
#+BEGIN_SRC sh
cd ~/.dots/home/ && stow -D default --target=$HOME/
#+END_SRC
2023-09-05 09:43:34 -04:00
** setting up rpmfusion
2023-06-29 11:26:03 -04:00
from https://rpmfusion.org/Configuration and https:/ /rpmfusion.org/Howto/Multimedia
#+BEGIN_SRC sh
# 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"
#+END_SRC
** installing dnf packages
2023-08-04 00:27:06 -04:00
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)
2023-06-29 11:26:03 -04:00
#+BEGIN_SRC sh
sudo dnf install -y $(cat ~/.dots/packages.txt)
#+END_SRC
2023-09-05 09:43:34 -04:00
** configuring sudoers
2023-06-29 11:26:03 -04:00
Allow wheel users to sudo with password and allow several system commands
(like `shutdown` to run without password).
#+BEGIN_SRC shell
echo "%wheel ALL=(ALL:ALL) ALL" >/etc/sudoers.d/00-wheel-can-sudo
2023-09-28 09:14:15 -04:00
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/loadkeys" >/etc/sudoers.d/01-cmds-without-password
2023-06-29 11:26:03 -04:00
echo "Defaults editor=/usr/bin/nvim" >/etc/sudoers.d/02-visudo-editor
#+END_SRC
** Make zsh the default shell for the user.
#+BEGIN_SRC shell
2023-08-04 00:27:06 -04:00
name=$USER
2023-06-29 11:26:03 -04:00
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/ "
#+END_SRC
2023-08-04 00:27:06 -04:00
at this point, you should logout and login again to set the variables.
2023-06-29 11:26:03 -04:00
** librewolf (browser)
from https://librewolf.net/installation/fedora/
#+BEGIN_SRC sh
sudo dnf config-manager --add-repo https://rpm.librewolf.net/librewolf-repo.repo
sudo dnf install librewolf
#+END_SRC
2023-07-02 05:41:21 -04:00
*** plugins, etc
https://github.com/ranmaru22/firefox-vertical-tabs
https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/
2023-06-29 11:26:03 -04:00
** doom emacs
2023-09-05 09:43:34 -04:00
first we need to install marked for markdown support
2023-06-29 11:26:03 -04:00
#+BEGIN_SRC sh
2023-08-04 00:27:06 -04:00
sudo npm install -g marked
2023-06-29 11:26:03 -04:00
#+END_SRC
#+BEGIN_SRC sh
git clone https://github.com/doomemacs/doomemacs ~/ .emacs.d
~/.emacs.d/bin/doom install
#+END_SRC
** 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
#+BEGIN_SRC sh
env CGO_ENABLED=0 go install -ldflags= "-s -w" github.com/horriblename/lf@latest
2023-08-04 00:27:06 -04:00
mkdir -p $HOME/.cache/lf
2023-06-29 11:26:03 -04:00
#+END_SRC
** interception tools (keyboard input mappings)
2023-09-05 09:43:34 -04:00
change caps lock to escape (when pressed) and mod (when held down)
2023-06-29 11:26:03 -04:00
INSTALL FROM SOURCE
#+BEGIN_SRC sh
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
#+END_SRC
#+BEGIN_SRC sh
git clone https://gitlab.com/interception/linux/plugins/dual-function-keys.git
cd dual-function-keys
make && sudo make install
#+END_SRC
it's a good idea to install these as well, if anything doesn't compile.
#+BEGIN_SRC sh
sudo dnf groupinstall "Development Tools" "Development Libraries"
#+END_SRC
*** installing the configuration
#+BEGIN_SRC sh
sudo cp -rv ~/.dots/etc/interception /etc/
sudo cp ~/.dots/etc/systemd/system/udevmon.service /etc/systemd/system/
# enable
sudo systemctl enable udevmon.service
#+END_SRC
** sway notifications
2023-08-04 00:27:06 -04:00
from https://github.com/ErikReider/SwayNotificationCenter#fedora
2023-06-29 11:26:03 -04:00
#+BEGIN_SRC sh
dnf copr enable erikreider/SwayNotificationCenter
dnf install SwayNotificationCenter
#+END_SRC
** autotiling in sway
#+BEGIN_SRC sh
pip install i3ipc
pip install autotiling==1.8
#+END_SRC
** sc-im (terminal spreadsheet)
2023-09-05 09:43:34 -04:00
from https://github.com/andmarti1424/sc-im/wiki/Installing-on-Fedora-27
2023-06-29 11:26:03 -04:00
#+BEGIN_SRC sh
2023-09-05 09:43:34 -04:00
sudo dnf install 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
2023-06-29 11:26:03 -04:00
#+END_SRC
2023-07-02 05:41:21 -04:00
** nsxiv (image viewer)
#+BEGIN_SRC sh
dnf copr enable mamg22/nsxiv
dnf install nsxiv
#+END_SRC
2023-09-05 09:43:34 -04:00
** pip packages
2023-06-29 11:26:03 -04:00
*** keepmenu (dmenu keepassxc client)
https://github.com/firecat53/keepmenu/blob/main/docs/install.md#install-recommended
#+BEGIN_SRC sh
pip install --user keepmenu
#+END_SRC
2023-07-02 05:41:21 -04:00
*** pulsemixer (pulseaudio controller)
#+BEGIN_SRC sh
pip install --user pulsemixer
#+END_SRC
*** termdown (terminal timer/stopwatch)
#+BEGIN_SRC sh
pip install termdown
#+END_SRC
2023-06-29 11:26:03 -04:00
** go packages
*** pup
needed for rssadd RSS scanning to work, it's optional if you don't really need it.
#+BEGIN_SRC sh
go install github.com/ericchiang/pup@latest
#+END_SRC
** packages from source/binaries
2023-09-05 09:43:34 -04:00
*** simple-mtpfs (for mounting usb)
install dependencies:
#+begin_src sh
sudo dnf install libgcc fuse-devel libmtp-devel autoconf-archive
#+end_src
https://github.com/phatina/simple-mtpfs#installation
#+begin_src sh
git clone https://github.com/phatina/simple-mtpfs
cd simple-mtpfs
./autogen.sh
mkdir build && cd build
../configure
make
sudo make install
#+end_src
2023-06-29 11:26:03 -04:00
*** mpvpaper
animated wallpapers (used by `change-background`)
#+BEGIN_SRC sh
# 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
#+END_SRC
*** 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
#+BEGIN_SRC sh
# 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/
#+END_SRC
2023-09-05 09:43:34 -04:00
** AppImages
*** syncplay
from https://syncplay.pl/download/
#+begin_src sh
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
#+end_src
** installing cargo
https://doc.rust-lang.org/cargo/getting-started/installation.html
#+BEGIN_SRC shell
curl https://sh.rustup.rs -sSf | sh
# choose to customize installation, and choose `no` when it asks to modify PATH variable.
#+END_SRC
2023-06-29 11:26:03 -04:00
** setting up flatpak
from https://flatpak.org/setup/Fedora
#+BEGIN_SRC sh
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
#+END_SRC
2023-07-02 05:41:21 -04:00
** setting up virtualbox
#+BEGIN_SRC sh
sudo usermod -a -G vboxusers default
#+END_SRC
2023-06-29 11:26:03 -04:00
** flatpak packages
2023-08-04 00:27:06 -04:00
2023-09-05 09:43:34 -04:00
remember to set permissions with Flatseal, especially access to personal files according to what you want the software to have before launching them.
2023-08-04 00:27:06 -04:00
*** flatseal
#+BEGIN_SRC sh
flatpak install -y com.github.tchx84.Flatseal
#+END_SRC
2023-07-02 05:41:21 -04:00
*** Unity
#+BEGIN_SRC sh
flatpak install flathub com.unity.UnityHub
#+END_SRC
*** Foliate (Epub reader)
#+BEGIN_SRC sh
2023-09-28 09:14:15 -04:00
flatpak install flathub com.github.johnfactotum.Foliate
2023-07-02 05:41:21 -04:00
#+END_SRC
2023-06-29 11:26:03 -04:00
*** bottles and dependencies
- gamescope
- mangohud
#+BEGIN_SRC sh
flatpak install -y com.valvesoftware.Steam.Utility.gamescope com.usebottles.bottles org.freedesktop.Platform.VulkanLayer.MangoHud
#+END_SRC
*** steam
#+BEGIN_SRC sh
flatpak install -y com.valvesoftware.Steam
#+END_SRC
2023-07-01 07:47:19 -04:00
*** rpsc3
#+BEGIN_SRC sh
sudo flatpak install -y net.rpcs3.RPCS3
#+END_SRC
limits.conf settings https://github.com/RPCS3/rpcs3/issues/9328
#+BEGIN_SRC sh
sudo su
printf '* hard memlock unlimited\n* soft memlock unlimited' >> /etc/security/limits.conf
#+END_SRC
2023-07-02 05:41:21 -04:00
*** cemu
#+BEGIN_SRC sh
flatpak install flathub info.cemu.Cemu
#+END_SRC
*** discord
#+BEGIN_SRC sh
flatpak install flathub com.discordapp.Discord
#+END_SRC
*** spotify
#+BEGIN_SRC sh
flatpak install flathub io.github.hrkfdn.ncspot
flatpak install flathub com.spotify.Client
#+END_SRC
2023-09-05 09:43:34 -04:00
* fixes
** crashes with wayland under amd gpus
2023-06-29 11:26:03 -04:00
2023-07-02 05:41:21 -04:00
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
2023-06-29 11:26:03 -04:00
#+BEGIN_SRC sh
2023-07-02 05:41:21 -04:00
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
2023-06-29 11:26:03 -04:00
#+END_SRC
2023-07-02 05:41:21 -04:00
you can check the status with `radcard.sh get` , make sure the output is as follows:
#+BEGIN_SRC
power_dpm_state: performance
power_dpm_force_performance_level: high
2023-07-01 07:47:19 -04:00
#+END_SRC
2023-06-29 11:26:03 -04:00
* todos
2023-08-04 00:27:06 -04:00
** TODO write dependencies and programs to separate files
2023-06-29 11:26:03 -04:00
** add packages
2023-09-28 09:14:15 -04:00
flatpak install --from https://flathub.org/repo/appstream/com.github.babluboy.bookworm.flatpakref