home-manager/modules/services/podman-linux/networks.nix

58 lines
1.5 KiB
Nix
Raw Normal View History

{ 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-<netname>-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;
};
}