merge main

This commit is contained in:
Anish Lakhwara 2022-04-23 01:16:01 +10:00
commit 13ef38fbd3
26 changed files with 996 additions and 925 deletions

2
.envrc
View file

@ -1 +1 @@
use nix
use flake

View file

@ -3,16 +3,40 @@
> #### ⚠ Advisory ⚠
> Do you remember how you got here? Where were you going? What were you leaving behind?
> Even if you cant't remember, I hope you remember what you were looking for.
> I hope you find it here.
> Are you sure you want to go down this rabbit hole, Alice?
## Getting Started
You can clone this directory to `/etc/nixos/` on a NixOS machine, with flakes installed.
Then you can summon a machine with `sudo nixos-rebuild test --flakes '/etc/nixos/#<machine>'`
For a list of machines inscribed in this spellbook look [here][here]
The rest is left as an exercise to the reader.
This is my personal deployment hub. I configure all my personal servers from this repo. Good luck if you're looking to graft this.
You'll probably want to run some `install.sh` that will configure the base NixOS system. Some of them aren't in a good state.
From there you can either install the host you want with `sudo nixos-rebuild switch --flake .#<host>` or enter the cockpit with `nix develop` and deploy servers remotely through `deploy`
### Status: Alpha
## Personal dotfiles
<img src="./screenshots/fakebusy.png" width="100%" />
<p align="center">
<span><img src="./screenshots/desktop.png" height="178" /></span>
<span><img src="./screenshots/rofi.png" height="178" /></span>
<span><img src="./screenshots/firefox.png" height="178" /></span>
</p>
------
| | |
|----------------|----------------------------------------------------------|
| **Shell:** | bash / elvish |
| **DM:** | lightdm + lightdm-mini-greeter |
| **WM:** | bspwm + polybar |
| **Editor:** | nvim |
| **Terminal:** | kitty |
| **Launcher:** | rofi |
| **Browser:** | firefox |
| **GTK Theme:** | [Ant Dracula](https://github.com/EliverLara/Ant-Dracula) |
-----
### Status: Beta
The volcanic rock still shifts below this structure. It has not solidified and cannot yet be considered `home`
You should not expect landmarks here.
Learn to adopt Chaos.
@ -22,7 +46,6 @@ Summoning is powerful magic, and cannot be created in isolation. It stands on th
following giants][giants]:
### :onion: &mdash; like the layers of an onion
- [`devos/devos`][devos]
- [`divnix/digga`][digga]
- [`gytis-ivaskevicius/flake-utils-plus`][fup]
- [`numtide/flake-utils`][fu]
@ -30,12 +53,21 @@ following giants][giants]:
- [`serokell/deploy-rs`][deploy]
- [`berberman/nvfetcher`][nvfetcher]
- [`NixOS/nixpkgs`][nixpkgs]
- Agenix
- direnv
:heart:
### But Why?
The future is more uncertain than ever. Make dependable what you can, in whatever way you know how.
Stop doing it by yourself, unless we learn to work with one another will we be able to grow long term solutions. Perhaps together we can stop collapse.
Stop doing it by yourself, unless we learn to work with one another will we be able to grow long term solutions.
Managing servers by hand sucks, k8s doesn't allow me to transitively deploy all my configuration to multiple personal machines, and ansible wasn't good enough.
You probably don't want to use nixOS, I'm a masocist
### Grafts
https://github.com/hlissner/dotfiles
# License
DevOS is licensed under the [MIT License][mit].
@ -58,6 +90,4 @@ DevOS is licensed under the [MIT License][mit].
[nixos]: https://nixos.org/manual/nixos/stable
[nixpkgs]: https://github.com/NixOS/nixpkgs
[nvfetcher]: https://github.com/berberman/nvfetcher
[please]: https://github.com/nrdxp/devos/tree/nrd
[here]: https://anish.lakhwara.com/ops/machines

View file

