mirror of
https://github.com/sstent/vmimages.git
synced 2025-12-06 06:01:51 +00:00
78 lines
1.6 KiB
Nix
78 lines
1.6 KiB
Nix
{ config, pkgs, inputs, lib, hostName, util, ... }:
|
|
with lib;
|
|
|
|
let
|
|
inherit
|
|
(builtins)
|
|
# attrNames
|
|
# attrValues
|
|
# foldl'
|
|
# isPath
|
|
# pathExists
|
|
readDir
|
|
# toString
|
|
;
|
|
|
|
inherit
|
|
(lib)
|
|
# flatten
|
|
filterAttrs
|
|
# forEach
|
|
# getAttrFromPath
|
|
# hasPrefix
|
|
# hasSuffix
|
|
# id
|
|
# mapAttrs'
|
|
# mapAttrsToList
|
|
# mkIf
|
|
# nameValuePair
|
|
# removeSuffix
|
|
;
|
|
cfg = config.custom.keybase;
|
|
username = config.home.username;
|
|
secretstore = config._secretstore;
|
|
# map = import "${inputs.self}/lib/map.nix";
|
|
|
|
# 'sops' Encrypted Secrets
|
|
hm_secrets = dir: out_dir:
|
|
filter (name: type: type != null && !(hasPrefix "_" name)) (name: type:
|
|
if type == "regular"
|
|
then
|
|
nameValuePair name {
|
|
sopsFile = dir + "/${name}";
|
|
format = "binary";
|
|
path = out_dir + "/${name}";
|
|
|
|
}
|
|
else nameValuePair "" null) (readDir dir);
|
|
|
|
filter = name: func: attrs: filterAttrs name (mapAttrs' func attrs);
|
|
|
|
|
|
in {
|
|
# imports = [
|
|
# "${inputs.self}/libs/map.nix"
|
|
# ];
|
|
|
|
options.custom.keybase = {
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Enable KeyBase";
|
|
};
|
|
};
|
|
|
|
|
|
config = mkIf cfg.enable {
|
|
services.keybase.enable = true;
|
|
services.kbfs.enable = true;
|
|
systemd.user.services.keybase.Unit.After = [ "sops-nix.service" ];
|
|
systemd.user.services.kbfs.Unit.After = [ "sops-nix.service" ];
|
|
|
|
sops = {
|
|
secrets = hm_secrets "${secretstore}/user_dotfiles/${username}@${hostName}/keybase/" "${config.xdg.configHome}/keybase/";
|
|
};
|
|
};
|
|
}
|
|
|