Compare commits
27 commits
2024-07-23
...
main
Author | SHA1 | Date | |
---|---|---|---|
33e21e16f5 | |||
69cd650658 | |||
3f91fab842 | |||
06c5657681 | |||
b802c93007 | |||
ff4f8325dd | |||
b0594757b5 | |||
107213eaa1 | |||
590b1fb95d | |||
7fdb71b680 | |||
|
01a2d88865 | ||
|
e3a37949d0 | ||
|
fb604fe65d | ||
|
ea13828250 | ||
c29536adb0 | |||
|
b9a371c01b | ||
|
f933d1abb7 | ||
7680fd747f | |||
1b0a532c8e | |||
eb21d10efa | |||
4910cf76bc | |||
207c288d1d | |||
92929104e2 | |||
|
3e89a5a356 | ||
6d9f583295 | |||
ea9b5c9b21 | |||
74df96fc30 |
9 changed files with 326 additions and 96 deletions
80
.forgejo/workflows/build.yml
Normal file
80
.forgejo/workflows/build.yml
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
name: Build Images
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types:
|
||||||
|
- created
|
||||||
|
workflow_dispatch: # Allows manual triggering
|
||||||
|
|
||||||
|
env:
|
||||||
|
api_key: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
name: ${{ github.event.repository.name }}
|
||||||
|
release_name: ${{ github.ref_name }}
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: archlinux/archlinux:base-devel
|
||||||
|
privileged: true
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
arch: ['aarch64', 'rpi-aarch64']
|
||||||
|
flavor: ['barebone']
|
||||||
|
include:
|
||||||
|
- arch: rpi-aarch64
|
||||||
|
flavor: xfce
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: nodejs installation
|
||||||
|
run: pacman -Syu nodejs base-devel git --noconfirm
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Configure Git user
|
||||||
|
run: |
|
||||||
|
git config --global user.name "github-actions[bot]"
|
||||||
|
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pacman -Sy && pacman -S --noconfirm parted wget dosfstools zip arch-install-scripts aria2 github-cli git
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: https://github.com/docker/setup-qemu-action@v2
|
||||||
|
with:
|
||||||
|
platforms: arm,arm64
|
||||||
|
|
||||||
|
- name: Build image
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
scripts=()
|
||||||
|
for script_name in "${{ matrix.arch }}" "${{ matrix.flavor }}" "${{ matrix.arch }}-${{ matrix.flavor }}"; do
|
||||||
|
script_path="setup/$script_name"
|
||||||
|
if [ -f "$script_path" ]; then
|
||||||
|
scripts+=("$script_path")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
sudo ./create-image 9G ${{ matrix.arch }} "${scripts[@]}"
|
||||||
|
|
||||||
|
- name: Rename image
|
||||||
|
id: rename-image
|
||||||
|
run: |
|
||||||
|
image_in_name="archlinux-${{ matrix.arch }}.img"
|
||||||
|
image_out_name="Parchlinux-${{ matrix.arch }}-${{ matrix.flavor }}-$(date '+%Y-%m-%d').img"
|
||||||
|
mv "$image_in_name" "$image_out_name"
|
||||||
|
echo "image_name=$image_out_name" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
- name: Compress image
|
||||||
|
run: |
|
||||||
|
mkdir image_parts
|
||||||
|
zip -s 2000m "image_parts/${{ env.image_name }}" "${{ env.image_name }}"
|
||||||
|
|
||||||
|
- name: Upload image
|
||||||
|
run: |
|
||||||
|
sha256sum image_parts/* > image_parts/sha256sums.${{ matrix.arch }}.${{ matrix.flavor }}.txt
|
||||||
|
gh release upload ${{ github.ref_name }} image_parts/* -R ${{ github.repository }}
|
||||||
|
|
70
.github/workflows/build.yml
vendored
70
.github/workflows/build.yml
vendored
|
@ -1,70 +0,0 @@
|
||||||
# Adapted from https://github.com/andrewboring/alarm-images/blob/master/.github/workflows/build.yml
|
|
||||||
|
|
||||||
name: Build Images
|
|
||||||
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types:
|
|
||||||
- created
|
|
||||||
|
|
||||||
env:
|
|
||||||
api_key: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
name: ${{ github.event.repository.name }}
|
|
||||||
release_name: ${{ github.ref_name }}
|
|
||||||
GH_TOKEN: ${{ github.token }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
arch: ['aarch64', 'rpi-aarch64']
|
|
||||||
flavor: ['barebone']
|
|
||||||
include:
|
|
||||||
- arch: rpi-aarch64
|
|
||||||
flavor: xfce
|
|
||||||
- arch: rpi-aarch64
|
|
||||||
flavor: trinity
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- name: Configure Git user
|
|
||||||
run: |
|
|
||||||
git config --global user.name "github-actions[bot]"
|
|
||||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
- name: Install dependencies
|
|
||||||
run: sudo apt-get update && sudo apt-get install -y parted wget dosfstools zip arch-install-scripts aria2 gh git
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
with:
|
|
||||||
platforms: arm,arm64
|
|
||||||
- name: Build image
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
scripts=()
|
|
||||||
for script_name in "${{ matrix.arch }}" "${{ matrix.flavor }}" "${{ matrix.arch }}-${{ matrix.flavor }}"; do
|
|
||||||
script_path="setup/$script_name"
|
|
||||||
if [ -f "$script_path" ]; then
|
|
||||||
scripts+=("$script_path")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
sudo ./create-image 8G ${{ matrix.arch }} "${scripts[@]}"
|
|
||||||
- name: Rename image
|
|
||||||
id: rename-image
|
|
||||||
run: |
|
|
||||||
image_in_name="archlinux-${{ matrix.arch }}.img"
|
|
||||||
image_out_name="Parchlinux-${{ matrix.arch }}-${{ matrix.flavor }}-$(date '+%Y-%m-%d').img"
|
|
||||||
mv "$image_in_name" "$image_out_name"
|
|
||||||
echo "image_name=$image_out_name" >> "$GITHUB_OUTPUT"
|
|
||||||
- name: Compress image
|
|
||||||
run: |
|
|
||||||
mkdir image_parts
|
|
||||||
zip -r "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
|
|
||||||
gh release upload ${{ github.event.release.tag_name }} ./image_parts/* -R ${{ github.repository }}
|
|
|
@ -65,8 +65,8 @@ loopdev=$(losetup --find --show "${image}")
|
||||||
|
|
||||||
echo "==> Partitioning image..."
|
echo "==> Partitioning image..."
|
||||||
parted --script "${loopdev}" mklabel msdos
|
parted --script "${loopdev}" mklabel msdos
|
||||||
parted --script "${loopdev}" mkpart primary fat32 0% 200M
|
parted --script "${loopdev}" mkpart primary fat32 0% 1024M
|
||||||
parted --script "${loopdev}" mkpart primary ext4 200M 100%
|
parted --script "${loopdev}" mkpart primary ext4 1024M 100%
|
||||||
|
|
||||||
echo "==> Formatting image..."
|
echo "==> Formatting image..."
|
||||||
bootdev=$(ls "${loopdev}"*1)
|
bootdev=$(ls "${loopdev}"*1)
|
||||||
|
|
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
|
|
@ -38,7 +38,6 @@ packages=(
|
||||||
man-db
|
man-db
|
||||||
neovim
|
neovim
|
||||||
pacman-contrib
|
pacman-contrib
|
||||||
yay-bin
|
|
||||||
python
|
python
|
||||||
rsync
|
rsync
|
||||||
sudo
|
sudo
|
||||||
|
|
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
|
locale-gen
|
||||||
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
|
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
|
pacman-key --recv-keys 0x8685AD8B
|
||||||
|
|
||||||
# Add archsink repo
|
# Add archsink repo
|
||||||
cat <<EOF >> /etc/pacman.conf
|
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]
|
[trinity]
|
||||||
Server = https://mirror.ppa.trinitydesktop.org/trinity/archlinux/\$arch
|
Server = https://mirror.ppa.trinitydesktop.org/trinity/archlinux/\$arch
|
||||||
SigLevel = Never
|
SigLevel = Never
|
||||||
|
|
20
setup/xfce
20
setup/xfce
|
@ -7,21 +7,12 @@ sed -i 's/#\(en_US.UTF-8 UTF-8\)/\1/g' /etc/locale.gen
|
||||||
locale-gen
|
locale-gen
|
||||||
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
|
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
|
||||||
|
|
||||||
# Add archsink repo
|
# Fix Pacman.conf
|
||||||
cat <<EOF >> /etc/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]
|
# Enable Sudo
|
||||||
Server = https://github.com/archsink/\$arch/releases/latest/download
|
sudo sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
|
||||||
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
|
|
||||||
|
|
||||||
# Install useful packages
|
# Install useful packages
|
||||||
packages=(
|
packages=(
|
||||||
|
@ -43,7 +34,6 @@ packages=(
|
||||||
man-db
|
man-db
|
||||||
neovim
|
neovim
|
||||||
pacman-contrib
|
pacman-contrib
|
||||||
yay-bin
|
|
||||||
python
|
python
|
||||||
rsync
|
rsync
|
||||||
sudo
|
sudo
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue