Skip to content

Commit

Permalink
netlifyDeploy: add flake-module
Browse files Browse the repository at this point in the history
  • Loading branch information
Kranzes committed Nov 12, 2022
1 parent 244595b commit 54bf53c
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
67 changes: 67 additions & 0 deletions effects/netlify/flake-module.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{ config, lib, withSystem, ... }:
let
inherit (lib) mkOption types optionalAttrs mapAttrs;
cfg = config.netlify-deploy;
in
{
options.netlify-deploy = mkOption {
type = (types.attrsOf types.submodule {
options = {
enable = lib.mkEnableOption "On-push deployment to Netlify";

siteId = mkOption {
type = types.str;
description = ''
An opaque identifier assigned by Netlify to the website you wish to deploy.
See [docs.hercules-ci.com](https://docs.hercules-ci.com/hercules-ci-effects/reference/nix-functions/netlifydeploy/#param-name) on how to get the right siteId for your website from Netlify.
'';
};

secretName = mkOption {
type = types.str;
description = ''
The secret that will be looked up in [secrets.json](https://docs.hercules-ci.com/hercules-ci-agent/secrets-json).
This secret must hold the `secretField` field, ith a string value that is a Netlify personal access token.
'';
};

secretField = mkOption {
type = types.str;
default = "token";
description = "The name of the field inside the `secretName` secret which holds the Netlify personal access token.";
};

content = mkOption {
type = types.str;
description = ''
Path to the site content, also known as the Publish directory.
This includes files such as netlify.toml, _redirects, and all web resources, like index.html, style sheets, etc.
You will typically put a derivation here.
'';
};

productionDeployment = mkOption {
type = types.bool;
default = false;
description = "Whether this should be production deployment.";
};

extraDeployArgs = mkOption {
type = (types.listOf types.str);
default = [ ];
description = "Extra arguments to pass to the netlify deploy invocation.";
};
};
});
};

config = {
herculesCI.onPush.default.outputs.effects = {
netlify-deploy = mapAttrs
(name: siteCfg: optionalAttrs (siteCfg.enable) withSystem config.defaultEffectSystem ({ hci-effects, ... }:
hci-effects.netlifyDeploy { inherit (siteCfg) siteId secretName secretField content productionDeployment extraDeployArgs; }
))
cfg;
};
};
}
1 change: 1 addition & 0 deletions flake-module.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
./flake-modules/herculesCI-attribute.nix
./flake-modules/herculesCI-helpers.nix
./effects/flake-update/flake-module.nix
./effects/netlify/flake-module.nix
];
}

0 comments on commit 54bf53c

Please sign in to comment.