An open API service indexing awesome lists of open source software.

https://github.com/snowfallorg/flake

Simplify Nix Flakes on the command line.
https://github.com/snowfallorg/flake

Last synced: about 1 year ago
JSON representation

Simplify Nix Flakes on the command line.

Awesome Lists containing this project

README

          

# Snowfall Flake


Nix Flakes Ready


Built With Snowfall

  

> Simplified Nix Flakes on the command line.

## Installation

### Nix Profile

You can install this package imperatively with the following command.

```bash
nix profile install github:snowfallorg/flake
```

### Nix Configuration

You can install this package by adding it as an input to your Nix Flake.

```nix
{
description = "My system flake";

inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-22.05";
unstable.url = "github:nixos/nixpkgs/nixos-unstable";

# Snowfall Lib is not required, but will make configuration easier for you.
snowfall-lib = {
url = "github:snowfallorg/lib";
inputs.nixpkgs.follows = "nixpkgs";
};

snowfall-flake = {
url = "github:snowfallorg/flake";
# Flake requires some packages that aren't on 22.05, but are available on unstable.
inputs.nixpkgs.follows = "unstable";
};
};

outputs = inputs:
inputs.snowfall-lib.mkFlake {
inherit inputs;
src = ./.;

overlays = with inputs; [
# Use the overlay provided by this flake.
snowfall-flake.overlay

# There is also a named overlay, though the output is the same.
snowfall-flake.overlays."package/flake"
];
};
}
```

If you've added the overlay from this flake, then in your system configuration you
can add the `snowfallorg.flake` package.

```nix
{ pkgs }:

{
environment.systemPackages = with pkgs; [
snowfallorg.flake
];
}
```

## Usage

### `flake new`

Create new projects from flake templates.

```bash
# Create a new flake and directory my-project with the default template.
flake new my-project

# Create a new flake and directory my-project with a custom template.
flake new my-project --template github:snowfallorg/templates#package

# Create a new flake and directory my-project with a template selected from a list.
flake new my-project --pick
```

### `flake init`

Initialize a flake in an existing project.

```bash
# Create a new flake in the current directory with the default template.
flake init

# Create a new flake in the current directory with a custom template.
flake init --template github:snowfallorg/templates#package

# Create a new flake in the current directory with a template selected from a list.
flake init --pick
```

### `flake dev`

Run development shells.

```bash
# Open the default development shell of the flake in the current directory.
flake dev

# Open a specific development shell of the flake in the current directory.
flake dev my-shell

# Open a development shell from a specific flake.
flake dev github:snowfall/dotbox#dotbox

# Pick a development shell from the current directory.
flake dev --pick

# Pick a development shell from a specific flake.
flake dev github:snowfall/dotbox --pick
```

### `flake run`

Run apps from Nix Flakes.

```bash
# Run the default app of the flake in the current directory.
flake run

# Run a specific app of the flake in the current directory.
flake run my-package

# Run a specific app from a specific flake.
flake run github:snowfall/dotbox#dotbox

# Pick an app to run from the current directory.
flake run --pick

# Pick an app to run from a specific flake.
flake run github:snowfall/dotbox --pick
```

### `flake build`

Build packages from Nix Flakes.

```bash
# Build the default package of the flake in the current directory.
flake build

# Build a specific package of the flake in the current directory.
flake build my-package

# Build a package from a specific flake.
flake build github:snowfall/dotbox#dotbox

# Pick a package to build from the current directory.
flake build --pick

# Pick a package to build from a specific flake.
flake build github:snowfall/dotbox --pick
```

### `flake switch`

Rebuild and switch system configuration with support for both NixOS and nix-darwin.

```bash
# Switch to configuration with the same hostname from the flake in the current directory.
flake switch

# Switch to specific configuration from the flake in the current directory.
flake switch my-system

# Pick a configuration to switch to from the flake in the current directory.
flake switch --pick

# Switch to configuration from a specific flake.
flake switch github:jakehamilton/config#bismuth

# Pick configuration from a specific flake.
flake switch github:jakehamilton/config --pick
```

### `flake test`

Test a system configuration

```bash
flake test

DESCRIPTION

Test a system configuration with support for both NixOS and nix-darwin.

USAGE

$ flake test [options]

OPTIONS

--help, -h Show this help message
--debug Show debug messages
--show-trace Show a trace when a Nix command fails

EXAMPLES

# Test a configuration with the same hostname from the flake in the current directory.
$ flake test

# Test a specific configuration from the flake in the current directory.
$ flake test my-system

# Pick a configuration to test from the flake in the current directory.
$ flake test --pick

# Test a configuration from a specific flake.
$ flake test github:jakehamilton/config#bismuth

# Pick configuration from a specific flake.
$ flake test github:jakehamilton/config --pick
```

### `flake boot`

Update the system's bootable generations.

```bash
flake boot

DESCRIPTION

Set a NixOS configuration as the bootable system.

USAGE

$ flake boot [options]

OPTIONS

--help, -h Show this help message
--debug Show debug messages
--show-trace Show a trace when a Nix command fails

EXAMPLES

# Boot a configuration with the same hostname from the flake in the current directory.
$ flake boot

# Boot a specific configuration from the flake in the current directory.
$ flake boot my-system

# Pick a configuration to boot from the flake in the current directory.
$ flake boot --pick

# Boot a configuration from a specific flake.
$ flake boot github:jakehamilton/config#bismuth

# Pick configuration from a specific flake.
$ flake boot github:jakehamilton/config --pick
```

### `flake show`

Show flake outputs.

```bash
flake show

DESCRIPTION

Show the outputs of a Nix Flake.

USAGE

$ flake show [options]

OPTIONS

--help, -h Show this help message
--debug Show debug messages
--show-trace Show a trace when a Nix command fails

EXAMPLES

# Show outputs from the flake in the current directory.
$ flake show

# Show outputs from a specific flake.
$ flake show github:jakehamilton/config
```

### `flake update`

Update a Nix Flake's inputs.

```bash
# Update all flake inputs.
flake update

# Update one or more specific inputs.
flake update nixpkgs snowfall-lib

# Pick inputs to update from a list.
flake update --pick
```

### `flake build-`

Build a NixOS, nix-darwin, and other types of systems.

> See `flake build-system --help` for more information.

```bash
# Build the system with the same hostname from the flake in the current directory.
flake build-system

# Build the NixOS system with the same hostname from the flake in the current directory.
flake build-nixos

# Build a specific nix-darwin system from the flake in the current directory.
flake build-darwin my-system

# Build the system with the same hostname from a specific flake.
flake build-system github:jakehamilton/config#bismuth

# Pick and build a system from the flake in the current directory
flake build-system --pick

# Pick and build a system from a specific flake.
flake build-system github:jakehamilton/config --pick

# Build a specific ISO from the flake in the current directory.
flake build-iso my-iso-system
```

### `flake option`

Show NixOS options from Nix Flakes.

```bash

flake option

DESCRIPTION

Show NixOS options from Nix Flakes.

USAGE

flake option [option] [options]
flake option [option] [options]
flake option [option] [options]

OPTIONS

--pick, -p Pick options from a list

--help, -h Show this help message
--debug Show debug messages
--show-trace Show a trace when a Nix command fails

EXAMPLES

# Show options for the current host in the current directory.
$ flake option

# Show options for a specific host.
$ flake option my-host

# Show a specific option for a specific host.
$ flake option my-host services.openssh

# Show options for a flake's host.
$ flake option github:jakehamilton/config#bismuth

# Show a specific option for a flake's host.
$ flake option github:jakehamilton/config#bismuth services.openssh

# Pick options for the flake in the current directory.
$ flake option --pick

# Pick options from a specific flake.
$ flake option github:jakehamilton/config --pick

```