blake-lucas / BakeOS

Fedora Silverblue with some minor tweaks

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BakeOS

build-bakeos

A customized Silverblue image built with the following tweaks:

  • APX package manager
  • AppimageLauncher installed
  • Black Box terminal as default (including Nautilus "Open Terminal here" right click menu)
  • Distrobox installed
  • Aliases for APX - ex. ddnf install, aapt install, ddnf run, etc
  • Mesa drivers from git (xxmitsu's COPR)
  • Automatically installed and configured GNOME extensions (see list of extensions and settings below)
  • Multiple CLI utilities preinstalled - htop, btop, nvtop, gdu, iotop, sysstat, nethogs, net-tools, smem, screen, etc
  • Latest linux-firmware from git
  • ZSH installed and preconfigured with plugins/theme (more similar to Manjaro's ZSH config)
  • Latest Nvidia driver installed on Nvidia image
  • RustDesk installed and configured to use my relay server (rustdesk.blakelucas.com)
  • NextCloud client and Nautilus extension installed
  • NextShot installed and bound to print (GNOME screenshot bound to shift+print)
  • Ubuntu's Yaru theme/fonts installed and configured
  • Automatic Flatpak and system updates daily

GNOME extensions installed and their tweaks:

  • ArcMenu - Windows 7-esque start menu, slightly taller than default to allow for more pins.
  • Dash to Panel - Centered taskbar, similar to Windows 11. Spacing between tray icons reduced. Click to preview multiple instead of cycle.
  • Appindicator Support - Brings back tray icon support
  • Wireless HID - Shows battery info for wireless devices
  • Window Is Ready Notification Remover - Makes notifications suck a lot less for apps like Signal or FileZilla
  • Pano - Fancy clipboard manager
  • Tiling Assistant - Implements Windows-like tiling functionality
  • Desktop Icons NG - Adds desktop icon functionality. Home and Trash are hidden by default.
  • Blur my Shell - Pretty
  • GSConnect - Pair your phone with your PC for handy stuff

Currently you'll need to have Fedora Silverblue installed to rebase to this image (see below). Premade ISOs will be provided as soon as the custom image feature lands in the Fedora installer.

Installation

  1. Download the latest ISO from the releases section

  2. Flash it to a USB using something like balenaEtcher or Rufus (use DD mode). NOTE: Currently Ventoy will not work with these ISOs. It just boots to a black screen.

  3. Select the image you'd like to install. Ex. bakeos-nvidia for PCs with Nvidia GPUs, bakeos-main for all others. LTS images should be used on PCs with older hardware or VMs.

  4. If you are using Wi-Fi only, be sure to join your network in the Network section of the installer. If you do not have a valid internet connection, the installer will fail to grab the BakeOS image.

  5. Once the install is finished and you've verified things are working, pin the deployment:

     sudo ostree admin pin 0
    
  6. AMD/Intel can reboot and be finished. If you're on Nvidia, reboot, login, and run:

     just set-kargs
    
  7. Last thing, I'd recommend running the following once your drivers are working:

     just distrobox-init - Creates initial Ubuntu/Fedora distrobox containers with basic packages.
     OR
     just distrobox-init-nvidia, if running the Nvidia image.
    

Rebasing from existing Silverblue install

  1. Download and install Fedora Silverblue

  2. After you reboot you should pin the working deployment so you can safely rollback. (sudo ostree admin pin 0)

  3. [AMD/Intel GPU users only] Open a terminal and rebase the OS to this image:

     sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos:stable
    
  4. [Nvidia GPU users only] Open a terminal and rebase the OS to this image:

     sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos-nvidia:stable
    
  5. AMD/Intel can reboot and be finished. If you're on Nvidia, reboot, login, and run:

     just set-kargs
    
  6. Last thing, I'd recommend running the following once your drivers are working:

     just distrobox-init - Creates initial Ubuntu/Fedora distrobox containers with basic packages.
     OR
     just distrobox-init-nvidia, if running the Nvidia image.
    
  7. To revert back:

     sudo rpm-ostree rebase fedora:fedora/38/x86_64/silverblue
    
  8. [Test image, not recommended] The "latest" tag follows the latest Fedora release (currently 38) and may lack full testing. Note that this doesn't include Nobara's Mutter VRR patch yet:

     sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos:latest
     OR
     sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos-nvidia:latest
    
  9. [LTS image, older PC/VM use only really] -lts images use Rocky Linux's firmware and kernel (on Main image once I finish testing). Firmware from linux-firmware git is used for images missing in Rocky's firmware package.

     sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos-lts:latest
     sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos-lts:stable
     sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos-nvidia-lts:latest
     sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos-nvidia-lts:stable
    

Check the Silverblue documentation for instructions on how to use rpm-ostree. I build date tags as well, so if you want to rebase to a particular day's release you can use the version number and date to boot off of that specific image:

sudo rpm-ostree rebase ostree-unverified-registry:ghcr.io/blake-lucas/bakeos:38-20230510 

The latest tag will automatically point to the latest build.

Features

This image heavily utilizes cloud-native concepts.

System updates are image-based and automatic. Applications are logically seperated from the system by using Flatpaks, and the CLI experience is contained within OCI containers:

  • GNOME Software with Flathub
    • Use a familiar software center UI to install graphical software
  • Built-in Ubuntu user space (this hasn't been implemented yet)
    • Official Ubuntu LTS cloud image
      • Ctrl-Alt-u - will launch an Ubuntu image inside a terminal via Distrobox, your home directory will be transparently mounted
      • A BlackBox terminal is used just for this configuration
      • Use this container for your typical CLI needs or to install software that is not available via Flatpak or Fedora
      • Refer to the Distrobox documentation for more information on using and configuring custom images
    • GNOME Terminal
      • Ctrl-Alt-t - will launch a host-level GNOME Terminal if you need to do host-level things in Fedora (you shouldn't need to do much).
  • Cloud Native Tools
    • Podman-Docker - Automatically aliases the docker command to podman
  • Nix-powered Development Experience (Alpha)
    • Powered by Zero-to-Nix - thanks Determinate Systems!
    • Run /usr/bin/ublue-nix-install to get started
    • This feature is experimental and not considered ready for production. It is for experienced users only, here be dragons
  • Quality of Life Improvements
    • systemd shutdown timers adjusted to 15 seconds
    • Just task runner for post-install automation tasks
  • Built on top of the the uBlue main image
    • Extra udev rules for game controllers and other devices included out of the box
    • All multimedia codecs included
    • System designed for automatic staging of updates
      • If you've never used an image-based Linux before just use your computer normally
      • Don't overthink it, just shut your computer off when you're not using it

Applications

  • Mozilla Firefox, Mozilla Thunderbird, Extension Manager, Libreoffice, Pika Backup, FontDownloader, Flatseal, and the Celluloid Media Player
  • Core GNOME Applications installed from Flathub
    • GNOME Calculator, Calendar, Characters, Connections, Contacts, Evince, Firmware, Logs, Maps, NautilusPreviewer, TextEditor, Weather, baobab, clocks, eog, and font-viewer
  • All applications installed per user instead of system wide, similar to openSUSE MicroOS. Thanks for the inspiration Team Green!

Verification

These images are signed with sisgstore's cosign. 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/blake-lucas/bakeos

Building Locally

  1. Clone this repository and cd into the working directory

    git clone https://github.com/blake-lucas/bakeos.git
    cd bakeos
    
  2. Make modifications if desired

  3. Build the image (Note that this will download and the entire image)

    podman build . -t bakeos
    
  4. Podman push to a registry of your choice.

  5. Rebase to your image to wherever you pushed it:

    sudo rpm-ostree rebase ostree-unverified-registry:whatever/bakeos:latest
    

Frequently Asked Questions

What about codecs?

Everything you need is included.

How do I get my GNOME back to normal Fedora defaults?

We set the default dconf keys in /etc/dconf/db/local, removing those keys and updating the database will take you back to the fedora default:

sudo rm -f /etc/dconf/db/local
sudo dconf update

If you prefer a vanilla GNOME installation check out silverblue-main or silverblue-nvidia for a more upstream experience.

Should I trust you?

No

About

Fedora Silverblue with some minor tweaks

License:Apache License 2.0


Languages

Language:Shell 98.0%Language:Python 1.3%Language:Dockerfile 0.6%Language:Makefile 0.1%