aboutsummaryrefslogtreecommitdiff
path: root/home-manager/modules/programs/browserpass.nix
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2019-10-05 12:06:29 +0000
committerKatharina Fey <kookie@spacekookie.de>2019-10-05 12:42:50 +0000
commit1148b1d122bc03e9a3665856c9b7bb96bd4e3994 (patch)
tree1a9586de593790e236349d5caa0abdff7f3f6856 /home-manager/modules/programs/browserpass.nix
parent919d4e75699aa4ba456fd2d3d416a0522c9c7294 (diff)
parent8bddc1adab0f7a51476f819fa2197353e8e1d136 (diff)
Add 'home-manager/' from commit '8bddc1adab0f7a51476f819fa2197353e8e1d136'
git-subtree-dir: home-manager git-subtree-mainline: 919d4e75699aa4ba456fd2d3d416a0522c9c7294 git-subtree-split: 8bddc1adab0f7a51476f819fa2197353e8e1d136
Diffstat (limited to 'home-manager/modules/programs/browserpass.nix')
-rw-r--r--home-manager/modules/programs/browserpass.nix80
1 files changed, 80 insertions, 0 deletions
diff --git a/home-manager/modules/programs/browserpass.nix b/home-manager/modules/programs/browserpass.nix
new file mode 100644
index 00000000000..7af5e8f8756
--- /dev/null
+++ b/home-manager/modules/programs/browserpass.nix
@@ -0,0 +1,80 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ browsers = [
+ "chrome"
+ "chromium"
+ "firefox"
+ "vivaldi"
+ ];
+in {
+ options = {
+ programs.browserpass = {
+ enable = mkEnableOption "the browserpass extension host application";
+
+ browsers = mkOption {
+ type = types.listOf (types.enum browsers);
+ default = browsers;
+ example = [ "firefox" ];
+ description = "Which browsers to install browserpass for";
+ };
+ };
+ };
+
+ config = mkIf config.programs.browserpass.enable {
+ home.file = builtins.concatLists (with pkgs.stdenv; map (x:
+ if x == "chrome" then
+ let dir = if isDarwin
+ then "Library/Application Support/Google/Chrome/NativeMessagingHosts"
+ else ".config/google-chrome/NativeMessagingHosts";
+ in [
+ {
+ target = "${dir}/com.github.browserpass.native.json";
+ source = "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json";
+ }
+ {
+ target = "${dir}/../policies/managed/com.github.browserpass.native.json";
+ source = "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json";
+ }
+ ]
+ else if x == "chromium" then
+ let dir = if isDarwin
+ then "Library/Application Support/Chromium/NativeMessagingHosts"
+ else ".config/chromium/NativeMessagingHosts";
+ in [
+ {
+ target = "${dir}/com.github.browserpass.native.json";
+ source = "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json";
+ }
+ {
+ target = "${dir}/../policies/managed/com.github.browserpass.native.json";
+ source = "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json";
+ }
+ ]
+ else if x == "firefox" then
+ [ {
+ target = (if isDarwin
+ then "Library/Application Support/Mozilla/NativeMessagingHosts"
+ else ".mozilla/native-messaging-hosts")
+ + "/com.github.browserpass.native.json";
+ source = "${pkgs.browserpass}/lib/browserpass/hosts/firefox/com.github.browserpass.native.json";
+ } ]
+ else if x == "vivaldi" then
+ let dir = if isDarwin
+ then "Library/Application Support/Vivaldi/NativeMessagingHosts"
+ else ".config/vivaldi/NativeMessagingHosts";
+ in [
+ {
+ target = "${dir}/com.github.browserpass.native.json";
+ source = "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json";
+ }
+ {
+ target = "${dir}/../policies/managed/com.github.browserpass.native.json";
+ source = "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json";
+ }
+ ]
+ else throw "unknown browser ${x}") config.programs.browserpass.browsers);
+ };
+}