mirror of
https://github.com/rwinkhart/artix-install-script.git
synced 2026-08-31 06:06:38 -04:00
Initial file upload commit (not yet usable)
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
# Overview
|
||||||
|
An Artix Linux installation script that can be used to install and configure Artix Linux with my preferred setup.
|
||||||
|
|
||||||
|
Some major/noteworthy differences from common configurations:
|
||||||
|
|
||||||
|
- opendoas is used in place of sudo
|
||||||
|
- pipewire is used in place of pulseaudio
|
||||||
|
- EXT4 fast_commit mode is enabled by default
|
||||||
|
- makepkg is configured with better compression algorithms than the defaults and is forced to use all cores
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
Upon loading up the official Artic base ISO, logging in, switching to the root user, and connecting to the internet, run:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl https://raw.githubusercontent.com/rwinkhart/artix-install-script/main/install.sh -o install.sh
|
||||||
|
chmod +x install.sh
|
||||||
|
./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
After running the script, it will ask you some questions about your desired configuration. Answer them and then the installation will complete automatically.
|
||||||
|
|
||||||
|
# Supported Devices
|
||||||
|
Generic:
|
||||||
|
|
||||||
|
- Most x86_64 desktops, laptops, and servers
|
||||||
Executable
+128
@@ -0,0 +1,128 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Importing Variables
|
||||||
|
formfactor="$(cat /tempfiles/formfactor)"
|
||||||
|
cpu="$(cat /tempfiles/cpu)"
|
||||||
|
gpu="$(cat /tempfiles/gpu)"
|
||||||
|
intel_vaapi_driver="$(cat /tempfiles/intel_vaapi_driver)"
|
||||||
|
boot="$(cat /tempfiles/boot)"
|
||||||
|
disk="$(cat /tempfiles/disk)"
|
||||||
|
username="$(cat /tempfiles/username)"
|
||||||
|
userpassword="$(cat /tempfiles/userpassword)"
|
||||||
|
rootpassword="$(cat /tempfiles/rootpassword)"
|
||||||
|
|
||||||
|
# configuring locale and clock Settings
|
||||||
|
echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen
|
||||||
|
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
|
||||||
|
ln -s /usr/share/zoneinfo/America/"$timezone" /etc/localtime
|
||||||
|
locale-gen
|
||||||
|
hwclock --systohc --utc
|
||||||
|
|
||||||
|
# networkmanager configuration
|
||||||
|
pacman -S networkmanager-openrc
|
||||||
|
rc-update add NetworkManager
|
||||||
|
|
||||||
|
# makepkg configuration
|
||||||
|
curl https://raw.githubusercontent.com/rwinkhart/universal-arch-install-script/main/config-files/x86_64/makepkg.conf -o /etc/makepkg.conf
|
||||||
|
|
||||||
|
# bootloader installation and configuration
|
||||||
|
pacman -S grub efibootmgr os-prober mtools dosfstools --noconfirm
|
||||||
|
if [ "$boot" == 1 ]; then
|
||||||
|
grub-install --target=x86_64-efi --bootloader-id=GRUB-rwinkhart --recheck
|
||||||
|
fi
|
||||||
|
if [ "$boot" == 2 ]; then
|
||||||
|
grub-install --target=i386-pc "$disk"
|
||||||
|
fi
|
||||||
|
cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
|
||||||
|
if [ "$gpu" != 'NVIDIA' ]; then
|
||||||
|
curl https://raw.githubusercontent.com/rwinkhart/universal-arch-install-script/main/config-files/x86_64/grub -o /etc/default/grub
|
||||||
|
else
|
||||||
|
curl https://raw.githubusercontent.com/rwinkhart/universal-arch-install-script/main/config-files/x86_64/grub-nvidia -o /etc/default/grub
|
||||||
|
fi
|
||||||
|
grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
|
||||||
|
# account setup
|
||||||
|
groupadd classmod
|
||||||
|
echo "$rootpassword
|
||||||
|
$rootpassword
|
||||||
|
" | passwd
|
||||||
|
useradd -m -g users -G classmod "$username"
|
||||||
|
echo "$userpassword
|
||||||
|
$userpassword
|
||||||
|
" | passwd "$username"
|
||||||
|
|
||||||
|
# opendoas configuration
|
||||||
|
echo "permit persist keepenv $username as root" > /etc/doas.conf
|
||||||
|
ln -s /usr/bin/doas /usr/bin/sudo
|
||||||
|
|
||||||
|
# pacman configuration
|
||||||
|
curl https://raw.githubusercontent.com/rwinkhart/arch-install-script/main/config-files/universal/paccache-clean-hook -o /etc/pacman.d/hooks/paccache-clean.hook
|
||||||
|
if [ "$gpu" == 'NVIDIA' ]; then
|
||||||
|
curl https://raw.githubusercontent.com/rwinkhart/universal-arch-install-script/main/config-files/x86_64/nvidia-hook -o /etc/pacman.d/hooks/nvidia.hook
|
||||||
|
fi
|
||||||
|
|
||||||
|
# installing hardware-specific packages
|
||||||
|
if [ "$cpu" == 'AuthenticAMD' ]; then
|
||||||
|
pacman -S amd-ucode --noconfirm
|
||||||
|
else
|
||||||
|
pacman -S intel-ucode --noconfirm
|
||||||
|
fi
|
||||||
|
if [ "$gpu" == 'AMD' ]; then
|
||||||
|
pacman -S mesa vulkan-icd-loader vulkan-radeon libva-mesa-driver libva-utils --needed --noconfirm
|
||||||
|
elif [ "$gpu" == 'Intel' ]; then
|
||||||
|
pacman -S mesa vulkan-icd-loader vulkan-intel --needed --noconfirm
|
||||||
|
if [ "$intel_vaapi_driver" == 1 ]; then
|
||||||
|
pacman -S libva-intel-driver libva-utils --needed --noconfirm
|
||||||
|
fi
|
||||||
|
if [ "$intel_vaapi_driver" == 2 ]; then
|
||||||
|
pacman -S intel-media-driver libva-utils --needed --noconfirm
|
||||||
|
fi
|
||||||
|
elif [ "$gpu" == 'NVIDIA' ]; then
|
||||||
|
pacman -S nvidia nvidia-utils nvidia-settings vulkan-icd-loader --needed --noconfirm
|
||||||
|
echo 'options nvidia "NVreg_DynamicPowerManagement=0x02"' > /etc/modprobe.d/nvidia.conf
|
||||||
|
echo 'options nvidia-drm modeset=1' > /etc/modprobe.d/zz-nvidia-modeset.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
# disable kernel watchdog
|
||||||
|
echo 'blacklist iTCO_wdt' > /etc/modprobe.d/blacklist.conf
|
||||||
|
|
||||||
|
if [ "$formfactor" == 1 ]; then
|
||||||
|
pacman -R xorg-xbacklight --noconfirm
|
||||||
|
pacman -S powertop acpid-openrc acpilight --needed --noconfirm
|
||||||
|
rc-update add acpid
|
||||||
|
echo 'SUBSYSTEM=="backlight", ACTION=="add", \
|
||||||
|
RUN+="/bin/chgrp classmod /sys/class/backlight/%k/brightness", \
|
||||||
|
RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
|
||||||
|
' > /etc/udev/rules.d/screenbacklight.rules
|
||||||
|
fi
|
||||||
|
|
||||||
|
# setting home directory permissions
|
||||||
|
chmod -R 700 /home
|
||||||
|
|
||||||
|
# installing desktop environment and addons + utilities
|
||||||
|
if [ "$formfactor" -lt 3 ] || [ "$formfactor" == 4 ]; then
|
||||||
|
pacman -S pipewire pipewire-pulse pipewire-jack pipewire-alsa plasma-desktop sddm-openrc sddm-kcm kscreen kdeplasma-addons spectacle gwenview plasma-nm plasma-pa breeze-gtk kde-gtk-config kio-extras khotkeys kwalletmanager pcmanfm-qt yakuake ark kate bluedevil bluez --needed --noconfirm
|
||||||
|
rc-update add sddm
|
||||||
|
fi
|
||||||
|
|
||||||
|
# installing and configuring basic software packages
|
||||||
|
if [ "$formfactor" == 3 ]; then
|
||||||
|
pacman -S openssh --needed --noconfirm
|
||||||
|
mkdir /home/"$username"/.ssh
|
||||||
|
touch /home/"$username"/.ssh/authorized_keys
|
||||||
|
chmod 700 /home/"$username"/.ssh
|
||||||
|
chmod 600 /home/"$username"/.ssh/authorized_keys
|
||||||
|
chown -R "$username" /home/"$username"/.ssh
|
||||||
|
fi
|
||||||
|
echo -e '* hard memlock 64\n* soft memlock 2097152\n# End of file' > /etc/security/limits.conf # increases hard memlock limit to 2 GiB (useful for some apps, such as rpcs3)
|
||||||
|
mkdir -p /home/"$username"/.gnupg
|
||||||
|
echo 'pinentry-program /usr/bin/pinentry-tty' > /home/"$username"/.gnupg/gpg-agent.conf # forces gpg prompts to use terminal input
|
||||||
|
pacman -S neofetch htop cpupower --needed --noconfirm
|
||||||
|
|
||||||
|
# finishing up + cleaning
|
||||||
|
rm -rf /chrootInstall.sh /tempfiles
|
||||||
|
echo -e "\n---------------------------------------------------------"
|
||||||
|
echo installation completed!
|
||||||
|
echo please poweroff and remove the installation media before powering back on.
|
||||||
|
echo -e "---------------------------------------------------------\n"
|
||||||
|
exit
|
||||||
Executable
+57
@@ -0,0 +1,57 @@
|
|||||||
|
# GRUB boot loader configuration - Universal-ish Arch Installer 05/07/2022
|
||||||
|
|
||||||
|
GRUB_DEFAULT="Advanced options for Arch Linux>Arch Linux, with Linux linux"
|
||||||
|
GRUB_TIMEOUT=0
|
||||||
|
GRUB_DISTRIBUTOR="Arch"
|
||||||
|
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet nowatchdog mem_sleep_default=deep"
|
||||||
|
GRUB_CMDLINE_LINUX=""
|
||||||
|
|
||||||
|
# Preload both GPT and MBR modules so that they are not missed
|
||||||
|
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
|
||||||
|
|
||||||
|
# Uncomment to enable booting from LUKS encrypted devices
|
||||||
|
#GRUB_ENABLE_CRYPTODISK=y
|
||||||
|
|
||||||
|
# Set to 'countdown' or 'hidden' to change timeout behavior,
|
||||||
|
# press ESC key to display menu.
|
||||||
|
GRUB_TIMEOUT_STYLE=menu
|
||||||
|
|
||||||
|
# Uncomment to use basic console
|
||||||
|
GRUB_TERMINAL_INPUT=console
|
||||||
|
|
||||||
|
# Uncomment to disable graphical terminal
|
||||||
|
#GRUB_TERMINAL_OUTPUT=console
|
||||||
|
|
||||||
|
# The resolution used on graphical terminal
|
||||||
|
# note that you can use only modes which your graphic card supports via VBE
|
||||||
|
# you can see them in real GRUB with the command `vbeinfo'
|
||||||
|
GRUB_GFXMODE=auto
|
||||||
|
|
||||||
|
# Uncomment to allow the kernel use the same resolution used by grub
|
||||||
|
GRUB_GFXPAYLOAD_LINUX=keep
|
||||||
|
|
||||||
|
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
|
||||||
|
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
|
||||||
|
#GRUB_DISABLE_LINUX_UUID=true
|
||||||
|
|
||||||
|
# Uncomment to disable generation of recovery mode menu entries
|
||||||
|
GRUB_DISABLE_RECOVERY=true
|
||||||
|
|
||||||
|
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
|
||||||
|
# modes only. Entries specified as foreground/background.
|
||||||
|
#GRUB_COLOR_NORMAL="light-blue/black"
|
||||||
|
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
|
||||||
|
|
||||||
|
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
|
||||||
|
#GRUB_BACKGROUND="/path/to/wallpaper"
|
||||||
|
#GRUB_THEME="/path/to/gfxtheme"
|
||||||
|
|
||||||
|
# Uncomment to get a beep at GRUB start
|
||||||
|
#GRUB_INIT_TUNE="480 440 1"
|
||||||
|
|
||||||
|
# Uncomment to make GRUB remember the last selection. This requires
|
||||||
|
# setting 'GRUB_DEFAULT=saved' above.
|
||||||
|
#GRUB_SAVEDEFAULT=true
|
||||||
|
|
||||||
|
# Uncomment to disable submenus in boot menu
|
||||||
|
#GRUB_DISABLE_SUBMENU=y
|
||||||
Executable
+57
@@ -0,0 +1,57 @@
|
|||||||
|
# GRUB boot loader configuration - Universal-ish Arch Installer 05/07/2022
|
||||||
|
|
||||||
|
GRUB_DEFAULT="Advanced options for Arch Linux>Arch Linux, with Linux linux"
|
||||||
|
GRUB_TIMEOUT=0
|
||||||
|
GRUB_DISTRIBUTOR="Arch"
|
||||||
|
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet nowatchdog mem_sleep_default=deep nvidia-drm.modeset=1"
|
||||||
|
GRUB_CMDLINE_LINUX=""
|
||||||
|
|
||||||
|
# Preload both GPT and MBR modules so that they are not missed
|
||||||
|
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
|
||||||
|
|
||||||
|
# Uncomment to enable booting from LUKS encrypted devices
|
||||||
|
#GRUB_ENABLE_CRYPTODISK=y
|
||||||
|
|
||||||
|
# Set to 'countdown' or 'hidden' to change timeout behavior,
|
||||||
|
# press ESC key to display menu.
|
||||||
|
GRUB_TIMEOUT_STYLE=menu
|
||||||
|
|
||||||
|
# Uncomment to use basic console
|
||||||
|
GRUB_TERMINAL_INPUT=console
|
||||||
|
|
||||||
|
# Uncomment to disable graphical terminal
|
||||||
|
#GRUB_TERMINAL_OUTPUT=console
|
||||||
|
|
||||||
|
# The resolution used on graphical terminal
|
||||||
|
# note that you can use only modes which your graphic card supports via VBE
|
||||||
|
# you can see them in real GRUB with the command `vbeinfo'
|
||||||
|
GRUB_GFXMODE=auto
|
||||||
|
|
||||||
|
# Uncomment to allow the kernel use the same resolution used by grub
|
||||||
|
GRUB_GFXPAYLOAD_LINUX=keep
|
||||||
|
|
||||||
|
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
|
||||||
|
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
|
||||||
|
#GRUB_DISABLE_LINUX_UUID=true
|
||||||
|
|
||||||
|
# Uncomment to disable generation of recovery mode menu entries
|
||||||
|
GRUB_DISABLE_RECOVERY=true
|
||||||
|
|
||||||
|
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
|
||||||
|
# modes only. Entries specified as foreground/background.
|
||||||
|
#GRUB_COLOR_NORMAL="light-blue/black"
|
||||||
|
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
|
||||||
|
|
||||||
|
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
|
||||||
|
#GRUB_BACKGROUND="/path/to/wallpaper"
|
||||||
|
#GRUB_THEME="/path/to/gfxtheme"
|
||||||
|
|
||||||
|
# Uncomment to get a beep at GRUB start
|
||||||
|
#GRUB_INIT_TUNE="480 440 1"
|
||||||
|
|
||||||
|
# Uncomment to make GRUB remember the last selection. This requires
|
||||||
|
# setting 'GRUB_DEFAULT=saved' above.
|
||||||
|
#GRUB_SAVEDEFAULT=true
|
||||||
|
|
||||||
|
# Uncomment to disable submenus in boot menu
|
||||||
|
#GRUB_DISABLE_SUBMENU=y
|
||||||
Executable
+158
@@ -0,0 +1,158 @@
|
|||||||
|
#!/hint/bash
|
||||||
|
#
|
||||||
|
# /etc/makepkg.conf - Universal-ish Arch Installer 12/14/2021
|
||||||
|
#
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# SOURCE ACQUISITION
|
||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
#-- The download utilities that makepkg should use to acquire sources
|
||||||
|
# Format: 'protocol::agent'
|
||||||
|
DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
|
||||||
|
'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
|
||||||
|
'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
|
||||||
|
'https::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
|
||||||
|
'rsync::/usr/bin/rsync --no-motd -z %u %o'
|
||||||
|
'scp::/usr/bin/scp -C %u %o')
|
||||||
|
|
||||||
|
# Other common tools:
|
||||||
|
# /usr/bin/snarf
|
||||||
|
# /usr/bin/lftpget -c
|
||||||
|
# /usr/bin/wget
|
||||||
|
|
||||||
|
#-- The package required by makepkg to download VCS sources
|
||||||
|
# Format: 'protocol::package'
|
||||||
|
VCSCLIENTS=('bzr::bzr'
|
||||||
|
'fossil::fossil'
|
||||||
|
'git::git'
|
||||||
|
'hg::mercurial'
|
||||||
|
'svn::subversion')
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# ARCHITECTURE, COMPILE FLAGS
|
||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
CARCH="x86_64"
|
||||||
|
CHOST="x86_64-pc-linux-gnu"
|
||||||
|
|
||||||
|
#-- Compiler and Linker Flags
|
||||||
|
#CPPFLAGS=""
|
||||||
|
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions \
|
||||||
|
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
|
||||||
|
-fstack-clash-protection -fcf-protection"
|
||||||
|
CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS"
|
||||||
|
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
|
||||||
|
#RUSTFLAGS="-C opt-level=2"
|
||||||
|
#-- Make Flags: change this for DistCC/SMP systems
|
||||||
|
MAKEFLAGS="-j$(nproc)"
|
||||||
|
#-- Debugging flags
|
||||||
|
DEBUG_CFLAGS="-g -fvar-tracking-assignments"
|
||||||
|
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"
|
||||||
|
#DEBUG_RUSTFLAGS="-C debuginfo=2"
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# BUILD ENVIRONMENT
|
||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
# Makepkg defaults: BUILDENV=(!distcc !color !ccache check !sign)
|
||||||
|
# A negated environment option will do the opposite of the comments below.
|
||||||
|
#
|
||||||
|
#-- distcc: Use the Distributed C/C++/ObjC compiler
|
||||||
|
#-- color: Colorize output messages
|
||||||
|
#-- ccache: Use ccache to cache compilation
|
||||||
|
#-- check: Run the check() function if present in the PKGBUILD
|
||||||
|
#-- sign: Generate PGP signature file
|
||||||
|
#
|
||||||
|
BUILDENV=(!distcc color !ccache check !sign)
|
||||||
|
#
|
||||||
|
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
|
||||||
|
#-- specify a space-delimited list of hosts running in the DistCC cluster.
|
||||||
|
#DISTCC_HOSTS=""
|
||||||
|
#
|
||||||
|
#-- Specify a directory for package building.
|
||||||
|
#BUILDDIR=/tmp/makepkg
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# GLOBAL PACKAGE OPTIONS
|
||||||
|
# These are default values for the options=() settings
|
||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
# Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto)
|
||||||
|
# A negated option will do the opposite of the comments below.
|
||||||
|
#
|
||||||
|
#-- strip: Strip symbols from binaries/libraries
|
||||||
|
#-- docs: Save doc directories specified by DOC_DIRS
|
||||||
|
#-- libtool: Leave libtool (.la) files in packages
|
||||||
|
#-- staticlibs: Leave static library (.a) files in packages
|
||||||
|
#-- emptydirs: Leave empty directories in packages
|
||||||
|
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
|
||||||
|
#-- purge: Remove files specified by PURGE_TARGETS
|
||||||
|
#-- debug: Add debugging flags as specified in DEBUG_* variables
|
||||||
|
#-- lto: Add compile flags for building with link time optimization
|
||||||
|
#
|
||||||
|
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug !lto)
|
||||||
|
|
||||||
|
#-- File integrity checks to use. Valid: md5, sha1, sha224, sha256, sha384, sha512, b2
|
||||||
|
INTEGRITY_CHECK=(sha256)
|
||||||
|
#-- Options to be used when stripping binaries. See `man strip' for details.
|
||||||
|
STRIP_BINARIES="--strip-all"
|
||||||
|
#-- Options to be used when stripping shared libraries. See `man strip' for details.
|
||||||
|
STRIP_SHARED="--strip-unneeded"
|
||||||
|
#-- Options to be used when stripping static libraries. See `man strip' for details.
|
||||||
|
STRIP_STATIC="--strip-debug"
|
||||||
|
#-- Manual (man and info) directories to compress (if zipman is specified)
|
||||||
|
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
|
||||||
|
#-- Doc directories to remove (if !docs is specified)
|
||||||
|
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
|
||||||
|
#-- Files to be removed from all packages (if purge is specified)
|
||||||
|
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
|
||||||
|
#-- Directory to store source code in for debug packages
|
||||||
|
DBGSRCDIR="/usr/src/debug"
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# PACKAGE OUTPUT
|
||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
# Default: put built package and cached source in build directory
|
||||||
|
#
|
||||||
|
#-- Destination: specify a fixed directory where all packages will be placed
|
||||||
|
#PKGDEST=/home/packages
|
||||||
|
#-- Source cache: specify a fixed directory where source files will be cached
|
||||||
|
#SRCDEST=/home/sources
|
||||||
|
#-- Source packages: specify a fixed directory where all src packages will be placed
|
||||||
|
#SRCPKGDEST=/home/srcpackages
|
||||||
|
#-- Log files: specify a fixed directory where all log files will be placed
|
||||||
|
#LOGDEST=/home/makepkglogs
|
||||||
|
#-- Packager: name/email of the person or organization building packages
|
||||||
|
#PACKAGER="John Doe <john@doe.com>"
|
||||||
|
#-- Specify a key to use for package signing
|
||||||
|
#GPGKEY=""
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# COMPRESSION DEFAULTS
|
||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
COMPRESSGZ=(pigz -c -f -n)
|
||||||
|
COMPRESSBZ2=(pbzip2 -c -f)
|
||||||
|
COMPRESSXZ=(xz -c -z --threads=0 -)
|
||||||
|
COMPRESSZST=(zstd -c -z -q --threads=0 -)
|
||||||
|
COMPRESSLRZ=(lrzip -q)
|
||||||
|
COMPRESSLZO=(lzop -q)
|
||||||
|
COMPRESSZ=(compress -c -f)
|
||||||
|
COMPRESSLZ4=(lz4 -q)
|
||||||
|
COMPRESSLZ=(lzip -c -f)
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# EXTENSION DEFAULTS
|
||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
PKGEXT='.pkg.tar.zst'
|
||||||
|
SRCEXT='.src.tar.gz'
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# OTHER
|
||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
#-- Command used to run pacman as root, instead of trying sudo and su
|
||||||
|
#PACMAN_AUTH=()
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
[Trigger]
|
||||||
|
Operation=Install
|
||||||
|
Operation=Upgrade
|
||||||
|
Operation=Remove
|
||||||
|
Type=Package
|
||||||
|
Target=nvidia
|
||||||
|
Target=linux
|
||||||
|
# Change the linux part above and in the Exec line if a different kernel is used
|
||||||
|
|
||||||
|
[Action]
|
||||||
|
Description=Update Nvidia module in initcpio
|
||||||
|
Depends=mkinitcpio
|
||||||
|
When=PostTransaction
|
||||||
|
NeedsTargets
|
||||||
|
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P'
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
[Trigger]
|
||||||
|
Operation=Install
|
||||||
|
Operation=Upgrade
|
||||||
|
Operation=Remove
|
||||||
|
Type=Package
|
||||||
|
Target=nvidia-lts
|
||||||
|
Target=linux-lts
|
||||||
|
# Change the linux part above and in the Exec line if a different kernel is used
|
||||||
|
|
||||||
|
[Action]
|
||||||
|
Description=Update Nvidia module in initcpio
|
||||||
|
Depends=mkinitcpio
|
||||||
|
When=PostTransaction
|
||||||
|
NeedsTargets
|
||||||
|
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux-lts) exit 0; esac; done; /usr/bin/mkinitcpio -P'
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[Trigger]
|
||||||
|
Operation = Remove
|
||||||
|
Operation = Install
|
||||||
|
Operation = Upgrade
|
||||||
|
Type = Package
|
||||||
|
Target = *
|
||||||
|
|
||||||
|
[Action]
|
||||||
|
Description = Keep the last cache and the currently installed.
|
||||||
|
When = PostTransaction
|
||||||
|
Exec = /usr/bin/paccache -rvk2
|
||||||
Executable
+100
@@ -0,0 +1,100 @@
|
|||||||
|
#
|
||||||
|
# /etc/pacman.conf - Universal-ish Arch Installer 12/14/2021
|
||||||
|
#
|
||||||
|
# See the pacman.conf(5) manpage for option and repository directives
|
||||||
|
|
||||||
|
#
|
||||||
|
# GENERAL OPTIONS
|
||||||
|
#
|
||||||
|
[options]
|
||||||
|
# The following paths are commented out with their default values listed.
|
||||||
|
# If you wish to use different paths, uncomment and update the paths.
|
||||||
|
#RootDir = /
|
||||||
|
#DBPath = /var/lib/pacman/
|
||||||
|
#CacheDir = /var/cache/pacman/pkg/
|
||||||
|
#LogFile = /var/log/pacman.log
|
||||||
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
|
HoldPkg = pacman glibc
|
||||||
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
|
#CleanMethod = KeepInstalled
|
||||||
|
Architecture = auto
|
||||||
|
|
||||||
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
#IgnorePkg =
|
||||||
|
#IgnoreGroup =
|
||||||
|
|
||||||
|
#NoUpgrade =
|
||||||
|
#NoExtract =
|
||||||
|
|
||||||
|
# Misc options
|
||||||
|
#UseSyslog
|
||||||
|
Color
|
||||||
|
#NoProgressBar
|
||||||
|
CheckSpace
|
||||||
|
#VerbosePkgLists
|
||||||
|
#ParallelDownloads = 5
|
||||||
|
|
||||||
|
# By default, pacman accepts packages signed by keys that its local keyring
|
||||||
|
# trusts (see pacman-key and its man page), as well as unsigned packages.
|
||||||
|
SigLevel = Required DatabaseOptional
|
||||||
|
LocalFileSigLevel = Optional
|
||||||
|
#RemoteFileSigLevel = Required
|
||||||
|
|
||||||
|
# NOTE: You must run `pacman-key --init` before first using pacman; the local
|
||||||
|
# keyring can then be populated with the keys of all official Arch Linux
|
||||||
|
# packagers with `pacman-key --populate archlinux`.
|
||||||
|
|
||||||
|
#
|
||||||
|
# REPOSITORIES
|
||||||
|
# - can be defined here or included from another file
|
||||||
|
# - pacman will search repositories in the order defined here
|
||||||
|
# - local/custom mirrors can be added here or in separate files
|
||||||
|
# - repositories listed first will take precedence when packages
|
||||||
|
# have identical names, regardless of version number
|
||||||
|
# - URLs will have $repo replaced by the name of the current repo
|
||||||
|
# - URLs will have $arch replaced by the name of the architecture
|
||||||
|
#
|
||||||
|
# Repository entries are of the format:
|
||||||
|
# [repo-name]
|
||||||
|
# Server = ServerName
|
||||||
|
# Include = IncludePath
|
||||||
|
#
|
||||||
|
# The header [repo-name] is crucial - it must be present and
|
||||||
|
# uncommented to enable the repo.
|
||||||
|
#
|
||||||
|
|
||||||
|
# The testing repositories are disabled by default. To enable, uncomment the
|
||||||
|
# repo name header and Include lines. You can add preferred servers immediately
|
||||||
|
# after the header, and they will be used before the default mirrors.
|
||||||
|
|
||||||
|
#[testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[core]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
#[community-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[community]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
# If you want to run 32 bit applications on your x86_64 system,
|
||||||
|
# enable the multilib repositories as required here.
|
||||||
|
|
||||||
|
#[multilib-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[multilib]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
# An example of a custom package repository. See the pacman manpage for
|
||||||
|
# tips on creating your own repositories.
|
||||||
|
#[custom]
|
||||||
|
#SigLevel = Optional TrustAll
|
||||||
|
#Server = file:///home/custompkgs
|
||||||
Executable
+104
@@ -0,0 +1,104 @@
|
|||||||
|
#
|
||||||
|
# /etc/pacman.conf - Universal-ish Arch Installer 12/14/2021
|
||||||
|
#
|
||||||
|
# See the pacman.conf(5) manpage for option and repository directives
|
||||||
|
|
||||||
|
#
|
||||||
|
# GENERAL OPTIONS
|
||||||
|
#
|
||||||
|
[options]
|
||||||
|
# The following paths are commented out with their default values listed.
|
||||||
|
# If you wish to use different paths, uncomment and update the paths.
|
||||||
|
#RootDir = /
|
||||||
|
#DBPath = /var/lib/pacman/
|
||||||
|
#CacheDir = /var/cache/pacman/pkg/
|
||||||
|
#LogFile = /var/log/pacman.log
|
||||||
|
#GPGDir = /etc/pacman.d/gnupg/
|
||||||
|
#HookDir = /etc/pacman.d/hooks/
|
||||||
|
HoldPkg = pacman glibc
|
||||||
|
#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
|
||||||
|
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||||
|
#CleanMethod = KeepInstalled
|
||||||
|
Architecture = auto
|
||||||
|
|
||||||
|
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||||
|
#IgnorePkg =
|
||||||
|
#IgnoreGroup =
|
||||||
|
|
||||||
|
#NoUpgrade =
|
||||||
|
#NoExtract =
|
||||||
|
|
||||||
|
# Misc options
|
||||||
|
#UseSyslog
|
||||||
|
Color
|
||||||
|
#NoProgressBar
|
||||||
|
CheckSpace
|
||||||
|
#VerbosePkgLists
|
||||||
|
#ParallelDownloads = 5
|
||||||
|
|
||||||
|
# By default, pacman accepts packages signed by keys that its local keyring
|
||||||
|
# trusts (see pacman-key and its man page), as well as unsigned packages.
|
||||||
|
SigLevel = Required DatabaseOptional
|
||||||
|
LocalFileSigLevel = Optional
|
||||||
|
#RemoteFileSigLevel = Required
|
||||||
|
|
||||||
|
# NOTE: You must run `pacman-key --init` before first using pacman; the local
|
||||||
|
# keyring can then be populated with the keys of all official Arch Linux
|
||||||
|
# packagers with `pacman-key --populate archlinux`.
|
||||||
|
|
||||||
|
#
|
||||||
|
# REPOSITORIES
|
||||||
|
# - can be defined here or included from another file
|
||||||
|
# - pacman will search repositories in the order defined here
|
||||||
|
# - local/custom mirrors can be added here or in separate files
|
||||||
|
# - repositories listed first will take precedence when packages
|
||||||
|
# have identical names, regardless of version number
|
||||||
|
# - URLs will have $repo replaced by the name of the current repo
|
||||||
|
# - URLs will have $arch replaced by the name of the architecture
|
||||||
|
#
|
||||||
|
# Repository entries are of the format:
|
||||||
|
# [repo-name]
|
||||||
|
# Server = ServerName
|
||||||
|
# Include = IncludePath
|
||||||
|
#
|
||||||
|
# The header [repo-name] is crucial - it must be present and
|
||||||
|
# uncommented to enable the repo.
|
||||||
|
#
|
||||||
|
|
||||||
|
# The testing repositories are disabled by default. To enable, uncomment the
|
||||||
|
# repo name header and Include lines. You can add preferred servers immediately
|
||||||
|
# after the header, and they will be used before the default mirrors.
|
||||||
|
|
||||||
|
#[testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[core]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
#[community-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[community]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
# If you want to run 32 bit applications on your x86_64 system,
|
||||||
|
# enable the multilib repositories as required here.
|
||||||
|
|
||||||
|
#[multilib-testing]
|
||||||
|
#Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[multilib]
|
||||||
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
[g14]
|
||||||
|
SigLevel = DatabaseNever Optional TrustAll
|
||||||
|
Server = https://arch.asus-linux.org
|
||||||
|
|
||||||
|
# An example of a custom package repository. See the pacman manpage for
|
||||||
|
# tips on creating your own repositories.
|
||||||
|
#[custom]
|
||||||
|
#SigLevel = Optional TrustAll
|
||||||
|
#Server = file:///home/custompkgs
|
||||||
Executable
+38
@@ -0,0 +1,38 @@
|
|||||||
|
#
|
||||||
|
# $PARU_CONF - Universal-ish Arch Installer 12/14/2021
|
||||||
|
# /etc/paru.conf
|
||||||
|
# ~/.config/paru/paru.conf
|
||||||
|
#
|
||||||
|
# See the paru.conf(5) manpage for options
|
||||||
|
|
||||||
|
#
|
||||||
|
# GENERAL OPTIONS
|
||||||
|
#
|
||||||
|
[options]
|
||||||
|
PgpFetch
|
||||||
|
Devel
|
||||||
|
Provides
|
||||||
|
DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg
|
||||||
|
#AurOnly
|
||||||
|
BottomUp
|
||||||
|
#RemoveMake
|
||||||
|
#SudoLoop
|
||||||
|
#UseAsk
|
||||||
|
#SaveChanges
|
||||||
|
#CombinedUpgrade
|
||||||
|
#CleanAfter
|
||||||
|
#UpgradeMenu
|
||||||
|
#NewsOnUpgrade
|
||||||
|
|
||||||
|
#LocalRepo
|
||||||
|
#Chroot
|
||||||
|
#Sign
|
||||||
|
#SignDb
|
||||||
|
|
||||||
|
#
|
||||||
|
# Binary OPTIONS
|
||||||
|
#
|
||||||
|
#[bin]
|
||||||
|
#FileManager = vifm
|
||||||
|
#MFlags = --skippgpcheck
|
||||||
|
#Sudo = doas
|
||||||
Executable
+174
@@ -0,0 +1,174 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
loadkeys us
|
||||||
|
echo ----------------------------------------------------------------------------------------------
|
||||||
|
echo rwinkhart\'s artix installer
|
||||||
|
echo last updated june 25, 2022
|
||||||
|
echo ----------------------------------------------------------------------------------------------
|
||||||
|
echo You will be asked some questions before installation.
|
||||||
|
echo -e "----------------------------------------------------------------------------------------------\n"
|
||||||
|
read -n 1 -s -r -p 'Press any key to continue'
|
||||||
|
|
||||||
|
# start questions
|
||||||
|
echo Special Devices:
|
||||||
|
echo -e '\nspecial devices:\n1. asus rog zephyrus g14 2020\ngeneric:\n2. laptop\n3. desktop\n4. server\n'
|
||||||
|
read -n 1 -r -p "formfactor: " formfactor
|
||||||
|
|
||||||
|
fdisk -l
|
||||||
|
read -r -p "disk: " disk
|
||||||
|
|
||||||
|
read -r -p "swap (in GB): " swap
|
||||||
|
|
||||||
|
read -n 1 -r -p "clean install? (y/N) " wipe
|
||||||
|
|
||||||
|
read -r -p "username: " username
|
||||||
|
|
||||||
|
read -r -p "$username password: " userpassword
|
||||||
|
|
||||||
|
read -r -p "root password: " rootpassword
|
||||||
|
|
||||||
|
read -r -p "hostname: " hostname
|
||||||
|
# stop questions
|
||||||
|
|
||||||
|
# start hardware detection
|
||||||
|
cpu=$(lscpu | grep 'Vendor ID:' | awk 'FNR == 1 {print $3;}')
|
||||||
|
gpu=$(lspci | grep 'VGA compatible controller:' | awk 'FNR == 1 {print $5;}')
|
||||||
|
# stop hardware detection
|
||||||
|
|
||||||
|
# start conditional questions
|
||||||
|
if [ "$gpu" == 'Intel' ]; then
|
||||||
|
echo -e '1. libva-intel-driver (intel igpus up to coffee lake)\n2. intel-media-driver (intel igpus/dgpus newer than coffee lake)\n'
|
||||||
|
read -n 1 -r -p "va-api driver: " intel_vaapi_driver
|
||||||
|
fi
|
||||||
|
# stop conditional questions
|
||||||
|
|
||||||
|
# start variable manipulation
|
||||||
|
wipe=$(echo "$wipe" | tr '[:upper:]' '[:lower:]')
|
||||||
|
username=$(echo "$username" | tr '[:upper:]' '[:lower:]')
|
||||||
|
hostname=$(echo "$hostname" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
|
disk0=$disk
|
||||||
|
if [[ "$disk" == /dev/nvme0n* ]]; then
|
||||||
|
disk="$disk"'p'
|
||||||
|
fi
|
||||||
|
if [[ "$disk" == /dev/mmcblk* ]]; then
|
||||||
|
disk="$disk"'p'
|
||||||
|
fi
|
||||||
|
# stop variable manipulation
|
||||||
|
|
||||||
|
# determine if running as UEFI or BIOS
|
||||||
|
if [ -d "/sys/firmware/efi" ]; then
|
||||||
|
boot=1
|
||||||
|
else
|
||||||
|
boot=2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# start partitioning
|
||||||
|
if [ "$boot" == 1 ]; then
|
||||||
|
# gpt/uefi partitioning
|
||||||
|
if [ "$wipe" == y ]; then
|
||||||
|
partitions=0
|
||||||
|
echo "g
|
||||||
|
n
|
||||||
|
1
|
||||||
|
|
||||||
|
+256M
|
||||||
|
t
|
||||||
|
1
|
||||||
|
n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
w
|
||||||
|
" | fdisk -w always -W always "$disk0"
|
||||||
|
else
|
||||||
|
partitions=$(lsblk "$disk0" -o NAME | grep -o '.$' | tail -1)
|
||||||
|
echo "n
|
||||||
|
|
||||||
|
|
||||||
|
+256M
|
||||||
|
t
|
||||||
|
|
||||||
|
1
|
||||||
|
n
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
w
|
||||||
|
" | fdisk -W always "$disk0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# disk formatting
|
||||||
|
mkfs.fat -F32 "$disk""$((1 + "$partitions"))"
|
||||||
|
mkfs.ext4 -O fast_commit "$disk""$((2 + "$partitions"))"
|
||||||
|
|
||||||
|
# mounting storage and efi partitions
|
||||||
|
mount "$disk""$((2 + "$partitions"))" /mnt
|
||||||
|
mkdir -p /mnt/{boot/EFI,etc}
|
||||||
|
mount "$disk""$((1 + "$partitions"))" /mnt/boot/EFI
|
||||||
|
else
|
||||||
|
# mbr/bios partitioning
|
||||||
|
if [ "$wipe" == y ]; then
|
||||||
|
partitions=0
|
||||||
|
echo "o
|
||||||
|
n
|
||||||
|
p
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
w
|
||||||
|
" | fdisk -w always -W always "$disk0"
|
||||||
|
else
|
||||||
|
partitions=$(lsblk "$disk0" -o NAME | grep -o '.$' | tail -1)
|
||||||
|
echo "n
|
||||||
|
p
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
w
|
||||||
|
" | fdisk -W always "$disk0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# disk formatting
|
||||||
|
mkfs.ext4 -O fast_commit "$disk""$((1 + "$partitions"))"
|
||||||
|
|
||||||
|
# mounting storage (no efi partition, using dos label)
|
||||||
|
mount "$disk""$((1 + "$partitions"))" /mnt
|
||||||
|
mkdir /mnt/etc
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create and mount swap file
|
||||||
|
if [ "$swap" != 0 ]; then
|
||||||
|
dd if=/dev/zero of=/mnt/swapfile bs=1G count="$swap" status=progress
|
||||||
|
chmod 600 /mnt/swapfile
|
||||||
|
mkswap /mnt/swapfile
|
||||||
|
swapon /mnt/swapfile
|
||||||
|
fi
|
||||||
|
|
||||||
|
fstabgen -U /mnt >> /mnt/etc/fstab
|
||||||
|
# stop partitioning
|
||||||
|
|
||||||
|
# setting hostname
|
||||||
|
echo "$hostname" > /mnt/etc/hostname
|
||||||
|
|
||||||
|
# installing base packages
|
||||||
|
base_devel='autoconf automake binutils bison fakeroot file findutils flex gawk gcc gettext grep groff pigz pbzip2 libtool m4 make pacman patch pkgconf sed opendoas texinfo which'
|
||||||
|
if [ "$formfactor" -lt 3 ]; then
|
||||||
|
basestrap /mnt base $base_devel openrc elogind-openrc linux linux-firmware
|
||||||
|
fi
|
||||||
|
|
||||||
|
# exporting variables
|
||||||
|
mkdir /mnt/tempfiles
|
||||||
|
echo "$formfactor" > /mnt/tempfiles/formfactor
|
||||||
|
echo "$cpu" > /mnt/tempfiles/cpu
|
||||||
|
echo "$gpu" > /mnt/tempfiles/gpu
|
||||||
|
echo "$intel_vaapi_driver" > /mnt/tempfiles/intel_vaapi_driver
|
||||||
|
echo "$boot" > /mnt/tempfiles/boot
|
||||||
|
echo "$disk0" > /mnt/tempfiles/disk
|
||||||
|
echo "$username" > /mnt/tempfiles/username
|
||||||
|
echo "$userpassword" > /mnt/tempfiles/userpassword
|
||||||
|
echo "$rootpassword" > /mnt/tempfiles/rootpassword
|
||||||
|
|
||||||
|
# download and initiate part 2
|
||||||
|
curl https://raw.githubusercontent.com/rwinkhart/universal-arch-install-script/main/universal/secondInstall.sh -o /mnt/chrootInstall.sh
|
||||||
|
chmod +x /mnt/chrootInstall.sh
|
||||||
|
artix-chroot /mnt ./chrootInstall.sh
|
||||||
Reference in New Issue
Block a user