@ -20,6 +20,31 @@
"type": "github"
}
},
"basant": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixos"
],
"poonam": [
"poonam"
]
},
"locked": {
"lastModified": 1650354421,
"narHash": "sha256-Jr6OvDFQ6gUugH4qWeoitkVtNqsE/HZECDAjqhCRnjc=",
"ref": "main",
"rev": "8ae61a25c1debb788204afe1964ec429f8defc83",
"revCount": 60,
"type": "git",
"url": "ssh://gitea@git.sealight.xyz/aynish/basant"
},
"original": {
"ref": "main",
"type": "git",
"url": "ssh://gitea@git.sealight.xyz/aynish/basant"
}
},
"blank": {
"locked": {
"lastModified": 1625557891,
@ -35,26 +60,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",
@ -175,7 +180,7 @@
},
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils"
"flake-utils": "flake-utils_2"
},
"locked": {
"lastModified": 1639385028,
@ -206,6 +211,21 @@
"type": "github"
}
},
"flake-utils_3": {
"locked": {
"lastModified": 1638122382,
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home": {
"inputs": {
"nixpkgs": [
@ -360,6 +380,21 @@
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1649667661,
"narHash": "sha256-9cbstidkXdAC3ZzokV6clgCoeLSbbs2tis9KFsqCzTM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a48aeae76ad50bb15ad9bda2cf51d7ae5c621853",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"locked": {
"lastModified": 1626378135,
@ -376,7 +411,7 @@
"nvfetcher": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_2",
"flake-utils": "flake-utils_3",
"nixpkgs": [
"nixos"
]
@ -395,10 +430,29 @@
"type": "github"
}
},
"poonam": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1650620898,
"narHash": "sha256-QuwHuGEF+BhIXC4YmFtaw++DEOgDdvWxvY5BFso4j20=",
"ref": "main",
"rev": "a1ea4bffc99d58e182ff646069a072f56fe1f031",
"revCount": 326,
"type": "git",
"url": "ssh://gitea@git.sealight.xyz/aynish/kitaab"
},
"original": {
"ref": "main",
"type": "git",
"url": "ssh://gitea@git.sealight.xyz/aynish/kitaab"
}
},
"root": {
"inputs": {
"agenix": "agenix",
"darwin": "darwin",
"basant": "basant",
"deploy": "deploy",
"digga": "digga",
"home": "home",
@ -407,7 +461,8 @@
"nixos": "nixos",
"nixos-hardware": "nixos-hardware",
"nur": "nur",
"nvfetcher": "nvfetcher"
"nvfetcher": "nvfetcher",
"poonam": "poonam"
}
},
"utils": {

View file

@ -7,34 +7,33 @@
inputs =
{
# Nix
nixos.url = "github:nixos/nixpkgs/release-21.11";
latest.url = "github:nixos/nixpkgs/nixos-unstable";
# Community
home.url = "github:nix-community/home-manager/release-21.11";
home.inputs.nixpkgs.follows = "nixos";
nixos-hardware.url = "github:nixos/nixos-hardware";
# Lib
digga.url = "github:divnix/digga";
digga.inputs.nixpkgs.follows = "nixos";
digga.inputs.nixlib.follows = "nixos";
digga.inputs.home-manager.follows = "home";
digga.inputs.deploy.follows = "deploy";
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";
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixos";
nvfetcher.url = "github:berberman/nvfetcher";
nvfetcher.inputs.nixpkgs.follows = "nixos";
naersk.url = "github:nmattia/naersk";
naersk.inputs.nixpkgs.follows = "nixos";
nixos-hardware.url = "github:nixos/nixos-hardware";
# Tools
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixos";
deploy.url = "github:serokell/deploy-rs";
deploy.inputs.nixpkgs.follows = "nixos";
# Packages
poonam.url = "git+ssh://gitea@git.sealight.xyz/aynish/kitaab?ref=main";
basant.url = "git+ssh://gitea@git.sealight.xyz/aynish/basant?ref=main";
basant.inputs.nixpkgs.follows = "nixos";
basant.inputs.poonam.follows = "poonam";
};
outputs =
@ -47,11 +46,15 @@
, agenix
, nvfetcher
, deploy
, basant
, ...
} @ inputs:
digga.lib.mkFlake
{
inherit self inputs;
supportedSystems = [
"x86_64-linux"
];
channelsConfig = { allowUnfree = true; };
@ -85,9 +88,8 @@
system = "x86_64-linux";
channelName = "nixos";
imports = [ (digga.lib.importExportableModules ./modules) ];
exportedModules = [
modules = [
{ lib.our = self.lib; }
digga.nixosModules.bootstrapIso
digga.nixosModules.nixConfig
home.nixosModules.home-manager
agenix.nixosModules.age
@ -97,13 +99,14 @@
imports = [ (digga.lib.importHosts ./hosts) ];
hosts = {
/* set host specific properties here */
NixOS = { };
curve = {
channelName = "nixos";
#modules = [ ]; # nixos-hardware.nixosModules.lenovo-thinkpad
# Yubikey
};
cube = { };
cube = {
modules = [ basant.nixosModule ];
};
# box = { };
# hypercube = { };
# work = { };
@ -113,30 +116,32 @@
users = digga.lib.rakeLeaves ./users;
};
suites = with profiles; rec {
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 ];
work = [ base home-manager ];
base = [ core users.root users.anish ];
sealight = [ base server ]; # matrix rsshub backup wireguard
mossnet = [ base server ]; # shaarli wallabag nextcloud taskwarrior headphones
cube = [ base site server ];
graphical = [ base bluetooth music sync wireguard wifi desktop ];
curve = [ graphical secrets ];
work = [ base ];
};
};
};
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 ];
work = [ hmBase firefox ];
};
};
users = {
nixos = { suites, ... }: { imports = suites.hmBase; };
curve = { suites, ... }: { imports = suites.gui; };
anish = { suites, ... }: { imports = suites.gui; };
}; # digga.lib.importers.rakeLeaves ./users/hm;
};
@ -144,18 +149,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 { };
};
}

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

