{"id":20746873,"url":"https://github.com/cswl/butter-hopper","last_synced_at":"2025-04-28T11:21:01.595Z","repository":{"id":57416706,"uuid":"169285485","full_name":"cswl/butter-hopper","owner":"cswl","description":"butter-hopper : Distro hopping without limits.","archived":false,"fork":false,"pushed_at":"2020-01-12T16:09:55.000Z","size":18,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-14T05:49:16.210Z","etag":null,"topics":["distro","linux","multiple"],"latest_commit_sha":null,"homepage":"","language":"Python","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/cswl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-05T17:54:14.000Z","updated_at":"2024-07-04T14:54:31.000Z","dependencies_parsed_at":"2022-09-26T20:11:40.982Z","dependency_job_id":null,"html_url":"https://github.com/cswl/butter-hopper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cswl%2Fbutter-hopper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cswl%2Fbutter-hopper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cswl%2Fbutter-hopper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cswl%2Fbutter-hopper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cswl","download_url":"https://codeload.github.com/cswl/butter-hopper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251302769,"owners_count":21567601,"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":["distro","linux","multiple"],"created_at":"2024-11-17T08:09:39.649Z","updated_at":"2025-04-28T11:21:01.574Z","avatar_url":"https://github.com/cswl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## butter-hopper\n\nbutter-hopper is a collection of tools to help making switching between multiple distros easier \nbutter-hopper allows you to try out  multiple distros on a single large BTRFS partition using BTRFS subvolumes.\n\n### Features:\n- butter-hopper uses `systemd-nspawn` to `ch-boot` into your desired distro  \n- And if you wanna take it for an actual spin on your hardware you can do that too   \n- butter-hopper will extract boot entries in the OS and present them in GRUB/rEFInd menu.\n- Installing and upgrading various common packages on many distros can be time consuming.    \n     butter-hopper uses `nix` as package management/cache which can be used from any distro\n- Support installing tools like IDE, VSCode which don't need to be packaged to `/common`\n- PLANNED: Using qemu/KVM to boot GUI to another distro\n\n### Pre:requesties\n- Make sure all of distro use systemd and support btrfs which should be any recent distro\n- For the boot to hardware you want to make sure you have a recent version of GRUB2 installed with  \nsupport for btrfs.\n\n### butter hopper tools\n- `btrhop` : The main command line interface to btrhop which allows managing snapshots, running, upgrading distros\n- `bootcrap`  : Command line tools to bootstrap a distro from rootfs or docker images.\n- `mntem` : A tool to help manage multiple mount points of BTRFS subvolumes/ shared storage.\n- `nixy` : Helper script to install `nix` and setup packages on common `/nix/store`\n\n### Sharing:\nWhile using a default user of `1000` and allowing any user to change stuffs in `/home` works.  \n`butter-hopper` recommends using differnt user ids of your primary user and supports in the config.   \nTo take a sample config of `butter-hopper.conf` look at my dotfile in your preferred Git hosting.  \n[![Github](https://i.imgur.com/7UwDPus.png)](https://github.com/cswl/dotfiles/tree/master/config/butter-hopper)\n[![Gitlab](https://i.imgur.com/G6QcEk4.jpg)](https://gitlab.com/cswl/dotfiles/tree/master/config/butter-hopper)\n[![Bitbucket](https://i.imgur.com/TKS3S7F.png)](hhttps://bitbucket.org/cswl/dotfiles/src/master/config/butter-hopper/)\n\n### Tips:\nChange your default subvol to \"/staging\" so you dont accidentally mount the real root   \nTo do that simply run  `btrhop populate-distros --staging`\n\n\n### Working\nThis is the layout pulled directly from my current install.\nbutter-hopper installs distros to `/distros` in your btrfs partition  \n\n```\ndistros\n       ├── arch\n       │   ├── @\n       │   └── home\n       ├── debian-buster\n       │   ├── @\n       │   └── home\n       ├── fedora\n       │   ├── @\n       │   └── home\n       ├── tumbleweed\n       │   ├── @\n       │   └── home\n       ├── ubuntu-latest\n       │   ├── @\n       │   └── home\n```\n\n\n### License\nCopyright (c) 2019 Cswl Coldwind \u003ccswl1337@gmail.com\u003e\nLicensed under the MIT License. See LICENSE.txt","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcswl%2Fbutter-hopper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcswl%2Fbutter-hopper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcswl%2Fbutter-hopper/lists"}