57 lines
2.2 KiB
Markdown
57 lines
2.2 KiB
Markdown
|
# TODOs
|
||
|
|
||
|
### Add a simple DIY module framework
|
||
|
|
||
|
#### Features in order of importance
|
||
|
- import files by directory structure like modname/default.nix or modname.nix (both ideally)
|
||
|
- enable/disable wrap with modname.enable merged with provided config attrs, maybe more default config attrs ? order? tag a.la os/hm/both ?
|
||
|
- variant with common code for home-manager OR nixOsConfig
|
||
|
- variant with merged modules than can export config._home or sth??
|
||
|
- declare like:
|
||
|
```nix
|
||
|
attrs: {
|
||
|
commonConfig= {}; // nil (default enable)
|
||
|
nixosModule=(attrs: {}) attrs;
|
||
|
hmModule=(attrs: {}) attrs;
|
||
|
}
|
||
|
```
|
||
|
- or ?
|
||
|
```nix
|
||
|
{isHomeManagerModule, homeOnly, nixosOnly, homeOrNix, pkgs, ... }: {
|
||
|
// write module and use if isHomeManagerModule inside it to seperate?
|
||
|
asd = if isHomeMangerModule
|
||
|
# ...
|
||
|
// or via utilFunction which only evals in correct system?
|
||
|
def = homeOrNix {args: home.asd.def=true;} {args: boot.kernel.bla='bla'};
|
||
|
// the lsat one seems kinda similar to #1, big difference is that it's reusable at multiple places in the config
|
||
|
// is that usseful ? for programx.xyz at least likely?
|
||
|
};
|
||
|
```
|
||
|
- import time interface
|
||
|
- module-based?
|
||
|
- ```nix
|
||
|
nixosModules.myMods.default // with sensible defs
|
||
|
nixosModules.myMods.custom { path=./dir; autoconf.addEnable=false; } // but customization(maybe also regex?
|
||
|
```
|
||
|
- or lib-like?
|
||
|
lib.mylib.modularizer.custom {path ./; #...};
|
||
|
- both?! (liblike needs more detailed setup, module can integrate with homeManager seamlessly with one call? or can it?, where to place calls in existing config???)
|
||
|
- 2 calls could be needed, to get both hm and nixos integration?
|
||
|
- or would they?
|
||
|
- prevent double eval? uneeded cause lazyness? benchmark?
|
||
|
- idea provide higher-level entrypoint which also replaces ./system foo and has several dirs as config e.g.
|
||
|
- ```nix
|
||
|
nixSystems=v81magicfunction {
|
||
|
attrs = {
|
||
|
inherit @pkgs, lib, inputs?
|
||
|
};
|
||
|
systemsDir = ./systems;
|
||
|
homeModules = ./hmModules;
|
||
|
osModules = ./hmModules;
|
||
|
magicModules = './v81Modules;
|
||
|
override = {
|
||
|
hook running last
|
||
|
};
|
||
|
};
|
||
|
```
|