The_miro 2026-05-08 15:16:06 +02:00
commit 691ce9db37
26 changed files with 427 additions and 268 deletions

View File

@ -1,74 +0,0 @@
2025/02/12 (17:55:02) | ===> btop++ v.1.4.0
2025/02/12 (17:55:02) | WARNING: Failed to get disk/partition stats for mount "/run/user/1000/doc" with statvfs error code: 1. Ignoring...
2025/02/24 (18:59:00) | ===> btop++ v.1.4.0
2025/02/24 (18:59:00) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/24 (19:14:46) | ===> btop++ v.1.4.0
2025/02/24 (19:14:46) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/24 (19:15:18) | ===> btop++ v.1.4.0
2025/02/24 (19:15:18) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/24 (19:16:18) | ===> btop++ v.1.4.0
2025/02/24 (19:16:18) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/24 (19:17:13) | ===> btop++ v.1.4.0
2025/02/24 (19:17:13) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/24 (19:19:59) | ===> btop++ v.1.4.0
2025/02/24 (19:19:59) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/24 (19:24:11) | ===> btop++ v.1.4.0
2025/02/24 (19:24:11) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/24 (19:24:27) | ===> btop++ v.1.4.0
2025/02/24 (19:24:27) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/24 (19:25:15) | ===> btop++ v.1.4.0
2025/02/24 (19:25:15) | WARNING: Failed to get disk/partition stats for mount "/home/themiro/NC-davmount" with statvfs error code: 107. Ignoring...
2025/02/25 (12:25:13) | ===> btop++ v.1.4.0
2025/02/25 (12:25:13) | ERROR: Stall in Runner thread, restarting!
2025/03/06 (09:06:42) | ===> btop++ v.1.4.0
2025/03/06 (09:06:42) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/03/06 (09:06:42) | WARNING: Intel GPU: Failed to initialize PMU
2025/03/06 (11:21:19) | ERROR: Stall in Runner thread, restarting!
2025/03/13 (15:09:25) | ===> btop++ v.1.4.0
2025/03/13 (15:09:25) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/03/13 (15:09:25) | WARNING: Intel GPU: Failed to initialize PMU
2025/04/03 (11:17:42) | ===> btop++ v.1.4.0
2025/04/03 (11:17:42) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/04/03 (11:17:42) | WARNING: Intel GPU: Failed to initialize PMU
2025/04/03 (11:45:45) | ===> btop++ v.1.4.0
2025/04/03 (11:45:45) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/04/03 (11:45:45) | WARNING: Intel GPU: Failed to initialize PMU
2025/04/03 (11:48:13) | ERROR: Stall in Runner thread, restarting!
2025/04/10 (07:55:43) | ===> btop++ v.1.4.0
2025/04/10 (07:55:43) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/04/10 (07:55:43) | WARNING: Intel GPU: Failed to initialize PMU
2025/04/10 (09:12:38) | ===> btop++ v.1.4.0
2025/04/10 (09:12:38) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/04/10 (09:12:38) | WARNING: Intel GPU: Failed to initialize PMU
2025/04/10 (09:44:52) | ERROR: Stall in Runner thread, restarting!
2025/04/10 (09:44:52) | ERROR: Stall in Runner thread, restarting!
2025/04/24 (10:34:50) | ===> btop++ v.1.4.0
2025/04/24 (10:34:50) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/04/24 (10:34:50) | WARNING: Intel GPU: Failed to initialize PMU
2025/04/24 (11:32:41) | ===> btop++ v.1.4.0
2025/04/24 (11:32:41) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/04/24 (11:32:41) | WARNING: Intel GPU: Failed to initialize PMU
2025/04/24 (17:00:13) | ===> btop++ v.1.4.0
2025/04/24 (17:00:13) | WARNING: NVML: Failed to get maximum GPU power draw, defaulting to 225W: Not Supported
2025/04/24 (17:00:13) | WARNING: Intel GPU: Failed to initialize PMU
2025/04/24 (18:28:53) | ERROR: Stall in Runner thread, restarting!

View File

@ -1,14 +0,0 @@
Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8.
Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead.
If this causes problems, reconfigure your locale. See the locale(1) manual
for more information.
isPrimaryInstance
Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8.
Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead.
If this causes problems, reconfigure your locale. See the locale(1) manual
for more information.
isPrimaryInstance
Warning: locale not supported by C library, locale unchanged
Data set on unsupported clipboard mode. QMimeData object will be deleted.
QObject::disconnect: wildcard call disconnects from destroyed signal of Fm::PathEdit::unnamed
aboutToQuit

View File

