dotfiles

My PC Dotfiles & Website

_module.nix (1269B)


## Secrets Management ##
{
  config,
  inputs,
  ...
}: let
  inherit (config) util;
  inherit (config.flake) files;
in {
  flake.modules = {
    # System-Wide Secrets
    nixos.secrets = {
      config,
      pkgs,
      ...
    }: let
      path = files.path.gpg;
    in {
      imports = [inputs.sops.nixosModules.sops];

      config = {
        environment = {
          persist.directories = [path];
          systemPackages = [pkgs.sops];
        };

        sops = {
          gnupg.home = path;
          secrets = let
            directory = ./. + "/${config.networking.hostName}";
          in
            util.map.secrets {directory = ./.;}
            // (
              if (builtins.pathExists directory)
              then util.map.secrets {inherit directory;}
              else {}
            );
        };
      };
    };

    # Per-User Secrets
    homeManager.secrets = {config, ...}: {
      imports = [inputs.sops.homeManagerModules.sops];
      sops = {
        gnupg.home = "${config.home.homeDirectory}/.gnupg";
        secrets = let
          directory = ./user + "/${config.home.username}";
        in
          if (builtins.pathExists directory)
          then util.map.secrets {inherit directory;}
          else {};
      };
    };
  };
}