Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions examples/_d2n-std/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
inputs = {
std.url = "github:divnix/std";
dream2nix.url = "github:nix-community/dream2nix";
dream2nix.inputs.nixpkgs.follows = "std/nixpkgs";
nixpkgs.follows = "std/nixpkgs";
src.url = "github:prettier/prettier/2.4.1";
src.flake = false;
};

outputs = {
std,
self,
...
} @ inputs:
std.growOn {
inherit inputs;
cellsFrom = ./nix;
cellBlocks = with std.blockTypes; [
(installables "packages" {ci.build = true;})
Comment thread
blaggacao marked this conversation as resolved.
];
}
# compat with `nix` cli
{
packages = std.harvest self ["app" "packages"];
};
}
22 changes: 22 additions & 0 deletions examples/_d2n-std/nix/app/packages.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
inputs,
cell,
}: {
default = cell.packages.app;
app =
# a terrible idea

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could work but completely destroys the harmony 😃

But I don't think this is the right way. There must be a better way.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently, we do not have a less terrible interface ;)
I plan to re-design this completely
I recently created a collaborative document to discuss how the new drem2nix API should look like.
Feel free to collaborate and dump your ideas there: https://pad.lassul.us/UswFgE39SDuvRcT3R7irNQ?view

To summarize it. I plan to change dream2nix to not provide any functions itself, and instead only export modules for drv-parts. After this, everything will evolve around individual derivations instead of flakes. Composing multiple packages to something like a flake will then be up to the user.

@blaggacao blaggacao Dec 29, 2022

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, that is frankly extremely promising.

I engaged in a round of (extensive) comments trying to fully cover my stakeholder perspective as a:

  • DevOps persona operating on the intersection of Ops, Build & DevX along the entire SDLC.
  • Horizontal Integration Framework maintainer (i.e. std) addressing the SDLC wholistically.

I'll reproduce the question about potential output contracts for Standard BlockTypeActions to consume (drv-parts contracts vs d2n contracts) also here in github: DavHau/drv-parts#1

(inputs.dream2nix.lib.makeFlakeOutputs {
systems = [inputs.nixpkgs.system];
source = inputs.src;
projects = {
prettier = {
name = "prettier";
subsystem = "nodejs";
translator = "yarn-lock";
};
};
})
.packages
.${inputs.nixpkgs.system}
.default;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might want to pick prettier here instead of default. Sometimes the default might not point to what you want. The heuristic is a bit poor as of now.

}