merge main
This commit is contained in:
commit
13ef38fbd3
52
README.md
52
README.md
|
@ -3,16 +3,40 @@
|
||||||
|
|
||||||
> #### ⚠ Advisory ⚠
|
> #### ⚠ Advisory ⚠
|
||||||
> Do you remember how you got here? Where were you going? What were you leaving behind?
|
> 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.
|
> Are you sure you want to go down this rabbit hole, Alice?
|
||||||
> I hope you find it here.
|
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
You can clone this directory to `/etc/nixos/` on a NixOS machine, with flakes installed.
|
This is my personal deployment hub. I configure all my personal servers from this repo. Good luck if you're looking to graft this.
|
||||||
Then you can summon a machine with `sudo nixos-rebuild test --flakes '/etc/nixos/#<machine>'`
|
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.
|
||||||
For a list of machines inscribed in this spellbook look [here][here]
|
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`
|
||||||
The rest is left as an exercise to the reader.
|
|
||||||
|
|
||||||
### 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`
|
The volcanic rock still shifts below this structure. It has not solidified and cannot yet be considered `home`
|
||||||
You should not expect landmarks here.
|
You should not expect landmarks here.
|
||||||
Learn to adopt Chaos.
|
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]:
|
following giants][giants]:
|
||||||
|
|
||||||
### :onion: — like the layers of an onion
|
### :onion: — like the layers of an onion
|
||||||
- [`devos/devos`][devos]
|
|
||||||
- [`divnix/digga`][digga]
|
- [`divnix/digga`][digga]
|
||||||
- [`gytis-ivaskevicius/flake-utils-plus`][fup]
|
- [`gytis-ivaskevicius/flake-utils-plus`][fup]
|
||||||
- [`numtide/flake-utils`][fu]
|
- [`numtide/flake-utils`][fu]
|
||||||
|
@ -30,12 +53,21 @@ following giants][giants]:
|
||||||
- [`serokell/deploy-rs`][deploy]
|
- [`serokell/deploy-rs`][deploy]
|
||||||
- [`berberman/nvfetcher`][nvfetcher]
|
- [`berberman/nvfetcher`][nvfetcher]
|
||||||
- [`NixOS/nixpkgs`][nixpkgs]
|
- [`NixOS/nixpkgs`][nixpkgs]
|
||||||
|
- Agenix
|
||||||
|
- direnv
|
||||||
|
|
||||||
:heart:
|
:heart:
|
||||||
|
|
||||||
### But Why?
|
### But Why?
|
||||||
The future is more uncertain than ever. Make dependable what you can, in whatever way you know how.
|
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
|
# License
|
||||||
DevOS is licensed under the [MIT License][mit].
|
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
|
[nixos]: https://nixos.org/manual/nixos/stable
|
||||||
[nixpkgs]: https://github.com/NixOS/nixpkgs
|
[nixpkgs]: https://github.com/NixOS/nixpkgs
|
||||||
[nvfetcher]: https://github.com/berberman/nvfetcher
|
[nvfetcher]: https://github.com/berberman/nvfetcher
|
||||||
[please]: https://github.com/nrdxp/devos/tree/nrd
|
|
||||||
[here]: https://anish.lakhwara.com/ops/machines
|
|
||||||
|
|
||||||
|
|
103
flake.lock
103
flake.lock
|
@ -20,6 +20,31 @@
|
||||||
"type": "github"
|
"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": {
|
"blank": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1625557891,
|
"lastModified": 1625557891,
|
||||||
|
@ -35,26 +60,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"darwin": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixos"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1645007752,
|
|
||||||
"narHash": "sha256-FQZMiVP/1vgR7x+TWonMf0NZczrZ4ZjhSTj3rM+kglY=",
|
|
||||||
"owner": "LnL7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"rev": "c944b5ee82a829ddf7fa6bd9300bc2fe3d005fa1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "LnL7",
|
|
||||||
"repo": "nix-darwin",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"deploy": {
|
"deploy": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
|
@ -175,7 +180,7 @@
|
||||||
},
|
},
|
||||||
"flake-utils-plus": {
|
"flake-utils-plus": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils"
|
"flake-utils": "flake-utils_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1639385028,
|
"lastModified": 1639385028,
|
||||||
|
@ -206,6 +211,21 @@
|
||||||
"type": "github"
|
"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": {
|
"home": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -360,6 +380,21 @@
|
||||||
"type": "github"
|
"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": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1626378135,
|
"lastModified": 1626378135,
|
||||||
|
@ -376,7 +411,7 @@
|
||||||
"nvfetcher": {
|
"nvfetcher": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixos"
|
"nixos"
|
||||||
]
|
]
|
||||||
|
@ -395,10 +430,29 @@
|
||||||
"type": "github"
|
"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": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"agenix": "agenix",
|
"agenix": "agenix",
|
||||||
"darwin": "darwin",
|
"basant": "basant",
|
||||||
"deploy": "deploy",
|
"deploy": "deploy",
|
||||||
"digga": "digga",
|
"digga": "digga",
|
||||||
"home": "home",
|
"home": "home",
|
||||||
|
@ -407,7 +461,8 @@
|
||||||
"nixos": "nixos",
|
"nixos": "nixos",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"nvfetcher": "nvfetcher"
|
"nvfetcher": "nvfetcher",
|
||||||
|
"poonam": "poonam"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils": {
|
"utils": {
|
||||||
|
|
85
flake.nix
85
flake.nix
|
@ -7,34 +7,33 @@
|
||||||
|
|
||||||
inputs =
|
inputs =
|
||||||
{
|
{
|
||||||
|
# Nix
|
||||||
nixos.url = "github:nixos/nixpkgs/release-21.11";
|
nixos.url = "github:nixos/nixpkgs/release-21.11";
|
||||||
latest.url = "github:nixos/nixpkgs/nixos-unstable";
|
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.url = "github:divnix/digga";
|
||||||
digga.inputs.nixpkgs.follows = "nixos";
|
digga.inputs.nixpkgs.follows = "nixos";
|
||||||
digga.inputs.nixlib.follows = "nixos";
|
digga.inputs.nixlib.follows = "nixos";
|
||||||
digga.inputs.home-manager.follows = "home";
|
digga.inputs.home-manager.follows = "home";
|
||||||
digga.inputs.deploy.follows = "deploy";
|
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.url = "github:berberman/nvfetcher";
|
||||||
nvfetcher.inputs.nixpkgs.follows = "nixos";
|
nvfetcher.inputs.nixpkgs.follows = "nixos";
|
||||||
|
|
||||||
naersk.url = "github:nmattia/naersk";
|
naersk.url = "github:nmattia/naersk";
|
||||||
naersk.inputs.nixpkgs.follows = "nixos";
|
naersk.inputs.nixpkgs.follows = "nixos";
|
||||||
|
# Tools
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
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 =
|
outputs =
|
||||||
|
@ -47,11 +46,15 @@
|
||||||
, agenix
|
, agenix
|
||||||
, nvfetcher
|
, nvfetcher
|
||||||
, deploy
|
, deploy
|
||||||
|
, basant
|
||||||
, ...
|
, ...
|
||||||
} @ inputs:
|
} @ inputs:
|
||||||
digga.lib.mkFlake
|
digga.lib.mkFlake
|
||||||
{
|
{
|
||||||
inherit self inputs;
|
inherit self inputs;
|
||||||
|
supportedSystems = [
|
||||||
|
"x86_64-linux"
|
||||||
|
];
|
||||||
|
|
||||||
channelsConfig = { allowUnfree = true; };
|
channelsConfig = { allowUnfree = true; };
|
||||||
|
|
||||||
|
@ -85,9 +88,8 @@
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
channelName = "nixos";
|
channelName = "nixos";
|
||||||
imports = [ (digga.lib.importExportableModules ./modules) ];
|
imports = [ (digga.lib.importExportableModules ./modules) ];
|
||||||
exportedModules = [
|
modules = [
|
||||||
{ lib.our = self.lib; }
|
{ lib.our = self.lib; }
|
||||||
digga.nixosModules.bootstrapIso
|
|
||||||
digga.nixosModules.nixConfig
|
digga.nixosModules.nixConfig
|
||||||
home.nixosModules.home-manager
|
home.nixosModules.home-manager
|
||||||
agenix.nixosModules.age
|
agenix.nixosModules.age
|
||||||
|
@ -97,13 +99,14 @@
|
||||||
imports = [ (digga.lib.importHosts ./hosts) ];
|
imports = [ (digga.lib.importHosts ./hosts) ];
|
||||||
hosts = {
|
hosts = {
|
||||||
/* set host specific properties here */
|
/* set host specific properties here */
|
||||||
NixOS = { };
|
|
||||||
curve = {
|
curve = {
|
||||||
channelName = "nixos";
|
channelName = "nixos";
|
||||||
#modules = [ ]; # nixos-hardware.nixosModules.lenovo-thinkpad
|
#modules = [ ]; # nixos-hardware.nixosModules.lenovo-thinkpad
|
||||||
# Yubikey
|
# Yubikey
|
||||||
};
|
};
|
||||||
cube = { };
|
cube = {
|
||||||
|
modules = [ basant.nixosModule ];
|
||||||
|
};
|
||||||
# box = { };
|
# box = { };
|
||||||
# hypercube = { };
|
# hypercube = { };
|
||||||
# work = { };
|
# work = { };
|
||||||
|
@ -113,30 +116,32 @@
|
||||||
users = digga.lib.rakeLeaves ./users;
|
users = digga.lib.rakeLeaves ./users;
|
||||||
};
|
};
|
||||||
suites = with profiles; rec {
|
suites = with profiles; rec {
|
||||||
base = [ core users.root users.anish ]; # TODO make anish non gui
|
base = [ core users.root users.anish ];
|
||||||
sealight = [ base ]; # matrix rsshub backup wireguard website
|
sealight = [ base server ]; # matrix rsshub backup wireguard
|
||||||
mossnet = [ base ]; # shaarli wallabag nextcloud taskwarrior headphones
|
mossnet = [ base server ]; # shaarli wallabag nextcloud taskwarrior headphones
|
||||||
home-manager = [ users.profiles.firefox users.profiles.desktop users.profiles.nvim ];
|
cube = [ base site server ];
|
||||||
graphical = [ base home-manager bluetooth music sync wireguard wifi ];
|
graphical = [ base bluetooth music sync wireguard wifi desktop ];
|
||||||
curve = [ graphical users.profiles.email users.profiles.cal ];
|
curve = [ graphical secrets ];
|
||||||
work = [ base home-manager ];
|
work = [ base ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
imports = [ (digga.lib.importExportableModules ./users/modules) ];
|
imports = [ (digga.lib.importExportableModules ./users/modules) ];
|
||||||
exportedModules = [ ];
|
# exportedModules = [ ];
|
||||||
|
# modules = [ ];
|
||||||
importables = rec {
|
importables = rec {
|
||||||
profiles = digga.lib.rakeLeaves ./users/profiles;
|
profiles = digga.lib.rakeLeaves ./users/profiles;
|
||||||
suites = with profiles; rec {
|
suites = with profiles; rec {
|
||||||
hmBase = [ direnv git ];
|
hmBase = [ direnv git nvim ];
|
||||||
gui = [ hmBase profiles.firefox profiles.desktop ];
|
gui = [ hmBase firefox desktop email cal ];
|
||||||
|
work = [ hmBase firefox ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
users = {
|
users = {
|
||||||
nixos = { suites, ... }: { imports = suites.hmBase; };
|
nixos = { suites, ... }: { imports = suites.hmBase; };
|
||||||
curve = { suites, ... }: { imports = suites.gui; };
|
anish = { suites, ... }: { imports = suites.gui; };
|
||||||
}; # digga.lib.importers.rakeLeaves ./users/hm;
|
}; # digga.lib.importers.rakeLeaves ./users/hm;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -144,18 +149,6 @@
|
||||||
|
|
||||||
homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations;
|
homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations;
|
||||||
|
|
||||||
deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations
|
deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { };
|
||||||
{
|
};
|
||||||
curve = {
|
|
||||||
profilesOrder = [ "system" "curve" ];
|
|
||||||
profiles.anish = {
|
|
||||||
user = "anish";
|
|
||||||
path = deploy.lib.x86_64-linux.activate.home-manager self.homeConfigurationsPortable.x86_64-linux.anish;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy.lib;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"; };
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -7,52 +7,29 @@
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Use the GRUB 2 boot loader.
|
|
||||||
boot.loader.grub.enable = true;
|
boot.loader.grub.enable = true;
|
||||||
boot.loader.grub.version = 2;
|
boot.loader.grub.version = 2;
|
||||||
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
|
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
|
||||||
|
|
||||||
networking.hostName = "cube"; # Define your hostname.
|
networking.hostName = "cube"; # Define your hostname.
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "Australia/Brisbane";
|
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.useDHCP = false;
|
||||||
networking.interfaces.ens3.useDHCP = true;
|
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; [
|
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
|
||||||
# THIS VALUE DETERMINES THE nixOS RELEASE FROM WHICH THE DEFAULT
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
# SETTINGS FOR STATEFUL DATA, LIKE FILE LOCATIONS AND DATABASE VERSIONS
|
# this value at the release version of the first install of this system.
|
||||||
# ON YOUR SYSTEM WERE TAKEN. iT‘S PERFECTLY FINE AND RECOMMENDED TO LEAVE
|
# Before changing this value read the documentation for this option
|
||||||
# THIS VALUE AT THE RELEASE VERSION OF THE FIRST INSTALL OF THIS SYSTEM.
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
# BEFORE CHANGING THIS VALUE READ THE DOCUMENTATION FOR THIS OPTION
|
system.stateVersion = "21.11"; # Did you read the comment?
|
||||||
# (E.G. MAN CONFIGURATION.NIX OR ON HTTPS://NIXOS.ORG/NIXOS/OPTIONS.HTML).
|
|
||||||
system.stateVersion = "21.11"; # DID YOU READ THE COMMENT?
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
]; # ++ [suites.cube];
|
] ++ suites.cube;
|
||||||
|
|
||||||
#home-manager.users.anish = { self, suites, ... }: {
|
home-manager.users.anish = { self, suites, ... }: {
|
||||||
# imports = [ ] ++ suites.hmBase;
|
imports = [ ] ++ suites.hmBase;
|
||||||
#};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
profiles.users.anish
|
|
||||||
profiles.mossnet-hosts
|
profiles.mossnet-hosts
|
||||||
] ++ suites.curve;
|
] ++ suites.curve;
|
||||||
|
|
||||||
home-manager.users.anish = { self, suites, ... }: {
|
home-manager.users.anish = { suites, ... }: {
|
||||||
imports = [ ] ++ suites.hmBase;
|
imports = suites.gui;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
fileSystems."/mnt/ftp" = {
|
fileSystems."/mnt/ftp" = {
|
||||||
device = "192.168.1.240:/home/ftp";
|
device = "192.168.1.240:/home/ftp";
|
||||||
fsType = "nfs";
|
fsType = "nfs";
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
62
install-simple.sh
Normal file
62
install-simple.sh
Normal 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. It‘s 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
|
|
@ -166,3 +166,7 @@ cat > /mnt/etc/nixos/configuration.nix <<'endmsg'
|
||||||
}
|
}
|
||||||
|
|
||||||
endmsg
|
endmsg
|
||||||
|
|
||||||
|
cd /mnt
|
||||||
|
nixos-install --root /mnt
|
||||||
|
passwd
|
||||||
|
|
|
@ -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 ]
|
# TODO modularize
|
||||||
#environment.systemPackages = with pkgs; [
|
#imports = [ ./xdg.nix ];
|
||||||
# nheko
|
|
||||||
# newsflash
|
services = {
|
||||||
# sublime-music
|
gnome.gnome-keyring.enable = true;
|
||||||
# tdesktop
|
upower.enable = true;
|
||||||
# obs-studio
|
|
||||||
#];
|
dbus = {
|
||||||
#environment.systemPackages = with pkgs; [
|
enable = true;
|
||||||
# lightdm
|
packages = [ pkgs.gnome3.dconf ];
|
||||||
# dunst
|
};
|
||||||
# libnotify
|
};
|
||||||
# (polybar.override {
|
|
||||||
# pulseSupport = true;
|
security.pam.services.sddm.enableGnomeKeyring = true;
|
||||||
# nlSupport = true;
|
|
||||||
# })
|
environment.sessionVariables = rec {
|
||||||
#];
|
XDG_CACHE_HOME = "\${HOME}/.cache";
|
||||||
#
|
XDG_CONFIG_HOME = "\${HOME}/.config";
|
||||||
#services = {
|
XDG_BIN_HOME = "\${HOME}/.local/bin";
|
||||||
# picom.enable = true;
|
XDG_DATA_HOME = "\${HOME}/.local/share";
|
||||||
# #redshift.enable = true;
|
|
||||||
# xserver = {
|
PATH = [
|
||||||
# enable = true;
|
"\${XDG_BIN_HOME}"
|
||||||
# displayManager = {
|
];
|
||||||
# defaultSession = "none+bspwm";
|
};
|
||||||
# lightdm.enable = true;
|
|
||||||
# lightdm.greeters.mini.enable = true;
|
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||||
# lightdm.greeters.mini.user = "anish"; # TODO hardcoded
|
"ripcord"
|
||||||
# };
|
"vcv-rack"
|
||||||
# windowManager.bspwm.enable = true;
|
];
|
||||||
# windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc";
|
|
||||||
# windowManager.bspwm.sxhkd.configFile = "/home/anish/sxhkdrc";
|
environment.systemPackages = with pkgs; [
|
||||||
# #windowManager.default = "bspwm";
|
# TODO move somewhere meaningful
|
||||||
# };
|
signal-desktop # bridge to sealight?
|
||||||
#};
|
scrot
|
||||||
#
|
ripcord
|
||||||
#systemd.user.services."dunst" = {
|
feh
|
||||||
# enable = true;
|
xkblayout-state
|
||||||
# description = "";
|
sublime-music
|
||||||
# wantedBy = [ "default.target" ];
|
vcv-rack
|
||||||
# serviceConfig.Restart = "always";
|
zathura
|
||||||
# serviceConfig.RestartSec = 2;
|
calibre
|
||||||
# serviceConfig.ExecStart = "${pkgs.dunst}/bin/dunst";
|
nheko
|
||||||
#};
|
mpv
|
||||||
#services.xserver.displayManager.lightdm.greeters.mini.extraConfig = ''
|
scrot
|
||||||
# text-color = "#ff79c6"
|
newsflash
|
||||||
# password-background-color = "#1E2029"
|
zeal
|
||||||
# window-color = "#181a23"
|
xclip
|
||||||
# border-color = "#181a23"
|
xdotool
|
||||||
#'';
|
rofi
|
||||||
|
rofimoji
|
||||||
|
obs-studio
|
||||||
|
lightdm
|
||||||
|
dunst
|
||||||
|
libnotify
|
||||||
|
(polybar.override {
|
||||||
|
pulseSupport = true;
|
||||||
|
nlSupport = true;
|
||||||
|
})
|
||||||
|
papirus-icon-theme
|
||||||
|
calendar-cli
|
||||||
|
wyrd
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
location.provider = "geoclue2";
|
||||||
|
services = {
|
||||||
|
redshift = {
|
||||||
|
enable = true;
|
||||||
|
temperature = {
|
||||||
|
day = 5500;
|
||||||
|
night = 3700;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
layout = "us,dvorak";
|
||||||
|
desktopManager.wallpaper.mode = "fill";
|
||||||
|
displayManager = {
|
||||||
|
defaultSession = "none+bspwm";
|
||||||
|
sessionCommands = ''
|
||||||
|
${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF
|
||||||
|
#define blk #1F2430
|
||||||
|
#define bblk #F28779
|
||||||
|
#define red #A6CC70
|
||||||
|
#define bred #FFCC66
|
||||||
|
#define grn #5CCFE6
|
||||||
|
#define bgrn #F29E74
|
||||||
|
#define ylw #77A8D9
|
||||||
|
#define bylw #5C6773
|
||||||
|
#define blu #707A8C
|
||||||
|
#define bblu #F27983
|
||||||
|
#define mag #BAE67E
|
||||||
|
#define bmag #FFD580
|
||||||
|
#define cyn #73D0FF
|
||||||
|
#define bcyn #FFA759
|
||||||
|
#define wht #95E6CB
|
||||||
|
#define bwht #CBCCC6
|
||||||
|
#define bg blk
|
||||||
|
#define fg wht
|
||||||
|
|
||||||
|
*.foreground: fg
|
||||||
|
*.background: bg
|
||||||
|
*.cursorColor: mag
|
||||||
|
|
||||||
|
*.color0: blk
|
||||||
|
*.color8: bblk
|
||||||
|
*.color1: red
|
||||||
|
*.color9: bred
|
||||||
|
*.color2: grn
|
||||||
|
*.color10: bgrn
|
||||||
|
*.color3: ylw
|
||||||
|
*.color11: bylw
|
||||||
|
*.color4: blu
|
||||||
|
*.color12: bblu
|
||||||
|
*.color5: mag
|
||||||
|
*.color13: bmag
|
||||||
|
*.color6: cyn
|
||||||
|
*.color14: bcyn
|
||||||
|
*.color7: wht
|
||||||
|
*.color15: bwht
|
||||||
|
|
||||||
|
! greys
|
||||||
|
*.color234: #1E2029
|
||||||
|
*.color235: #282a36
|
||||||
|
*.color236: #373844
|
||||||
|
*.color237: #44475a
|
||||||
|
*.color239: #565761
|
||||||
|
*.color240: #6272a4
|
||||||
|
*.color241: #b6b6b2
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# hotplug
|
||||||
|
connect() {
|
||||||
|
xrandr --output HDMI-2 --same-as eDP-1
|
||||||
|
}
|
||||||
|
|
||||||
|
disconnect() {
|
||||||
|
xrandr --output HDMI-2 --off
|
||||||
|
}
|
||||||
|
|
||||||
|
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
|
||||||
|
'';
|
||||||
|
lightdm.enable = true;
|
||||||
|
lightdm.greeters.mini.enable = true;
|
||||||
|
lightdm.greeters.mini.user = "anish"; # TODO hardcoded
|
||||||
|
lightdm.background = "/etc/nixos/users/profiles/desktop/background.jpg";
|
||||||
|
lightdm.greeters.mini.extraConfig = ''
|
||||||
|
text-color = "#ff79c6"
|
||||||
|
password-background-color = "#1E2029"
|
||||||
|
window-color = "#181a23"
|
||||||
|
border-color = "#181a23"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
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" ]; })
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
9
profiles/secrets/default.nix
Normal file
9
profiles/secrets/default.nix
Normal 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";
|
||||||
|
}
|
6
profiles/server/default.nix
Normal file
6
profiles/server/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
services.openssh.enable = true;
|
||||||
|
networking.firewall.allowedTCPPorts = [ 22 ];
|
||||||
|
security.sudo.wheelNeedsPassword = false; # needed for deploy-rs
|
||||||
|
}
|
6
profiles/site/default.nix
Normal file
6
profiles/site/default.nix
Normal 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
BIN
screenshots/desktop.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 MiB |
BIN
screenshots/fakebusy.png
Normal file
BIN
screenshots/fakebusy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 326 KiB |
BIN
screenshots/firefox.png
Normal file
BIN
screenshots/firefox.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 539 KiB |
BIN
screenshots/rofi.png
Normal file
BIN
screenshots/rofi.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 MiB |
|
@ -8,6 +8,7 @@
|
||||||
hashedPassword = "MVHHpy9gbe3ow";
|
hashedPassword = "MVHHpy9gbe3ow";
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "wheel" "audio" ];
|
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 = {
|
home-manager.users.anish.programs.git = {
|
||||||
|
|
|
@ -1,102 +1,98 @@
|
||||||
{pkgs, config, ...}:
|
{ pkgs, config, age, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
age.secrets.mossnet.file = "/etc/nixos/secrets/mossnet.age";
|
home.packages = with pkgs; [
|
||||||
age.secrets.mossnet.owner = "anish";
|
khal
|
||||||
home-manager.users.anish = {
|
khard
|
||||||
home.packages = with pkgs; [
|
vdirsyncer
|
||||||
khal
|
];
|
||||||
khard
|
|
||||||
vdirsyncer
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
"vdirsyncer/config".text = ''
|
"vdirsyncer/config".text = ''
|
||||||
[general]
|
[general]
|
||||||
status_path = "/home/anish/.config/vdirsyncer/status/"
|
status_path = "/home/anish/.config/vdirsyncer/status/"
|
||||||
|
|
||||||
[pair contacts]
|
[pair contacts]
|
||||||
a = "contacts_local"
|
a = "contacts_local"
|
||||||
b = "contacts_remote"
|
b = "contacts_remote"
|
||||||
collections = ["from a", "from b"]
|
collections = ["from a", "from b"]
|
||||||
metadata = ["displayname"]
|
metadata = ["displayname"]
|
||||||
|
|
||||||
[storage contacts_local]
|
[storage contacts_local]
|
||||||
type = "filesystem"
|
type = "filesystem"
|
||||||
path = "~/.contacts/"
|
path = "~/.contacts/"
|
||||||
fileext = ".vcf"
|
fileext = ".vcf"
|
||||||
|
|
||||||
[storage contacts_remote]
|
[storage contacts_remote]
|
||||||
type = "carddav"
|
type = "carddav"
|
||||||
url = "http://mossnet.lan/remote.php/dav/files/anish/"
|
url = "http://mossnet.lan/remote.php/dav/files/anish/"
|
||||||
username = "anish"
|
username = "anish"
|
||||||
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
|
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
|
||||||
|
|
||||||
[pair calendar]
|
[pair calendar]
|
||||||
a = "calendar_local"
|
a = "calendar_local"
|
||||||
b = "calendar_remote"
|
b = "calendar_remote"
|
||||||
collections = ["from a", "from b"]
|
collections = ["from a", "from b"]
|
||||||
metadata = ["displayname"]
|
metadata = ["displayname"]
|
||||||
|
|
||||||
[storage calendar_local]
|
[storage calendar_local]
|
||||||
type = "filesystem"
|
type = "filesystem"
|
||||||
path = "~/.calendar/"
|
path = "~/.calendar/"
|
||||||
fileext = ".ics"
|
fileext = ".ics"
|
||||||
|
|
||||||
[storage calendar_remote]
|
[storage calendar_remote]
|
||||||
type = "caldav"
|
type = "caldav"
|
||||||
url = "http://mossnet.lan/remote.php/dav/files/anish/"
|
url = "http://mossnet.lan/remote.php/dav/files/anish/"
|
||||||
username = "anish"
|
username = "anish"
|
||||||
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
|
password.fetch = ["command", "cat", "/run/secrets/mossnet"]
|
||||||
'';
|
'';
|
||||||
|
|
||||||
"khal/config".text = ''
|
"khal/config".text = ''
|
||||||
[calendars]
|
[calendars]
|
||||||
|
|
||||||
[[calendar_local]]
|
[[calendar_local]]
|
||||||
path = ~/.calendar/*
|
path = ~/.calendar/*
|
||||||
type = discover
|
type = discover
|
||||||
|
|
||||||
[[contacts_local]]
|
[[contacts_local]]
|
||||||
path = ~/.contacts/*
|
path = ~/.contacts/*
|
||||||
type = birthdays
|
type = birthdays
|
||||||
|
|
||||||
[locale]
|
[locale]
|
||||||
timeformat = %H:%M
|
timeformat = %H:%M
|
||||||
dateformat = %Y-%m-%d
|
dateformat = %Y-%m-%d
|
||||||
longdateformat = %Y-%m-%d
|
longdateformat = %Y-%m-%d
|
||||||
datetimeformat = %Y-%m-%d %H:%M
|
datetimeformat = %Y-%m-%d %H:%M
|
||||||
longdatetimeformat = %Y-%m-%d %H:%M
|
longdatetimeformat = %Y-%m-%d %H:%M
|
||||||
'';
|
'';
|
||||||
|
|
||||||
"khard/khard.conf".text = ''
|
"khard/khard.conf".text = ''
|
||||||
[addressbooks]
|
[addressbooks]
|
||||||
[[personal]]
|
[[personal]]
|
||||||
path = ~/.contacts/*
|
path = ~/.contacts/*
|
||||||
|
|
||||||
[general]
|
[general]
|
||||||
debug = no
|
debug = no
|
||||||
default_action = list
|
default_action = list
|
||||||
editor = nvim, -i, NONE
|
editor = nvim, -i, NONE
|
||||||
merge_editor = nvim, -d
|
merge_editor = nvim, -d
|
||||||
|
|
||||||
[contact table]
|
[contact table]
|
||||||
display = first_name
|
display = first_name
|
||||||
group_by_addressbook = no
|
group_by_addressbook = no
|
||||||
reverse = no
|
reverse = no
|
||||||
show_nicknames = yes
|
show_nicknames = yes
|
||||||
show_uids = no
|
show_uids = no
|
||||||
sort = last_name
|
sort = last_name
|
||||||
localize_dates = yes
|
localize_dates = yes
|
||||||
preferred_phone_number_type = pref, cell, home
|
preferred_phone_number_type = pref, cell, home
|
||||||
preferred_email_address_type = pref, home, work
|
preferred_email_address_type = pref, home, work
|
||||||
|
|
||||||
[vcard]
|
[vcard]
|
||||||
private_objects = Jabber,
|
private_objects = Jabber,
|
||||||
preferred_version = 3.0
|
preferred_version = 3.0
|
||||||
search_in_source_files = no
|
search_in_source_files = no
|
||||||
skip_unparsable = no
|
skip_unparsable = no
|
||||||
'';
|
'';
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,299 +8,126 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# TODO modularize
|
xsession = {
|
||||||
#imports = [ ./xdg.nix ];
|
enable = true;
|
||||||
|
pointerCursor = {
|
||||||
services = {
|
package = pkgs.capitaine-cursors;
|
||||||
gnome.gnome-keyring.enable = true;
|
name = "capitaine-cursors";
|
||||||
upower.enable = true;
|
|
||||||
|
|
||||||
dbus = {
|
|
||||||
enable = true;
|
|
||||||
packages = [ pkgs.gnome3.dconf ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# Install themes
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ayu-theme-gtk
|
||||||
|
dracula-theme
|
||||||
|
capitaine-cursors
|
||||||
|
paper-icon-theme
|
||||||
|
papirus-icon-theme
|
||||||
|
libsForQt5.qtstyleplugin-kvantum
|
||||||
|
qt5ct
|
||||||
|
gtk-engine-murrine
|
||||||
|
gtk_engines
|
||||||
|
];
|
||||||
|
|
||||||
security.pam.services.sddm.enableGnomeKeyring = true;
|
xresources.properties = {
|
||||||
|
"*.foreground" = "#95E6CB";
|
||||||
|
"*.background" = "#1F2430";
|
||||||
|
"*.cursorColor" = "#BAE67E";
|
||||||
|
# Black
|
||||||
|
"*.color0" = "#1F2430";
|
||||||
|
"*.color8" = "#F28779";
|
||||||
|
# Red
|
||||||
|
"*.color1" = "#A6CC70";
|
||||||
|
"*.color9" = "#FFCC66";
|
||||||
|
# Green
|
||||||
|
"*.color2" = "#5CCFE6";
|
||||||
|
"*.color10" = "#F29E74";
|
||||||
|
# Yellow
|
||||||
|
"*.color3" = "#77A8D9";
|
||||||
|
"*.color11" = "#5C6773";
|
||||||
|
# Blue
|
||||||
|
"*.color4" = "#707A8C";
|
||||||
|
"*.color12" = "#F27983";
|
||||||
|
# Magenta
|
||||||
|
"*.color5" = "#BAE67E";
|
||||||
|
"*.color13" = "#FFD580";
|
||||||
|
# Cyan
|
||||||
|
"*.color6" = "#73D0FF";
|
||||||
|
"*.color14" = "#FFA759";
|
||||||
|
# White
|
||||||
|
"*.color7" = "#95E6CB";
|
||||||
|
"*.color15" = "#CBCCC6";
|
||||||
|
# Bold, Italic, Underline
|
||||||
|
"*.colorBD" = "#e6e1cf";
|
||||||
|
};
|
||||||
|
|
||||||
home-manager.users.anish.xdg.enable = true; # This doesn't seem to do anything so we have below
|
# Move required config files around
|
||||||
home-manager.users.anish.xdg.configHome = "/home/anish/.config"; # TODO bad hard coded
|
xdg.enable = true; # This doesn't seem to do anything so we have below
|
||||||
home-manager.users.anish.xdg.configFile = {
|
xdg.configHome = "/home/anish/.config"; # TODO bad hardcode
|
||||||
|
xdg.configFile = {
|
||||||
"Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
|
"Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
|
||||||
"Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
|
"Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
|
||||||
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
|
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
|
||||||
};
|
};
|
||||||
environment.sessionVariables = rec {
|
home.file = {
|
||||||
XDG_CACHE_HOME = "\${HOME}/.cache";
|
".config/bspwm/rc.d/polybar".source = ./run.sh;
|
||||||
XDG_CONFIG_HOME = "\${HOME}/.config";
|
".config/bspwm/bspwmrc".source = ./bspwmrc;
|
||||||
XDG_BIN_HOME = "\${HOME}/.local/bin";
|
".config/sxhkdrc".source = ./sxhkdrc;
|
||||||
XDG_DATA_HOME = "\${HOME}/.local/share";
|
".config/rofi/theme" = {
|
||||||
|
source = ./rofi;
|
||||||
PATH = [
|
recursive = true;
|
||||||
"\${XDG_BIN_HOME}"
|
};
|
||||||
];
|
".config/polybar" = {
|
||||||
|
source = ./polybar;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
".config/dunst/dunstrc".source = ./dunstrc;
|
||||||
|
".config/kitty/kitty.conf".source = ./kitty.conf;
|
||||||
|
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
|
||||||
|
".config/zathura/zathurarc".source = ./zathurarc;
|
||||||
|
".background-image".source = ./background.jpg;
|
||||||
|
# gtk3 theme
|
||||||
|
".config/gtk-3.0/settings.ini".text = ''
|
||||||
|
[Settings]
|
||||||
|
gtk-theme-name=Dracula
|
||||||
|
gtk-icon-theme-name=Paper
|
||||||
|
gtk-cursor-theme-name=Capitaine Cursors - White
|
||||||
|
gtk-fallback-icon-theme=gnome
|
||||||
|
gtk-application-prefer-dark-theme=true
|
||||||
|
gtk-xft-hinting=1
|
||||||
|
gtk-xft-hintstyle=hintfull
|
||||||
|
gtk-xft-rgba=none
|
||||||
|
'';
|
||||||
|
# GTK2 global theme (widget and icon theme)
|
||||||
|
".config/gtk-2.0/gtkrc".text = ''
|
||||||
|
gtk-theme-name=Ayu-Mirage
|
||||||
|
gtk-icon-theme-name=Capitaine Cursors - White
|
||||||
|
gtk-font-name="Sans 10"
|
||||||
|
'';
|
||||||
|
# TODO hardcoded
|
||||||
|
".local/bin/passmenu".source = ./bin/passmenu;
|
||||||
|
".local/bin/powermenu".source = ./bin/powermenu;
|
||||||
|
".local/bin/screenshot".source = ./bin/screenshot;
|
||||||
|
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
|
||||||
};
|
};
|
||||||
|
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
qt = {
|
||||||
"ripcord"
|
enable = true;
|
||||||
"vcv-rack"
|
platformTheme = "gtk";
|
||||||
];
|
style = { name = "qt5ct-style"; };
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# TODO move somewhere meaningful
|
|
||||||
signal-desktop # bridge to sealight?
|
|
||||||
scrot
|
|
||||||
ripcord
|
|
||||||
feh
|
|
||||||
xkblayout-state
|
|
||||||
sublime-music
|
|
||||||
vcv-rack
|
|
||||||
zathura
|
|
||||||
calibre
|
|
||||||
nheko
|
|
||||||
mpv
|
|
||||||
scrot
|
|
||||||
newsflash
|
|
||||||
zeal
|
|
||||||
xclip
|
|
||||||
xdotool
|
|
||||||
rofi
|
|
||||||
rofimoji
|
|
||||||
obs-studio
|
|
||||||
lightdm
|
|
||||||
dunst
|
|
||||||
libnotify
|
|
||||||
(polybar.override {
|
|
||||||
pulseSupport = true;
|
|
||||||
nlSupport = true;
|
|
||||||
})
|
|
||||||
papirus-icon-theme
|
|
||||||
calendar-cli
|
|
||||||
wyrd
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
location.provider = "geoclue2";
|
|
||||||
services = {
|
|
||||||
redshift = {
|
|
||||||
enable = true;
|
|
||||||
temperature = {
|
|
||||||
day = 5500;
|
|
||||||
night = 3700;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
layout = "us,dvorak";
|
|
||||||
desktopManager.wallpaper.mode = "fill";
|
|
||||||
displayManager = {
|
|
||||||
defaultSession = "none+bspwm";
|
|
||||||
sessionCommands = ''
|
|
||||||
${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF
|
|
||||||
#define blk #1F2430
|
|
||||||
#define bblk #F28779
|
|
||||||
#define red #A6CC70
|
|
||||||
#define bred #FFCC66
|
|
||||||
#define grn #5CCFE6
|
|
||||||
#define bgrn #F29E74
|
|
||||||
#define ylw #77A8D9
|
|
||||||
#define bylw #5C6773
|
|
||||||
#define blu #707A8C
|
|
||||||
#define bblu #F27983
|
|
||||||
#define mag #BAE67E
|
|
||||||
#define bmag #FFD580
|
|
||||||
#define cyn #73D0FF
|
|
||||||
#define bcyn #FFA759
|
|
||||||
#define wht #95E6CB
|
|
||||||
#define bwht #CBCCC6
|
|
||||||
#define bg blk
|
|
||||||
#define fg wht
|
|
||||||
|
|
||||||
*.foreground: fg
|
|
||||||
*.background: bg
|
|
||||||
*.cursorColor: mag
|
|
||||||
|
|
||||||
*.color0: blk
|
|
||||||
*.color8: bblk
|
|
||||||
*.color1: red
|
|
||||||
*.color9: bred
|
|
||||||
*.color2: grn
|
|
||||||
*.color10: bgrn
|
|
||||||
*.color3: ylw
|
|
||||||
*.color11: bylw
|
|
||||||
*.color4: blu
|
|
||||||
*.color12: bblu
|
|
||||||
*.color5: mag
|
|
||||||
*.color13: bmag
|
|
||||||
*.color6: cyn
|
|
||||||
*.color14: bcyn
|
|
||||||
*.color7: wht
|
|
||||||
*.color15: bwht
|
|
||||||
|
|
||||||
! greys
|
|
||||||
*.color234: #1E2029
|
|
||||||
*.color235: #282a36
|
|
||||||
*.color236: #373844
|
|
||||||
*.color237: #44475a
|
|
||||||
*.color239: #565761
|
|
||||||
*.color240: #6272a4
|
|
||||||
*.color241: #b6b6b2
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# hotplug
|
|
||||||
connect() {
|
|
||||||
xrandr --output HDMI-2 --same-as eDP-1
|
|
||||||
}
|
|
||||||
|
|
||||||
disconnect() {
|
|
||||||
xrandr --output HDMI-2 --off
|
|
||||||
}
|
|
||||||
|
|
||||||
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
|
|
||||||
'';
|
|
||||||
lightdm.enable = true;
|
|
||||||
lightdm.greeters.mini.enable = true;
|
|
||||||
lightdm.greeters.mini.user = "anish"; # TODO hardcoded
|
|
||||||
lightdm.background = "/etc/nixos/users/profiles/desktop/background.jpg";
|
|
||||||
lightdm.greeters.mini.extraConfig = ''
|
|
||||||
text-color = "#ff79c6"
|
|
||||||
password-background-color = "#1E2029"
|
|
||||||
window-color = "#181a23"
|
|
||||||
border-color = "#181a23"
|
|
||||||
active-monitor=1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
windowManager.bspwm.enable = true;
|
|
||||||
#windowManager.bspwm.configFile = "/home/anish/.bspwm/bspwmrc";
|
|
||||||
windowManager.bspwm.sxhkd.configFile = "/home/anish/.config/sxhkdrc";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.fonts = with pkgs; [
|
# Compositor
|
||||||
fira-code
|
services.picom = {
|
||||||
fira-code-symbols
|
enable = true;
|
||||||
hermit
|
fade = true;
|
||||||
#hack
|
fadeDelta = 1;
|
||||||
siji
|
fadeSteps = [ "0.01" "0.022" ];
|
||||||
font-awesome-ttf
|
shadow = true;
|
||||||
proggyfonts
|
shadowOffsets = [ (-10) (-10) ];
|
||||||
(nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; })
|
shadowOpacity = "0.22";
|
||||||
];
|
# activeOpacity = "1.00";
|
||||||
|
# inactiveOpacity = "0.92";
|
||||||
home-manager.users.anish = {
|
extraOptions = ''
|
||||||
xsession = {
|
|
||||||
enable = true;
|
|
||||||
pointerCursor = {
|
|
||||||
package = pkgs.capitaine-cursors;
|
|
||||||
name = "capitaine-cursors";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Install themes
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
ayu-theme-gtk
|
|
||||||
dracula-theme
|
|
||||||
capitaine-cursors
|
|
||||||
paper-icon-theme
|
|
||||||
papirus-icon-theme
|
|
||||||
libsForQt5.qtstyleplugin-kvantum
|
|
||||||
qt5ct
|
|
||||||
gtk-engine-murrine
|
|
||||||
gtk_engines
|
|
||||||
];
|
|
||||||
|
|
||||||
xresources.properties = {
|
|
||||||
"*.foreground" = "#95E6CB";
|
|
||||||
"*.background" = "#1F2430";
|
|
||||||
"*.cursorColor" = "#BAE67E";
|
|
||||||
# Black
|
|
||||||
"*.color0" = "#1F2430";
|
|
||||||
"*.color8" = "#F28779";
|
|
||||||
# Red
|
|
||||||
"*.color1" = "#A6CC70";
|
|
||||||
"*.color9" = "#FFCC66";
|
|
||||||
# Green
|
|
||||||
"*.color2" = "#5CCFE6";
|
|
||||||
"*.color10" = "#F29E74";
|
|
||||||
# Yellow
|
|
||||||
"*.color3" = "#77A8D9";
|
|
||||||
"*.color11" = "#5C6773";
|
|
||||||
# Blue
|
|
||||||
"*.color4" = "#707A8C";
|
|
||||||
"*.color12" = "#F27983";
|
|
||||||
# Magenta
|
|
||||||
"*.color5" = "#BAE67E";
|
|
||||||
"*.color13" = "#FFD580";
|
|
||||||
# Cyan
|
|
||||||
"*.color6" = "#73D0FF";
|
|
||||||
"*.color14" = "#FFA759";
|
|
||||||
# White
|
|
||||||
"*.color7" = "#95E6CB";
|
|
||||||
"*.color15" = "#CBCCC6";
|
|
||||||
# Bold, Italic, Underline
|
|
||||||
"*.colorBD" = "#e6e1cf";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Move required config files around
|
|
||||||
home.file = {
|
|
||||||
".config/bspwm/rc.d/polybar".source = ./run.sh;
|
|
||||||
".config/bspwm/bspwmrc".source = ./bspwmrc;
|
|
||||||
".config/sxhkdrc".source = ./sxhkdrc;
|
|
||||||
".config/rofi/theme" = {
|
|
||||||
source = ./rofi;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
".config/polybar" = {
|
|
||||||
source = ./polybar;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
".config/dunst/dunstrc".source = ./dunstrc;
|
|
||||||
".config/kitty/kitty.conf".source = ./kitty.conf;
|
|
||||||
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
|
|
||||||
".config/zathura/zathurarc".source = ./zathurarc;
|
|
||||||
".background-image".source = ./background.jpg;
|
|
||||||
# gtk3 theme
|
|
||||||
".config/gtk-3.0/settings.ini".text = ''
|
|
||||||
[Settings]
|
|
||||||
gtk-theme-name=Dracula
|
|
||||||
gtk-icon-theme-name=Paper
|
|
||||||
gtk-cursor-theme-name=Capitaine Cursors - White
|
|
||||||
gtk-fallback-icon-theme=gnome
|
|
||||||
gtk-application-prefer-dark-theme=true
|
|
||||||
gtk-xft-hinting=1
|
|
||||||
gtk-xft-hintstyle=hintfull
|
|
||||||
gtk-xft-rgba=none
|
|
||||||
'';
|
|
||||||
# GTK2 global theme (widget and icon theme)
|
|
||||||
".config/gtk-2.0/gtkrc".text = ''
|
|
||||||
gtk-theme-name=Ayu-Mirage
|
|
||||||
gtk-icon-theme-name=Capitaine Cursors - White
|
|
||||||
gtk-font-name="Sans 10"
|
|
||||||
'';
|
|
||||||
# TODO hardcoded
|
|
||||||
".local/bin/passmenu".source = ./bin/passmenu;
|
|
||||||
".local/bin/powermenu".source = ./bin/powermenu;
|
|
||||||
".local/bin/screenshot".source = ./bin/screenshot;
|
|
||||||
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
|
|
||||||
};
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme = "gtk";
|
|
||||||
style = { name = "qt5ct-style"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
# Compositor
|
|
||||||
services.picom = {
|
|
||||||
enable = true;
|
|
||||||
fade = true;
|
|
||||||
fadeDelta = 1;
|
|
||||||
fadeSteps = [ "0.01" "0.022" ];
|
|
||||||
shadow = true;
|
|
||||||
shadowOffsets = [ (-10) (-10) ];
|
|
||||||
shadowOpacity = "0.22";
|
|
||||||
# activeOpacity = "1.00";
|
|
||||||
# inactiveOpacity = "0.92";
|
|
||||||
extraOptions = ''
|
|
||||||
shadow-radius = 12;
|
shadow-radius = 12;
|
||||||
# blur-background = true;
|
# blur-background = true;
|
||||||
# blur-background-frame = true;
|
# blur-background-frame = true;
|
||||||
|
@ -308,11 +135,10 @@ in
|
||||||
blur-kern = "7x7box";
|
blur-kern = "7x7box";
|
||||||
blur-strength = 320;
|
blur-strength = 320;
|
||||||
'';
|
'';
|
||||||
};
|
|
||||||
|
|
||||||
programs.autorandr.enable = true;
|
|
||||||
services.udiskie.automount = true;
|
|
||||||
|
|
||||||
services.mpris-proxy.enable = true; # bluetooth media control
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.autorandr.enable = true;
|
||||||
|
services.udiskie.automount = true;
|
||||||
|
|
||||||
|
services.mpris-proxy.enable = true; # bluetooth media control
|
||||||
}
|
}
|
||||||
|
|
|
@ -397,7 +397,7 @@ ramp-capacity-1 = " "
|
||||||
ramp-capacity-2 = " "
|
ramp-capacity-2 = " "
|
||||||
ramp-capacity-3 = " "
|
ramp-capacity-3 = " "
|
||||||
ramp-capacity-4 = " "
|
ramp-capacity-4 = " "
|
||||||
ramp-capacity-font =3
|
ramp-capacity-font = 1
|
||||||
ramp-capacity-foreground = ${colors.sky}
|
ramp-capacity-foreground = ${colors.sky}
|
||||||
|
|
||||||
animation-charging-0 = " "
|
animation-charging-0 = " "
|
||||||
|
@ -405,7 +405,7 @@ animation-charging-1 = " "
|
||||||
animation-charging-2 = " "
|
animation-charging-2 = " "
|
||||||
animation-charging-3 = " "
|
animation-charging-3 = " "
|
||||||
animation-charging-4 = " "
|
animation-charging-4 = " "
|
||||||
animation-charging-font =3
|
animation-charging-font = 1
|
||||||
animation-charging-foreground = ${colors.sky}
|
animation-charging-foreground = ${colors.sky}
|
||||||
animation-charging-framerate = 750
|
animation-charging-framerate = 750
|
||||||
|
|
||||||
|
|
|
@ -1,295 +1,293 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
age.secrets.fastmail.file = "/etc/nixos/secrets/fastmail.age";
|
#age.secrets.fastmail.file = "/etc/nixos/secrets/fastmail.age";
|
||||||
age.secrets.fastmail.owner = "anish";
|
#age.secrets.fastmail.owner = "anish";
|
||||||
home-manager.users.anish = {
|
services.mbsync = {
|
||||||
services.mbsync = {
|
enable = true;
|
||||||
enable = true;
|
frequency = "*:0/30";
|
||||||
frequency = "*:0/30";
|
#postExec = "${pkgs.notmuch}/bin/notmuch new";
|
||||||
#postExec = "${pkgs.notmuch}/bin/notmuch new";
|
};
|
||||||
};
|
programs.mbsync.enable = true;
|
||||||
programs.mbsync.enable = true;
|
programs.msmtp.enable = true;
|
||||||
programs.msmtp.enable = true;
|
programs.notmuch = {
|
||||||
programs.notmuch = {
|
enable = true;
|
||||||
enable = true;
|
};
|
||||||
};
|
home.file.".mailcap".text = ''
|
||||||
home.file.".mailcap".text = ''
|
text/html; firefox %s
|
||||||
text/html; firefox %s
|
application/pdf; zathura %s
|
||||||
application/pdf; zathura %s
|
image/png; feh %s
|
||||||
image/png; feh %s
|
image/jpeg; feh %s
|
||||||
image/jpeg; feh %s
|
'';
|
||||||
'';
|
programs.neomutt = {
|
||||||
programs.neomutt = {
|
enable = true;
|
||||||
enable = true;
|
extraConfig = ''
|
||||||
extraConfig = ''
|
# Shamelessly Stolen from https://gideonwolfe.com/posts/workflow/neomutt/intro/
|
||||||
# Shamelessly Stolen from https://gideonwolfe.com/posts/workflow/neomutt/intro/
|
# set editor to neovim
|
||||||
# set editor to neovim
|
set editor = "nvim +':set textwidth=0'"
|
||||||
set editor = "nvim +':set textwidth=0'"
|
|
||||||
|
|
||||||
#set virtual_spoolfile=yes
|
#set virtual_spoolfile=yes
|
||||||
set folder="~/Mail/anish"
|
set folder="~/Mail/anish"
|
||||||
set mbox_type = Maildir
|
set mbox_type = Maildir
|
||||||
mailboxes `find ~/Mail/anish/* -maxdepth 0 -type d | grep -v "tmp\|new\|cur" | sed 's|/home/anish/Mail/|=\"|g' | sed 's|$|\"|g' | tr '\n' ' '`
|
mailboxes `find ~/Mail/anish/* -maxdepth 0 -type d | grep -v "tmp\|new\|cur" | sed 's|/home/anish/Mail/|=\"|g' | sed 's|$|\"|g' | tr '\n' ' '`
|
||||||
|
|
||||||
## Folder with emails
|
## Folder with emails
|
||||||
#set folder = "~/Mail/anish"
|
#set folder = "~/Mail/anish"
|
||||||
# Type of mailbox
|
# Type of mailbox
|
||||||
# Directory to poll for new mail
|
# Directory to poll for new mail
|
||||||
#set spoolfile = +Inbox
|
#set spoolfile = +Inbox
|
||||||
# Directory to save sent messages into
|
# Directory to save sent messages into
|
||||||
#set record = +Sent
|
#set record = +Sent
|
||||||
# Sets the drafts folder
|
# Sets the drafts folder
|
||||||
#set postponed = +Drafts
|
#set postponed = +Drafts
|
||||||
# File that headers will be cached
|
# File that headers will be cached
|
||||||
# set header_cache = ~/.cache/mutt
|
# set header_cache = ~/.cache/mutt
|
||||||
|
|
||||||
set my_name = "Anish"
|
set my_name = "Anish"
|
||||||
set imap_check_subscribed
|
set imap_check_subscribed
|
||||||
|
|
||||||
# Set preffered view modes
|
# Set preffered view modes
|
||||||
auto_view text/html text/calendar application/ics # view html automatically
|
auto_view text/html text/calendar application/ics # view html automatically
|
||||||
alternative_order text/plain text/enriched text/html text/*
|
alternative_order text/plain text/enriched text/html text/*
|
||||||
|
|
||||||
# main options
|
# main options
|
||||||
#set envelope_from
|
#set envelope_from
|
||||||
#set edit_headers # show headers when composing
|
#set edit_headers # show headers when composing
|
||||||
#set fast_reply # skip to compose when replying
|
#set fast_reply # skip to compose when replying
|
||||||
#set askcc # ask for CC:
|
#set askcc # ask for CC:
|
||||||
#set fcc_attach # save attachments with the body
|
#set fcc_attach # save attachments with the body
|
||||||
#set forward_format = "Fwd: %s" # format of subject when forwarding
|
#set forward_format = "Fwd: %s" # format of subject when forwarding
|
||||||
#set forward_decode # decode when forwarding
|
#set forward_decode # decode when forwarding
|
||||||
#set attribution = "On %d, %n wrote:" # format of quoting header
|
#set attribution = "On %d, %n wrote:" # format of quoting header
|
||||||
#set reply_to # reply to Reply to: field
|
#set reply_to # reply to Reply to: field
|
||||||
#set reverse_name # reply as whomever it was to
|
#set reverse_name # reply as whomever it was to
|
||||||
#set include # include message in replies
|
#set include # include message in replies
|
||||||
#set forward_quote # include message in forwards
|
#set forward_quote # include message in forwards
|
||||||
#set text_flowed
|
#set text_flowed
|
||||||
#unset sig_dashes # no dashes before sig
|
#unset sig_dashes # no dashes before sig
|
||||||
#unset mime_forward # forward attachments as part of body
|
#unset mime_forward # forward attachments as part of body
|
||||||
#unset help # No help bar at the top of index
|
#unset help # No help bar at the top of index
|
||||||
## set status_on_top # Status bar on top of index
|
## set status_on_top # Status bar on top of index
|
||||||
#set tmpdir = ~/Programs/neomutt/temp # where to keep temp files
|
#set tmpdir = ~/Programs/neomutt/temp # where to keep temp files
|
||||||
|
|
||||||
unset confirmappend # don't ask, just do!
|
unset confirmappend # don't ask, just do!
|
||||||
set quit # don't ask, just do!!
|
set quit # don't ask, just do!!
|
||||||
unset mark_old # read/new is good enough for me
|
unset mark_old # read/new is good enough for me
|
||||||
#set beep_new # bell on new mails
|
#set beep_new # bell on new mails
|
||||||
set pipe_decode # strip headers and eval mimes when piping
|
set pipe_decode # strip headers and eval mimes when piping
|
||||||
set thorough_search # strip headers and eval mimes before searching
|
set thorough_search # strip headers and eval mimes before searching
|
||||||
set timeout = 0
|
set timeout = 0
|
||||||
|
|
||||||
# status bar, date format, finding stuff etc.
|
# status bar, date format, finding stuff etc.
|
||||||
set status_chars = " *%A"
|
set status_chars = " *%A"
|
||||||
set status_format = "[ Folder: %f ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
|
set status_format = "[ Folder: %f ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
|
||||||
set date_format = "%d.%m.%Y %H:%M"
|
set date_format = "%d.%m.%Y %H:%M"
|
||||||
#set sort = threads
|
#set sort = threads
|
||||||
#set sort_aux = reverse-last-date-received
|
#set sort_aux = reverse-last-date-received
|
||||||
#set uncollapse_jump
|
#set uncollapse_jump
|
||||||
#set sort_re
|
#set sort_re
|
||||||
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
||||||
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
||||||
set send_charset = "utf-8:iso-8859-1:us-ascii"
|
set send_charset = "utf-8:iso-8859-1:us-ascii"
|
||||||
set charset = "utf-8"
|
set charset = "utf-8"
|
||||||
set arrow_cursor = "no" # Change `color indicator` depending
|
set arrow_cursor = "no" # Change `color indicator` depending
|
||||||
|
|
||||||
# notmuch shortcuts
|
# notmuch shortcuts
|
||||||
# Points to the notmuch directory
|
# Points to the notmuch directory
|
||||||
set nm_default_url = "notmuch://$HOME/Mail/anish"
|
set nm_default_url = "notmuch://$HOME/Mail/anish"
|
||||||
# Makes notmuch return threads rather than messages
|
# Makes notmuch return threads rather than messages
|
||||||
set nm_query_type = "threads"
|
set nm_query_type = "threads"
|
||||||
# Binding for notmuch search
|
# Binding for notmuch search
|
||||||
bind index \\ vfolder-from-query
|
bind index \\ vfolder-from-query
|
||||||
|
|
||||||
# Pager View Options
|
# Pager View Options
|
||||||
set pager_index_lines = 10 # Shows 10 lines of index when pager is active
|
set pager_index_lines = 10 # Shows 10 lines of index when pager is active
|
||||||
set pager_context = 3
|
set pager_context = 3
|
||||||
set pager_stop
|
set pager_stop
|
||||||
set menu_scroll
|
set menu_scroll
|
||||||
set tilde
|
set tilde
|
||||||
unset markers
|
unset markers
|
||||||
|
|
||||||
#set header_cache = "~/.cache/mutt"
|
#set header_cache = "~/.cache/mutt"
|
||||||
#set message_cachedir = "~/.cache/mutt"
|
#set message_cachedir = "~/.cache/mutt"
|
||||||
|
|
||||||
set query_command = "khard email --parsable --search-in-source-files '%s'"
|
set query_command = "khard email --parsable --search-in-source-files '%s'"
|
||||||
|
|
||||||
### Color Settings
|
### Color Settings
|
||||||
# Header colors:
|
# Header colors:
|
||||||
color header blue default ".*"
|
color header blue default ".*"
|
||||||
color header brightmagenta default "^(From)"
|
color header brightmagenta default "^(From)"
|
||||||
color header brightcyan default "^(Subject)"
|
color header brightcyan default "^(Subject)"
|
||||||
color header brightwhite default "^(CC|BCC)"
|
color header brightwhite default "^(CC|BCC)"
|
||||||
|
|
||||||
mono bold bold
|
mono bold bold
|
||||||
mono underline underline
|
mono underline underline
|
||||||
mono indicator reverse
|
mono indicator reverse
|
||||||
mono error bold
|
mono error bold
|
||||||
color normal default default
|
color normal default default
|
||||||
color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space.
|
color indicator brightyellow default # currently selected message. default makes bar clear, disabled arrow to save space.
|
||||||
color sidebar_highlight red default
|
color sidebar_highlight red default
|
||||||
color sidebar_divider brightblack black
|
color sidebar_divider brightblack black
|
||||||
color sidebar_flagged red black
|
color sidebar_flagged red black
|
||||||
color sidebar_new green black
|
color sidebar_new green black
|
||||||
color normal brightyellow default
|
color normal brightyellow default
|
||||||
color error red default
|
color error red default
|
||||||
color tilde black default
|
color tilde black default
|
||||||
color message cyan default
|
color message cyan default
|
||||||
color markers red white
|
color markers red white
|
||||||
color attachment white default
|
color attachment white default
|
||||||
color search brightmagenta default
|
color search brightmagenta default
|
||||||
color status brightyellow black
|
color status brightyellow black
|
||||||
color hdrdefault brightgreen default
|
color hdrdefault brightgreen default
|
||||||
color quoted green default
|
color quoted green default
|
||||||
color quoted1 blue default
|
color quoted1 blue default
|
||||||
color quoted2 cyan default
|
color quoted2 cyan default
|
||||||
color quoted3 yellow default
|
color quoted3 yellow default
|
||||||
color quoted4 red default
|
color quoted4 red default
|
||||||
color quoted5 brightred default
|
color quoted5 brightred default
|
||||||
color signature brightgreen default
|
color signature brightgreen default
|
||||||
color bold black default
|
color bold black default
|
||||||
color underline black default
|
color underline black default
|
||||||
color normal default default
|
color normal default default
|
||||||
|
|
||||||
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
|
||||||
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
|
||||||
color body green default "\`[^\`]*\`" # Green text between ` and `
|
color body green default "\`[^\`]*\`" # Green text between ` and `
|
||||||
color body brightblue default "^# \.*" # Headings as bold blue
|
color body brightblue default "^# \.*" # Headings as bold blue
|
||||||
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
color body brightcyan default "^## \.*" # Subheadings as bold cyan
|
||||||
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
color body brightgreen default "^### \.*" # Subsubheadings as bold green
|
||||||
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
|
||||||
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
color body brightcyan default "[;:][-o][)/(|]" # emoticons
|
||||||
color body brightcyan default "[;:][)(|]" # emoticons
|
color body brightcyan default "[;:][)(|]" # emoticons
|
||||||
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
|
||||||
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
|
||||||
color body red default "(BAD signature)"
|
color body red default "(BAD signature)"
|
||||||
color body cyan default "(Good signature)"
|
color body cyan default "(Good signature)"
|
||||||
color body brightblack default "^gpg: Good signature .*"
|
color body brightblack default "^gpg: Good signature .*"
|
||||||
color body brightyellow default "^gpg: "
|
color body brightyellow default "^gpg: "
|
||||||
color body brightyellow red "^gpg: BAD signature from.*"
|
color body brightyellow red "^gpg: BAD signature from.*"
|
||||||
mono body bold "^gpg: Good signature"
|
mono body bold "^gpg: Good signature"
|
||||||
mono body bold "^gpg: BAD signature from.*"
|
mono body bold "^gpg: BAD signature from.*"
|
||||||
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
|
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
|
||||||
|
|
||||||
# Default index colors:
|
# Default index colors:
|
||||||
color index yellow default '.*'
|
color index yellow default '.*'
|
||||||
color index_author red default '.*'
|
color index_author red default '.*'
|
||||||
color index_number blue default
|
color index_number blue default
|
||||||
color index_subject cyan default '.*'
|
color index_subject cyan default '.*'
|
||||||
|
|
||||||
# For new mail:
|
# For new mail:
|
||||||
color index brightyellow black "~N"
|
color index brightyellow black "~N"
|
||||||
color index_author brightred black "~N"
|
color index_author brightred black "~N"
|
||||||
color index_subject brightcyan black "~N"
|
color index_subject brightcyan black "~N"
|
||||||
|
|
||||||
color progress black cyan
|
color progress black cyan
|
||||||
|
|
||||||
### Mappings Settings
|
### Mappings Settings
|
||||||
|
|
||||||
# General rebindings
|
# General rebindings
|
||||||
bind attach <return> view-mailcap
|
bind attach <return> view-mailcap
|
||||||
bind attach l view-mailcap
|
bind attach l view-mailcap
|
||||||
bind editor <space> noop
|
bind editor <space> noop
|
||||||
bind pager c imap-fetch-mail
|
bind pager c imap-fetch-mail
|
||||||
bind index G last-entry
|
bind index G last-entry
|
||||||
bind index g noop
|
bind index g noop
|
||||||
bind index gg first-entry
|
bind index gg first-entry
|
||||||
bind pager,attach h exit
|
bind pager,attach h exit
|
||||||
bind pager j next-line
|
bind pager j next-line
|
||||||
bind pager k previous-line
|
bind pager k previous-line
|
||||||
bind pager l view-attachments
|
bind pager l view-attachments
|
||||||
bind index D delete-message
|
bind index D delete-message
|
||||||
bind index U undelete-message
|
bind index U undelete-message
|
||||||
bind index L limit
|
bind index L limit
|
||||||
bind index h noop
|
bind index h noop
|
||||||
bind index l display-message
|
bind index l display-message
|
||||||
bind browser h goto-parent
|
bind browser h goto-parent
|
||||||
bind browser l select-entry
|
bind browser l select-entry
|
||||||
bind pager,browser gg top-page
|
bind pager,browser gg top-page
|
||||||
bind pager,browser G bottom-page
|
bind pager,browser G bottom-page
|
||||||
bind index,pager,browser d half-down
|
bind index,pager,browser d half-down
|
||||||
bind index,pager,browser u half-up
|
bind index,pager,browser u half-up
|
||||||
bind index,pager R group-reply
|
bind index,pager R group-reply
|
||||||
bind index \031 previous-undeleted # Mouse wheel
|
bind index \031 previous-undeleted # Mouse wheel
|
||||||
bind index \005 next-undeleted # Mouse wheel
|
bind index \005 next-undeleted # Mouse wheel
|
||||||
bind pager \031 previous-line # Mouse wheel
|
bind pager \031 previous-line # Mouse wheel
|
||||||
bind pager \005 next-line # Mouse wheel
|
bind pager \005 next-line # Mouse wheel
|
||||||
bind editor <Tab> complete-query
|
bind editor <Tab> complete-query
|
||||||
|
|
||||||
|
|
||||||
# sidebar mappings
|
# sidebar mappings
|
||||||
bind index,pager \Ck sidebar-prev
|
bind index,pager \Ck sidebar-prev
|
||||||
bind index,pager \Cj sidebar-next
|
bind index,pager \Cj sidebar-next
|
||||||
bind index,pager \Co sidebar-open
|
bind index,pager \Co sidebar-open
|
||||||
bind index,pager \Cp sidebar-prev-new
|
bind index,pager \Cp sidebar-prev-new
|
||||||
bind index,pager \Cn sidebar-next-new
|
bind index,pager \Cn sidebar-next-new
|
||||||
bind index,pager B sidebar-toggle-visible
|
bind index,pager B sidebar-toggle-visible
|
||||||
|
|
||||||
# global index and pager shortcuts
|
# global index and pager shortcuts
|
||||||
bind index,pager @ compose-to-sender
|
bind index,pager @ compose-to-sender
|
||||||
bind index,pager D purge-message
|
bind index,pager D purge-message
|
||||||
bind index <tab> sync-mailbox
|
bind index <tab> sync-mailbox
|
||||||
bind index <space> collapse-thread
|
bind index <space> collapse-thread
|
||||||
|
|
||||||
# Email completion bindings
|
# Email completion bindings
|
||||||
bind editor <Tab> complete-query
|
bind editor <Tab> complete-query
|
||||||
bind editor ^T complete
|
bind editor ^T complete
|
||||||
|
|
||||||
# Press A to add contact to Khard address book
|
# Press A to add contact to Khard address book
|
||||||
macro index,pager A \
|
macro index,pager A \
|
||||||
"<pipe-message>khard add-email<return>" \
|
"<pipe-message>khard add-email<return>" \
|
||||||
"add the sender email address to khard"
|
"add the sender email address to khard"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
services.imapnotify.enable = true;
|
services.imapnotify.enable = true;
|
||||||
home.packages = [ pkgs.neomutt pkgs.evolution ];
|
home.packages = [ pkgs.neomutt pkgs.evolution ];
|
||||||
|
|
||||||
accounts.email = {
|
accounts.email = {
|
||||||
accounts.anish = {
|
accounts.anish = {
|
||||||
primary = true;
|
primary = true;
|
||||||
address = "anish@lakhwara.com";
|
address = "anish@lakhwara.com";
|
||||||
#alias = [ "*@lakhwara.com" ];
|
#alias = [ "*@lakhwara.com" ];
|
||||||
#gpg = {
|
#gpg = {
|
||||||
# key = "";
|
# key = "";
|
||||||
# signByDefault = true;
|
# signByDefault = true;
|
||||||
#};
|
#};
|
||||||
imap.host = "imap.fastmail.com";
|
imap.host = "imap.fastmail.com";
|
||||||
mbsync = {
|
mbsync = {
|
||||||
enable = true;
|
enable = true;
|
||||||
create = "both";
|
create = "both";
|
||||||
expunge = "both";
|
expunge = "both";
|
||||||
remove = "both";
|
remove = "both";
|
||||||
extraConfig.local.subFolders = "Verbatim";
|
extraConfig.local.subFolders = "Verbatim";
|
||||||
};
|
};
|
||||||
imapnotify = {
|
imapnotify = {
|
||||||
enable = true;
|
enable = true;
|
||||||
boxes = [ "Inbox" ];
|
boxes = [ "Inbox" ];
|
||||||
onNotify = "${pkgs.isync}/bin/mbsync anish && ${pkgs.notmuch}/bin/notmuch index";
|
onNotify = "${pkgs.isync}/bin/mbsync anish && ${pkgs.notmuch}/bin/notmuch index";
|
||||||
onNotifyPost = {
|
onNotifyPost = {
|
||||||
mail = "${pkgs.libnotify}/bin/notify-send -a mail 'email: new in %s'";
|
mail = "${pkgs.libnotify}/bin/notify-send -a mail 'email: new in %s'";
|
||||||
#update = "${pkgs.libnotify}/bin/notify-send -a mail 'email: update %s'";
|
#update = "${pkgs.libnotify}/bin/notify-send -a mail 'email: update %s'";
|
||||||
#expunge = "${pkgs.libnotify}/bin/notify-send -a mail 'email: expunge %s'";
|
#expunge = "${pkgs.libnotify}/bin/notify-send -a mail 'email: expunge %s'";
|
||||||
};
|
|
||||||
};
|
|
||||||
msmtp.enable = true;
|
|
||||||
notmuch.enable = true;
|
|
||||||
realName = "Anish Lakhwara";
|
|
||||||
signature = {
|
|
||||||
text = ''
|
|
||||||
Thanks,
|
|
||||||
Anish
|
|
||||||
'';
|
|
||||||
showSignature = "append";
|
|
||||||
};
|
|
||||||
passwordCommand = "${pkgs.coreutils}/bin/cat /run/agenix/fastmail";
|
|
||||||
smtp = {
|
|
||||||
host = "fastmail.com";
|
|
||||||
};
|
|
||||||
userName = "anish@lakhwara.com";
|
|
||||||
neomutt = {
|
|
||||||
enable = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
msmtp.enable = true;
|
||||||
|
notmuch.enable = true;
|
||||||
|
realName = "Anish Lakhwara";
|
||||||
|
signature = {
|
||||||
|
text = ''
|
||||||
|
Thanks,
|
||||||
|
Anish
|
||||||
|
'';
|
||||||
|
showSignature = "append";
|
||||||
|
};
|
||||||
|
passwordCommand = "${pkgs.coreutils}/bin/cat /run/agenix/fastmail";
|
||||||
|
smtp = {
|
||||||
|
host = "fastmail.com";
|
||||||
|
};
|
||||||
|
userName = "anish@lakhwara.com";
|
||||||
|
neomutt = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,105 +1,105 @@
|
||||||
{pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
home-manager.users.anish = {
|
programs.browserpass.enable = true;
|
||||||
programs.browserpass.enable = true;
|
programs.browserpass.browsers = [ "firefox" ];
|
||||||
programs.browserpass.browsers = [ "firefox" ];
|
#env.XDG_DEXSTOP_DIR = "$HOME/";
|
||||||
#env.XDG_DEXSTOP_DIR = "$HOME/";
|
programs.firefox.profiles.anish.userChrome = (builtins.readFile ./userChrome.css);
|
||||||
programs.firefox.profiles.anish.userChrome = (builtins.readFile ./userChrome.css);
|
programs.firefox.profiles.anish.settings = {
|
||||||
programs.firefox.profiles.anish.settings = {
|
"devtools.theme" = "dark";
|
||||||
"devtools.theme" = "dark";
|
# Enable userContent.css and userChrome.css for our theme modules
|
||||||
# Enable userContent.css and userChrome.css for our theme modules
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
# Stop creating ~/Downloads!
|
||||||
# Stop creating ~/Downloads!
|
"browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this!
|
||||||
"browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this!
|
# Don't use the built-in password manager; a nixos user is more likely
|
||||||
# Don't use the built-in password manager; a nixos user is more likely
|
# using an external one (you are using one, right?).
|
||||||
# using an external one (you are using one, right?).
|
#"signon.rememberSignons" = false;
|
||||||
#"signon.rememberSignons" = false;
|
# Do not check if Firefox is the default browser
|
||||||
# Do not check if Firefox is the default browser
|
"browser.shell.checkDefaultBrowser" = false;
|
||||||
"browser.shell.checkDefaultBrowser" = false;
|
# Disable the "new tab page" feature and show a blank tab instead
|
||||||
# Disable the "new tab page" feature and show a blank tab instead
|
# https://wiki.mozilla.org/Privacy/Reviews/New_Tab
|
||||||
# https://wiki.mozilla.org/Privacy/Reviews/New_Tab
|
# https://support.mozilla.org/en-US/kb/new-tab-page-show-hide-and-customize-top-sites#w_how-do-i-turn-the-new-tab-page-off
|
||||||
# https://support.mozilla.org/en-US/kb/new-tab-page-show-hide-and-customize-top-sites#w_how-do-i-turn-the-new-tab-page-off
|
"browser.newtabpage.enabled" = false;
|
||||||
"browser.newtabpage.enabled" = false;
|
"browser.newtab.url" = "about:blank";
|
||||||
"browser.newtab.url" = "about:blank";
|
# Disable Activity Stream
|
||||||
# Disable Activity Stream
|
# https://wiki.mozilla.org/Firefox/Activity_Stream
|
||||||
# https://wiki.mozilla.org/Firefox/Activity_Stream
|
"browser.newtabpage.activity-stream.enabled" = false;
|
||||||
"browser.newtabpage.activity-stream.enabled" = false;
|
# Disable new tab tile ads & preload
|
||||||
# Disable new tab tile ads & preload
|
# http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox
|
||||||
# http://www.thewindowsclub.com/disable-remove-ad-tiles-from-firefox
|
# http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331
|
||||||
# http://forums.mozillazine.org/viewtopic.php?p=13876331#p13876331
|
# https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping
|
||||||
# https://wiki.mozilla.org/Tiles/Technical_Documentation#Ping
|
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source
|
||||||
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-source
|
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping
|
||||||
# https://gecko.readthedocs.org/en/latest/browser/browser/DirectoryLinksProvider.html#browser-newtabpage-directory-ping
|
"browser.newtabpage.enhanced" = false;
|
||||||
"browser.newtabpage.enhanced" = false;
|
"browser.newtab.preload" = false;
|
||||||
"browser.newtab.preload" = false;
|
"browser.newtabpage.directory.ping" = "";
|
||||||
"browser.newtabpage.directory.ping" = "";
|
"browser.newtabpage.directory.source" = "data:text/plain,{}";
|
||||||
"browser.newtabpage.directory.source" = "data:text/plain,{}";
|
# Disable some not so useful functionality.
|
||||||
# Disable some not so useful functionality.
|
"media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
|
||||||
"media.videocontrols.picture-in-picture.video-toggle.enabled" = false;
|
"extensions.htmlaboutaddons.recommendations.enabled" = false;
|
||||||
"extensions.htmlaboutaddons.recommendations.enabled" = false;
|
"extensions.htmlaboutaddons.discover.enabled" = false;
|
||||||
"extensions.htmlaboutaddons.discover.enabled" = false;
|
"extensions.pocket.enabled" = false;
|
||||||
"extensions.pocket.enabled" = false;
|
"app.normandy.enabled" = false;
|
||||||
"app.normandy.enabled" = false;
|
"app.normandy.api_url" = "";
|
||||||
"app.normandy.api_url" = "";
|
"extensions.shield-recipe-client.enabled" = false;
|
||||||
"extensions.shield-recipe-client.enabled" = false;
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
"app.shield.optoutstudies.enabled" = false;
|
# Disable battery API
|
||||||
# Disable battery API
|
# https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager
|
||||||
# https://developer.mozilla.org/en-US/docs/Web/API/BatteryManager
|
# https://bugzilla.mozilla.org/show_bug.cgi?id=1313580
|
||||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1313580
|
"dom.battery.enabled" = false;
|
||||||
"dom.battery.enabled" = false;
|
# Disable "beacon" asynchronous HTTP transfers (used for analytics)
|
||||||
# Disable "beacon" asynchronous HTTP transfers (used for analytics)
|
# https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon
|
||||||
# https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon
|
"beacon.enabled" = false;
|
||||||
"beacon.enabled" = false;
|
# Disable pinging URIs specified in HTML <a> ping= attributes
|
||||||
# Disable pinging URIs specified in HTML <a> ping= attributes
|
# http://kb.mozillazine.org/Browser.send_pings
|
||||||
# http://kb.mozillazine.org/Browser.send_pings
|
"browser.send_pings" = false;
|
||||||
"browser.send_pings" = false;
|
# Disable gamepad API to prevent USB device enumeration
|
||||||
# Disable gamepad API to prevent USB device enumeration
|
# https://www.w3.org/TR/gamepad/
|
||||||
# https://www.w3.org/TR/gamepad/
|
# https://trac.torproject.org/projects/tor/ticket/13023
|
||||||
# https://trac.torproject.org/projects/tor/ticket/13023
|
"dom.gamepad.enabled" = false;
|
||||||
"dom.gamepad.enabled" = false;
|
# Don't try to guess domain names when entering an invalid domain name in URL bar
|
||||||
# Don't try to guess domain names when entering an invalid domain name in URL bar
|
# http://www-archive.mozilla.org/docs/end-user/domain-guessing.html
|
||||||
# http://www-archive.mozilla.org/docs/end-user/domain-guessing.html
|
"browser.fixup.alternate.enabled" = false;
|
||||||
"browser.fixup.alternate.enabled" = false;
|
# Disable telemetry
|
||||||
# Disable telemetry
|
# https://wiki.mozilla.org/Platform/Features/Telemetry
|
||||||
# https://wiki.mozilla.org/Platform/Features/Telemetry
|
# https://wiki.mozilla.org/Privacy/Reviews/Telemetry
|
||||||
# https://wiki.mozilla.org/Privacy/Reviews/Telemetry
|
# https://wiki.mozilla.org/Telemetry
|
||||||
# https://wiki.mozilla.org/Telemetry
|
# https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry
|
||||||
# https://www.mozilla.org/en-US/legal/privacy/firefox.html#telemetry
|
# https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715
|
||||||
# https://support.mozilla.org/t5/Firefox-crashes/Mozilla-Crash-Reporter/ta-p/1715
|
# https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry
|
||||||
# https://wiki.mozilla.org/Security/Reviews/Firefox6/ReviewNotes/telemetry
|
# https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html
|
||||||
# https://gecko.readthedocs.io/en/latest/browser/experiments/experiments/manifest.html
|
# https://wiki.mozilla.org/Telemetry/Experiments
|
||||||
# https://wiki.mozilla.org/Telemetry/Experiments
|
# https://support.mozilla.org/en-US/questions/1197144
|
||||||
# https://support.mozilla.org/en-US/questions/1197144
|
# https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1
|
||||||
# https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#id1
|
"toolkit.telemetry.enabled" = false;
|
||||||
"toolkit.telemetry.enabled" = false;
|
"toolkit.telemetry.unified" = false;
|
||||||
"toolkit.telemetry.unified" = false;
|
"toolkit.telemetry.archive.enabled" = false;
|
||||||
"toolkit.telemetry.archive.enabled" = false;
|
"experiments.supported" = false;
|
||||||
"experiments.supported" = false;
|
"experiments.enabled" = false;
|
||||||
"experiments.enabled" = false;
|
"experiments.manifest.uri" = "";
|
||||||
"experiments.manifest.uri" = "";
|
# Disable health reports (basically more telemetry)
|
||||||
# Disable health reports (basically more telemetry)
|
# https://support.mozilla.org/en-US/kb/firefox-health-report-understand-your-browser-perf
|
||||||
# https://support.mozilla.org/en-US/kb/firefox-health-report-understand-your-browser-perf
|
# https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html
|
||||||
# https://gecko.readthedocs.org/en/latest/toolkit/components/telemetry/telemetry/preferences.html
|
"datareporting.healthreport.uploadEnabled" = false;
|
||||||
"datareporting.healthreport.uploadEnabled" = false;
|
"datareporting.healthreport.service.enabled" = false;
|
||||||
"datareporting.healthreport.service.enabled" = false;
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
};
|
||||||
};
|
|
||||||
|
|
||||||
# Override?
|
# Override?
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
firefox-bin
|
firefox-bin
|
||||||
(makeDesktopItem {
|
(makeDesktopItem {
|
||||||
name = "firefox-private";
|
name = "firefox-private";
|
||||||
desktopName = "Firefox (Private)";
|
desktopName = "Firefox (Private)";
|
||||||
genericName = "Open a private Firefox window";
|
genericName = "Open a private Firefox window";
|
||||||
icon = "firefox";
|
icon = "firefox";
|
||||||
exec = "${firefox-bin}/bin/firefox --private-window";
|
exec = "${firefox-bin}/bin/firefox --private-window";
|
||||||
categories = "Network";
|
categories = "Network";
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file = let cfgPath = ".mozilla/firefox"; in {
|
home.file = let cfgPath = ".mozilla/firefox"; in
|
||||||
|
{
|
||||||
"${cfgPath}/profiles.ini".text = ''
|
"${cfgPath}/profiles.ini".text = ''
|
||||||
[Profile0]
|
[Profile0]
|
||||||
Name=default
|
Name=default
|
||||||
|
@ -112,5 +112,4 @@
|
||||||
'';
|
'';
|
||||||
"${cfgPath}/anish.default/chrome/userChrome.css".source = ./userChrome.css;
|
"${cfgPath}/anish.default/chrome/userChrome.css".source = ./userChrome.css;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue