aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/communication/email/default.nix12
-rw-r--r--modules/communication/neomutt/assertions.nix22
-rw-r--r--modules/communication/neomutt/default.nix6
-rw-r--r--modules/communication/neomutt/theme.nix2
-rw-r--r--modules/desktop/i3/default.nix2
-rw-r--r--modules/desktop/i3/keybindings.nix28
-rw-r--r--modules/desktop/polybar/module/vpn-separator.nix2
-rw-r--r--modules/desktop/polybar/module/vpn.nix2
-rw-r--r--modules/development/bruno/default.nix6
-rw-r--r--modules/development/delta/default.nix10
-rw-r--r--modules/development/git/assertions.nix6
-rw-r--r--modules/development/git/default.nix31
-rw-r--r--modules/development/lazygit/default.nix11
-rw-r--r--modules/development/nixvim/colorscheme.nix2
-rw-r--r--modules/development/nixvim/default.nix10
-rw-r--r--modules/development/nixvim/keymaps.nix2
-rw-r--r--modules/development/nixvim/plugins/cmp.nix2
-rw-r--r--modules/development/nixvim/plugins/comment.nix2
-rw-r--r--modules/development/nixvim/plugins/gitsigns.nix2
-rw-r--r--modules/development/nixvim/plugins/indent-blankline.nix2
-rw-r--r--modules/development/nixvim/plugins/lsp.nix2
-rw-r--r--modules/development/nixvim/plugins/lualine.nix2
-rw-r--r--modules/development/nixvim/plugins/luasnip.nix2
-rw-r--r--modules/development/nixvim/plugins/noice.nix2
-rw-r--r--modules/development/nixvim/plugins/nvim-tree.nix2
-rw-r--r--modules/development/nixvim/plugins/telescope.nix2
-rw-r--r--modules/development/nixvim/plugins/treesitter.nix2
-rw-r--r--modules/development/nixvim/plugins/web-devicons.nix2
-rw-r--r--modules/development/nixvim/plugins/which-key.nix2
-rw-r--r--modules/development/opencode/default.nix7
-rw-r--r--modules/development/qemu/default.nix6
-rw-r--r--modules/development/vscodium/default.nix7
-rw-r--r--modules/file-management/lf/default.nix21
-rw-r--r--modules/file-management/lsd/default.nix7
-rw-r--r--modules/file-management/ouch/default.nix6
-rw-r--r--modules/media/feh/default.nix7
-rw-r--r--modules/media/ffmpeg/default.nix6
-rw-r--r--modules/media/impala/default.nix6
-rw-r--r--modules/media/maim/default.nix6
-rw-r--r--modules/media/pamixer/default.nix6
-rw-r--r--modules/media/playerctl/default.nix6
-rw-r--r--modules/media/slop/default.nix6
-rw-r--r--modules/media/vlc/default.nix6
-rw-r--r--modules/office/zathura/default.nix7
-rw-r--r--modules/private/email.example.nix4
-rw-r--r--modules/private/git.example.nix2
-rw-r--r--modules/scripts/default.nix70
-rw-r--r--modules/security/enteauth/default.nix6
-rw-r--r--modules/security/gopass/default.nix6
-rw-r--r--modules/security/gpg/default.nix12
-rw-r--r--modules/security/openvpn/default.nix6
-rw-r--r--modules/security/ssh/default.nix7
-rw-r--r--modules/security/ssh/git.nix2
-rw-r--r--modules/system/bluetui/default.nix6
-rw-r--r--modules/system/bottom/default.nix10
-rw-r--r--modules/system/brightnessctl/default.nix6
-rw-r--r--modules/system/htop/default.nix7
-rw-r--r--modules/system/nvtop/default.nix6
-rw-r--r--modules/system/systemctl-tui/default.nix6
-rw-r--r--modules/terminal/bash/default.nix8
-rw-r--r--modules/terminal/bat/default.nix9
-rw-r--r--modules/terminal/default.nix1
-rw-r--r--modules/terminal/fzf/assertions.nix4
-rw-r--r--modules/terminal/fzf/default.nix54
-rw-r--r--modules/terminal/kitty/default.nix12
-rw-r--r--modules/terminal/less/default.nix7
-rw-r--r--modules/terminal/starship/default.nix9
-rw-r--r--modules/terminal/tmux/default.nix10
-rw-r--r--modules/terminal/zsh/default.nix14
-rw-r--r--modules/web/aria2/default.nix10
-rw-r--r--modules/web/brave/default.nix15
-rw-r--r--users/arpit.nix107
72 files changed, 443 insertions, 263 deletions
diff --git a/modules/communication/email/default.nix b/modules/communication/email/default.nix
index 3a57cf0..969403d 100644
--- a/modules/communication/email/default.nix
+++ b/modules/communication/email/default.nix
@@ -1,4 +1,3 @@
-# email - Mbsync and notmuch mail synchronization
{
config,
lib,
@@ -9,15 +8,22 @@ let
mailDir = "${config.home.homeDirectory}/.local/share/mail";
in
{
- options.programs.email = {
+ options.communication.email = {
enable = lib.mkEnableOption "Email suite (mbsync + notmuch)";
+
+ accounts = lib.mkOption {
+ type = lib.types.attrsOf lib.types.anything;
+ default = { };
+ description = "Email accounts. Each attribute name is an account identifier.";
+ };
};
- config = lib.mkIf config.programs.email.enable {
+ config = lib.mkIf config.communication.email.enable {
programs.mbsync.enable = true;
programs.notmuch.enable = true;
accounts.email.maildirBasePath = mailDir;
+ accounts.email.accounts = config.communication.email.accounts;
home.sessionVariables.MAILDIR = mailDir;
};
diff --git a/modules/communication/neomutt/assertions.nix b/modules/communication/neomutt/assertions.nix
index 989d273..22434a4 100644
--- a/modules/communication/neomutt/assertions.nix
+++ b/modules/communication/neomutt/assertions.nix
@@ -3,31 +3,31 @@
{
assertions = [
{
- assertion = !config.programs.neomutt.enable || config.programs.less.enable;
+ assertion = !config.communication.neomutt.enable || config.terminal.less.enable;
message = ''
- programs.neomutt is enabled but programs.less.enable is not.
- neomutt requires less as its pager. Please enable programs.less.
+ communication.neomutt is enabled but terminal.less.enable is not.
+ neomutt requires less as its pager. Please enable terminal.less.
'';
}
{
- assertion = !config.programs.neomutt.enable || config.programs.bat.enable;
+ assertion = !config.communication.neomutt.enable || config.terminal.bat.enable;
message = ''
- programs.neomutt is enabled but programs.bat.enable is not.
- neomutt requires bat for text/html filtering. Please enable programs.bat.
+ communication.neomutt is enabled but terminal.bat.enable is not.
+ neomutt requires bat for text/html filtering. Please enable terminal.bat.
'';
}
{
- assertion = !config.programs.neomutt.enable || config.programs.email.enable;
+ assertion = !config.communication.neomutt.enable || config.communication.email.enable;
message = ''
- programs.neomutt is enabled but programs.email.enable is not.
+ communication.neomutt is enabled but communication.email.enable is not.
neomutt requires the email module (mbsync + notmuch) to be enabled.
'';
}
{
- assertion = !config.programs.neomutt.enable || config.programs.kitty.enable;
+ assertion = !config.communication.neomutt.enable || config.terminal.kitty.enable;
message = ''
- programs.neomutt is enabled but programs.kitty.enable is not.
- neomutt's desktop entry requires kitty as the terminal launcher. Please enable programs.kitty.
+ communication.neomutt is enabled but terminal.kitty.enable is not.
+ neomutt's desktop entry requires kitty as the terminal launcher. Please enable terminal.kitty.
'';
}
];
diff --git a/modules/communication/neomutt/default.nix b/modules/communication/neomutt/default.nix
index 3626341..be3045d 100644
--- a/modules/communication/neomutt/default.nix
+++ b/modules/communication/neomutt/default.nix
@@ -25,7 +25,11 @@ in
./assertions.nix
./theme.nix
];
- config = lib.mkIf config.programs.neomutt.enable {
+ options.communication.neomutt = {
+ enable = lib.mkEnableOption "Enables neomutt.";
+ };
+
+ config = lib.mkIf config.communication.neomutt.enable {
xdg.mimeApps.defaultApplications = {
"x-scheme-handler/mailto" = "neomutt.desktop";
};
diff --git a/modules/communication/neomutt/theme.nix b/modules/communication/neomutt/theme.nix
index 52845ee..1d62c55 100644
--- a/modules/communication/neomutt/theme.nix
+++ b/modules/communication/neomutt/theme.nix
@@ -3,7 +3,7 @@
# Colorscheme - True base16 OneDark colors for neomutt
# Leverages Kitty's precise mapping to base16 (color0-15)
{
- config.programs.neomutt.extraConfig = lib.mkIf config.programs.neomutt.enable ''
+ config.programs.neomutt.extraConfig = lib.mkIf config.communication.neomutt.enable ''
# vim: filetype=muttrc
#
# Base16 OneDark Dark terminal colors for neomutt
diff --git a/modules/desktop/i3/default.nix b/modules/desktop/i3/default.nix
index 4e8664d..c46123d 100644
--- a/modules/desktop/i3/default.nix
+++ b/modules/desktop/i3/default.nix
@@ -77,7 +77,7 @@
}
{
command =
- if config.programs.feh.enable then
+ if config.media.feh.enable then
"${lib.getExe pkgs.feh} --bg-scale ${../../../assets/sapling.png}"
else
"xsetroot -solid \"${config.scheme.withHashtag.base00}\"";
diff --git a/modules/desktop/i3/keybindings.nix b/modules/desktop/i3/keybindings.nix
index 8ca8071..600ed86 100644
--- a/modules/desktop/i3/keybindings.nix
+++ b/modules/desktop/i3/keybindings.nix
@@ -11,30 +11,30 @@ in
{
# --- General Applications ---
"${mod}+r" =
- lib.mkIf (config.programs.fzf.enable && config.programs.kitty.enable)
- "exec ${lib.getExe config.programs.kitty.package} --class application-launcher -e ${lib.getExe config.scripts.fzf-launcher.package}";
+ lib.mkIf (config.terminal.fzf.enable && config.terminal.kitty.enable)
+ "exec ${lib.getExe config.terminal.kitty.package} --class application-launcher -e ${lib.getExe config.scripts.fzf-launcher.package}";
"${mod}+t" =
- lib.mkIf config.programs.kitty.enable "exec ${lib.getExe config.programs.kitty.package}";
+ lib.mkIf config.terminal.kitty.enable "exec ${lib.getExe config.terminal.kitty.package}";
"${mod}+f" =
- lib.mkIf (config.programs.kitty.enable && config.programs.lf.enable)
- "exec ${lib.getExe config.programs.kitty.package} --title 'File Manager' --class file-explorer -e ${lib.getExe config.programs.lf.package}";
+ lib.mkIf (config.terminal.kitty.enable && config.file-management.lf.enable)
+ "exec ${lib.getExe config.terminal.kitty.package} --title 'File Manager' --class file-explorer -e ${lib.getExe config.file-management.lf.package}";
"${mod}+s" =
- lib.mkIf config.programs.kitty.enable "exec ${lib.getExe config.programs.kitty.package} --title 'Keybindings' --class keybindings-viewer -e ${lib.getExe config.scripts.i3-keybindings.package}";
+ lib.mkIf config.terminal.kitty.enable "exec ${lib.getExe config.terminal.kitty.package} --title 'Keybindings' --class keybindings-viewer -e ${lib.getExe config.scripts.i3-keybindings.package}";
"${mod}+q" = "kill";
# --- Media / Hardware Keys ---
"XF86MonBrightnessDown" =
- lib.mkIf config.programs.brightnessctl.enable "exec ${lib.getExe config.programs.brightnessctl.package} set 5%-";
+ lib.mkIf config.system.brightnessctl.enable "exec ${lib.getExe config.system.brightnessctl.package} set 5%-";
"XF86MonBrightnessUp" =
- lib.mkIf config.programs.brightnessctl.enable "exec ${lib.getExe config.programs.brightnessctl.package} set +5%";
+ lib.mkIf config.system.brightnessctl.enable "exec ${lib.getExe config.system.brightnessctl.package} set +5%";
"XF86AudioLowerVolume" =
- lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe config.programs.pamixer.package} --decrease 5";
+ lib.mkIf config.media.pamixer.enable "exec ${lib.getExe config.media.pamixer.package} --decrease 5";
"XF86AudioRaiseVolume" =
- lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe config.programs.pamixer.package} --increase 5";
+ lib.mkIf config.media.pamixer.enable "exec ${lib.getExe config.media.pamixer.package} --increase 5";
"XF86AudioMute" =
- lib.mkIf config.programs.pamixer.enable "exec ${lib.getExe config.programs.pamixer.package} --toggle-mute";
+ lib.mkIf config.media.pamixer.enable "exec ${lib.getExe config.media.pamixer.package} --toggle-mute";
"XF86AudioPlay" =
- lib.mkIf config.programs.playerctl.enable "exec ${lib.getExe config.programs.playerctl.package} play-pause";
+ lib.mkIf config.media.playerctl.enable "exec ${lib.getExe config.media.playerctl.package} play-pause";
# --- Window Management (Vim-style) ---
# Focus
@@ -86,7 +86,7 @@ in
# --- Screenshots ---
"${mod}+p" =
- lib.mkIf config.programs.maim.enable "exec \"${lib.getExe config.programs.maim.package} -s | xclip -selection clipboard -t image/png\"";
+ lib.mkIf config.media.maim.enable "exec \"${lib.getExe config.media.maim.package} -s | xclip -selection clipboard -t image/png\"";
"${mod}+Shift+p" =
- lib.mkIf config.programs.maim.enable "exec \"mkdir -p ~/Pictures/Screenshots && ${lib.getExe config.programs.maim.package} -s ~/Pictures/Screenshots/screenshot-$(date +%Y%m%d-%H%M%S).png\"";
+ lib.mkIf config.media.maim.enable "exec \"mkdir -p ~/Pictures/Screenshots && ${lib.getExe config.media.maim.package} -s ~/Pictures/Screenshots/screenshot-$(date +%Y%m%d-%H%M%S).png\"";
}
diff --git a/modules/desktop/polybar/module/vpn-separator.nix b/modules/desktop/polybar/module/vpn-separator.nix
index 0904b6c..3400298 100644
--- a/modules/desktop/polybar/module/vpn-separator.nix
+++ b/modules/desktop/polybar/module/vpn-separator.nix
@@ -8,7 +8,7 @@
with config.scheme.withHashtag;
{
type = "custom/script";
- exec-if = "${lib.getExe config.programs.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'";
+ exec-if = "${lib.getExe config.terminal.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'";
exec = "echo VPN";
interval = 5;
diff --git a/modules/desktop/polybar/module/vpn.nix b/modules/desktop/polybar/module/vpn.nix
index 2171989..be5e54d 100644
--- a/modules/desktop/polybar/module/vpn.nix
+++ b/modules/desktop/polybar/module/vpn.nix
@@ -8,7 +8,7 @@
with config.scheme.withHashtag;
{
type = "custom/script";
- exec-if = "${lib.getExe config.programs.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'";
+ exec-if = "${lib.getExe config.terminal.zsh.package} -c '${lib.getExe' pkgs.iproute2 "ip"} a | ${lib.getExe pkgs.gnugrep} -q tun0'";
exec = "echo VPN";
interval = 5;
diff --git a/modules/development/bruno/default.nix b/modules/development/bruno/default.nix
index 7205f31..f7f069c 100644
--- a/modules/development/bruno/default.nix
+++ b/modules/development/bruno/default.nix
@@ -7,13 +7,13 @@
# Bruno - Open-source API client for testing HTTP endpoints
{
- options.programs.bruno = {
+ options.development.bruno = {
enable = lib.mkEnableOption "Enables bruno.";
package = lib.mkPackageOption pkgs "bruno" { };
};
- config = lib.mkIf config.programs.bruno.enable {
- home.packages = [ config.programs.bruno.package ];
+ config = lib.mkIf config.development.bruno.enable {
+ home.packages = [ config.development.bruno.package ];
xdg.mimeApps.defaultApplications = {
"x-scheme-handler/bruno" = "bruno.desktop";
diff --git a/modules/development/delta/default.nix b/modules/development/delta/default.nix
index 90e35d4..b39fee7 100644
--- a/modules/development/delta/default.nix
+++ b/modules/development/delta/default.nix
@@ -5,7 +5,11 @@
}:
# Delta - A syntax-highlighting pager for git, diff, and grep output
{
- config = lib.mkIf config.programs.delta.enable {
+ options.development.delta = {
+ enable = lib.mkEnableOption "Enables delta.";
+ };
+
+ config = lib.mkIf config.development.delta.enable {
programs.delta.options = {
line-numbers = true;
hunk-header-style = "omit";
@@ -14,13 +18,13 @@
line-numbers-right-format = "{np}│ ";
};
- programs.git.settings = lib.mkIf config.programs.git.enable {
+ programs.git.settings = lib.mkIf config.development.git.enable {
core.pager = "delta";
interactive.diffFilter = "delta --color-only";
delta.navigate = true;
};
- programs.lazygit.settings = lib.mkIf config.programs.lazygit.enable {
+ programs.lazygit.settings = lib.mkIf config.development.lazygit.enable {
git.pagers = [
{
colorArg = "always";
diff --git a/modules/development/git/assertions.nix b/modules/development/git/assertions.nix
index fbe5d3c..df85c62 100644
--- a/modules/development/git/assertions.nix
+++ b/modules/development/git/assertions.nix
@@ -3,10 +3,10 @@
assertions = [
{
assertion =
- !config.programs.git.useSSH || (config.programs.git.enable && config.programs.ssh.enable);
+ !config.development.git.useSSH || (config.development.git.enable && config.security.ssh.enable);
message = ''
- programs.git.useSSH is enabled but programs.ssh.enable is not.
- SSH must be enabled (programs.ssh.enable = true) to use SSH for git.
+ development.git.useSSH is enabled but security.ssh.enable is not.
+ SSH must be enabled (security.ssh.enable = true) to use SSH for git.
'';
}
];
diff --git a/modules/development/git/default.nix b/modules/development/git/default.nix
index c1aade5..5d2d89c 100644
--- a/modules/development/git/default.nix
+++ b/modules/development/git/default.nix
@@ -12,7 +12,9 @@
]
++ lib.optional (builtins.pathExists ../../private/git.nix) ../../private/git.nix;
- options.programs.git = {
+ options.development.git = {
+ enable = lib.mkEnableOption "Enables git.";
+
username = lib.mkOption {
type = lib.types.str;
description = "Git username.";
@@ -24,9 +26,19 @@
};
useSSH = lib.mkEnableOption "Use SSH instead of HTTPS for common git platforms.";
+
+ signing = {
+ key = lib.mkOption {
+ type = lib.types.nullOr lib.types.str;
+ default = null;
+ description = "GPG key ID used for signing commits.";
+ };
+
+ signByDefault = lib.mkEnableOption "Sign commits by default.";
+ };
};
- config = lib.mkIf config.programs.git.enable {
+ config = lib.mkIf config.development.git.enable {
home.packages = with pkgs; [
git-graph
];
@@ -56,7 +68,6 @@
['^(bugfix|hotfix).*$', ['bright_red']],
['^tags/.*$', ['bright_green']],
]
- # Everything else (e.g. custom/service branches) cycles through these instead of all being white
unknown = ['bright_white', 'bright_red', 'bright_green', 'bright_yellow', 'bright_blue', 'bright_magenta', 'bright_cyan']
[svg_colors]
@@ -72,24 +83,26 @@
'';
programs.git = {
+ enable = true;
+ signing = {
+ key = config.development.git.signing.key;
+ signByDefault = config.development.git.signing.signByDefault;
+ };
settings =
lib.recursiveUpdate
{
user = {
- name = config.programs.git.username;
- email = config.programs.git.email;
+ name = config.development.git.username;
+ email = config.development.git.email;
};
core.askPass = "";
alias = {
- # The exclamation mark (!) tells Git to execute this as an external shell command.
- # This overrides standard git-graph behavior with your custom format string.
log-graph = ''
!f() {
fmt=$(printf '\033[1;34mCommit:\033[0m \033[33m%%h\033[0m \033[91m%%d\033[0m%%n\033[1;34mParents:\033[0m \033[35m%%p\033[0m%%n\033[1;34mAuthor:\033[0m \033[32m%%an\033[0m <\033[96m%%ae\033[0m>%%n\033[1;34mDate:\033[0m \033[36m%%ad (%%ar)\033[0m%%n%%n%%B%%n\033[90m--------------------------------------------------------\033[0m')
git-graph --model custom --color always --sparse --style round --format="$fmt"
}; f | less -R
'';
- # Same formatting, but no pager — meant for embedding (lazygit, etc.)
log-graph-embed = ''
!f() {
fmt=$(printf '\033[1;34mCommit:\033[0m \033[33m%%h\033[0m \033[91m%%d\033[0m%%n\033[1;34mParents:\033[0m \033[35m%%p\033[0m%%n\033[1;34mAuthor:\033[0m \033[32m%%an\033[0m <\033[96m%%ae\033[0m>%%n\033[1;34mDate:\033[0m \033[36m%%ad (%%ar)\033[0m%%n%%n%%B%%n\033[90m--------------------------------------------------------\033[0m')
@@ -99,7 +112,7 @@
};
}
(
- lib.optionalAttrs config.programs.git.useSSH {
+ lib.optionalAttrs config.development.git.useSSH {
url."git@github.com:".insteadOf = "https://github.com/";
url."git@gitlab.com:".insteadOf = "https://gitlab.com/";
url."git@bitbucket.org:".insteadOf = "https://bitbucket.org/";
diff --git a/modules/development/lazygit/default.nix b/modules/development/lazygit/default.nix
index cf46e9a..2c920c2 100644
--- a/modules/development/lazygit/default.nix
+++ b/modules/development/lazygit/default.nix
@@ -2,12 +2,17 @@
# Lazygit - A simple terminal UI for git commands
{
- config = lib.mkIf config.programs.lazygit.enable {
+ options.development.lazygit = {
+ enable = lib.mkEnableOption "Enables lazygit.";
+ };
+
+ config = lib.mkIf config.development.lazygit.enable {
programs.lazygit = {
- enableBashIntegration = config.programs.bash.enable;
+ enable = true;
+ enableBashIntegration = config.terminal.bash.enable;
enableFishIntegration = config.programs.fish.enable;
enableNushellIntegration = config.programs.nushell.enable;
- enableZshIntegration = config.programs.zsh.enable;
+ enableZshIntegration = config.terminal.zsh.enable;
settings = {
gui = {
diff --git a/modules/development/nixvim/colorscheme.nix b/modules/development/nixvim/colorscheme.nix
index ba81634..ce2e7cc 100644
--- a/modules/development/nixvim/colorscheme.nix
+++ b/modules/development/nixvim/colorscheme.nix
@@ -2,7 +2,7 @@
# Colorscheme - Base16 theme configuration for nixvim
{
- config.programs.nixvim.colorschemes.base16 = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.colorschemes.base16 = lib.mkIf config.development.nixvim.enable {
enable = true;
colorscheme = with config.scheme.withHashtag; {
base00 = base00;
diff --git a/modules/development/nixvim/default.nix b/modules/development/nixvim/default.nix
index c7978d4..6cd0957 100644
--- a/modules/development/nixvim/default.nix
+++ b/modules/development/nixvim/default.nix
@@ -8,8 +8,13 @@
./plugins
];
- config = {
+ options.development.nixvim = {
+ enable = lib.mkEnableOption "Enables nixvim.";
+ };
+
+ config = lib.mkIf config.development.nixvim.enable {
programs.nixvim = {
+ enable = true;
defaultEditor = true;
opts = {
number = true;
@@ -79,14 +84,13 @@
update_in_insert = false;
float = {
border = "rounded";
- source = true; # Show which LSP the diagnostic is from
+ source = true;
header = "";
prefix = "";
};
};
};
- # Show diagnostics float on cursor hold
autoCmd = [
{
event = [ "CursorHold" ];
diff --git a/modules/development/nixvim/keymaps.nix b/modules/development/nixvim/keymaps.nix
index 4e4b35a..941e902 100644
--- a/modules/development/nixvim/keymaps.nix
+++ b/modules/development/nixvim/keymaps.nix
@@ -2,7 +2,7 @@
# Keymaps - Keyboard shortcut configuration for nixvim
{
- config.programs.nixvim.keymaps = lib.mkIf config.programs.nixvim.enable [
+ config.programs.nixvim.keymaps = lib.mkIf config.development.nixvim.enable [
{
key = "<c-h>";
action = "<c-w>h";
diff --git a/modules/development/nixvim/plugins/cmp.nix b/modules/development/nixvim/plugins/cmp.nix
index 683e0d3..0bf8601 100644
--- a/modules/development/nixvim/plugins/cmp.nix
+++ b/modules/development/nixvim/plugins/cmp.nix
@@ -2,7 +2,7 @@
# Cmp - Completion plugin (nvim-cmp) for auto-completion
{
- config.programs.nixvim.plugins.cmp = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.cmp = lib.mkIf config.development.nixvim.enable {
enable = true;
autoEnableSources = true;
settings = {
diff --git a/modules/development/nixvim/plugins/comment.nix b/modules/development/nixvim/plugins/comment.nix
index cc1b9cb..a14bd10 100644
--- a/modules/development/nixvim/plugins/comment.nix
+++ b/modules/development/nixvim/plugins/comment.nix
@@ -2,7 +2,7 @@
# Comment - Comment toggling plugin (comment.nvim)
{
- config.programs.nixvim.plugins.comment = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.comment = lib.mkIf config.development.nixvim.enable {
enable = true;
settings = {
toggler = {
diff --git a/modules/development/nixvim/plugins/gitsigns.nix b/modules/development/nixvim/plugins/gitsigns.nix
index ea99eba..a737238 100644
--- a/modules/development/nixvim/plugins/gitsigns.nix
+++ b/modules/development/nixvim/plugins/gitsigns.nix
@@ -2,7 +2,7 @@
# Gitsigns - Git status in the sign column (gitsigns.nvim)
{
- config.programs.nixvim.plugins.gitsigns = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.gitsigns = lib.mkIf config.development.nixvim.enable {
enable = true;
};
}
diff --git a/modules/development/nixvim/plugins/indent-blankline.nix b/modules/development/nixvim/plugins/indent-blankline.nix
index eb2674a..38e6a91 100644
--- a/modules/development/nixvim/plugins/indent-blankline.nix
+++ b/modules/development/nixvim/plugins/indent-blankline.nix
@@ -2,7 +2,7 @@
# Indent-blankline - Visual indentation guides (indent-blankline.nvim)
{
- config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.indent-blankline = lib.mkIf config.development.nixvim.enable {
enable = true;
settings = {
indent = {
diff --git a/modules/development/nixvim/plugins/lsp.nix b/modules/development/nixvim/plugins/lsp.nix
index 7fc3ddd..cac48a2 100644
--- a/modules/development/nixvim/plugins/lsp.nix
+++ b/modules/development/nixvim/plugins/lsp.nix
@@ -2,7 +2,7 @@
# LSP - Language Server Protocol configuration (nvim-lspconfig)
{
- config.programs.nixvim.plugins.lsp = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.lsp = lib.mkIf config.development.nixvim.enable {
enable = true;
inlayHints = true;
autoLoad = true;
diff --git a/modules/development/nixvim/plugins/lualine.nix b/modules/development/nixvim/plugins/lualine.nix
index 72f34be..b621b7c 100644
--- a/modules/development/nixvim/plugins/lualine.nix
+++ b/modules/development/nixvim/plugins/lualine.nix
@@ -2,7 +2,7 @@
# Lualine - Statusline configuration (lualine.nvim)
{
- config.programs.nixvim.plugins.lualine = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.lualine = lib.mkIf config.development.nixvim.enable {
enable = true;
settings = {
options = {
diff --git a/modules/development/nixvim/plugins/luasnip.nix b/modules/development/nixvim/plugins/luasnip.nix
index 60571e9..6c48c8b 100644
--- a/modules/development/nixvim/plugins/luasnip.nix
+++ b/modules/development/nixvim/plugins/luasnip.nix
@@ -2,7 +2,7 @@
# Luasnip - Snippet engine for Neovim (Lua-based)
{
- config.programs.nixvim.plugins.luasnip = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.luasnip = lib.mkIf config.development.nixvim.enable {
enable = true;
};
}
diff --git a/modules/development/nixvim/plugins/noice.nix b/modules/development/nixvim/plugins/noice.nix
index d466506..ddbe6c8 100644
--- a/modules/development/nixvim/plugins/noice.nix
+++ b/modules/development/nixvim/plugins/noice.nix
@@ -2,7 +2,7 @@
# Noice - Modern UI for Neovim (cmdline, popupmenu, messages)
{
- config.programs.nixvim.plugins.noice = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.noice = lib.mkIf config.development.nixvim.enable {
enable = true;
};
}
diff --git a/modules/development/nixvim/plugins/nvim-tree.nix b/modules/development/nixvim/plugins/nvim-tree.nix
index 2ad6570..4eeb8c6 100644
--- a/modules/development/nixvim/plugins/nvim-tree.nix
+++ b/modules/development/nixvim/plugins/nvim-tree.nix
@@ -2,7 +2,7 @@
# Nvim-tree - File explorer sidebar (nvim-tree.lua)
{
- config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.nvim-tree = lib.mkIf config.development.nixvim.enable {
enable = true;
settings = {
filters = {
diff --git a/modules/development/nixvim/plugins/telescope.nix b/modules/development/nixvim/plugins/telescope.nix
index b9678fc..cd8c001 100644
--- a/modules/development/nixvim/plugins/telescope.nix
+++ b/modules/development/nixvim/plugins/telescope.nix
@@ -2,7 +2,7 @@
# Telescope - Fuzzy finder
{
- config.programs.nixvim.plugins.telescope = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.telescope = lib.mkIf config.development.nixvim.enable {
enable = true;
extensions = {
fzf-native.enable = true; # faster fuzzy sorting
diff --git a/modules/development/nixvim/plugins/treesitter.nix b/modules/development/nixvim/plugins/treesitter.nix
index 035ac7a..c983832 100644
--- a/modules/development/nixvim/plugins/treesitter.nix
+++ b/modules/development/nixvim/plugins/treesitter.nix
@@ -2,7 +2,7 @@
# Treesitter - Syntax highlighting and parsing (nvim-treesitter)
{
- config.programs.nixvim.plugins.treesitter = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.treesitter = lib.mkIf config.development.nixvim.enable {
enable = true;
folding = {
enable = true;
diff --git a/modules/development/nixvim/plugins/web-devicons.nix b/modules/development/nixvim/plugins/web-devicons.nix
index 3c6ad86..6366af9 100644
--- a/modules/development/nixvim/plugins/web-devicons.nix
+++ b/modules/development/nixvim/plugins/web-devicons.nix
@@ -2,7 +2,7 @@
# Web-devicons - File icons for various file types (nvim-web-devicons)
{
- config.programs.nixvim.plugins.web-devicons = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.web-devicons = lib.mkIf config.development.nixvim.enable {
enable = true;
};
}
diff --git a/modules/development/nixvim/plugins/which-key.nix b/modules/development/nixvim/plugins/which-key.nix
index 18018e7..67f2427 100644
--- a/modules/development/nixvim/plugins/which-key.nix
+++ b/modules/development/nixvim/plugins/which-key.nix
@@ -2,7 +2,7 @@
# Which-key - Popup for keybindings (which-key.nvim)
{
- config.programs.nixvim.plugins.which-key = lib.mkIf config.programs.nixvim.enable {
+ config.programs.nixvim.plugins.which-key = lib.mkIf config.development.nixvim.enable {
enable = true;
settings = {
plugins = {
diff --git a/modules/development/opencode/default.nix b/modules/development/opencode/default.nix
index 0b3f0b6..a685894 100644
--- a/modules/development/opencode/default.nix
+++ b/modules/development/opencode/default.nix
@@ -7,8 +7,13 @@
# Opencode - AI-powered coding assistant (opencode.ai)
{
- config = lib.mkIf config.programs.opencode.enable {
+ options.development.opencode = {
+ enable = lib.mkEnableOption "Enables opencode.";
+ };
+
+ config = lib.mkIf config.development.opencode.enable {
programs.opencode = {
+ enable = true;
package = pkgs.opencode;
};
diff --git a/modules/development/qemu/default.nix b/modules/development/qemu/default.nix
index b34264c..5142458 100644
--- a/modules/development/qemu/default.nix
+++ b/modules/development/qemu/default.nix
@@ -7,7 +7,7 @@
# QEMU - generic and open source machine & userspace emulator and virtualizer.
{
- options.programs.qemu = {
+ options.development.qemu = {
enable = lib.mkEnableOption "Enables qemu.";
package = lib.mkOption {
type = lib.types.package;
@@ -24,7 +24,7 @@
};
};
- config = lib.mkIf config.programs.qemu.enable {
- home.packages = [ config.programs.qemu.package ];
+ config = lib.mkIf config.development.qemu.enable {
+ home.packages = [ config.development.qemu.package ];
};
}
diff --git a/modules/development/vscodium/default.nix b/modules/development/vscodium/default.nix
index a8cbd37..7763a94 100644
--- a/modules/development/vscodium/default.nix
+++ b/modules/development/vscodium/default.nix
@@ -7,8 +7,13 @@
# VSCodium - Visual Studio Code fork
{
- config = lib.mkIf config.programs.vscodium.enable {
+ options.development.vscodium = {
+ enable = lib.mkEnableOption "Enables vscodium.";
+ };
+
+ config = lib.mkIf config.development.vscodium.enable {
programs.vscodium = {
+ enable = true;
package = pkgs.vscodium;
};
diff --git a/modules/file-management/lf/default.nix b/modules/file-management/lf/default.nix
index 47a950f..28955ea 100644
--- a/modules/file-management/lf/default.nix
+++ b/modules/file-management/lf/default.nix
@@ -7,7 +7,19 @@
# lf - terminal file manager
{
- config = lib.mkIf config.programs.lf.enable {
+ options.file-management.lf = {
+ enable = lib.mkEnableOption "Enables lf.";
+ package = lib.mkOption {
+ type = lib.types.package;
+ default = pkgs.lf.overrideAttrs (old: {
+ dontWrapQtApps = true;
+ dontPatchShebangs = true;
+ });
+ description = "The lf package to use.";
+ };
+ };
+
+ config = lib.mkIf config.file-management.lf.enable {
xdg.mimeApps.defaultApplications = {
"inode/directory" = "lf.desktop";
};
@@ -17,11 +29,8 @@
];
programs.lf = {
- package = pkgs.lf.overrideAttrs (old: {
- dontWrapQtApps = true;
- dontPatchShebangs = true;
- });
-
+ enable = true;
+ package = config.file-management.lf.package;
settings = {
number = true;
icons = true;
diff --git a/modules/file-management/lsd/default.nix b/modules/file-management/lsd/default.nix
index 99fe1bd..b51c87e 100644
--- a/modules/file-management/lsd/default.nix
+++ b/modules/file-management/lsd/default.nix
@@ -2,8 +2,13 @@
# LSD - Ls alternative with icons and colors (Rust-based)
{
- config = lib.mkIf config.programs.lsd.enable {
+ options.file-management.lsd = {
+ enable = lib.mkEnableOption "Enables lsd.";
+ };
+
+ config = lib.mkIf config.file-management.lsd.enable {
programs.lsd = {
+ enable = true;
settings.icons.separator = " ";
};
};
diff --git a/modules/file-management/ouch/default.nix b/modules/file-management/ouch/default.nix
index 2b4411e..aafb23d 100644
--- a/modules/file-management/ouch/default.nix
+++ b/modules/file-management/ouch/default.nix
@@ -7,12 +7,12 @@
# Ouch! - CLI tool for compressing and decompressing various formats.
{
- options.programs.ouch = {
+ options.file-management.ouch = {
enable = lib.mkEnableOption "Enables ouch.";
package = lib.mkPackageOption pkgs "ouch" { };
};
- config = lib.mkIf config.programs.ouch.enable {
- home.packages = [ config.programs.ouch.package ];
+ config = lib.mkIf config.file-management.ouch.enable {
+ home.packages = [ config.file-management.ouch.package ];
};
}
diff --git a/modules/media/feh/default.nix b/modules/media/feh/default.nix
index 401a68a..f3486e5 100644
--- a/modules/media/feh/default.nix
+++ b/modules/media/feh/default.nix
@@ -7,8 +7,13 @@
# Feh - Lightweight image viewer and wallpaper setter
{
- config = lib.mkIf config.programs.feh.enable {
+ options.media.feh = {
+ enable = lib.mkEnableOption "Enables feh.";
+ };
+
+ config = lib.mkIf config.media.feh.enable {
programs.feh = {
+ enable = true;
package = pkgs.feh;
};
diff --git a/modules/media/ffmpeg/default.nix b/modules/media/ffmpeg/default.nix
index d86b5a6..9526ff5 100644
--- a/modules/media/ffmpeg/default.nix
+++ b/modules/media/ffmpeg/default.nix
@@ -7,12 +7,12 @@
# FFmpeg - Command-line audio/video converter and streaming tool
{
- options.programs.ffmpeg = {
+ options.media.ffmpeg = {
enable = lib.mkEnableOption "Enables ffmpeg.";
package = lib.mkPackageOption pkgs "ffmpeg-full" { };
};
- config = lib.mkIf config.programs.ffmpeg.enable {
- home.packages = [ config.programs.ffmpeg.package ];
+ config = lib.mkIf config.media.ffmpeg.enable {
+ home.packages = [ config.media.ffmpeg.package ];
};
}
diff --git a/modules/media/impala/default.nix b/modules/media/impala/default.nix
index 9c4d1f4..1a14412 100644
--- a/modules/media/impala/default.nix
+++ b/modules/media/impala/default.nix
@@ -7,13 +7,13 @@
# Impala - Apache Impala: SQL query engine for Apache Hadoop
{
- options.programs.impala = {
+ options.media.impala = {
enable = lib.mkEnableOption "Enables impala.";
package = lib.mkPackageOption pkgs "impala" { };
};
- config = lib.mkIf config.programs.impala.enable {
- home.packages = [ config.programs.impala.package ];
+ config = lib.mkIf config.media.impala.enable {
+ home.packages = [ config.media.impala.package ];
xdg.mimeApps.defaultApplications = {
"x-scheme-handler/impala" = "impala.desktop";
diff --git a/modules/media/maim/default.nix b/modules/media/maim/default.nix
index 3e30c88..fcf53b7 100644
--- a/modules/media/maim/default.nix
+++ b/modules/media/maim/default.nix
@@ -7,12 +7,12 @@
# Maim - Screenshot utility (slop-based region selection)
{
- options.programs.maim = {
+ options.media.maim = {
enable = lib.mkEnableOption "Enables maim.";
package = lib.mkPackageOption pkgs "maim" { };
};
- config = lib.mkIf config.programs.maim.enable {
- home.packages = [ config.programs.maim.package ];
+ config = lib.mkIf config.media.maim.enable {
+ home.packages = [ config.media.maim.package ];
};
}
diff --git a/modules/media/pamixer/default.nix b/modules/media/pamixer/default.nix
index b84e9cf..3632ecc 100644
--- a/modules/media/pamixer/default.nix
+++ b/modules/media/pamixer/default.nix
@@ -7,12 +7,12 @@
# Pamixer - PulseAudio command-line mixer (volume control)
{
- options.programs.pamixer = {
+ options.media.pamixer = {
enable = lib.mkEnableOption "Enables pamixer.";
package = lib.mkPackageOption pkgs "pamixer" { };
};
- config = lib.mkIf config.programs.pamixer.enable {
- home.packages = [ config.programs.pamixer.package ];
+ config = lib.mkIf config.media.pamixer.enable {
+ home.packages = [ config.media.pamixer.package ];
};
}
diff --git a/modules/media/playerctl/default.nix b/modules/media/playerctl/default.nix
index d501abd..58619a4 100644
--- a/modules/media/playerctl/default.nix
+++ b/modules/media/playerctl/default.nix
@@ -7,12 +7,12 @@
# Playerctl - CLI for controlling media players (Spotify, MPRIS, etc.)
{
- options.programs.playerctl = {
+ options.media.playerctl = {
enable = lib.mkEnableOption "Enables playerctl.";
package = lib.mkPackageOption pkgs "playerctl" { };
};
- config = lib.mkIf config.programs.playerctl.enable {
- home.packages = [ config.programs.playerctl.package ];
+ config = lib.mkIf config.media.playerctl.enable {
+ home.packages = [ config.media.playerctl.package ];
};
}
diff --git a/modules/media/slop/default.nix b/modules/media/slop/default.nix
index c86181b..8e2c01d 100644
--- a/modules/media/slop/default.nix
+++ b/modules/media/slop/default.nix
@@ -7,12 +7,12 @@
# Slop - Region selector for screenshots (used by maim/flameshot)
{
- options.programs.slop = {
+ options.media.slop = {
enable = lib.mkEnableOption "Enables slop.";
package = lib.mkPackageOption pkgs "slop" { };
};
- config = lib.mkIf config.programs.slop.enable {
- home.packages = [ config.programs.slop.package ];
+ config = lib.mkIf config.media.slop.enable {
+ home.packages = [ config.media.slop.package ];
};
}
diff --git a/modules/media/vlc/default.nix b/modules/media/vlc/default.nix
index 8069f3e..7e008fb 100644
--- a/modules/media/vlc/default.nix
+++ b/modules/media/vlc/default.nix
@@ -7,13 +7,13 @@
# VLC - Versatile multimedia player for audio/video playback
{
- options.programs.vlc = {
+ options.media.vlc = {
enable = lib.mkEnableOption "Enables vlc.";
package = lib.mkPackageOption pkgs "vlc" { };
};
- config = lib.mkIf config.programs.vlc.enable {
- home.packages = [ config.programs.vlc.package ];
+ config = lib.mkIf config.media.vlc.enable {
+ home.packages = [ config.media.vlc.package ];
xdg.mimeApps.defaultApplications = {
"x-scheme-handler/vlc" = "vlc.desktop";
diff --git a/modules/office/zathura/default.nix b/modules/office/zathura/default.nix
index 167b04f..f17a5c3 100644
--- a/modules/office/zathura/default.nix
+++ b/modules/office/zathura/default.nix
@@ -7,8 +7,13 @@
# Zathura - Minimalistic document viewer (PDF, DJVU, etc.)
{
- config = lib.mkIf config.programs.zathura.enable {
+ options.office.zathura = {
+ enable = lib.mkEnableOption "Enables zathura.";
+ };
+
+ config = lib.mkIf config.office.zathura.enable {
programs.zathura = {
+ enable = true;
package = pkgs.zathura;
};
diff --git a/modules/private/email.example.nix b/modules/private/email.example.nix
index ca4a3a1..1c863cc 100644
--- a/modules/private/email.example.nix
+++ b/modules/private/email.example.nix
@@ -1,12 +1,12 @@
{ config, lib, ... }:
{
- config.accounts.email.accounts = {
+ config.communication.email.accounts = {
"example" = {
realName = "Example User";
address = "user@gmail.com";
userName = "user@gmail.com";
- passwordCommand = "${lib.getExe config.programs.gopass.package} -o mail/user@gmail.com";
+ passwordCommand = "${lib.getExe config.security.gopass.package} -o mail/user@gmail.com";
flavor = "gmail.com";
primary = true;
neomutt = {
diff --git a/modules/private/git.example.nix b/modules/private/git.example.nix
index 70e59b4..630839b 100644
--- a/modules/private/git.example.nix
+++ b/modules/private/git.example.nix
@@ -1,7 +1,7 @@
{ ... }:
{
- config.programs.git = {
+ config.development.git = {
username = "Arpit Chakladar";
email = "arpitchakladar+git@gmail.com";
signing = {
diff --git a/modules/scripts/default.nix b/modules/scripts/default.nix
index 1b4478b..a05aaed 100644
--- a/modules/scripts/default.nix
+++ b/modules/scripts/default.nix
@@ -6,7 +6,7 @@
}:
let
shell =
- if config.programs.zsh.enable then (lib.getExe config.programs.zsh.package) else "/usr/bin/env sh";
+ if config.terminal.zsh.enable then (lib.getExe config.terminal.zsh.package) else "/usr/bin/env sh";
mkScript =
name: path: env: deps:
@@ -40,11 +40,11 @@ let
aria2-run = {
path = ./aria2-run.sh;
deps = [
- config.programs.aria2.package
+ config.web.aria2.package
];
conditions = [
{
- option = "programs.aria2.enable";
+ option = "web.aria2.enable";
value = true;
}
];
@@ -55,30 +55,30 @@ let
file-preview = {
path = ./file-preview.sh;
deps = [
- config.programs.kitty.package
- config.programs.bat.package
- config.programs.ffmpeg.package
- config.programs.ouch.package
+ config.terminal.kitty.package
+ config.terminal.bat.package
+ config.media.ffmpeg.package
+ config.file-management.ouch.package
pkgs.file
pkgs.librsvg
pkgs.poppler-utils
];
conditions = [
{
- option = "programs.ffmpeg.enable";
+ option = "media.ffmpeg.enable";
value = true;
}
{
- option = "programs.ouch.enable";
+ option = "file-management.ouch.enable";
value = true;
}
{
# not a dependency
- option = "programs.zathura.enable";
+ option = "office.zathura.enable";
value = true;
}
{
- option = "programs.bat.enable";
+ option = "terminal.bat.enable";
value = true;
}
];
@@ -86,7 +86,7 @@ let
file-preview-clean = {
path = ./file-preview-clean.sh;
deps = [
- config.programs.kitty.package
+ config.terminal.kitty.package
];
conditions = [
{
@@ -98,17 +98,17 @@ let
fzf-launcher = {
path = ./fzf-launcher.sh;
deps = [
- config.programs.fzf.package
+ config.terminal.fzf.package
pkgs.util-linux
- config.programs.zsh.package
+ config.terminal.zsh.package
];
conditions = [
{
- option = "programs.fzf.enable";
+ option = "terminal.fzf.enable";
value = true;
}
{
- option = "programs.zsh.enable";
+ option = "terminal.zsh.enable";
value = true;
}
];
@@ -125,16 +125,16 @@ let
screen-recording = {
path = ./screen-recording.sh;
deps = [
- config.programs.ffmpeg.package
- config.programs.slop.package
+ config.media.ffmpeg.package
+ config.media.slop.package
];
conditions = [
{
- option = "programs.ffmpeg.enable";
+ option = "media.ffmpeg.enable";
value = true;
}
{
- option = "programs.slop.enable";
+ option = "media.slop.enable";
value = true;
}
];
@@ -142,26 +142,26 @@ let
system-monitor = {
path = ./system-monitor.sh;
deps = [
- config.programs.bottom.package
- config.programs.nvtop.package
- config.programs.tmux.package
- config.programs.kitty.package
+ config.system.bottom.package
+ config.system.nvtop.package
+ config.terminal.tmux.package
+ config.terminal.kitty.package
];
conditions = [
{
- option = "programs.bottom.enable";
+ option = "system.bottom.enable";
value = true;
}
{
- option = "programs.nvtop.enable";
+ option = "system.nvtop.enable";
value = true;
}
{
- option = "programs.tmux.enable";
+ option = "terminal.tmux.enable";
value = true;
}
{
- option = "programs.kitty.enable";
+ option = "terminal.kitty.enable";
value = true;
}
];
@@ -169,19 +169,19 @@ let
vpn-connect = {
path = ./vpn-connect.sh;
env = {
- SYSTEMD_RESOLVED_PATH = "${config.programs.openvpn.package}/libexec/update-systemd-resolved";
+ SYSTEMD_RESOLVED_PATH = "${config.security.openvpn.package}/libexec/update-systemd-resolved";
};
deps = [
- config.programs.fzf.package
- config.programs.openvpn.package
+ config.terminal.fzf.package
+ config.security.openvpn.package
];
conditions = [
{
- option = "programs.openvpn.enable";
+ option = "security.openvpn.enable";
value = true;
}
{
- option = "programs.fzf.enable";
+ option = "terminal.fzf.enable";
value = true;
}
];
@@ -214,7 +214,7 @@ let
pkgs.makeDesktopItem {
name = name;
desktopName = sc.desktop.displayName;
- exec = "${lib.getExe config.programs.kitty.package} -e ${lib.getExe sc.package}";
+ exec = "${lib.getExe config.terminal.kitty.package} -e ${lib.getExe sc.package}";
icon = "kitty";
categories = [ "Utility" ];
terminal = false;
@@ -298,7 +298,7 @@ in
home.packages = [
pkgs.file
- config.programs.bat.package
+ config.terminal.bat.package
]
++ lib.filter (x: x != null) (lib.mapAttrsToList (_: s: s.package) config.scripts)
++ lib.filter (x: x != null) desktopItems;
diff --git a/modules/security/enteauth/default.nix b/modules/security/enteauth/default.nix
index a332bf3..376451a 100644
--- a/modules/security/enteauth/default.nix
+++ b/modules/security/enteauth/default.nix
@@ -42,7 +42,7 @@ let
};
in
{
- options.programs.enteauth = {
+ options.security.enteauth = {
enable = lib.mkEnableOption "Enables wrapped ente-auth with automated keyring unlocks and a desktop entry.";
package = lib.mkOption {
type = lib.types.package;
@@ -51,8 +51,8 @@ in
};
};
- config = lib.mkIf config.programs.enteauth.enable {
- home.packages = [ config.programs.enteauth.package ];
+ config = lib.mkIf config.security.enteauth.enable {
+ home.packages = [ config.security.enteauth.package ];
xdg.mimeApps.defaultApplications = {
"x-scheme-handler/enteauth" = "enteauth.desktop";
diff --git a/modules/security/gopass/default.nix b/modules/security/gopass/default.nix
index 3990f7f..f5a037f 100644
--- a/modules/security/gopass/default.nix
+++ b/modules/security/gopass/default.nix
@@ -7,7 +7,7 @@
}:
{
- options.programs.gopass = {
+ options.security.gopass = {
enable = lib.mkEnableOption "Enables gopass.";
package = lib.mkOption {
@@ -18,10 +18,10 @@
};
};
- config = lib.mkIf config.programs.gopass.enable {
+ config = lib.mkIf config.security.gopass.enable {
programs.password-store = {
enable = true;
- package = config.programs.gopass.package;
+ package = config.security.gopass.package;
settings = {
PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.local/share/pass";
};
diff --git a/modules/security/gpg/default.nix b/modules/security/gpg/default.nix
index 858f79f..9ed3868 100644
--- a/modules/security/gpg/default.nix
+++ b/modules/security/gpg/default.nix
@@ -7,13 +7,21 @@
# gpg - GNU Privacy Guard
{
- config = lib.mkIf config.programs.gpg.enable {
+ options.security.gpg = {
+ enable = lib.mkEnableOption "Enables gpg.";
+ };
+
+ config = lib.mkIf config.security.gpg.enable {
+ programs.gpg = {
+ enable = true;
+ };
+
services.gpg-agent = {
enable = true;
enableZshIntegration = true;
defaultCacheTtl = 3600;
maxCacheTtl = 86400;
- enableSshSupport = config.programs.ssh.enable;
+ enableSshSupport = config.security.ssh.enable;
pinentry.package = pkgs.pinentry-gtk2;
};
};
diff --git a/modules/security/openvpn/default.nix b/modules/security/openvpn/default.nix
index d0edef3..1636081 100644
--- a/modules/security/openvpn/default.nix
+++ b/modules/security/openvpn/default.nix
@@ -7,12 +7,12 @@
# OpenVPN - Open-source VPN client for secure remote access
{
- options.programs.openvpn = {
+ options.security.openvpn = {
enable = lib.mkEnableOption "Enables openvpn.";
package = lib.mkPackageOption pkgs "openvpn" { };
};
- config = lib.mkIf config.programs.openvpn.enable {
- home.packages = [ config.programs.openvpn.package ];
+ config = lib.mkIf config.security.openvpn.enable {
+ home.packages = [ config.security.openvpn.package ];
};
}
diff --git a/modules/security/ssh/default.nix b/modules/security/ssh/default.nix
index 7e8752a..2224f98 100644
--- a/modules/security/ssh/default.nix
+++ b/modules/security/ssh/default.nix
@@ -9,8 +9,13 @@
{
imports = [ ./git.nix ];
- config = lib.mkIf config.programs.ssh.enable {
+ options.security.ssh = {
+ enable = lib.mkEnableOption "Enables ssh.";
+ };
+
+ config = lib.mkIf config.security.ssh.enable {
programs.ssh = {
+ enable = true;
package = pkgs.openssh;
enableDefaultConfig = false;
extraOptionOverrides = {
diff --git a/modules/security/ssh/git.nix b/modules/security/ssh/git.nix
index 9683629..2c79d34 100644
--- a/modules/security/ssh/git.nix
+++ b/modules/security/ssh/git.nix
@@ -41,7 +41,7 @@ let
};
in
{
- config = lib.mkIf (config.programs.ssh.enable && config.programs.git.useSSH) {
+ config = lib.mkIf (config.security.ssh.enable && config.development.git.useSSH) {
home.file = builtins.listToAttrs (map mkKeyFile hosts);
programs.ssh.settings = builtins.listToAttrs (map mkGitHost hosts);
diff --git a/modules/system/bluetui/default.nix b/modules/system/bluetui/default.nix
index a2a97ec..498659c 100644
--- a/modules/system/bluetui/default.nix
+++ b/modules/system/bluetui/default.nix
@@ -7,12 +7,12 @@
# Bluetui - Terminal UI for Bluetooth management
{
- options.programs.bluetui = {
+ options.system.bluetui = {
enable = lib.mkEnableOption "Enables bluetui.";
package = lib.mkPackageOption pkgs "bluetui" { };
};
- config = lib.mkIf config.programs.bluetui.enable {
- home.packages = [ config.programs.bluetui.package ];
+ config = lib.mkIf config.system.bluetui.enable {
+ home.packages = [ config.system.bluetui.package ];
};
}
diff --git a/modules/system/bottom/default.nix b/modules/system/bottom/default.nix
index 3ecda86..59a2a43 100644
--- a/modules/system/bottom/default.nix
+++ b/modules/system/bottom/default.nix
@@ -7,9 +7,15 @@
# Bottom - Cross-platform graphical process/system monitor (Rust-based)
{
- config = lib.mkIf config.programs.bottom.enable {
+ options.system.bottom = {
+ enable = lib.mkEnableOption "Enables bottom.";
+ package = lib.mkPackageOption pkgs "bottom" { };
+ };
+
+ config = lib.mkIf config.system.bottom.enable {
programs.bottom = {
- package = pkgs.bottom;
+ enable = true;
+ package = config.system.bottom.package;
};
};
}
diff --git a/modules/system/brightnessctl/default.nix b/modules/system/brightnessctl/default.nix
index cea3517..b95ddb4 100644
--- a/modules/system/brightnessctl/default.nix
+++ b/modules/system/brightnessctl/default.nix
@@ -7,12 +7,12 @@
# brightnessctl - Backlight brightness control tool
{
- options.programs.brightnessctl = {
+ options.system.brightnessctl = {
enable = lib.mkEnableOption "Enables brightnessctl.";
package = lib.mkPackageOption pkgs "brightnessctl" { };
};
- config = lib.mkIf config.programs.brightnessctl.enable {
- home.packages = [ config.programs.brightnessctl.package ];
+ config = lib.mkIf config.system.brightnessctl.enable {
+ home.packages = [ config.system.brightnessctl.package ];
};
}
diff --git a/modules/system/htop/default.nix b/modules/system/htop/default.nix
index 7781464..cf36f41 100644
--- a/modules/system/htop/default.nix
+++ b/modules/system/htop/default.nix
@@ -7,8 +7,13 @@
# Htop - Interactive process viewer (using htop-vim version)
{
- config = lib.mkIf config.programs.htop.enable {
+ options.system.htop = {
+ enable = lib.mkEnableOption "Enables htop.";
+ };
+
+ config = lib.mkIf config.system.htop.enable {
programs.htop = {
+ enable = true;
package = pkgs.htop-vim;
};
};
diff --git a/modules/system/nvtop/default.nix b/modules/system/nvtop/default.nix
index 19dd61b..8b41978 100644
--- a/modules/system/nvtop/default.nix
+++ b/modules/system/nvtop/default.nix
@@ -7,7 +7,7 @@
# Nvtop - GPU process monitor (NVIDIA/AMD/Intel GPUs)
{
- options.programs.nvtop = {
+ options.system.nvtop = {
enable = lib.mkEnableOption "Enables nvtop.";
package = lib.mkOption {
type = lib.types.package;
@@ -17,7 +17,7 @@
};
};
- config = lib.mkIf config.programs.nvtop.enable {
- home.packages = [ config.programs.nvtop.package ];
+ config = lib.mkIf config.system.nvtop.enable {
+ home.packages = [ config.system.nvtop.package ];
};
}
diff --git a/modules/system/systemctl-tui/default.nix b/modules/system/systemctl-tui/default.nix
index 77dca8c..1b151cf 100644
--- a/modules/system/systemctl-tui/default.nix
+++ b/modules/system/systemctl-tui/default.nix
@@ -7,12 +7,12 @@
# systemctl-tui - TUI for systemctl (systemd service management)
{
- options.programs.systemctl-tui = {
+ options.system.systemctl-tui = {
enable = lib.mkEnableOption "Enables systemctl-tui.";
package = lib.mkPackageOption pkgs "systemctl-tui" { };
};
- config = lib.mkIf config.programs.systemctl-tui.enable {
- home.packages = [ config.programs.systemctl-tui.package ];
+ config = lib.mkIf config.system.systemctl-tui.enable {
+ home.packages = [ config.system.systemctl-tui.package ];
};
}
diff --git a/modules/terminal/bash/default.nix b/modules/terminal/bash/default.nix
new file mode 100644
index 0000000..6b53126
--- /dev/null
+++ b/modules/terminal/bash/default.nix
@@ -0,0 +1,8 @@
+{ lib, ... }:
+
+# Bash - GNU Bourne Again SHell
+{
+ options.terminal.bash = {
+ enable = lib.mkEnableOption "Enables bash.";
+ };
+}
diff --git a/modules/terminal/bat/default.nix b/modules/terminal/bat/default.nix
index 3c962a3..e1b4c96 100644
--- a/modules/terminal/bat/default.nix
+++ b/modules/terminal/bat/default.nix
@@ -7,8 +7,15 @@
# bat - a cat clone with wings
{
- config = lib.mkIf config.programs.bat.enable {
+ options.terminal.bat = {
+ enable = lib.mkEnableOption "Enables bat.";
+ package = lib.mkPackageOption pkgs "bat" { };
+ };
+
+ config = lib.mkIf config.terminal.bat.enable {
programs.bat = {
+ enable = true;
+ package = config.terminal.bat.package;
config = {
theme = "base16";
};
diff --git a/modules/terminal/default.nix b/modules/terminal/default.nix
index 7a3ffcc..e02ac47 100644
--- a/modules/terminal/default.nix
+++ b/modules/terminal/default.nix
@@ -2,6 +2,7 @@
{
imports = [
+ ./bash
./bat
./fzf
./kitty
diff --git a/modules/terminal/fzf/assertions.nix b/modules/terminal/fzf/assertions.nix
index 7c2e79c..269af2e 100644
--- a/modules/terminal/fzf/assertions.nix
+++ b/modules/terminal/fzf/assertions.nix
@@ -3,9 +3,9 @@
assertions = [
{
assertion =
- !config.programs.fzf.enable || config.programs.zsh.enable || config.programs.bash.enable;
+ !config.terminal.fzf.enable || config.terminal.zsh.enable || config.terminal.bash.enable;
message = ''
- programs.fzf is enabled but neither programs.zsh.enable nor programs.bash.enable is set.
+ terminal.fzf is enabled but neither terminal.zsh.enable nor terminal.bash.enable is set.
fzf shell integration requires zsh or bash. Please enable at least one.
'';
}
diff --git a/modules/terminal/fzf/default.nix b/modules/terminal/fzf/default.nix
index 7671b3c..499bf3c 100644
--- a/modules/terminal/fzf/default.nix
+++ b/modules/terminal/fzf/default.nix
@@ -1,17 +1,29 @@
-{ config, lib, ... }:
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
# FZF - Fuzzy finder, CLI fuzzy search tool
{
imports = [ ./assertions.nix ];
+ options.terminal.fzf = {
+ enable = lib.mkEnableOption "Enables fzf.";
+ package = lib.mkPackageOption pkgs "fzf" { };
+ };
+
config =
let
shellIntegration = ''
- ${if config.programs.zsh.enable then "eval \"$(fzf --zsh)\"" else "eval \"$(fzf --bash)\""}
+ ${if config.terminal.zsh.enable then "eval \"$(fzf --zsh)\"" else "eval \"$(fzf --bash)\""}
'';
in
- lib.mkIf config.programs.fzf.enable {
+ lib.mkIf config.terminal.fzf.enable {
programs.fzf = {
+ enable = true;
+ package = config.terminal.fzf.package;
defaultOptions = [
"--height 100%"
"--layout=reverse"
@@ -26,26 +38,26 @@
];
colors = with config.scheme.withHashtag; {
- fg = base05; # Foreground
- bg = "-1"; # Background (-1 for transparent)
- hl = base0D; # Highlight
-
- "fg+" = base07; # Foreground for selected item
- "bg+" = "-1"; # Background for selected item
- "hl+" = base0D; # Highlight for selected item
-
- gutter = "-1"; # Remove the white margin at the left
-
- info = base0B; # Info text (usually count of items)
- border = base03; # Border color
- prompt = base0A; # Prompt text color
- pointer = base0F; # Pointer color (e.g., > for selected)
- marker = base0C; # Marker color (e.g., for multi-select)
- spinner = base0C; # Spinner color (during search)
+ fg = base05;
+ bg = "-1";
+ hl = base0D;
+
+ "fg+" = base07;
+ "bg+" = "-1";
+ "hl+" = base0D;
+
+ gutter = "-1";
+
+ info = base0B;
+ border = base03;
+ prompt = base0A;
+ pointer = base0F;
+ marker = base0C;
+ spinner = base0C;
};
};
- programs.zsh.initContent = lib.mkIf config.programs.zsh.enable (lib.mkAfter shellIntegration);
- programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter shellIntegration);
+ programs.zsh.initContent = lib.mkIf config.terminal.zsh.enable (lib.mkAfter shellIntegration);
+ programs.bash.initExtra = lib.mkIf config.terminal.bash.enable (lib.mkAfter shellIntegration);
};
}
diff --git a/modules/terminal/kitty/default.nix b/modules/terminal/kitty/default.nix
index 3701180..9b1836a 100644
--- a/modules/terminal/kitty/default.nix
+++ b/modules/terminal/kitty/default.nix
@@ -1,17 +1,25 @@
{
config,
lib,
+ pkgs,
...
}:
# Kitty - GPU-accelerated terminal emulator
{
- config = lib.mkIf config.programs.kitty.enable {
+ options.terminal.kitty = {
+ enable = lib.mkEnableOption "Enables kitty.";
+ package = lib.mkPackageOption pkgs "kitty" { };
+ };
+
+ config = lib.mkIf config.terminal.kitty.enable {
xdg.mimeApps.defaultApplications = {
"x-scheme-handler/terminal" = "kitty.desktop";
};
programs.kitty = {
+ enable = true;
+ package = config.terminal.kitty.package;
settings = with config.scheme.withHashtag; {
window_padding_width = 10;
font_size = config.fonts.size;
@@ -48,7 +56,7 @@
allow_remote_control = "yes";
listen_on = "unix:/tmp/kitty";
- shell = lib.mkIf config.programs.zsh.enable (lib.getExe config.programs.zsh.package);
+ shell = lib.mkIf config.terminal.zsh.enable (lib.getExe config.terminal.zsh.package);
};
};
};
diff --git a/modules/terminal/less/default.nix b/modules/terminal/less/default.nix
index 516377d..8785498 100644
--- a/modules/terminal/less/default.nix
+++ b/modules/terminal/less/default.nix
@@ -2,8 +2,13 @@
# less - terminal pager
{
- config = lib.mkIf config.programs.less.enable {
+ options.terminal.less = {
+ enable = lib.mkEnableOption "Enables less.";
+ };
+
+ config = lib.mkIf config.terminal.less.enable {
programs.less = {
+ enable = true;
options = [
"--RAW-CONTROL-CHARS"
"--quit-if-one-screen"
diff --git a/modules/terminal/starship/default.nix b/modules/terminal/starship/default.nix
index ae5e082..647cef3 100644
--- a/modules/terminal/starship/default.nix
+++ b/modules/terminal/starship/default.nix
@@ -2,9 +2,14 @@
# Starship - Minimal, blazing-fast shell prompt
{
- config = lib.mkIf config.programs.starship.enable {
+ options.terminal.starship = {
+ enable = lib.mkEnableOption "Enables starship.";
+ };
+
+ config = lib.mkIf config.terminal.starship.enable {
programs.starship = {
- enableZshIntegration = config.programs.zsh.enable;
+ enable = true;
+ enableZshIntegration = config.terminal.zsh.enable;
settings =
let
mkSegment = content: ''[┄\[](red)[${content}]($style)[\]](red)'';
diff --git a/modules/terminal/tmux/default.nix b/modules/terminal/tmux/default.nix
index e2e76c9..fdee9ff 100644
--- a/modules/terminal/tmux/default.nix
+++ b/modules/terminal/tmux/default.nix
@@ -7,9 +7,15 @@
# Tmux - Terminal multiplexer (window/pane management)
{
- config = lib.mkIf config.programs.tmux.enable {
+ options.terminal.tmux = {
+ enable = lib.mkEnableOption "Enables tmux.";
+ package = lib.mkPackageOption pkgs "tmux" { };
+ };
+
+ config = lib.mkIf config.terminal.tmux.enable {
programs.tmux = {
- package = pkgs.tmux;
+ enable = true;
+ package = config.terminal.tmux.package;
};
};
}
diff --git a/modules/terminal/zsh/default.nix b/modules/terminal/zsh/default.nix
index f3bdbb1..842556a 100644
--- a/modules/terminal/zsh/default.nix
+++ b/modules/terminal/zsh/default.nix
@@ -7,13 +7,19 @@
# Zsh - Z shell, extended bash with additional features and plugins
{
+ options.terminal.zsh = {
+ enable = lib.mkEnableOption "Enables zsh.";
+ package = lib.mkPackageOption pkgs "zsh" { };
+ };
+
config =
let
nixCommandWrappers = builtins.readFile ./nix-aliases.sh;
in
- lib.mkIf config.programs.zsh.enable {
+ lib.mkIf config.terminal.zsh.enable {
programs.zsh = {
- package = pkgs.zsh;
+ enable = true;
+ package = config.terminal.zsh.package;
dotDir = "${config.xdg.configHome}/zsh";
history.path = "${config.xdg.cacheHome}/zsh/history";
enableCompletion = true;
@@ -31,8 +37,8 @@
'';
};
- programs.bash.initExtra = lib.mkIf config.programs.bash.enable (lib.mkAfter nixCommandWrappers);
+ programs.bash.initExtra = lib.mkIf config.terminal.bash.enable (lib.mkAfter nixCommandWrappers);
- home.sessionVariables.SHELL = "${lib.getExe config.programs.zsh.package}";
+ home.sessionVariables.SHELL = "${lib.getExe config.terminal.zsh.package}";
};
}
diff --git a/modules/web/aria2/default.nix b/modules/web/aria2/default.nix
index 79c6f8e..efea840 100644
--- a/modules/web/aria2/default.nix
+++ b/modules/web/aria2/default.nix
@@ -7,9 +7,15 @@
# Aria2 - command line download manager
{
- config = lib.mkIf config.programs.aria2.enable {
+ options.web.aria2 = {
+ enable = lib.mkEnableOption "Enables aria2.";
+ package = lib.mkPackageOption pkgs "aria2" { };
+ };
+
+ config = lib.mkIf config.web.aria2.enable {
programs.aria2 = {
- package = pkgs.aria2;
+ enable = true;
+ package = config.web.aria2.package;
settings = {
dir = "${config.home.homeDirectory}/Downloads";
};
diff --git a/modules/web/brave/default.nix b/modules/web/brave/default.nix
index 936da6a..e323058 100644
--- a/modules/web/brave/default.nix
+++ b/modules/web/brave/default.nix
@@ -6,8 +6,13 @@
}:
{
- config = lib.mkIf config.programs.brave.enable {
+ options.web.brave = {
+ enable = lib.mkEnableOption "Enables brave.";
+ };
+
+ config = lib.mkIf config.web.brave.enable {
programs.brave = {
+ enable = true;
package = pkgs.brave;
commandLineArgs = [
@@ -16,10 +21,10 @@
];
extensions = [
- { id = "nngceckbapebfimnlniiiahkandclblb"; } # Bitwarden
- { id = "mpkodccbngfoacfalldjimigbofkhgjn"; } # Aria2 Explorer
- { id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; } # Dark Reader
- { id = "hpejmncgbammabkkodflfeekpcicfjnk"; } # Quite Black
+ { id = "nngceckbapebfimnlniiiahkandclblb"; }
+ { id = "mpkodccbngfoacfalldjimigbofkhgjn"; }
+ { id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; }
+ { id = "hpejmncgbammabkkodflfeekpcicfjnk"; }
];
};
diff --git a/users/arpit.nix b/users/arpit.nix
index 04d1b57..1b868b4 100644
--- a/users/arpit.nix
+++ b/users/arpit.nix
@@ -19,51 +19,68 @@
gaming.enable = true;
gaming.steam.enable = false;
- # Tools
- programs.aria2.enable = true;
- programs.bat.enable = true;
- programs.bluetui.enable = true;
- programs.bottom.enable = true;
- programs.brave.enable = true;
- programs.brightnessctl.enable = true;
- programs.bruno.enable = true;
- programs.delta.enable = true;
- programs.email.enable = true;
- programs.enteauth.enable = true;
- programs.feh.enable = true;
- programs.ffmpeg.enable = true;
- programs.fzf.enable = true;
- programs.git.enable = true;
- programs.git.useSSH = true;
- programs.git.signing.signByDefault = true;
- programs.gpg.enable = true;
- programs.htop.enable = true;
- programs.impala.enable = true;
- programs.kitty.enable = true;
- programs.lazygit.enable = true;
- programs.less.enable = true;
- programs.lf.enable = true;
- programs.lsd.enable = true;
- programs.maim.enable = true;
- programs.neomutt.enable = true;
- programs.nixvim.enable = true;
- programs.nvtop.enable = true;
- programs.opencode.enable = true;
- programs.ssh.enable = true;
- programs.openvpn.enable = true;
- programs.ouch.enable = true;
- programs.pamixer.enable = true;
- programs.gopass.enable = true;
- programs.playerctl.enable = true;
- programs.qemu.enable = true;
- programs.slop.enable = true;
- programs.starship.enable = true;
- programs.systemctl-tui.enable = true;
- programs.tmux.enable = true;
- programs.vlc.enable = true;
- programs.vscodium.enable = true;
- programs.zathura.enable = true;
- programs.zsh.enable = true;
+ # Communication
+ communication.email.enable = true;
+ communication.neomutt.enable = true;
+
+ # Development
+ development.bruno.enable = true;
+ development.delta.enable = true;
+ development.git.enable = true;
+ development.git.useSSH = true;
+ development.lazygit.enable = true;
+ development.nixvim.enable = true;
+ development.opencode.enable = true;
+ development.qemu.enable = true;
+ development.vscodium.enable = true;
+
+ # File Management
+ file-management.lf.enable = true;
+ file-management.lsd.enable = true;
+ file-management.ouch.enable = true;
+
+ # Media
+ media.feh.enable = true;
+ media.ffmpeg.enable = true;
+ media.impala.enable = true;
+ media.maim.enable = true;
+ media.pamixer.enable = true;
+ media.playerctl.enable = true;
+ media.slop.enable = true;
+ media.vlc.enable = true;
+
+ # Office
+ office.zathura.enable = true;
+
+ # Security
+ security.enteauth.enable = true;
+ security.gopass.enable = true;
+ security.gpg.enable = true;
+ security.openvpn.enable = true;
+ security.ssh.enable = true;
+
+ # System
+ system.bluetui.enable = true;
+ system.bottom.enable = true;
+ system.brightnessctl.enable = true;
+ system.htop.enable = true;
+ system.nvtop.enable = true;
+ system.systemctl-tui.enable = true;
+
+ # Terminal
+ terminal.bat.enable = true;
+ terminal.fzf.enable = true;
+ terminal.kitty.enable = true;
+ terminal.less.enable = true;
+ terminal.starship.enable = true;
+ terminal.tmux.enable = true;
+ terminal.zsh.enable = true;
+
+ # Web
+ web.aria2.enable = true;
+ web.brave.enable = true;
+
+ development.git.signing.signByDefault = true;
programs.home-manager.enable = true;
}