{"id":13560197,"url":"https://github.com/sodaliterocks/sodalite","last_synced_at":"2025-10-15T08:31:22.901Z","repository":{"id":41155570,"uuid":"442387413","full_name":"sodaliterocks/sodalite","owner":"sodaliterocks","description":"🪨 A Pantheon experience for rpm-ostree","archived":false,"fork":false,"pushed_at":"2024-08-21T18:36:25.000Z","size":5721,"stargazers_count":209,"open_issues_count":10,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-01-29T04:34:20.969Z","etag":null,"topics":["elementary","fedora","fedora-silverblue","gnome","os","ostree","pantheon","rpm-ostree","silverblue"],"latest_commit_sha":null,"homepage":"https://sodalite.rocks","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sodaliterocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2021-12-28T07:39:32.000Z","updated_at":"2025-01-20T01:47:32.000Z","dependencies_parsed_at":"2023-02-15T20:45:34.212Z","dependency_job_id":"345e9836-69d8-4453-b304-2a4b14b6be06","html_url":"https://github.com/sodaliterocks/sodalite","commit_stats":{"total_commits":1177,"total_committers":8,"mean_commits":147.125,"dds":0.2132540356839422,"last_synced_commit":"beeda50861028d3bc0fcd4739c22afb3cd7150b6"},"previous_names":[],"tags_count":201,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodaliterocks%2Fsodalite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodaliterocks%2Fsodalite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodaliterocks%2Fsodalite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sodaliterocks%2Fsodalite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sodaliterocks","download_url":"https://codeload.github.com/sodaliterocks/sodalite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236575668,"owners_count":19171264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["elementary","fedora","fedora-silverblue","gnome","os","ostree","pantheon","rpm-ostree","silverblue"],"created_at":"2024-08-01T13:00:39.435Z","updated_at":"2025-10-15T08:31:17.507Z","avatar_url":"https://github.com/sodaliterocks.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Screenshot of Sodalite](https://git.zio.sh/sodaliterocks/lfs/media/branch/main/graphics/screenshot/screenshot.png?u=7)\n\n\u003ch1 align=\"center\"\u003e\n    Sodalite\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003eSodalite\u003c/strong\u003e is an immutable desktop OS built with \u003ca href=\"https://coreos.github.io/rpm-ostree/\"\u003erpm-ostree\u003c/a\u003e and on-top of \u003ca href=\"https://getfedora.org/\"\u003eFedora\u003c/a\u003e \u0026mdash; similar to \u003ca href=\"https://silverblue.fedoraproject.org/\"\u003eFedora Silverblue\u003c/a\u003e \u0026mdash; making use of the \u003ca href=\"https://elementary.io/docs/learning-the-basics\"\u003ePantheon desktop\u003c/a\u003e, sticking closely to the ethos and workflow perpetrated by \u003ca href=\"https://elementary.io/open-source\"\u003eelementary\u003c/a\u003e.\n\u003c/p\u003e\n\n---\n\n\u003ch4 align=\"center\"\u003e\n    Hmm, it's been X days since the last commit; is this still active?\n\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003eYes.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    Despite a \u003cem\u003every\u003c/em\u003e active commit history, Sodalite is fairly self-sustaining these days \u0026mdash; mostly thanks to the awesome people at \u003ca href=\"https://fyralabs.com\"\u003eFyra Labs\u003c/a\u003e \u0026mdash; and thus the repository will go months without any activity. This does not mean the project is abandoned, especially since \u003ca href=\"https://github.com/electricduck\"\u003eits developer\u003c/a\u003e uses it as their main OS. Regardless of repository activity, updates are built twice every week from the repository: logs are available at \u003ca href=\"https://github.com/sodaliterocks/sodalite/actions\"\u003eActions\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    Psst! We're on \u003ca href=\"https://t.me/sodalitechat\"\u003eTelegram\u003c/a\u003e too. While you're free to use \u003ca href=\"https://github.com/sodaliterocks/sodalite/discussions\"\u003eDiscussions\u003c/a\u003e, the majority of the discussion relating to this project will happen over on Telegram.\n\u003c/p\u003e\n\n---\n\n## 🎉 Installing\n\n\u003e As rpm-ostree is an ever-evolving technology, and ISO installs are currently a low priority, **ISOs are currently not available**. An existing rpm-ostree-based OS, such as [Fedora Silverblue](https://silverblue.fedoraproject.org/), is required: this OS will be used to \"rebase\" to Sodalite.\n\n1. Install an rpm-ostree-based version of Fedora, such as [Fedora Silverblue](https://silverblue.fedoraproject.org/), or use an already-existing install\n2. Fire up a terminal and issue these commands:\n   - `sudo ostree remote add --if-not-exists sodalite https://ostree.sodalite.rocks --no-gpg-verify`\n   - `sudo ostree pull sodalite:sodalite/current/x86_64/desktop`*\n   - `sudo rpm-ostree rebase sodalite:sodalite/current/x86_64/desktop`\n3. Stick the kettle on and make yourself a cuppa. It'll take a while\n4. Reboot when prompted. Use it, enjoy it, make something cool with it, (try to) break it \u0026mdash; [submit a ticket if you do](https://github.com/sodaliterocks/sodalite/issues/new)!\n\n_* There are multiple branches available; see [Branches](#branches)_.\n\n### Branches\n\nSeveral branches (or images) of Sodalite co-exist and are developed side-by-side; these are distinguished by their ref \u0026mdash; like any other rpm-ostree distro \u0026mdash; where `sodalite/\u003cversion\u003e/\u003carch\u003e/\u003cedition\u003e`:\n\n#### Current\n\n|**`\u003cversion\u003e`**|**`\u003carch\u003e`**|**`\u003cedition\u003e`**|Release|Base|Status|\n|-|-|-|-|-|-|\n|`current`|`x86_64`|`desktop`|**6\u0026#160;Kutai**\u0026#160;|[Fedora\u0026#160;39](https://docs.fedoraproject.org/en-US/releases/f39/)|[![Update: sodalite/current/x86_64/desktop](https://img.shields.io/github/actions/workflow/status/sodaliterocks/sodalite/update__sodalite.current.x86_64.desktop.yml?label=current%2Fx86_64%2Fdesktop)](https://github.com/sodaliterocks/sodalite/actions/workflows/update__sodalite.current.x86_64.desktop.yml)|\n\n#### Long\n\n|**`\u003cversion\u003e`**|**`\u003carch\u003e`**|**`\u003cedition\u003e`**|Release|Base|Status|\n|-|-|-|-|-|-|\n|`long-6`|`x86_64`|`desktop`|**6\u0026#160;Kutai**\u0026#160;(Long)|[Fedora\u0026#160;39](https://docs.fedoraproject.org/en-US/releases/f39/)|[![Update: sodalite/long-6/x86_64/desktop](https://img.shields.io/github/actions/workflow/status/sodaliterocks/sodalite/update__sodalite.long-6.x86_64.desktop.yml?label=long-6%2Fx86_64%2Fdesktop)](https://github.com/sodaliterocks/sodalite/actions/workflows/update__sodalite.long-6.x86_64.desktop.yml)|\n\n\u003e Unlike **Current** (`current`), these branches do not update to the current major release: **updates will stop the same day as the base Fedora version**. Only use these if necessary (i.e. problematic drivers requiring certain versions, critical systems, etc.)\n\n#### Next\n\n|**`\u003cversion\u003e`**|**`\u003carch\u003e`**|**`\u003cedition\u003e`**|Release|Base|Status|\n|-|-|-|-|-|-|\n|`next`|`x86_64`|`desktop`|**6\u0026#160;Kutai**\u0026#160;(Next)\u0026#160;|[Fedora\u0026#160;39](https://docs.fedoraproject.org/en-US/releases/f39/)|[![Update: sodalite/next/x86_64/desktop](https://img.shields.io/github/actions/workflow/status/sodaliterocks/sodalite/update__sodalite.next.x86_64.desktop.yml?label=next%2Fx86_64%2Fdesktop)](https://github.com/sodaliterocks/sodalite/actions/workflows/update__sodalite.next.x86_64.desktop.yml)|\n|`next`|`x86_64`|`desktop-gnome`|**7.0rc3\u0026#160;GNOME**\u0026#160;(Next)\u0026#160;|[Fedora\u0026#160;40](https://docs.fedoraproject.org/en-US/releases/f40/)|[![Update: sodalite/next/x86_64/desktop-gnome](https://img.shields.io/github/actions/workflow/status/sodaliterocks/sodalite/update__sodalite.next.x86_64.desktop-gnome.yml?label=next%2Fx86_64%2Fdesktop-gnome)](https://github.com/sodaliterocks/sodalite/actions/workflows/update__sodalite.next.x86_64.desktop-gnome.yml)|\n\n\u003e Early versions of upcoming releases. Unstable. Here be dragons. Abandon all hope. You know the drill.\n\u003e\n\u003e This may sometimes be at the same version as **Current** (`current`), but be aware you'll be bumped to an upcoming release without warning if/when released to this branch.\n\n### Versioning\n\n_(Todo)_\n\n## 🔄 Updating\n\nPerforming a system update can be done by either:\n\n* Running `sudo rpm-ostree upgrade` in a shell\n* Opening **Software**, selecting **Updates** from the headerbar, and pressing **Update All**\n  - As Software runs in the background and periodically checks for updates, you may also receive a notification of a new update; clicking on this opens the appropriate page\n  - An update for the OS may take a while to appear in Software (which will appear as \"Operating System Updates\"), so the above method is preferred\n\nReboot after either method has finished. You can verify the version installed by opening **System Settings** and navigating to **System ➔ Operating System**: the version proceeds the word \"Sodalite\"\n\nIf something breaks, you can rollback by running `sudo rpm-ostree rollback` at a terminal. Remember to also [create a new issue](https://github.com/sodaliterocks/sodalite/issues/new) if appropriate!\n\n#### Update Schedule\n\nUpdates are built on the build server commencing **4:00 GMT/±0** **(22:00 CST/-6)** every **Wednesday** and **Saturday**.\n\n#### \"Long-term\" Branches\n\nIf you chose to use a \"long-term\" branch (see \u003ca href=\"#branches\"\u003eBranches\u003c/a\u003e above), you will need to rebase whenever the Sodalite version reaches end-of-life. This can be done with `sudo rpm-ostree rebase sodalite:sodalite/\u003cversion\u003e/\u003carch\u003e/\u003cedition\u003e`, where `\u003cversion\u003e` is the version you're wanting to rebase to and other values are your current values.\n\nIt's vital you carry out this process as updates stop the day the base version reaches end-of-life (at the same time as the base Fedora Linux version) and you will be left without updates to vital system components.\n\n---\n\n## 🏗️ Building\n\n### 1. Prerequisites\n\n#### Software\n\n##### Containerized (with `--container`/`-c`)\n\n_Running in a container is the preferred way of building Sodalite_\n\n* Linux\n* [Podman](https://podman.io/)\n  - To use Docker instead, pass `--ex-use-docker`. **Running in Docker is entirely untested and experimental!**\n* Bash\n* [Git LFS](https://git-lfs.com/)\n  - As well as including pretty wallpapers, the LFS also includes vital binaries that Sodalite needs to work properly, so don't miss installing this!\n  - Unsure if you have LFS support? Tpe `git lfs`: a help output prints if installed\n  \n##### OS-level\n\n_If you don't have Podman, or are having issues with running in a container, you can try running on the host itself_\n\n* [Fedora Linux](https://getfedora.org/) (or other Fedora-based/compatible distros)\n* [rpm-ostree](https://coreos.github.io/rpm-ostree/)\n  - On most Fedora-based distros, this can be installed with `dnf install rpm-ostree`\n* Bash\n* [Git LFS](https://git-lfs.com/)\n  - As well as including pretty wallpapers, the LFS also includes vital binaries that Sodalite needs to work properly, so don't miss installing this!\n  - Unsure if you have LFS support? Tpe `git lfs`: a help output prints if installed\n\n#### Environment\n\n* Permission to `sudo`\n  - Do not run `sudo ./build.sh`: the script will ask for permission when it needs it\n  - Whether or not you run containerized, **you must have access to `sudo`**\n* \u0026gt;10GiB disk space\n  - The repository itself (including submodules) takes up ~300MiB\n  - Initial builds will take up ~4GiB, with subsequent builds adding to this\n* Unlimited Internet\n  - The build process caches **a lot** of Fedora packages (around 2.5GiB), so think carefully about doing this on mobile broadband or any other service that imposes a small data allowance on you\n* An rpm-ostree-based distro, such as such as [Fedora Silverblue](https://silverblue.fedoraproject.org/) \u0026mdash; on either a virtual machine, another physical machine, or your current install (careful!) \u0026mdash; to test builds on\n* A cuppa _(optional)_ \u0026mdash; this can take a while\n\n### 2. Getting\n\n```sh\ngit clone https://github.com/sodaliterocks/sodalite.git\ncd sodalite\ngit submodule sync\ngit submodule update --init --recursive\n```\n\n#### Future Pulls\n\nWhen updating in the future, don't forget to update submodules with:\n\n```sh\ngit submodule update --recursive\n```\n\n**Do not** use `git submodule foreach git pull`: this blindly updates all submodules to their latest version, not the commit this parent repo has checked out. This is important for some submodules that are checked out at specific tags/commits (such as `./lib/sodaliterocks.firefox`).\n\nThe `./lib/workstation-ostree-config_f*` submodules \u0026mdash; serving as a basis for Sodalite for its various different Fedora-based versions \u0026mdash; are removed every so often so make sure you delete them accordingly. For example, when Fedora 36 reaches EoL, `./lib/workstation-ostree-config_f36` will be removed shortly afterwards. You can use `git clean -i` to do the work for you.\n\n#### LFS\n\nAn LFS submodule is located at `./lfs`. It's important to note this is not hosted on GitHub, but [Zio Git](https://git.zio.sh) \u0026mdash; a server we control \u0026mdash; as GitHub's LFS allowances are tight ([only 1GiB bandwidth and storage](https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage)).\n\nAny issues regarding the LFS should be submitted to [sodaliterocks/sodalite on GitHub](https://github.com/sodaliterocks/sodalite). Currently, as Zio Git does not allow for arbitrary sign-ups, PRs cannot be directly submitted.\n\n#### Usage of GitHub\n\nUnless the world collectively favours GitLab, or anything else, Sodalite will stay on GitHub as it makes everyone's lives easier. Microsoft is just another company; they're not going to hurt you.\n\n### 3. Building\n\n```sh\n./build.sh [-t \u003cedition\u003e] [-w \u003cworking-dir\u003e]\n```\n\n_See `build.sh --help` for more options._\n\nThis will usually take 10-15 minutes. Remember when I told you to grab a cuppa? Or maybe a cold one?\n\n##### Arguments\n\n* `\u003cedition\u003e` _(optional)_ Edition/variant of Sodalite (defaults to `custom`)\n  - This is any of the `sodalite-\u003cedition\u003e.yaml` files listed in `./src/treefiles/`. Either use `sodalite-\u003cedition\u003e` or just `\u003cedition\u003e` as the argument. Currently, there is:\n    - `desktop`: Standard Pantheon desktop\n    - `desktop-gnome`: Alternate GNOME desktop, intended for possible future versions\n    - `custom`: See below point\n  - `sodalite-custom.yaml` is a good place to employ your own changes instead of modifying any of the other treefiles\n* `\u003cworking-dir\u003e` _(optional)_ Directory for build output (defaults to `./build`)\n\n#### Additional Notes\n\n##### Building in a Container\n\nIf you have [Podman](https://podman.io/), you can build Sodalite entirely in a container: just use `-c`/`--container`. This is in fact how builds are done on the release server! However, this will add an extra few minutes for the build to complete as the Fedora container needs to install packages first.\n\n##### NTFS/FAT partitions\n\nBuild failures are inevitable on drives formatted as NTFS, FAT, or anything other filesystems that do not support Unix-like permissions, as `build.sh` sets permissions on various objects.\n\n###### WSL2\n\nOn WSL2, do not build to any `/mnt/\u003cdrive-letter\u003e` directories as these will be formatted as NTFS or FAT. Instead, run the build somewhere else on the Linux distro itself (like `$HOME` or `/usr/local/src`).\n\n##### Not using `build.sh`\n\nMost rpm-ostree distros can be built just be simply doing `rpm-ostree compose`, but `build.sh` provided with Sodalite does some extra steps which are required for the post-build script (which **will** fail without these being ran). It is therefore not recommended to do it this way: any issues building the distro this way will be closed and marked as invalid.\n\n#### Cleaning Up\n\nBuild contents is located at `./build/` (or whatever you set `\u003cworking-dir\u003e` to), which can be deleted to start afresh. Specifically this holds the following files/directories (of which can be individually deleted instead):\n\n* `./build/repo/` \u0026mdash; OSTree repository for Sodalite\n* `./build/cache/` \u0026mdash; Cache for Fedora packages\n\nUnless stopped manually, `build.sh` will clean itself up whenever it exits (on both success and failure). It will correct permissions (to your user) for the `./build/` directory, as well as removing the following files/directories:\n\n* `./src/sysroot/common/usr/lib/sodalite-buildinfo`\n* `/var/tmp/rpm-ostree.*/`\n  - This can get large quickly; watch out if you're not letting `build.sh` exit\n\n### 4. Using\n\n_(todo)_\n\n---\n\n## 🤝 Acknowledgements\n\n### Individuals\n\n* [Jorge O. Castro](https://github.com/castrojo), for including Sodalite in [awesome-immutable](https://github.com/castrojo/awesome-immutable)\n* [Timothée Ravier](https://tim.siosm.fr), for their extensive guidance to the community concerning Fedora Silverblue\n* The amazing photographers/artists of the included wallpapers \u0026mdash; [Adrien Olichon](https://unsplash.com/@adrienolichon), [Ashwini Chaudhary](https://unsplash.com/@suicide_chewbacca), [Austin Neill](https://unsplash.com/@arstyy), [Cody Fitzgerald](https://unsplash.com/@cfitz), [David Becker](https://unsplash.com/@beckerworks), [Dustin Humes](https://unsplash.com/@dustinhumes_photography), [Eugene Golovesov](https://unsplash.com/@eugene_golovesov), [Jack B.](https://unsplash.com/@nervum), [Jeremy Gerritsen](https://unsplash.com/@jeremygerritsen), [Karsten Würth](https://unsplash.com/@karsten_wuerth), [Marek Piwnicki](https://unsplash.com/@marekpiwnicki), [Max Okhrimenko](https://unsplash.com/@maxokhrimenko), [Nathan Dumlao](https://unsplash.com/@nate_dumlao), [Piermanuele Sberni](https://unsplash.com/@piermanuele_sberni), [Phil Botha](https://unsplash.com/@philbotha), [Ryan Stone](https://unsplash.com/@rstone_design), [Rodion Kutsaiev](https://unsplash.com/@frostroomhead), [Smaran Alva](https://unsplash.com/@smal), [Takashi Miyazaki](https://unsplash.com/@miyatankun), [Willian Daigneault](https://unsplash.com/@williamdaigneault), and [Zara Walker](https://unsplash.com/@mojoblogs)\n\n#### Past Individuals\n\n_These fine folks' work is no longer included in, or relevant to, Sodalite, but they're still worth a shout-out!_\n\n* [Fabio \"decathorpe\" Valentini](https://decathorpe.com/), for maintaining elementary/Pantheon packages on Fedora\n  * Due to various packaging issues with Pantheon on Fedora's official repos (see [#44](https://github.com/sodaliterocks/sodalite/issues/44), and [writing (about) code ➔ elementary-stable](https://decathorpe.com/fedora-elementary-stable-status.html)), these packages were dropped entirely (including the addtional ~~[elementary-staging](https://copr.fedorainfracloud.org/coprs/decathorpe/elementary-staging/)~~ and ~~[elementary-nightly](https://copr.fedorainfracloud.org/coprs/decathorpe/elementary-nightly/)~~ Copr repos, dropped in Feb '23). Despite this, decathorpe's contributions are essentially what sparked Sodalite in the first place.\n* [\"Topfi\"](https://github.com/ACertainTopfi), for their various contributions\n\n### Teams \u0026 Organizations\n\n* [elementary](https://elementary.io/team), for building lovely stuff\n* [Fyra Labs](https://fyralabs.com), for maintaining [Terra](https://terra.fyralabs.com/)\n  * Due to various packaging issues with Pantheon on Fedora's official repos (see [#44](https://github.com/sodaliterocks/sodalite/issues/44)), Sodalite was almost doomed after f36+ reached EoL. However, Terra maintains builds of Pantheon and effectively keeps the lights on here!\n* The contributors to [workstation-ostree-config](https://pagure.io/workstation-ostree-config), for a solid ground to work from\n\n### Miscellaneous\n\n* The [Sodalite mineral](https://en.wikipedia.org/wiki/Sodalite), for the name. [It's a mineral, not a rock, Jesus](https://www.youtube.com/watch?v=r1yYJBzf1VQ)!\n* The [Omicron variant of SARS-CoV-2](https://en.wikipedia.org/wiki/SARS-CoV-2_Omicron_variant), for giving [Ducky](https://github.com/electricduck) the initial free time to make this thing\n\n## 👀 See Also\n\n* **[📄 Code of Conduct](CODE_OF_CONDUCT.md)** \u0026mdash; Contributor Covenant CoC\n* **[📄 Contributing](CONTRIBUTING.md)**\n* **[📄 License](LICENSE)** \u0026mdash; MIT, \u0026copy; 2023 Sodalite contributors\n\n### Related\n\n* **[🔗 Fedora Docs ➔ Fedora Silverblue User Guide](https://docs.fedoraproject.org/en-US/fedora-silverblue/)**\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003e🇬🇧\u003c/a\u003e\n  \u003ca href=\"docs/i18n/README.de.md\"\u003e🇩🇪\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsodaliterocks%2Fsodalite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsodaliterocks%2Fsodalite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsodaliterocks%2Fsodalite/lists"}