GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - divnix/std: A DevOps framework for the SDLC with the power of Nix and Flakes. Good for keeping deadlines!

BranchesTags
Open more actions menu

Latest commit

 

History

813 Commits
813 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.reuse
.reuse
 
 
LICENSES
LICENSES
 
 
artwork
artwork
 
 
docs
docs
 
 
src
src
 
 
tests
tests
 
 
.devcontainer.json
.devcontainer.json
 
 
.editorconfig
.editorconfig
 
 
.envrc
.envrc
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
ARCHITECTURE.md
ARCHITECTURE.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
COMPARE.md
COMPARE.md
 
 
PITCH.md
PITCH.md
 
 
README.md
README.md
 
 
ROADMAP.md
ROADMAP.md
 
 
VERSION
VERSION
 
 
book.toml
book.toml
 
 
deprecation.nix
deprecation.nix
 
 
dogfood.nix
dogfood.nix
 
 
examples
examples
 
 
flake.lock
flake.lock
 
 
flake.nix
flake.nix
 
 
namaka.toml
namaka.toml
 
 

Repository files navigation

Standard

Ship today.


Standard is a nifty DevOps framework that enables an efficient Software Development Life Cycle (SDLC) with the power of Nix via Flakes.

It organizes and disciplines your Nix and thereby speeds you up. It also comes with great horizontal integrations of high quality vertical DevOps tooling crafted by the Nix Ecosystem.


Support room on Matrix

Stack

Yants DMerge NoSys Blank Incl Paisano

Integrations

Numtide Devshell Numtide Treefmt Nlewo Nix2Container Fluidattacks Makes Astro MicroVM HerculesCI FlakeParts Cachix Cache Nix-Community Nixago

The Standard Story

Once your nix code has evolved into a giant ball of spaghetti and nobody else except a few select members of your tribe can still read it with ease; and once to the rest of your colleagues it has grown into an impertinence, then std brings the overdue order to your piece of art through a well-defined folder structure and disciplining generic interfaces.

With std, you'll learn how to organize your nix flake outputs ('Targets') into Cells and Cell Blocks — folded into a useful CLI & TUI to also make the lives of your colleagues easier.

Through more intuition and less documentation, your team and community will finally find a canonical answer to the everlasting question: What can I do with this repository?

The Standard NixOS Story (in case you wondered)

Once you got fed up with divnix/digga or a disorganized personal configuration, please head straight over to divnix/hive and join the chat, there. It's work in progress. But hey! It means: we can progress together!


Getting Started

# flake.nix
{
  description = "Description for the project";

  inputs = {
    std.url = "github:divnix/std";
    nixpkgs.follows = "std/nixpkgs";
  };

  outputs = { std, self, ...} @ inputs: std.growOn {
    inherit inputs;
    # 1. Each folder inside `cellsFrom` becomes a "Cell"
    #    Run for example: 'mkdir nix/mycell'
    # 2. Each <block>.nix or <block>/default.nix within it becomes a "Cell Block"
    #    Run for example: '$EDITOR nix/mycell/packages.nix' - see example content below
    cellsFrom = ./nix;
    # 3. Only blocks with these names [here: "packages" & "shells"] are picked up by Standard
    #    It's a bit like the output type system of your flake project (hint: CLI & TUI!!)
    cellBlocks = with std.blockTypes; [
      (installables "packages" {ci.build = true;})
      (devshells "shells" {ci.build = true;})
    ];
  }
  # 4. Run 'nix run github:divnix/std'
  # 'growOn' ... Soil:
  #  - here, compat for the Nix CLI
  #  - but can use anything that produces flake outputs (e.g. flake-parts or flake-utils)
  # 5. Run: nix run .
  {
    devShells = std.harvest self ["mycell" "shells"];
    packages = std.harvest self ["mycell" "packages"];
  };
}

# nix/mycell/packages.nix
{inputs, cell}: {
  inherit (inputs.nixpkgs) hello;
  default = cell.packages.hello;
}

This Repository

This repository combines the above mentioned stack components into the ready-to-use Standard framework. It adds a curated collection of Block Types for DevOps use cases. It further dogfoods itself and implements utilities in its own Cells.

Dogfooding

Only renders in the Documentation.

{{#include ../dogfood.nix}}

That's it. std.grow is a "smart" importer of your nix code and is designed to keep boilerplate at bay. In the so called "Soil" compatibility layer, you can do whatever your heart desires. For example put flake-utils or flake-parts patterns here. Or, as in the above example, just make your stuff play nicely with the Nix CLI.

TIP:

  1. Clone this repo git clone https://github.com/divnix/std.git
  2. Install direnv & inside the repo, do: direnv allow (first time takes a little longer)
  3. Run the TUI by entering std (first time takes a little longer)
What can I do with this repository?  

Documentation

The Documentation is here.

And here is the Book, a very good walk-trough. Start here!

Video Series
  • Std - Introduction
  • Std - Cell Blocks Deep Dive
  • Std - Operables & OCI
  • Std - Nixago
Examples in the Wild

This GitHub search query holds a pretty good answer.

Why?

  • Why nix?
  • Why std?

Contributions

Please enter the contribution environment:

direnv allow || nix develop -c "$SHELL"

Licenses

What licenses are used? → ./.reuse/dep5.

And the usual copies? → ./LICENSES.


About

A DevOps framework for the SDLC with the power of Nix and Flakes. Good for keeping deadlines!

std.divnix.com

Topics

devopsnixnix-flakessdlc

Resources

Readme
Activity
Custom properties

Stars

486 stars

Watchers

13 watching

Forks

49 forks
Report repository

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.