mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
`literalExpression` is intended just to signify code that needs to stay a string that gets represented exactly as-is for docs. It has been misused heavily and people get confused repeatedly on when or not to use it because of the rampant misuse.
80 lines
2.2 KiB
Nix
80 lines
2.2 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
cfg = config.programs.openstackclient;
|
|
yamlFormat = pkgs.formats.yaml { };
|
|
in
|
|
{
|
|
meta.maintainers = [ lib.maintainers.tensor5 ];
|
|
|
|
options.programs.openstackclient = {
|
|
enable = lib.mkEnableOption "OpenStack command-line client";
|
|
|
|
package = lib.mkPackageOption pkgs "openstackclient" { nullable = true; };
|
|
|
|
clouds = lib.mkOption {
|
|
type = lib.types.submodule { freeformType = yamlFormat.type; };
|
|
default = { };
|
|
example = {
|
|
my-infra = {
|
|
cloud = "example-cloud";
|
|
auth = {
|
|
project_id = "0123456789abcdef0123456789abcdef";
|
|
username = "openstack";
|
|
};
|
|
region_name = "XXX";
|
|
interface = "internal";
|
|
};
|
|
};
|
|
description = ''
|
|
Configuration needed to connect to one or more clouds.
|
|
|
|
Do not include passwords here as they will be publicly readable in the Nix store.
|
|
Configuration written to {file}`$XDG_CONFIG_HOME/openstack/clouds.yaml`.
|
|
See <https://docs.openstack.org/python-openstackclient/latest/configuration/index.html#clouds-yaml>.
|
|
'';
|
|
};
|
|
|
|
publicClouds = lib.mkOption {
|
|
type = lib.types.submodule { freeformType = yamlFormat.type; };
|
|
default = { };
|
|
example = lib.literalExpression ''
|
|
{
|
|
example-cloud = {
|
|
auth = {
|
|
auth_url = "https://identity.cloud.example.com/v2.0";
|
|
};
|
|
};
|
|
};
|
|
'';
|
|
description = ''
|
|
Public information about clouds.
|
|
|
|
Configuration written to {file}`$XDG_CONFIG_HOME/openstack/clouds-public.yaml`.
|
|
See <https://docs.openstack.org/python-openstackclient/latest/configuration/index.html#clouds-public-yaml>.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home.packages = lib.mkIf (cfg.package != null) [ cfg.package ];
|
|
|
|
xdg.configFile."openstack/clouds.yaml".source =
|
|
yamlFormat.generate "openstackclient-clouds-yaml-${config.home.username}"
|
|
{
|
|
inherit (cfg) clouds;
|
|
};
|
|
|
|
xdg.configFile."openstack/clouds-public.yaml".source =
|
|
yamlFormat.generate "openstackclient-clouds-public-yaml-${config.home.username}"
|
|
{
|
|
public-clouds = cfg.publicClouds;
|
|
};
|
|
};
|
|
}
|