move more modules to home
This commit is contained in:
parent
9f0cee2627
commit
f893e3b8e2
18 changed files with 443 additions and 484 deletions
|
|
@ -12,7 +12,7 @@ let
|
||||||
slurp = "${pkgs.slurp}/bin/slurp";
|
slurp = "${pkgs.slurp}/bin/slurp";
|
||||||
amixer = "${pkgs.alsa-utils}/bin/amixer";
|
amixer = "${pkgs.alsa-utils}/bin/amixer";
|
||||||
swaybg = "${pkgs.swaybg}/bin/swaybg";
|
swaybg = "${pkgs.swaybg}/bin/swaybg";
|
||||||
terminal = "${pkgs.foot}/bin/foot";
|
terminal = "${config.programs.terminal}/bin/${config.programs.terminal.pname}";
|
||||||
chafa = "${pkgs.chafa}/bin/chafa";
|
chafa = "${pkgs.chafa}/bin/chafa";
|
||||||
exiftool = "${pkgs.exiftool}/bin/exiftool";
|
exiftool = "${pkgs.exiftool}/bin/exiftool";
|
||||||
wc = "${pkgs.coreutils}/bin/wc";
|
wc = "${pkgs.coreutils}/bin/wc";
|
||||||
|
|
@ -30,6 +30,13 @@ in {
|
||||||
imports = [
|
imports = [
|
||||||
./graphical.nix
|
./graphical.nix
|
||||||
../../lib/programs/home/neovim/.
|
../../lib/programs/home/neovim/.
|
||||||
|
../../lib/modules/home/terminal.nix
|
||||||
|
../../lib/modules/home/scripts.nix
|
||||||
|
../../lib/scripts.nix
|
||||||
|
../../lib/modules/home/email.nix
|
||||||
|
../../lib/modules/home/editor.nix
|
||||||
|
../../lib/modules/home/mpd.nix
|
||||||
|
../../lib/modules/home/menu.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,6 @@ user: {
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
home-manager.users.${user}.imports = [
|
|
||||||
./home/.
|
|
||||||
];
|
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
settings = {
|
settings = {
|
||||||
experimental-features = ["nix-command" "flakes"];
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
@ -128,7 +124,6 @@ user: {
|
||||||
|
|
||||||
services.gvfs.enable = true;
|
services.gvfs.enable = true;
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
foot
|
|
||||||
tealdeer
|
tealdeer
|
||||||
alsa-utils
|
alsa-utils
|
||||||
pcmanfm
|
pcmanfm
|
||||||
|
|
|
||||||
|
|
@ -28,33 +28,28 @@ nixpkgs.lib.nixosSystem {
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(import ./modules/terminal.nix {inherit user;})
|
|
||||||
(import ./modules/scripts.nix {inherit user;})
|
|
||||||
(import ./modules/editor.nix {inherit user;})
|
|
||||||
(import ./modules/keyboard.nix {inherit user;})
|
(import ./modules/keyboard.nix {inherit user;})
|
||||||
(import ./modules/display.nix {inherit user;})
|
(import ./modules/display.nix {inherit user;})
|
||||||
(import ./modules/work.nix {inherit user;})
|
(import ./modules/work.nix {inherit user;})
|
||||||
(import ./modules/menu.nix {inherit user;})
|
|
||||||
(import ./modules/email.nix {inherit user userName;})
|
|
||||||
(import ./modules/mpd.nix {inherit user;})
|
|
||||||
(import ./modules/git.nix {inherit user userName;})
|
(import ./modules/git.nix {inherit user userName;})
|
||||||
(import ./modules/laptop.nix {inherit user;})
|
(import ./modules/laptop.nix {inherit user;})
|
||||||
(import ./modules/personal.nix {inherit user;})
|
(import ./modules/personal.nix {inherit user;})
|
||||||
(import ./modules/gamer.nix {inherit user;})
|
(import ./modules/gamer.nix {inherit user;})
|
||||||
(import ./programs/hyprland.nix {inherit user;})
|
(import ./programs/hyprland.nix {inherit user;})
|
||||||
(import ../hardware/${name}.nix {inherit user;})
|
(import ../hardware/${name}.nix {inherit user;})
|
||||||
./scripts.nix
|
|
||||||
(import ../global/system.nix user)
|
(import ../global/system.nix user)
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.menu.enable = true;
|
home-manager.users.${user}.imports = [
|
||||||
|
../global/home/.
|
||||||
|
{
|
||||||
|
options.home.userFullname = nixpkgs.lib.mkOption { default = userName; };
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
roles.work.enable = work;
|
roles.work.enable = work;
|
||||||
roles.git.enable = true;
|
roles.git.enable = true;
|
||||||
programs.terminal.enable = true;
|
|
||||||
roles.personal.enable = !work;
|
roles.personal.enable = !work;
|
||||||
roles.mpd.enable = true;
|
|
||||||
programs.editor.neovim = true;
|
|
||||||
programs.editor.enable = true;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
{user}: {
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
editor = config.programs.editor;
|
|
||||||
pkg = editor.package;
|
|
||||||
menu = config.programs.menu.package + config.programs.menu.dmenuCommand;
|
|
||||||
editorCmd = "NIXOS_OZONE_WL= ${pkg}/bin/${pkg.executableName}";
|
|
||||||
in {
|
|
||||||
options.programs = {
|
|
||||||
editor = {
|
|
||||||
enable = mkEnableOption "editor";
|
|
||||||
package = mkPackageOption pkgs "vscodium" {
|
|
||||||
example = "pkgs.vscode";
|
|
||||||
};
|
|
||||||
neovim = mkEnableOption "neovim mode";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf editor.enable {
|
|
||||||
home-manager.users.${user}.imports = [
|
|
||||||
{
|
|
||||||
programs.vscode = {
|
|
||||||
enable = true;
|
|
||||||
package = editor.package;
|
|
||||||
extensions = [];
|
|
||||||
userSettings = {
|
|
||||||
"keyboard.dispatch" = "keyCode";
|
|
||||||
"terminal.integrated.sendKeybindingsToShell" = true;
|
|
||||||
"aws.telemetry" = false;
|
|
||||||
"gitlens.telemetry.enabled" = false;
|
|
||||||
"redhat.telemetry.enabled" = false;
|
|
||||||
"cSpell.language" = "en,en-GB";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.scripts = [
|
|
||||||
{
|
|
||||||
name = "open-code";
|
|
||||||
text = ''
|
|
||||||
code_dir=~/Documents/code
|
|
||||||
cd $code_dir
|
|
||||||
repo=$(ls | ${menu})
|
|
||||||
[ -e "$repo" ] && ${editorCmd} $repo
|
|
||||||
'';
|
|
||||||
install = false;
|
|
||||||
hotkeys = [{key = "C";}];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,236 +0,0 @@
|
||||||
{
|
|
||||||
user,
|
|
||||||
userName,
|
|
||||||
}: {
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.roles.email;
|
|
||||||
terminal = config.programs.terminal.package;
|
|
||||||
termcmd = "${terminal}/bin/${terminal.pname}";
|
|
||||||
in {
|
|
||||||
options.roles = {
|
|
||||||
email = {
|
|
||||||
enable = mkEnableOption "email settings";
|
|
||||||
email = mkOption {
|
|
||||||
description = "email address";
|
|
||||||
};
|
|
||||||
terminal = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.scripts = [
|
|
||||||
{
|
|
||||||
name = "email";
|
|
||||||
text = ''
|
|
||||||
${termcmd} -e aerc
|
|
||||||
'';
|
|
||||||
install = false;
|
|
||||||
hotkeys = [{key = "E";}];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [
|
|
||||||
{
|
|
||||||
programs.git = {
|
|
||||||
userName = userName;
|
|
||||||
userEmail = cfg.email;
|
|
||||||
};
|
|
||||||
|
|
||||||
accounts.email.accounts.${cfg.email} = mkIf cfg.terminal {
|
|
||||||
notmuch.enable = true;
|
|
||||||
neomutt.enable = true;
|
|
||||||
aerc.enable = true;
|
|
||||||
mbsync.enable = true;
|
|
||||||
mbsync.create = "both";
|
|
||||||
userName = cfg.email;
|
|
||||||
realName = userName;
|
|
||||||
address = cfg.email;
|
|
||||||
primary = true;
|
|
||||||
passwordCommand = "${pkgs.rbw}/bin/rbw get privateemail";
|
|
||||||
smtp = {
|
|
||||||
host = "mail.privateemail.com";
|
|
||||||
port = 465;
|
|
||||||
tls.enable = true;
|
|
||||||
};
|
|
||||||
imap = {
|
|
||||||
host = "mail.privateemail.com";
|
|
||||||
port = 993;
|
|
||||||
tls.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.notmuch.enable = cfg.terminal;
|
|
||||||
programs.neomutt = {
|
|
||||||
enable = cfg.terminal;
|
|
||||||
vimKeys = true;
|
|
||||||
sort = "reverse-date";
|
|
||||||
sidebar.enable = true;
|
|
||||||
};
|
|
||||||
programs.mbsync.enable = cfg.terminal;
|
|
||||||
services.mbsync.enable = cfg.terminal;
|
|
||||||
|
|
||||||
programs.aerc = {
|
|
||||||
enable = cfg.terminal;
|
|
||||||
extraBinds = ''
|
|
||||||
# Binds are of the form <key sequence> = <command to run>
|
|
||||||
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
|
|
||||||
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
|
|
||||||
<C-p> = :prev-tab<Enter>
|
|
||||||
<C-n> = :next-tab<Enter>
|
|
||||||
<C-t> = :term<Enter>
|
|
||||||
|
|
||||||
[messages]
|
|
||||||
Q = :quit<Enter>
|
|
||||||
|
|
||||||
T = :toggle-threads<Enter>
|
|
||||||
|
|
||||||
j = :next<Enter>
|
|
||||||
<Down> = :next<Enter>
|
|
||||||
<C-d> = :next 50%<Enter>
|
|
||||||
<C-f> = :next 100%<Enter>
|
|
||||||
<PgDn> = :next -s 100%<Enter>
|
|
||||||
|
|
||||||
k = :prev<Enter>
|
|
||||||
<Up> = :prev<Enter>
|
|
||||||
<C-u> = :prev 50%<Enter>
|
|
||||||
<C-b> = :prev<Enter>
|
|
||||||
<PgUp> = :prev -s 100%<Enter>
|
|
||||||
gg = :select 0<Enter>
|
|
||||||
G = :select -1<Enter>
|
|
||||||
|
|
||||||
J = :next-folder<Enter>
|
|
||||||
K = :prev-folder<Enter>
|
|
||||||
|
|
||||||
v = :mark -t<Enter>
|
|
||||||
V = :mark -v<Enter>
|
|
||||||
|
|
||||||
f = :flag<Enter>
|
|
||||||
F = :unflag<Enter>
|
|
||||||
|
|
||||||
t = :toggle-threads<Enter>
|
|
||||||
|
|
||||||
<Enter> = :view<Enter>
|
|
||||||
D = :mv Trash<Enter>
|
|
||||||
|
|
||||||
C = :compose<enter>
|
|
||||||
|
|
||||||
Rr = :reply<Enter>
|
|
||||||
Rq = :reply -q<Enter>
|
|
||||||
rr = :reply -a<Enter>
|
|
||||||
rq = :reply -aq<Enter>
|
|
||||||
rt = :unflag<Enter>:reply -a -Tthanks<Enter>
|
|
||||||
Rt = :unflag<Enter>:reply -qa -Tquoted_thanks<Enter>
|
|
||||||
|
|
||||||
a = :mv Archive<Enter>
|
|
||||||
|
|
||||||
c = :cf<space>
|
|
||||||
$ = :term<space>
|
|
||||||
! = :term<space>
|
|
||||||
| = :pipe<space>
|
|
||||||
|
|
||||||
ga = :flag<Enter>:pipe -mb git am -3<Enter>
|
|
||||||
gp = :term git push<Enter>
|
|
||||||
gl = :term git log<Enter>
|
|
||||||
|
|
||||||
/ = :search<space>
|
|
||||||
\ = :filter<space>
|
|
||||||
n = :next-result<Enter>
|
|
||||||
N = :prev-result<Enter>
|
|
||||||
|
|
||||||
o = :term mbsync -a<Enter>
|
|
||||||
q = :quit<Enter>
|
|
||||||
|
|
||||||
[view]
|
|
||||||
/ = :toggle-key-passthrough<Enter>/
|
|
||||||
q = :close<Enter>
|
|
||||||
| = :pipe -m<space>
|
|
||||||
S = :save<space>
|
|
||||||
H = :toggle-headers<Enter>
|
|
||||||
D = :mv Trash<Enter>
|
|
||||||
<C-k> = :prev-part<Enter>
|
|
||||||
<C-j> = :next-part<Enter>
|
|
||||||
J = :next<Enter>
|
|
||||||
K = :prev<Enter>
|
|
||||||
|
|
||||||
f = :forward<Enter>
|
|
||||||
Rr = :reply<Enter>
|
|
||||||
Rq = :reply -q<Enter>
|
|
||||||
rr = :reply -a<Enter>
|
|
||||||
rq = :reply -aq<Enter>
|
|
||||||
rt = :reply -Tthanks<Enter>
|
|
||||||
|
|
||||||
ga = :pipe -b git am -3<Enter>
|
|
||||||
gp = :term git push<Enter>
|
|
||||||
gl = :term git log<Enter>
|
|
||||||
|
|
||||||
[view::passthrough]
|
|
||||||
$noinherit = true
|
|
||||||
$ex = <C-x>
|
|
||||||
<Esc> = :toggle-key-passthrough<Enter>
|
|
||||||
|
|
||||||
[compose]
|
|
||||||
$ex = <C-x>
|
|
||||||
<C-k> = :prev-field<Enter>
|
|
||||||
<C-j> = :next-field<Enter>
|
|
||||||
<tab> = :next-field<Enter>
|
|
||||||
|
|
||||||
[compose::editor]
|
|
||||||
# Keybindings used when the embedded terminal is selected in the compose view
|
|
||||||
$noinherit = true
|
|
||||||
$ex = <C-x>
|
|
||||||
<C-t> = :term<Enter>
|
|
||||||
<C-k> = :prev-field<Enter>
|
|
||||||
<C-j> = :next-field<Enter>
|
|
||||||
<C-p> = :prev-tab<Enter>
|
|
||||||
<C-n> = :next-tab<Enter>
|
|
||||||
|
|
||||||
[compose::review]
|
|
||||||
# Keybindings used when reviewing a message to be sent
|
|
||||||
y = :send<Enter>
|
|
||||||
n = :abort<Enter>
|
|
||||||
e = :edit<Enter>
|
|
||||||
a = :attach<space>
|
|
||||||
c = :encrypt<Enter>
|
|
||||||
s = :sign<Enter>
|
|
||||||
V = :header -f X-Sourcehut-Patchset-Update NEEDS_REVISION<Enter>
|
|
||||||
A = :header -f X-Sourcehut-Patchset-Update APPLIED<Enter>
|
|
||||||
R = :header -f X-Sourcehut-Patchset-Update REJECTED<Enter>
|
|
||||||
|
|
||||||
[terminal]
|
|
||||||
$noinherit = true
|
|
||||||
$ex = <C-x>
|
|
||||||
|
|
||||||
<C-t> = :term<Enter>
|
|
||||||
<C-p> = :prev-tab<Enter>
|
|
||||||
<C-n> = :next-tab<Enter>
|
|
||||||
'';
|
|
||||||
|
|
||||||
extraConfig = {
|
|
||||||
general = {
|
|
||||||
pgp-provider = "gpg";
|
|
||||||
unsafe-accounts-conf = true;
|
|
||||||
};
|
|
||||||
ui = {};
|
|
||||||
viewer = {};
|
|
||||||
filters = {
|
|
||||||
"text/plain" = "colorize";
|
|
||||||
"text/calendar" = "calendar";
|
|
||||||
"message/delivery-status" = "colorize";
|
|
||||||
"message/rfc822" = "colorize";
|
|
||||||
"image/*" = "img2sixel";
|
|
||||||
"text/html" = "html | colorize";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
49
lib/modules/home/editor.nix
Normal file
49
lib/modules/home/editor.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
editor = config.programs.editor;
|
||||||
|
pkg = editor.package;
|
||||||
|
menu = config.programs.menu.package + config.programs.menu.dmenuCommand;
|
||||||
|
editorCmd = "NIXOS_OZONE_WL= ${pkg}/bin/${pkg.executableName}";
|
||||||
|
in {
|
||||||
|
options.programs = with lib; {
|
||||||
|
editor = {
|
||||||
|
package = mkPackageOption pkgs "vscodium" {
|
||||||
|
example = "pkgs.vscode";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
package = editor.package;
|
||||||
|
extensions = [];
|
||||||
|
userSettings = {
|
||||||
|
"keyboard.dispatch" = "keyCode";
|
||||||
|
"terminal.integrated.sendKeybindingsToShell" = true;
|
||||||
|
"aws.telemetry" = false;
|
||||||
|
"gitlens.telemetry.enabled" = false;
|
||||||
|
"redhat.telemetry.enabled" = false;
|
||||||
|
"cSpell.language" = "en,en-GB";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.scripts = [
|
||||||
|
{
|
||||||
|
name = "open-code";
|
||||||
|
text = ''
|
||||||
|
code_dir=~/Documents/code
|
||||||
|
cd $code_dir
|
||||||
|
repo=$(ls | ${menu})
|
||||||
|
[ -e "$repo" ] && ${editorCmd} $repo
|
||||||
|
'';
|
||||||
|
install = false;
|
||||||
|
hotkeys = [{key = "C";}];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
228
lib/modules/home/email.nix
Normal file
228
lib/modules/home/email.nix
Normal file
|
|
@ -0,0 +1,228 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.roles.email;
|
||||||
|
terminal = config.programs.terminal;
|
||||||
|
termcmd = "${terminal}/bin/${terminal.pname}";
|
||||||
|
in {
|
||||||
|
options.roles = with lib; {
|
||||||
|
email = {
|
||||||
|
enable = mkEnableOption "email settings";
|
||||||
|
email = mkOption {
|
||||||
|
description = "email address";
|
||||||
|
};
|
||||||
|
terminal = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.scripts = [
|
||||||
|
{
|
||||||
|
name = "email";
|
||||||
|
text = ''
|
||||||
|
${termcmd} -e aerc
|
||||||
|
'';
|
||||||
|
install = false;
|
||||||
|
hotkeys = [{key = "E";}];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.git = {
|
||||||
|
userName = config.home.userFullname;
|
||||||
|
userEmail = cfg.email;
|
||||||
|
};
|
||||||
|
|
||||||
|
accounts.email.accounts.${cfg.email} = lib.mkIf cfg.terminal {
|
||||||
|
notmuch.enable = true;
|
||||||
|
neomutt.enable = true;
|
||||||
|
aerc.enable = true;
|
||||||
|
mbsync.enable = true;
|
||||||
|
mbsync.create = "both";
|
||||||
|
userName = cfg.email;
|
||||||
|
realName = config.home.userFullname;
|
||||||
|
address = cfg.email;
|
||||||
|
primary = true;
|
||||||
|
passwordCommand = "${pkgs.rbw}/bin/rbw get privateemail";
|
||||||
|
smtp = {
|
||||||
|
host = "mail.privateemail.com";
|
||||||
|
port = 465;
|
||||||
|
tls.enable = true;
|
||||||
|
};
|
||||||
|
imap = {
|
||||||
|
host = "mail.privateemail.com";
|
||||||
|
port = 993;
|
||||||
|
tls.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.notmuch.enable = cfg.terminal;
|
||||||
|
programs.neomutt = {
|
||||||
|
enable = cfg.terminal;
|
||||||
|
vimKeys = true;
|
||||||
|
sort = "reverse-date";
|
||||||
|
sidebar.enable = true;
|
||||||
|
};
|
||||||
|
programs.mbsync.enable = cfg.terminal;
|
||||||
|
services.mbsync.enable = cfg.terminal;
|
||||||
|
|
||||||
|
programs.aerc = {
|
||||||
|
enable = cfg.terminal;
|
||||||
|
extraBinds = ''
|
||||||
|
# Binds are of the form <key sequence> = <command to run>
|
||||||
|
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
|
||||||
|
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-t> = :term<Enter>
|
||||||
|
|
||||||
|
[messages]
|
||||||
|
Q = :quit<Enter>
|
||||||
|
|
||||||
|
T = :toggle-threads<Enter>
|
||||||
|
|
||||||
|
j = :next<Enter>
|
||||||
|
<Down> = :next<Enter>
|
||||||
|
<C-d> = :next 50%<Enter>
|
||||||
|
<C-f> = :next 100%<Enter>
|
||||||
|
<PgDn> = :next -s 100%<Enter>
|
||||||
|
|
||||||
|
k = :prev<Enter>
|
||||||
|
<Up> = :prev<Enter>
|
||||||
|
<C-u> = :prev 50%<Enter>
|
||||||
|
<C-b> = :prev<Enter>
|
||||||
|
<PgUp> = :prev -s 100%<Enter>
|
||||||
|
gg = :select 0<Enter>
|
||||||
|
G = :select -1<Enter>
|
||||||
|
|
||||||
|
J = :next-folder<Enter>
|
||||||
|
K = :prev-folder<Enter>
|
||||||
|
|
||||||
|
v = :mark -t<Enter>
|
||||||
|
V = :mark -v<Enter>
|
||||||
|
|
||||||
|
f = :flag<Enter>
|
||||||
|
F = :unflag<Enter>
|
||||||
|
|
||||||
|
t = :toggle-threads<Enter>
|
||||||
|
|
||||||
|
<Enter> = :view<Enter>
|
||||||
|
D = :mv Trash<Enter>
|
||||||
|
|
||||||
|
C = :compose<enter>
|
||||||
|
|
||||||
|
Rr = :reply<Enter>
|
||||||
|
Rq = :reply -q<Enter>
|
||||||
|
rr = :reply -a<Enter>
|
||||||
|
rq = :reply -aq<Enter>
|
||||||
|
rt = :unflag<Enter>:reply -a -Tthanks<Enter>
|
||||||
|
Rt = :unflag<Enter>:reply -qa -Tquoted_thanks<Enter>
|
||||||
|
|
||||||
|
a = :mv Archive<Enter>
|
||||||
|
|
||||||
|
c = :cf<space>
|
||||||
|
$ = :term<space>
|
||||||
|
! = :term<space>
|
||||||
|
| = :pipe<space>
|
||||||
|
|
||||||
|
ga = :flag<Enter>:pipe -mb git am -3<Enter>
|
||||||
|
gp = :term git push<Enter>
|
||||||
|
gl = :term git log<Enter>
|
||||||
|
|
||||||
|
/ = :search<space>
|
||||||
|
\ = :filter<space>
|
||||||
|
n = :next-result<Enter>
|
||||||
|
N = :prev-result<Enter>
|
||||||
|
|
||||||
|
o = :term mbsync -a<Enter>
|
||||||
|
q = :quit<Enter>
|
||||||
|
|
||||||
|
[view]
|
||||||
|
/ = :toggle-key-passthrough<Enter>/
|
||||||
|
q = :close<Enter>
|
||||||
|
| = :pipe -m<space>
|
||||||
|
S = :save<space>
|
||||||
|
H = :toggle-headers<Enter>
|
||||||
|
D = :mv Trash<Enter>
|
||||||
|
<C-k> = :prev-part<Enter>
|
||||||
|
<C-j> = :next-part<Enter>
|
||||||
|
J = :next<Enter>
|
||||||
|
K = :prev<Enter>
|
||||||
|
|
||||||
|
f = :forward<Enter>
|
||||||
|
Rr = :reply<Enter>
|
||||||
|
Rq = :reply -q<Enter>
|
||||||
|
rr = :reply -a<Enter>
|
||||||
|
rq = :reply -aq<Enter>
|
||||||
|
rt = :reply -Tthanks<Enter>
|
||||||
|
|
||||||
|
ga = :pipe -b git am -3<Enter>
|
||||||
|
gp = :term git push<Enter>
|
||||||
|
gl = :term git log<Enter>
|
||||||
|
|
||||||
|
[view::passthrough]
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
<Esc> = :toggle-key-passthrough<Enter>
|
||||||
|
|
||||||
|
[compose]
|
||||||
|
$ex = <C-x>
|
||||||
|
<C-k> = :prev-field<Enter>
|
||||||
|
<C-j> = :next-field<Enter>
|
||||||
|
<tab> = :next-field<Enter>
|
||||||
|
|
||||||
|
[compose::editor]
|
||||||
|
# Keybindings used when the embedded terminal is selected in the compose view
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
<C-t> = :term<Enter>
|
||||||
|
<C-k> = :prev-field<Enter>
|
||||||
|
<C-j> = :next-field<Enter>
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
|
||||||
|
[compose::review]
|
||||||
|
# Keybindings used when reviewing a message to be sent
|
||||||
|
y = :send<Enter>
|
||||||
|
n = :abort<Enter>
|
||||||
|
e = :edit<Enter>
|
||||||
|
a = :attach<space>
|
||||||
|
c = :encrypt<Enter>
|
||||||
|
s = :sign<Enter>
|
||||||
|
V = :header -f X-Sourcehut-Patchset-Update NEEDS_REVISION<Enter>
|
||||||
|
A = :header -f X-Sourcehut-Patchset-Update APPLIED<Enter>
|
||||||
|
R = :header -f X-Sourcehut-Patchset-Update REJECTED<Enter>
|
||||||
|
|
||||||
|
[terminal]
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
|
||||||
|
<C-t> = :term<Enter>
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
general = {
|
||||||
|
pgp-provider = "gpg";
|
||||||
|
unsafe-accounts-conf = true;
|
||||||
|
};
|
||||||
|
ui = {};
|
||||||
|
viewer = {};
|
||||||
|
filters = {
|
||||||
|
"text/plain" = "colorize";
|
||||||
|
"text/calendar" = "calendar";
|
||||||
|
"message/delivery-status" = "colorize";
|
||||||
|
"message/rfc822" = "colorize";
|
||||||
|
"image/*" = "img2sixel";
|
||||||
|
"text/html" = "html | colorize";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
34
lib/modules/home/menu.nix
Normal file
34
lib/modules/home/menu.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.programs.menu;
|
||||||
|
terminal = config.programs.terminal;
|
||||||
|
termcmd = "${terminal}/bin/${terminal.pname}";
|
||||||
|
in {
|
||||||
|
options.programs = with lib; {
|
||||||
|
menu = {
|
||||||
|
package = mkPackageOption pkgs "wofi" {
|
||||||
|
example = "pkgs.dmenu-wayland";
|
||||||
|
};
|
||||||
|
dmenuCommand = mkOption {
|
||||||
|
default = "/bin/wofi --show dmenu";
|
||||||
|
example = "/bin/dmenu";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.wofi = lib.mkIf (cfg.package == pkgs.wofi) {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
term = termcmd;
|
||||||
|
insensitive = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = [cfg.package];
|
||||||
|
};
|
||||||
|
}
|
||||||
65
lib/modules/home/mpd.nix
Normal file
65
lib/modules/home/mpd.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.roles.mpd;
|
||||||
|
in {
|
||||||
|
options.roles.mpd = {
|
||||||
|
enable = mkEnableOption "setup mpd client";
|
||||||
|
host = mkOption {default = "192.168.1.2";};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.ncmpcpp = {
|
||||||
|
enable = true;
|
||||||
|
settings.mpd_host = cfg.host;
|
||||||
|
bindings = [
|
||||||
|
{
|
||||||
|
key = "j";
|
||||||
|
command = "scroll_down";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "k";
|
||||||
|
command = "scroll_up";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "l";
|
||||||
|
command = "next_column";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "h";
|
||||||
|
command = "previous_column";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "J";
|
||||||
|
command = ["select_item" "scroll_down"];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "K";
|
||||||
|
command = ["select_item" "scroll_up"];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.mpd-mpris = {
|
||||||
|
enable = true;
|
||||||
|
mpd.host = cfg.host;
|
||||||
|
};
|
||||||
|
programs.waybar.settings.mainBar.mpd.server = cfg.host;
|
||||||
|
systemd.user.services = {
|
||||||
|
snapclient = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Snapclient";
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.snapcast}/bin/snapclient -h ${cfg.host}";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = ["graphical-session.target"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{user}: {
|
{
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
|
|
@ -54,14 +54,13 @@ with lib; let
|
||||||
|
|
||||||
installScripts = scripts: (map scriptToPackage (filter (s: s.install) scripts));
|
installScripts = scripts: (map scriptToPackage (filter (s: s.install) scripts));
|
||||||
|
|
||||||
bindScript = script:
|
bindScript = script: (
|
||||||
|
map
|
||||||
(
|
(
|
||||||
map
|
hotkey: "${hotkey.modifier}, ${hotkey.key}, exec, ${scriptExec {inherit script hotkey;}}"
|
||||||
(
|
)
|
||||||
hotkey: "${hotkey.modifier}, ${hotkey.key}, exec, ${scriptExec {inherit script hotkey;}}"
|
script.hotkeys
|
||||||
)
|
);
|
||||||
script.hotkeys
|
|
||||||
);
|
|
||||||
in {
|
in {
|
||||||
options.programs = {
|
options.programs = {
|
||||||
scripts = mkOption {
|
scripts = mkOption {
|
||||||
|
|
@ -71,11 +70,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
home-manager.users.${user}.imports = [
|
home.packages = installScripts scripts;
|
||||||
{
|
wayland.windowManager.hyprland.settings.bind = builtins.concatMap bindScript scripts;
|
||||||
home.packages = installScripts scripts;
|
|
||||||
wayland.windowManager.hyprland.settings.bind = builtins.concatMap bindScript scripts ;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
23
lib/modules/home/terminal.nix
Normal file
23
lib/modules/home/terminal.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
term = config.programs.terminal;
|
||||||
|
in {
|
||||||
|
options.programs = {
|
||||||
|
terminal = lib.mkPackageOption pkgs "foot" {
|
||||||
|
example = "pkgs.alacritty";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
programs.foot = lib.mkIf (term == pkgs.foot) {
|
||||||
|
enable = true;
|
||||||
|
server.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = [term];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
{user}: {
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.programs.menu;
|
|
||||||
terminal = config.programs.terminal.package;
|
|
||||||
termcmd = "${terminal}/bin/${terminal.pname}";
|
|
||||||
in {
|
|
||||||
options.programs = {
|
|
||||||
menu = {
|
|
||||||
enable = mkEnableOption "menu";
|
|
||||||
package = mkPackageOption pkgs "wofi" {
|
|
||||||
example = "pkgs.dmenu-wayland";
|
|
||||||
};
|
|
||||||
dmenuCommand = mkOption {
|
|
||||||
default = "/bin/wofi --show dmenu";
|
|
||||||
example = "/bin/dmenu";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home-manager.users.${user}.imports = [
|
|
||||||
{
|
|
||||||
programs.wofi = mkIf (cfg.package == pkgs.wofi) {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
term = termcmd;
|
|
||||||
insensitive = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
{user}: {
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.roles.mpd;
|
|
||||||
in {
|
|
||||||
options.roles.mpd = {
|
|
||||||
enable = mkEnableOption "setup mpd client";
|
|
||||||
host = mkOption {default = "192.168.1.2";};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home-manager.users.${user}.imports = [
|
|
||||||
{
|
|
||||||
programs.ncmpcpp = {
|
|
||||||
enable = true;
|
|
||||||
settings.mpd_host = cfg.host;
|
|
||||||
bindings = [
|
|
||||||
{
|
|
||||||
key = "j";
|
|
||||||
command = "scroll_down";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "k";
|
|
||||||
command = "scroll_up";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "l";
|
|
||||||
command = "next_column";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "h";
|
|
||||||
command = "previous_column";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "J";
|
|
||||||
command = ["select_item" "scroll_down"];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "K";
|
|
||||||
command = ["select_item" "scroll_up"];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
services.mpd-mpris = {
|
|
||||||
enable = true;
|
|
||||||
mpd.host = cfg.host;
|
|
||||||
};
|
|
||||||
programs.waybar.settings.mainBar.mpd.server = cfg.host;
|
|
||||||
systemd.user.services = {
|
|
||||||
snapclient = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Snapclient";
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs.snapcast}/bin/snapclient -h ${cfg.host}";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -10,12 +10,6 @@ with lib; {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf config.roles.personal.enable {
|
config = mkIf config.roles.personal.enable {
|
||||||
roles.email = {
|
|
||||||
enable = true;
|
|
||||||
email = "tristan@tristans.cloud";
|
|
||||||
terminal = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
roles.gamer.enable = true;
|
roles.gamer.enable = true;
|
||||||
|
|
||||||
i18n.supportedLocales = [
|
i18n.supportedLocales = [
|
||||||
|
|
@ -26,6 +20,12 @@ with lib; {
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [
|
home-manager.users.${user}.imports = [
|
||||||
{
|
{
|
||||||
|
roles.email = {
|
||||||
|
enable = true;
|
||||||
|
email = "tristan@tristans.cloud";
|
||||||
|
terminal = true;
|
||||||
|
};
|
||||||
|
|
||||||
services.nextcloud-client.enable = true;
|
services.nextcloud-client.enable = true;
|
||||||
services.gnome-keyring.enable = true;
|
services.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
{user}: {
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.programs.terminal;
|
|
||||||
in {
|
|
||||||
options.programs = {
|
|
||||||
terminal = {
|
|
||||||
enable = mkEnableOption "editor";
|
|
||||||
package = mkPackageOption pkgs "foot" {
|
|
||||||
example = "pkgs.alacritty";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home-manager.users.${user}.imports = [
|
|
||||||
{
|
|
||||||
programs.foot = mkIf (cfg.package == pkgs.foot) {
|
|
||||||
enable = true;
|
|
||||||
server.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = [cfg.package];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -10,19 +10,18 @@ with lib; {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf config.roles.work.enable {
|
config = mkIf config.roles.work.enable {
|
||||||
roles.email = {
|
|
||||||
enable = true;
|
|
||||||
email = "tristan.beedell@cryoserver.com";
|
|
||||||
terminal = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.editor = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.vscode;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [
|
home-manager.users.${user}.imports = [
|
||||||
{
|
{
|
||||||
|
roles.email = {
|
||||||
|
enable = true;
|
||||||
|
email = "tristan.beedell@cryoserver.com";
|
||||||
|
terminal = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.editor = {
|
||||||
|
package = pkgs.vscode;
|
||||||
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
onedrive
|
onedrive
|
||||||
kubectl
|
kubectl
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
extensions = [ pkgs.vscode-extensions.asvetliakov.vscode-neovim ];
|
extensions = [pkgs.vscode-extensions.asvetliakov.vscode-neovim];
|
||||||
userSettings = {
|
userSettings = {
|
||||||
"vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim";
|
"vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim";
|
||||||
"extensions.experimental.affinity" = {
|
"extensions.experimental.affinity" = {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
terminal = config.programs.terminal.package;
|
terminal = config.programs.terminal;
|
||||||
termcmd = "${terminal}/bin/${terminal.pname}";
|
termcmd = "${terminal}/bin/${terminal.pname}";
|
||||||
my-deps = {
|
my-deps = {
|
||||||
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
||||||
|
|
@ -13,7 +13,6 @@
|
||||||
slurp = "${pkgs.slurp}/bin/slurp";
|
slurp = "${pkgs.slurp}/bin/slurp";
|
||||||
amixer = "${pkgs.alsa-utils}/bin/amixer";
|
amixer = "${pkgs.alsa-utils}/bin/amixer";
|
||||||
swaybg = "${pkgs.swaybg}/bin/swaybg";
|
swaybg = "${pkgs.swaybg}/bin/swaybg";
|
||||||
terminal = "${pkgs.foot}/bin/foot";
|
|
||||||
chafa = "${pkgs.chafa}/bin/chafa";
|
chafa = "${pkgs.chafa}/bin/chafa";
|
||||||
exiftool = "${pkgs.exiftool}/bin/exiftool";
|
exiftool = "${pkgs.exiftool}/bin/exiftool";
|
||||||
wc = "${pkgs.coreutils}/bin/wc";
|
wc = "${pkgs.coreutils}/bin/wc";
|
||||||
|
|
@ -159,7 +158,7 @@ in {
|
||||||
(lib.mkIf config.roles.mpd.enable {
|
(lib.mkIf config.roles.mpd.enable {
|
||||||
name = "ncmpcpp";
|
name = "ncmpcpp";
|
||||||
text = ''
|
text = ''
|
||||||
${my-deps.terminal} -e ncmpcpp
|
${termcmd} -e ncmpcpp
|
||||||
'';
|
'';
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{
|
{
|
||||||
|
|
@ -270,7 +269,7 @@ in {
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "terminal";
|
name = "terminal";
|
||||||
text = my-deps.terminal;
|
text = termcmd;
|
||||||
hotkeys = [
|
hotkeys = [
|
||||||
{key = "RETURN";}
|
{key = "RETURN";}
|
||||||
];
|
];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue