numtide / blueprint Goto Github PK
View Code? Open in Web Editor NEWNix without the glue code
Nix without the glue code
We need some way to alias package names. Either to map to the "default", or to deprecate/rename names.
As a publisher, I might want to expose modules that use flake
and inputs
attributes.
At the moment, those arguments will be filled with values from the consumer flake.
The flake author should be able to reason about the content of these attributes.
=> somehow lock those arguments to contain the values of the publisher flake
How will blueprint solve the problem of user-specific configuration?
Let's say, i'm adding Hyprland to my nixos configuration.
For configuring it, it expects to have a user config in ~/.config/hypr/hyprland.conf
.
We can't do this system-wide - we have to do this per user.
But, for example, what if i want to add modules like "themes" that enable a desktop-manager and automatically set a bunch of style options. We would need to configure some stuff per-user, but ideally only have a system-module.
This is my problem atm, the only possible option, is, to introduce a differentiation between system and user modules. But import both, to make it work as a theme.
Could blueprint solve this issue?
Is there even an elegant solution to this?
Is your feature request related to a problem? Please describe.
I love simply adding a formatter nix to invoke treefmt-nix by just adding a treefmt-nix.mkWrapper call as e.g. in nixos-facter.
But I'd like to use the same treefmt-nix configuration as a flake check. As afaik there's no generic interface to tell a given formatter to enter "check mode", I believe we can't add such a feature to blueprint automatically.
Describe the solution you'd like
Not sure, hence this issue: I one thing could be to make the treefmt-nix wrapper expose passthru.check
or so which would enable something like checks.format = perSystem.formatter.passthru.check
in a quite generic way.
Describe alternatives you've considered
Maybe adapting formatter.nix to be able to return formatter
and some checks
? This would allow just using treefmt-nix.lib.evalModule
and then treefmt.config.build.wrapper
, treefmt.config.build.check
, ... as needed.
Additional context
The former would of course affect treefmt-nix, happy to create a PR there, just wanted to collect feedback here as i ran into this with blueprint specifically
At the moment, only the "nixpkgs" input is used to:
Some users might want to use different versions of nixpkgs for different machines (eg: stable and unstable)
The lib is not lazy enough, which means that when one system configuration is accessed, it evaluates all of them.
Output the build matrix so it integrates with GitHub Actions a bit like https://github.com/nix-community/nix-github-actions
Is your feature request related to a problem? Please describe.
When using https://github.com/numtide/devshell I cannot use perSystem.devshell.mkShell
because of the following:
Lines 23 to 25 in 4f88aed
This prefers the packages
attribute over legacyPackages
, and in the case of devshell it exposes different things between those two attribute sets.
Describe the solution you'd like
I'm not sure what the correct solution looks like. Maybe a recursive merge, giving precedence to packages
?
Describe alternatives you've considered
For now I'm using inputs.devshell.legacyPackages.${system}.mkShell
.
Is your feature request related to a problem? Please describe.
It's not clear how to set a custom formatted e.g. treefmt
. set the flake formatter.
Describe the solution you'd like
Just like with devshell.nix
, if a formatter.nix
is present it could be used to set the flake formatted.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.