41 lines
1.2 KiB
Nix
41 lines
1.2 KiB
Nix
|
# This module extends the official sd-image.nix with the following:
|
||
|
# - ability to add options to the config.txt firmware
|
||
|
{
|
||
|
config,
|
||
|
lib,
|
||
|
pkgs,
|
||
|
...
|
||
|
}: {
|
||
|
options.sdImage = with lib; {
|
||
|
extraFirmwareConfig = mkOption {
|
||
|
type = types.attrs;
|
||
|
default = {};
|
||
|
description = lib.mdDoc ''
|
||
|
Extra configuration to be added to config.txt.
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = {
|
||
|
sdImage.populateFirmwareCommands =
|
||
|
lib.mkIf ((lib.length (lib.attrValues config.sdImage.extraFirmwareConfig)) > 0)
|
||
|
(
|
||
|
let
|
||
|
# Convert the set into a string of lines of "key=value" pairs.
|
||
|
keyValueMap = name: value: name + "=" + toString value;
|
||
|
keyValueList = lib.mapAttrsToList keyValueMap config.sdImage.extraFirmwareConfig;
|
||
|
extraFirmwareConfigString = lib.concatStringsSep "\n" keyValueList;
|
||
|
in
|
||
|
lib.mkAfter
|
||
|
''
|
||
|
config=firmware/config.txt
|
||
|
# The initial file has just been created without write permissions. Add them to be able to append the file.
|
||
|
chmod u+w $config
|
||
|
echo "\n# Extra configuration" >> $config
|
||
|
echo "${extraFirmwareConfigString}" >> $config
|
||
|
chmod u-w $config
|
||
|
''
|
||
|
);
|
||
|
};
|
||
|
}
|