Add modules/shared/syscfg/media.nix

This commit is contained in:
2026-06-04 17:29:20 +02:00
parent 809dd65eb0
commit 210cf2dc9a

View File

@@ -0,0 +1,51 @@
{ lib, ... }:
let
mediaDir = ../media;
mainDir = mediaDir + "/main";
maybePath = rel:
let path = mediaDir + "/${rel}";
in if builtins.pathExists path then path else null;
mainImages =
let
names = builtins.attrNames (builtins.readDir mainDir);
isImage = name: builtins.match ".*\\.(png|jpg|jpeg|webp|svg)$" name != null;
in
map (name: mainDir + "/${name}") (lib.sort builtins.lessThan (lib.filter isImage names));
in
with lib; {
logo = {
ico = mkOption {
type = types.path;
default = mediaDir + "/logo.ico";
};
svg = mkOption {
type = types.path;
default = mediaDir + "/logo.svg";
};
png = mkOption {
type = types.path;
default = mediaDir + "/logo.png";
};
};
banner = {
svg = mkOption {
type = types.nullOr types.path;
default = maybePath "banner.svg";
};
png = mkOption {
type = types.nullOr types.path;
default = maybePath "banner.png";
};
};
main = mkOption {
type = types.listOf types.path;
default = if mainImages != [ ] then mainImages else lib.optional (maybePath "main/bg.png" != null) (mediaDir + "/main/bg.png");
};
bg = mkOption {
type = types.path;
default = let bg = maybePath "main/bg.png"; in if bg != null then bg else builtins.head mainImages;
};
}