Files
vmimages/home-manager/global/keybase.nix
2023-02-28 14:01:36 +00:00

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/";
};
};
}