Add modules/shared/syscfg/media.nix
This commit is contained in:
51
modules/shared/syscfg/media.nix
Normal file
51
modules/shared/syscfg/media.nix
Normal 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;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user