Files
dotfiles/org-agenda-api/container.nix

44 lines
1.4 KiB
Nix
Raw Normal View History

# Container build logic for org-agenda-api instances
# Imported by the main dotfiles flake to expose container outputs
{ pkgs, system, tangledConfig, org-agenda-api, orgApiRev, dotfilesRev }:
let
# Build container for a specific instance
mkInstanceContainer = instanceName: customConfigEl: overridesEl:
let
# Combine tangled config with instance-specific loader and overrides
orgAgendaCustomConfig = pkgs.runCommand "org-agenda-custom-config-${instanceName}" {} ''
mkdir -p $out
# Copy tangled files from dotfiles
cp ${tangledConfig}/*.el $out/ 2>/dev/null || true
# Add instance-specific custom-config.el loader
cp ${customConfigEl} $out/custom-config.el
# Add optional overrides.el if provided
${if overridesEl != null then "cp ${overridesEl} $out/overrides.el" else ""}
'';
in
org-agenda-api.lib.${system}.mkContainer {
customElispFile = "${orgAgendaCustomConfig}/custom-config.el";
# Use content-based tag to avoid caching issues
tag = "${instanceName}-${orgApiRev}-${dotfilesRev}";
};
configsDir = ./configs;
in
{
inherit mkInstanceContainer;
# Pre-built instance containers
containers = {
colonelpanic = mkInstanceContainer "colonelpanic"
"${configsDir}/colonelpanic/custom-config.el"
null;
kat = mkInstanceContainer "kat"
"${configsDir}/kat/custom-config.el"
null;
};
}