Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beauty #1

Open
aameen-tulip opened this issue Dec 3, 2022 · 1 comment
Open

Beauty #1

aameen-tulip opened this issue Dec 3, 2022 · 1 comment

Comments

@aameen-tulip
Copy link

aameen-tulip commented Dec 3, 2022

The design systems for Nix you've been cooking up recently are looking great.

I haven't tried out flake parts or std or similar systems yet; but the style you have here with interfaces and implementations split with modules to typecheck is really appealing.

In the future I'm hoping to carve out the time to explore these because it seems like it would save me from a lot of bespoke patterns I keep iterating through.

@blaggacao
Copy link

blaggacao commented Dec 29, 2022

Since you mentioned std. I'm tinkering with an idea:

{
  inputs.std.url = "...";
  inputs.nixpkgs.follows = "std/nixpkgs";
  outputs = {std, self, ...}@inputs: std.growOn {
    inherit inputs;
    cellsFrom = ./nix;
    cellBlocks = with std.blockTypes; [
      # assumes ./nix/<cell>/packages.nix
      # to contain drv-parts modules
      (drvParts "packages" {ci.build = true;})
    ];
  }
  {
    packages = std.harvest self ["mycell" "packages"];
  };
}

Assuming a future implementation in dream2nix.

Standard BlockTypeActions implement useful UX (on the CLI & TUI & recently even CI) for known BlockTypes.

What stable output contracts could drv-parts and what output contracts would d2n provide for BlockTypeActions to consume and expose to the framework?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants