Simplify build systems

This commit is contained in:
DashieTM 2024-09-08 19:09:35 +02:00
parent b994e4698c
commit 9535108bb7
6 changed files with 94 additions and 131 deletions

View file

@ -1,12 +1,8 @@
# with friendly help by stylix: https://github.com/danth/stylix/blob/master/docs/default.nix
{
pkgs,
build_systems,
lib,
...
}:
{ pkgs, build_systems, lib, ... }:
let
makeOptionsDoc = configuration: pkgs.nixosOptionsDoc { options = configuration; };
makeOptionsDoc = configuration:
pkgs.nixosOptionsDoc { options = configuration; };
generateDocs = obj: ''
touch src/${obj.fst}.md
sed '/*Declared by:*/,/^$/d' <${obj.snd.optionsCommonMark} >> src/${obj.fst}.md
@ -15,17 +11,18 @@ let
echo "- [${name}](${name}.md)" >> src/SUMMARY.md
'';
system = (build_systems ../example/.)."example".options;
makeOptionsDocPrograms = name: pkgs.nixosOptionsDoc { options = system.mods.${name}; };
makeOptionsDocPrograms = name:
pkgs.nixosOptionsDoc { options = system.mods.${name}; };
conf = makeOptionsDoc system.conf;
paths = builtins.readDir ../modules/programs;
names = lib.lists.remove "default" (
map (name: lib.strings.removeSuffix ".nix" name) (lib.attrsets.mapAttrsToList (name: _: name) paths)
);
names = lib.lists.remove "default"
(map (name: lib.strings.removeSuffix ".nix" name)
(lib.attrsets.mapAttrsToList (name: _: name) paths));
mods = map makeOptionsDocPrograms names;
docs = lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods));
docs =
lib.strings.concatLines (map generateDocs (lib.lists.zipLists names mods));
summary = lib.strings.concatStringsSep " " (map summaryAppend names);
in
pkgs.stdenvNoCC.mkDerivation {
in pkgs.stdenvNoCC.mkDerivation {
name = "dashNix-book";
src = ./.;

View file

@ -26,11 +26,13 @@ dashNix = {
You can then configure your systems in your flake outputs with a provided library command:
```nix
nixosConfigurations = (inputs.dashNix.dashNixLib.build_systems ./.);
nixosConfigurations = inputs.dashNix.dashNixLib.build_systems ./.;
```
The paremeter specifies where your hosts directory will be placed, in said directory you can then create a directory for each system.
Note, the name of the systems directory is also its hostname.
This command will build each system that is placed within the hosts/ directory.
In this directory create one directory for each system you want to configure with DashNix.
This will automatically pick up the hostname for the system and look for 3 different files that are explained below.
(Optionally, you can also change the parameter root (./.) to define a different starting directory than hosts/)
In order for your configuration to work, you are required to at least provide a single config file with a further config file being optional for custom configuration.
The hardware.nix specifies additional NixOS configuration, while home.nix specifies additional home-manager configuration. (both optional)