mirror of
https://github.com/rwinkhart/artix-install-script.git
synced 2026-08-28 04:46:27 -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