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