Automated Arch Linux installation
- Windows, along with the EFI partition are already installed. EFI partition size is increased to 512 MB
- There's at least 80 GB unassigned space on the disk for Arch
- In Windows, real time is set to UTC following this guide
- Create a DOS partition table on the pendrive
- Add a FAT32 partition with the boot flag
- Label the partition with
sudo mlabel -i /dev/sda1 ::archiso
- Build with
~/code/arch/archiso.zsh
- Copy with
rm -rf /run/media/$USER/ARCHISO/(arch|boot|EFI|loader|shellx64.efi)
cp -r ~/code/arch/archiso/usb/* /run/media/$USER/ARCHISO
- Boot from archiso
- Run
source ~/arch/player.zsh
,source ~/arch/drifter.zsh
orsource ~/arch/worker.zsh
- Once per machine, run
~/arch/disk.sh
, otherwise run~/arch/unlock.zsh
- Run
~/arch/system.zsh
- Once per machine, run
~/arch/boot.zsh
- Reboot to Arch and login as normal user
- Run
~/code/arch/services.zsh
- Reboot to GNOME, login as normal user and connect to internet
- Run
~/code/arch/apps.zsh
- Reboot
- Brave
- Setup your profiles
- Sign in to your sites
- Set as default browser
- Hide bookmarks
- Hide side panel button
- Hide bookmarks button
- Hide Brave News button in address bar
- Only allow suggestions from top sites, history and bookmarks (not Leo)
- Hide Brave Rewards button
- Hide VPN button
- Hide tab search button
- Cycle through the most recently used tabs with Ctrl-Tab
- Disable everything except background images on the dashboard
- Enable search and URL autocompletion
- Disable EasyList Cookie content filter
- Don't show the number of blocked items on the Shields icon
- Disable product analytics, daily usage ping and diagnostic reports
- Enable Safe Browsing
- Don't allow sites to send notifications
- Join the Sync Chain and sync everything
- Set the default search engine
- Install your extensions
- Disable wallets and hide the button
- Don't offer to save passwords and don't sign in automatically
- Add Polish and enable spell check for it
- Don't offer to translate pages
- Don't ask where to save downloaded files
- Don't show Wayback Machine prompts on 404 pages
- Don't continue running background apps
- Disable Brave VPN
- Enable Memory Saver
- KeePassXC
- Open your databases
- Only show attachment, title and username columns
- Hide folders panel & fit columns to window
- Configure Brave extension
- Change font to
Cascadia Code
, font size to14
and tab size to2
in Postman - Hide recommended extensions and disable tweet feedback icon in Visual Studio Code
- GNOME
- Set display refresh rate on player to variable 144 Hz
- Set display scale on drifter to 300% and on player & worker to 200%
- Select the sound device and set volume to 50%
- Run
clean.zsh
- Prepare the
$XDG_CONFIG_HOME/zsh/.zshenv
file - Fix window sizes and positions
Brave, Code, Alacritty, Foot, Kitty, Obsidian & Postman run in native Wayland.
- Fractorial scaling makes the text blurry for native Wayland apps and the whole interface blurry for XWayland apps
- GNOME text scaling factor not supported by the apps in native Wayland
- KeePassXC auto-type not supported in native Wayland
- Add
nvidia_drm.modeset=1
kernel module setting - Ensure no
WaylandEnable=false
in/etc/gdm/custom.conf
- Ensure video memory is preserved during suspend
Force native Wayland for QT apps with QT_QPA_PLATFORM=wayland
XDP implementations conflict each other so only one should be installed at the same time:
- GNOME -
xdg-desktop-portal-gnome
andxdg-desktop-portal-gtk
- KDE -
xdg-desktop-portal-kde
- Hyprland -
xdg-desktop-portal-hyprland
- Sway -
xdg-desktop-portal-wlr
Monitors were calibrated as described in the toys repo. Color profiles are loaded using colord
via settings.zsh
.
To test if a profile is loaded use this dispwin
command from argyllcms
package:
dispwin -d1 -V ~/code/arch/home/greg/.local/share/icc/27gp950-b.icm
The wiki states that NVIDIA is not compatible with colord
so previously dispwin
was used to load the color profiles. This required disabling colord.service
which made it necessary to use redshift
for night light.
Neither dispwin
nor redshift
are compatible with Wayland.
Testing with dispwin
showed that the only visible problem is that launching NVIDIA settings breaks the colors. This can be fixed by either turning the color profile off and on again in GNOME settings or loading it using dispwin
.
For these reasons dispwin
and redshift
were removed in commit f78146b.
Comfortable settings for display scale & font scaling factor given the screen size and resolution:
- drifter
- Wayland - 300% & 1
- X11 - 200% & 1.25
- player & worker
- Wayland - 200% & 1
- X11 - 100% & 1.75
The aim is to standardize on the font size of 1em
or 12pt
or 16px
(converter) and achieve about 50 lines (or 40 lines on drifter) of full screen text across all apps.
Current settings:
- Alacritty, Foot & Kitty:
12pt
(or1em
or16px
) - Brave, Code, Obsidian & Postman:
16px
(or1em
or12pt
)
Apps running on X11 or XWayland respect font scaling factor. For native Wayland apps, the font size can be adjusted to simulate font scaling factor.
To test on Wayland run dbus-run-session -- env MUTTER_DEBUG_DUMMY_MODE_SPECS=2560x1440 gnome-shell --nested --wayland
.
During the installation, put Windows and virtio-win iso in $DIR
. Install disk, graphics card and network card drivers from virtio-win. Disable fast startup. Map \\10.0.2.4\qemu
as network drive on guest.
For Secure Boot with TPM 2.0 install swtpm
and edk2-ovmf
on host.
For clipboard sharing using spice install virt-viewer
on host and guest tools on guest.
For folder sharing using spice install virt-viewer
on host and webdav daemon on guest. Run c:\Program Files (x86)\SPICE webdavd\map-drive.bat
on guest.
To install Windows 11 without Internet connection and with local account, when asked to connect to Internet, press Shift+F10
to bring up the command prompt and type OOBE\BYPASSNRO
.
To reduce the image size after freeing up space on guest, first defragment the drives and run sdelete -z
on guest, then run qemu-img convert -O qcow2 from.cow to.cow
.
- Run
~/code/arch/games.zsh
- Reboot
- Start Steam
- Once per machine, configure Steam, and specifically
- Don't sign in to friends when Steam starts
- Disable non-critical notifications and hide non-critical notifications while in game
- Set start up location to Library
- Disable community content and hide game icons in Library
- Enable shader pre-caching and allow background processing of Vulkan shaders
- Disable Steam overlay and remove screenshot shortcut
- Enable Steam Play for supported and all other titles
- Disable Remote Play
- For each game, set game compatibility to Proton-GE
- Once per machine, move Steam to games disk with
mv $XDG_DATA_HOME/Steam /run/media/$USER/games/
ln -s /run/media/$USER/games/Steam $XDG_DATA_HOME/Steam
- Cemu, VULKAN
LD_PRELOAD="$LD_PRELOAD:/usr/lib/libgamemode.so.0" PROTON_ENABLE_NGX_UPDATER=1 PROTON_ENABLE_NVAPI=1 python3 ./save_sync mangohud gamemoderun %command% -f -g "<game file>"
- Elden Ring, VKD3D
./er-patcher --rate 144 -vcas -- env LD_PRELOAD="$LD_PRELOAD:/usr/lib/libgamemode.so.0" PROTON_ENABLE_NGX_UPDATER=1 PROTON_ENABLE_NVAPI=1 VKD3D_CONFIG=dxr11,dxr WINE_FULLSCREEN_FSR=1 WINE_FULLSCREEN_FSR_MODE=ultra WINE_FULLSCREEN_FSR_STRENGTH=2 mangohud gamemoderun %command%