dotfiles/user/home.nix

356 lines
7.9 KiB
Nix

{ config, pkgs, ... }:
{
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "chris";
home.homeDirectory = "/home/chris";
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# accounts.email.accounts = {
# personal = {
# address = "chris@cochrun.xyz";
# mbsync.enable = true;
# create = "maildir";
# mu.enable = true;
# imap = {
# host = "mail.cochrun.xyz";
# port = 993;
# tls.enable = true;
# };
# smtp = {
# host = "mail.cochrun.xyz";
# port = 25;
# tls.enable = true;
# };
# };
# work = {
# address = "chris@tfcconnection.org";
# mbsync.enable = true;
# create = "maildir";
# mu.enable = true;
# imap = {
# host = "outlook.office365.com";
# port = 993;
# tls.enable = true;
# };
# smtp = {
# host = "mail.cochrun.xyz";
# port = 25;
# tls.enable = true;
# };
# };
# };
programs.git = {
enable = true;
userName = "Chris Cochrun";
userEmail = "chris@cochrun.xyz";
};
home.packages = with pkgs; [
];
programs.mu.enable = true;
# services.emacs = {
# enable = true;
# package = pkgs.emacsPgtkGcc;
# defaultEditor = true;
# };
programs.mbsync = {
enable = true;
extraConfig = ''
IMAPAccount gmail
Host imap.gmail.com
User ccochrun21@gmail.com
Pass spveovqcgxpnaodn
AuthMechs LOGIN
SSLType IMAPS
SSLVersions SSLv3
# CertificateFile /opt/local/share/curl/curl-ca-bundle.crt
IMAPAccount office
Host outlook.office365.com
User chris@tfcconnection.org
Pass Gr@$$B00ts#21
AuthMechs LOGIN
SSLType IMAPS
IMAPAccount outlook
Host outlook.office365.com
User chris.cochrun@outlook.com
Pass GrassR00ts21
AuthMechs LOGIN
SSLType IMAPS
IMAPAccount cochrun
Host mail.cochrun.xyz
User chris@cochrun.xyz
Pass Gr@$$B00ts#21
AuthMechs LOGIN
SSLType IMAPS
# SSLVersions SSLv3
# CertificateFile /opt/local/share/curl/curl-ca-bundle.crt
# THEN WE SPECIFY THE LOCAL AND REMOTE STORAGE
# - THE REMOTE STORAGE IS WHERE WE GET THE MAIL FROM (E.G., THE
# SPECIFICATION OF AN IMAP ACCOUNT)
# - THE LOCAL STORAGE IS WHERE WE STORE THE EMAIL ON OUR COMPUTER
# REMOTE STORAGE (USE THE IMAP ACCOUNT SPECIFIED ABOVE)
IMAPStore gmail-remote
Account gmail
MaildirStore gmail-local
Path ~/Maildir/gmail/
Inbox ~/Maildir/gmail/INBOX
IMAPStore office-remote
Account office
# LOCAL STORAGE (CREATE DIRECTORIES with mkdir -p Maildir/gmail)
MaildirStore office-local
Path ~/Maildir/office/
Inbox ~/Maildir/office/INBOX
Subfolders Verbatim
IMAPStore outlook-remote
Account outlook
MaildirStore outlook-local
Path ~/Maildir/outlook/
Inbox ~/Maildir/outlook/INBOX
Subfolders Verbatim
IMAPStore cochrun-remote
Account cochrun
MaildirStore cochrun-local
Path ~/Maildir/cochrun/
Inbox ~/Maildir/cochrun/INBOX
Subfolders Verbatim
# CONNECTIONS SPECIFY LINKS BETWEEN REMOTE AND LOCAL FOLDERS
#
# CONNECTIONS ARE SPECIFIED USING PATTERNS, WHICH MATCH REMOTE MAIl
# FOLDERS. SOME COMMONLY USED PATTERS INCLUDE:
#
# 1 "*" TO MATCH EVERYTHING
# 2 "!DIR" TO EXCLUDE "DIR"
# 3 "DIR" TO MATCH DIR
Channel gmail-inbox
Far :gmail-remote:
Near :gmail-local:
Patterns "INBOX"
Create Both
Expunge Both
SyncState *
Channel gmail-trash
Far :gmail-remote:"[Gmail]/Bin"
Near :gmail-local:"[Gmail].Bin"
Create Both
Expunge Both
SyncState *
Channel gmail-sent
Far :gmail-remote:"[Gmail]/Sent Mail"
Near :gmail-local:"[Gmail].Sent Mail"
Create Both
Expunge Both
SyncState *
Channel gmail-all
Far :gmail-remote:"[Gmail]/All Mail"
Near :gmail-local:"[Gmail].All Mail"
Create Both
Expunge Both
SyncState *
Channel gmail-starred
Far :gmail-remote:"[Gmail]/Starred"
Near :gmail-local:"[Gmail].Starred"
Create Both
Expunge Both
SyncState *
Channel office-inbox
Far :office-remote:
Near :office-local:
Patterns "*"
Create Both
Expunge Both
SyncState *
Channel outlook-inbox
Far :outlook-remote:
Near :outlook-local:
Patterns "*"
Create Both
Expunge Both
SyncState *
Channel cochrun-inbox
Far :cochrun-remote:
Near :cochrun-local:
Patterns "*"
Create Both
Expunge Both
SyncState *
# GROUPS PUT TOGETHER CHANNELS, SO THAT WE CAN INVOKE
# MBSYNC ON A GROUP TO SYNC ALL CHANNELS
#
# FOR INSTANCE: "mbsync gmail" GETS MAIL FROM
# "gmail-inbox", "gmail-sent", and "gmail-trash"
#
# Group gmail
# Channel gmail-inbox
# Channel gmail-sent
# Channel gmail-trash
# Channel gmail-all
# Channel gmail-starred
Group office
Channel office-inbox
Group outlook
Channel outlook-inbox
Group cochrun
Channel cochrun-inbox
'';
};
programs.msmtp.enable = true;
services.mbsync.enable = true;
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
services.syncthing.enable = true;
services.kdeconnect.enable = true;
services.easyeffects.enable = true;
services.espanso = {
enable = true;
settings = {
matches = [
{ # dates
trigger = ":date";
replace = "{{mydate}}";
vars = [{
name = "mydate";
type = "date";
params = {format = "%m/%d/%Y";};
}];
}
{ # Shell commands
trigger = ":shell";
replace = "{{output}}";
vars = [{
name = "output";
type = "shell";
params = { cmd = "echo Hello from your shell";};
}];
}
{ # simple text
trigger = ":gml";
replace = "ccochrun21@gmail.com";
}
{
trigger = ":otl";
replace = "chris.cochrun@outlook.com";
}
{
trigger = ":tfcml";
replace = "chris@tfcconnection.org";
}
{
trigger = ":name";
replace = "Chris Cochrun";
}
];
};
};
home.file.".config/rofi" = {
source = ../rofi;
recursive = true;
};
programs.rbw.enable = true;
home.file.".config/rbw" = {
source = ../rbw;
recursive = true;
};
home.file.".config/fish" = {
source = ../fish;
recursive = true;
};
programs.qutebrowser.enable = true;
home.file.".config/qutebrowser" = {
source = ../qutebrowser;
recursive = true;
};
home.file.".config/mpv" = {
source = ../mpv;
recursive = true;
};
home.file.".config/macchina" = {
source = ../macchina;
recursive = true;
};
home.file."scripts" = {
source = ../scripts;
recursive = true;
};
programs.starship.enable = true;
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
enableSyntaxHighlighting = true;
autocd = true;
dotDir = ".config/zsh";
shellAliases = {
ls = "exa -l";
la = "exa -la";
mpf = "mpv --profile=fast";
mps = "mpv --profile=slow";
ec = "emacsclient -t";
ecc = "emacsclient -c";
mkdir = "mkdir -pv";
nupd = "update-nix";
nupg = "upgrade-nix";
sysuse = "systemctl --user";
};
initExtra = ''
macchina
'';
};
}