dR3b / archsway

Archlinux on river/sway from scratch with the most minimal dependencies. DIY is awesome

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ArchSway

Archlinux on sway from scratch with the most minimal dependencies. DIY is awesome

Standard Installation Steps

Arch Linux Installation Guide

Filesystem Setup

For new setup home should be a subvolume/partition mounted on the /root which is preferably btrfs/f2fs/xfs and FILES partition mounted to home/{data,/files} FILES should be 120-140GiB and root should have a max of 60GiB NOTE: make sure to mount btrfs with compression zstd on first mount on live iso

export ZDOTDIR in /etc/zsh/zshenv to $HOME/.config/dotfiles

needed base system modules

  • systemd-boot as boot manager
  • enabling systemd-boot-update service to update systemd-boot on systemd upgrade
  • sway/river as window manager with swayidle and swaylock for idle and lock management and waybar/yambar for bar management
    • base
    • btrfs-progs
    • dosfstools
    • exfatprogs
    • f2fs-tools
    • intel-ucode
    • iwd
    • kitty
    • linux-firmware
    • linux-zen
    • man-db man-pages
    • neovim (for config clone awesome-neovim to $XDG_CONFIG_HOME/nvim)
    • sudo
    • nushell or fish or zsh (set default shell with chsh -s $(which shellname))

basic configuration

  • since networking bits are already setup in the iso , You can just copy them .ie /etc/systemd/network/* to the mounted partition and start the necessary services iwd,systemd-networkd,systemd-resolvd Or use configuration in networking/resolve.conf and networking/network
  • Enable synchronizing the system clock across the network by enabling systemd-timesyncd.service
  • On the freshly installed system use the following fonts
    • use fonts with great unicode support like ttf-dejavu or noto-fonts or gnu-free-fonts as system default font
    • ttc-iosevka or ttf-jetbrains-mono for monospace,
    • ttf-nerd-fonts-symbols-mono for nerd font symbols and noto-font-emoji for emoji

    NOTE: don't forget to ln -s /usr/share/fontconfig/conf.avail/10-nerd-font-symbols.conf /etc/fonts/conf.d/

  • configure dns for 1.1.1.1 but this might not be needed since it's the default on arch linux
  • enable DNSOverTLS for resolved
  • iwd for wifi and enable it dhcp client
  • symlink /run/systemd/resolve/stub-resolv.con to /etc/resolv.conf for dns resolution TODO: review the usefullness of the lines below
  • disable unneeded services that run at boot like man-db.timer and mask ldconfig.service,systemd-rfkill*
  • disable journaling to persistent storage by setting Storage in journal.conf to volatile and masking systemd-journal-flush.service
  • link kitty to xterm
  • configure hardware acceleration and Intel_graphics and Intel_GVT-g
  • manual powermangement with udev rules and modprobe config files in powersaving .udev rules go to /etc/udev/rules.d
  • and modprobe configs in /etc/modprobe.d
  • add resume kernel parameter to the boot loader and resume hook to mkinitcpio
  • add resume to HOOKS in /etc/mkinitcpio.conf and rebuild kernel for hibernation and it variant to work
  • enable powersaving options power management laptop
  • cpu frequency scaling and udev rules
  • Active State Power Management check if asmp is supported and add or remove powersave > /sys/module/pcie_aspm/parameters/policy from udev powersave rules based on that
  • modify relector configuration in /etc/xdg/reflector/reflector.conf to sort based on download rate with --sort rate
  • modify sudoers with visudo using example in suders file
  • configure what powerbutton and lidclose does with /etc/systemd/logind.conf
  • For pacman enable the following options under option section in /etc/pacman.conf
[options]
Color
CheckSpace
VerbosePkgLists
ParallelDownloads = 5
  • configure /etc/motd with the Message Of The Day Eg.WELCOME MASTER MALPHA! WE ARE READY TO SERVE YOU!!!
  • after installation make sure to go through Archlinux General Recommendation

Configuring Firefox

  • Enable firefox Hardware video acceleration by setting media.ffmpeg.vaapi.enabled to true and Hardware WebRender by setting gfx.webrender.all to true
  • move disk cache to ram by setting browser.cache.disk.parent_directory to /run/user/UID/firefox
  • where UID is your user's ID which can be obtained by running id -u
  • increase session save interval to 6 minutes (360000 milliseconds) by setting browser.sessionstore.interval to 360000
  • Enable DNS over HTTPS in firefox

INSTALLS

  • base-devel for Basic c/c++ build tools to build Arch Linux packages

  • yay for AUR packagem mangement

  • android-file-transfer with libmtp for connecting android phones mtp management

  • aria2 as download manager

  • bat is a Cat clone with syntax highlighting and git integration

  • bluez and bluez-utils for bluetooth

  • brightnessctl for controling backlight

  • carapace-bin for completions in nushell

  • pueue for process management in nushell

  • clang/gcc for c++ development

  • rustup with default profile and rust-analyzer component for rust development

  • zig with zls for zig development

  • language servers for

    • cpp development
      • cppcheck
    • web development
      • vscode-langservers-extracted
      • @tailwindcss/language-server
      • typescript
      • typescript-language-server
      • @volar/server
      • eslint
    • lau development
      • lua-language-server
      • stylua
      • selene
    • python development
      • jedi-language-server
      • ruff
      • mypy
      • python-pylint
      • python-black
      • python-poetry
  • dictd server with dict client and some dictionary sources for yay like dict-wikt-en-all dict-freedict-eng-spa dict-freedict-spa-eng dict-foldoc dict-gcide dict-wn

    • NOTE: to disable online mode comment out server dict.org in /etc/dict/dict.conf
    • Make sure locale is properly configured in DICTD_ARGS of /etc/conf.d/dictd else the service unit will fail
  • ffmpegthumbnailer & gnome-epub-thumbnailer for thumbnails

  • firefox with speech-dispatcher (for Text-to-Speech) as pdf reader or zathura and firefox-ublock-origin as adblocker and foliate/fbreader as epub reader

  • fzf for fuzzy search

  • gammastep for controlling nightlight

  • git for version control

  • grim and slurp for screenshot

  • imagemagick for use by kitty for terminal image preview

  • imv as image viewer

  • mako as a lightweight notification daemon for wayland

  • install mesa for opengl and as dri userspace driver and intel-media-driver as va-api for intel

  • jq a Command-line JSON processor

  • iptables-nft and nftable(automatically installed as a dependency of iptables-nft) for firewall configuration (enable the nftables service)

  • nmap and tcpdump for network analysis and auditing

  • docker for containerization of apps

  • ripgrep to recursively searches directories for a regex pattern while respecting your gitignore

  • fd as a simple, fast and user-friendly alternative to find

  • sd as an intuitive find & replace cli alternative to sed

  • libreoffice-fresh for working with openoffice documents and hunspell-en_us for spellcheck, for help setting up spellcheck

  • lldb for debugging zig c and c++

  • mpd for music daemon and ncmpcpp for ui interface and mpc for controlling playing

  • mpv as multimedia player

  • fastfetch for displaying system information

  • lf as filemanger

  • openssh and rsync for syncing file with remote over ssh

  • pipewire and pipewire-audio for audio/video routing and processing, pipewire-pulse as pulseaudio replacement and WirePlumber as pipewire session manager

  • remmina as remote desktop client with plugin like freerdp|libvncserver

  • reflector for choosing fastest pacman server list

  • usb_modeswitch for enabling modem mode for zero-cd based modems

  • wl-clipboard for wayland clipboard

  • sound-theme-freedesktop for standard sounds and tone used in linux

  • fuzzy as the application launcher

  • wlr-randr for wayland output management

  • cliphist as clipboard history manager

  • qt5-wayland for runing qt5 apps under wayland

  • xdg-desktop-portal-wrl for WebRTC screen sharing

  • xdg-utils to assist applications with desktop integration tasks

  • yt-dlp YouTube downloader

  • zig zls-bin for zig development

  • zoxide for efficient directory movement

  • zsh-autosuggestions zsh-completions zsh-fast-syntax-highlighting zsh-theme-powerlevel10k-bin-git zsh-history-substring-search complements zsh

About

Archlinux on river/sway from scratch with the most minimal dependencies. DIY is awesome

License:GNU General Public License v3.0


Languages

Language:Shell 52.2%Language:Nu 24.6%Language:Nushell 20.6%Language:CSS 2.6%