@ -7,52 +7,29 @@
./hardware-configuration.nix
];
# 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
networking.hostName = "cube"; # Define your hostname.
# Set your time zone.
time.timeZone = "Australia/Brisbane";
# Use flakes
nix = {
package = pkgs.nixFlakes; # or versioned attributes like nix_2_7
extraOptions = ''
experimental-features = nix-command flakes
'';
};
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
# Per-interface useDHCP will be mandatory in the future, so this generated config
# replicates the default behaviour.
networking.useDHCP = false;
networking.interfaces.ens3.useDHCP = true;
i18n.defaultLocale = "en_US.UTF-8";
# Define a user account. Don't forget to set a password with passwd.
users.users.anish = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve" ];
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
vim
gitAndTools.gitFull
];
services.openssh.enable = true;
# THIS VALUE DETERMINES THE nixOS RELEASE FROM WHICH THE DEFAULT
# SETTINGS FOR STATEFUL DATA, LIKE FILE LOCATIONS AND DATABASE VERSIONS
# ON YOUR SYSTEM WERE TAKEN. iTS PERFECTLY FINE AND RECOMMENDED TO LEAVE
# THIS VALUE AT THE RELEASE VERSION OF THE FIRST INSTALL OF THIS SYSTEM.
# BEFORE CHANGING THIS VALUE READ THE DOCUMENTATION FOR THIS OPTION
# (E.G. MAN CONFIGURATION.NIX OR ON HTTPS://NIXOS.ORG/NIXOS/OPTIONS.HTML).
system.stateVersion = "21.11"; # DID YOU READ THE COMMENT?
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "21.11"; # Did you read the comment?
}

View file

@ -2,9 +2,9 @@
{
imports = [
./configuration.nix
]; # ++ [suites.cube];
] ++ suites.cube;
#home-manager.users.anish = { self, suites, ... }: {
# imports = [ ] ++ suites.hmBase;
#};
home-manager.users.anish = { self, suites, ... }: {
imports = [ ] ++ suites.hmBase;
};
}

View file

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

