users: refac modules
This commit is contained in:
parent
3f0624c04e
commit
454f167145
41 changed files with 681 additions and 953 deletions
|
@ -1,4 +1,4 @@
|
||||||
{ dedsec-grub-theme, ... } @ inputs:
|
{ ... } @ inputs:
|
||||||
|
|
||||||
let
|
let
|
||||||
hardware = inputs.hardware.nixosModules;
|
hardware = inputs.hardware.nixosModules;
|
||||||
|
@ -8,7 +8,6 @@ in
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
|
|
||||||
extraModules = [
|
extraModules = [
|
||||||
dedsec-grub-theme.nixosModule
|
|
||||||
../modules/garbage-collector.nix
|
../modules/garbage-collector.nix
|
||||||
../users/jan
|
../users/jan
|
||||||
];
|
];
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
./home.nix
|
./home.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
progs.alacritty.fontSize = lib.mkIf (fontSize != null) fontSize;
|
local.alacritty.fontSize = lib.mkIf (fontSize != null) fontSize;
|
||||||
|
|
||||||
home.stateVersion = config.system.stateVersion;
|
home.stateVersion = config.system.stateVersion;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,10 +1,26 @@
|
||||||
{ config, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
secrets = import ./secrets.nix;
|
secrets = import ./secrets.nix;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = (import ./ui) ++ (import ./shell) ++ (import ./progs);
|
imports = [
|
||||||
|
../modules/window_manager
|
||||||
|
../modules/terminal.nix
|
||||||
|
../modules/shell.nix
|
||||||
|
|
||||||
|
../modules/notifications
|
||||||
|
../modules/file_manager
|
||||||
|
../modules/mail
|
||||||
|
../modules/ledger.nix
|
||||||
|
../modules/pass.nix
|
||||||
|
|
||||||
|
../modules/git.nix
|
||||||
|
../modules/dev_tools.nix
|
||||||
|
../modules/editor.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.enable = true;
|
||||||
|
|
||||||
home.keyboard = {
|
home.keyboard = {
|
||||||
model = "pc105";
|
model = "pc105";
|
||||||
|
@ -16,24 +32,12 @@ in
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
kotatogram-desktop
|
kotatogram-desktop
|
||||||
nheko
|
nheko
|
||||||
docker-compose
|
|
||||||
libreoffice
|
libreoffice
|
||||||
image-roll
|
image-roll
|
||||||
|
|
||||||
asciinema # record the terminal
|
asciinema # record the terminal
|
||||||
neofetch # command-line system information
|
neofetch # command-line system information
|
||||||
|
|
||||||
# tools
|
|
||||||
xh # friendly and fast tool for sending HTTP requests
|
|
||||||
fd # a simple, fast and user-friendly alternative to find
|
|
||||||
bat # a cat clone with syntax highlighting and git integration
|
|
||||||
ripgrep # a fuzzy finder
|
|
||||||
vnetod # a tool to change env sections
|
|
||||||
|
|
||||||
# nix
|
|
||||||
nixpkgs-fmt
|
|
||||||
nil # lsp server
|
|
||||||
|
|
||||||
# browser
|
# browser
|
||||||
# a fork of firefox, focused on privacy, security and freedom
|
# a fork of firefox, focused on privacy, security and freedom
|
||||||
(librewolf.override {
|
(librewolf.override {
|
||||||
|
@ -46,69 +50,18 @@ in
|
||||||
postgresql_12 # 🤷 I need only psql
|
postgresql_12 # 🤷 I need only psql
|
||||||
];
|
];
|
||||||
|
|
||||||
# user interface
|
local.git = {
|
||||||
ui = {
|
|
||||||
# windows manager
|
|
||||||
xmonad.enable = true;
|
|
||||||
# bar
|
|
||||||
polybar.enable = true;
|
|
||||||
# lock
|
|
||||||
betterlockscreen.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# shell
|
|
||||||
shell = {
|
|
||||||
zsh.enable = true;
|
|
||||||
|
|
||||||
prompt.starship.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs
|
|
||||||
progs = {
|
|
||||||
alacritty.enable = true;
|
|
||||||
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
gpgKey = secrets.gpgSigningKey;
|
gpgKey = secrets.gpgSigningKey;
|
||||||
inherit (secrets) userName userEmail;
|
inherit (secrets) userName userEmail;
|
||||||
|
|
||||||
git-crypt.enable = true;
|
git-crypt.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# password manager
|
programs.zsh.initExtra = lib.mkAfter ''
|
||||||
pass.enable = true;
|
eval "$(cat $HOME/repos/tas/shell/zsh)"
|
||||||
|
eval $(kubectl completion zsh)
|
||||||
|
'';
|
||||||
|
|
||||||
# email manager
|
accounts.email.accounts = secrets.emailAccounts;
|
||||||
aerc.enable = true;
|
|
||||||
|
|
||||||
# finance manager
|
|
||||||
hledger.enable = true;
|
|
||||||
|
|
||||||
# file manager
|
|
||||||
vifm.enable = true;
|
|
||||||
|
|
||||||
# editor
|
|
||||||
nvim = {
|
|
||||||
enable = true;
|
|
||||||
default = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# tools
|
|
||||||
exa.enable = true;
|
|
||||||
zoxide.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
accounts = {
|
|
||||||
email = {
|
|
||||||
maildirBasePath = "${config.xdg.dataHome}/mail";
|
|
||||||
accounts = secrets.emailAccounts;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
"scripts" = {
|
"scripts" = {
|
||||||
|
@ -122,10 +75,4 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.enable = true;
|
|
||||||
|
|
||||||
services.wired = {
|
|
||||||
enable = true;
|
|
||||||
config = ./wired.ron;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,164 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.progs.aerc;
|
|
||||||
|
|
||||||
exec = cmd: ":${cmd}<Enter>";
|
|
||||||
fill = cmd: ":${cmd}<space>";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.progs.aerc = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Add neomutt with my personal configuration";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# See: https://git.sbruder.de/simon/nixos-config/src/branch/master/users/simon/modules/mail/aerc/default.nix
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.aerc = {
|
|
||||||
enable = true;
|
|
||||||
# See: https://man.archlinux.org/man/aerc-config.5.en
|
|
||||||
extraConfig = {
|
|
||||||
general = {
|
|
||||||
unsafe-accounts-conf = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
ui = {
|
|
||||||
index-format = "%-17.17D %-20.20n %Z %-20.20g %s";
|
|
||||||
# See https://godoc.org/time#Time.Format
|
|
||||||
timestamp-format = "2006-01-02 15:04 MST";
|
|
||||||
this-day-time-format = "15:04";
|
|
||||||
this-week-time-format = "Monday 15:04";
|
|
||||||
this-year-time-format = "02 January";
|
|
||||||
pinned-tab-marker = "車";
|
|
||||||
border-char-vertical = "│";
|
|
||||||
border-char-horizontal = "─";
|
|
||||||
fuzzy-complete = true;
|
|
||||||
new-message-bell = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
statusline = {
|
|
||||||
display-mode = "icon";
|
|
||||||
};
|
|
||||||
|
|
||||||
filters = {
|
|
||||||
"text/plain" = "${./colorize}";
|
|
||||||
"text/html" = "html";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraBinds = {
|
|
||||||
messages = {
|
|
||||||
"q" = exec "quit";
|
|
||||||
|
|
||||||
"gt" = exec "next-tab";
|
|
||||||
"gT" = exec "prev-tab";
|
|
||||||
|
|
||||||
"j" = exec "next";
|
|
||||||
"<Down>" = exec "next";
|
|
||||||
"<C-d>" = exec "next 50%";
|
|
||||||
|
|
||||||
"k" = exec "prev";
|
|
||||||
"<Up>" = exec "prev";
|
|
||||||
"<C-b>" = exec "prev 50%";
|
|
||||||
|
|
||||||
"gg" = exec "select 0";
|
|
||||||
"G" = exec "select -1";
|
|
||||||
|
|
||||||
"J" = exec "next-folder";
|
|
||||||
"K" = exec "prev-folder";
|
|
||||||
"c" = fill "cf";
|
|
||||||
|
|
||||||
"<Enter>" = exec "view";
|
|
||||||
"C" = exec "compose";
|
|
||||||
|
|
||||||
"/" = fill "search";
|
|
||||||
"\\" = fill "filter";
|
|
||||||
"n" = exec "next-result";
|
|
||||||
"N" = exec "prev-result";
|
|
||||||
|
|
||||||
"U" = exec "unsubscribe";
|
|
||||||
"D" = exec "delete";
|
|
||||||
"A" = exec "archive flat";
|
|
||||||
#"D" = exec "modify-labels +deleted -inbox";
|
|
||||||
#"A" = exec "modify-labels -inbox";
|
|
||||||
#"ms" = exec "modify-labels +spam -inbox";
|
|
||||||
#"mS" = exec "modify-labels -spam +inbox";
|
|
||||||
};
|
|
||||||
|
|
||||||
view = {
|
|
||||||
"q" = exec "close";
|
|
||||||
"O" = exec "open";
|
|
||||||
"S" = fill "save";
|
|
||||||
|
|
||||||
"f" = exec "forward";
|
|
||||||
|
|
||||||
"rr" = exec "reply -a";
|
|
||||||
"rq" = exec "reply -aq";
|
|
||||||
"Rr" = exec "reply";
|
|
||||||
"Rq" = exec "reply -q";
|
|
||||||
|
|
||||||
"<C-k>" = exec "prev-part";
|
|
||||||
"<C-j>" = exec "next-part";
|
|
||||||
"J" = exec "next";
|
|
||||||
"K" = exec "prev";
|
|
||||||
|
|
||||||
"U" = exec "unsubscribe";
|
|
||||||
"D" = exec "delete";
|
|
||||||
"A" = exec "archive flat";
|
|
||||||
# "ms" = exec "modify-labels +spam -inbox";
|
|
||||||
# "mS" = exec "modify-labels -spam +inbox";
|
|
||||||
};
|
|
||||||
|
|
||||||
compose = {
|
|
||||||
"$ex" = "<C-x>";
|
|
||||||
"<C-k>" = exec "prev-field";
|
|
||||||
"<C-j>" = exec "next-field";
|
|
||||||
"<tab>" = exec "next-field";
|
|
||||||
};
|
|
||||||
|
|
||||||
"compose::editor" = {
|
|
||||||
"$noinherit" = "true";
|
|
||||||
"$ex" = "<C-x>";
|
|
||||||
"<C-k>" = exec "prev-field";
|
|
||||||
"<C-j>" = exec "next-field";
|
|
||||||
};
|
|
||||||
|
|
||||||
"compose::review" = {
|
|
||||||
"y" = exec "send";
|
|
||||||
"n" = exec "abort";
|
|
||||||
"p" = exec "postpone";
|
|
||||||
"q" = exec "choose -o d discard abort -o p postpone postpone";
|
|
||||||
"e" = exec "edit";
|
|
||||||
"a" = fill "attach";
|
|
||||||
"d" = fill "detach";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
stylesets.default = {
|
|
||||||
"*.selected.reverse" = true;
|
|
||||||
"title.reverse" = true;
|
|
||||||
"header.bold" = true;
|
|
||||||
"*error.bold" = true;
|
|
||||||
"error.fg" = 1;
|
|
||||||
"warning.fg" = 3;
|
|
||||||
"success.fg" = 2;
|
|
||||||
"statusline_default.bg" = 0;
|
|
||||||
"statusline_error.fg" = 1;
|
|
||||||
"statusline_error.reverse" = true;
|
|
||||||
"statusline_success.fg" = 2;
|
|
||||||
"statusline_success.reverse" = true;
|
|
||||||
"msglist_unread.bold" = true;
|
|
||||||
"msglist_deleted.fg" = 10;
|
|
||||||
"tab.bg" = 11;
|
|
||||||
"tab.selected.reverse" = false;
|
|
||||||
"tab.selected.bg" = 12;
|
|
||||||
"tab.fg" = 0;
|
|
||||||
"completion_default.bg" = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{ fontSize ? 11.0 }:
|
|
||||||
|
|
||||||
{
|
|
||||||
window = {
|
|
||||||
padding = {
|
|
||||||
x = 5;
|
|
||||||
y = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
decorations = "none";
|
|
||||||
|
|
||||||
dynamic_title = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
scrolling = {
|
|
||||||
history = 10000;
|
|
||||||
|
|
||||||
multiplier = 3;
|
|
||||||
};
|
|
||||||
|
|
||||||
font =
|
|
||||||
let
|
|
||||||
family = "monospace";
|
|
||||||
|
|
||||||
mkFont = style: { inherit family style; };
|
|
||||||
in
|
|
||||||
{
|
|
||||||
normal = mkFont "Regular";
|
|
||||||
bold = mkFont "Bold";
|
|
||||||
italic = mkFont "Italic";
|
|
||||||
bold_italic = mkFont "Bold Italic";
|
|
||||||
|
|
||||||
size = fontSize;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.progs.alacritty;
|
|
||||||
|
|
||||||
alacrittyConfig = import ./config.nix { inherit (cfg) fontSize; };
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.progs.alacritty = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Enable alacritty, GPU-accelerated terminal emulator";
|
|
||||||
};
|
|
||||||
|
|
||||||
fontSize = mkOption {
|
|
||||||
type = types.number;
|
|
||||||
default = 11.0;
|
|
||||||
description = "Alacritty font size";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
settings = alacrittyConfig;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
[
|
|
||||||
./alacritty
|
|
||||||
./aerc
|
|
||||||
./exa.nix
|
|
||||||
./git.nix
|
|
||||||
./hledger.nix
|
|
||||||
./nvim.nix
|
|
||||||
./pass.nix
|
|
||||||
./vifm
|
|
||||||
./zoxide.nix
|
|
||||||
]
|
|
|
@ -1,36 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.progs.exa;
|
|
||||||
zsh = config.shell.zsh;
|
|
||||||
|
|
||||||
exaPackage = pkgs.exa.override { gitSupport = false; };
|
|
||||||
defaultArgs = "--icons --classify";
|
|
||||||
bin = "${exaPackage}/bin/exa ${defaultArgs}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.progs.exa = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Add and configure exa, a modern replacement for ls";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.exa = {
|
|
||||||
enable = true;
|
|
||||||
package = exaPackage;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh.shellAliases = mkIf zsh.enable rec {
|
|
||||||
ls = "${bin} --oneline";
|
|
||||||
la = "${ls} --all";
|
|
||||||
lt = "${bin} --tree --level=3";
|
|
||||||
ll = "${bin} --long --header";
|
|
||||||
lla = "${ll} --all";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.progs.hledger;
|
|
||||||
|
|
||||||
bin = "${pkgs.hledger}/bin/hledger";
|
|
||||||
sbin = "${bin} --strict";
|
|
||||||
|
|
||||||
hledgerAliases = {
|
|
||||||
hle = bin;
|
|
||||||
shle = sbin;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.progs.hledger = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Add and configure hledger tool to manage finance";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
hledger
|
|
||||||
hledger-ui
|
|
||||||
hledger-interest
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
"finance/commodities.journal".text = ''
|
|
||||||
; Fiat currencies
|
|
||||||
commodity 1.000,00 RUB
|
|
||||||
commodity 1.000,00 USD
|
|
||||||
|
|
||||||
; Investment commodities
|
|
||||||
|
|
||||||
; Cryptocurrencies
|
|
||||||
|
|
||||||
; Other
|
|
||||||
|
|
||||||
; Default commodity
|
|
||||||
; D 1.000,00 RUB
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh.shellAliases = mkIf config.shell.zsh.enable hledgerAliases;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.progs.nvim;
|
|
||||||
|
|
||||||
myneovim = pkgs.myneovim.override {
|
|
||||||
viAlias = true;
|
|
||||||
vimAlias = true;
|
|
||||||
enableDevIcons = true;
|
|
||||||
enableTabby = true;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.progs.nvim = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Add and configure neovim";
|
|
||||||
};
|
|
||||||
|
|
||||||
default = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Set neovim as default editor";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = [ myneovim ];
|
|
||||||
|
|
||||||
home.sessionVariables = mkIf cfg.default {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.progs.pass;
|
|
||||||
passDataDir = "${config.xdg.dataHome}/pass";
|
|
||||||
|
|
||||||
myPassPackage = pkgs.pass-minimal.withExtensions (ext: [
|
|
||||||
ext.pass-audit
|
|
||||||
]);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.progs.pass = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Enables pass tool to manage your passwords";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.password-store = {
|
|
||||||
enable = true;
|
|
||||||
package = myPassPackage;
|
|
||||||
settings = {
|
|
||||||
PASSWORD_STORE_DIR = "${passDataDir}/store";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.pass-secret-service.enable = true;
|
|
||||||
|
|
||||||
programs.gpg.enable = true;
|
|
||||||
services.gpg-agent.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.progs.vifm;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.progs.vifm = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Add and configure vifm, a vi-like file manager";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
vifm # a vi-like file manager
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
xdg.configFile = {
|
|
||||||
"vifm/vifmrc".source = ./vifmrc;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.progs.zoxide;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.progs.zoxide = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Add zoxide, a modern replacement for cd";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.zoxide = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = config.shell.zsh.enable;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
[ ./zsh.nix ] ++ (import ./prompt)
|
|
|
@ -1 +0,0 @@
|
||||||
[ ./starship ]
|
|
|
@ -1,34 +0,0 @@
|
||||||
{ concatStrings }:
|
|
||||||
|
|
||||||
{
|
|
||||||
add_newline = true;
|
|
||||||
|
|
||||||
format = concatStrings [
|
|
||||||
"$directory"
|
|
||||||
"$git_branch"
|
|
||||||
"$git_commit"
|
|
||||||
"$git_state"
|
|
||||||
"$git_metrics"
|
|
||||||
"$git_status"
|
|
||||||
"$shlvl"
|
|
||||||
"$nix_shell"
|
|
||||||
"$cmd_duration"
|
|
||||||
"$jobs"
|
|
||||||
"$line_break"
|
|
||||||
"$character"
|
|
||||||
];
|
|
||||||
|
|
||||||
character = {
|
|
||||||
success_symbol = "[➜](bold green)";
|
|
||||||
error_symbol = "[➜](bold red)";
|
|
||||||
};
|
|
||||||
|
|
||||||
git_commit.commit_hash_length = 6;
|
|
||||||
|
|
||||||
shlvl = {
|
|
||||||
disabled = false;
|
|
||||||
format = "[$symbol$shlvl]($style) ";
|
|
||||||
symbol = "↕️ ";
|
|
||||||
threshold = 3;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.shell.prompt.starship;
|
|
||||||
|
|
||||||
starshipConfig = import ./config.nix {
|
|
||||||
inherit concatStrings;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.shell.prompt.starship = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Enable starship cross-shell prompt";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = config.shell.zsh.enable;
|
|
||||||
settings = starshipConfig;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,51 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.shell.zsh;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.shell.zsh = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Add z shell";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
# fish and zsh support for nix-shell
|
|
||||||
home.packages = with pkgs; [ any-nix-shell ];
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableAutosuggestions = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
defaultKeymap = "viins";
|
|
||||||
dotDir = ".config/zsh";
|
|
||||||
|
|
||||||
history = {
|
|
||||||
path = "${config.xdg.dataHome}/zsh/zsh_history";
|
|
||||||
expireDuplicatesFirst = true;
|
|
||||||
ignorePatterns = [
|
|
||||||
"rm *"
|
|
||||||
"kill *"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
theme = mkIf (!config.shell.prompt.starship.enable) "robbyrussell";
|
|
||||||
};
|
|
||||||
|
|
||||||
initExtra = ''
|
|
||||||
any-nix-shell zsh --info-right | source /dev/stdin
|
|
||||||
|
|
||||||
eval "$(cat $HOME/repos/tas/shell/zsh)"
|
|
||||||
|
|
||||||
eval $(kubectl completion zsh)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.ui.betterlockscreen;
|
|
||||||
|
|
||||||
package = config.services.betterlockscreen.package;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.ui.betterlockscreen = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Enable betterlockscreen";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.betterlockscreen = {
|
|
||||||
enable = true;
|
|
||||||
arguments = [ "--display 1" "--" "-e" ];
|
|
||||||
inactiveInterval = 15;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.timers.updateBetterlockscreenImage = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Update betterlockscreen image timer";
|
|
||||||
After = [ "graphical-session.target" "timers.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
Timer = {
|
|
||||||
OnUnitActiveSec = "60min";
|
|
||||||
OnBootSec = "10s";
|
|
||||||
};
|
|
||||||
|
|
||||||
Install = {
|
|
||||||
WantedBy = [ "graphical-session.target" "timers.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services.updateBetterlockscreenImage = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Update betterlockscreen image";
|
|
||||||
After = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
Environment = "PATH=/run/current-system/sw/bin";
|
|
||||||
ExecStart = "${package}/bin/betterlockscreen --display 1 --update ${config.home.homeDirectory}/pictures/wallpapers";
|
|
||||||
};
|
|
||||||
|
|
||||||
Install = {
|
|
||||||
WantedBy = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
[
|
|
||||||
./xmonad
|
|
||||||
./polybar
|
|
||||||
./betterlockscreen.nix
|
|
||||||
]
|
|
||||||
|
|
|
@ -1,138 +0,0 @@
|
||||||
{ lib, config, pkgs, colors }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
mkWifi = interface: {
|
|
||||||
type = "internal/network";
|
|
||||||
interval = 3;
|
|
||||||
interface = {
|
|
||||||
text = interface;
|
|
||||||
type = "wireless";
|
|
||||||
};
|
|
||||||
label.connected = "%essid% %signal%";
|
|
||||||
format.connected = {
|
|
||||||
prefix = "| ";
|
|
||||||
suffix = "%";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
padding = 1;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"bar/main" = {
|
|
||||||
monitor = "\${env:MONITOR:DisplayPort-1}";
|
|
||||||
width = "100%";
|
|
||||||
height = "20px";
|
|
||||||
font = [
|
|
||||||
"Fira Code:size=9:antialias=true"
|
|
||||||
"Fira Code:bold:size=9:antialias=true"
|
|
||||||
"FiraCode Nerd Font Mono:size=9:antialias=true"
|
|
||||||
"FiraCode Nerd Font Mono:size=14:antialias=true"
|
|
||||||
];
|
|
||||||
radius = 0;
|
|
||||||
modules = {
|
|
||||||
left = "xmonad";
|
|
||||||
center = "date wifi_home wifi_laptop";
|
|
||||||
right = "exchangerate volume battery lang time";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/date" = {
|
|
||||||
type = "internal/date";
|
|
||||||
interval = 10;
|
|
||||||
date = "%a %d %b %Y";
|
|
||||||
label = "%date%";
|
|
||||||
format = { inherit padding; };
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/time" = {
|
|
||||||
type = "internal/date";
|
|
||||||
time = "%H:%M:%S";
|
|
||||||
label = {
|
|
||||||
text = "%time%";
|
|
||||||
font = 2;
|
|
||||||
foreground = colors.orange;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/lang" = {
|
|
||||||
type = "internal/xkeyboard";
|
|
||||||
format = {
|
|
||||||
inherit padding;
|
|
||||||
text = "<label-layout>";
|
|
||||||
};
|
|
||||||
label.layout.font = 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/volume" = {
|
|
||||||
type = "custom/script";
|
|
||||||
exec = "~/scripts/get_volume.sh";
|
|
||||||
interval = 1;
|
|
||||||
format = {
|
|
||||||
inherit padding;
|
|
||||||
prefix = "%{T4}%{T-} ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/battery" = {
|
|
||||||
type = "internal/battery";
|
|
||||||
full-at = 99;
|
|
||||||
low-at = 10;
|
|
||||||
battery = "BAT0";
|
|
||||||
adapter = "AC0";
|
|
||||||
|
|
||||||
format.charging = {
|
|
||||||
inherit padding;
|
|
||||||
text = "%{T3}%{T-} <label-charging>";
|
|
||||||
foreground = colors.green;
|
|
||||||
};
|
|
||||||
|
|
||||||
format.discharging = {
|
|
||||||
inherit padding;
|
|
||||||
text = "%{T3}<ramp-capacity>%{T-} <label-discharging>";
|
|
||||||
foreground = colors.orange;
|
|
||||||
};
|
|
||||||
|
|
||||||
format.full = {
|
|
||||||
inherit padding;
|
|
||||||
text = "%{T3}%{T-} <label-full>";
|
|
||||||
foreground = colors.green;
|
|
||||||
};
|
|
||||||
|
|
||||||
format.low = {
|
|
||||||
inherit padding;
|
|
||||||
text = "%{T3}%{T-} <label-low>";
|
|
||||||
foreground = colors.red;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Only applies if <ramp-capacity> is used
|
|
||||||
ramp.capacity = [ "" "" "" "" "" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/wifi_home" = mkWifi "wlp11s0f3u2";
|
|
||||||
"module/wifi_laptop" = mkWifi "wlp2s0";
|
|
||||||
|
|
||||||
"module/xmonad" = mkIf config.ui.xmonad.enable {
|
|
||||||
type = "custom/script";
|
|
||||||
exec = "${pkgs.xmonad-log}/bin/xmonad-log";
|
|
||||||
tail = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"module/exchangerate" = {
|
|
||||||
type = "custom/script";
|
|
||||||
exec = "~/scripts/exchangerate.sh";
|
|
||||||
interval = 60;
|
|
||||||
format = {
|
|
||||||
inherit padding;
|
|
||||||
prefix = "USD: ";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"global/wm" = {
|
|
||||||
margin = {
|
|
||||||
bottom = 0;
|
|
||||||
top = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.ui.polybar;
|
|
||||||
pcfg = config.services.polybar;
|
|
||||||
|
|
||||||
# TODO: create a theme
|
|
||||||
colors = {
|
|
||||||
orange = "#ee9a00";
|
|
||||||
red = "#ff5555";
|
|
||||||
green = "#50fa7b";
|
|
||||||
};
|
|
||||||
|
|
||||||
polybarConfig = import ./config.nix { inherit lib config pkgs colors; };
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.ui.polybar = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Enable polybar status bar";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
systemd.user.services.polybar = {
|
|
||||||
# Add additional /usr/bin to run custom scripts
|
|
||||||
Service.Environment = mkForce "PATH=${pcfg.package}/bin:/run/current-system/sw/bin";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.polybar = {
|
|
||||||
enable = true;
|
|
||||||
script = "MONITOR=$(xrandr | grep \"connected primary\" | awk '{print $1;}') polybar &";
|
|
||||||
settings = polybarConfig;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
{ lib, config, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
uiCfg = config.ui;
|
|
||||||
cfg = uiCfg.xmonad;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.ui.xmonad = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Enable xsessions and xmonad window manager";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
xclip # access x clipboard from a console
|
|
||||||
dmenu # menu for x window system
|
|
||||||
flameshot # powerful yet simple to use screenshot software
|
|
||||||
nitrogen # wallpaper manager
|
|
||||||
];
|
|
||||||
|
|
||||||
xsession = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
windowManager.xmonad = {
|
|
||||||
enable = true;
|
|
||||||
enableContribAndExtras = true;
|
|
||||||
config = ./config.hs;
|
|
||||||
extraPackages = mkIf uiCfg.polybar.enable (hp: [
|
|
||||||
hp.dbus
|
|
||||||
hp.monad-logger
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
|
|
||||||
initExtra = ''
|
|
||||||
${pkgs.nitrogen}/bin/nitrogen --restore &
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
45
users/modules/dev_tools.nix
Normal file
45
users/modules/dev_tools.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
exaPackage = pkgs.exa.override { gitSupport = false; };
|
||||||
|
defaultArgs = "--icons --classify";
|
||||||
|
bin = "${exaPackage}/bin/exa ${defaultArgs}";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.exa = {
|
||||||
|
enable = true;
|
||||||
|
package = exaPackage;
|
||||||
|
};
|
||||||
|
programs.zsh.shellAliases = lib.mkIf config.programs.zsh.enable rec {
|
||||||
|
ls = "${bin} --oneline";
|
||||||
|
la = "${ls} --all";
|
||||||
|
lt = "${bin} --tree --level=3";
|
||||||
|
ll = "${bin} --long --header";
|
||||||
|
lla = "${ll} --all";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = config.programs.zsh.enable;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# tools
|
||||||
|
xh # friendly and fast tool for sending HTTP requests
|
||||||
|
fd # a simple, fast and user-friendly alternative to find
|
||||||
|
bat # a cat clone with syntax highlighting and git integration
|
||||||
|
ripgrep # a fuzzy finder
|
||||||
|
vnetod # a tool to change env sections
|
||||||
|
|
||||||
|
# nix
|
||||||
|
nixpkgs-fmt
|
||||||
|
nil # lsp server
|
||||||
|
|
||||||
|
docker-compose
|
||||||
|
];
|
||||||
|
}
|
15
users/modules/editor.nix
Normal file
15
users/modules/editor.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
myneovim = pkgs.myneovim.override {
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
enableDevIcons = true;
|
||||||
|
enableTabby = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = [ myneovim ];
|
||||||
|
|
||||||
|
home.sessionVariables.EDITOR = "nvim";
|
||||||
|
}
|
9
users/modules/file_manager/default.nix
Normal file
9
users/modules/file_manager/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [ vifm ];
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
"vifm/vifmrc".source = ./vifmrc;
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,18 +1,10 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.progs.git;
|
cfg = config.local.git;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.progs.git = {
|
options.local.git = with lib; {
|
||||||
enable = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "Add git with my personal settings";
|
|
||||||
};
|
|
||||||
|
|
||||||
userName = mkOption {
|
userName = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = "Set your global name";
|
description = "Set your global name";
|
||||||
|
@ -38,14 +30,13 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = {
|
||||||
home.packages = mkIf cfg.git-crypt.enable [ pkgs.git-crypt ];
|
home.packages = lib.mkIf cfg.git-crypt.enable [ pkgs.git-crypt ];
|
||||||
|
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
userName = cfg.userName;
|
inherit (cfg) userName userEmail;
|
||||||
userEmail = cfg.userEmail;
|
signing = lib.mkIf (cfg.gpgKey != null) {
|
||||||
signing = mkIf (cfg.gpgKey != null) {
|
|
||||||
key = cfg.gpgKey;
|
key = cfg.gpgKey;
|
||||||
signByDefault = true;
|
signByDefault = true;
|
||||||
};
|
};
|
||||||
|
@ -75,6 +66,7 @@ in
|
||||||
plo = "pull origin";
|
plo = "pull origin";
|
||||||
rb = "rebase";
|
rb = "rebase";
|
||||||
rbi = "rebase -i";
|
rbi = "rebase -i";
|
||||||
|
lo = "log --pretty=oneline";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
37
users/modules/ledger.nix
Normal file
37
users/modules/ledger.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
bin = "${pkgs.hledger}/bin/hledger";
|
||||||
|
sbin = "${bin} --strict";
|
||||||
|
|
||||||
|
hledgerAliases = {
|
||||||
|
hle = bin;
|
||||||
|
shle = sbin;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hledger
|
||||||
|
hledger-ui
|
||||||
|
hledger-interest
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
"finance/commodities.journal".text = ''
|
||||||
|
; Fiat currencies
|
||||||
|
commodity 1.000,00 RUB
|
||||||
|
commodity 1.000,00 USD
|
||||||
|
|
||||||
|
; Investment commodities
|
||||||
|
|
||||||
|
; Cryptocurrencies
|
||||||
|
|
||||||
|
; Other
|
||||||
|
|
||||||
|
; Default commodity
|
||||||
|
; D 1.000,00 RUB
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.zsh.shellAliases = lib.mkIf config.programs.zsh.enable hledgerAliases;
|
||||||
|
}
|
152
users/modules/mail/default.nix
Normal file
152
users/modules/mail/default.nix
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
exec = cmd: ":${cmd}<Enter>";
|
||||||
|
fill = cmd: ":${cmd}<space>";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
accounts.email.maildirBasePath = "${config.xdg.dataHome}/mail";
|
||||||
|
|
||||||
|
# See: https://git.sbruder.de/simon/nixos-config/src/branch/master/users/simon/modules/mail/aerc/default.nix
|
||||||
|
programs.aerc = {
|
||||||
|
enable = true;
|
||||||
|
# See: https://man.archlinux.org/man/aerc-config.5.en
|
||||||
|
extraConfig = {
|
||||||
|
general = {
|
||||||
|
unsafe-accounts-conf = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ui = {
|
||||||
|
index-format = "%-17.17D %-20.20n %Z %-20.20g %s";
|
||||||
|
# See https://godoc.org/time#Time.Format
|
||||||
|
timestamp-format = "2006-01-02 15:04 MST";
|
||||||
|
this-day-time-format = "15:04";
|
||||||
|
this-week-time-format = "Monday 15:04";
|
||||||
|
this-year-time-format = "02 January";
|
||||||
|
pinned-tab-marker = "車";
|
||||||
|
border-char-vertical = "│";
|
||||||
|
border-char-horizontal = "─";
|
||||||
|
fuzzy-complete = true;
|
||||||
|
new-message-bell = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
statusline = {
|
||||||
|
display-mode = "icon";
|
||||||
|
};
|
||||||
|
|
||||||
|
filters = {
|
||||||
|
"text/plain" = "${./colorize}";
|
||||||
|
"text/html" = "html";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraBinds = {
|
||||||
|
messages = {
|
||||||
|
"q" = exec "quit";
|
||||||
|
|
||||||
|
"gt" = exec "next-tab";
|
||||||
|
"gT" = exec "prev-tab";
|
||||||
|
|
||||||
|
"j" = exec "next";
|
||||||
|
"<Down>" = exec "next";
|
||||||
|
"<C-d>" = exec "next 50%";
|
||||||
|
|
||||||
|
"k" = exec "prev";
|
||||||
|
"<Up>" = exec "prev";
|
||||||
|
"<C-b>" = exec "prev 50%";
|
||||||
|
|
||||||
|
"gg" = exec "select 0";
|
||||||
|
"G" = exec "select -1";
|
||||||
|
|
||||||
|
"J" = exec "next-folder";
|
||||||
|
"K" = exec "prev-folder";
|
||||||
|
"c" = fill "cf";
|
||||||
|
|
||||||
|
"<Enter>" = exec "view";
|
||||||
|
"C" = exec "compose";
|
||||||
|
|
||||||
|
"/" = fill "search";
|
||||||
|
"\\" = fill "filter";
|
||||||
|
"n" = exec "next-result";
|
||||||
|
"N" = exec "prev-result";
|
||||||
|
|
||||||
|
"U" = exec "unsubscribe";
|
||||||
|
"D" = exec "delete";
|
||||||
|
"A" = exec "archive flat";
|
||||||
|
#"D" = exec "modify-labels +deleted -inbox";
|
||||||
|
#"A" = exec "modify-labels -inbox";
|
||||||
|
#"ms" = exec "modify-labels +spam -inbox";
|
||||||
|
#"mS" = exec "modify-labels -spam +inbox";
|
||||||
|
};
|
||||||
|
|
||||||
|
view = {
|
||||||
|
"q" = exec "close";
|
||||||
|
"O" = exec "open";
|
||||||
|
"S" = fill "save";
|
||||||
|
|
||||||
|
"f" = exec "forward";
|
||||||
|
|
||||||
|
"rr" = exec "reply -a";
|
||||||
|
"rq" = exec "reply -aq";
|
||||||
|
"Rr" = exec "reply";
|
||||||
|
"Rq" = exec "reply -q";
|
||||||
|
|
||||||
|
"<C-k>" = exec "prev-part";
|
||||||
|
"<C-j>" = exec "next-part";
|
||||||
|
"J" = exec "next";
|
||||||
|
"K" = exec "prev";
|
||||||
|
|
||||||
|
"U" = exec "unsubscribe";
|
||||||
|
"D" = exec "delete";
|
||||||
|
"A" = exec "archive flat";
|
||||||
|
# "ms" = exec "modify-labels +spam -inbox";
|
||||||
|
# "mS" = exec "modify-labels -spam +inbox";
|
||||||
|
};
|
||||||
|
|
||||||
|
compose = {
|
||||||
|
"$ex" = "<C-x>";
|
||||||
|
"<C-k>" = exec "prev-field";
|
||||||
|
"<C-j>" = exec "next-field";
|
||||||
|
"<tab>" = exec "next-field";
|
||||||
|
};
|
||||||
|
|
||||||
|
"compose::editor" = {
|
||||||
|
"$noinherit" = "true";
|
||||||
|
"$ex" = "<C-x>";
|
||||||
|
"<C-k>" = exec "prev-field";
|
||||||
|
"<C-j>" = exec "next-field";
|
||||||
|
};
|
||||||
|
|
||||||
|
"compose::review" = {
|
||||||
|
"y" = exec "send";
|
||||||
|
"n" = exec "abort";
|
||||||
|
"p" = exec "postpone";
|
||||||
|
"q" = exec "choose -o d discard abort -o p postpone postpone";
|
||||||
|
"e" = exec "edit";
|
||||||
|
"a" = fill "attach";
|
||||||
|
"d" = fill "detach";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
stylesets.default = {
|
||||||
|
"*.selected.reverse" = true;
|
||||||
|
"title.reverse" = true;
|
||||||
|
"header.bold" = true;
|
||||||
|
"*error.bold" = true;
|
||||||
|
"error.fg" = 1;
|
||||||
|
"warning.fg" = 3;
|
||||||
|
"success.fg" = 2;
|
||||||
|
"statusline_default.bg" = 0;
|
||||||
|
"statusline_error.fg" = 1;
|
||||||
|
"statusline_error.reverse" = true;
|
||||||
|
"statusline_success.fg" = 2;
|
||||||
|
"statusline_success.reverse" = true;
|
||||||
|
"msglist_unread.bold" = true;
|
||||||
|
"msglist_deleted.fg" = 10;
|
||||||
|
"tab.bg" = 11;
|
||||||
|
"tab.selected.reverse" = false;
|
||||||
|
"tab.selected.bg" = 12;
|
||||||
|
"tab.fg" = 0;
|
||||||
|
"completion_default.bg" = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
8
users/modules/notifications/default.nix
Normal file
8
users/modules/notifications/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.wired = {
|
||||||
|
enable = true;
|
||||||
|
config = ./wired.ron;
|
||||||
|
};
|
||||||
|
}
|
22
users/modules/pass.nix
Normal file
22
users/modules/pass.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
passDataDir = "${config.xdg.dataHome}/pass";
|
||||||
|
|
||||||
|
myPassPackage = pkgs.pass-minimal.withExtensions (ext: [
|
||||||
|
ext.pass-audit
|
||||||
|
]);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.password-store = {
|
||||||
|
enable = true;
|
||||||
|
package = myPassPackage;
|
||||||
|
settings = {
|
||||||
|
PASSWORD_STORE_DIR = "${passDataDir}/store";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.pass-secret-service.enable = true;
|
||||||
|
|
||||||
|
programs.gpg.enable = true;
|
||||||
|
services.gpg-agent.enable = true;
|
||||||
|
}
|
66
users/modules/shell.nix
Normal file
66
users/modules/shell.nix
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# fish and zsh support for nix-shell
|
||||||
|
home.packages = with pkgs; [ any-nix-shell ];
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableAutosuggestions = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
defaultKeymap = "viins";
|
||||||
|
dotDir = ".config/zsh";
|
||||||
|
|
||||||
|
history = {
|
||||||
|
path = "${config.xdg.dataHome}/zsh/zsh_history";
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
ignorePatterns = [
|
||||||
|
"rm *"
|
||||||
|
"kill *"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
oh-my-zsh.enable = true;
|
||||||
|
|
||||||
|
initExtra = ''
|
||||||
|
any-nix-shell zsh --info-right | source /dev/stdin
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = config.programs.zsh.enable;
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
|
||||||
|
format = lib.concatStrings [
|
||||||
|
"$directory"
|
||||||
|
"$git_branch"
|
||||||
|
"$git_commit"
|
||||||
|
"$git_state"
|
||||||
|
"$git_metrics"
|
||||||
|
"$git_status"
|
||||||
|
"$shlvl"
|
||||||
|
"$nix_shell"
|
||||||
|
"$cmd_duration"
|
||||||
|
"$jobs"
|
||||||
|
"$line_break"
|
||||||
|
"$character"
|
||||||
|
];
|
||||||
|
|
||||||
|
character = {
|
||||||
|
success_symbol = "[➜](bold green)";
|
||||||
|
error_symbol = "[➜](bold red)";
|
||||||
|
};
|
||||||
|
|
||||||
|
git_commit.commit_hash_length = 6;
|
||||||
|
|
||||||
|
shlvl = {
|
||||||
|
disabled = false;
|
||||||
|
format = "[$symbol$shlvl]($style) ";
|
||||||
|
symbol = "↕️ ";
|
||||||
|
threshold = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
46
users/modules/terminal.nix
Normal file
46
users/modules/terminal.nix
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.local.alacritty;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.local.alacritty = with lib; {
|
||||||
|
fontSize = mkOption {
|
||||||
|
type = types.number;
|
||||||
|
default = 11.0;
|
||||||
|
description = "Alacritty font size";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
window = {
|
||||||
|
padding = { x = 5; y = 5; };
|
||||||
|
decorations = "none";
|
||||||
|
dynamic_title = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
scrolling = {
|
||||||
|
history = 10000;
|
||||||
|
multiplier = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
font =
|
||||||
|
let
|
||||||
|
family = "monospace";
|
||||||
|
mkFont = style: { inherit family style; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
normal = mkFont "Regular";
|
||||||
|
bold = mkFont "Bold";
|
||||||
|
italic = mkFont "Italic";
|
||||||
|
bold_italic = mkFont "Bold Italic";
|
||||||
|
|
||||||
|
size = cfg.fontSize;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
46
users/modules/window_manager/betterlockscreen.nix
Normal file
46
users/modules/window_manager/betterlockscreen.nix
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (config.services.betterlockscreen) package;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services.betterlockscreen = {
|
||||||
|
enable = true;
|
||||||
|
arguments = [ "--display 1" "--" "-e" ];
|
||||||
|
inactiveInterval = 15;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.timers.updateBetterlockscreenImage = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Update betterlockscreen image timer";
|
||||||
|
After = [ "graphical-session.target" "timers.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Timer = {
|
||||||
|
OnUnitActiveSec = "60min";
|
||||||
|
OnBootSec = "10s";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" "timers.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.updateBetterlockscreenImage = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Update betterlockscreen image";
|
||||||
|
After = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
Environment = "PATH=/run/current-system/sw/bin";
|
||||||
|
ExecStart = "${package}/bin/betterlockscreen --display 1 --fx '' --update ${config.home.homeDirectory}/pictures/wallpapers";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
9
users/modules/window_manager/default.nix
Normal file
9
users/modules/window_manager/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./xmonad.nix
|
||||||
|
./polybar.nix
|
||||||
|
./betterlockscreen.nix
|
||||||
|
];
|
||||||
|
}
|
162
users/modules/window_manager/polybar.nix
Normal file
162
users/modules/window_manager/polybar.nix
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (config.services.polybar) package;
|
||||||
|
|
||||||
|
# TODO: create a theme
|
||||||
|
colors = {
|
||||||
|
orange = "#ee9a00";
|
||||||
|
red = "#ff5555";
|
||||||
|
green = "#50fa7b";
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
systemd.user.services.polybar = {
|
||||||
|
# Add additional /usr/bin to run custom scripts
|
||||||
|
Service.Environment = mkForce "PATH=${package}/bin:/run/current-system/sw/bin";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.polybar = {
|
||||||
|
enable = true;
|
||||||
|
script = "MONITOR=$(xrandr | grep \"connected primary\" | awk '{print $1;}') polybar &";
|
||||||
|
settings =
|
||||||
|
let
|
||||||
|
mkWifi = interface: {
|
||||||
|
type = "internal/network";
|
||||||
|
interval = 3;
|
||||||
|
interface = {
|
||||||
|
text = interface;
|
||||||
|
type = "wireless";
|
||||||
|
};
|
||||||
|
label.connected = "%essid% %signal%";
|
||||||
|
format.connected = {
|
||||||
|
prefix = "| ";
|
||||||
|
suffix = "%";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
padding = 1;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"bar/main" = {
|
||||||
|
monitor = "\${env:MONITOR:DisplayPort-1}";
|
||||||
|
width = "100%";
|
||||||
|
height = "20px";
|
||||||
|
font = [
|
||||||
|
"Fira Code:size=9:antialias=true"
|
||||||
|
"Fira Code:bold:size=9:antialias=true"
|
||||||
|
"FiraCode Nerd Font Mono:size=9:antialias=true"
|
||||||
|
"FiraCode Nerd Font Mono:size=14:antialias=true"
|
||||||
|
];
|
||||||
|
radius = 0;
|
||||||
|
modules = {
|
||||||
|
left = "xmonad";
|
||||||
|
center = "date wifi_home wifi_laptop";
|
||||||
|
right = "exchangerate volume battery lang time";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/date" = {
|
||||||
|
type = "internal/date";
|
||||||
|
interval = 10;
|
||||||
|
date = "%a %d %b %Y";
|
||||||
|
label = "%date%";
|
||||||
|
format = { inherit padding; };
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/time" = {
|
||||||
|
type = "internal/date";
|
||||||
|
time = "%H:%M:%S";
|
||||||
|
label = {
|
||||||
|
text = "%time%";
|
||||||
|
font = 2;
|
||||||
|
foreground = colors.orange;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/lang" = {
|
||||||
|
type = "internal/xkeyboard";
|
||||||
|
format = {
|
||||||
|
inherit padding;
|
||||||
|
text = "<label-layout>";
|
||||||
|
};
|
||||||
|
label.layout.font = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/volume" = {
|
||||||
|
type = "custom/script";
|
||||||
|
exec = "~/scripts/get_volume.sh";
|
||||||
|
interval = 1;
|
||||||
|
format = {
|
||||||
|
inherit padding;
|
||||||
|
prefix = "%{T4}%{T-} ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/battery" = {
|
||||||
|
type = "internal/battery";
|
||||||
|
full-at = 99;
|
||||||
|
low-at = 10;
|
||||||
|
battery = "BAT0";
|
||||||
|
adapter = "AC0";
|
||||||
|
|
||||||
|
format.charging = {
|
||||||
|
inherit padding;
|
||||||
|
text = "%{T3}%{T-} <label-charging>";
|
||||||
|
foreground = colors.green;
|
||||||
|
};
|
||||||
|
|
||||||
|
format.discharging = {
|
||||||
|
inherit padding;
|
||||||
|
text = "%{T3}<ramp-capacity>%{T-} <label-discharging>";
|
||||||
|
foreground = colors.orange;
|
||||||
|
};
|
||||||
|
|
||||||
|
format.full = {
|
||||||
|
inherit padding;
|
||||||
|
text = "%{T3}%{T-} <label-full>";
|
||||||
|
foreground = colors.green;
|
||||||
|
};
|
||||||
|
|
||||||
|
format.low = {
|
||||||
|
inherit padding;
|
||||||
|
text = "%{T3}%{T-} <label-low>";
|
||||||
|
foreground = colors.red;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Only applies if <ramp-capacity> is used
|
||||||
|
ramp.capacity = [ "" "" "" "" "" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/wifi_home" = mkWifi "wlp11s0f3u2";
|
||||||
|
"module/wifi_laptop" = mkWifi "wlp2s0";
|
||||||
|
|
||||||
|
"module/xmonad" = mkIf config.xsession.windowManager.xmonad.enable {
|
||||||
|
type = "custom/script";
|
||||||
|
exec = "${pkgs.xmonad-log}/bin/xmonad-log";
|
||||||
|
tail = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/exchangerate" = {
|
||||||
|
type = "custom/script";
|
||||||
|
exec = "~/scripts/exchangerate.sh";
|
||||||
|
interval = 60;
|
||||||
|
format = {
|
||||||
|
inherit padding;
|
||||||
|
prefix = "USD: ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"global/wm" = {
|
||||||
|
margin = {
|
||||||
|
bottom = 0;
|
||||||
|
top = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
;
|
||||||
|
};
|
||||||
|
}
|
28
users/modules/window_manager/xmonad.nix
Normal file
28
users/modules/window_manager/xmonad.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
xclip # access x clipboard from a console
|
||||||
|
dmenu # menu for x window system
|
||||||
|
flameshot # powerful yet simple to use screenshot software
|
||||||
|
nitrogen # wallpaper manager
|
||||||
|
];
|
||||||
|
|
||||||
|
xsession = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
enableContribAndExtras = true;
|
||||||
|
config = ./xmonad_config.hs;
|
||||||
|
extraPackages = (hp: [
|
||||||
|
hp.dbus
|
||||||
|
hp.monad-logger
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
|
||||||
|
initExtra = ''
|
||||||
|
${pkgs.nitrogen}/bin/nitrogen --restore &
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue