Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nix-community/disko
Declarative disk partitioning and formatting using nix [maintainer=@Lassulus]
https://github.com/nix-community/disko
build-with-buildbot flakes nix
Last synced: about 1 month ago
JSON representation
Declarative disk partitioning and formatting using nix [maintainer=@Lassulus]
- Host: GitHub
- URL: https://github.com/nix-community/disko
- Owner: nix-community
- License: mit
- Created: 2019-02-02T11:29:07.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-05-19T13:52:33.000Z (6 months ago)
- Last Synced: 2024-05-19T14:49:22.402Z (6 months ago)
- Topics: build-with-buildbot, flakes, nix
- Language: Nix
- Homepage:
- Size: 855 KB
- Stars: 1,305
- Watchers: 13
- Forks: 148
- Open Issues: 89
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Support: docs/supportmatrix.md
Awesome Lists containing this project
README
# disko - Declarative disk partitioning
[Documentation Index](./docs/INDEX.md)
NixOS is a Linux distribution where everything is described as code, with one
exception: during installation, the disk partitioning and formatting are manual
steps. **disko** aims to correct this sad 🤡 omission.This is especially useful for unattended installations, re-installation after a
system crash or for setting up more than one identical server.## Overview
**disko** can either be used after booting from a NixOS installer, or in
conjunction with [nixos-anywhere](https://github.com/numtide/nixos-anywhere) if
you're installing remotely.Before using **disko**, the specifications of the disks, partitions, type of
formatting and the mount points must be defined in a Nix configuration. You can
find [examples](./example) of typical configurations in the Nix community
repository, and use one of these as the basis of your own configuration.You can keep your configuration and re-use it for other installations, or for a
system rebuild.**disko** is flexible, in that it supports most of the common formatting and
partitioning options, including:- Disk layouts: GPT, MBR, and mixed.
- Partition tools: LVM, mdadm, LUKS, and more.
- Filesystems: ext4, btrfs, ZFS, bcachefs, tmpfs, and others.It can work with these in various configurations and orders, and supports
recursive layouts.## How to use disko
Disko doesn't require installation: it can be run directly from nix-community
repository. The [Quickstart Guide](./docs/quickstart.md) documents how to run
Disko in its simplest form when installing NixOS. Alternatively, you can also
use the new [disko-install](./docs/disko-install.md) tool, which combines
`disko` and `nixos-install` into one step.For information on other use cases, including upgrading from an older version of
**disko**, using **disko** without NixOS and downloading the module, see the
[How To Guide](./docs/HowTo.md)For more detailed options, such as command line switches, see the
[Reference Guide](./docs/reference.md)To access sample configurations for commonly-used disk layouts, refer to the
[examples](./example) provided.Disko can be also used to create [disk images](./docs/disko-images.md).
## Sample Configuration and CLI command
A simple disko configuration may look like this:
```nix
{
disko.devices = {
disk = {
my-disk = {
device = "/dev/sda";
type = "disk";
content = {
type = "gpt";
partitions = {
ESP = {
type = "EF00";
size = "500M";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
};
root = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
};
};
};
};
}
```If you'd saved this configuration in /tmp/disk-config.nix, and wanted to create
a disk named /dev/sda, you would run the following command to partition, format
and mount the disk.```console
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disk-config.nix
```## Related Tools
This tool is used by
[nixos-anywhere](https://github.com/numtide/nixos-anywhere), which carries out a
fully-automated remote install of NixOS.We also acknowledge https://github.com/NixOS/nixpart, the conceptual ancestor of
this project.## Licensing and Contribution details
This software is provided free under the
[MIT Licence](https://opensource.org/licenses/MIT).## Get in touch
We have a public matrix channel at
[disko](https://matrix.to/#/#disko:nixos.org).---
This project is supported by [Numtide](https://numtide.com/).
![Untitledpng](https://codahosted.io/docs/6FCIMTRM0p/blobs/bl-sgSunaXYWX/077f3f9d7d76d6a228a937afa0658292584dedb5b852a8ca370b6c61dabb7872b7f617e603f1793928dc5410c74b3e77af21a89e435fa71a681a868d21fd1f599dd10a647dd855e14043979f1df7956f67c3260c0442e24b34662307204b83ea34de929d)We are a team of independent freelancers that love open source. Â We help our
customers make their project lifecycles more efficient by:- Providing and supporting useful tools such as this one
- Building and deploying infrastructure, and offering dedicated DevOps support
- Building their in-house Nix skills, and integrating Nix with their workflows
- Developing additional features and tools
- Carrying out custom research and development.[Contact us](https://numtide.com/contact) if you have a project in mind, or if
you need help with any of our supported tools, including this one. We'd love to
hear from you.