trying to get deploy-rs working by cleaning things up

This commit is contained in:
Anish L 2022-04-21 11:54:57 +10:00
parent a90c9eae0c
commit 5e158f6540
13 changed files with 754 additions and 858 deletions

View file

@ -35,26 +35,6 @@
"type": "github" "type": "github"
} }
}, },
"darwin": {
"inputs": {
"nixpkgs": [
"nixos"
]
},
"locked": {
"lastModified": 1645007752,
"narHash": "sha256-FQZMiVP/1vgR7x+TWonMf0NZczrZ4ZjhSTj3rM+kglY=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "c944b5ee82a829ddf7fa6bd9300bc2fe3d005fa1",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"deploy": { "deploy": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@ -398,7 +378,6 @@
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"darwin": "darwin",
"deploy": "deploy", "deploy": "deploy",
"digga": "digga", "digga": "digga",
"home": "home", "home": "home",

View file

@ -19,9 +19,6 @@
home.url = "github:nix-community/home-manager/release-21.11"; home.url = "github:nix-community/home-manager/release-21.11";
home.inputs.nixpkgs.follows = "nixos"; home.inputs.nixpkgs.follows = "nixos";
darwin.url = "github:LnL7/nix-darwin";
darwin.inputs.nixpkgs.follows = "nixos";
deploy.url = "github:serokell/deploy-rs"; deploy.url = "github:serokell/deploy-rs";
deploy.inputs.nixpkgs.follows = "nixos"; deploy.inputs.nixpkgs.follows = "nixos";
@ -52,6 +49,9 @@
digga.lib.mkFlake digga.lib.mkFlake
{ {
inherit self inputs; inherit self inputs;
supportedSystems = [
"x86_64-linux"
];
channelsConfig = { allowUnfree = true; }; channelsConfig = { allowUnfree = true; };
@ -97,7 +97,6 @@
imports = [ (digga.lib.importHosts ./hosts) ]; imports = [ (digga.lib.importHosts ./hosts) ];
hosts = { hosts = {
/* set host specific properties here */ /* set host specific properties here */
NixOS = { };
curve = { curve = {
channelName = "nixos"; channelName = "nixos";
#modules = [ ]; # nixos-hardware.nixosModules.lenovo-thinkpad #modules = [ ]; # nixos-hardware.nixosModules.lenovo-thinkpad
@ -116,9 +115,10 @@
base = [ core users.root users.anish ]; # TODO make anish non gui base = [ core users.root users.anish ]; # TODO make anish non gui
sealight = [ base ]; # matrix rsshub backup wireguard website sealight = [ base ]; # matrix rsshub backup wireguard website
mossnet = [ base ]; # shaarli wallabag nextcloud taskwarrior headphones mossnet = [ base ]; # shaarli wallabag nextcloud taskwarrior headphones
home-manager = [ users.profiles.firefox users.profiles.desktop users.profiles.nvim ]; cube = [ base ];
graphical = [ base home-manager bluetooth music sync wireguard wifi ]; # home-manager = [ users.profiles.firefox users.profiles.desktop users.profiles.nvim ];
curve = [ graphical users.profiles.email users.profiles.cal ]; graphical = [ base bluetooth music sync wireguard wifi desktop ];
curve = [ graphical ];
work = [ base home-manager ]; work = [ base home-manager ];
}; };
}; };
@ -126,17 +126,18 @@
home = { home = {
imports = [ (digga.lib.importExportableModules ./users/modules) ]; imports = [ (digga.lib.importExportableModules ./users/modules) ];
exportedModules = [ ]; # exportedModules = [ ];
# modules = [ ];
importables = rec { importables = rec {
profiles = digga.lib.rakeLeaves ./users/profiles; profiles = digga.lib.rakeLeaves ./users/profiles;
suites = with profiles; rec { suites = with profiles; rec {
hmBase = [ direnv git ]; hmBase = [ direnv git nvim ];
gui = [ hmBase profiles.firefox profiles.desktop ]; gui = [ hmBase firefox desktop email cal ];
}; };
}; };
users = { users = {
nixos = { suites, ... }: { imports = suites.hmBase; }; nixos = { suites, ... }: { imports = suites.hmBase; };
curve = { suites, ... }: { imports = suites.gui; }; anish = { suites, ... }: { imports = suites.gui; };
}; # digga.lib.importers.rakeLeaves ./users/hm; }; # digga.lib.importers.rakeLeaves ./users/hm;
}; };
@ -144,18 +145,6 @@
homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations; homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations;
deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { };
{ };
curve = {
profilesOrder = [ "system" "curve" ];
profiles.anish = {
user = "anish";
path = deploy.lib.x86_64-linux.activate.home-manager self.homeConfigurationsPortable.x86_64-linux.anish;
};
};
};
# checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy.lib;
}
;
} }

View file

@ -1,12 +0,0 @@
{ suites, ... }:
{
### root password is empty by default ###
imports = suites.base;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.networkmanager.enable = true;
fileSystems."/" = { device = "/dev/disk/by-label/nixos"; };
}

View file

@ -1,3 +0,0 @@
{
}

View file

@ -10,7 +10,7 @@
# Use the GRUB 2 boot loader. # Use the GRUB 2 boot loader.
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.version = 2; boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only boot.loader.grub.devices = [ "/dev/vda" ]; # or "nodev" for efi only
networking.hostName = "cube"; # Define your hostname. networking.hostName = "cube"; # Define your hostname.

View file

@ -6,10 +6,6 @@
profiles.mossnet-hosts profiles.mossnet-hosts
] ++ suites.curve; ] ++ suites.curve;
home-manager.users.anish = { self, suites, ... }: {
imports = [ ] ++ suites.hmBase;
};
fileSystems."/mnt/ftp" = { fileSystems."/mnt/ftp" = {
device = "192.168.1.240:/home/ftp"; device = "192.168.1.240:/home/ftp";
fsType = "nfs"; fsType = "nfs";

View file

@ -1,3 +0,0 @@
{
}

View file

@ -1,54 +1,182 @@
{ config, pkgs, ... }: { config, pkgs, lib, ... }:
let
dracula-gtk = pkgs.fetchFromGitHub {
owner = "dracula";
repo = "gtk";
rev = "502f212d83bc67e8f0499574546b99ec6c8e16f9";
sha256 = "1wx9nzq7cqyvpaq4j60bs8g7gh4jk8qg4016yi4c331l4iw1ymsa";
};
in
{ {
#imports = [ ./music.nix ] # TODO modularize
#environment.systemPackages = with pkgs; [ #imports = [ ./xdg.nix ];
# nheko
# newsflash services = {
# sublime-music gnome.gnome-keyring.enable = true;
# tdesktop upower.enable = true;
# obs-studio
#]; dbus = {
#environment.systemPackages = with pkgs; [ enable = true;
# lightdm packages = [ pkgs.gnome3.dconf ];
# dunst };
# libnotify };
# (polybar.override {
# pulseSupport = true; security.pam.services.sddm.enableGnomeKeyring = true;
# nlSupport = true;
# }) environment.sessionVariables = rec {
#]; XDG_CACHE_HOME = "\${HOME}/.cache";
# XDG_CONFIG_HOME = "\${HOME}/.config";
#services = { XDG_BIN_HOME = "\${HOME}/.local/bin";
# picom.enable = true; XDG_DATA_HOME = "\${HOME}/.local/share";
# #redshift.enable = true;
# xserver = { PATH = [
# enable = true; "\${XDG_BIN_HOME}"
# displayManager = { ];
# defaultSession = "none+bspwm"; };
# lightdm.enable = true;
# lightdm.greeters.mini.enable = true; nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
# lightdm.greeters.mini.user = "anish"; # TODO hardcoded "ripcord"
# }; "vcv-rack"
# windowManager.bspwm.enable = true; ];
# windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc";
# windowManager.bspwm.sxhkd.configFile = "/home/anish/sxhkdrc"; environment.systemPackages = with pkgs; [
# #windowManager.default = "bspwm"; # TODO move somewhere meaningful
# }; signal-desktop # bridge to sealight?
#}; scrot
# ripcord
#systemd.user.services."dunst" = { feh
# enable = true; xkblayout-state
# description = ""; sublime-music
# wantedBy = [ "default.target" ]; vcv-rack
# serviceConfig.Restart = "always"; zathura
# serviceConfig.RestartSec = 2; calibre
# serviceConfig.ExecStart = "${pkgs.dunst}/bin/dunst"; nheko
#}; mpv
#services.xserver.displayManager.lightdm.greeters.mini.extraConfig = '' scrot
# text-color = "#ff79c6" newsflash
# password-background-color = "#1E2029" zeal
# window-color = "#181a23" xclip
# border-color = "#181a23" xdotool
#''; rofi
rofimoji
obs-studio
lightdm
dunst
libnotify
(polybar.override {
pulseSupport = true;
nlSupport = true;
})
papirus-icon-theme
calendar-cli
wyrd
];
location.provider = "geoclue2";
services = {
redshift = {
enable = true;
temperature = {
day = 5500;
night = 3700;
};
};
xserver = {
enable = true;
layout = "us,dvorak";
desktopManager.wallpaper.mode = "fill";
displayManager = {
defaultSession = "none+bspwm";
sessionCommands = ''
${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF
#define blk #1F2430
#define bblk #F28779
#define red #A6CC70
#define bred #FFCC66
#define grn #5CCFE6
#define bgrn #F29E74
#define ylw #77A8D9
#define bylw #5C6773
#define blu #707A8C
#define bblu #F27983
#define mag #BAE67E
#define bmag #FFD580
#define cyn #73D0FF
#define bcyn #FFA759
#define wht #95E6CB
#define bwht #CBCCC6
#define bg blk
#define fg wht
*.foreground: fg
*.background: bg
*.cursorColor: mag
*.color0: blk
*.color8: bblk
*.color1: red
*.color9: bred
*.color2: grn
*.color10: bgrn
*.color3: ylw
*.color11: bylw
*.color4: blu
*.color12: bblu
*.color5: mag
*.color13: bmag
*.color6: cyn
*.color14: bcyn
*.color7: wht
*.color15: bwht
! greys
*.color234: #1E2029
*.color235: #282a36
*.color236: #373844
*.color237: #44475a
*.color239: #565761
*.color240: #6272a4
*.color241: #b6b6b2
EOF
# hotplug
connect() {
xrandr --output HDMI-2 --same-as eDP-1
}
disconnect() {
xrandr --output HDMI-2 --off
}
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
'';
lightdm.enable = true;
lightdm.greeters.mini.enable = true;
lightdm.greeters.mini.user = "anish"; # TODO hardcoded
lightdm.background = "/etc/nixos/users/profiles/desktop/background.jpg";
lightdm.greeters.mini.extraConfig = ''
text-color = "#ff79c6"
password-background-color = "#1E2029"
window-color = "#181a23"
border-color = "#181a23"
active-monitor=1
'';
};
windowManager.bspwm.enable = true;
#windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc";
windowManager.bspwm.sxhkd.configFile = "/home/anish/.config/sxhkdrc";
};
};
fonts.fonts = with pkgs; [
fira-code
fira-code-symbols
hermit
#hack
siji
font-awesome-ttf
proggyfonts
(nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; })
];
} }

View file

@ -1,102 +1,101 @@
{pkgs, config, ...}: { pkgs, config, age, ... }:
{ {
age.secrets.mossnet.file = "/etc/nixos/secrets/mossnet.age"; #age.secrets.mossnet.file = "/etc/nixos/secrets/mossnet.age";
age.secrets.mossnet.owner = "anish"; #age.secrets.mossnet.owner = "anish";
home-manager.users.anish = {
home.packages = with pkgs; [
khal
khard
vdirsyncer
];
xdg.configFile = { home.packages = with pkgs; [
"vdirsyncer/config".text = '' khal
[general] khard
status_path = "/home/anish/.config/vdirsyncer/status/" vdirsyncer
];
[pair contacts] xdg.configFile = {
a = "contacts_local" "vdirsyncer/config".text = ''
b = "contacts_remote" [general]
collections = ["from a", "from b"] status_path = "/home/anish/.config/vdirsyncer/status/"
metadata = ["displayname"]
[storage contacts_local] [pair contacts]
type = "filesystem" a = "contacts_local"
path = "~/.contacts/" b = "contacts_remote"
fileext = ".vcf" collections = ["from a", "from b"]
metadata = ["displayname"]
[storage contacts_remote] [storage contacts_local]
type = "carddav" type = "filesystem"
url = "http://mossnet.lan/remote.php/dav/files/anish/" path = "~/.contacts/"
username = "anish" fileext = ".vcf"
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
[pair calendar] [storage contacts_remote]
a = "calendar_local" type = "carddav"
b = "calendar_remote" url = "http://mossnet.lan/remote.php/dav/files/anish/"
collections = ["from a", "from b"] username = "anish"
metadata = ["displayname"] password.fetch = ["command", "cat", "/run/secrets/mossnet"]
[storage calendar_local] [pair calendar]
type = "filesystem" a = "calendar_local"
path = "~/.calendar/" b = "calendar_remote"
fileext = ".ics" collections = ["from a", "from b"]
metadata = ["displayname"]
[storage calendar_remote] [storage calendar_local]
type = "caldav" type = "filesystem"
url = "http://mossnet.lan/remote.php/dav/files/anish/" path = "~/.calendar/"
username = "anish" fileext = ".ics"
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
'';
"khal/config".text = '' [storage calendar_remote]
[calendars] type = "caldav"
url = "http://mossnet.lan/remote.php/dav/files/anish/"
username = "anish"
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
'';
[[calendar_local]] "khal/config".text = ''
path = ~/.calendar/* [calendars]
type = discover
[[contacts_local]] [[calendar_local]]
path = ~/.contacts/* path = ~/.calendar/*
type = birthdays type = discover
[locale] [[contacts_local]]
timeformat = %H:%M path = ~/.contacts/*
dateformat = %Y-%m-%d type = birthdays
longdateformat = %Y-%m-%d
datetimeformat = %Y-%m-%d %H:%M
longdatetimeformat = %Y-%m-%d %H:%M
'';
"khard/khard.conf".text = '' [locale]
[addressbooks] timeformat = %H:%M
[[personal]] dateformat = %Y-%m-%d
path = ~/.contacts/* longdateformat = %Y-%m-%d
datetimeformat = %Y-%m-%d %H:%M
longdatetimeformat = %Y-%m-%d %H:%M
'';
[general] "khard/khard.conf".text = ''
debug = no [addressbooks]
default_action = list [[personal]]
editor = nvim, -i, NONE path = ~/.contacts/*
merge_editor = nvim, -d
[contact table] [general]
display = first_name debug = no
group_by_addressbook = no default_action = list
reverse = no editor = nvim, -i, NONE
show_nicknames = yes merge_editor = nvim, -d
show_uids = no
sort = last_name
localize_dates = yes
preferred_phone_number_type = pref, cell, home
preferred_email_address_type = pref, home, work
[vcard] [contact table]
private_objects = Jabber, display = first_name
preferred_version = 3.0 group_by_addressbook = no
search_in_source_files = no reverse = no
skip_unparsable = 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
'';
}; };
} }

View file

@ -8,299 +8,126 @@ let
}; };
in in
{ {
# TODO modularize xsession = {
#imports = [ ./xdg.nix ]; enable = true;
pointerCursor = {
services = { package = pkgs.capitaine-cursors;
gnome.gnome-keyring.enable = true; name = "capitaine-cursors";
upower.enable = true;
dbus = {
enable = true;
packages = [ pkgs.gnome3.dconf ];
}; };
}; };
# Install themes
home.packages = with pkgs; [
ayu-theme-gtk
dracula-theme
capitaine-cursors
paper-icon-theme
papirus-icon-theme
libsForQt5.qtstyleplugin-kvantum
qt5ct
gtk-engine-murrine
gtk_engines
];
security.pam.services.sddm.enableGnomeKeyring = true; xresources.properties = {
"*.foreground" = "#95E6CB";
"*.background" = "#1F2430";
"*.cursorColor" = "#BAE67E";
# Black
"*.color0" = "#1F2430";
"*.color8" = "#F28779";
# Red
"*.color1" = "#A6CC70";
"*.color9" = "#FFCC66";
# Green
"*.color2" = "#5CCFE6";
"*.color10" = "#F29E74";
# Yellow
"*.color3" = "#77A8D9";
"*.color11" = "#5C6773";
# Blue
"*.color4" = "#707A8C";
"*.color12" = "#F27983";
# Magenta
"*.color5" = "#BAE67E";
"*.color13" = "#FFD580";
# Cyan
"*.color6" = "#73D0FF";
"*.color14" = "#FFA759";
# White
"*.color7" = "#95E6CB";
"*.color15" = "#CBCCC6";
# Bold, Italic, Underline
"*.colorBD" = "#e6e1cf";
};
home-manager.users.anish.xdg.enable = true; # This doesn't seem to do anything so we have below # Move required config files around
home-manager.users.anish.xdg.configHome = "/home/anish/.config"; # TODO bad hard coded xdg.enable = true; # This doesn't seem to do anything so we have below
home-manager.users.anish.xdg.configFile = { xdg.configHome = "/home/anish/.config"; # TODO bad hardcode
xdg.configFile = {
"Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig"; "Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
"Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg"; "Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula"; "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
}; };
environment.sessionVariables = rec { home.file = {
XDG_CACHE_HOME = "\${HOME}/.cache"; ".config/bspwm/rc.d/polybar".source = ./run.sh;
XDG_CONFIG_HOME = "\${HOME}/.config"; ".config/bspwm/bspwmrc".source = ./bspwmrc;
XDG_BIN_HOME = "\${HOME}/.local/bin"; ".config/sxhkdrc".source = ./sxhkdrc;
XDG_DATA_HOME = "\${HOME}/.local/share"; ".config/rofi/theme" = {
source = ./rofi;
PATH = [ recursive = true;
"\${XDG_BIN_HOME}" };
]; ".config/polybar" = {
source = ./polybar;
recursive = true;
};
".config/dunst/dunstrc".source = ./dunstrc;
".config/kitty/kitty.conf".source = ./kitty.conf;
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
".config/zathura/zathurarc".source = ./zathurarc;
".background-image".source = ./background.jpg;
# gtk3 theme
".config/gtk-3.0/settings.ini".text = ''
[Settings]
gtk-theme-name=Dracula
gtk-icon-theme-name=Paper
gtk-cursor-theme-name=Capitaine Cursors - White
gtk-fallback-icon-theme=gnome
gtk-application-prefer-dark-theme=true
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=none
'';
# GTK2 global theme (widget and icon theme)
".config/gtk-2.0/gtkrc".text = ''
gtk-theme-name=Ayu-Mirage
gtk-icon-theme-name=Capitaine Cursors - White
gtk-font-name="Sans 10"
'';
# TODO hardcoded
".local/bin/passmenu".source = ./bin/passmenu;
".local/bin/powermenu".source = ./bin/powermenu;
".local/bin/screenshot".source = ./bin/screenshot;
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
}; };
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ qt = {
"ripcord" enable = true;
"vcv-rack" platformTheme = "gtk";
]; style = { name = "qt5ct-style"; };
environment.systemPackages = with pkgs; [
# TODO move somewhere meaningful
signal-desktop # bridge to sealight?
scrot
ripcord
feh
xkblayout-state
sublime-music
vcv-rack
zathura
calibre
nheko
mpv
scrot
newsflash
zeal
xclip
xdotool
rofi
rofimoji
obs-studio
lightdm
dunst
libnotify
(polybar.override {
pulseSupport = true;
nlSupport = true;
})
papirus-icon-theme
calendar-cli
wyrd
];
location.provider = "geoclue2";
services = {
redshift = {
enable = true;
temperature = {
day = 5500;
night = 3700;
};
};
xserver = {
enable = true;
layout = "us,dvorak";
desktopManager.wallpaper.mode = "fill";
displayManager = {
defaultSession = "none+bspwm";
sessionCommands = ''
${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF
#define blk #1F2430
#define bblk #F28779
#define red #A6CC70
#define bred #FFCC66
#define grn #5CCFE6
#define bgrn #F29E74
#define ylw #77A8D9
#define bylw #5C6773
#define blu #707A8C
#define bblu #F27983
#define mag #BAE67E
#define bmag #FFD580
#define cyn #73D0FF
#define bcyn #FFA759
#define wht #95E6CB
#define bwht #CBCCC6
#define bg blk
#define fg wht
*.foreground: fg
*.background: bg
*.cursorColor: mag
*.color0: blk
*.color8: bblk
*.color1: red
*.color9: bred
*.color2: grn
*.color10: bgrn
*.color3: ylw
*.color11: bylw
*.color4: blu
*.color12: bblu
*.color5: mag
*.color13: bmag
*.color6: cyn
*.color14: bcyn
*.color7: wht
*.color15: bwht
! greys
*.color234: #1E2029
*.color235: #282a36
*.color236: #373844
*.color237: #44475a
*.color239: #565761
*.color240: #6272a4
*.color241: #b6b6b2
EOF
# hotplug
connect() {
xrandr --output HDMI-2 --same-as eDP-1
}
disconnect() {
xrandr --output HDMI-2 --off
}
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
'';
lightdm.enable = true;
lightdm.greeters.mini.enable = true;
lightdm.greeters.mini.user = "anish"; # TODO hardcoded
lightdm.background = "/etc/nixos/users/profiles/desktop/background.jpg";
lightdm.greeters.mini.extraConfig = ''
text-color = "#ff79c6"
password-background-color = "#1E2029"
window-color = "#181a23"
border-color = "#181a23"
active-monitor=1
'';
};
windowManager.bspwm.enable = true;
#windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc";
windowManager.bspwm.sxhkd.configFile = "/home/anish/.config/sxhkdrc";
};
}; };
fonts.fonts = with pkgs; [ # Compositor
fira-code services.picom = {
fira-code-symbols enable = true;
hermit fade = true;
#hack fadeDelta = 1;
siji fadeSteps = [ "0.01" "0.022" ];
font-awesome-ttf shadow = true;
proggyfonts shadowOffsets = [ (-10) (-10) ];
(nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; }) shadowOpacity = "0.22";
]; # activeOpacity = "1.00";
# inactiveOpacity = "0.92";
home-manager.users.anish = { extraOptions = ''
xsession = {
enable = true;
pointerCursor = {
package = pkgs.capitaine-cursors;
name = "capitaine-cursors";
};
};
# Install themes
home.packages = with pkgs; [
ayu-theme-gtk
dracula-theme
capitaine-cursors
paper-icon-theme
papirus-icon-theme
libsForQt5.qtstyleplugin-kvantum
qt5ct
gtk-engine-murrine
gtk_engines
];
xresources.properties = {
"*.foreground" = "#95E6CB";
"*.background" = "#1F2430";
"*.cursorColor" = "#BAE67E";
# Black
"*.color0" = "#1F2430";
"*.color8" = "#F28779";
# Red
"*.color1" = "#A6CC70";
"*.color9" = "#FFCC66";
# Green
"*.color2" = "#5CCFE6";
"*.color10" = "#F29E74";
# Yellow
"*.color3" = "#77A8D9";
"*.color11" = "#5C6773";
# Blue
"*.color4" = "#707A8C";
"*.color12" = "#F27983";
# Magenta
"*.color5" = "#BAE67E";
"*.color13" = "#FFD580";
# Cyan
"*.color6" = "#73D0FF";
"*.color14" = "#FFA759";
# White
"*.color7" = "#95E6CB";
"*.color15" = "#CBCCC6";
# Bold, Italic, Underline
"*.colorBD" = "#e6e1cf";
};
# Move required config files around
home.file = {
".config/bspwm/rc.d/polybar".source = ./run.sh;
".config/bspwm/bspwmrc".source = ./bspwmrc;
".config/sxhkdrc".source = ./sxhkdrc;
".config/rofi/theme" = {
source = ./rofi;
recursive = true;
};
".config/polybar" = {
source = ./polybar;
recursive = true;
};
".config/dunst/dunstrc".source = ./dunstrc;
".config/kitty/kitty.conf".source = ./kitty.conf;
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
".config/zathura/zathurarc".source = ./zathurarc;
".background-image".source = ./background.jpg;
# gtk3 theme
".config/gtk-3.0/settings.ini".text = ''
[Settings]
gtk-theme-name=Dracula
gtk-icon-theme-name=Paper
gtk-cursor-theme-name=Capitaine Cursors - White
gtk-fallback-icon-theme=gnome
gtk-application-prefer-dark-theme=true
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=none
'';
# GTK2 global theme (widget and icon theme)
".config/gtk-2.0/gtkrc".text = ''
gtk-theme-name=Ayu-Mirage
gtk-icon-theme-name=Capitaine Cursors - White
gtk-font-name="Sans 10"
'';
# TODO hardcoded
".local/bin/passmenu".source = ./bin/passmenu;
".local/bin/powermenu".source = ./bin/powermenu;
".local/bin/screenshot".source = ./bin/screenshot;
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
};
qt = {
enable = true;
platformTheme = "gtk";
style = { name = "qt5ct-style"; };
};
# Compositor
services.picom = {
enable = true;
fade = true;
fadeDelta = 1;
fadeSteps = [ "0.01" "0.022" ];
shadow = true;
shadowOffsets = [ (-10) (-10) ];
shadowOpacity = "0.22";
# activeOpacity = "1.00";
# inactiveOpacity = "0.92";
extraOptions = ''
shadow-radius = 12; shadow-radius = 12;
# blur-background = true; # blur-background = true;
# blur-background-frame = true; # blur-background-frame = true;
@ -308,11 +135,10 @@ in
blur-kern = "7x7box"; blur-kern = "7x7box";
blur-strength = 320; blur-strength = 320;
''; '';
};
programs.autorandr.enable = true;
services.udiskie.automount = true;
services.mpris-proxy.enable = true; # bluetooth media control
}; };
programs.autorandr.enable = true;
services.udiskie.automount = true;
services.mpris-proxy.enable = true; # bluetooth media control
} }

View file

@ -1,295 +1,293 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
age.secrets.fastmail.file = "/etc/nixos/secrets/fastmail.age"; #age.secrets.fastmail.file = "/etc/nixos/secrets/fastmail.age";
age.secrets.fastmail.owner = "anish"; #age.secrets.fastmail.owner = "anish";
home-manager.users.anish = { services.mbsync = {
services.mbsync = { enable = true;
enable = true; frequency = "*:0/30";
frequency = "*:0/30"; #postExec = "${pkgs.notmuch}/bin/notmuch new";
#postExec = "${pkgs.notmuch}/bin/notmuch new"; };
}; programs.mbsync.enable = true;
programs.mbsync.enable = true; programs.msmtp.enable = true;
programs.msmtp.enable = true; programs.notmuch = {
programs.notmuch = { enable = true;
enable = true; };
}; home.file.".mailcap".text = ''
home.file.".mailcap".text = '' text/html; firefox %s
text/html; firefox %s application/pdf; zathura %s
application/pdf; zathura %s image/png; feh %s
image/png; feh %s image/jpeg; feh %s
image/jpeg; feh %s '';
''; programs.neomutt = {
programs.neomutt = { enable = true;
enable = true; extraConfig = ''
extraConfig = '' # Shamelessly Stolen from https://gideonwolfe.com/posts/workflow/neomutt/intro/
# Shamelessly Stolen from https://gideonwolfe.com/posts/workflow/neomutt/intro/ # set editor to neovim
# set editor to neovim set editor = "nvim +':set textwidth=0'"
set editor = "nvim +':set textwidth=0'"
#set virtual_spoolfile=yes #set virtual_spoolfile=yes
set folder="~/Mail/anish" set folder="~/Mail/anish"
set mbox_type = Maildir set mbox_type = Maildir
mailboxes `find ~/Mail/anish/* -maxdepth 0 -type d | grep -v "tmp\|new\|cur" | sed 's|/home/anish/Mail/|=\"|g' | sed 's|$|\"|g' | tr '\n' ' '` mailboxes `find ~/Mail/anish/* -maxdepth 0 -type d | grep -v "tmp\|new\|cur" | sed 's|/home/anish/Mail/|=\"|g' | sed 's|$|\"|g' | tr '\n' ' '`
## Folder with emails ## Folder with emails
#set folder = "~/Mail/anish" #set folder = "~/Mail/anish"
# Type of mailbox # Type of mailbox
# Directory to poll for new mail # Directory to poll for new mail
#set spoolfile = +Inbox #set spoolfile = +Inbox
# Directory to save sent messages into # Directory to save sent messages into
#set record = +Sent #set record = +Sent
# Sets the drafts folder # Sets the drafts folder
#set postponed = +Drafts #set postponed = +Drafts
# File that headers will be cached # File that headers will be cached
# set header_cache = ~/.cache/mutt # set header_cache = ~/.cache/mutt
set my_name = "Anish" set my_name = "Anish"
set imap_check_subscribed set imap_check_subscribed
# Set preffered view modes # Set preffered view modes
auto_view text/html text/calendar application/ics # view html automatically auto_view text/html text/calendar application/ics # view html automatically
alternative_order text/plain text/enriched text/html text/* alternative_order text/plain text/enriched text/html text/*
# main options # main options
#set envelope_from #set envelope_from
#set edit_headers # show headers when composing #set edit_headers # show headers when composing
#set fast_reply # skip to compose when replying #set fast_reply # skip to compose when replying
#set askcc # ask for CC: #set askcc # ask for CC:
#set fcc_attach # save attachments with the body #set fcc_attach # save attachments with the body
#set forward_format = "Fwd: %s" # format of subject when forwarding #set forward_format = "Fwd: %s" # format of subject when forwarding
#set forward_decode # decode when forwarding #set forward_decode # decode when forwarding
#set attribution = "On %d, %n wrote:" # format of quoting header #set attribution = "On %d, %n wrote:" # format of quoting header
#set reply_to # reply to Reply to: field #set reply_to # reply to Reply to: field
#set reverse_name # reply as whomever it was to #set reverse_name # reply as whomever it was to
#set include # include message in replies #set include # include message in replies
#set forward_quote # include message in forwards #set forward_quote # include message in forwards
#set text_flowed #set text_flowed
#unset sig_dashes # no dashes before sig #unset sig_dashes # no dashes before sig
#unset mime_forward # forward attachments as part of body #unset mime_forward # forward attachments as part of body
#unset help # No help bar at the top of index #unset help # No help bar at the top of index
## set status_on_top # Status bar on top of index ## set status_on_top # Status bar on top of index
#set tmpdir = ~/Programs/neomutt/temp # where to keep temp files #set tmpdir = ~/Programs/neomutt/temp # where to keep temp files
unset confirmappend # don't ask, just do! unset confirmappend # don't ask, just do!
set quit # don't ask, just do!! set quit # don't ask, just do!!
unset mark_old # read/new is good enough for me unset mark_old # read/new is good enough for me
#set beep_new # bell on new mails #set beep_new # bell on new mails
set pipe_decode # strip headers and eval mimes when piping set pipe_decode # strip headers and eval mimes when piping
set thorough_search # strip headers and eval mimes before searching set thorough_search # strip headers and eval mimes before searching
set timeout = 0 set timeout = 0
# status bar, date format, finding stuff etc. # status bar, date format, finding stuff etc.
set status_chars = " *%A" 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 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 date_format = "%d.%m.%Y %H:%M"
#set sort = threads #set sort = threads
#set sort_aux = reverse-last-date-received #set sort_aux = reverse-last-date-received
#set uncollapse_jump #set uncollapse_jump
#set sort_re #set sort_re
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*" set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+" set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
set send_charset = "utf-8:iso-8859-1:us-ascii" set send_charset = "utf-8:iso-8859-1:us-ascii"
set charset = "utf-8" set charset = "utf-8"
set arrow_cursor = "no" # Change `color indicator` depending set arrow_cursor = "no" # Change `color indicator` depending
# notmuch shortcuts # notmuch shortcuts
# Points to the notmuch directory # Points to the notmuch directory
set nm_default_url = "notmuch://$HOME/Mail/anish" set nm_default_url = "notmuch://$HOME/Mail/anish"
# Makes notmuch return threads rather than messages # Makes notmuch return threads rather than messages
set nm_query_type = "threads" set nm_query_type = "threads"
# Binding for notmuch search # Binding for notmuch search
bind index \\ vfolder-from-query bind index \\ vfolder-from-query
# Pager View Options # Pager View Options
set pager_index_lines = 10 # Shows 10 lines of index when pager is active set pager_index_lines = 10 # Shows 10 lines of index when pager is active
set pager_context = 3 set pager_context = 3
set pager_stop set pager_stop
set menu_scroll set menu_scroll
set tilde set tilde
unset markers unset markers
#set header_cache = "~/.cache/mutt" #set header_cache = "~/.cache/mutt"
#set message_cachedir = "~/.cache/mutt" #set message_cachedir = "~/.cache/mutt"
set query_command = "khard email --parsable --search-in-source-files '%s'" set query_command = "khard email --parsable --search-in-source-files '%s'"
### Color Settings ### Color Settings
# Header colors: # Header colors:
color header blue default ".*" color header blue default ".*"
color header brightmagenta default "^(From)" color header brightmagenta default "^(From)"
color header brightcyan default "^(Subject)" color header brightcyan default "^(Subject)"
color header brightwhite default "^(CC|BCC)" color header brightwhite default "^(CC|BCC)"
mono bold bold mono bold bold
mono underline underline mono underline underline
mono indicator reverse mono indicator reverse
mono error bold mono error bold
color normal default default color normal default default
color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space. color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space.
color sidebar_highlight red default color sidebar_highlight red default
color sidebar_divider brightblack black color sidebar_divider brightblack black
color sidebar_flagged red black color sidebar_flagged red black
color sidebar_new green black color sidebar_new green black
color normal brightyellow default color normal brightyellow default
color error red default color error red default
color tilde black default color tilde black default
color message cyan default color message cyan default
color markers red white color markers red white
color attachment white default color attachment white default
color search brightmagenta default color search brightmagenta default
color status brightyellow black color status brightyellow black
color hdrdefault brightgreen default color hdrdefault brightgreen default
color quoted green default color quoted green default
color quoted1 blue default color quoted1 blue default
color quoted2 cyan default color quoted2 cyan default
color quoted3 yellow default color quoted3 yellow default
color quoted4 red default color quoted4 red default
color quoted5 brightred default color quoted5 brightred default
color signature brightgreen default color signature brightgreen default
color bold black default color bold black default
color underline black default color underline black default
color normal default default color normal default default
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses 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 brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
color body green default "\`[^\`]*\`" # Green text between ` and ` color body green default "\`[^\`]*\`" # Green text between ` and `
color body brightblue default "^# \.*" # Headings as bold blue color body brightblue default "^# \.*" # Headings as bold blue
color body brightcyan default "^## \.*" # Subheadings as bold cyan color body brightcyan default "^## \.*" # Subheadings as bold cyan
color body brightgreen default "^### \.*" # Subsubheadings as bold green color body brightgreen default "^### \.*" # Subsubheadings as bold green
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
color body brightcyan default "[;:][-o][)/(|]" # emoticons color body brightcyan default "[;:][-o][)/(|]" # emoticons
color body brightcyan default "[;:][)(|]" # emoticons color body brightcyan default "[;:][)(|]" # emoticons
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon? color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon? color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
color body red default "(BAD signature)" color body red default "(BAD signature)"
color body cyan default "(Good signature)" color body cyan default "(Good signature)"
color body brightblack default "^gpg: Good signature .*" color body brightblack default "^gpg: Good signature .*"
color body brightyellow default "^gpg: " color body brightyellow default "^gpg: "
color body brightyellow red "^gpg: BAD signature from.*" color body brightyellow red "^gpg: BAD signature from.*"
mono body bold "^gpg: Good signature" mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*" 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<>\"]" 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: # Default index colors:
color index yellow default '.*' color index yellow default '.*'
color index_author red default '.*' color index_author red default '.*'
color index_number blue default color index_number blue default
color index_subject cyan default '.*' color index_subject cyan default '.*'
# For new mail: # For new mail:
color index brightyellow black "~N" color index brightyellow black "~N"
color index_author brightred black "~N" color index_author brightred black "~N"
color index_subject brightcyan black "~N" color index_subject brightcyan black "~N"
color progress black cyan color progress black cyan
### Mappings Settings ### Mappings Settings
# General rebindings # General rebindings
bind attach <return> view-mailcap bind attach <return> view-mailcap
bind attach l view-mailcap bind attach l view-mailcap
bind editor <space> noop bind editor <space> noop
bind pager c imap-fetch-mail bind pager c imap-fetch-mail
bind index G last-entry bind index G last-entry
bind index g noop bind index g noop
bind index gg first-entry bind index gg first-entry
bind pager,attach h exit bind pager,attach h exit
bind pager j next-line bind pager j next-line
bind pager k previous-line bind pager k previous-line
bind pager l view-attachments bind pager l view-attachments
bind index D delete-message bind index D delete-message
bind index U undelete-message bind index U undelete-message
bind index L limit bind index L limit
bind index h noop bind index h noop
bind index l display-message bind index l display-message
bind browser h goto-parent bind browser h goto-parent
bind browser l select-entry bind browser l select-entry
bind pager,browser gg top-page bind pager,browser gg top-page
bind pager,browser G bottom-page bind pager,browser G bottom-page
bind index,pager,browser d half-down bind index,pager,browser d half-down
bind index,pager,browser u half-up bind index,pager,browser u half-up
bind index,pager R group-reply bind index,pager R group-reply
bind index \031 previous-undeleted # Mouse wheel bind index \031 previous-undeleted # Mouse wheel
bind index \005 next-undeleted # Mouse wheel bind index \005 next-undeleted # Mouse wheel
bind pager \031 previous-line # Mouse wheel bind pager \031 previous-line # Mouse wheel
bind pager \005 next-line # Mouse wheel bind pager \005 next-line # Mouse wheel
bind editor <Tab> complete-query bind editor <Tab> complete-query
# sidebar mappings # sidebar mappings
bind index,pager \Ck sidebar-prev bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new bind index,pager \Cn sidebar-next-new
bind index,pager B sidebar-toggle-visible bind index,pager B sidebar-toggle-visible
# global index and pager shortcuts # global index and pager shortcuts
bind index,pager @ compose-to-sender bind index,pager @ compose-to-sender
bind index,pager D purge-message bind index,pager D purge-message
bind index <tab> sync-mailbox bind index <tab> sync-mailbox
bind index <space> collapse-thread bind index <space> collapse-thread
# Email completion bindings # Email completion bindings
bind editor <Tab> complete-query bind editor <Tab> complete-query
bind editor ^T complete bind editor ^T complete
# Press A to add contact to Khard address book # Press A to add contact to Khard address book
macro index,pager A \ macro index,pager A \
"<pipe-message>khard add-email<return>" \ "<pipe-message>khard add-email<return>" \
"add the sender email address to khard" "add the sender email address to khard"
''; '';
}; };
services.imapnotify.enable = true; services.imapnotify.enable = true;
home.packages = [ pkgs.neomutt pkgs.evolution ]; home.packages = [ pkgs.neomutt pkgs.evolution ];
accounts.email = { accounts.email = {
accounts.anish = { accounts.anish = {
primary = true; primary = true;
address = "anish@lakhwara.com"; address = "anish@lakhwara.com";
#alias = [ "*@lakhwara.com" ]; #alias = [ "*@lakhwara.com" ];
#gpg = { #gpg = {
# key = ""; # key = "";
# signByDefault = true; # signByDefault = true;
#}; #};
imap.host = "imap.fastmail.com"; imap.host = "imap.fastmail.com";
mbsync = { mbsync = {
enable = true; enable = true;
create = "both"; create = "both";
expunge = "both"; expunge = "both";
remove = "both"; remove = "both";
extraConfig.local.subFolders = "Verbatim"; extraConfig.local.subFolders = "Verbatim";
}; };
imapnotify = { imapnotify = {
enable = true; enable = true;
boxes = [ "Inbox" ]; boxes = [ "Inbox" ];
onNotify = "${pkgs.isync}/bin/mbsync anish && ${pkgs.notmuch}/bin/notmuch index"; onNotify = "${pkgs.isync}/bin/mbsync anish && ${pkgs.notmuch}/bin/notmuch index";
onNotifyPost = { onNotifyPost = {
mail = "${pkgs.libnotify}/bin/notify-send -a mail 'email: new in %s'"; mail = "${pkgs.libnotify}/bin/notify-send -a mail 'email: new in %s'";
#update = "${pkgs.libnotify}/bin/notify-send -a mail 'email: update %s'"; #update = "${pkgs.libnotify}/bin/notify-send -a mail 'email: update %s'";
#expunge = "${pkgs.libnotify}/bin/notify-send -a mail 'email: expunge %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 = "${pkgs.coreutils}/bin/cat /run/agenix/fastmail";
smtp = {
host = "fastmail.com";
};
userName = "anish@lakhwara.com";
neomutt = {
enable = true;
}; };
}; };
msmtp.enable = true;
notmuch.enable = true;
realName = "Anish Lakhwara";
signature = {
text = ''
Thanks,
Anish
'';
showSignature = "append";
};
passwordCommand = "${pkgs.coreutils}/bin/cat /run/agenix/fastmail";
smtp = {
host = "fastmail.com";
};
userName = "anish@lakhwara.com";
neomutt = {
enable = true;
};
}; };
}; };
} }

View file

@ -1,105 +1,105 @@
{pkgs, ... }: { pkgs, ... }:
{ {
home-manager.users.anish = { programs.browserpass.enable = true;
programs.browserpass.enable = true; programs.browserpass.browsers = [ "firefox" ];
programs.browserpass.browsers = [ "firefox" ]; #env.XDG_DEXSTOP_DIR = "$HOME/";
#env.XDG_DEXSTOP_DIR = "$HOME/"; programs.firefox.profiles.anish.userChrome = (builtins.readFile ./userChrome.css);
programs.firefox.profiles.anish.userChrome = (builtins.readFile ./userChrome.css); programs.firefox.profiles.anish.settings = {
programs.firefox.profiles.anish.settings = { "devtools.theme" = "dark";
"devtools.theme" = "dark"; # Enable userContent.css and userChrome.css for our theme modules
# Enable userContent.css and userChrome.css for our theme modules "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; # Stop creating ~/Downloads!
# Stop creating ~/Downloads! "browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this!
"browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this! # Don't use the built-in password manager; a nixos user is more likely
# Don't use the built-in password manager; a nixos user is more likely # using an external one (you are using one, right?).
# using an external one (you are using one, right?). #"signon.rememberSignons" = false;
#"signon.rememberSignons" = false; # Do not check if Firefox is the default browser
# Do not check if Firefox is the default browser "browser.shell.checkDefaultBrowser" = false;
"browser.shell.checkDefaultBrowser" = false; # Disable the "new tab page" feature and show a blank tab instead
# Disable the "new tab page" feature and show a blank tab instead # https://wiki.mozilla.org/Privacy/Reviews/New_Tab
# https://wiki.mozilla.org/Privacy/Reviews/New_Tab # https://support.mozilla.org/en-US/kb/new-tab-page-show-hide-and-customize-top-sites#w_how-do-i-turn-the-new-tab-page-off
# https://support.mozilla.org/en-US/kb/new-tab-page-show-hide-and-customize-top-sites#w_how-do-i-turn-the-new-tab-page-off "browser.newtabpage.enabled" = false;
"browser.newtabpage.enabled" = false; "browser.newtab.url" = "about:blank";
"browser.newtab.url" = "about:blank"; # Disable Activity Stream
# Disable Activity Stream # https://wiki.mozilla.org/Firefox/Activity_Stream
# https://wiki.mozilla.org/Firefox/Activity_Stream "browser.newtabpage.activity-stream.enabled" = false;
"browser.newtabpage.activity-stream.enabled" = false; # Disable new tab tile ads & preload
# Disable new tab tile ads & preload # http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox
# http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox # http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331
# http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331 # https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping
# https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping # https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source # https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping "browser.newtabpage.enhanced" = false;
"browser.newtabpage.enhanced" = false; "browser.newtab.preload" = false;
"browser.newtab.preload" = false; "browser.newtabpage.directory.ping" = "";
"browser.newtabpage.directory.ping" = ""; "browser.newtabpage.directory.source" = "data:text/plain,{}";
"browser.newtabpage.directory.source" = "data:text/plain,{}"; # Disable some not so useful functionality.
# Disable some not so useful functionality. "media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
"media.videocontrols.picture-in-picture.video-toggle.enabled" = false; "extensions.htmlaboutaddons.recommendations.enabled" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false; "extensions.htmlaboutaddons.discover.enabled" = false;
"extensions.htmlaboutaddons.discover.enabled" = false; "extensions.pocket.enabled" = false;
"extensions.pocket.enabled" = false; "app.normandy.enabled" = false;
"app.normandy.enabled" = false; "app.normandy.api_url" = "";
"app.normandy.api_url" = ""; "extensions.shield-recipe-client.enabled" = false;
"extensions.shield-recipe-client.enabled" = false; "app.shield.optoutstudies.enabled" = false;
"app.shield.optoutstudies.enabled" = false; # Disable battery API
# Disable battery API # https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager
# https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager # https://bugzilla.mozilla.org/show_bug.cgi?id=1313580
# https://bugzilla.mozilla.org/show_bug.cgi?id=1313580 "dom.battery.enabled" = false;
"dom.battery.enabled" = false; # Disable "beacon" asynchronous HTTP transfers (used for analytics)
# Disable "beacon" asynchronous HTTP transfers (used for analytics) # https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon
# https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon "beacon.enabled" = false;
"beacon.enabled" = false; # Disable pinging URIs specified in HTML <a> ping= attributes
# Disable pinging URIs specified in HTML <a> ping= attributes # http://kb.mozillazine.org/Browser.send_pings
# http://kb.mozillazine.org/Browser.send_pings "browser.send_pings" = false;
"browser.send_pings" = false; # Disable gamepad API to prevent USB device enumeration
# Disable gamepad API to prevent USB device enumeration # https://www.w3.org/TR/gamepad/
# https://www.w3.org/TR/gamepad/ # https://trac.torproject.org/projects/tor/ticket/13023
# https://trac.torproject.org/projects/tor/ticket/13023 "dom.gamepad.enabled" = false;
"dom.gamepad.enabled" = false; # Don't try to guess domain names when entering an invalid domain name in URL bar
# Don't try to guess domain names when entering an invalid domain name in URL bar # http://www-archive.mozilla.org/docs/end-user/domain-guessing.html
# http://www-archive.mozilla.org/docs/end-user/domain-guessing.html "browser.fixup.alternate.enabled" = false;
"browser.fixup.alternate.enabled" = false; # Disable telemetry
# Disable telemetry # https://wiki.mozilla.org/Platform/Features/Telemetry
# https://wiki.mozilla.org/Platform/Features/Telemetry # https://wiki.mozilla.org/Privacy/Reviews/Telemetry
# https://wiki.mozilla.org/Privacy/Reviews/Telemetry # https://wiki.mozilla.org/Telemetry
# https://wiki.mozilla.org/Telemetry # https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry
# https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry # https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715
# https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715 # https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry
# https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry # https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html
# https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html # https://wiki.mozilla.org/Telemetry/Experiments
# https://wiki.mozilla.org/Telemetry/Experiments # https://support.mozilla.org/en-US/questions/1197144
# https://support.mozilla.org/en-US/questions/1197144 # https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1
# https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1 "toolkit.telemetry.enabled" = false;
"toolkit.telemetry.enabled" = false; "toolkit.telemetry.unified" = false;
"toolkit.telemetry.unified" = false; "toolkit.telemetry.archive.enabled" = false;
"toolkit.telemetry.archive.enabled" = false; "experiments.supported" = false;
"experiments.supported" = false; "experiments.enabled" = false;
"experiments.enabled" = false; "experiments.manifest.uri" = "";
"experiments.manifest.uri" = ""; # Disable health reports (basically more telemetry)
# Disable health reports (basically more telemetry) # https://support.mozilla.org/en-US/kb/firefox-health-report-understand-your-browser-perf
# https://support.mozilla.org/en-US/kb/firefox-health-report-understand-your-browser-perf # https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html
# https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html "datareporting.healthreport.uploadEnabled" = false;
"datareporting.healthreport.uploadEnabled" = false; "datareporting.healthreport.service.enabled" = false;
"datareporting.healthreport.service.enabled" = false; "datareporting.policy.dataSubmissionEnabled" = false;
"datareporting.policy.dataSubmissionEnabled" = false; };
};
# Override? # Override?
home.packages = with pkgs; [ home.packages = with pkgs; [
firefox-bin firefox-bin
(makeDesktopItem { (makeDesktopItem {
name = "firefox-private"; name = "firefox-private";
desktopName = "Firefox (Private)"; desktopName = "Firefox (Private)";
genericName = "Open a private Firefox window"; genericName = "Open a private Firefox window";
icon = "firefox"; icon = "firefox";
exec = "${firefox-bin}/bin/firefox --private-window"; exec = "${firefox-bin}/bin/firefox --private-window";
categories = "Network"; categories = "Network";
}) })
]; ];
home.file = let cfgPath = ".mozilla/firefox"; in { home.file = let cfgPath = ".mozilla/firefox"; in
{
"${cfgPath}/profiles.ini".text = '' "${cfgPath}/profiles.ini".text = ''
[Profile0] [Profile0]
Name=default Name=default
@ -112,5 +112,4 @@
''; '';
"${cfgPath}/anish.default/chrome/userChrome.css".source = ./userChrome.css; "${cfgPath}/anish.default/chrome/userChrome.css".source = ./userChrome.css;
}; };
};
} }

View file

@ -58,14 +58,14 @@ let
python-with-my-packages = pkgs.python3.withPackages my-python-packages; python-with-my-packages = pkgs.python3.withPackages my-python-packages;
in in
{ {
environment.variables.EDITOR = "nvim"; #environment.variables.EDITOR = "nvim";
environment.shellAliases = { #environment.shellAliases = {
k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD"; # k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD";
kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD"; # kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD";
}; #};
#environment.systemPackages = with customPlugins; [ tidal ]; #environment.systemPackages = with customPlugins; [ tidal ];
home-manager.users.anish.programs.neovim = { programs.neovim = {
enable = true; enable = true;
extraConfig = '' extraConfig = ''