DashNix/modules/programs/keepassxc.nix

61 lines
2 KiB
Nix

{ lib, config, options, pkgs, ... }: {
options.mods.keepassxc = {
enable = lib.mkOption {
default = true;
example = false;
type = lib.types.bool;
description = "Enables the piper program and its daemon";
};
use_cache_config = lib.mkOption {
default = true;
example = false;
type = lib.types.bool;
description =
"Whether to overwrite the cache config of keepassxc. Note, this means that changes can't be applied via the program anymore!";
};
cache_config = lib.mkOption {
default = ''
[General]
LastDatabases=/home/dashie/Music/Passwords.kdbx
LastActiveDatabase=/home/dashie/Music/Passwords.kdbx
LastOpenedDatabases=/home/dashie/Music/Passwords.kdbx
LastKeyFiles=@Variant(\0\0\0\x1c\0\0\0\x1\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0P\0\x61\0s\0s\0w\0o\0r\0\x64\0s\0.\0k\0\x64\0\x62\0x\0\0\0\n\0\0\0\x42\0/\0h\0o\0m\0\x65\0/\0\x64\0\x61\0s\0h\0i\0\x65\0/\0M\0u\0s\0i\0\x63\0/\0l\0o\0g\0i\0n\0_\0k\0\x65\0y\0.\0k\0\x65\0y\0x)
'';
example = "";
type = lib.types.lines;
description = "Cache config to be used.";
};
};
config = lib.mkIf config.mods.keepassxc.enable
(lib.optionalAttrs (options ? home.file) {
home.packages = [ pkgs.keepassxc ];
xdg.configFile."keepassxc/keepassxc.ini" = {
text = ''
[General]
ConfigVersion=2
[Browser]
Enabled=true
[GUI]
ApplicationTheme=classic
HidePasswords=true
MinimizeOnClose=true
MinimizeToTray=true
ShowTrayIcon=true
TrayIconAppearance=monochrome-light
[PasswordGenerator]
Length=30
[Security]
EnableCopyOnDoubleClick=true
'';
};
home.file.".cache/keepassxc/keepassxc.ini" =
lib.mkIf config.mods.keepassxc.use_cache_config {
text = config.mods.keepassxc.cache_config;
};
});
}