diff --git a/flake.lock b/flake.lock index 50370b8b..5e5381e8 100644 --- a/flake.lock +++ b/flake.lock @@ -35,26 +35,6 @@ "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": { "inputs": { "flake-compat": "flake-compat", @@ -398,7 +378,6 @@ "root": { "inputs": { "agenix": "agenix", - "darwin": "darwin", "deploy": "deploy", "digga": "digga", "home": "home", diff --git a/flake.nix b/flake.nix index 4f6f2267..f6dee6c2 100644 --- a/flake.nix +++ b/flake.nix @@ -19,9 +19,6 @@ home.url = "github:nix-community/home-manager/release-21.11"; home.inputs.nixpkgs.follows = "nixos"; - darwin.url = "github:LnL7/nix-darwin"; - darwin.inputs.nixpkgs.follows = "nixos"; - deploy.url = "github:serokell/deploy-rs"; deploy.inputs.nixpkgs.follows = "nixos"; @@ -52,6 +49,9 @@ digga.lib.mkFlake { inherit self inputs; + supportedSystems = [ + "x86_64-linux" + ]; channelsConfig = { allowUnfree = true; }; @@ -97,7 +97,6 @@ imports = [ (digga.lib.importHosts ./hosts) ]; hosts = { /* set host specific properties here */ - NixOS = { }; curve = { channelName = "nixos"; #modules = [ ]; # nixos-hardware.nixosModules.lenovo-thinkpad @@ -116,9 +115,10 @@ base = [ core users.root users.anish ]; # TODO make anish non gui sealight = [ base ]; # matrix rsshub backup wireguard website mossnet = [ base ]; # shaarli wallabag nextcloud taskwarrior headphones - home-manager = [ users.profiles.firefox users.profiles.desktop users.profiles.nvim ]; - graphical = [ base home-manager bluetooth music sync wireguard wifi ]; - curve = [ graphical users.profiles.email users.profiles.cal ]; + cube = [ base ]; + # home-manager = [ users.profiles.firefox users.profiles.desktop users.profiles.nvim ]; + graphical = [ base bluetooth music sync wireguard wifi desktop ]; + curve = [ graphical ]; work = [ base home-manager ]; }; }; @@ -126,17 +126,18 @@ home = { imports = [ (digga.lib.importExportableModules ./users/modules) ]; - exportedModules = [ ]; + # exportedModules = [ ]; + # modules = [ ]; importables = rec { profiles = digga.lib.rakeLeaves ./users/profiles; suites = with profiles; rec { - hmBase = [ direnv git ]; - gui = [ hmBase profiles.firefox profiles.desktop ]; + hmBase = [ direnv git nvim ]; + gui = [ hmBase firefox desktop email cal ]; }; }; users = { nixos = { suites, ... }: { imports = suites.hmBase; }; - curve = { suites, ... }: { imports = suites.gui; }; + anish = { suites, ... }: { imports = suites.gui; }; }; # digga.lib.importers.rakeLeaves ./users/hm; }; @@ -144,18 +145,6 @@ homeConfigurations = digga.lib.mkHomeConfigurations 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; - } - ; + deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { }; + }; } diff --git a/hosts/NixOS.nix b/hosts/NixOS.nix deleted file mode 100644 index 3b084119..00000000 --- a/hosts/NixOS.nix +++ /dev/null @@ -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"; }; -} diff --git a/hosts/box.nix b/hosts/box.nix deleted file mode 100644 index 0db3279e..00000000 --- a/hosts/box.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/hosts/cube/configuration.nix b/hosts/cube/configuration.nix index 7ce9a331..984273ba 100644 --- a/hosts/cube/configuration.nix +++ b/hosts/cube/configuration.nix @@ -10,7 +10,7 @@ # Use the GRUB 2 boot loader. boot.loader.grub.enable = true; 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. diff --git a/hosts/curve/default.nix b/hosts/curve/default.nix index 831d06be..74048e55 100644 --- a/hosts/curve/default.nix +++ b/hosts/curve/default.nix @@ -6,10 +6,6 @@ profiles.mossnet-hosts ] ++ suites.curve; - home-manager.users.anish = { self, suites, ... }: { - imports = [ ] ++ suites.hmBase; - }; - fileSystems."/mnt/ftp" = { device = "192.168.1.240:/home/ftp"; fsType = "nfs"; diff --git a/hosts/hypercube.nix b/hosts/hypercube.nix deleted file mode 100644 index 0db3279e..00000000 --- a/hosts/hypercube.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/profiles/desktop/default.nix b/profiles/desktop/default.nix index 4df2d6d4..931c783f 100644 --- a/profiles/desktop/default.nix +++ b/profiles/desktop/default.nix @@ -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 ] - #environment.systemPackages = with pkgs; [ - # nheko - # newsflash - # sublime-music - # tdesktop - # obs-studio - #]; - #environment.systemPackages = with pkgs; [ - # lightdm - # dunst - # libnotify - # (polybar.override { - # pulseSupport = true; - # nlSupport = true; - # }) - #]; - # - #services = { - # picom.enable = true; - # #redshift.enable = true; - # xserver = { - # enable = true; - # displayManager = { - # defaultSession = "none+bspwm"; - # lightdm.enable = true; - # lightdm.greeters.mini.enable = true; - # lightdm.greeters.mini.user = "anish"; # TODO hardcoded - # }; - # windowManager.bspwm.enable = true; - # windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc"; - # windowManager.bspwm.sxhkd.configFile = "/home/anish/sxhkdrc"; - # #windowManager.default = "bspwm"; - # }; - #}; - # - #systemd.user.services."dunst" = { - # enable = true; - # description = ""; - # wantedBy = [ "default.target" ]; - # serviceConfig.Restart = "always"; - # serviceConfig.RestartSec = 2; - # serviceConfig.ExecStart = "${pkgs.dunst}/bin/dunst"; - #}; - #services.xserver.displayManager.lightdm.greeters.mini.extraConfig = '' - # text-color = "#ff79c6" - # password-background-color = "#1E2029" - # window-color = "#181a23" - # border-color = "#181a23" - #''; + # TODO modularize + #imports = [ ./xdg.nix ]; + + services = { + gnome.gnome-keyring.enable = true; + upower.enable = true; + + dbus = { + enable = true; + packages = [ pkgs.gnome3.dconf ]; + }; + }; + + security.pam.services.sddm.enableGnomeKeyring = true; + + environment.sessionVariables = rec { + XDG_CACHE_HOME = "\${HOME}/.cache"; + XDG_CONFIG_HOME = "\${HOME}/.config"; + XDG_BIN_HOME = "\${HOME}/.local/bin"; + XDG_DATA_HOME = "\${HOME}/.local/share"; + + PATH = [ + "\${XDG_BIN_HOME}" + ]; + }; + + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "ripcord" + "vcv-rack" + ]; + + 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 <>/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" ]; }) + ]; } diff --git a/users/profiles/cal/default.nix b/users/profiles/cal/default.nix index 910d5a03..807f17c9 100644 --- a/users/profiles/cal/default.nix +++ b/users/profiles/cal/default.nix @@ -1,102 +1,101 @@ -{pkgs, config, ...}: +{ pkgs, config, age, ... }: { - 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 - ]; + #age.secrets.mossnet.file = "/etc/nixos/secrets/mossnet.age"; + #age.secrets.mossnet.owner = "anish"; - xdg.configFile = { - "vdirsyncer/config".text = '' - [general] - status_path = "/home/anish/.config/vdirsyncer/status/" + home.packages = with pkgs; [ + khal + khard + vdirsyncer + ]; - [pair contacts] - a = "contacts_local" - b = "contacts_remote" - collections = ["from a", "from b"] - metadata = ["displayname"] + xdg.configFile = { + "vdirsyncer/config".text = '' + [general] + status_path = "/home/anish/.config/vdirsyncer/status/" - [storage contacts_local] - type = "filesystem" - path = "~/.contacts/" - fileext = ".vcf" + [pair contacts] + a = "contacts_local" + b = "contacts_remote" + collections = ["from a", "from b"] + metadata = ["displayname"] - [storage contacts_remote] - type = "carddav" - url = "http://mossnet.lan/remote.php/dav/files/anish/" - username = "anish" - password.fetch = ["command", "cat", "/run/secrets/mossnet"] + [storage contacts_local] + type = "filesystem" + path = "~/.contacts/" + fileext = ".vcf" - [pair calendar] - a = "calendar_local" - b = "calendar_remote" - collections = ["from a", "from b"] - metadata = ["displayname"] + [storage contacts_remote] + type = "carddav" + url = "http://mossnet.lan/remote.php/dav/files/anish/" + username = "anish" + password.fetch = ["command", "cat", "/run/secrets/mossnet"] - [storage calendar_local] - type = "filesystem" - path = "~/.calendar/" - fileext = ".ics" + [pair calendar] + a = "calendar_local" + b = "calendar_remote" + collections = ["from a", "from b"] + metadata = ["displayname"] - [storage calendar_remote] - type = "caldav" - url = "http://mossnet.lan/remote.php/dav/files/anish/" - username = "anish" - password.fetch = ["command", "cat", "/run/secrets/mossnet"] - ''; + [storage calendar_local] + type = "filesystem" + path = "~/.calendar/" + fileext = ".ics" - "khal/config".text = '' - [calendars] + [storage calendar_remote] + type = "caldav" + url = "http://mossnet.lan/remote.php/dav/files/anish/" + username = "anish" + password.fetch = ["command", "cat", "/run/secrets/mossnet"] + ''; - [[calendar_local]] - path = ~/.calendar/* - type = discover + "khal/config".text = '' + [calendars] - [[contacts_local]] - path = ~/.contacts/* - type = birthdays + [[calendar_local]] + path = ~/.calendar/* + type = discover - [locale] - timeformat = %H:%M - dateformat = %Y-%m-%d - longdateformat = %Y-%m-%d - datetimeformat = %Y-%m-%d %H:%M - longdatetimeformat = %Y-%m-%d %H:%M - ''; + [[contacts_local]] + path = ~/.contacts/* + type = birthdays - "khard/khard.conf".text = '' - [addressbooks] - [[personal]] - path = ~/.contacts/* + [locale] + timeformat = %H:%M + dateformat = %Y-%m-%d + longdateformat = %Y-%m-%d + datetimeformat = %Y-%m-%d %H:%M + longdatetimeformat = %Y-%m-%d %H:%M + ''; - [general] - debug = no - default_action = list - editor = nvim, -i, NONE - merge_editor = nvim, -d + "khard/khard.conf".text = '' + [addressbooks] + [[personal]] + path = ~/.contacts/* - [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 + [general] + debug = no + default_action = list + editor = nvim, -i, NONE + merge_editor = nvim, -d - [vcard] - private_objects = Jabber, - preferred_version = 3.0 - search_in_source_files = no - skip_unparsable = no - ''; - }; + [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 + ''; }; } diff --git a/users/profiles/desktop/default.nix b/users/profiles/desktop/default.nix index a12ecbcd..e7738c62 100644 --- a/users/profiles/desktop/default.nix +++ b/users/profiles/desktop/default.nix @@ -8,299 +8,126 @@ let }; in { - # TODO modularize - #imports = [ ./xdg.nix ]; - - services = { - gnome.gnome-keyring.enable = true; - upower.enable = true; - - dbus = { - enable = true; - packages = [ pkgs.gnome3.dconf ]; + 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 + ]; - 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 - home-manager.users.anish.xdg.configHome = "/home/anish/.config"; # TODO bad hard coded - home-manager.users.anish.xdg.configFile = { + # Move required config files around + xdg.enable = true; # This doesn't seem to do anything so we have below + 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.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg"; "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula"; }; - environment.sessionVariables = rec { - XDG_CACHE_HOME = "\${HOME}/.cache"; - XDG_CONFIG_HOME = "\${HOME}/.config"; - XDG_BIN_HOME = "\${HOME}/.local/bin"; - XDG_DATA_HOME = "\${HOME}/.local/share"; - - PATH = [ - "\${XDG_BIN_HOME}" - ]; + 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; }; - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ - "ripcord" - "vcv-rack" - ]; - - 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 <>/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"; - }; + qt = { + enable = true; + platformTheme = "gtk"; + style = { name = "qt5ct-style"; }; }; - fonts.fonts = with pkgs; [ - fira-code - fira-code-symbols - hermit - #hack - siji - font-awesome-ttf - proggyfonts - (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; }) - ]; - - home-manager.users.anish = { - 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 = '' + # 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; # blur-background = true; # blur-background-frame = true; @@ -308,11 +135,10 @@ in blur-kern = "7x7box"; 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 } diff --git a/users/profiles/email/default.nix b/users/profiles/email/default.nix index 9aa27ad7..904756e2 100644 --- a/users/profiles/email/default.nix +++ b/users/profiles/email/default.nix @@ -1,295 +1,293 @@ { 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 new"; - }; - programs.mbsync.enable = true; - programs.msmtp.enable = true; - programs.notmuch = { - enable = true; - }; - home.file.".mailcap".text = '' - text/html; firefox %s - application/pdf; zathura %s - image/png; feh %s - image/jpeg; feh %s - ''; - programs.neomutt = { - enable = true; - extraConfig = '' - # Shamelessly Stolen from https://gideonwolfe.com/posts/workflow/neomutt/intro/ - # set editor to neovim - set editor = "nvim +':set textwidth=0'" + #age.secrets.fastmail.file = "/etc/nixos/secrets/fastmail.age"; + #age.secrets.fastmail.owner = "anish"; + services.mbsync = { + enable = true; + frequency = "*:0/30"; + #postExec = "${pkgs.notmuch}/bin/notmuch new"; + }; + programs.mbsync.enable = true; + programs.msmtp.enable = true; + programs.notmuch = { + enable = true; + }; + home.file.".mailcap".text = '' + text/html; firefox %s + application/pdf; zathura %s + image/png; feh %s + image/jpeg; feh %s + ''; + programs.neomutt = { + enable = true; + extraConfig = '' + # Shamelessly Stolen from https://gideonwolfe.com/posts/workflow/neomutt/intro/ + # set editor to neovim + set editor = "nvim +':set textwidth=0'" - #set virtual_spoolfile=yes - set folder="~/Mail/anish" - 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' ' '` + #set virtual_spoolfile=yes + set folder="~/Mail/anish" + 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' ' '` - ## Folder with emails - #set folder = "~/Mail/anish" - # Type of mailbox - # 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 + ## Folder with emails + #set folder = "~/Mail/anish" + # Type of mailbox + # 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 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/plain text/enriched text/html text/* + # Set preffered view modes + auto_view text/html text/calendar application/ics # view html automatically + alternative_order text/plain text/enriched text/html 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 + # 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 + 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 + # 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 - # notmuch shortcuts - # Points to the notmuch directory - set nm_default_url = "notmuch://$HOME/Mail/anish" - # Makes notmuch return threads rather than messages - set nm_query_type = "threads" - # Binding for notmuch search - bind index \\ vfolder-from-query + # notmuch shortcuts + # Points to the notmuch directory + set nm_default_url = "notmuch://$HOME/Mail/anish" + # Makes notmuch return threads rather than messages + set nm_query_type = "threads" + # Binding for notmuch search + bind index \\ vfolder-from-query - # 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 + # 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 header_cache = "~/.cache/mutt" - #set message_cachedir = "~/.cache/mutt" + #set header_cache = "~/.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 - # Header colors: - color header blue default ".*" - color header brightmagenta default "^(From)" - color header brightcyan default "^(Subject)" - color header brightwhite default "^(CC|BCC)" + ### 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 + 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<>\"]" + 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 '.*' + # 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" + # For new mail: + color index brightyellow black "~N" + color index_author brightred black "~N" + color index_subject brightcyan black "~N" - color progress black cyan + color progress black cyan - ### Mappings Settings + ### Mappings Settings - # General rebindings - bind attach view-mailcap - bind attach l view-mailcap - bind editor 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 complete-query + # General rebindings + bind attach view-mailcap + bind attach l view-mailcap + bind editor 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 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 + # 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 sync-mailbox - bind index collapse-thread + # global index and pager shortcuts + bind index,pager @ compose-to-sender + bind index,pager D purge-message + bind index sync-mailbox + bind index collapse-thread - # Email completion bindings - bind editor complete-query - bind editor ^T complete + # Email completion bindings + bind editor complete-query + bind editor ^T complete - # Press A to add contact to Khard address book - macro index,pager A \ - "khard add-email" \ - "add the sender email address to khard" - ''; - }; - services.imapnotify.enable = true; - home.packages = [ pkgs.neomutt pkgs.evolution ]; + # Press A to add contact to Khard address book + macro index,pager A \ + "khard add-email" \ + "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 = "${pkgs.coreutils}/bin/cat /run/agenix/fastmail"; - smtp = { - host = "fastmail.com"; - }; - userName = "anish@lakhwara.com"; - neomutt = { - enable = true; + 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 = "${pkgs.coreutils}/bin/cat /run/agenix/fastmail"; + smtp = { + host = "fastmail.com"; + }; + userName = "anish@lakhwara.com"; + neomutt = { + enable = true; + }; }; }; } diff --git a/users/profiles/firefox/default.nix b/users/profiles/firefox/default.nix index eed10aa9..a697737e 100644 --- a/users/profiles/firefox/default.nix +++ b/users/profiles/firefox/default.nix @@ -1,105 +1,105 @@ -{pkgs, ... }: +{ pkgs, ... }: { - home-manager.users.anish = { - programs.browserpass.enable = true; - programs.browserpass.browsers = [ "firefox" ]; - #env.XDG_DEXSTOP_DIR = "$HOME/"; - programs.firefox.profiles.anish.userChrome = (builtins.readFile ./userChrome.css); - programs.firefox.profiles.anish.settings = { - "devtools.theme" = "dark"; - # Enable userContent.css and userChrome.css for our theme modules - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - # Stop creating ~/Downloads! - "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 - # using an external one (you are using one, right?). - #"signon.rememberSignons" = false; - # Do not check if Firefox is the default browser - "browser.shell.checkDefaultBrowser" = false; - # Disable the "new tab page" feature and show a blank tab instead - # 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 - "browser.newtabpage.enabled" = false; - "browser.newtab.url" = "about:blank"; - # Disable Activity Stream - # https://wiki.mozilla.org/Firefox/Activity_Stream - "browser.newtabpage.activity-stream.enabled" = false; - # Disable new tab tile ads & preload - # http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox - # http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331 - # 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-ping - "browser.newtabpage.enhanced" = false; - "browser.newtab.preload" = false; - "browser.newtabpage.directory.ping" = ""; - "browser.newtabpage.directory.source" = "data:text/plain,{}"; - # Disable some not so useful functionality. - "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; - "extensions.htmlaboutaddons.recommendations.enabled" = false; - "extensions.htmlaboutaddons.discover.enabled" = false; - "extensions.pocket.enabled" = false; - "app.normandy.enabled" = false; - "app.normandy.api_url" = ""; - "extensions.shield-recipe-client.enabled" = false; - "app.shield.optoutstudies.enabled" = false; - # Disable battery API - # https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager - # https://bugzilla.mozilla.org/show_bug.cgi?id=1313580 - "dom.battery.enabled" = false; - # Disable "beacon" asynchronous HTTP transfers (used for analytics) - # https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon - "beacon.enabled" = false; - # Disable pinging URIs specified in HTML ping= attributes - # http://kb.mozillazine.org/Browser.send_pings - "browser.send_pings" = false; - # Disable gamepad API to prevent USB device enumeration - # https://www.w3.org/TR/gamepad/ - # https://trac.torproject.org/projects/tor/ticket/13023 - "dom.gamepad.enabled" = false; - # 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 - "browser.fixup.alternate.enabled" = false; - # Disable telemetry - # https://wiki.mozilla.org/Platform/Features/Telemetry - # https://wiki.mozilla.org/Privacy/Reviews/Telemetry - # https://wiki.mozilla.org/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://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry - # https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html - # https://wiki.mozilla.org/Telemetry/Experiments - # https://support.mozilla.org/en-US/questions/1197144 - # https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1 - "toolkit.telemetry.enabled" = false; - "toolkit.telemetry.unified" = false; - "toolkit.telemetry.archive.enabled" = false; - "experiments.supported" = false; - "experiments.enabled" = false; - "experiments.manifest.uri" = ""; - # Disable health reports (basically more telemetry) - # 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 - "datareporting.healthreport.uploadEnabled" = false; - "datareporting.healthreport.service.enabled" = false; - "datareporting.policy.dataSubmissionEnabled" = false; - }; + programs.browserpass.enable = true; + programs.browserpass.browsers = [ "firefox" ]; + #env.XDG_DEXSTOP_DIR = "$HOME/"; + programs.firefox.profiles.anish.userChrome = (builtins.readFile ./userChrome.css); + programs.firefox.profiles.anish.settings = { + "devtools.theme" = "dark"; + # Enable userContent.css and userChrome.css for our theme modules + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + # Stop creating ~/Downloads! + "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 + # using an external one (you are using one, right?). + #"signon.rememberSignons" = false; + # Do not check if Firefox is the default browser + "browser.shell.checkDefaultBrowser" = false; + # Disable the "new tab page" feature and show a blank tab instead + # 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 + "browser.newtabpage.enabled" = false; + "browser.newtab.url" = "about:blank"; + # Disable Activity Stream + # https://wiki.mozilla.org/Firefox/Activity_Stream + "browser.newtabpage.activity-stream.enabled" = false; + # Disable new tab tile ads & preload + # http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox + # http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331 + # 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-ping + "browser.newtabpage.enhanced" = false; + "browser.newtab.preload" = false; + "browser.newtabpage.directory.ping" = ""; + "browser.newtabpage.directory.source" = "data:text/plain,{}"; + # Disable some not so useful functionality. + "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; + "extensions.htmlaboutaddons.recommendations.enabled" = false; + "extensions.htmlaboutaddons.discover.enabled" = false; + "extensions.pocket.enabled" = false; + "app.normandy.enabled" = false; + "app.normandy.api_url" = ""; + "extensions.shield-recipe-client.enabled" = false; + "app.shield.optoutstudies.enabled" = false; + # Disable battery API + # https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager + # https://bugzilla.mozilla.org/show_bug.cgi?id=1313580 + "dom.battery.enabled" = false; + # Disable "beacon" asynchronous HTTP transfers (used for analytics) + # https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon + "beacon.enabled" = false; + # Disable pinging URIs specified in HTML ping= attributes + # http://kb.mozillazine.org/Browser.send_pings + "browser.send_pings" = false; + # Disable gamepad API to prevent USB device enumeration + # https://www.w3.org/TR/gamepad/ + # https://trac.torproject.org/projects/tor/ticket/13023 + "dom.gamepad.enabled" = false; + # 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 + "browser.fixup.alternate.enabled" = false; + # Disable telemetry + # https://wiki.mozilla.org/Platform/Features/Telemetry + # https://wiki.mozilla.org/Privacy/Reviews/Telemetry + # https://wiki.mozilla.org/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://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry + # https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html + # https://wiki.mozilla.org/Telemetry/Experiments + # https://support.mozilla.org/en-US/questions/1197144 + # https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1 + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.unified" = false; + "toolkit.telemetry.archive.enabled" = false; + "experiments.supported" = false; + "experiments.enabled" = false; + "experiments.manifest.uri" = ""; + # Disable health reports (basically more telemetry) + # 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 + "datareporting.healthreport.uploadEnabled" = false; + "datareporting.healthreport.service.enabled" = false; + "datareporting.policy.dataSubmissionEnabled" = false; + }; - # Override? - home.packages = with pkgs; [ - firefox-bin - (makeDesktopItem { - name = "firefox-private"; - desktopName = "Firefox (Private)"; - genericName = "Open a private Firefox window"; - icon = "firefox"; - exec = "${firefox-bin}/bin/firefox --private-window"; - categories = "Network"; - }) - ]; + # Override? + home.packages = with pkgs; [ + firefox-bin + (makeDesktopItem { + name = "firefox-private"; + desktopName = "Firefox (Private)"; + genericName = "Open a private Firefox window"; + icon = "firefox"; + exec = "${firefox-bin}/bin/firefox --private-window"; + categories = "Network"; + }) + ]; - home.file = let cfgPath = ".mozilla/firefox"; in { + home.file = let cfgPath = ".mozilla/firefox"; in + { "${cfgPath}/profiles.ini".text = '' [Profile0] Name=default @@ -112,5 +112,4 @@ ''; "${cfgPath}/anish.default/chrome/userChrome.css".source = ./userChrome.css; }; - }; } diff --git a/users/profiles/nvim/default.nix b/users/profiles/nvim/default.nix index bceb3beb..1684375b 100644 --- a/users/profiles/nvim/default.nix +++ b/users/profiles/nvim/default.nix @@ -58,14 +58,14 @@ let python-with-my-packages = pkgs.python3.withPackages my-python-packages; in { - environment.variables.EDITOR = "nvim"; - environment.shellAliases = { - k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD"; - kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD"; - }; + #environment.variables.EDITOR = "nvim"; + #environment.shellAliases = { + # k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD"; + # kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD"; + #}; #environment.systemPackages = with customPlugins; [ tidal ]; - home-manager.users.anish.programs.neovim = { + programs.neovim = { enable = true; extraConfig = ''