When the world says, ‘Give up,’ hope whispers, ‘Try it one more time,’ Lyndon B. Johnson
Arch Linux is an independently developed, free and open-source, rolling release distribution. It is a minimalist, lightweight, and bleeding edge distribution that targets advanced users.
Hyprland is a dynamic tiling Wayland compositor. It’s designed for performance and efficiency, allowing you to manage windows easily with a modern aesthetic.
General. Enter a VM ID (automatically generated) and a name for your VM (e.g., hyprArch).
OS. Select the type of operating system you plan to install (Linux, Windows, etc.). Choose the ISO image from your storage we have just downloaded for the installation.
System: Configure the BIOS type (OVMF (UEFI)). Graphic card (VirtIO GPU), EFI Storage (mypool).
Disk: Storage (mypool).
CPU: Cores. Allocate the number of CPU cores to the VM, e.g., 4.
Memory: Allocate the desired amount of RAM for the VM, e.g., 8192.
Network: configure the network interface (usually defaults are fine).
When installing Arch Linux on Proxmox, using the VirtIO GPU is beneficial because it provides better performance and compatibility for virtual machines. If you have an NVIDIA or AMD GPU, you’ll need to install the appropriate drivers.
Start the VM, select Console, SPICE, go to BIOS by pressing ESC, Device Manager, Secure Boot Configuration, Atempt Secure Boot (disable), ESC, Reset
Hardware, Add, Audio Device, ich9-intel-hda.
[...]
# Uncomment this line and add the following one to keep the environment variable EDITOR when running commands with sudo
Default env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
Default env_keep += "EDITOR"
# Uncomment to allow member of group wheel to execute any commands
%wheel ADD=(ALL:ALL) ALL
[...]
nmaximo7 ALL=(ALL:ALL) ALL NOPASSWD : /usr/bin/pacman, /usr/bin/poweroff, /usr/bin/reboot
Install some packages for Hyprland: yay -S hyprland xdg-desktop-portal-hperland (a backend for the XDG Desktop Portal, allowing applications to interact with the desktop environment in a Wayland-compatible manner) dunst (a lightweight notification daemon) wofi (an application launcher for Wayland) foot (a modern terminal emulator designed for Wayland) sddm (a login manager, option 5) thunar (a fast and lightweight file manager ) qemu-guest-agent (a daemon that runs inside a virtual machine, allowing better communication between the host and guest systems) firefox (a popular open-source web browser)
Some more: yay -S hyprpaper (a background manager for Hyprland that allows you to set wallpapers and manage background images easily) alacritty (an OpenGL terminal emulator that focuses on performance) neofetch (a command-line visually appealing utility that displays system information alongside a logo of your distribution) mpv (a versatile media player that supports a wide range of video and audio formats) flameshot (a powerful screenshot tool that allows you to capture and annotate images easily) gimp (a free and open-source image editor).
Enter Hyprland (Hyprland), Super+R (Wofi), launch foot, and edit Hyprland’s main configuration file: vim .config/hyper/hyprland.conf:
# autogenerated = 0
[...]
kb_layout = "es" # input section
[...]
exec-once = waybar & hyprpaper & firefox
[...]
monitor=,1920x1080,auto,auto
[...]
$terminal=foot
$fileManager=thunar
[...]
gaps_out = 10 # general section
rounding = 5 # decoration section
[...]
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, Q, killactive
Enable the login manager: sudo systemctl enable sddm, sudo systemctl start sddm
Enable audio: yay -S pipewire-{alsa,jack,pulse} gst-plugin-pipewire pavucontrol pamixer
Enable sshd: sudo pacman -S openssh
, sudo systemctl enable sshd
, and sudo systemctl start sshd
.
Install and configure Waybar: yay -S waybar network-manager-applet
, cp -r /etc/xdb/waybar/ ~/.config/
. and vim .config/waybar/config.jsonc
.
"layer": "top", // Waybar at top layer
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [
"hyprland/window"
],
"modules-right": [
"idle_inhibitor",
"pulseaudio",
"network",
"power-profiles-daemon",
"cpu",
"memory",
"keyboard-state",
"clock",
"tray",
"custom/power"
],
Add our user to the input group and log in to the new group: sudo usermod -aG input $USER
, newgrp input
.
Adding some fonts: yay font-awesome
, select 1 2.
More utilities: sudo pacman -S fastfetch neovim wget unzip geany python-pipx htop ripgrep docker fzf
& pipx completions
(add shell completions for pipx) pipx ensurepath
(some apps will not be globally accessible until your PATH is updated).
fastfetch is a command-line utility that displays system information in a visually appealing way. neovim is an extensible text editor that improves upon Vim. It has better support for plugins and modern features. wget is a versatile command-line utility for downloading files from the web. unzip is a utility for extracting files from ZIP archives. geany is a very lightweight editor and IDE that supports various programming languages.python-pipx is a package manager for Python applications, allowing you to install and run Python tools in isolated environments.
More: htop is an interactive process viewer for Unix systems.ripgrep (rg) is a command-line search tool that recursively searches your current directory for a regex pattern. It’s faster than grep and has more features. docker is a platform for developing, shipping, and running applications in containers. It simplifies deployment and dependency management. fzf is a command-line fuzzy finder. It allows you to quickly search and filter through files, command history, and more.
A shell is a command-line interpreter. It sits between the kernel (core) of an operating system and the user, and exposes the operating system’s services to a human user or other programs. In other words, a shell is a command-line user interface for accessing the services of the operating system. Some example of shells are: Power Shell, cmd, Bash, fish, and Zsh.
Zsh (Z shell) is a popular alternative to the default Bash shell. It is an extended shell designed for interactive use, known for its extensive customization options, plugin ecosystem, theme support, and advanced features that improve the user experience.
Oh My Zsh is a delightful, open source, community-driven -somehow bloated- framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, helpers, plugins, and themes.
Install the corresponding packages: sudo pacman -S zsh zsh-completions
. Change to zsh chsh -s /bin/zsh
. First time: zsh
, select 0, quit and do nothing. , ``
# Instal oh my shell
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Install zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# Install zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# Installing Fantasque Nerd Font
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/FantasqueSansMono.zip
unzip FantasqueSansMono.zip
# Installing Starship
curl -sS https://starship.rs/install.sh | sh
mkdir -p .local/share/fonts
cd .local/share/fonts
---------------------------------------
vim .zshrc:
---------------------------------------
# Path to your oh-my-zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load.
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="robbyrussell"
# Enable command auto-correction.
ENABLE_CORRECTION="true"
# Display red dots while waiting for completion.
COMPLETION_WAITING_DOTS="true"
# Plugins to load.
# Add wisely, as too many plugins slow down shell startup.
plugins=(
zsh-autosuggestions
zsh-syntax-highlighting
sudo
docker
)
# Load Oh My Zsh.
source $ZSH/oh-my-zsh.sh
# User configuration
# Set your preferred editor.
export EDITOR='nvim'
# Aliases for common commands.
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias cls='clear'
alias df='df -h'
alias du='du -h'
alias mkdir='mkdir -p'
alias ports='netstat -tulanp'
# Arch Linux-specific aliases.
alias update='sudo pacman -Syu'
alias cleanup='sudo pacman -Rns $(pacman -Qdtq)'
alias pkglist='pacman -Qqe > pkglist.txt'
alias install='sudo pacman -S'
alias remove='sudo pacman -Rns'
alias search='pacman -Ss'
alias orphaned='pacman -Qdt'
alias mirrors='sudo reflector --latest 10 --sort rate --save /etc/pacman.d/mirrorlist'
# Set language environment.
export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions.
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='nvim'
else
export EDITOR='nvim'
fi
# Enable color support for ls and grep.
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# History configuration.
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_FIND_NO_DUPS
setopt HIST_SAVE_NO_DUPS
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
# Enable auto-suggestions based on history.
source ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
# Enable syntax highlighting.
source ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# Load local customizations if they exist.
if [ -f ~/.zshrc_local ]; then
source ~/.zshrc_local
fi
eval "$(starship init zsh)" # We need to add this for startship
unsetopt correct # Permanently Disable Spell Correction
# Zsh is suggesting a correction for ollama/qwen2.5:latest to .ollama/qwen2.5:latest.
---------------------------------------
exec zsh
Ollama is a lightweight, extensible framework for building and running language models on the local machine. It makes it easy to get up and running with Llama 3.3, Phi 4, Gemma 2, and other large language models.
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# These models require plenty of resources
ollama run llama3.3
ollama run phi4
# Qwen2.5 models are pretrained on Alibaba's latest large-scale dataset, encompassing up to 18 trillion tokens.
❯ ollama run qwen2.5
>>> What is the capital of France?
The capital of France is Paris.
>>> /bye
ollama list # List your models
ollama systemctl status ollama.service # Check the status of the Ollama service on a Linux system
sudo systemctl stop ollama.service # Stop the Ollama service.
# Install ShellGPT
pipx install shell-gpt
# By default, ShellGPT uses OpenAI's API. You'll need an API key. OpenAI API is not free of charge.
# ShellGPT is designed to quickly analyse and retrieve information.
❯ pipx install litellm
❯ pipx inject shell-gpt litellm
injected package litellm into venv shell-gpt
done! ✨ 🌟 ✨
nmaximo7 in 🌐 hyperArch in ~ took 5s
❯ sgpt --model ollama/qwen2.5:latest "Who are you?"
I am ShellGPT, your programming and system administration assistant. I manage Linux/Arch Linux systems using the zsh shell. How can I assist you today?
nmaximo7 in 🌐 hyperArch in ~ took 23s
To copy your SSH key to the remote server (192.168.1.106) for the user nmaximo7, you can use the ssh-copy-id command. This command appends your public key to the ~/.ssh/authorized_keys file on the remote server, allowing you to authenticate without a password.
ssh-copy-id nmaximo7@192.168.1.106
ssh nmaximo7@192.168.1.106 # Passwordless access to the server