v0.13.0 #314
vic
announced in
Announcements
v0.13.0
#314
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Den v0.13.0
More Elven Shamanic Nix now with less Bifurcated Polynomial Applicatives, much better for health!.
What's Changed
New Contributors
Full Changelog: v0.12.0...v0.13.0
Den v0.13 Release Notes
This release focuses on context-pipeline behavior clarity, class forwarding, and API ergonomics. It also removes the old bidirectional behaviour that was causing duplicate-values in favor of explicit mutual routing.
Den v0.13 depends on flake-aspects v0.7.0, no changes to flake-aspects were needed.
Highlights
den._.bidirectionalwas first extracted from Den core into a battery and then removed.den._.mutual-provideris the supported mechanism for Host providing home-environments to all users.den.aspects.<host>.provides.to-users.*den.aspects.<user>.provides.to-hosts.*den.aspects.<user>.provides.<host>orden.aspects.<host>.provides.<user>den._.forwardnow supportsintoPath = [ ]for root forwarding.den.libden.lib.perHostden.lib.perUserden.lib.perHomeden.lib.take.exactly({host,user})patterns in code.nix/lib/*modules.default.nixandflake.nixare basically the same.Migration Notes
1) Replace bidirectional patterns
Until
v0.12.0Den had built-in Bidirectionality in its core.What that meant was that Host aspects could contribute
home classes like
homeManagerto all its users. Howeverthis was also the source of many duplicate reports, becuse
the Host aspect was being activated more than once: when the host was reading its own config and then later for each user context
{host,user}.We also had a "routing example" that @musjj then moved to what is now
den.provides.mutual-provider#236, that contribution made us wonder if the built-in bidirectionality could be extracted from core #273 (we did) and then further conversations led to actually removing it #300 after realizing it was more complicated than necessary.2) Forward alias classes can target class root
Previsouly or forward battery was not able to use
intoPath = [](forward into top-level target module).Now it is possible, enabling other patterns like classes
that guard on reading from config values or things like pkgs platform:
tests
3) Use explicit helpers for context intent
Prefer:
Over generic
den.lib.take.exactlyforms when intent is narrow. These forms document better the code intention. All these three work with plain attrs or functions.4) Standalone homes bound to existing host/user gain automatic os args
Homes named like
"user@host"now behaves consistently with hosted HM flows. For example, having:Will
<home>.userNameso that batteries likedefine-userwork.This means that by declaring
tux@iglooyou can quickly rebuild your homeenvironment without rebuilding the whole
iglooOS.5) Extended schema modules for users and homes.
User schema modules an also access their host:
Also standalone HM bound to an "user@host" pair give you access to
home.userandhome.hostmeaning the home object is bound to those.User can access the host it was difined-in, via
user.host, possibly rendering{host,user}into only{user}in the future -not sure-.CI/Test and Tooling Changes
latesttag upon release, docs/test workflow changes, semantic PR updates.shell.nixand exporteddevShellsfrom flake output for contributors.Docs and Naming Updates
guides/mutual.Recommended Upgrade Checklist
den._.bidirectionalusage.den.ctx.user.includes = [ den._.mutual-provider ];where needed.<host>.provides.to-usersand user->host routing to<user>.provides.to-hosts.den.lib.take.atLeast/exactlyincludes withperHost/perUser/perHomewhere appropriate.This discussion was created from the release v0.13.0.
Beta Was this translation helpful? Give feedback.
All reactions