aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-01-18 08:10:20 -0600
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-01-18 08:10:20 -0600
commitd6c4bd6d87d31a2c688fb2fcfdb0cb15d8f9163d (patch)
tree07f85b8fac540f7625f90b10ee500a1bc8116ac3 /lib
parented2550a41c8429a1d2fe897deb878717c2ebc3d1 (diff)
parent43af7f28b28021932b318964a953463d8dd79372 (diff)
Merge branch 'main' into wg
Diffstat (limited to 'lib')
-rw-r--r--lib/lib.nix14
-rw-r--r--lib/nix-furnace/mkSystem.nix82
2 files changed, 65 insertions, 31 deletions
diff --git a/lib/lib.nix b/lib/lib.nix
index 00cc334..56f0dfd 100644
--- a/lib/lib.nix
+++ b/lib/lib.nix
@@ -32,15 +32,21 @@ let
config,
}: let
inherit (lib) mkOption mkEnableOption;
- mkProgramOption = name: {
- enable = mkEnableOption "whether to enable ${name}";
- theme = mkOption {
+
+ mkThemeOption = name:
+ mkOption {
+ description = "Pre-made theme for ${name}";
type = lib.types.enum ["catppuccin" "adwaita" "kanagawa"];
default = config.collinux.theme;
+ defaultText = "config.collinux.theme";
};
+
+ mkProgramOption = name: {
+ enable = mkEnableOption "whether to enable ${name}";
+ theme = mkThemeOption name;
};
in {
- inherit mkProgramOption;
+ inherit mkProgramOption mkThemeOption;
};
in {
inherit globimport;
diff --git a/lib/nix-furnace/mkSystem.nix b/lib/nix-furnace/mkSystem.nix
index 85f952c..2766082 100644
--- a/lib/nix-furnace/mkSystem.nix
+++ b/lib/nix-furnace/mkSystem.nix
@@ -4,6 +4,32 @@ let
listModules = getSubdirs ../../modules;
+ nixosModules = hostname:
+ [
+ ../../modules/options.nix
+ ../../hosts/${hostname}/config.nix
+ (lazyImport ../../hosts/${hostname}/nixos.nix)
+ ]
+ ++ (listModules
+ |> (builtins.map (modName: [
+ (lazyImport ../../modules/${modName}/options.nix)
+ (lazyImport ../../modules/${modName}/nixos/default.nix)
+ ]))
+ |> my-lib.flatten);
+
+ hjemModules = hostname:
+ [
+ ../../modules/options.nix
+ ../../hosts/${hostname}/config.nix
+ (lazyImport ../../hosts/${hostname}/hjem.nix)
+ ]
+ ++ (listModules
+ |> (builtins.map (modName: [
+ (lazyImport ../../modules/${modName}/options.nix)
+ (lazyImport ../../modules/${modName}/hjem/default.nix)
+ ]))
+ |> my-lib.flatten);
+
mkNixosSystem = {
inputs,
hostname,
@@ -17,20 +43,7 @@ let
../../hosts/${hostname}/config.nix
# Nixos-sided modules
- {
- imports =
- [
- ../../modules/options.nix
- ../../hosts/${hostname}/config.nix
- (lazyImport ../../hosts/${hostname}/nixos.nix)
- ]
- ++ (listModules
- |> (builtins.map (modName: [
- (lazyImport ../../modules/${modName}/options.nix)
- (lazyImport ../../modules/${modName}/nixos/default.nix)
- ]))
- |> my-lib.flatten);
- }
+ {imports = nixosModules hostname;}
# Hjem-sided modules
{
@@ -38,18 +51,7 @@ let
inputs.hjem.nixosModules.hjem
];
hjem = {
- extraModules =
- [
- ../../modules/options.nix
- ../../hosts/${hostname}/config.nix
- (lazyImport ../../hosts/${hostname}/hjem.nix)
- ]
- ++ (listModules
- |> (builtins.map (modName: [
- (lazyImport ../../modules/${modName}/options.nix)
- (lazyImport ../../modules/${modName}/hjem/default.nix)
- ]))
- |> my-lib.flatten);
+ extraModules = hjemModules hostname;
specialArgs = {inherit inputs my-lib;};
users.${username} = {
enable = true;
@@ -60,6 +62,32 @@ let
}
];
};
+
+ genDocs = {
+ lib,
+ pkgs,
+ inputs,
+ hostname,
+ ...
+ }: let
+ eval = lib.evalModules {
+ modules = listModules |> (builtins.map (m: (lazyImport ../../modules/${m}/options.nix)));
+ specialArgs = {
+ inherit my-lib pkgs;
+ };
+ check = false;
+ };
+
+ optionsDoc = pkgs.nixosOptionsDoc {
+ inherit (eval) options;
+ };
+ in
+ pkgs.runCommand "options-doc.md" {
+ buildInputs = [pkgs.pandoc];
+ } ''
+ mkdir -p $out
+ cat ${optionsDoc.optionsCommonMark} | pandoc -t html -o - | tee $out/index.html
+ '';
in {
- inherit mkNixosSystem;
+ inherit mkNixosSystem genDocs;
}