View file

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

62
install-simple.sh Normal file
View file

@ -0,0 +1,62 @@
#!/usr/bin/env bash
# partition the files yourself sorry
sudo fatlabel /dev/vda1 NIXBOOT
sudo mkfs.ext4 /dev/vda2 -L NIXROOT
sudo mount /dev/disk/by-label/NIXROOT /mnt
sudo mkdir -p /mnt/boot
sudo mount /dev/disk/by-label/NIXBOOT /mnt/boot
sudo nixos-generate-config --root /mnt
cat > /mnt/etc/nixos/configuration.nix <<'endmsg'
{ config, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
# Define on which hard drive you want to install Grub.
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
# Enable Flakes
nix = {
package = pkgs.nixUnstable;
extraOptions = ''
experimental-features = nix-command flakes
'';
};
time.timeZone = "Australia/Brisbane";
networking.useDHCP = false;
networking.interfaces.ens3.useDHCP = true; # TODO you probably want to change this
i18n.defaultLocale = "en_US.UTF-8";
users.users.anish = {
isNormalUser = true;
hashedPassword = "MVHHpy9gbe3ow";
extraGroups = [ "wheel" ]; # Enable sudo for the user.
openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve" ];
};
security.sudo.wheelNeedsPassword = false; # needed for deploy-rs
services.openssh.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "21.11"; # Did you read the comment?
}
endmsg
sudo nixos-install

View file

@ -166,3 +166,7 @@ cat > /mnt/etc/nixos/configuration.nix <<'endmsg'
}
endmsg
cd /mnt
nixos-install --root /mnt
passwd

View file

@ -1,54 +1,181 @@
{ 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 <<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"
'';
};
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

@ -0,0 +1,9 @@
{ pkgs, config, lib, ... }:
{
# Secrets used by home-manager modules
age.secrets.fastmail.file = "/etc/nixos/secrets/fastmail.age";
age.secrets.fastmail.owner = "anish";
age.secrets.mossnet.file = "/etc/nixos/secrets/mossnet.age";
age.secrets.mossnet.owner = "anish";
}

View file

@ -0,0 +1,6 @@
{ config, ... }:
{
services.openssh.enable = true;
networking.firewall.allowedTCPPorts = [ 22 ];
security.sudo.wheelNeedsPassword = false; # needed for deploy-rs
}

View file

@ -0,0 +1,6 @@
{ self, pkgs, ... }:
{
services."anish.lakhwara.com".enable = true;
security.acme.email = "anish+acme@lakhwara.com";
security.acme.acceptTerms = true;
}

BIN
screenshots/desktop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

BIN
screenshots/fakebusy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

BIN
screenshots/firefox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 KiB

BIN
screenshots/rofi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View file

@ -8,6 +8,7 @@
hashedPassword = "MVHHpy9gbe3ow";
isNormalUser = true;
extraGroups = [ "wheel" "audio" ];
openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve" ];
};
home-manager.users.anish.programs.git = {

View file

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

View file

@ -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 <<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";
};
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
}

View file

@ -397,7 +397,7 @@ ramp-capacity-1 = " "
ramp-capacity-2 = " "
ramp-capacity-3 = " "
ramp-capacity-4 = " "
ramp-capacity-font =3
ramp-capacity-font = 1
ramp-capacity-foreground = ${colors.sky}
animation-charging-0 = " "
@ -405,7 +405,7 @@ animation-charging-1 = " "
animation-charging-2 = " "
animation-charging-3 = " "
animation-charging-4 = " "
animation-charging-font =3
animation-charging-font = 1
animation-charging-foreground = ${colors.sky}
animation-charging-framerate = 750

View file

@ -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 <return> view-mailcap
bind attach l view-mailcap
bind editor <space> noop
bind pager c imap-fetch-mail
bind index G last-entry
bind index g noop
bind index gg first-entry
bind pager,attach h exit
bind pager j next-line
bind pager k previous-line
bind pager l view-attachments
bind index D delete-message
bind index U undelete-message
bind index L limit
bind index h noop
bind index l display-message
bind browser h goto-parent
bind browser l select-entry
bind pager,browser gg top-page
bind pager,browser G bottom-page
bind index,pager,browser d half-down
bind index,pager,browser u half-up
bind index,pager R group-reply
bind index \031 previous-undeleted # Mouse wheel
bind index \005 next-undeleted # Mouse wheel
bind pager \031 previous-line # Mouse wheel
bind pager \005 next-line # Mouse wheel
bind editor <Tab> complete-query
# General rebindings
bind attach <return> view-mailcap
bind attach l view-mailcap
bind editor <space> noop
bind pager c imap-fetch-mail
bind index G last-entry
bind index g noop
bind index gg first-entry
bind pager,attach h exit
bind pager j next-line
bind pager k previous-line
bind pager l view-attachments
bind index D delete-message
bind index U undelete-message
bind index L limit
bind index h noop
bind index l display-message
bind browser h goto-parent
bind browser l select-entry
bind pager,browser gg top-page
bind pager,browser G bottom-page
bind index,pager,browser d half-down
bind index,pager,browser u half-up
bind index,pager R group-reply
bind index \031 previous-undeleted # Mouse wheel
bind index \005 next-undeleted # Mouse wheel
bind pager \031 previous-line # Mouse wheel
bind pager \005 next-line # Mouse wheel
bind editor <Tab> complete-query
# sidebar mappings
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new
bind index,pager B sidebar-toggle-visible
# sidebar mappings
bind index,pager \Ck sidebar-prev
bind index,pager \Cj sidebar-next
bind index,pager \Co sidebar-open
bind index,pager \Cp sidebar-prev-new
bind index,pager \Cn sidebar-next-new
bind index,pager B sidebar-toggle-visible
# global index and pager shortcuts
bind index,pager @ compose-to-sender
bind index,pager D purge-message
bind index <tab> sync-mailbox
bind index <space> collapse-thread
# global index and pager shortcuts
bind index,pager @ compose-to-sender
bind index,pager D purge-message
bind index <tab> sync-mailbox
bind index <space> collapse-thread
# Email completion bindings
bind editor <Tab> complete-query
bind editor ^T complete
# Email completion bindings
bind editor <Tab> complete-query
bind editor ^T complete
# Press A to add contact to Khard address book
macro index,pager A \
"<pipe-message>khard add-email<return>" \
"add the sender email address to khard"
'';
};
services.imapnotify.enable = true;
home.packages = [ pkgs.neomutt pkgs.evolution ];
# Press A to add contact to Khard address book
macro index,pager A \
"<pipe-message>khard add-email<return>" \
"add the sender email address to khard"
'';
};
services.imapnotify.enable = true;
home.packages = [ pkgs.neomutt pkgs.evolution ];
accounts.email = {
accounts.anish = {
primary = true;
address = "anish@lakhwara.com";
#alias = [ "*@lakhwara.com" ];
#gpg = {
# key = "";
# signByDefault = true;
#};
imap.host = "imap.fastmail.com";
mbsync = {
enable = true;
create = "both";
expunge = "both";
remove = "both";
extraConfig.local.subFolders = "Verbatim";
};
imapnotify = {
enable = true;
boxes = [ "Inbox" ];
onNotify = "${pkgs.isync}/bin/mbsync anish && ${pkgs.notmuch}/bin/notmuch index";
onNotifyPost = {
mail = "${pkgs.libnotify}/bin/notify-send -a mail 'email: new in %s'";
#update = "${pkgs.libnotify}/bin/notify-send -a mail 'email: update %s'";
#expunge = "${pkgs.libnotify}/bin/notify-send -a mail 'email: expunge %s'";
};
};
msmtp.enable = true;
notmuch.enable = true;
realName = "Anish Lakhwara";
signature = {
text = ''
Thanks,
Anish
'';
showSignature = "append";
};
passwordCommand = "${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;
};
};
};
}

View file

@ -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 <a> 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 <a> 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;
};
};
}