some changes
This commit is contained in:
parent
6dc16e88f1
commit
2c90f034e7
|
@ -142,7 +142,7 @@
|
||||||
importables = rec {
|
importables = rec {
|
||||||
profiles = digga.lib.rakeLeaves ./users/profiles;
|
profiles = digga.lib.rakeLeaves ./users/profiles;
|
||||||
suites = with profiles; rec {
|
suites = with profiles; rec {
|
||||||
base = [ direnv git ];
|
hmBase = [ direnv git ];
|
||||||
#gui = [ base profiles.firefox profiles.desktop ];
|
#gui = [ base profiles.firefox profiles.desktop ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,10 +5,13 @@
|
||||||
profiles.users.anish
|
profiles.users.anish
|
||||||
#profiles.users.profiles.firefox
|
#profiles.users.profiles.firefox
|
||||||
#profiles.users.profiles.desktop
|
#profiles.users.profiles.desktop
|
||||||
|
profiles.users.profiles.email
|
||||||
|
profiles.users.profiles.cal
|
||||||
|
profiles.mossnet-hosts
|
||||||
] ++ suites.curve;
|
] ++ suites.curve;
|
||||||
|
|
||||||
home-manager.users.anish = { suites, ... }: {
|
home-manager.users.anish = { self, suites, ... }: {
|
||||||
imports = suites.base;
|
imports = [ ] ++ suites.hmBase;
|
||||||
};
|
};
|
||||||
|
|
||||||
#bud.enable = true;
|
#bud.enable = true;
|
||||||
|
|
|
@ -101,7 +101,10 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# needed for vcv-rack
|
# needed for vcv-rack
|
||||||
nixpkgs.config.allowUnfree = true;
|
#nixpkgs.config.allowUnfree = true;
|
||||||
|
programs.gnupg.agent.enable = true;
|
||||||
|
programs.gnupg.agent.pinentryFlavor = "curses";
|
||||||
|
programs.gnupg.agent.enableSSHSupport = false;
|
||||||
|
|
||||||
#system.copySystemConfiguration = true;
|
#system.copySystemConfiguration = true;
|
||||||
#services.syncthing = {
|
#services.syncthing = {
|
||||||
|
|
|
@ -186,6 +186,7 @@ in
|
||||||
interactiveShellInit = ''
|
interactiveShellInit = ''
|
||||||
eval "$(${pkgs.direnv}/bin/direnv hook bash)"
|
eval "$(${pkgs.direnv}/bin/direnv hook bash)"
|
||||||
'';
|
'';
|
||||||
|
enableCompletion = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# For rage encryption, all hosts need a ssh key pair
|
# For rage encryption, all hosts need a ssh key pair
|
||||||
|
@ -194,6 +195,9 @@ in
|
||||||
openFirewall = lib.mkDefault false;
|
openFirewall = lib.mkDefault false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.gnupg.agent.enable = true;
|
||||||
|
programs.gnupg.agent.pinentryFlavor = "curses";
|
||||||
|
|
||||||
services.earlyoom.enable = true;
|
services.earlyoom.enable = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,12 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
#imports = [ ./music.nix ]
|
#imports = [ ./music.nix ]
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
nheko
|
||||||
|
newsflash
|
||||||
|
sublime-music
|
||||||
|
tdesktop
|
||||||
|
];
|
||||||
# environment.systemPackages = with pkgs; [
|
# environment.systemPackages = with pkgs; [
|
||||||
# lightdm
|
# lightdm
|
||||||
# dunst
|
# dunst
|
||||||
|
|
309
profiles/matrix/default.nix
Normal file
309
profiles/matrix/default.nix
Normal file
|
@ -0,0 +1,309 @@
|
||||||
|
{
|
||||||
|
security.acme.email = "anish+acme@lakhwara.com";
|
||||||
|
security.acme.acceptTerms = true;
|
||||||
|
services.matrix-synapse = {
|
||||||
|
enable = true;
|
||||||
|
app_service_config_files = [
|
||||||
|
# # The registration file is automatically generated after starting the appservice for the first time.
|
||||||
|
# # cp /var/lib/matrix-appservice-discord/discord-registration.yaml /var/lib/matrix-synapse/
|
||||||
|
# # chown matrix-synapse:matrix-synapse /var/lib/matrix-synapse/discord-registration.yaml
|
||||||
|
# "/var/lib/matrix-synapse/discord-registration.yaml"
|
||||||
|
# "/var/lib/matrix-synapse/telegram-registration.yaml"
|
||||||
|
# "/var/lib/matrix-synapse/slack-registration.yaml"
|
||||||
|
# # "/var/lib/matrix-synapse/whatsapp-registration.yaml"
|
||||||
|
];
|
||||||
|
server_name = "sealight.xyz";
|
||||||
|
registration_shared_secret = "hD9HQGTTDxp0mQsQ5JDsfudWMDiubmZENOgPchIvfBvUlPxlvQSvjoO4wn2L1seU"; # TODO use agnix
|
||||||
|
enable_metrics = true;
|
||||||
|
enable_registration = true;
|
||||||
|
database_type = "psycopg2";
|
||||||
|
database_args = {
|
||||||
|
database = "matrix-synapse";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
max_upload_size: "50M"
|
||||||
|
use_presence: false
|
||||||
|
'';
|
||||||
|
## coturn based TURN server integration (TURN server setup mentioned later),
|
||||||
|
## shared secret generated while configuring coturn
|
||||||
|
## and reused here (power of Nix being a real programming language)
|
||||||
|
turn_uris = [
|
||||||
|
"turn:turn.sealight.xyz:3478?transport=udp"
|
||||||
|
"turn:turn.sealight.xyz:3478?transport=tcp"
|
||||||
|
];
|
||||||
|
turn_shared_secret = config.services.coturn.static-auth-secret;
|
||||||
|
|
||||||
|
listeners = [
|
||||||
|
{
|
||||||
|
port = 8448;
|
||||||
|
tls = false;
|
||||||
|
resources = [{
|
||||||
|
compress = true;
|
||||||
|
names = ["client" "federation"];
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
port = 9090;
|
||||||
|
type = "metrics";
|
||||||
|
bind_address = "0.0.0.0";
|
||||||
|
resources = [{
|
||||||
|
compress = false;
|
||||||
|
names = [];
|
||||||
|
}];
|
||||||
|
tls = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.coturn = {
|
||||||
|
enable = true;
|
||||||
|
use-auth-secret = true;
|
||||||
|
static-auth-secret = "jXW1ohIq6wM3NB00xeME3uBihY85xjpkhGoyzBIdwhOpj7gjyxXZu1fwp1lUiYwJ";
|
||||||
|
realm = "turn.sealight.xyz";
|
||||||
|
no-tcp-relay = true;
|
||||||
|
no-tls = true;
|
||||||
|
no-dtls = true;
|
||||||
|
extraConfig = ''
|
||||||
|
user-quota=12
|
||||||
|
total-quota=1200
|
||||||
|
denied-peer-ip=10.0.0.0-10.255.255.255
|
||||||
|
denied-peer-ip=192.168.0.0-192.168.255.255
|
||||||
|
denied-peer-ip=172.16.0.0-172.31.255.255
|
||||||
|
|
||||||
|
allowed-peer-ip=192.168.191.127
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.jitsi-meet = {
|
||||||
|
enable = true;
|
||||||
|
hostName = "jitsi.sealight.xyz";
|
||||||
|
|
||||||
|
## this setting is going to add relevant ports to
|
||||||
|
## networking.firewall.allowedTCPPorts &
|
||||||
|
## networking.firewall.allowedUDPPorts
|
||||||
|
};
|
||||||
|
services.jitsi-videobridge.enable = true;
|
||||||
|
|
||||||
|
services.mautrix-telegram = {
|
||||||
|
enable = true;
|
||||||
|
environmentFile = /etc/secrets/telegram.env; # file containing the appservice and telegram tokens
|
||||||
|
# The appservice is pre-configured to use SQLite by default. It's also possible to use PostgreSQL.
|
||||||
|
settings = {
|
||||||
|
homeserver = {
|
||||||
|
address = "https://chat.sealight.xyz";
|
||||||
|
domain = "sealight.xyz";
|
||||||
|
};
|
||||||
|
appservice = {
|
||||||
|
provisioning.enabled = false;
|
||||||
|
id = "telegram";
|
||||||
|
public = {
|
||||||
|
enabled = false;
|
||||||
|
prefix = "/public";
|
||||||
|
external = "https://chat.sealight.xyz/public";
|
||||||
|
};
|
||||||
|
# The service uses SQLite by default, but it's also possible to use PostgreSQL instead:
|
||||||
|
#database = "postgresql:///mautrix-telegram?host=/run/postgresql";
|
||||||
|
};
|
||||||
|
bridge = {
|
||||||
|
relaybot.authless_portals = false;
|
||||||
|
permissions = {
|
||||||
|
"@aynish:sealight.xyz" = "admin";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mautrix-whatsapp = {
|
||||||
|
enable = true;
|
||||||
|
# The appservice is pre-configured to use SQLite by default. It's also possible to use PostgreSQL.
|
||||||
|
configOptions = {
|
||||||
|
homeserver = {
|
||||||
|
address = "https://chat.sealight.xyz";
|
||||||
|
domain = "sealight.xyz";
|
||||||
|
};
|
||||||
|
appservice = {
|
||||||
|
id = "whatsapp";
|
||||||
|
address = http://localhost:9897;
|
||||||
|
hostname = "0.0.0.0";
|
||||||
|
port = 9897;
|
||||||
|
database = {
|
||||||
|
type = "sqlite3";
|
||||||
|
uri = "/var/lib/mautrix-whatsapp/mautrix-whatsapp.db";
|
||||||
|
};
|
||||||
|
state_store_path = "/var/lib/mautrix-whatsapp/mx-state.json";
|
||||||
|
bot = {
|
||||||
|
username = "whatsappbot";
|
||||||
|
displayname = "WhatsApp bridge bot";
|
||||||
|
avatar = "mxc://maunium.net/NeXNQarUbrlYBiPCpprYsRqr";
|
||||||
|
};
|
||||||
|
as_token = "";
|
||||||
|
hs_token = "";
|
||||||
|
};
|
||||||
|
bridge = {
|
||||||
|
username_template = "whatsapp_{{.}}";
|
||||||
|
displayname_template = "{{if .Notify}}{{.Notify}}{{else}}{{.Jid}}{{end}} (WA)";
|
||||||
|
command_prefix = "!wa";
|
||||||
|
permissions = {
|
||||||
|
"@aynish:sealight.xyz" = 100;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
logging = {
|
||||||
|
directory = "/var/lib/mautrix-whatsapp/logs";
|
||||||
|
file_name_format = "{{.Date}}-{{.Index}}.log";
|
||||||
|
file_date_format = "\"2006-01-02\"";
|
||||||
|
file_mode = 384;
|
||||||
|
timestamp_format = "Jan _2, 2006 15:04:05";
|
||||||
|
print_level = "debug";
|
||||||
|
};
|
||||||
|
metrics = {
|
||||||
|
enabled = true;
|
||||||
|
listen = "http://localhost:5070";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.matrix-appservice-slack = {
|
||||||
|
enable = true;
|
||||||
|
#environmentFile = /etc/secrets/matrix-appservice-slack.env;
|
||||||
|
settings = {
|
||||||
|
homeserver = {
|
||||||
|
server_name = "sealight.xyz";
|
||||||
|
url = "https://chat.sealight.xyz";
|
||||||
|
};
|
||||||
|
db = {
|
||||||
|
engine = "postgres";
|
||||||
|
connectionString = "postgres://slackbridge_user:somethingverysecret@localhost/slack_bridge?sslmode=require";
|
||||||
|
};
|
||||||
|
matrix_admin_room = "!ikEWOHCcmoZtVzSmPF:sealight.xyz";
|
||||||
|
username_prefix = "slack_";
|
||||||
|
rtm = {
|
||||||
|
enable = true;
|
||||||
|
logging = "silent";
|
||||||
|
};
|
||||||
|
slack_hook_port = 9899;
|
||||||
|
enable_metrics = true;
|
||||||
|
puppeting = {
|
||||||
|
enabled = true;
|
||||||
|
onboard_users = true;
|
||||||
|
};
|
||||||
|
oauth2 = {
|
||||||
|
client_id = "2832868673.1609454840563";
|
||||||
|
client_secret = "079a7ca42b192e66a9ff32740a69cb9d";
|
||||||
|
redirect_prefix = "https://sealight.xyz/slackbridge/";
|
||||||
|
};
|
||||||
|
#team_sync = {
|
||||||
|
# T02QGRJKT = {
|
||||||
|
# users = {
|
||||||
|
# enabled = false;
|
||||||
|
# };
|
||||||
|
# channels = {
|
||||||
|
# enabled = true;
|
||||||
|
# alias_prefix = "qf_";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
#};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.postgresql = {
|
||||||
|
enable = true;
|
||||||
|
## postgresql user and db name remains in the
|
||||||
|
## service.matrix-synapse.database_args setting which
|
||||||
|
## by default is matrix-synapse
|
||||||
|
initialScript = pkgs.writeText "synapse-init.sql" ''
|
||||||
|
CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD "Da0?H*9i{x?,]|'kq@iBwlIzu";
|
||||||
|
CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse"
|
||||||
|
TEMPLATE template0
|
||||||
|
LC_COLLATE = "C"
|
||||||
|
LC_CTYPE = "C";
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [
|
||||||
|
22 # SSH
|
||||||
|
8448 # Matrix federation
|
||||||
|
8008
|
||||||
|
80
|
||||||
|
443
|
||||||
|
9090 # Synapse Metrics
|
||||||
|
9899 # Matrix <-> Slack Bridge Puppeting
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
element-web = super.element-web.override {
|
||||||
|
conf = {
|
||||||
|
default_server_config = {
|
||||||
|
"m.homeserver" = {
|
||||||
|
"base_url" = "https://chat.sealight.xyz";
|
||||||
|
"server_name" = "sealight.xyz";
|
||||||
|
};
|
||||||
|
"m.identity_server" = {
|
||||||
|
"base_url" = "https://vector.im";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
## jitsi will be setup later,
|
||||||
|
## but we need to add to Riot configuration
|
||||||
|
jitsi.preferredDomain = "jitsi.sealight.xyz";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts = {
|
||||||
|
|
||||||
|
"sealight.xyz" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
root = "/var/www/sealight.xyz";
|
||||||
|
};
|
||||||
|
locations."/_matrix" = {
|
||||||
|
proxyPass = "http://localhost:8448";
|
||||||
|
};
|
||||||
|
locations."/slackbridge" = {
|
||||||
|
proxyPass = "http://localhost:9899";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
## virtual host for Synapse
|
||||||
|
"chat.sealight.xyz" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
#useACMEHost = "sealight.xyz";
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:8448";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
## virtual host for Riot/Web
|
||||||
|
"element.sealight.xyz" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
#useACMEHost = "sealight.xyz";
|
||||||
|
|
||||||
|
## root points to the riot-web package content, also configured via Nix
|
||||||
|
locations."/" = {
|
||||||
|
root = pkgs.element-web;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
${config.services.jitsi-meet.hostName} = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
## other nginx specific best practices
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [ matrix-appservice-slack ];
|
||||||
|
}
|
7
profiles/mossnet-hosts/default.nix
Normal file
7
profiles/mossnet-hosts/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
networking.extraHosts = ''
|
||||||
|
172.16.11.240 mossnet.lan
|
||||||
|
172.16.11.240 links.mossnet.lan
|
||||||
|
172.16.11.240 read.mossnet.lan
|
||||||
|
'';
|
||||||
|
}
|
9
secrets/fastmail.age
Normal file
9
secrets/fastmail.age
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 E8y8hg wa7dEOcDQKqi3zTAkZQy4/dYZZ0oUVX8v5WeSpxs/A4
|
||||||
|
nznzTXatP4LCEAFgJR66rCjEzOV7ifRttTGZmmP9c2w
|
||||||
|
-> ssh-ed25519 AiezdQ dznLcf8z/LGX5GmAkgEtAMePomkelBGJn6Xda2qWGgQ
|
||||||
|
dce7/xpxFvpbynT5THAnLrdGoKCsiPHMf4pb87rv4DM
|
||||||
|
-> JCA\o-grease =d\4"
|
||||||
|
xjWZZedUIwPV8E0tPMlUz9XRm+BxsT+dYdf2Zw
|
||||||
|
--- blJDPOKPAxBqYQN3WHiF/KGW9sNCPpckWY2hEmf8p4c
|
||||||
|
-´Å<C2B4>ŒµÝ•!Íç++‹ôãöƒ‚:ä궾hAxÂ=$™Í…§üÐRpVN
|
9
secrets/mossnet.age
Normal file
9
secrets/mossnet.age
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 E8y8hg zUl7tdxWGLDPiv9cX9/vTITX+H+rqgVSZ77YFZUQzBQ
|
||||||
|
ZW9d2bKCo969jT1HWKw8tPSlYJpjm8T7mbcztPVWdyA
|
||||||
|
-> ssh-ed25519 AiezdQ Gb5IB4nHlyBsjIgt52/BL7lcWZFEWly26HND0I/Q824
|
||||||
|
VyTx5jzEhsekC87qejQsfJGcHNlt0VghloDT+AVo9rQ
|
||||||
|
-> Nbgn:*-grease
|
||||||
|
5IfKwbqa8Yrv5zz2Vcy98A
|
||||||
|
--- D26v86VajBn6V2Go1nnNdBBwe7K+rLiVw5MVvAob/dk
|
||||||
|
Ò<EFBFBD>@™=s`Ð6¼2ïZã‡ÈÞ‚€ŸÁO:Õ¼í30r«S©éÌüó€o•=Ã]
|
|
@ -1,9 +1,10 @@
|
||||||
let
|
let
|
||||||
# set ssh public keys here for your system and user
|
# set ssh public keys here for your system and user
|
||||||
system = "";
|
user = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIItTdCyYVur6LzRQf08JZUcEAr23H7fTRRmDJOzoOc6A anish@curve";
|
||||||
user = "";
|
system = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIMPcqWQ/L5nLTsBFHArl3AJb9xynhfsKenb5h0NNuMV root@curve";
|
||||||
allKeys = [ system user ];
|
allKeys = [ system user ];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
"secret.age".publicKeys = allKeys;
|
"fastmail.age".publicKeys = allKeys;
|
||||||
|
"mossnet.age".publicKeys = allKeys;
|
||||||
}
|
}
|
||||||
|
|
102
users/profiles/cal/default.nix
Normal file
102
users/profiles/cal/default.nix
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
{pkgs, config, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
age.secrets.mossnet.file = "/etc/nixos/secrets/mossnet.age";
|
||||||
|
age.secrets.mossnet.owner = "anish";
|
||||||
|
home-manager.users.anish = {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
khal
|
||||||
|
khard
|
||||||
|
vdirsyncer
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
"vdirsyncer/config".text = ''
|
||||||
|
[general]
|
||||||
|
status_path = "/home/anish/.config/vdirsyncer/status/"
|
||||||
|
|
||||||
|
[pair contacts]
|
||||||
|
a = "contacts_local"
|
||||||
|
b = "contacts_remote"
|
||||||
|
collections = ["from a", "from b"]
|
||||||
|
metadata = ["displayname"]
|
||||||
|
|
||||||
|
[storage contacts_local]
|
||||||
|
type = "filesystem"
|
||||||
|
path = "~/.contacts/"
|
||||||
|
fileext = ".vcf"
|
||||||
|
|
||||||
|
[storage contacts_remote]
|
||||||
|
type = "carddav"
|
||||||
|
url = "http://mossnet.lan/remote.php/dav/files/anish/"
|
||||||
|
username = "anish"
|
||||||
|
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
|
||||||
|
|
||||||
|
[pair calendar]
|
||||||
|
a = "calendar_local"
|
||||||
|
b = "calendar_remote"
|
||||||
|
collections = ["from a", "from b"]
|
||||||
|
metadata = ["displayname"]
|
||||||
|
|
||||||
|
[storage calendar_local]
|
||||||
|
type = "filesystem"
|
||||||
|
path = "~/.calendar/"
|
||||||
|
fileext = ".ics"
|
||||||
|
|
||||||
|
[storage calendar_remote]
|
||||||
|
type = "caldav"
|
||||||
|
url = "http://mossnet.lan/remote.php/dav/files/anish/"
|
||||||
|
username = "anish"
|
||||||
|
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
|
||||||
|
'';
|
||||||
|
|
||||||
|
"khal/config".text = ''
|
||||||
|
[calendars]
|
||||||
|
|
||||||
|
[[calendar_local]]
|
||||||
|
path = ~/.calendar/*
|
||||||
|
type = discover
|
||||||
|
|
||||||
|
[[contacts_local]]
|
||||||
|
path = ~/.contacts/*
|
||||||
|
type = birthdays
|
||||||
|
|
||||||
|
[locale]
|
||||||
|
timeformat = %H:%M
|
||||||
|
dateformat = %Y-%m-%d
|
||||||
|
longdateformat = %Y-%m-%d
|
||||||
|
datetimeformat = %Y-%m-%d %H:%M
|
||||||
|
longdatetimeformat = %Y-%m-%d %H:%M
|
||||||
|
'';
|
||||||
|
|
||||||
|
"khard/khard.conf".text = ''
|
||||||
|
[addressbooks]
|
||||||
|
[[personal]]
|
||||||
|
path = ~/.contacts/*
|
||||||
|
|
||||||
|
[general]
|
||||||
|
debug = no
|
||||||
|
default_action = list
|
||||||
|
editor = nvim, -i, NONE
|
||||||
|
merge_editor = nvim, -d
|
||||||
|
|
||||||
|
[contact table]
|
||||||
|
display = first_name
|
||||||
|
group_by_addressbook = no
|
||||||
|
reverse = no
|
||||||
|
show_nicknames = yes
|
||||||
|
show_uids = no
|
||||||
|
sort = last_name
|
||||||
|
localize_dates = yes
|
||||||
|
preferred_phone_number_type = pref, cell, home
|
||||||
|
preferred_email_address_type = pref, home, work
|
||||||
|
|
||||||
|
[vcard]
|
||||||
|
private_objects = Jabber,
|
||||||
|
preferred_version = 3.0
|
||||||
|
search_in_source_files = no
|
||||||
|
skip_unparsable = no
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
68
users/profiles/desktop/bin/passmenu
Executable file
68
users/profiles/desktop/bin/passmenu
Executable file
|
@ -0,0 +1,68 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Prompts for a pass entry, then for a specific field. Similar to passmenu, but
|
||||||
|
# uses rofi, and can resume from a previous session.
|
||||||
|
#
|
||||||
|
# Example: passmenu [RESUME]
|
||||||
|
|
||||||
|
ROFI_CMD='rofi -dmenu -theme theme/passmenu.rasi'
|
||||||
|
MSG_CMD='notify-send'
|
||||||
|
set -e
|
||||||
|
shopt -s nullglob globstar
|
||||||
|
|
||||||
|
for prog in xclip pass; do
|
||||||
|
if ! command -v "$prog" >/dev/null; then
|
||||||
|
>&2 echo "$prog not installed, aborting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $1 == -r ]]; then
|
||||||
|
resume=1; shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
url=
|
||||||
|
# Get qutebrowser's current url
|
||||||
|
win=$(xdotool getactivewindow)
|
||||||
|
if [[ -n $win ]]; then
|
||||||
|
winname=$(xdotool getwindowname $win)
|
||||||
|
if [[ $winname =~ " - Mozilla Firefox$" ]]; then
|
||||||
|
url=${winname% - Mozilla*}
|
||||||
|
url=${url##* - }
|
||||||
|
while (( ${#url//[^.]/} > 1 )); do
|
||||||
|
url=${url#*.}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
LAST_ENTRY_FILE=/tmp/_upm
|
||||||
|
if [[ -n $resume && -f $LAST_ENTRY_FILE ]]; then
|
||||||
|
entry="$(<$LAST_ENTRY_FILE)"
|
||||||
|
else
|
||||||
|
prefix=${PASSWORD_STORE_DIR-~/.password-store}
|
||||||
|
password_files=( "$prefix"/**/*.gpg )
|
||||||
|
password_files=( "${password_files[@]#"$prefix"/}" )
|
||||||
|
password_files=( "${password_files[@]%.gpg}" )
|
||||||
|
entry=$(printf "%s\n" "${password_files[@]}" | $ROFI_CMD -p "..." -filter "$url")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $entry ]]; then
|
||||||
|
$MSG_CMD "Error!" "Failed to select $entry"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$entry" >/tmp/_upm
|
||||||
|
secrets="$(pass show "$entry")"
|
||||||
|
if [[ -n $secrets ]]; then
|
||||||
|
fields=$(awk -F': ' 'NR>1 && !/^otpauth:/ {print $1}' <<<"$secrets")
|
||||||
|
field=$(printf "password\n%s\notp\n" "${fields[@]}" | $ROFI_CMD -p "$entry")
|
||||||
|
case $field in
|
||||||
|
password) pass -c "$entry" ;;
|
||||||
|
otp) printf "%s" "$(pass otp -c "$entry")" ;;
|
||||||
|
*) printf "%s" "$(awk -v "key=$field:" '$1 == key {print $2}' <<<"$secrets")" | xclip -selection clipboard -in ;;
|
||||||
|
esac
|
||||||
|
$MSG_CMD "Success!" "Copied <b>$entry/$field</b> to clipboard for 45s"
|
||||||
|
else
|
||||||
|
$MSG_CMD "Error!" "Failed to retrieve $entry"
|
||||||
|
exit 2
|
||||||
|
fi
|
31
users/profiles/desktop/bin/powermenu
Executable file
31
users/profiles/desktop/bin/powermenu
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
rofi_command="rofi -theme theme/powermenu.rasi"
|
||||||
|
|
||||||
|
### Options ###
|
||||||
|
power_off="\tShutdown"
|
||||||
|
reboot="\tReboot"
|
||||||
|
lock="\tLock"
|
||||||
|
suspend="鈴\tSleep"
|
||||||
|
log_out="\tLogout"
|
||||||
|
# Variable passed to rofi
|
||||||
|
options="$power_off\n$reboot\n$lock\n$suspend\n$log_out"
|
||||||
|
|
||||||
|
case "$(echo -e "$options" | $rofi_command -dmenu -selected-row 2)" in
|
||||||
|
$power_off)
|
||||||
|
systemctl poweroff
|
||||||
|
;;
|
||||||
|
$reboot)
|
||||||
|
systemctl reboot
|
||||||
|
;;
|
||||||
|
$lock)
|
||||||
|
zzz
|
||||||
|
;;
|
||||||
|
$suspend)
|
||||||
|
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
|
||||||
|
systemctl suspend
|
||||||
|
;;
|
||||||
|
$log_out)
|
||||||
|
bspc quit
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -1,9 +1,10 @@
|
||||||
{pkgs, ...}:
|
{pkgs, config, ...}:
|
||||||
|
|
||||||
{
|
{
|
||||||
#imports = [ ./xdg.nix ];
|
#imports = [ ./xdg.nix ];
|
||||||
|
|
||||||
home-manager.users.anish.xdg.enable = true; # This doesn't seem to do anything so we have below
|
home-manager.users.anish.xdg.enable = true; # This doesn't seem to do anything so we have below
|
||||||
|
home-manager.users.anish.xdg.configHome = "/home/anish/.config"; # TODO bad hard coded
|
||||||
environment.sessionVariables = rec {
|
environment.sessionVariables = rec {
|
||||||
XDG_CACHE_HOME = "\${HOME}/.cache";
|
XDG_CACHE_HOME = "\${HOME}/.cache";
|
||||||
XDG_CONFIG_HOME = "\${HOME}/.config";
|
XDG_CONFIG_HOME = "\${HOME}/.config";
|
||||||
|
@ -15,7 +16,12 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
nheko # TODO move somewhere meaningful
|
# TODO move somewhere meaningful
|
||||||
|
tdesktop # TODO get rid of this once bridged on sealight
|
||||||
|
sublime-music
|
||||||
|
nheko
|
||||||
|
newsflash
|
||||||
|
zeal
|
||||||
xclip
|
xclip
|
||||||
xdotool
|
xdotool
|
||||||
rofi
|
rofi
|
||||||
|
@ -182,6 +188,8 @@
|
||||||
gtk-icon-theme-name=Paper
|
gtk-icon-theme-name=Paper
|
||||||
gtk-font-name="Sans 10"
|
gtk-font-name="Sans 10"
|
||||||
'';
|
'';
|
||||||
|
"$XDG_BIN_HOME/passmenu".source = ./bin/passmenu;
|
||||||
|
"$XDG_BIN_HOME/powermenu".source = ./bin/powermenu;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,10 +38,13 @@ super + Tab
|
||||||
rofi -show window -show-icons -theme theme/windowmenu.rasi
|
rofi -show window -show-icons -theme theme/windowmenu.rasi
|
||||||
|
|
||||||
super + p
|
super + p
|
||||||
$DOTFILES_BIN/rofi/passmenu
|
passmenu
|
||||||
|
|
||||||
super + slash
|
super + slash
|
||||||
$DOTFILES_BIN/rofi/filemenu -x
|
filemenu -x
|
||||||
|
|
||||||
|
super + s
|
||||||
|
powermenu
|
||||||
|
|
||||||
super + Escape
|
super + Escape
|
||||||
pkill -USR1 -x sxhkd
|
pkill -USR1 -x sxhkd
|
||||||
|
|
280
users/profiles/email/default.nix
Normal file
280
users/profiles/email/default.nix
Normal file
|
@ -0,0 +1,280 @@
|
||||||
|
{pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
age.secrets.fastmail.file = "/etc/nixos/secrets/fastmail.age";
|
||||||
|
age.secrets.fastmail.owner = "anish";
|
||||||
|
home-manager.users.anish = {
|
||||||
|
services.mbsync = {
|
||||||
|
enable = true;
|
||||||
|
frequency = "*:0/30";
|
||||||
|
postExec = "${pkgs.notmuch}/bin/notmuch index";
|
||||||
|
};
|
||||||
|
programs.mbsync.enable = true;
|
||||||
|
programs.msmtp.enable = true;
|
||||||
|
programs.notmuch = {
|
||||||
|
enable = true;
|
||||||
|
hooks = {
|
||||||
|
preNew = "mbsync --all";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.neomutt = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
# Shamelessly Stolen from https://gideonwolfe.com/posts/workflow/neomutt/intro/
|
||||||
|
# set editor to neovim
|
||||||
|
set editor = "nvim"
|
||||||
|
# Folder with emails
|
||||||
|
set folder = "~/Mail/anish"
|
||||||
|
# Type of mailbox
|
||||||
|
set mbox_type = Maildir
|
||||||
|
# Directory to poll for new mail
|
||||||
|
set spoolfile = +Inbox
|
||||||
|
# Directory to save sent messages into
|
||||||
|
set record = +Sent
|
||||||
|
# Sets the drafts folder
|
||||||
|
set postponed = +Drafts
|
||||||
|
# File that headers will be cached
|
||||||
|
# set header_cache = ~/.cache/mutt
|
||||||
|
|
||||||
|
set my_name = "Anish"
|
||||||
|
set imap_check_subscribed
|
||||||
|
|
||||||
|
# Set preffered view modes
|
||||||
|
auto_view text/html text/calendar application/ics # view html automatically
|
||||||
|
# alternative_order text/html text/plain text/enriched text/*
|
||||||
|
|
||||||
|
# main options
|
||||||
|
set envelope_from
|
||||||
|
set edit_headers # show headers when composing
|
||||||
|
set fast_reply # skip to compose when replying
|
||||||
|
set askcc # ask for CC:
|
||||||
|
set fcc_attach # save attachments with the body
|
||||||
|
set forward_format = "Fwd: %s" # format of subject when forwarding
|
||||||
|
set forward_decode # decode when forwarding
|
||||||
|
set attribution = "On %d, %n wrote:" # format of quoting header
|
||||||
|
set reply_to # reply to Reply to: field
|
||||||
|
set reverse_name # reply as whomever it was to
|
||||||
|
set include # include message in replies
|
||||||
|
set forward_quote # include message in forwards
|
||||||
|
set text_flowed
|
||||||
|
unset sig_dashes # no dashes before sig
|
||||||
|
unset mime_forward # forward attachments as part of body
|
||||||
|
unset help # No help bar at the top of index
|
||||||
|
# set status_on_top # Status bar on top of index
|
||||||
|
set tmpdir = ~/Programs/neomutt/temp # where to keep temp files
|
||||||
|
|
||||||
|
unset confirmappend # don't ask, just do!
|
||||||
|
set quit # don't ask, just do!!
|
||||||
|
unset mark_old # read/new is good enough for me
|
||||||
|
#set beep_new # bell on new mails
|
||||||
|
set pipe_decode # strip headers and eval mimes when piping
|
||||||
|
set thorough_search # strip headers and eval mimes before searching
|
||||||
|
set timeout = 0
|
||||||
|
|
||||||
|
# status bar, date format, finding stuff etc.
|
||||||
|
set status_chars = " *%A"
|
||||||
|
set status_format = "[ Folder: %f ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
|
||||||
|
set date_format = "%d.%m.%Y %H:%M"
|
||||||
|
set sort = threads
|
||||||
|
set sort_aux = reverse-last-date-received
|
||||||
|
set uncollapse_jump
|
||||||
|
set sort_re
|
||||||
|
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
||||||
|
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
||||||
|
set send_charset = "utf-8:iso-8859-1:us-ascii"
|
||||||
|
set charset = "utf-8"
|
||||||
|
set arrow_cursor = "no" # Change `color indicator` depending
|
||||||
|
|
||||||
|
# Pager View Options
|
||||||
|
set pager_index_lines = 10 # Shows 10 lines of index when pager is active
|
||||||
|
set pager_context = 3
|
||||||
|
set pager_stop
|
||||||
|
set menu_scroll
|
||||||
|
set tilde
|
||||||
|
unset markers
|
||||||
|
|
||||||
|
#set mailcap_path = ~/.config/neomutt/mailcap
|
||||||
|
#set header_cache = "~/.cache/mutt"
|
||||||
|
#set message_cachedir = "~/.cache/mutt"
|
||||||
|
|
||||||
|
set query_command = "khard email --parsable --search-in-source-files '%s'"
|
||||||
|
|
||||||
|
### Color Settings
|
||||||
|
# Header colors:
|
||||||
|
color header blue default ".*"
|
||||||
|
color header brightmagenta default "^(From)"
|
||||||
|
color header brightcyan default "^(Subject)"
|
||||||
|
color header brightwhite default "^(CC|BCC)"
|
||||||
|
|
||||||
|
mono bold bold
|
||||||
|
mono underline underline
|
||||||
|
mono indicator reverse
|
||||||
|
mono error bold
|
||||||
|
color normal default default
|
||||||
|
color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space.
|
||||||
|
color sidebar_highlight red default
|
||||||
|
color sidebar_divider brightblack black
|
||||||
|
color sidebar_flagged red black
|
||||||
|
color sidebar_new green black
|
||||||
|
color normal brightyellow default
|
||||||
|
color error red default
|
||||||
|
color tilde black default
|
||||||
|
color message cyan default
|
||||||
|
color markers red white
|
||||||
|
color attachment white default
|
||||||
|
color search brightmagenta default
|
||||||
|
color status brightyellow black
|
||||||
|
color hdrdefault brightgreen default
|
||||||
|
color quoted green default
|
||||||
|
color quoted1 blue default
|
||||||
|
color quoted2 cyan default
|
||||||
|
color quoted3 yellow default
|
||||||
|
color quoted4 red default
|
||||||
|
color quoted5 brightred default
|
||||||
|
color signature brightgreen default
|
||||||
|
color bold black default
|
||||||
|
color underline black default
|
||||||
|
color normal default default
|
||||||
|
|
||||||
|
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
||||||
|
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
||||||
|
color body green default "\`[^\`]*\`" # Green text between ` and `
|
||||||
|
color body brightblue default "^# \.*" # Headings as bold blue
|
||||||
|
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
||||||
|
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
||||||
|
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
||||||
|
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
||||||
|
color body brightcyan default "[;:][)(|]" # emoticons
|
||||||
|
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
||||||
|
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
||||||
|
color body red default "(BAD signature)"
|
||||||
|
color body cyan default "(Good signature)"
|
||||||
|
color body brightblack default "^gpg: Good signature .*"
|
||||||
|
color body brightyellow default "^gpg: "
|
||||||
|
color body brightyellow red "^gpg: BAD signature from.*"
|
||||||
|
mono body bold "^gpg: Good signature"
|
||||||
|
mono body bold "^gpg: BAD signature from.*"
|
||||||
|
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
|
||||||
|
|
||||||
|
# Default index colors:
|
||||||
|
color index yellow default '.*'
|
||||||
|
color index_author red default '.*'
|
||||||
|
color index_number blue default
|
||||||
|
color index_subject cyan default '.*'
|
||||||
|
|
||||||
|
# For new mail:
|
||||||
|
color index brightyellow black "~N"
|
||||||
|
color index_author brightred black "~N"
|
||||||
|
color index_subject brightcyan black "~N"
|
||||||
|
|
||||||
|
color progress black cyan
|
||||||
|
|
||||||
|
### Mappings Settings
|
||||||
|
|
||||||
|
# General rebindings
|
||||||
|
bind attach <return> view-mailcap
|
||||||
|
bind attach l view-mailcap
|
||||||
|
bind editor <space> noop
|
||||||
|
bind pager c imap-fetch-mail
|
||||||
|
bind index G last-entry
|
||||||
|
bind index g noop
|
||||||
|
bind index gg first-entry
|
||||||
|
bind pager,attach h exit
|
||||||
|
bind pager j next-line
|
||||||
|
bind pager k previous-line
|
||||||
|
bind pager l view-attachments
|
||||||
|
bind index D delete-message
|
||||||
|
bind index U undelete-message
|
||||||
|
bind index L limit
|
||||||
|
bind index h noop
|
||||||
|
bind index l display-message
|
||||||
|
bind browser h goto-parent
|
||||||
|
bind browser l select-entry
|
||||||
|
bind pager,browser gg top-page
|
||||||
|
bind pager,browser G bottom-page
|
||||||
|
bind index,pager,browser d half-down
|
||||||
|
bind index,pager,browser u half-up
|
||||||
|
bind index,pager R group-reply
|
||||||
|
bind index \031 previous-undeleted # Mouse wheel
|
||||||
|
bind index \005 next-undeleted # Mouse wheel
|
||||||
|
bind pager \031 previous-line # Mouse wheel
|
||||||
|
bind pager \005 next-line # Mouse wheel
|
||||||
|
bind editor <Tab> complete-query
|
||||||
|
|
||||||
|
|
||||||
|
# sidebar mappings
|
||||||
|
bind index,pager \Ck sidebar-prev
|
||||||
|
bind index,pager \Cj sidebar-next
|
||||||
|
bind index,pager \Co sidebar-open
|
||||||
|
bind index,pager \Cp sidebar-prev-new
|
||||||
|
bind index,pager \Cn sidebar-next-new
|
||||||
|
bind index,pager B sidebar-toggle-visible
|
||||||
|
|
||||||
|
# global index and pager shortcuts
|
||||||
|
bind index,pager @ compose-to-sender
|
||||||
|
bind index,pager D purge-message
|
||||||
|
bind index <tab> sync-mailbox
|
||||||
|
bind index <space> collapse-thread
|
||||||
|
|
||||||
|
# Email completion bindings
|
||||||
|
bind editor <Tab> complete-query
|
||||||
|
bind editor ^T complete
|
||||||
|
|
||||||
|
# Press A to add contact to Khard address book
|
||||||
|
macro index,pager A \
|
||||||
|
"<pipe-message>khard add-email<return>" \
|
||||||
|
"add the sender email address to khard"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
services.imapnotify.enable = true;
|
||||||
|
home.packages = [ pkgs.neomutt pkgs.evolution ];
|
||||||
|
|
||||||
|
accounts.email = {
|
||||||
|
accounts.anish = {
|
||||||
|
primary = true;
|
||||||
|
address = "anish@lakhwara.com";
|
||||||
|
#alias = [ "*@lakhwara.com" ];
|
||||||
|
#gpg = {
|
||||||
|
# key = "";
|
||||||
|
# signByDefault = true;
|
||||||
|
#};
|
||||||
|
imap.host = "imap.fastmail.com";
|
||||||
|
mbsync = {
|
||||||
|
enable = true;
|
||||||
|
create = "both";
|
||||||
|
expunge = "both";
|
||||||
|
remove = "both";
|
||||||
|
extraConfig.local.subFolders = "Verbatim";
|
||||||
|
};
|
||||||
|
imapnotify = {
|
||||||
|
enable = true;
|
||||||
|
boxes = [ "Inbox" ];
|
||||||
|
onNotify = "${pkgs.isync}/bin/mbsync anish && ${pkgs.notmuch}/bin/notmuch index";
|
||||||
|
onNotifyPost = {
|
||||||
|
mail = "${pkgs.libnotify}/bin/notify-send -a mail 'email: new in %s'";
|
||||||
|
update = "${pkgs.libnotify}/bin/notify-send -a mail 'email: update %s'";
|
||||||
|
expunge = "${pkgs.libnotify}/bin/notify-send -a mail 'email: expunge %s'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
msmtp.enable = true;
|
||||||
|
notmuch.enable = true;
|
||||||
|
realName = "Anish Lakhwara";
|
||||||
|
signature = {
|
||||||
|
text = ''
|
||||||
|
Thanks,
|
||||||
|
Anish
|
||||||
|
'';
|
||||||
|
showSignature = "append";
|
||||||
|
};
|
||||||
|
passwordCommand = "cat /run/secrets/fastmail";
|
||||||
|
smtp = {
|
||||||
|
host = "fastmail.com";
|
||||||
|
};
|
||||||
|
userName = "anish@lakhwara.com";
|
||||||
|
neomutt = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue