Compare commits
17 commits
2024-07-23
...
main
Author | SHA1 | Date | |
---|---|---|---|
353eeb6475 | |||
5e1b58245a | |||
2cde56fe75 | |||
8a7e1ca024 | |||
c29536adb0 | |||
|
b9a371c01b | ||
|
f933d1abb7 | ||
7680fd747f | |||
1b0a532c8e | |||
eb21d10efa | |||
4910cf76bc | |||
207c288d1d | |||
92929104e2 | |||
|
3e89a5a356 | ||
6d9f583295 | |||
ea9b5c9b21 | |||
74df96fc30 |
7 changed files with 310 additions and 24 deletions
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
|
@ -23,6 +23,8 @@ jobs:
|
|||
arch: ['aarch64', 'rpi-aarch64']
|
||||
flavor: ['barebone']
|
||||
include:
|
||||
- arch: rpi-aarch64
|
||||
flavor: plasma
|
||||
- arch: rpi-aarch64
|
||||
flavor: xfce
|
||||
- arch: rpi-aarch64
|
||||
|
@ -52,7 +54,7 @@ jobs:
|
|||
scripts+=("$script_path")
|
||||
fi
|
||||
done
|
||||
sudo ./create-image 8G ${{ matrix.arch }} "${scripts[@]}"
|
||||
sudo ./create-image 9G ${{ matrix.arch }} "${scripts[@]}"
|
||||
- name: Rename image
|
||||
id: rename-image
|
||||
run: |
|
||||
|
@ -63,7 +65,7 @@ jobs:
|
|||
- name: Compress image
|
||||
run: |
|
||||
mkdir image_parts
|
||||
zip -r "image_parts/${{ steps.rename-image.outputs.image_name }}.zip" "${{ steps.rename-image.outputs.image_name }}"
|
||||
zip -s 2000m "image_parts/${{ steps.rename-image.outputs.image_name }}.zip" "${{ steps.rename-image.outputs.image_name }}"
|
||||
- name: Upload image
|
||||
run: |
|
||||
sha256sum image_parts/* > image_parts/sha256sums.${{ matrix.arch }}.${{ matrix.flavor }}.txt
|
||||
|
|
62
.gitlab-ci.yml
Normal file
62
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,62 @@
|
|||
stages:
|
||||
- build
|
||||
- deploy
|
||||
|
||||
image: archlinux/archlinux:base-devel
|
||||
|
||||
variables:
|
||||
ARCHITECTURES: "aarch64 rpi-aarch64" # Set architectures for the matrix
|
||||
FLAVORS: "barebone plasma xfce trinity" # Set flavors to simulate a matrix
|
||||
Remote_Path: "/srv/http/arm/"
|
||||
|
||||
# Build stage: builds ISO files for multiple architectures and flavors
|
||||
build_iso:
|
||||
stage: build
|
||||
script:
|
||||
- pacman -Sy parted wget dosfstools zip arch-install-scripts aria2 git --noconfirm
|
||||
- echo "Starting ISO build for ARM platforms"
|
||||
- for arch in $ARCHITECTURES; do
|
||||
for flavor in $FLAVORS; do
|
||||
scripts=();
|
||||
for script_name in "$arch" "$flavor" "$arch-$flavor"; do
|
||||
script_path="setup/$script_name";
|
||||
if [ -f "$script_path" ]; then
|
||||
scripts+=("$script_path");
|
||||
fi;
|
||||
done;
|
||||
echo "Building image for $arch with $flavor";
|
||||
sudo ./create-image 9G "$arch" "${scripts[@]}";
|
||||
image_in_name="archlinux-${arch}.img";
|
||||
image_out_name="ParchLinux-${arch}-${flavor}-$(date '+%Y-%m-%d').img";
|
||||
mv "$image_in_name" "$image_out_name";
|
||||
echo "Compressing $image_out_name with xz";
|
||||
xz -z "$image_out_name";
|
||||
done;
|
||||
done;
|
||||
artifacts:
|
||||
paths:
|
||||
- "*.img.xz" # Save all .xz compressed images as artifacts
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG # Only run on tag pushes
|
||||
|
||||
deploy_iso:
|
||||
stage: deploy
|
||||
dependencies:
|
||||
- build_iso # Deploy depends on the build_iso job completion
|
||||
script:
|
||||
- echo "Installing sshpass and rsync"
|
||||
- pacman -Syu --noconfirm sshpass rsync
|
||||
- echo "Removing old ISO files from remote directory"
|
||||
- sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no parch@$SSH_ROOT "rm -rf $Remote_Path"
|
||||
- echo "Creating new directory on remote host"
|
||||
- sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no parch@$SSH_ROOT "mkdir -p $Remote_Path"
|
||||
- echo "Uploading new compressed images via rsync"
|
||||
- for arch in $ARCHITECTURES; do
|
||||
for flavor in $FLAVORS; do
|
||||
image_file="ParchLinux-${arch}-${flavor}-$(date '+%Y-%m-%d').img.xz";
|
||||
sshpass -p "$PASS" rsync -r "$image_file" parch@$SSH_ROOT:$Remote_Path;
|
||||
done;
|
||||
done;
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG # Only run on tag pushes
|
||||
|
1
examples/hostname.example
Normal file
1
examples/hostname.example
Normal file
|
@ -0,0 +1 @@
|
|||
ParchPi
|
101
examples/pacman.conf.example
Normal file
101
examples/pacman.conf.example
Normal file
|
@ -0,0 +1,101 @@
|
|||
|
||||
#
|
||||
# /etc/pacman.conf
|
||||
#
|
||||
# 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 = aarch64
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
#UseSyslog
|
||||
Color
|
||||
#NoProgressBar
|
||||
CheckSpace
|
||||
VerbosePkgLists
|
||||
ParallelDownloads = 4
|
||||
ILoveCandy
|
||||
|
||||
# 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 ARM
|
||||
# packagers with `pacman-key --populate archlinuxarm`.
|
||||
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
[ppr]
|
||||
Server = https://raw.githubusercontent.com/parchlinux-arm/ppr/main/aarch64/
|
||||
SigLevel = Never
|
||||
|
||||
[archsink]
|
||||
Server = https://github.com/archsink/$arch/releases/latest/download
|
||||
SigLevel = Never
|
||||
|
||||
[danctnix]
|
||||
Server = https://p64.arikawa-hi.me/$repo/$arch/
|
||||
SigLevel = Never
|
||||
|
||||
[core]
|
||||
Server = http://mirror.archlinuxarm.org/$arch/$repo
|
||||
SigLevel = Never
|
||||
|
||||
[extra]
|
||||
Server = http://mirror.archlinuxarm.org/$arch/$repo
|
||||
SigLevel = Never
|
||||
|
||||
[community]
|
||||
Server = http://mirror.archlinuxarm.org/$arch/$repo
|
||||
SigLevel = Never
|
||||
|
||||
[alarm]
|
||||
Server = http://mirror.archlinuxarm.org/$arch/$repo
|
||||
SigLevel = Never
|
||||
|
||||
[aur]
|
||||
Server = http://mirror.archlinuxarm.org/$arch/$repo
|
||||
SigLevel = Never
|
129
setup/plasma
Executable file
129
setup/plasma
Executable file
|
@ -0,0 +1,129 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -uo pipefail
|
||||
|
||||
# Configure system locale to en_US.UTF-8
|
||||
sed -i 's/#\(en_US.UTF-8 UTF-8\)/\1/g' /etc/locale.gen
|
||||
locale-gen
|
||||
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
|
||||
|
||||
# Fix Pacman.conf
|
||||
rm -f /etc/pacman.conf
|
||||
curl https://raw.githubusercontent.com/parchlinux-ports/Parchlinuxarm-images/main/examples/pacman.conf.example >> /etc/pacman.conf
|
||||
|
||||
# Enable Sudo
|
||||
sudo sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
|
||||
|
||||
# Fix sddm Theming
|
||||
|
||||
mkdir -p /etc/sddm.conf.d/
|
||||
curl https://raw.githubusercontent.com/parchlinux/parch-iso-plasma/main/iso/airootfs/etc/sddm.conf.d/kde_settings.conf >> /etc/sddm.conf.d/kde_settings.conf
|
||||
|
||||
# Install Desktop and Apps
|
||||
packages=(
|
||||
bluedevil
|
||||
breeze
|
||||
breeze-gtk
|
||||
breeze-plymouth
|
||||
drkonqi
|
||||
kactivitymanagerd
|
||||
kde-cli-tools
|
||||
kde-gtk-config
|
||||
kdecoration
|
||||
kdeplasma-addons
|
||||
kgamma
|
||||
kglobalacceld
|
||||
kinfocenter
|
||||
kmenuedit
|
||||
kpipewire
|
||||
krdp
|
||||
kscreen
|
||||
kscreenlocker
|
||||
ksshaskpass
|
||||
ksystemstats
|
||||
kwallet-pam
|
||||
kwayland
|
||||
kwin
|
||||
kwrited
|
||||
layer-shell-qt
|
||||
libkscreen
|
||||
libksysguard
|
||||
libplasma
|
||||
milou
|
||||
ocean-sound-theme
|
||||
plasma-activities
|
||||
plasma-activities-stats
|
||||
plasma-browser-integration
|
||||
plasma-desktop
|
||||
plasma-disks
|
||||
plasma-firewall
|
||||
plasma-integration
|
||||
plasma-nm
|
||||
plasma-pa
|
||||
plasma-sdk
|
||||
plasma-systemmonitor
|
||||
plasma-thunderbolt
|
||||
plasma-vault
|
||||
plasma-workspace
|
||||
plasma-workspace-wallpapers
|
||||
plasma5support
|
||||
plymouth-kcm
|
||||
polkit-kde-agent
|
||||
powerdevil
|
||||
print-manager
|
||||
qqc2-breeze-style
|
||||
sddm-kcm
|
||||
systemsettings
|
||||
wacomtablet
|
||||
xdg-desktop-portal-kde
|
||||
dolphin
|
||||
konsole
|
||||
kate
|
||||
gwenview
|
||||
okular
|
||||
parch-zram
|
||||
sddm
|
||||
parch-branding
|
||||
noto-fonts
|
||||
vazirmatn-fonts
|
||||
parch-emoji-ios
|
||||
arch-install-scripts
|
||||
avahi
|
||||
curl
|
||||
git
|
||||
btop
|
||||
man-db
|
||||
neovim
|
||||
pacman-contrib
|
||||
yay-bin
|
||||
python
|
||||
rsync
|
||||
sudo
|
||||
tree
|
||||
fastfetch
|
||||
neofetch-git
|
||||
networkmanager
|
||||
network-manager-applet
|
||||
zsh
|
||||
vim
|
||||
pipewire
|
||||
pipewire-pulse
|
||||
bluez
|
||||
bluez-utils
|
||||
pipewire-alsa
|
||||
wireplumber
|
||||
)
|
||||
pacman -Syu --noconfirm --needed "${packages[@]}"
|
||||
|
||||
# Enable services
|
||||
systemctl enable avahi-daemon NetworkManager
|
||||
systemctl enable sddm
|
||||
systemctl enable bluetooth
|
||||
systemctl enable parch-zram
|
||||
|
||||
|
||||
# Prepare system for containers (e.g. for use with K3s)
|
||||
# https://github.com/k3s-io/k3s/issues/2067#issuecomment-664048424
|
||||
#if ! grep -q cgroup /boot/cmdline.txt; then
|
||||
# sed -i '$ s/$/ cgroup_memory=1 cgroup_enable=memory/g' /boot/cmdline.txt
|
||||
#fi
|
|
@ -7,19 +7,19 @@ sed -i 's/#\(en_US.UTF-8 UTF-8\)/\1/g' /etc/locale.gen
|
|||
locale-gen
|
||||
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
|
||||
|
||||
|
||||
# Fix Pacman.conf
|
||||
rm -f /etc/pacman.conf
|
||||
curl https://raw.githubusercontent.com/parchlinux-ports/Parchlinuxarm-images/main/examples/pacman.conf.example >> /etc/pacman.conf
|
||||
|
||||
# Enable Sudo
|
||||
sudo sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
|
||||
|
||||
pacman-key --recv-keys 0x8685AD8B
|
||||
|
||||
# Add archsink repo
|
||||
cat <<EOF >> /etc/pacman.conf
|
||||
|
||||
[archsink]
|
||||
Server = https://github.com/archsink/\$arch/releases/latest/download
|
||||
SigLevel = Never
|
||||
|
||||
[ppr]
|
||||
Server = https://raw.githubusercontent.com/parchlinux-arm/ppr/main/aarch64/
|
||||
SigLevel = Never
|
||||
|
||||
[trinity]
|
||||
Server = https://mirror.ppa.trinitydesktop.org/trinity/archlinux/\$arch
|
||||
SigLevel = Never
|
||||
|
|
19
setup/xfce
19
setup/xfce
|
@ -7,21 +7,12 @@ sed -i 's/#\(en_US.UTF-8 UTF-8\)/\1/g' /etc/locale.gen
|
|||
locale-gen
|
||||
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
|
||||
|
||||
# Add archsink repo
|
||||
cat <<EOF >> /etc/pacman.conf
|
||||
# Fix Pacman.conf
|
||||
rm -f /etc/pacman.conf
|
||||
curl https://raw.githubusercontent.com/parchlinux-ports/Parchlinuxarm-images/main/examples/pacman.conf.example >> /etc/pacman.conf
|
||||
|
||||
[archsink]
|
||||
Server = https://github.com/archsink/\$arch/releases/latest/download
|
||||
SigLevel = Never
|
||||
|
||||
[ppr]
|
||||
Server = https://raw.githubusercontent.com/parchlinux-arm/ppr/main/aarch64/
|
||||
SigLevel = Never
|
||||
|
||||
EOF
|
||||
|
||||
# Enable parallel downloads
|
||||
sed -i 's/#\(ParallelDownloads \)/\1/g' /etc/pacman.conf
|
||||
# Enable Sudo
|
||||
sudo sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
|
||||
|
||||
# Install useful packages
|
||||
packages=(
|
||||
|
|
Loading…
Add table
Reference in a new issue