summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDomen Kožar <domen@dev.si>2022-01-14 14:54:42 +0100
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2022-01-18 17:10:42 +0000
commitb2606f241512f203fdb6553ff052826877ab9c39 (patch)
tree016f2ee72fb4bc42c7ca82bd22d672520bc27bf7
parentMerge pull request #155480 from NixOS/backport-153279-to-release-21.11 (diff)
downloadnixpkgs-b2606f241512f203fdb6553ff052826877ab9c39.tar.gz
nixos: add cachix-agent service
(cherry picked from commit 42994be64b12ed7713aaf6f50ae550f999057833)
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/system/cachix-agent/default.nix57
2 files changed, 58 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index c397271e2f3e..a0fd0b5985ba 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -954,6 +954,7 @@
./services/security/vault.nix
./services/security/vaultwarden/default.nix
./services/security/yubikey-agent.nix
+ ./services/system/cachix-agent/default.nix
./services/system/cloud-init.nix
./services/system/dbus.nix
./services/system/earlyoom.nix
diff --git a/nixos/modules/services/system/cachix-agent/default.nix b/nixos/modules/services/system/cachix-agent/default.nix
new file mode 100644
index 000000000000..67707e1483b7
--- /dev/null
+++ b/nixos/modules/services/system/cachix-agent/default.nix
@@ -0,0 +1,57 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+ cfg = config.services.cachix-agent;
+in {
+ meta.maintainers = [ lib.maintainers.domenkozar ];
+
+ options.services.cachix-agent = {
+ enable = mkEnableOption "Cachix Deploy Agent: https://docs.cachix.org/deploy/";
+
+ name = mkOption {
+ type = types.str;
+ description = "Agent name, usually same as the hostname";
+ default = config.networking.hostName;
+ defaultText = "config.networking.hostName";
+ };
+
+ profile = mkOption {
+ type = types.nullOr types.str;
+ default = null;
+ description = "Profile name, defaults to 'system' (NixOS).";
+ };
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.cachix;
+ defaultText = literalExpression "pkgs.cachix";
+ description = "Cachix Client package to use.";
+ };
+
+ credentialsFile = mkOption {
+ type = types.path;
+ default = "/etc/cachix-agent.token";
+ description = ''
+ Required file that needs to contain CACHIX_AGENT_TOKEN=...
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ systemd.services.cachix-agent = {
+ description = "Cachix Deploy Agent";
+ after = ["network.target"];
+ path = [ config.nix.package ];
+ wantedBy = [ "multi-user.target" ];
+ # don't restart while changing
+ reloadIfChanged = true;
+ serviceConfig = {
+ Restart = "on-failure";
+ EnvironmentFile = cfg.credentialsFile;
+ ExecStart = "${cfg.package}/bin/cachix deploy agent ${cfg.name} ${if cfg.profile != null then profile else ""}";
+ };
+ };
+ };
+}