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

wip: std skelleton (missing d2n function; help!) #433

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
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;})
blaggacao marked this conversation as resolved.
Show resolved Hide 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
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
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.

Copy link
Contributor Author

@blaggacao blaggacao Dec 29, 2022

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
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.

}