Coder Social home page Coder Social logo

jmgilman / std Goto Github PK

View Code? Open in Web Editor NEW

This project forked from divnix/std

0.0 1.0 0.0 1.18 MB

The Nix Flakes framework for perfectionists with deadlines [maintainer=@blaggacao]

Home Page: https://std.divnix.com

Shell 2.06% Go 23.79% Nix 73.29% CUE 0.59% Just 0.27%
devops nix nix-flakes

std's Introduction

Standard

Ship today.

Standard is THE opinionated, generic, Nix Flakes framework that will allow you to grow and cultivate Nix Cells with ease. Nix Cells are the fine art of code organization using flakes.

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 std repository itself

In this repository, you'll find, both, the implementation and an application of Standard.

Implementation

What is std? — The well-commented nix code → ./src.

That folder implements:

  • std.grow: the "smart" importer
  • std.growOn: std.grow-variant that recursively merges all additional variadic arguments
  • std.harvest: harvest your Targets into a different shape for compatibility
  • std.winnow: when more advanced harvesting is required, use this to harvest and filter the output
  • std.pick: pick your Targets into a different shape without system scope
  • std.incl: a straight-forward source filter with additive semantics
  • std.deSystemize: a helper to hide system from plain sight
  • std.<blockType>: builtin (Cell) Block Types that implement (Cell Block Type) Actions

Application

Dog-fooding? → ./cells.

  • Cells: ./cells mainly implements std.
  • Cell Blocks: std implements:
  • Targets: each Cell Block implements one or various targets.
  • Block Type Actions: some Targets expose Actions inferred from the Block Type.
{{#include ../dogfood.nix}}

That's it. std.grow is a "smart" importer of your nix code and is designed to keep boilerplate at bay.

TIP: Now, enter the devshell (direnv allow) and play with the std CLI/TUI companion. It answers one critical question to newcomers and veterans alike:

What can I do with this repository?

Documentation

Where can I find the documentation? → ./docs.

No, I mean rendered? → The Standard Book.

The documentation is structured around these axes:

For Study For Work
The Practice Tutorials How-To Guides
The Theory Explanation Reference

Licenses

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

And the usual copies? → ./LICENSES.

Releases

You may find releases on the GitHub Release Page of this repository.

Why?

Examples in the Wild

If you'd like to see some examples of what a Standard project looks like, take a look at the following:

🚧 Work in progress, would like to help us extend this section?

Contributions

Please enter the development environment:

direnv allow

std's People

Contributors

blaggacao avatar elikoga avatar garbas avatar gtrunsec avatar gytis-ivaskevicius avatar jbgi avatar jmgilman avatar johnalotoski avatar kamadorueda avatar manveru avatar michalrus avatar montchr avatar mputz86 avatar nrdxp avatar phaer avatar rschardt avatar tomberek avatar tshaynik avatar wmertens avatar yoriksar avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.