Feature requests braindump #329
-
|
Add new ideas, you can also leave a 👍 if you find any of them important to you. You can also open another discussion in the Ideas category, this one is just a brain dump of things that may or may never be part of Den. If something feels like plausible, lets move to its own Ideas thread. |
Beta Was this translation helpful? Give feedback.
Replies: 12 comments 30 replies
-
|
A template using adios modules or adios-flake instead of flake-parts just for fun and to compare memoization and speed. |
Beta Was this translation helpful? Give feedback.
-
|
flake-file integration that allows to extract inputs that are needed only for some aspect and its dependencies. |
Beta Was this translation helpful? Give feedback.
-
|
I'd like to allow other outputs than nixosConfigurations, noticed this when doing our templates/nvf-standalone. |
Beta Was this translation helpful? Give feedback.
-
|
I'd like to have examples of extending the ctx pipeline (we have one microvm) but I believe ctx transitions written by people would unleash new patterns. So I need to document that. |
Beta Was this translation helpful? Give feedback.
-
|
I've been thinking about a templates/fleet that uses a schema.fleet, ctx.host.into.fleet-member to define members of same network, and each host has access to its peers and can configure things like ssh knownHosts, etc. |
Beta Was this translation helpful? Give feedback.
-
|
I've also been thinking of a |
Beta Was this translation helpful? Give feedback.
-
|
Publish "stable" and "unstable" versions of documentation where "stable" would the latest GitHub release and "unstable" would be the master branch. |
Beta Was this translation helpful? Give feedback.
-
|
More of a docs thing, but I think it might be interesting to develop something like a "standard" project layout. Not for aspects, necessarily. But I think that it might be useful to have something like this as a starting point: Of course, it'd be important to emphasize that den doesn't enforce any kind of folder structure and they're free to change this however they want. But this kind of concrete guidance might help newcomers grasp the nature of what den is doing and help with the "blank page" problem when trying to get things setup. Ruby on Rails, Laravel, and probably countless other frameworks have benefited from giving users a jumping off point like this. Finally, having a standard layout like this might make it easier for people to grok the example templates that you've setup. I've found that familiar landmarks like this cut down a lot of the mental energy when learning a new code base. |
Beta Was this translation helpful? Give feedback.
-
|
More syntax sugar for includes, like: <cli/*> # includes all sub-aspects for this aspect (alias for attrValues trick?)
<cli/btop,bat> # expands to include `cli._.btop` and `cli._.bat` |
Beta Was this translation helpful? Give feedback.
-
|
I don't know if this would really make sense, but when defining a custom class, would could den auto-generate an aspect for the class? Kind of like you do for |
Beta Was this translation helpful? Give feedback.
-
|
Feature Request: Sibling Provider Presence Detection Summary It would be useful to conditionally check whether a sibling provider is active within a host configuration, so that providers can avoid conflicts when both contribute to the same config. Motivation When multiple providers contribute to the same configuration surface, they can conflict. The natural place to resolve this is within the provider's own configuration block, but providers currently have no way to query whether a sibling provider is active on the same host. Example A The only current workaround is a parametric include, which requires duplicating recursive resolution logic inline and scatters configuration that logically belongs together: aegis.tmux = {
homeManager = { pkgs, ... }: {
programs.tmux.extraConfig = ''
# status-right must be split out into a parametric
# because provider context is not available here
'';
};
includes = [
({ host, lib, ... }:
let
hasAspect =
name: node:
(node.name or null) == name
|| lib.any (hasAspect name) (node.includes or [ ]);
hasGitmux = hasAspect "gitmux" host.resolved;
in
lib.optionalAttrs (!hasGitmux) {
homeManager.programs.tmux.extraConfig = ''
set -g status-right '#{?pane_in_mode,#[fg=yellow][COPY],}#{?window_zoomed_flag,#[fg=red][ZOOM],}'
'';
}
)
];
};Requirements
|
Beta Was this translation helpful? Give feedback.
-
|
Have a user-packages and a system-packages battery : den.aspects.games = {
includes = [
(den.provides.user-packages [ "prismlauncher" "airshipper" ])
];
};
# Aspect games includes a sub aspect that includes prismlauncher and airshipper in user packages.
den.aspects.base = {
includes = [
(den.provides.system-packages [ "thunderbird" ])
];
};
# Aspect base includes a sub aspect that includes thunderbird in systemPackages. |
Beta Was this translation helpful? Give feedback.
Feature is now on main, let me know if you need followup functionality.