initial commit
This commit is contained in:
49
.gitea/build.yml
Normal file
49
.gitea/build.yml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
name: build-os
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- testing
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
IMAGE: gitea.nekonetwork.io/cybrneko/neko-system
|
||||||
|
REGISTRY: gitea.nekonetwork.io
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-image:
|
||||||
|
runs-on: podman-host
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set tag based on branch
|
||||||
|
id: tag
|
||||||
|
run: |
|
||||||
|
if [ "${GITHUB_REF_NAME}" = "main" ]; then
|
||||||
|
echo "tag=latest" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "tag=testing" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Verify tools
|
||||||
|
run: |
|
||||||
|
podman --version
|
||||||
|
sudo -n podman --version
|
||||||
|
|
||||||
|
- name: Log in to registry
|
||||||
|
env:
|
||||||
|
REGISTRY_USER: ${{ secrets.REGISTRY_USER }}
|
||||||
|
REGISTRY_PASS: ${{ secrets.REGISTRY_PASS }}
|
||||||
|
run: |
|
||||||
|
echo "$REGISTRY_PASS" | sudo -n podman login "$REGISTRY" \
|
||||||
|
-u "$REGISTRY_USER" --password-stdin
|
||||||
|
|
||||||
|
- name: Build image
|
||||||
|
run: |
|
||||||
|
sudo -n podman build -f Containerfile -t "$IMAGE:${{ steps.tag.outputs.tag }}" .
|
||||||
|
|
||||||
|
- name: Push image
|
||||||
|
run: |
|
||||||
|
sudo -n podman push "$IMAGE:${{ steps.tag.outputs.tag }}"
|
||||||
76
Containerfile
Normal file
76
Containerfile
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
ARG FEDORA_VERSION=43
|
||||||
|
FROM quay.io/fedora/fedora-silverblue:${FEDORA_VERSION}
|
||||||
|
ARG FEDORA_VERSION
|
||||||
|
|
||||||
|
COPY packages.txt /tmp/packages.txt
|
||||||
|
COPY branding/wallpaper.png /usr/share/backgrounds/neko-wallpaper.png
|
||||||
|
COPY branding/logo.png /usr/share/plymouth/themes/neko/logo.png
|
||||||
|
COPY branding/plymouth.script /usr/share/plymouth/themes/neko/neko.script
|
||||||
|
COPY files/neko-initramfs-firstboot.service /usr/lib/systemd/system/neko-initramfs-firstboot.service
|
||||||
|
|
||||||
|
RUN mkdir -p /usr/share/plymouth/themes/neko && \
|
||||||
|
printf '%s\n' \
|
||||||
|
"[Plymouth Theme]" \
|
||||||
|
"Name=neko" \
|
||||||
|
"Description=neko system boot splash" \
|
||||||
|
"ModuleName=script" \
|
||||||
|
\
|
||||||
|
"[script]" \
|
||||||
|
"ImageDir=/usr/share/plymouth/themes/neko" \
|
||||||
|
"ScriptFile=/usr/share/plymouth/themes/neko/neko.script" \
|
||||||
|
> /usr/share/plymouth/themes/neko/neko.plymouth
|
||||||
|
|
||||||
|
RUN dnf install -y plymouth-plugin-script && \
|
||||||
|
dnf clean all && \
|
||||||
|
plymouth-set-default-theme neko
|
||||||
|
|
||||||
|
RUN systemctl enable neko-initramfs-firstboot.service
|
||||||
|
|
||||||
|
RUN dnf install -y \
|
||||||
|
https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-${FEDORA_VERSION}.noarch.rpm \
|
||||||
|
https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-${FEDORA_VERSION}.noarch.rpm \
|
||||||
|
&& dnf clean all
|
||||||
|
|
||||||
|
RUN dnf config-manager addrepo --from-repofile=https://repo.librewolf.net/librewolf.repo
|
||||||
|
|
||||||
|
RUN dnf remove -y firefox
|
||||||
|
|
||||||
|
RUN dnf install -y $(cat /tmp/packages.txt) && \
|
||||||
|
dnf clean all
|
||||||
|
|
||||||
|
RUN systemctl enable bootc-fetch-apply-updates.timer
|
||||||
|
|
||||||
|
# Create dconf profile
|
||||||
|
RUN mkdir -p /etc/dconf/profile /etc/dconf/db/local.d && \
|
||||||
|
printf '%s\n' \
|
||||||
|
'user-db:user' \
|
||||||
|
'system-db:local' \
|
||||||
|
> /etc/dconf/profile/user
|
||||||
|
|
||||||
|
# GNOME defaults
|
||||||
|
RUN printf '%s\n' \
|
||||||
|
'[org/gnome/desktop/wm/preferences]' \
|
||||||
|
"button-layout='close,minimize,maximize:appmenu'" \
|
||||||
|
> /etc/dconf/db/local.d/00-neko-gnome && \
|
||||||
|
dconf update
|
||||||
|
|
||||||
|
RUN mkdir -p /etc/dconf/db/local.d && \
|
||||||
|
printf '%s\n' \
|
||||||
|
'[org/gnome/desktop/background]' \
|
||||||
|
"picture-uri='file:///usr/share/backgrounds/neko-wallpaper.png'" \
|
||||||
|
"picture-uri-dark='file:///usr/share/backgrounds/neko-wallpaper.png'" \
|
||||||
|
> /etc/dconf/db/local.d/01-neko-background
|
||||||
|
|
||||||
|
RUN printf '%s\n' \
|
||||||
|
"NAME=\"neko//system\"" \
|
||||||
|
"PRETTY_NAME=\"neko//system ${FEDORA_VERSION}\"" \
|
||||||
|
"ID=fedora" \
|
||||||
|
"VERSION_ID=\"${FEDORA_VERSION}\"" \
|
||||||
|
"VERSION=\"${FEDORA_VERSION}\"" \
|
||||||
|
"ID_LIKE=\"fedora\"" \
|
||||||
|
"ANSI_COLOR=\"0;38;2;60;110;180\"" \
|
||||||
|
"HOME_URL=\"https://fedoraproject.org/\"" \
|
||||||
|
"DOCUMENTATION_URL=\"https://docs.fedoraproject.org/\"" \
|
||||||
|
"SUPPORT_URL=\"https://ask.fedoraproject.org/\"" \
|
||||||
|
"BUG_REPORT_URL=\"https://bugzilla.redhat.com/\"" \
|
||||||
|
> /etc/os-release
|
||||||
BIN
branding/logo.png
Normal file
BIN
branding/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
branding/neko_logo.png
Normal file
BIN
branding/neko_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.7 KiB |
BIN
branding/neko_logo_outline.png
Normal file
BIN
branding/neko_logo_outline.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
42
branding/plymouth.script
Normal file
42
branding/plymouth.script
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
logo = Image("logo.png");
|
||||||
|
logo_sprite = Sprite(logo);
|
||||||
|
logo_sprite.SetX(Window.GetWidth() / 2 - logo.GetWidth() / 2);
|
||||||
|
logo_sprite.SetY(Window.GetHeight() * 0.38);
|
||||||
|
logo_sprite.SetZ(10);
|
||||||
|
|
||||||
|
prompt_sprite = NULL;
|
||||||
|
prompt_image = NULL;
|
||||||
|
|
||||||
|
fun show_text(txt) {
|
||||||
|
prompt_image = Image.Text(txt, 1.0, 1.0, 1.0);
|
||||||
|
if (prompt_sprite == NULL)
|
||||||
|
prompt_sprite = Sprite(prompt_image);
|
||||||
|
else
|
||||||
|
prompt_sprite.SetImage(prompt_image);
|
||||||
|
|
||||||
|
prompt_sprite.SetX(Window.GetWidth() / 2 - prompt_image.GetWidth() / 2);
|
||||||
|
prompt_sprite.SetY(Window.GetHeight() * 0.78);
|
||||||
|
prompt_sprite.SetZ(100);
|
||||||
|
prompt_sprite.SetOpacity(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
fun clear_text() {
|
||||||
|
if (prompt_sprite != NULL)
|
||||||
|
prompt_sprite.SetOpacity(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Plymouth.SetDisplayPasswordFunction(fun (prompt, bullets, unused) {
|
||||||
|
show_text(prompt + " " + bullets);
|
||||||
|
});
|
||||||
|
|
||||||
|
Plymouth.SetHidePasswordFunction(fun () {
|
||||||
|
clear_text();
|
||||||
|
});
|
||||||
|
|
||||||
|
Plymouth.SetDisplayQuestionFunction(fun (prompt, entry, unused) {
|
||||||
|
show_text(prompt + " " + entry);
|
||||||
|
});
|
||||||
|
|
||||||
|
Plymouth.SetHideQuestionFunction(fun () {
|
||||||
|
clear_text();
|
||||||
|
});
|
||||||
BIN
branding/wallpaper.png
Normal file
BIN
branding/wallpaper.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
14
files/neko-initramfs-firstboot.service
Normal file
14
files/neko-initramfs-firstboot.service
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Enable regenerated initramfs for neko theme
|
||||||
|
After=multi-user.target
|
||||||
|
ConditionPathExists=!/var/lib/neko-initramfs-done
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/bin/rpm-ostree initramfs --enable
|
||||||
|
ExecStart=/usr/bin/touch /var/lib/neko-initramfs-done
|
||||||
|
ExecStart=/usr/bin/systemctl disable neko-initramfs-firstboot.service
|
||||||
|
RemainAfterExit=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
1
flatpaks.txt
Normal file
1
flatpaks.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
io.gitlab.librewolf-community
|
||||||
35
kickstarts/neko_system.ks
Normal file
35
kickstarts/neko_system.ks
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#version=RHEL8
|
||||||
|
lang en_US.UTF-8
|
||||||
|
keyboard us
|
||||||
|
timezone America/Chicago --isUtc
|
||||||
|
|
||||||
|
# Root user locked for security
|
||||||
|
rootpw --lock
|
||||||
|
|
||||||
|
# First boot wizard enabled for user creation
|
||||||
|
firstboot --enable
|
||||||
|
|
||||||
|
# Repositories (Silverblue base)
|
||||||
|
repo --name=fedora --baseurl=https://download.fedoraproject.org/pub/fedora/linux/releases/43/Everything/x86_64/os/
|
||||||
|
|
||||||
|
# Packages to include in the image
|
||||||
|
%packages
|
||||||
|
@core
|
||||||
|
vlc
|
||||||
|
gimp
|
||||||
|
# Add more RPMs here if desired
|
||||||
|
%end
|
||||||
|
|
||||||
|
# Post-install customizations
|
||||||
|
%post
|
||||||
|
# Branding - wallpaper example
|
||||||
|
mkdir -p /usr/share/backgrounds/
|
||||||
|
cp /tmp/branding/wallpaper.png /usr/share/backgrounds/
|
||||||
|
# Set default GNOME wallpaper
|
||||||
|
gsettings set org.gnome.desktop.background picture-uri "file:///usr/share/backgrounds/wallpaper.png"
|
||||||
|
|
||||||
|
# Install Flatpaks (non-interactive)
|
||||||
|
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
flatpak install --noninteractive flathub io.gitlab.librewolf-community
|
||||||
|
flatpak install --noninteractive flathub org.rncbc.qpwgraph
|
||||||
|
%end
|
||||||
5
packages.txt
Normal file
5
packages.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
vim
|
||||||
|
steam
|
||||||
|
librewolf
|
||||||
|
wireplumber
|
||||||
|
qpwgraph
|
||||||
Reference in New Issue
Block a user