{"id":43945272,"url":"https://github.com/ericrocha97/bluefin","last_synced_at":"2026-04-25T13:05:58.542Z","repository":{"id":333794923,"uuid":"1138686438","full_name":"ericrocha97/bluefin","owner":"ericrocha97","description":"A Bluefin DX-based bootc image with GNOME + COSMIC dual desktop, focused on development and built with the Bluefin multi-stage OCI pattern.","archived":false,"fork":false,"pushed_at":"2026-03-26T10:36:46.000Z","size":1613,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T03:55:40.889Z","etag":null,"topics":["bluefin","bluefin-dx","bootc","container-linux","cosmic","developer-workstation","fedora","gnome","immutable-os","linux-desktop","multi-stage","oci","ublue"],"latest_commit_sha":null,"homepage":"https://artifacthub.io/packages/container/bluefin-cosmic-dx/bluefin-cosmic-dx","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ericrocha97.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-21T01:47:46.000Z","updated_at":"2026-03-14T02:36:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ericrocha97/bluefin","commit_stats":null,"previous_names":["ericrocha97/bluefin"],"tags_count":50,"template":false,"template_full_name":"projectbluefin/finpilot","purl":"pkg:github/ericrocha97/bluefin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericrocha97%2Fbluefin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericrocha97%2Fbluefin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericrocha97%2Fbluefin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericrocha97%2Fbluefin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericrocha97","download_url":"https://codeload.github.com/ericrocha97/bluefin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericrocha97%2Fbluefin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31307465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluefin","bluefin-dx","bootc","container-linux","cosmic","developer-workstation","fedora","gnome","immutable-os","linux-desktop","multi-stage","oci","ublue"],"created_at":"2026-02-07T03:00:30.675Z","updated_at":"2026-04-25T13:05:58.530Z","avatar_url":"https://github.com/ericrocha97.png","language":"Shell","readme":"# bluefin-cosmic-dx\n\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/bluefin-cosmic-dx)](https://artifacthub.io/packages/search?repo=bluefin-cosmic-dx)\n[![GHCR](https://img.shields.io/badge/GHCR-ghcr.io%2Fericrocha97%2Fbluefin--cosmic--dx-2ea44f?logo=github)](https://github.com/ericrocha97/bluefin/pkgs/container/bluefin-cosmic-dx)\n\nThis project was created using the finpilot template: \u003chttps://github.com/projectbluefin/finpilot\u003e.\n\nPortuguese version: [README.pt-BR.md](README.pt-BR.md)\n\nIt builds a custom bootc image based on Bluefin DX, using the multi-stage OCI pattern from the Bluefin ecosystem.\n\n## Build and Publish\n\n- Official image build and publication runs via self-hosted Jenkins (`Jenkinsfile`).\n- Published image registry: `ghcr.io/ericrocha97/bluefin-cosmic-dx`.\n- GitHub Actions (`.github/workflows/build.yml`) now runs only as a PR check (`pull_request` for `main`) and does not publish images.\n\n## What Makes this Raptor Different?\n\nHere are the changes from Bluefin DX. This image is based on Bluefin and includes these customizations:\n\n### Added Packages (Build-time)\n\n- **System packages**: Full COSMIC desktop environment including:\n  - Core desktop stack: session, compositor, panel, launcher, applets, greeter\n  - Native applications: Settings, Files (file manager), Edit (text editor), Terminal, Store (app store), Player (media player), Screenshot tool\n  - System components: wallpapers, icons, notifications, OSD, app library, workspaces manager\n  - Desktop portal integration (xdg-desktop-portal-cosmic)\n- **CLI Tools**: copr-cli (COPR repository management and monitoring)\n- **System Tools**: earlyoom (OOM prevention), ffmpegthumbnailer (video thumbnails)\n- **Codecs**: Full multimedia codecs via negativo17/fedora-multimedia (base image), libvdpau-va-gl\n- **Third-party apps**: VSCode Insiders, Warp Terminal, Vicinae\n\n### Added Applications (Runtime)\n\n- **CLI Tools (Homebrew)**: None (no Brewfiles included yet).\n- **GUI Apps (Flatpak)**: Zen Browser.\n\n### Removed/Disabled\n\n- None.\n\n### System Optimizations (CachyOS/LinuxToys)\n\n- **sysctl**: CachyOS VM/network/kernel tweaks (swappiness, vfs_cache_pressure, dirty bytes, etc.)\n- **udev rules**: IO schedulers (BFQ/mq-deadline/none), audio PM, SATA, HPET, CPU DMA latency\n- **modprobe**: NVIDIA PAT + dynamic power management, AMD GPU options, module blacklist\n- **tmpfiles**: Transparent Huge Pages (defer+madvise, shrinker at 80%)\n- **journald**: Journal size limited to 50MB\n- **earlyoom**: 5% memory/swap threshold, D-Bus notifications\n- **Auto-updates**: rpm-ostreed AutomaticUpdatePolicy=stage\n- **GNOME**: mutter check-alive-timeout set to 20s\n- **Fastfetch**: Custom config showing image name/version, COSMIC version, and build date (overrides upstream Bluefin config)\n\n### Configuration Changes\n\n- Dual desktop sessions available in GDM (GNOME and COSMIC).\n- Custom ujust commands available: install-nvm, install-sdkman, install-dev-managers.\n\n*Last updated: 2026-03-14*\n\n## What is this image\n\nbluefin-cosmic-dx is a developer-focused Bluefin image with **GNOME + COSMIC dual desktop** support. You can choose which desktop environment to use at the login screen.\n\n## What changes in this version\n\nBased on **Bluefin DX**, this image adds:\n\n- **COSMIC desktop** (System76) as an alternative to GNOME\n- **VSCode Insiders** installed via RPM\n- **Warp Terminal** installed via RPM\n- **Vicinae** installed via Terra repo (Bazzite-compatible)\n- **Dual desktop support**: Choose GNOME or COSMIC at login (GDM)\n- All Bluefin DX features (containers, DevPods, CLI tools, etc.)\n\nBase image: `ghcr.io/ublue-os/bluefin-dx:stable-daily`\n\n## Jenkins Pipeline Operations\n\nFor Jenkins CI/CD operations (GHCR publishing, GitHub release automation, n8n webhook ingestion, Postgres persistence, and email alerting), see `docs/jenkins/README.md` (PT-BR).\n\n## Basic usage\n\n### Just Commands\n\nThis project uses [Just](https://just.systems/) as a command runner. Here are the main commands available:\n\n**Building:**\n\n```bash\njust build              # Build the container image\njust build-vm           # Build VM image (QCOW2) - alias for build-qcow2\njust build-qcow2        # Build QCOW2 VM image\njust build-iso          # Build ISO installer image\njust build-raw          # Build RAW disk image\n```\n\n**Running:**\n\n```bash\njust run-vm             # Run the VM - alias for run-vm-qcow2\njust run-vm-qcow2       # Run VM from QCOW2 image\njust run-vm-iso         # Run VM from ISO image\njust run-vm-raw         # Run VM from RAW image\n```\n\n**Utilities:**\n\n```bash\njust clean              # Clean all temporary files and build artifacts\njust lint               # Run shellcheck on all bash scripts\njust format             # Format all bash scripts with shfmt\njust --list             # Show all available commands\n```\n\n**Custom ujust commands (in the image):**\n\nThis image includes custom `ujust` commands for development managers:\n\n```bash\nujust install-nvm\nujust install-sdkman\nujust install-dev-managers\n```\n\nThere are no Brewfiles included by default. If you add `.Brewfile` files (matching the `*.Brewfile` pattern) anywhere in `custom/brew/`, they will be copied during build automatically.\n\n**Complete workflow:**\n\n```bash\n# Build everything and run the VM\njust build \u0026\u0026 just build-vm \u0026\u0026 just run-vm\n\n# Or step by step:\njust build              # 1. Build container image\njust build-qcow2        # 2. Build VM image\njust run-vm-qcow2       # 3. Run the VM\n```\n\n### Deploying to Your System\n\nSwitch your system to this image:\n\n```bash\nsudo bootc switch ghcr.io/ericrocha97/bluefin-cosmic-dx:stable\nsudo systemctl reboot\n```\n\nRoll back to Bluefin DX:\n\n```bash\nsudo bootc switch ghcr.io/ublue-os/bluefin-dx:stable\nsudo systemctl reboot\n```\n\n## Optional: Enable Image Signing\n\nImage signing is optional. The repository keeps Cosign signing steps in `.github/workflows/build.yml` for future reuse, but this workflow currently runs only on PR checks and does not publish/sign release images.\n\n- Generate keys with `cosign generate-key-pair`\n- Add private key content as repository secret `SIGNING_SECRET`\n- Keep `cosign.key` private (never commit); only `cosign.pub` may be committed\n\nIf you decide to re-enable GitHub Actions release builds later, these signing steps can be reactivated there. For the current production flow, Jenkins is responsible for build/publish.\n\n## Choosing Desktop at Login\n\nAt the GDM login screen, click the **⚙️ gear icon** to select:\n\n- **GNOME** - Default Bluefin desktop\n- **COSMIC** - System76's new desktop environment\n\n## Troubleshooting\n\n### COSMIC session does not appear in GDM\n\n1. Verify packages: `rpm -qa | grep -i cosmic`\n2. Check session file: `ls /usr/share/wayland-sessions/cosmic.desktop`\n3. Restart GDM: `sudo systemctl restart gdm`\n\n### VSCode or Warp fails to start\n\n- Verify RPM install: `rpm -q code-insiders warp-terminal`\n- Ensure /opt is writable inside the image (required for RPM installs)\n\n### Local build fails\n\n- Free disk space: `df -h`\n- Clean and retry: `just clean \u0026\u0026 just build`\n- Check logs: `journalctl -xe`\n\n### VM does not boot\n\n- Ensure KVM is available: `ls -l /dev/kvm`\n- Rebuild VM image: `just build-qcow2`\n\n## Screenshots\n\n\u003cdetails\u003e\n\u003csummary\u003eView screenshots\u003c/summary\u003e\n\n### GDM session selector\n\n![GDM session selector](https://raw.githubusercontent.com/ericrocha97/bluefin/main/docs/images/gdm-selector.png)\n\n### COSMIC desktop\n\n![COSMIC desktop](https://raw.githubusercontent.com/ericrocha97/bluefin/main/docs/images/cosmic-desktop.png)\n\n### GNOME desktop\n\n![GNOME desktop](https://raw.githubusercontent.com/ericrocha97/bluefin/main/docs/images/gnome-desktop.png)\n\n\u003c/details\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericrocha97%2Fbluefin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericrocha97%2Fbluefin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericrocha97%2Fbluefin/lists"}