aboutsummaryrefslogtreecommitdiff
path: root/deployment
diff options
context:
space:
mode:
Diffstat (limited to 'deployment')
-rw-r--r--deployment/default.nix11
-rw-r--r--deployment/keyrings.nix64
2 files changed, 0 insertions, 75 deletions
diff --git a/deployment/default.nix b/deployment/default.nix
deleted file mode 100644
index 240d970..0000000
--- a/deployment/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{lib, ... }:
-
-let
- all = lib.filterAttrs
- ( n: _: n != "default.nix" && ! lib.hasPrefix "." n )
- (builtins.readDir ./.);
-
-in {
- imports = map (p: ./. + "/${p}") ( builtins.attrNames all );
-}
-
diff --git a/deployment/keyrings.nix b/deployment/keyrings.nix
deleted file mode 100644
index 6230107..0000000
--- a/deployment/keyrings.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{ config, lib, ... }:
-
-let
-
- inherit (builtins)
- attrNames baseNameOf head match pathExists readFile toString ;
- inherit (lib)
- foldl genAttrs mapAttrsToList mkOption optionalAttrs types ;
- inherit (types)
- attrsOf listOf nullOr path ;
-
- allusers = config.users.users;
- cfg = config.nixsap.deployment;
-
- # XXX If the file is encrypted:
- # error: the contents of the file ‘...’ cannot be represented as a Nix string
- read = key:
- let
- m = match "^([^(]*)\\[.+\\]$" key;
- s = if m != null then head m else key;
- in if cfg.secrets != null
- then readFile (cfg.secrets + "/${s}")
- else "";
-
-in {
- options.nixsap.deployment = {
- secrets = mkOption {
- description = ''
- Directory with the secrets. If not specified,
- each key will be an empty file.
- '';
- type = nullOr path;
- default = null;
- example = "<secrets>";
- };
- keyrings = mkOption {
- type = attrsOf (listOf path);
- description = ''
- Binds keys to a user. It's possible to share the same key between
- multiple users, of course by different names: "/run/keys/foo" and
- "/run/keys/foo[bar]" will use the same secret file "foo".
- '';
- default = {};
- example = { mysqlbackup = [ "/run/keys/s3cmd.cfg" ];
- pgbackup = [ "/run/keys/s3cmd.cfg[pgbackup]" ];
- };
- };
- };
-
- config = {
- users.users = genAttrs (attrNames cfg.keyrings) (
- name: optionalAttrs (name != "root") { extraGroups = [ "keys" ]; }
- );
-
- deployment.keys = foldl (a: b: a//b) {} (
- mapAttrsToList (name: keys:
- genAttrs (map baseNameOf keys)
- (key: { text = read key;
- user = toString allusers.${name}.uid;
- })
- ) cfg.keyrings
- );
- };
-}