{ config, lib, pkgs, ... }: with lib; let podman-lib = import ./podman-lib.nix { inherit lib; }; createQuadletSource = name: networkDef: '' # Automatically generated by home-manager for podman network configuration # DO NOT EDIT THIS FILE DIRECTLY [Network] Label=nix.home-manager.managed=true ${podman-lib.formatExtraConfig networkDef} [Install] WantedBy=multi-user.target default.target [Service] Environment="PATH=${pkgs.shadow}" ''; toQuadletInternal = name: networkDef: { serviceName = "podman-${name}"; # becomes podman--network.service because of quadlet source = createQuadletSource name networkDef; unitType = "network"; }; in { options = { services.podman.networks = mkOption { type = types.attrsOf (podman-lib.primitiveAttrs); default = {}; example = literalExample '' { mynetwork = { Subnet = "192.168.1.0/24"; Gateway = "192.168.1.1"; NetworkName = "mynetwork"; }; } ''; description = "Defines Podman network quadlet configurations."; }; }; config = let networkQuadlets = mapAttrsToList toQuadletInternal config.services.podman.networks; in { internal.podman-quadlet-definitions = networkQuadlets; # manifest file home.file."${config.xdg.configHome}/podman/networks.manifest".text = podman-lib.generateManifestText networkQuadlets; }; }