439 lines
11 KiB
Org Mode
439 lines
11 KiB
Org Mode
#+title: Instructions
|
|
|
|
setting up the system and packages
|
|
|
|
** 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/
|
|
|
|
** how to make new user and add to wheel
|
|
|
|
#+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
|
|
|
|
** get dotfiles
|
|
|
|
#+BEGIN_SRC sh
|
|
# 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
|
|
|
|
cd ~/.dots/home/ && stow default --target=$HOME/
|
|
#+END_SRC
|
|
|
|
*** how to unstow dotfiles
|
|
|
|
#+BEGIN_SRC sh
|
|
cd ~/.dots/home/ && stow -D default --target=$HOME/
|
|
#+END_SRC
|
|
|
|
** rpmfusion
|
|
|
|
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
|
|
|
|
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)
|
|
|
|
#+BEGIN_SRC sh
|
|
sudo dnf install -y $(cat ~/.dots/packages.txt)
|
|
#+END_SRC
|
|
|
|
** sudoers
|
|
|
|
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
|
|
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/loadkeys" >/etc/sudoers.d/01-cmds-without-password
|
|
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
|
|
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/"
|
|
#+END_SRC
|
|
|
|
at this point, you should logout and login again to set the variables.
|
|
|
|
** 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
|
|
|
|
*** plugins, etc
|
|
https://github.com/ranmaru22/firefox-vertical-tabs
|
|
https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/
|
|
|
|
** doom emacs
|
|
|
|
first we need marked for markdown support
|
|
|
|
#+BEGIN_SRC sh
|
|
sudo npm install -g marked
|
|
#+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
|
|
mkdir -p $HOME/.cache/lf
|
|
#+END_SRC
|
|
|
|
** interception tools (keyboard input mappings)
|
|
|
|
change caps lock to escape (pressed) and mod (held down)
|
|
|
|
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
|
|
|
|
from https://github.com/ErikReider/SwayNotificationCenter#fedora
|
|
#+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)
|
|
|
|
from https://github.com/andmarti1424/sc-im/wiki/Installing-on-Fedora-36--(packaged)
|
|
#+BEGIN_SRC sh
|
|
sudo dnf copr enable marcusmueller/sc-im
|
|
sudo dnf install sc-im
|
|
#+END_SRC
|
|
|
|
** nsxiv (image viewer)
|
|
|
|
#+BEGIN_SRC sh
|
|
dnf copr enable mamg22/nsxiv
|
|
dnf install nsxiv
|
|
#+END_SRC
|
|
|
|
** pip
|
|
*** 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
|
|
|
|
*** pulsemixer (pulseaudio controller)
|
|
|
|
#+BEGIN_SRC sh
|
|
pip install --user pulsemixer
|
|
#+END_SRC
|
|
|
|
*** termdown (terminal timer/stopwatch)
|
|
|
|
#+BEGIN_SRC sh
|
|
pip install termdown
|
|
#+END_SRC
|
|
|
|
** 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
|
|
*** 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
|
|
|
|
#+RESULTS:
|
|
|
|
** 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
|
|
|
|
** setting up virtualbox
|
|
|
|
#+BEGIN_SRC sh
|
|
sudo usermod -a -G vboxusers default
|
|
#+END_SRC
|
|
|
|
** flatpak packages
|
|
|
|
remember to set permissions, especially access to personal files according to what you want the software to have before launching them.
|
|
|
|
*** flatseal
|
|
|
|
#+BEGIN_SRC sh
|
|
flatpak install -y com.github.tchx84.Flatseal
|
|
#+END_SRC
|
|
|
|
*** Unity
|
|
|
|
#+BEGIN_SRC sh
|
|
flatpak install flathub com.unity.UnityHub
|
|
#+END_SRC
|
|
|
|
*** Foliate (Epub reader)
|
|
|
|
#+BEGIN_SRC sh
|
|
flatpak install com.github.johnfactotum.Foliate
|
|
#+END_SRC
|
|
|
|
*** 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
|
|
|
|
*** 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
|
|
|
|
*** 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
|
|
|
|
** 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
|
|
|
|
** other
|
|
*** 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
|
|
#+BEGIN_SRC sh
|
|
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
|
|
#+END_SRC
|
|
|
|
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
|
|
#+END_SRC
|
|
|
|
* todos
|
|
** TODO write dependencies and programs to separate files
|
|
** add packages
|
|
*** TODO add simple-mtpfs
|
|
dnf package unmaintained
|
|
*** TODO add syncplay
|
|
the copr repository batmanfeynman/syncplay is unmaintained
|