https://github.com/cswl/butter-hopper
butter-hopper : Distro hopping without limits.
https://github.com/cswl/butter-hopper
distro linux multiple
Last synced: about 1 year ago
JSON representation
butter-hopper : Distro hopping without limits.
- Host: GitHub
- URL: https://github.com/cswl/butter-hopper
- Owner: cswl
- License: mit
- Created: 2019-02-05T17:54:14.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-01-12T16:09:55.000Z (over 6 years ago)
- Last Synced: 2025-04-14T05:49:16.210Z (about 1 year ago)
- Topics: distro, linux, multiple
- Language: Python
- Homepage:
- Size: 17.6 KB
- Stars: 14
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
## butter-hopper
butter-hopper is a collection of tools to help making switching between multiple distros easier
butter-hopper allows you to try out multiple distros on a single large BTRFS partition using BTRFS subvolumes.
### Features:
- butter-hopper uses `systemd-nspawn` to `ch-boot` into your desired distro
- And if you wanna take it for an actual spin on your hardware you can do that too
- butter-hopper will extract boot entries in the OS and present them in GRUB/rEFInd menu.
- Installing and upgrading various common packages on many distros can be time consuming.
butter-hopper uses `nix` as package management/cache which can be used from any distro
- Support installing tools like IDE, VSCode which don't need to be packaged to `/common`
- PLANNED: Using qemu/KVM to boot GUI to another distro
### Pre:requesties
- Make sure all of distro use systemd and support btrfs which should be any recent distro
- For the boot to hardware you want to make sure you have a recent version of GRUB2 installed with
support for btrfs.
### butter hopper tools
- `btrhop` : The main command line interface to btrhop which allows managing snapshots, running, upgrading distros
- `bootcrap` : Command line tools to bootstrap a distro from rootfs or docker images.
- `mntem` : A tool to help manage multiple mount points of BTRFS subvolumes/ shared storage.
- `nixy` : Helper script to install `nix` and setup packages on common `/nix/store`
### Sharing:
While using a default user of `1000` and allowing any user to change stuffs in `/home` works.
`butter-hopper` recommends using differnt user ids of your primary user and supports in the config.
To take a sample config of `butter-hopper.conf` look at my dotfile in your preferred Git hosting.
[](https://github.com/cswl/dotfiles/tree/master/config/butter-hopper)
[](https://gitlab.com/cswl/dotfiles/tree/master/config/butter-hopper)
[](hhttps://bitbucket.org/cswl/dotfiles/src/master/config/butter-hopper/)
### Tips:
Change your default subvol to "/staging" so you dont accidentally mount the real root
To do that simply run `btrhop populate-distros --staging`
### Working
This is the layout pulled directly from my current install.
butter-hopper installs distros to `/distros` in your btrfs partition
```
distros
├── arch
│ ├── @
│ └── home
├── debian-buster
│ ├── @
│ └── home
├── fedora
│ ├── @
│ └── home
├── tumbleweed
│ ├── @
│ └── home
├── ubuntu-latest
│ ├── @
│ └── home
```
### License
Copyright (c) 2019 Cswl Coldwind
Licensed under the MIT License. See LICENSE.txt