mirror of
https://github.com/outbackdingo/ostree-quarks.git
synced 2026-01-27 10:20:01 +00:00
Big changes
- main branch has been deprecated - atomic branch will be where everything is done going forward - moved bunsen build bits out of containers and now layers sit at the repos root - updated build workflow to run on git push - removed more ublue specific's
This commit is contained in:
188
.github/workflows/build.yml
vendored
188
.github/workflows/build.yml
vendored
@@ -1,188 +0,0 @@
|
||||
name: Build Image and Push
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- '**.txt'
|
||||
schedule:
|
||||
- cron: '20 23 * * *' # 11:20pm UTC everyday
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- '**.txt'
|
||||
- 'containers/**'
|
||||
- '.github/workflows/sway-build.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
IMAGE_BASE_NAME: custom
|
||||
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
|
||||
|
||||
jobs:
|
||||
push-ghcr:
|
||||
name: Build and push image
|
||||
runs-on: ubuntu-22.04
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
image_name: [sericea-main, base-main]
|
||||
major_version: [38]
|
||||
include:
|
||||
- major_version: 38
|
||||
is_latest_version: true
|
||||
is_stable_version: true
|
||||
# - major_version: 38
|
||||
# is_latest_version: true
|
||||
# is_stable_version: false
|
||||
# exclude:
|
||||
# # There is no Fedora 37 version of sericea
|
||||
# # When F38 is added, sericea will automatically be built too
|
||||
# - image_name: sericea-main
|
||||
# major_version: 37
|
||||
steps:
|
||||
# Checkout push-to-registry action GitHub repository
|
||||
- name: Checkout Push to Registry action
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Matrix Variables
|
||||
run: |
|
||||
if [[ "${{ matrix.image_name }}" == "lxqt" || "${{ matrix.image_name }}" == "mate" ]]; then
|
||||
echo "SOURCE_IMAGE=base" >> $GITHUB_ENV
|
||||
else
|
||||
echo "SOURCE_IMAGE=${{ matrix.image_name }}" >> $GITHUB_ENV
|
||||
fi
|
||||
echo "IMAGE_NAME=${{ format('{0}-{1}', matrix.image_name, env.IMAGE_BASE_NAME) }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Generate tags
|
||||
id: generate-tags
|
||||
shell: bash
|
||||
run: |
|
||||
# Generate a timestamp for creating an image version history
|
||||
TIMESTAMP="$(date +%Y%m%d)"
|
||||
MAJOR_VERSION="${{ matrix.major_version }}"
|
||||
COMMIT_TAGS=()
|
||||
BUILD_TAGS=()
|
||||
# Have tags for tracking builds during pull request
|
||||
SHA_SHORT="$(git rev-parse --short HEAD)"
|
||||
COMMIT_TAGS+=("pr-${{ github.event.number }}-${MAJOR_VERSION}")
|
||||
COMMIT_TAGS+=("${SHA_SHORT}-${MAJOR_VERSION}")
|
||||
if [[ "${{ matrix.is_latest_version }}" == "true" ]] && \
|
||||
[[ "${{ matrix.is_stable_version }}" == "true" ]]; then
|
||||
COMMIT_TAGS+=("pr-${{ github.event.number }}")
|
||||
COMMIT_TAGS+=("${SHA_SHORT}")
|
||||
fi
|
||||
|
||||
BUILD_TAGS=("${MAJOR_VERSION}" "${MAJOR_VERSION}-${TIMESTAMP}")
|
||||
|
||||
if [[ "${{ matrix.is_latest_version }}" == "true" ]] && \
|
||||
[[ "${{ matrix.is_stable_version }}" == "true" ]]; then
|
||||
BUILD_TAGS+=("${TIMESTAMP}")
|
||||
BUILD_TAGS+=("latest")
|
||||
fi
|
||||
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
echo "Generated the following commit tags: "
|
||||
for TAG in "${COMMIT_TAGS[@]}"; do
|
||||
echo "${TAG}"
|
||||
done
|
||||
alias_tags=("${COMMIT_TAGS[@]}")
|
||||
else
|
||||
alias_tags=("${BUILD_TAGS[@]}")
|
||||
fi
|
||||
echo "Generated the following build tags: "
|
||||
for TAG in "${BUILD_TAGS[@]}"; do
|
||||
echo "${TAG}"
|
||||
done
|
||||
echo "alias_tags=${alias_tags[*]}" >> $GITHUB_OUTPUT
|
||||
|
||||
# Build metadata
|
||||
- name: Image Metadata
|
||||
uses: docker/metadata-action@v4
|
||||
id: meta
|
||||
with:
|
||||
images: |
|
||||
${{ env.IMAGE_NAME }}
|
||||
labels: |
|
||||
org.opencontainers.image.title=${{ env.IMAGE_NAME }}
|
||||
org.opencontainers.image.description=A base ${{ env.IMAGE_NAME }} image with batteries included
|
||||
io.artifacthub.package.readme-url=https://raw.githubusercontent.com/ublue-os/main/main/README.md
|
||||
io.artifacthub.package.logo-url=https://avatars.githubusercontent.com/u/120078124?s=200&v=4
|
||||
|
||||
# Build image using Buildah action
|
||||
- name: Build Image
|
||||
id: build_image
|
||||
uses: redhat-actions/buildah-build@v2
|
||||
with:
|
||||
containerfiles: |
|
||||
./Containerfile
|
||||
image: ${{ env.IMAGE_NAME }}
|
||||
tags: |
|
||||
${{ steps.generate-tags.outputs.alias_tags }}
|
||||
build-args: |
|
||||
IMAGE_NAME=${{ matrix.image_name }}
|
||||
SOURCE_IMAGE=${{ env.SOURCE_IMAGE }}
|
||||
FEDORA_MAJOR_VERSION=${{ matrix.major_version }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
oci: false
|
||||
|
||||
# Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR.
|
||||
# https://github.com/macbre/push-to-ghcr/issues/12
|
||||
- name: Lowercase Registry
|
||||
id: registry_case
|
||||
uses: ASzc/change-string-case-action@v5
|
||||
with:
|
||||
string: ${{ env.IMAGE_REGISTRY }}
|
||||
|
||||
# Push the image to GHCR (Image Registry)
|
||||
- name: Push To GHCR
|
||||
uses: redhat-actions/push-to-registry@v2
|
||||
id: push
|
||||
if: github.event_name != 'pull_request'
|
||||
env:
|
||||
REGISTRY_USER: ${{ github.actor }}
|
||||
REGISTRY_PASSWORD: ${{ github.token }}
|
||||
with:
|
||||
image: ${{ steps.build_image.outputs.image }}
|
||||
tags: ${{ steps.build_image.outputs.tags }}
|
||||
registry: ${{ steps.registry_case.outputs.lowercase }}
|
||||
username: ${{ env.REGISTRY_USER }}
|
||||
password: ${{ env.REGISTRY_PASSWORD }}
|
||||
extra-args: |
|
||||
--disable-content-trust
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v2
|
||||
if: github.event_name != 'pull_request'
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Sign container
|
||||
- uses: sigstore/cosign-installer@v3.0.1
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- name: Sign container image
|
||||
if: github.event_name != 'pull_request'
|
||||
run: |
|
||||
echo "${{ env.COSIGN_PRIVATE_KEY }}" > cosign.key
|
||||
wc -c cosign.key
|
||||
cosign sign -y --key cosign.key ${{ steps.registry_case.outputs.lowercase }}/${{ env.IMAGE_NAME }}@${TAGS}
|
||||
env:
|
||||
TAGS: ${{ steps.push.outputs.digest }}
|
||||
COSIGN_EXPERIMENTAL: false
|
||||
COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }}
|
||||
|
||||
- name: Echo outputs
|
||||
if: github.event_name != 'pull_request'
|
||||
run: |
|
||||
echo "${{ toJSON(steps.push.outputs) }}"
|
||||
|
||||
26
.github/workflows/sway-build.yml
vendored
26
.github/workflows/sway-build.yml
vendored
@@ -6,20 +6,20 @@ on:
|
||||
# paths-ignore:
|
||||
# - '**.md'
|
||||
# - '**.txt'
|
||||
# - 'Containerfile'
|
||||
# - 'packages.json'
|
||||
# - 'Containerfile.beaker'
|
||||
# - 'beaker/**'
|
||||
# - 'build.sh'
|
||||
schedule:
|
||||
- cron: '45 23 * * *' # 11:45pm UTC everyday
|
||||
# push:
|
||||
# branches:
|
||||
# - main
|
||||
# paths-ignore:
|
||||
# - '**.md'
|
||||
# - '**.txt'
|
||||
# - 'Containerfile'
|
||||
# - 'packages.json'
|
||||
# - 'build.sh'
|
||||
- cron: '45 9 * * *' # 9:45am UTC everyday
|
||||
push:
|
||||
branches:
|
||||
- atomic
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- '**.txt'
|
||||
- 'Containerfile.beaker'
|
||||
- 'beaker/**'
|
||||
- 'build.sh'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
@@ -110,7 +110,7 @@ jobs:
|
||||
uses: redhat-actions/buildah-build@v2
|
||||
with:
|
||||
containerfiles: |
|
||||
./containers/Containerfile.bunsen
|
||||
./Containerfile.bunsen
|
||||
image: ${{ env.IMAGE_NAME }}
|
||||
tags: |
|
||||
${{ steps.generate-tags.outputs.alias_tags }}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
ARG IMAGE_NAME="${IMAGE_NAME:-base-main-custom}"
|
||||
ARG SOURCE_IMAGE="${SOURCE_IMAGE:-base-main}"
|
||||
ARG BASE_IMAGE="ghcr.io/ublue-os/${SOURCE_IMAGE}"
|
||||
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-37}"
|
||||
ARG ZFS_SOURCE="ghcr.io/mitchejj/zfs-kmods"
|
||||
|
||||
FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS builder
|
||||
|
||||
ARG IMAGE_NAME="${IMAGE_NAME}"
|
||||
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}"
|
||||
|
||||
ADD build.sh /tmp/build.sh
|
||||
# ADD post-install.sh /tmp/post-install.sh
|
||||
ADD packages.json /tmp/packages.json
|
||||
|
||||
COPY --from=ghcr.io/mitchejj/zfs-kmods:38 *.rpm /tmp/f38/
|
||||
|
||||
RUN /tmp/build.sh
|
||||
# RUN /tmp/post-install.sh
|
||||
RUN rm -rf /tmp/* /var/*
|
||||
RUN ostree container commit
|
||||
RUN mkdir -p /var/tmp && chmod -R 1777 /var/tmp
|
||||
@@ -2,7 +2,7 @@ FROM ghcr.io/ublue-os/sericea-main:38 as bunsen
|
||||
|
||||
ARG IMAGE_NAME="${IMAGE_NAME}"
|
||||
|
||||
COPY ./containers/layers /tmp
|
||||
COPY ./layers /tmp
|
||||
|
||||
RUN rm /etc/yum.repos.d/google-chrome.repo && \
|
||||
rm /etc/yum.repos.d/fedora-cisco-openh264.repo && \
|
||||
@@ -12,6 +12,11 @@ RUN rm /etc/yum.repos.d/google-chrome.repo && \
|
||||
|
||||
RUN /tmp/build.sh
|
||||
|
||||
RUN rpm-ostree commit
|
||||
|
||||
# Start -zed build
|
||||
# adding zfs support
|
||||
|
||||
FROM bunsen AS bunsen-zed
|
||||
|
||||
ARG IMAGE_NAME="${IMAGE_NAME}"
|
||||
@@ -20,18 +25,5 @@ COPY --from=ghcr.io/mitchejj/zfs-kmods:38 *.rpm /tmp/zfs/
|
||||
|
||||
RUN rpm-ostree install /tmp/zfs/*.rpm
|
||||
|
||||
|
||||
# RUN cat /tmp/override/** | xargs rpm-ostree override remove && \
|
||||
# ostree container commit && \
|
||||
# rm override
|
||||
|
||||
|
||||
# RUN cat /tmp/install/** | xargs rpm-ostree install && \
|
||||
# rm -r /tmp/install && \
|
||||
# ostree container commit
|
||||
|
||||
# RUN REPOS=($(ls /tmp/repos/)) && \
|
||||
# echo ${REPOS[@]} && \
|
||||
# for s in "${$REPOS[@]}" ; do \
|
||||
# echo s \
|
||||
# done
|
||||
RUN rm -rf /tmp/* && \
|
||||
rpm-ostree commit
|
||||
83
README.md
83
README.md
@@ -1,78 +1,60 @@
|
||||
# Main
|
||||
[](https://github.com/mitchejj/custom-test/actions/workflows/sway-build.yml)
|
||||
|
||||
[](https://github.com/ublue-os/main/actions/workflows/build.yml)
|
||||
|
||||
A WIP common main image for all other Ublue images.
|
||||
YA custom Fedora operating system using [OCI/Docker containers as a transport and delivery mechanism](https://fedoraproject.org/wiki/Changes/OstreeNativeContainerStabley). Images are rebuit nightly at 23:45 UTC, here is a [UTC Clock](https://time.is/UTC).
|
||||
|
||||
## What is this?
|
||||
|
||||
These are Fedora images that have been modified with the following quality of life features:
|
||||
My first Linux system that I enjoyed using was CrunchBang Linux, this is what eventually made me switch to linux full time. One of the 'fun' aspects of the distro was using Muppet characters as release names. Using [uBlue](http://github.com/uble-os/main) [sericea][ublue-sericea] Bunsen is my layering of features. Eventually I plan on also using [base][ublue-base]) to build a [Hyprland](https://hyprland.org/) version, Beaker, that I can play around with.
|
||||
|
||||
Both have a \*-zed option for built in zfs.
|
||||
|
||||
[ublue-sericea]: https://github.com/ublue-os/main/pkgs/container/base-sericea
|
||||
[ublue-base]: https://github.com/ublue-os/main/pkgs/container/base-main
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
- Start with a Fedora image
|
||||
- Adds the following packages to the base image:
|
||||
- Hardware acceleration and codecs
|
||||
- `distrobox` for terminal CLI
|
||||
- A selection of [udev rules and service units](https://github.com/ublue-os/config)
|
||||
- Various other tools: check out the [complete list of packages](packages.json)
|
||||
- Sets automatic staging of updates for the system
|
||||
- Sets flatpaks to update twice a day
|
||||
- Everything else (desktop, artwork, etc) remains stock so you can use this as a good starting image
|
||||
- Finish with my quarks
|
||||
- Remove guest VM support
|
||||
- Tailscale
|
||||
- NeoVim
|
||||
- git
|
||||
- tmux
|
||||
- vifm
|
||||
- Fonts (powerline-fonts, mozilla-fira, fira-code, google-noto, ibm-plex, jetbrains-mono)
|
||||
|
||||
## How to use these:
|
||||
|
||||
Note: If you have an Nvidia GPU use [the ublue-os/nvidia images instead](https://github.com/ublue-os/nvidia)
|
||||
|
||||
To rebase an existing Silverblue/Kinoite machine to the latest release (37):
|
||||
1. Download and install [Fedora Silverblue](https://silverblue.fedoraproject.org/download)
|
||||
1. After you reboot you should [pin the working deployment](https://docs.fedoraproject.org/en-US/fedora-silverblue/faq/#_about_using_silverblue) so you can safely rollback
|
||||
1. After you reboot you should [pin the working deployment](https://docs.fedoraproject.org/en-US/fedora-silverblue/faq/#_about_using_silverblue) so you can safely rollback.
|
||||
1. Open a terminal and use one of the following commands to rebase the OS:
|
||||
|
||||
#### Silverblue (GNOME):
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/silverblue-main:37
|
||||
|
||||
#### Kinoite (KDE)
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/kinoite-main:37
|
||||
|
||||
#### LXQt
|
||||
#### Bunsen (Sway derived from Sericea)
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/lxqt-main:37
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/mitchejj/bunsen:38
|
||||
|
||||
or
|
||||
|
||||
#### MATE
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/mitchejj/bunsen-zed:38
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/mate-main:37
|
||||
|
||||
#### Sericea (Sway)
|
||||
Fedora 38-only, recommended only for advanced users
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/sericea-main:38
|
||||
#### Beaker (Hyprland derived from Base)
|
||||
|
||||
#### Vauxite (XFCE)
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/vauxite-main:37
|
||||
|
||||
#### Base
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/mitchejj/beaker:38
|
||||
|
||||
Which does not come with any desktops or window managers:
|
||||
#### ZFS Support
|
||||
[](https://github.com/mitchejj/ostree-zfs-kmod/actions/workflows/build.yml)
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/base-main:37
|
||||
Due to ongoing issues with intergration between the Linux kernel and zfs sometimes the zfs version may not always be up-to-date.
|
||||
|
||||
## Architecture
|
||||
|
||||
This image can be used as an end user desktop or as something to derive from.
|
||||
If you're interested in [making your own](https://ublue.it/making-your-own/):
|
||||
|
||||
Graph of the [uBlue architecture](https://ublue.it/architecture/):
|
||||
|
||||

|
||||
|
||||
### Adding Applications
|
||||
|
||||
Edit the `packages.json` file with your preferred applications.
|
||||
Flatpak installation is a WIP.
|
||||
The default mountpoint for a newly created zpool `tank` is `/tank` since the
|
||||
root filesystem is immutable the directory cannot be created. A new mount point
|
||||
needs to be selected. I would suggest `/var/`
|
||||
|
||||
## Verification
|
||||
|
||||
@@ -82,6 +64,3 @@ These images are signed with sisgstore's [cosign](https://docs.sigstore.dev/cosi
|
||||
|
||||
If you're forking this repo you should [read the docs](https://docs.github.com/en/actions/security-guides/encrypted-secrets) on keeping secrets in github. You need to [generate a new keypair](https://docs.sigstore.dev/cosign/overview/) with cosign. The public key can be in your public repo (your users need it to check the signatures), and you can paste the private key in Settings -> Secrets -> Actions.
|
||||
|
||||
## Making your own
|
||||
|
||||
See [the documentation](https://ublue.it/making-your-own/) on how use this image in your own projects.
|
||||
|
||||
86
build.sh
86
build.sh
@@ -1,86 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -ouex pipefail
|
||||
|
||||
RELEASE="$(rpm -E %fedora)"
|
||||
INCLUDED_PACKAGES=($(jq -r "[(.all.include | (.all, select(.\"$IMAGE_NAME\" != null).\"$IMAGE_NAME\")[]), \
|
||||
(select(.\"$FEDORA_MAJOR_VERSION\" != null).\"$FEDORA_MAJOR_VERSION\".include | (.all, select(.\"$IMAGE_NAME\" != null).\"$IMAGE_NAME\")[])] \
|
||||
| sort | unique[]" /tmp/packages.json))
|
||||
EXCLUDED_PACKAGES=($(jq -r "[(.all.exclude | (.all, select(.\"$IMAGE_NAME\" != null).\"$IMAGE_NAME\")[]), \
|
||||
(select(.\"$FEDORA_MAJOR_VERSION\" != null).\"$FEDORA_MAJOR_VERSION\".exclude | (.all, select(.\"$IMAGE_NAME\" != null).\"$IMAGE_NAME\")[])] \
|
||||
| sort | unique[]" /tmp/packages.json))
|
||||
|
||||
|
||||
if [[ "${#EXCLUDED_PACKAGES[@]}" -gt 0 ]]; then
|
||||
EXCLUDED_PACKAGES=($(rpm -qa --queryformat='%{NAME} ' ${EXCLUDED_PACKAGES[@]}))
|
||||
fi
|
||||
|
||||
# wget -P /tmp/rpms \
|
||||
# https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-${RELEASE}.noarch.rpm \
|
||||
# https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-${RELEASE}.noarch.rpm
|
||||
|
||||
cd /etc/yum.repos.d/ && curl -LO https://pkgs.tailscale.com/stable/fedora/tailscale.repo
|
||||
cd /etc/yum.repos.d/ && curl -LO https://cli.github.com/packages/rpm/gh-cli.repo
|
||||
cd /etc/yum.repos.d/ && curl -LO https://copr.fedorainfracloud.org/coprs/atim/bottom/repo/fedora-$(rpm -E %fedora)/atim-bottom-fedora-$(rpm -E %fedora).repo
|
||||
|
||||
## Hyprland related
|
||||
cd /etc/yum.repos.d/ && curl -LO https://copr.fedorainfracloud.org/coprs/solopasha/hyprland/repo/fedora-$(rpm -E %fedora)/solopasha-hyprland-fedora-$(rpm -E %fedora).repo
|
||||
cd /etc/yum.repos.d/ && curl -LO https://copr.fedorainfracloud.org/coprs/axeld/eww/repo/fedora-38/axeld-eww-fedora-$(rpm -E %fedora).repo
|
||||
|
||||
if [[ "${#INCLUDED_PACKAGES[@]}" -gt 0 && "${#EXCLUDED_PACKAGES[@]}" -eq 0 ]]; then
|
||||
rpm-ostree install \
|
||||
${INCLUDED_PACKAGES[@]}
|
||||
|
||||
|
||||
elif [[ "${#INCLUDED_PACKAGES[@]}" -eq 0 && "${#EXCLUDED_PACKAGES[@]}" -gt 0 ]]; then
|
||||
rpm-ostree override remove \
|
||||
${EXCLUDED_PACKAGES[@]}
|
||||
|
||||
elif [[ "${#INCLUDED_PACKAGES[@]}" -gt 0 && "${#EXCLUDED_PACKAGES[@]}" -gt 0 ]]; then
|
||||
rpm-ostree override remove \
|
||||
${EXCLUDED_PACKAGES[@]} \
|
||||
$(printf -- "--install=%s " ${INCLUDED_PACKAGES[@]})
|
||||
|
||||
else
|
||||
echo "No packages to install."
|
||||
fi
|
||||
|
||||
###
|
||||
ls /tmp
|
||||
# if [[ "$RELEASE" -eq 37 ]] ; then
|
||||
# # # wget -P /tmp/rpms \
|
||||
# # # https://zfsonlinux.org/fedora/zfs-release-2-2$(rpm --eval "%{dist}").noarch.rpm
|
||||
# ls -lah /tmp/f37/
|
||||
# rpm-ostree install /tmp/f37/*.rpm
|
||||
# elif if [[ "$RELEASE" -eq 38 && ]] ; then
|
||||
# ls -lah /tmp/f38/
|
||||
# rpm-ostree install /tmp/f38/*.rpm
|
||||
# fi
|
||||
|
||||
|
||||
if [[ "$IMAGE_NAME" == 'base-main' ]] ; then
|
||||
if [[ -d /tmp/f"$RELEASE" ]]; then
|
||||
ls -lah /tmp/f"$RELEASE"
|
||||
rpm-ostree install /tmp/f"$RELEASE"/*.rpm
|
||||
else
|
||||
ls -lah /tmp
|
||||
echo "no zfs"
|
||||
fi
|
||||
elif [[ "$IMAGE_NAME" == 'sericea-main' ]] ; then
|
||||
echo 'we have sericea, no zfs needed'
|
||||
else
|
||||
echo 'We have?....'
|
||||
echo $IMAGE_NAME
|
||||
|
||||
fi
|
||||
|
||||
systemctl enable sshd.socket
|
||||
systemctl enable tailscaled.service
|
||||
# timedatectl set-ntp true
|
||||
# systemctl disable bolt.service
|
||||
# systemctl disable mdmonitor.service
|
||||
# systemctl disable fprintd.service
|
||||
# systemctl disable iscsid.socket
|
||||
# systemctl disable raid-check.timer
|
||||
# systemctl disable iscsi-starter
|
||||
# systemctl disable iscsi-onboot.service
|
||||
@@ -1,66 +0,0 @@
|
||||
# Main
|
||||
[](https://github.com/mitchejj/custom-test/actions/workflows/sway-build.yml)
|
||||
|
||||
YA custom Fedora operating system using [OCI/Docker containers as a transport and delivery mechanism](https://fedoraproject.org/wiki/Changes/OstreeNativeContainerStabley). Images are rebuit nightly at 23:45 UTC, here is a [UTC Clock](https://time.is/UTC).
|
||||
|
||||
## What is this?
|
||||
|
||||
My first Linux system that I enjoyed using was CrunchBang Linux, this is what eventually made me switch to linux full time. One of the 'fun' aspects of the distro was using Muppet characters as release names. Using [uBlue](http://github.com/uble-os/main) [sericea][ublue-sericea] Bunsen is my layering of features. Eventually I plan on also using [base][ublue-base]) to build a [Hyprland](https://hyprland.org/) version, Beaker, that I can play around with.
|
||||
|
||||
Both have a \*-zed option for built in zfs.
|
||||
|
||||
[ublue-sericea]: https://github.com/ublue-os/main/pkgs/container/base-sericea
|
||||
[ublue-base]: https://github.com/ublue-os/main/pkgs/container/base-main
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
- Finish with my quarks
|
||||
- Remove guest VM support
|
||||
- Tailscale
|
||||
- NeoVim
|
||||
- git
|
||||
- tmux
|
||||
- vifm
|
||||
- Fonts (powerline-fonts, mozilla-fira, fira-code, google-noto, ibm-plex, jetbrains-mono)
|
||||
|
||||
## How to use these:
|
||||
|
||||
|
||||
To rebase an existing Silverblue/Kinoite machine to the latest release (37):
|
||||
1. Download and install [Fedora Silverblue](https://silverblue.fedoraproject.org/download)
|
||||
1. After you reboot you should [pin the working deployment](https://docs.fedoraproject.org/en-US/fedora-silverblue/faq/#_about_using_silverblue) so you can safely rollback.
|
||||
1. Open a terminal and use one of the following commands to rebase the OS:
|
||||
|
||||
|
||||
#### Bunsen (Sway derived from Sericea)
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/mitchejj/bunsen:38
|
||||
|
||||
or
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/mitchejj/bunsen-zed:38
|
||||
|
||||
|
||||
#### Beaker (Hyprland derived from Base)
|
||||
|
||||
|
||||
sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/mitchejj/beaker:38
|
||||
|
||||
#### ZFS Support
|
||||
[](https://github.com/mitchejj/ostree-zfs-kmod/actions/workflows/build.yml)
|
||||
|
||||
Due to ongoing issues with intergration between the Linux kernel and zfs sometimes the zfs version may not always be up-to-date.
|
||||
|
||||
The default mountpoint for a newly created zpool `tank` is `/tank` since the
|
||||
root filesystem is immutable the directory cannot be created. A new mount point
|
||||
needs to be selected. I would suggest `/var/`
|
||||
|
||||
## Verification
|
||||
|
||||
These images are signed with sisgstore's [cosign](https://docs.sigstore.dev/cosign/overview/). You can verify the signature by downloading the `cosign.pub` key from this repo and running the following command:
|
||||
|
||||
cosign verify --key cosign.pub ghcr.io/ublue-os/base
|
||||
|
||||
If you're forking this repo you should [read the docs](https://docs.github.com/en/actions/security-guides/encrypted-secrets) on keeping secrets in github. You need to [generate a new keypair](https://docs.sigstore.dev/cosign/overview/) with cosign. The public key can be in your public repo (your users need it to check the signatures), and you can paste the private key in Settings -> Secrets -> Actions.
|
||||
|
||||
144
packages.json
144
packages.json
@@ -1,144 +0,0 @@
|
||||
{
|
||||
"all": {
|
||||
"include": {
|
||||
"all": [
|
||||
"neovim",
|
||||
"git",
|
||||
"tmux",
|
||||
"fzf",
|
||||
"ripgrep",
|
||||
"ncdu",
|
||||
"ldns-utils",
|
||||
"tailscale",
|
||||
"gh",
|
||||
"bottom",
|
||||
"power-profiles-daemon",
|
||||
"vifm",
|
||||
"NetworkManager-tui",
|
||||
"nm-connection-editor-desktop",
|
||||
"wavemon",
|
||||
"powerline-fonts",
|
||||
"fontawesome5-fonts-all",
|
||||
"google-android-emoji-fonts",
|
||||
"google-noto-sans-fonts",
|
||||
"google-noto-serif-fonts",
|
||||
"google-roboto*",
|
||||
"mozilla-fira-*",
|
||||
"fira-code-fonts",
|
||||
"ibm-plex-fonts-all",
|
||||
"jetbrains-mono-fonts-all",
|
||||
"podman-tui"
|
||||
],
|
||||
"base-main": [
|
||||
"dbus",
|
||||
"NetworkManager",
|
||||
"nss-tools",
|
||||
"unbound",
|
||||
"lm_sensors",
|
||||
"sysstat",
|
||||
"sway",
|
||||
"wlroots",
|
||||
"swaybg",
|
||||
"swayidle",
|
||||
"swaylock",
|
||||
"waybar",
|
||||
"dunst",
|
||||
"mako",
|
||||
"foot",
|
||||
"imv",
|
||||
"pavucontrol-qt",
|
||||
"kanshi",
|
||||
"Thunar",
|
||||
"thunar-archive-plugin",
|
||||
"tumbler",
|
||||
"gvfs",
|
||||
"gvfs-client",
|
||||
"pkcs11-helper",
|
||||
"system-config-printer",
|
||||
"rofi-wayland",
|
||||
"rofi-themes",
|
||||
"rofi-themes-base16",
|
||||
"wl-clipboard",
|
||||
"light",
|
||||
"lxqt-policykit",
|
||||
"polkit",
|
||||
"dbus-daemon",
|
||||
"pinentry-gnome3",
|
||||
"gnome-keyring-pam",
|
||||
"pulseaudio-utils",
|
||||
"network-manager-applet",
|
||||
"blueman",
|
||||
"wl-clipboard",
|
||||
"xdg-desktop-portal-gtk",
|
||||
"xdg-desktop-portal-wlr",
|
||||
"xorg-x11-server-Xwayland"
|
||||
],
|
||||
"sericea-main": [
|
||||
]
|
||||
},
|
||||
"exclude": {
|
||||
"all": [
|
||||
"vim",
|
||||
"fedora-flathub-remote",
|
||||
"open-vm-tools-desktop",
|
||||
"open-vm-tools",
|
||||
"qemu-guest-agent",
|
||||
"qemu-user-stati",
|
||||
"spice-vdagent",
|
||||
"spice-webdavd",
|
||||
"virtualbox-guest-additions",
|
||||
"firefox",
|
||||
"firefox-langpacks",
|
||||
"zfs-fuse"
|
||||
]
|
||||
}
|
||||
},
|
||||
"37": {
|
||||
"include": {
|
||||
"all": [
|
||||
"pulseaudio-module-bluetooth-freeworld",
|
||||
"libvirt-daemon-kvm",
|
||||
"cockpit-machines",
|
||||
"sddm",
|
||||
"sddm-wayland-generic",
|
||||
"sddm-themes"
|
||||
]
|
||||
},
|
||||
"exclude": {
|
||||
"all": [
|
||||
"pipewire-pulseaudio"
|
||||
]
|
||||
|
||||
}
|
||||
},
|
||||
"38": {
|
||||
"include": {
|
||||
"all": [
|
||||
"cockpit-system",
|
||||
"cockpit-podman",
|
||||
"cockpit-networkmanager",
|
||||
"cockpit-storaged",
|
||||
"cockpit-ostree",
|
||||
"cockpit-selinux",
|
||||
"cockpit-system",
|
||||
"cockpit-pcp"
|
||||
],
|
||||
"base-main": [
|
||||
"fedora-release-sericea",
|
||||
"fedora-release-ostree-desktop",
|
||||
"sway-config-fedora",
|
||||
"hyprland",
|
||||
"eww"
|
||||
],
|
||||
"silverblue-base": [
|
||||
"fedora-release-sericea",
|
||||
"fedora-release-ostree-desktop",
|
||||
"sway-config-fedora",
|
||||
"hyprland"
|
||||
]
|
||||
},
|
||||
"exclude": {
|
||||
"all": []
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -ouex pipefail
|
||||
|
||||
systemctl enable rpm-ostreed-automatic.timer
|
||||
systemctl enable flatpak-system-update.timer
|
||||
|
||||
systemctl --global enable flatpak-user-update.timer
|
||||
|
||||
cp /usr/share/ublue-os/ublue-os-update-services/etc/rpm-ostreed.conf /etc/rpm-ostreed.conf
|
||||
Reference in New Issue
Block a user