@ -1,124 +1,139 @@
#!/bin/bash
set -e
echo "=== Hyprland Environment Installer ==="
# 1. Update system and install Flatpak
echo "Updating system and installing Flatpak..."
sudo pacman -Syu --noconfirm flatpak
sudo systemctl enable --now flatpak-system-helper.service
sudo pacman -Syu --noconfirm --needed flatpak
# 2. Install required packages (from hyprland.sh)
# 2. Install required packages
echo "Installing required packages..."
sudo pacman -Syu --noconfirm --needed hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst nwg-dock-hyprland nwg-drawer nwg-menu nwg-look python cmake meson cpio pkgconf ruby-pkg-config hyprsunset hypridle ksshaskpass nm-connection-editor network-manager-applet blueman bluez pipewire alsa-utils firefox greetd-tuigreet grim slurp gst-plugin-pipewire imagemagick nerd-fonts otf-font-awesome pipewire-alsa pipewire-jack pipewire-pulse qt5-wayland qt6-wayland swww ttf-jetbrains-mono wireplumber wofi qt6ct xdg-desktop-portal-hyprland xdg-utils xorg-server xorg-xinit papirus-icon-theme cool-retro-term qalculate-gtk iwd dbus thunar tumbler thunar-archive-plugin thunar-shares-plugin thunar-volman hyprpicker pcmanfm-qt udisks2 ly
sudo pacman -Syu --noconfirm --needed \
hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst \
nwg-dock-hyprland nwg-drawer nwg-menu nwg-look \
python cmake meson cpio pkgconf ruby-pkg-config \
hyprsunset hypridle ksshaskpass \
nm-connection-editor network-manager-applet blueman bluez \
pipewire alsa-utils firefox greetd-tuigreet \
grim slurp gst-plugin-pipewire imagemagick \
nerd-fonts otf-font-awesome \
pipewire-alsa pipewire-jack pipewire-pulse \
qt5-wayland qt6-wayland swww ttf-jetbrains-mono wireplumber \
qt6ct xdg-desktop-portal-hyprland xdg-utils \
xorg-server xorg-xinit papirus-icon-theme \
cool-retro-term qalculate-gtk iwd dbus \
thunar tumbler thunar-archive-plugin thunar-shares-plugin thunar-volman \
hyprpicker pcmanfm-qt udisks2 ly
# 3. Run core.sh steps (network, cron, greetd, fail2ban, udisks2)
# 3. Enable essential services
echo "Enabling essential services..."
sudo systemctl enable NetworkManager.service
#sudo systemctl enable cronie.service
#sudo systemctl enable greetd.service
sudo systemctl disable getty@tty1.service
sudo systemctl disable getty@tty1.service || true
sudo systemctl enable ly@tty1.service
#sudo systemctl enable fail2ban.service
sudo systemctl enable udisks2.service
# 4. Install AUR packages (from hyprland.sh)
# 4. Install AUR packages
echo "Installing AUR packages..."
rustup default stable
yay -Syu --answerdiff None --answerclean All hyprland-workspaces vicinae-bin bluetuith wvkbd kew iwmenu bzmenu pinta localsend udiskie rust rustup
yay -Syu --answerdiff None --answerclean All --noconfirm \
hyprland-workspaces vicinae-bin bluetuith wvkbd kew iwmenu \
walker-bin ulauncher bzmenu pinta localsend udiskie
# 5. EWW bar selection and compilation (from hyprland.sh)
# 5. EWW bar selection and compilation
echo "Setting up EWW bar..."
rm -rf ~/.config/eww
read -n1 -p "Install eww bar for PC, Notebook or Tablet [P,N,T]: " doit
read -n1 -p "Install eww bar for PC, Notebook or Tablet [P/N/T]: " doit
echo
case $doit in
n|N) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww/ ~/.config/ ;;
p|P) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-nobattery/ ~/.config/eww ;;
t|T) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-touch/ ~/.config/eww ;;
*) echo "enter a valid decision" ;;
*) echo "No valid choice — skipping EWW copy. Run manually later." ;;
esac
echo "Compiling EWW..."
mkdir -p ~/install-tmp
cd ~/install-tmp
git clone https://github.com/elkowar/eww
cd eww
cargo build --release --no-default-features --features=wayland
cd target/release
chmod +x ./eww
sudo cp ./eww /usr/bin
chmod +x target/release/eww
sudo cp target/release/eww /usr/bin/
cd ~
# 6. Theme and icon setup
sudo cp -r ~/Dotfiles/gtk-themes/cyberqueer /usr/share/themes
sudo cp ~/Dotfiles/desktopenvs/hyprland/btop/themes/cyberqueer.theme /usr/share/btop/themes
sudo cp -f ~/Dotfiles/etc-ly-config.ini /etc/ly/config.ini
sudo ln -s /usr/bin/kitty /usr/bin/xdg-terminal-exec
sudo ln /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass
sudo ln -sf /usr/bin/kitty /usr/bin/xdg-terminal-exec
sudo ln -sf /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass
# 7. Cursor setup
mkdir -p ~/.icons
wget https://github.com/guillaumeboehm/Nordzy-cursors/releases/download/v2.3.0/Nordzy-cursors-lefthand.tar.gz
tar -zxvf Nordzy-cursors-lefthand.tar.gz -C $HOME/.icons/
wget -O ~/install-tmp/Nordzy-cursors-lefthand.tar.gz \
https://github.com/guillaumeboehm/Nordzy-cursors/releases/download/v2.3.0/Nordzy-cursors-lefthand.tar.gz
tar -zxf ~/install-tmp/Nordzy-cursors-lefthand.tar.gz -C ~/.icons/
# 8. Enable Bluetooth and networking services
# 8. Enable Bluetooth and wireless services
sudo systemctl enable bluez
sudo systemctl enable bluetooth.service
sudo systemctl enable iwd.service
# 9. Hyprland plugin setup
hyprpm update
hyprpm add https://github.com/hyprwm/hyprland-plugins
# 9. Hyprland plugins — must be run from inside a live Hyprland session
# Run manually after first login:
# hyprpm update
# hyprpm add https://github.com/hyprwm/hyprland-plugins
# 10. Copy configs (not symlink, except hypr-usr)
# 10. Copy configs
echo "Copying configs..."
CONFIGS=(kitty mimeapps.list vicinae walker hypr xfce4 wofi dunst alacritty nwg-dock-hyprland nwg-drawer nwg-panel ulauncher scripts btop gtk-3.0 eww eww-nobattery)
CONFIGS=(kitty mimeapps.list vicinae walker ulauncher hypr xfce4 wofi dunst alacritty nwg-dock-hyprland nwg-drawer nwg-panel scripts btop gtk-3.0)
for cfg in "${CONFIGS[@]}"; do
rm -rf ~/.config/$cfg
cp -r ~/Dotfiles/desktopenvs/hyprland/$cfg ~/.config/
rm -rf ~/.config/"$cfg"
cp -r ~/Dotfiles/desktopenvs/hyprland/"$cfg" ~/.config/
done
# Copy hypr-usr files as local configs
cp ~/Dotfiles/desktopenvs/hyprland/hypr-usr/* ~/.config/
# 11. Wallpaper and resources
mkdir -p ~/Pictures
cp ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg
wget https://cloud.abdelbaki.eu/apps/theming/image/background?v=15 -O ~/Pictures/background.jpg
wget "https://cloud.abdelbaki.eu/apps/theming/image/background?v=15" -O ~/Pictures/background.jpg
# 12. Python venv setup
# 12. Python venv for scripts
python -m venv ~/.config/python-script
~/.config/python-script/bin/pip install speedtest-cli requests pint simpleeval parsedatetime
# 13. Udiskie icon fix (from fix_udiskie_icons.sh)
# 13. Udiskie icon fix
echo "Applying Udiskie icon fix..."
PAPIRUS_DIR="/usr/share/icons/Papirus-Dark/status"
HICOLOR_DIR="/usr/share/icons/hicolor/scalable/status"
if [ ! -d "$PAPIRUS_DIR" ]; then
echo "Papirus-Dark icon directory not found. Please install Papirus icon theme."
exit 1
if [ -d "$PAPIRUS_DIR" ]; then
sudo ln -sf "$PAPIRUS_DIR/checkbox-checked.svg" "$HICOLOR_DIR/udiskie-checkbox-checked.svg"
sudo ln -sf "$PAPIRUS_DIR/checkbox-unchecked.svg" "$HICOLOR_DIR/udiskie-checkbox-unchecked.svg"
sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor
else
echo "Papirus-Dark not found — skipping udiskie icon fix."
fi
sudo ln -sf "$PAPIRUS_DIR/checkbox-checked.svg" "$HICOLOR_DIR/udiskie-checkbox-checked.svg"
sudo ln -sf "$PAPIRUS_DIR/checkbox-unchecked.svg" "$HICOLOR_DIR/udiskie-checkbox-unchecked.svg"
sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor
echo "Udiskie icons overridden successfully with Papirus equivalents."
# 14. Enable and start udiskie
echo "Enabling and starting udiskie..."
# 14. Enable udiskie
sudo systemctl enable udiskie.service
sudo systemctl start udiskie.service
# 15. Create config update script in home directory
# 15. Generate config-update helper
cat << 'EOF' > ~/update-hypr-configs.sh
#!/bin/bash
CONFIGS=(kitty mimeapps.list walker vicinae hypr xfce4 wofi dunst alacritty nwg-dock-hyprland nwg-drawer nwg-panel ulauncher scripts btop gtk-3.0 eww eww-nobattery)
CONFIGS=(kitty mimeapps.list walker ulauncher vicinae hypr xfce4 wofi dunst alacritty nwg-dock-hyprland nwg-drawer nwg-panel scripts btop gtk-3.0)
for cfg in "${CONFIGS[@]}"; do
cp -r ~/Dotfiles/desktopenvs/hyprland/$cfg ~/.config/
cp -r ~/Dotfiles/desktopenvs/hyprland/"$cfg" ~/.config/
done
echo "Configs updated!"
echo "Configs updated."
EOF
chmod +x ~/update-hypr-configs.sh
echo "=== Installation Complete! ==="
# 16. Install other packages
sudo curl -sL $(curl -s https://api.github.com/repos/5hubham5ingh/WallRizz/releases/latest | grep -Po '"browser_download_url": "\K[^"]+' | grep WallRizz) | tar -xz && sudo mv WallRizz /usr/bin/
WallRizz -w
# 16. WallRizz (run manually after login — requires a running desktop session)
# curl -sL "$(curl -s https://api.github.com/repos/5hubham5ingh/WallRizz/releases/latest \
# | grep -Po '"browser_download_url": "\K[^"]+' | grep WallRizz)" | tar -xz \
# && sudo mv WallRizz /usr/bin/
echo "=== Hyprland installation complete. Reboot to start. ==="

View File

@ -1,67 +1,73 @@
#!/bin/bash
set -euo pipefail
# Install packages
echo "Installing required packages..."
sudo pacman -Syu --noconfirm --needed \
alacritty base base-devel brightnessctl btop btrfs-progs cmatrix dmenu \
fastfetch firefox foot git greetd-tuigreet glfw gnu-netcat grim grub \
gst-plugin-pipewire hollywood htop imagemagick iwd libpulse \
libva-intel-driver libva-mesa-driver lightdm lightdm-gtk-greeter \
linux linux-firmware lynx micro nano networkmanager nmap openssh \
pavucontrol pipewire pipewire-alsa pipewire-jack pipewire-pulse \
slurp smartmontools sway swaybg swayidle swaylock \
ttf-jetbrains-mono vim vulkan-intel vulkan-radeon waybar wget \
wireless_tools wireplumber wireshark-qt wofi wpa_supplicant \
xdg-utils xf86-video-amdgpu xf86-video-ati xf86-video-nouveau \
xf86-video-vmware xorg-server xorg-xinit xorg-xwayland \
yazi zram-generator zsh zsh-completions
#install components
echo "Installing required Packages"
sudo pacman -Syu alacritty base base-devel brightnessctl btop btrfs-progs cmatrix dmenu fastfetch firefox foot gitgreetd-tuigreet glfw gnu-netcat grim grub gst-plugin-pipewire hollywood htop imagemagick iwd libpulse libva-intel-driver libva-mesa-driver lightdm lightdm-gtk-greeter linux linux-firmware lynx micro nano networkmanager nmap openssh pavucontrol pipewire pipewire-alsa pipewire-jack pipewire-pulse slurp smartmontools sway swaybg swayidle swaylock ttf-jetbrains-mono vim vulkan-intel vulkan-radeon waybar wget wireless_tools wireplumber wireshark-qt wofi wpa_supplicant xdg-utils xf86-video-amdgpu xf86-video-ati xf86-video-nouveau xf86-video-vmware xorg-server xorg-xinit xorg-xwayland yazi zram-generator zsh zsh-completions
# yay
if ! command -v yay &>/dev/null; then
echo "Installing yay..."
mkdir -p ~/install-tmp
git clone https://aur.archlinux.org/yay.git ~/install-tmp/yay
cd ~/install-tmp/yay
makepkg -si --noconfirm
cd ~
else
echo "yay already installed."
fi
#aur/yay setup
echo "Installing yay"
cd ~
mkdir install-tmp
cd install-tmp
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
yay --version
cd ~/install-tmp
#networkmanager setup
echo "enabling NetworkManager"
# Services
echo "Enabling NetworkManager..."
sudo systemctl enable NetworkManager.service
#desktop env dotfiles
echo "Installing Desktop enviroment configs"
ln -s ~/Dotfiles/desktopenvs/sway/sway ~/.config/sway
ln -s ~/Dotfiles/desktopenvs/sway/alacritty ~/.config/alacritty
# Desktop env configs
echo "Linking desktop environment configs..."
ln -sf ~/Dotfiles/desktopenvs/sway/sway ~/.config/sway
ln -sf ~/Dotfiles/desktopenvs/sway/alacritty ~/.config/alacritty
#zsh setup
echo "Setting up zsh"
# Shell
echo "Setting up zsh..."
chsh -s /usr/bin/zsh
#homectl update --shell=/usr/bin/zsh
#starship setup
echo "Installing Starship"
curl -sS https://starship.rs/install.sh | sh
echo "Installing Starship..."
curl -sS https://starship.rs/install.sh | sh -s -- --yes
#ohmyzsh setup
echo "Installing oh my zsh"
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
echo "Installing oh-my-zsh..."
RUNZSH=no CHSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
#ohmyzsh plugins
echo "Installing oh my zsh plugins"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
echo "Installing oh-my-zsh plugins..."
ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
"$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
git clone https://github.com/zsh-users/zsh-autosuggestions \
"$ZSH_CUSTOM/plugins/zsh-autosuggestions"
#greetd setup
echo "Installing greetd"
# greetd config
sudo cp -f ~/Dotfiles/desktopenvs/hyprland/greetd-tuigreet/config.toml /etc/greetd/config.toml
sudo systemctl enable greetd.service
# Dotfiles
echo "Linking dotfiles..."
rm -f ~/.bashrc ~/.zshrc
ln -sf ~/Dotfiles/.bashrc ~/.bashrc
ln -sf ~/Dotfiles/.zshrc ~/.zshrc
ln -sf ~/Dotfiles/starship.toml ~/.config/starship.toml
ln -sf ~/Dotfiles/micro/ ~/.config/micro
ln -sf ~/Dotfiles/yazi/ ~/.config/yazi
mkdir -p ~/.config/spotify-tui
ln -sf ~/Dotfiles/spotify-tui/config.yml ~/.config/spotify-tui/config.yml
#cli dotfiles
echo "Installing bash and zsh setting files"
rm ~/.bashrc
rm ~/.zshrc
ln -s ~/Dotfiles/.bashrc ~/.bashrc
ln -s ~/Dotfiles/.zshrc ~/.zshrc
ln -s ~/Dotfiles/starship.toml ~/.config/starship.toml
ln -s ~/Dotfiles/micro/ ~/.config/micro
ln -s ~/Dotfiles/yazi/ ~/.config/yazi
ln -s ~/Dotfiles/spotify-tui/config.yml ~/.config/spotify-tui/config.yml
#final reboot
echo "Press any key to reboot"
read
systemctl reboot
echo "=== Sway installation complete. Reboot to start. ==="

View File

@ -1,2 +1,17 @@
#!/bin/bash
sudo pacman -Syu git 7zip pipewire distrobox htop nano vim firefox flatpak grub inetutils networkmanager neovim openssh base base-devel cockpit cockpit-files cockpit-podman zip unzip ufw fastfetch git wireplumber wpa_supplicant tree traceroute smartmontools ruby-pkg-config rust rustup usbutils pciutils qrencode bind btop gcc glib2 python python-pip atool nvim curl wget fastfetch fail2ban man-db wprs mc yazi atftp base base-devel btrfs-progs bluez ffmpeg gcc git grub htop inetutils iwd jq ldns libpulse linux linux-firmware openssh smartmontools traceroute ufw unzip zip vim wireless_tools wpa_supplicant zram-generator podman podman-compose vnstat inetutils symlinks arch-install-scripts greetd-tuigreet fd less cronie udisks2 udisks2-btrfs udiskie
set -euo pipefail
sudo pacman -Syu --noconfirm --needed \
7zip arch-install-scripts atftp atool \
base base-devel bind bluez btrfs-progs btop \
cockpit cockpit-files cockpit-podman cronie curl \
distrobox fail2ban fastfetch fd ffmpeg firefox flatpak \
gcc glib2 greetd-tuigreet grub \
htop inetutils iwd jq ldns less libpulse linux linux-firmware \
man-db mc nano neovim networkmanager \
openssh pciutils pipewire podman podman-compose \
python python-pip qrencode ruby-pkg-config rust rustup \
smartmontools symlinks traceroute tree \
udisks2 udisks2-btrfs udiskie ufw usbutils \
vim vnstat wget wireplumber wireless_tools wpa_supplicant wprs \
yazi zip unzip zram-generator

View File

@ -1,6 +1,11 @@
sudo pacman -S spotify-launcher steam
yay -S vesktop
flatpak install flathub org.prismlauncher.PrismLauncher
#!/bin/bash
set -euo pipefail
sudo pacman -S --noconfirm --needed spotify-launcher steam
yay -S --answerdiff None --answerclean All --noconfirm vesktop
flatpak install -y flathub org.prismlauncher.PrismLauncher
rm -rf ~/.config/Vencord
cp -r ~/Dotfiles/desktopenvs/hyprland/Vencord ~/.config/
@ -8,5 +13,4 @@ cp -r ~/Dotfiles/desktopenvs/hyprland/Vencord ~/.config/vesktop
curl -fsSL https://raw.githubusercontent.com/spicetify/cli/main/install.sh | sh
rm -rf ~/.config/spicetify
ln -s ~/Dotfiles/desktopenvs/hyprland/spicetify ~/.config/
ln -sf ~/Dotfiles/desktopenvs/hyprland/spicetify ~/.config/

View File

@ -1,3 +1,8 @@
#!/bin/bash
sudo pacman -S nmap wireshark-qt bind traceroute curl wget mtr tcpdump net-tools iputils podman-desktop kubectl ipcalc
#openbsd-netcat
set -euo pipefail
sudo pacman -S --noconfirm --needed \
nmap wireshark-qt bind traceroute curl wget \
mtr tcpdump net-tools iputils \
podman-desktop kubectl ipcalc
# openbsd-netcat

View File

@ -1,2 +1,4 @@
#!/bin/bash
yay -S wprs-git
set -euo pipefail
yay -S --answerdiff None --answerclean All --noconfirm wprs-git

View File

@ -1,5 +1,5 @@
#!/bin/bash
set -euo pipefail
echo "Installing ZFS Kernel Module"
yay -S zfs-dkms
echo "Installing ZFS kernel module..."
yay -S --answerdiff None --answerclean All --noconfirm zfs-dkms

View File

@ -1,30 +1,35 @@
#!/bin/bash
pacman -Syu flatpak
#aur/yay setup
echo "Installing yay"
cd ~
mkdir install-tmp
cd install-tmp
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
yay --version
cd ~/install-tmp
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
set -euo pipefail
# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
sudo pacman -Syu --noconfirm --needed flatpak
# yay
if ! command -v yay &>/dev/null; then
echo "Installing yay..."
mkdir -p ~/install-tmp
git clone https://aur.archlinux.org/yay.git ~/install-tmp/yay
cd ~/install-tmp/yay
makepkg -si --noconfirm
cd ~
else
echo "yay already installed."
fi
# rustup / rust
if ! command -v rustup &>/dev/null; then
echo "Installing rustup..."
sudo pacman -S --noconfirm --needed rustup
fi
rustup default stable
# Download and install Node.js:
nvm install 22
# Verify the Node.js version:
node -v # Should print "v22.14.0".
nvm current # Should print "v22.14.0".
# Verify npm version:
npm -v # Should print "10.9.2".
# nvm + Node.js
if ! command -v node &>/dev/null; then
echo "Installing nvm and Node.js 22..."
if [ ! -d "$HOME/.nvm" ]; then
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
fi
. "$HOME/.nvm/nvm.sh"
nvm install 22
else
echo "Node.js already installed: $(node -v)"
fi

View File

@ -1,8 +1,9 @@
#!/bin/bash
set -e # Exit on error
set -euo pipefail
#="\e[0m"# Colors for better UX
GREEN="\e[32m"
YELLOW="\e[33m"
RESET="\e[0m"
log() { echo -e "${GREEN}$1${RESET}"; }
skip() { echo -e "${YELLOW}$1${RESET}"; }
@ -11,21 +12,21 @@ skip() { echo -e "${YELLOW}↷ $1${RESET}"; }
log "Updating system..."
sudo pacman -Syu --noconfirm
# Install base packages (including nvim)
# Install base packages
PACKAGES=(zsh neovim curl pyright bash atftp bash-language-server btop clang fastfetch fzf hyfetch lua-language-server micro nano pulsemixer yazi z qrencode distrobox dysk python python-pip glow)
for pkg in "${PACKAGES[@]}"; do
if ! pacman -Qi "$pkg" &>/dev/null; then
log "Installing $pkg..."
sudo pacman -S --noconfirm "$pkg"
sudo pacman -S --noconfirm --needed "$pkg"
else
skip "$pkg already installed."
fi
done
# Install yay if not installed
# yay
if ! command -v yay &>/dev/null; then
log "Installing yay..."
sudo pacman -S --noconfirm git base-devel
sudo pacman -S --noconfirm --needed git base-devel
git clone https://aur.archlinux.org/yay.git /tmp/yay
cd /tmp/yay && makepkg -si --noconfirm
cd ~
@ -33,39 +34,32 @@ else
skip "yay already installed."
fi
# Install Rust & Cargo if not installed
# Rust / Cargo
if ! command -v cargo &>/dev/null; then
log "Installing Rust & Cargo..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
. "$HOME/.cargo/env"
else
skip "Rust & Cargo already installed."
fi
# Install nvm and Node.js if not installed
# nvm + Node.js
if ! command -v node &>/dev/null; then
log "Installing nvm and Node.js..."
if [ ! -d "$HOME/.nvm" ]; then
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
fi
source "$HOME/.nvm/nvm.sh"
. "$HOME/.nvm/nvm.sh"
nvm install 22
else
skip "Node.js already installed."
fi
# Verify npm
if ! command -v npm &>/dev/null; then
log "npm should be installed with Node.js. Please check your PATH."
else
skip "npm already available."
fi
# Git config
# git config
git config --global core.editor nvim
# Dotfiles setup
log "Setting up dotfiles..."
# Dotfiles
log "Deploying dotfiles..."
mkdir -p ~/.config ~/Pictures
ln -sf ~/Dotfiles/.bashrc ~/.bashrc
@ -75,7 +69,7 @@ ln -sf ~/Dotfiles/starship.toml ~/.config/starship.toml
rm -rf ~/.config/micro
cp -r ~/Dotfiles/micro ~/.config/
# Vim Plug installer
# vim-plug
if [ ! -f ~/.local/share/nvim/site/autoload/plug.vim ]; then
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
@ -84,7 +78,8 @@ fi
rm -rf ~/.config/nvim
ln -sf ~/Dotfiles/nvim ~/.config/nvim
mkdir -p ~/.local/share/nvim/site/plugged/vim-airline-themes/autoload/airline/themes
cp -f ~/Dotfiles/nvim/cyberqueer-airline.vim ~/.local/share/nvim/site/plugged/vim-airline-themes/autoload/airline/themes/
cp -f ~/Dotfiles/nvim/cyberqueer-airline.vim \
~/.local/share/nvim/site/plugged/vim-airline-themes/autoload/airline/themes/
rm -rf ~/.config/yazi
ln -sf ~/Dotfiles/yazi ~/.config/yazi
@ -94,36 +89,38 @@ ln -sf ~/Dotfiles/spotify-tui ~/.config/spotify-tui
cp -f ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg
# Install Starship if not installed
# Starship
if ! command -v starship &>/dev/null; then
log "Installing Starship..."
curl -sS https://starship.rs/install.sh | sh
curl -sS https://starship.rs/install.sh | sh -s -- --yes
else
skip "Starship already installed."
fi
# Install oh-my-zsh if not installed
# oh-my-zsh (RUNZSH=no prevents installer from spawning a new shell)
if [ ! -d "$HOME/.oh-my-zsh" ]; then
log "Installing oh-my-zsh..."
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
RUNZSH=no CHSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
else
skip "oh-my-zsh already installed."
fi
# Install oh-my-zsh plugins if not installed
ZSH_CUSTOM=${ZSH_CUSTOM:-~/.oh-my-zsh/custom}
# oh-my-zsh plugins
ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}"
if [ ! -d "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" ]; then
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
"$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
else
skip "zsh-syntax-highlighting already installed."
fi
if [ ! -d "$ZSH_CUSTOM/plugins/zsh-autosuggestions" ]; then
git clone https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions"
git clone https://github.com/zsh-users/zsh-autosuggestions \
"$ZSH_CUSTOM/plugins/zsh-autosuggestions"
else
skip "zsh-autosuggestions already installed."
fi
# Set zsh as default shell if not already
# Default shell
if [ "$SHELL" != "/usr/bin/zsh" ]; then
log "Setting zsh as default shell..."
chsh -s /usr/bin/zsh
@ -131,6 +128,4 @@ else
skip "zsh is already the default shell."
fi
log "✅ Setup complete!"
GREEN="\e[32m"
YELLOW="\e[33m"
log "Shell setup complete."

200
setup/tui-install.sh Executable file
View File

@ -0,0 +1,200 @@
#!/bin/bash
# tui-install.sh — TUI installer for the_miro's Arch dotfiles
set -uo pipefail
# ── Paths ─────────────────────────────────────────────────────────────────────
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DOTFILES_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
MODULES="$DOTFILES_DIR/setup/modules"
LOG="$HOME/dotfiles-install.log"
TMP_D="$(mktemp -d)"
trap 'rm -rf "$TMP_D"' EXIT
BACKTITLE="the_miro's Arch Dotfiles"
# ── Cyberqueer dialog theme ───────────────────────────────────────────────────
export DIALOGRC="$TMP_D/dialogrc"
cat > "$DIALOGRC" <<'EOF'
use_shadow = ON
use_colors = ON
screen_color = (BLACK,BLACK,ON)
shadow_color = (BLACK,BLACK,ON)
title_color = (MAGENTA,BLACK,ON)
border_color = (MAGENTA,BLACK,ON)
button_active_color = (BLACK,MAGENTA,ON)
button_inactive_color = (WHITE,BLACK,OFF)
button_key_active_color = (BLACK,CYAN,ON)
button_key_inactive_color = (CYAN,BLACK,ON)
button_label_active_color = (BLACK,MAGENTA,ON)
button_label_inactive_color = (WHITE,BLACK,OFF)
inputbox_color = (WHITE,BLACK,OFF)
inputbox_border_color = (MAGENTA,BLACK,ON)
menubox_color = (WHITE,BLACK,OFF)
menubox_border_color = (MAGENTA,BLACK,ON)
item_color = (WHITE,BLACK,OFF)
item_selected_color = (BLACK,MAGENTA,ON)
tag_color = (CYAN,BLACK,ON)
tag_selected_color = (BLACK,CYAN,ON)
tag_key_color = (CYAN,BLACK,ON)
tag_key_selected_color = (BLACK,CYAN,ON)
check_color = (WHITE,BLACK,OFF)
check_selected_color = (BLACK,MAGENTA,ON)
uarrow_color = (MAGENTA,BLACK,ON)
darrow_color = (MAGENTA,BLACK,ON)
EOF
# ── State ─────────────────────────────────────────────────────────────────────
STEP=0
TOTAL=0
# ── Helpers ───────────────────────────────────────────────────────────────────
require_dialog() {
command -v dialog &>/dev/null && return
echo "dialog not found — installing..."
sudo pacman -S --noconfirm dialog || { echo "Failed to install dialog."; exit 1; }
}
die() {
clear
printf "\n Error: %s\n\n" "$1" >&2
exit 1
}
log_sep() {
printf "\n══════════════════════════════════\n %s\n %s\n" "$1" "$(date)" >> "$LOG"
}
# Run a module script in the terminal (dialog is cleared so stdin/stdout work
# normally — pacman prompts, yay builds, etc. all function as expected).
run_module() {
local label="$1" script="$2"
STEP=$(( STEP + 1 ))
log_sep "[$STEP/$TOTAL] $label"
clear
printf "\n\033[1;35m [$STEP/$TOTAL] %s\033[0m\n" "$label"
printf "\033[35m ─────────────────────────────────────────────\033[0m\n\n"
local rc=0
bash "$script" 2>&1 | tee -a "$LOG" || rc=${PIPESTATUS[0]}
if [[ $rc -ne 0 ]]; then
dialog --backtitle "$BACKTITLE" \
--title " Module Failed " \
--yesno "$label exited with code $rc.\n\nContinue anyway?" 8 54 \
|| { clear; exit 1; }
fi
}
count_steps() {
local c="$1" de="$2"
TOTAL=0
[[ "$c" == *"pkg"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"core"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"svc"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"shell"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"de"* && "$de" != "none" ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"py"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"zfs"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"game"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"netdev"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$c" == *"wprs"* ]] && TOTAL=$(( TOTAL + 1 ))
}
# ── Preflight ─────────────────────────────────────────────────────────────────
[[ $EUID -eq 0 ]] && die "Run as your normal user (not root)."
command -v pacman &>/dev/null || die "pacman not found — Arch Linux required."
require_dialog
> "$LOG"
printf "Dotfiles install: %s\nDotfiles dir: %s\n" "$(date)" "$DOTFILES_DIR" >> "$LOG"
# ── Welcome ───────────────────────────────────────────────────────────────────
dialog --backtitle "$BACKTITLE" \
--title " Welcome " \
--msgbox "\n\
the_miro's Arch dotfiles installer\n\
Cyberqueer · Wayland · Hyprland\n\
─────────────────────────────────────────\n\
\n\
Arch Linux — network admin, development & gaming\n\
\n\
Source: $DOTFILES_DIR\n\
Log: $LOG\n" 14 62
# ── Component selection ───────────────────────────────────────────────────────
COMPONENTS=$(dialog --backtitle "$BACKTITLE" \
--title " Select Components " \
--checklist "Space toggles · Enter confirms · Esc quits" 22 68 10 \
"pkg" "Package managers yay · nvm · rust" on \
"core" "Core packages 100+ base system packages" on \
"svc" "Core services NetworkManager · cronie · fail2ban" on \
"shell" "Shell setup zsh · nvim · yazi · micro · starship" on \
"de" "Desktop environment (choose on next screen)" off \
"py" "Python tools pyright · pipx · python-pynvim" off \
"zfs" "ZFS support zfs-dkms" off \
"game" "Gaming Steam · Vesktop · Spotify · Prism" off \
"netdev" "Network dev tools nmap · wireshark · kubectl" off \
"wprs" "WPRS wprs-git (AUR)" off \
3>&1 1>&2 2>&3) || { clear; echo "Aborted."; exit 0; }
# ── DE selection ──────────────────────────────────────────────────────────────
DE="none"
if [[ "$COMPONENTS" == *"de"* ]]; then
DE=$(dialog --backtitle "$BACKTITLE" \
--title " Desktop Environment " \
--menu "Select a desktop environment:" 11 56 3 \
"hyprland" "Hyprland — Wayland WM, full setup (primary)" \
"sway" "Sway — Wayland tiling WM" \
"none" "Skip DE installation" \
3>&1 1>&2 2>&3) || DE="none"
fi
# ── Confirmation ──────────────────────────────────────────────────────────────
SUMMARY=""
[[ "$COMPONENTS" == *"pkg"* ]] && SUMMARY+=" ✦ Package managers (yay, nvm, rust)\n"
[[ "$COMPONENTS" == *"core"* ]] && SUMMARY+=" ✦ Core packages\n"
[[ "$COMPONENTS" == *"svc"* ]] && SUMMARY+=" ✦ Core services\n"
[[ "$COMPONENTS" == *"shell"* ]] && SUMMARY+=" ✦ Shell setup\n"
[[ "$COMPONENTS" == *"de"* && "$DE" != "none" ]] && SUMMARY+=" ✦ Desktop environment: $DE\n"
[[ "$COMPONENTS" == *"py"* ]] && SUMMARY+=" ✦ Python tools\n"
[[ "$COMPONENTS" == *"zfs"* ]] && SUMMARY+=" ✦ ZFS support\n"
[[ "$COMPONENTS" == *"game"* ]] && SUMMARY+=" ✦ Gaming packages\n"
[[ "$COMPONENTS" == *"netdev"* ]] && SUMMARY+=" ✦ Network dev tools\n"
[[ "$COMPONENTS" == *"wprs"* ]] && SUMMARY+=" ✦ WPRS\n"
dialog --backtitle "$BACKTITLE" \
--title " Confirm Installation " \
--yesno "\n Components to install:\n\n${SUMMARY}\n Log: $LOG\n\n Proceed?" \
20 62 || { clear; echo "Aborted."; exit 0; }
count_steps "$COMPONENTS" "$DE"
# ── Installation ──────────────────────────────────────────────────────────────
[[ "$COMPONENTS" == *"pkg"* ]] && run_module "Package Managers" "$MODULES/package-managers.sh"
[[ "$COMPONENTS" == *"core"* ]] && run_module "Core Packages" "$MODULES/core-packages.sh"
[[ "$COMPONENTS" == *"svc"* ]] && run_module "Core Services" "$MODULES/core.sh"
[[ "$COMPONENTS" == *"shell"* ]] && run_module "Shell Setup" "$MODULES/shell-setup.sh"
if [[ "$COMPONENTS" == *"de"* && "$DE" != "none" ]]; then
case "$DE" in
hyprland) run_module "Hyprland" "$MODULES/Desktop-Enviroments/hyprland-new.sh" ;;
sway) run_module "Sway" "$MODULES/Desktop-Enviroments/sway.sh" ;;
esac
fi
[[ "$COMPONENTS" == *"py"* ]] && run_module "Python Tools" "$MODULES/optional-Modules/python.sh"
[[ "$COMPONENTS" == *"zfs"* ]] && run_module "ZFS" "$MODULES/optional-Modules/zfs.sh"
[[ "$COMPONENTS" == *"game"* ]] && run_module "Gaming Packages" "$MODULES/optional-Modules/gaming-packages.sh"
[[ "$COMPONENTS" == *"netdev"* ]] && run_module "Network Dev Tools" "$MODULES/optional-Modules/network-developer-packages.sh"
[[ "$COMPONENTS" == *"wprs"* ]] && run_module "WPRS" "$MODULES/optional-Modules/wprs.sh"
# ── Done ──────────────────────────────────────────────────────────────────────
dialog --backtitle "$BACKTITLE" \
--title " Done " \
--msgbox "\n All selected components installed.\n\n Log: $LOG\n\n A reboot may be required for all changes to take effect.\n" 12 58
clear
printf "\n Done. Log: %s\n\n" "$LOG"