initial commit
This commit is contained in:
commit
ebc1be5217
143 changed files with 7721 additions and 0 deletions
130
modules/features/programs/browsers/browser-brave.nix
Normal file
130
modules/features/programs/browsers/browser-brave.nix
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
{ ... }:
|
||||
{
|
||||
config.dendritic.features.browser-brave.homeModules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.brave = {
|
||||
enable = true;
|
||||
commandLineArgs = [
|
||||
# Wayland Native
|
||||
"--enable-features=UseOzonePlatform"
|
||||
"--ozone-platform=wayland"
|
||||
|
||||
# Hardware Acceleration (NVIDIA optimized)
|
||||
"--enable-accelerated-video-decode"
|
||||
"--enable-gpu-rasterization"
|
||||
"--enable-zero-copy"
|
||||
"--ignore-gpu-blocklist"
|
||||
|
||||
# Performance
|
||||
"--enable-features=VaapiVideoDecoder"
|
||||
"--enable-features=VaapiVideoEncoder"
|
||||
"--enable-features=CanvasOopRasterization"
|
||||
"--disable-features=UseChromeOSDirectVideoDecoder"
|
||||
|
||||
# Privacy & Security
|
||||
"--disable-features=MediaRouter" # Disable Chromecast
|
||||
"--disable-features=OptimizationHints" # No Google suggestions
|
||||
"--disable-features=AutofillSavePaymentMethods"
|
||||
"--disable-background-networking" # No telemetry
|
||||
"--disable-sync" # Manual sync control
|
||||
|
||||
# Wayland-specific fixes
|
||||
"--disable-features=WaylandWpColorManagerV1" # Color management fix
|
||||
|
||||
# UI/UX
|
||||
"--force-dark-mode" # Match Stylix theme
|
||||
"--enable-features=WebUIDarkMode"
|
||||
"--no-default-browser-check"
|
||||
];
|
||||
extensions = [
|
||||
# let
|
||||
# ids = [
|
||||
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin
|
||||
"dbepggeogbaibhgnhhndojpepiihcmeb" # vimium
|
||||
"eimadpbcbfnmbkopoojfekhnkhdbieeh" # dark reader
|
||||
"pkehgijcmpdhfbdbbnkijodmdjhbjlgp" # privacy badger
|
||||
"ghmbeldphafepmbegfdlkpapadhbakde" # proton pass
|
||||
"mmjbdbjnoablegbkcklggeknkfcjkjia" # custom new tab page
|
||||
];
|
||||
# in
|
||||
# map (id: { inherit id; }) ids;
|
||||
};
|
||||
|
||||
xdg.configFile."BraveSoftware/Brave-Browser/Policies/managed/policy.json".text = builtins.toJSON {
|
||||
BraveShieldsAdControl = 2;
|
||||
BraveShieldsTrackersBlocked = 1;
|
||||
BraveShieldsHttpsEverywhere = 1;
|
||||
BraveRewardsDisabled = 1;
|
||||
BraveWalletDisabled = 1;
|
||||
BraveVPNDisabled = 1;
|
||||
BraveAIChatEnabled = 0;
|
||||
PasswordManagerEnabled = 0;
|
||||
BravePlaylistEnabled = 0;
|
||||
BraveWebDiscoveryEnabled = 0;
|
||||
BraveStatsPingEnabled = 0;
|
||||
DnsOverHttpsMode = "automatic";
|
||||
BraveDarkMode = 1;
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
DEFAULT_BROWSER = "${pkgs.brave}/bin/brave";
|
||||
BROWSER = "${pkgs.brave}/bin/brave";
|
||||
};
|
||||
|
||||
xdg.desktopEntries = {
|
||||
brave-incognito = {
|
||||
name = "Brave (Private window)";
|
||||
genericName = "Navigateur Web";
|
||||
exec = "brave --incognito";
|
||||
icon = "brave-browser";
|
||||
terminal = false;
|
||||
categories = [
|
||||
"Network"
|
||||
"WebBrowser"
|
||||
];
|
||||
mimeType = [
|
||||
"text/html"
|
||||
"text/xml"
|
||||
];
|
||||
};
|
||||
brave-tor = {
|
||||
name = "Brave (Private window w/Tor)";
|
||||
genericName = "Navigateur Web";
|
||||
exec = "brave --tor";
|
||||
icon = "brave-browser";
|
||||
terminal = false;
|
||||
categories = [
|
||||
"Network"
|
||||
"WebBrowser"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# =================================================================
|
||||
# BRAVE SETTINGS (via brave://flags)
|
||||
# =================================================================
|
||||
|
||||
# These need to be set manually in brave://flags on first launch:
|
||||
# - Enable Tab Groups (UI)
|
||||
# - Enable Parallel Downloading
|
||||
# - Enable Reader Mode
|
||||
# - GPU Rasterization: Enabled
|
||||
# - Override software rendering list: Enabled
|
||||
#
|
||||
# Privacy settings (brave://settings/privacy):
|
||||
# - Block trackers & ads: Aggressive
|
||||
# - Block all fingerprinting
|
||||
# - Upgrade connections to HTTPS
|
||||
# - Block scripts: Off (breaks sites, use uBlock instead)
|
||||
# - Block cookies: Only 3rd party
|
||||
#
|
||||
# Appearance (brave://settings/appearance):
|
||||
# - Show home button: Off
|
||||
# - Show bookmarks bar: Only on new tab
|
||||
# - Use wide address bar: On
|
||||
}
|
||||
)
|
||||
];
|
||||
}
|
||||
23
modules/features/programs/cli/cli-zoxide.nix
Normal file
23
modules/features/programs/cli/cli-zoxide.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{ ... }:
|
||||
{
|
||||
config.dendritic.features.cli-zoxide = {
|
||||
homeModules = [
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
shellAliases = {
|
||||
cd = "z";
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
150
modules/features/programs/cli/cli-zsh.nix
Normal file
150
modules/features/programs/cli/cli-zsh.nix
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
{ ... }:
|
||||
{
|
||||
config.dendritic.features.cli-zsh = {
|
||||
homeModules = [
|
||||
(
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestion.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
syntaxHighlighting.highlighters = [
|
||||
"main"
|
||||
"brackets"
|
||||
"pattern"
|
||||
"regexp"
|
||||
"root"
|
||||
"line"
|
||||
];
|
||||
historySubstringSearch.enable = true;
|
||||
shellAliases = {
|
||||
update = "sudo nixos-rebuild switch";
|
||||
clean = "nix-collect-garbage -d";
|
||||
repair = "nix-store --repair --verify --check-contents";
|
||||
reload = "source ~/.zshrc";
|
||||
|
||||
"." = "cd ../";
|
||||
".." = "cd ../../";
|
||||
"..." = "cd ../../../";
|
||||
"...." = "cd ../../../../";
|
||||
|
||||
ps = "procs";
|
||||
grep = "rg";
|
||||
cat = "bat --theme=base16 --color=always --paging=never --tabs=2 --wrap=never --plain";
|
||||
vim = "nvim";
|
||||
|
||||
# Default flags
|
||||
rm = "rm -i";
|
||||
chmod = "chmod -R";
|
||||
cp = "cp -R -i -v";
|
||||
mv = "mv -i -v";
|
||||
mkdir = "mkdir -p -v";
|
||||
df = "df -h";
|
||||
du = "du -h -s";
|
||||
dd = "dd status=progress bs=4M conv=fdatasync ";
|
||||
wgetpaste = "wgetpaste -Xx";
|
||||
sudo = "sudo "; # Makes sudo work with es
|
||||
ssh = "TERM=xterm ssh"; # Fixes some issues with ssh on some terminals
|
||||
wget = "wget -c";
|
||||
ping = "ping -c 5";
|
||||
ftp = "ftp -p";
|
||||
|
||||
# Misc alieses I use often
|
||||
|
||||
ports = "ss -tulanp";
|
||||
rmd = "rm -rf";
|
||||
mine = "sudo chown -R $(whoami):users";
|
||||
benchmark = "hyperfine --warmup 3 ";
|
||||
c = "clear";
|
||||
listen = "lsof -P -i -n";
|
||||
octal = "stat -c '%a %n'";
|
||||
f = "$(pay-respects zsh)";
|
||||
};
|
||||
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
};
|
||||
initContent = ''
|
||||
eval "$(pay-respects zsh --alias)"
|
||||
|
||||
# search history based on what's typed in the prompt
|
||||
autoload -U history-search-end
|
||||
zle -N history-beginning-search-backward-end history-search-end
|
||||
zle -N history-beginning-search-forward-end history-search-end
|
||||
bindkey "^[OA" history-beginning-search-backward-end
|
||||
bindkey "^[OB" history-beginning-search-forward-end
|
||||
|
||||
|
||||
# General completion behavior
|
||||
zstyle ':completion:*' completer _extensions _complete _approximate
|
||||
# Use cache
|
||||
zstyle ':completion:*' use-cache on
|
||||
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache"
|
||||
|
||||
|
||||
# Complete the alias
|
||||
zstyle ':completion:*' complete true
|
||||
# Autocomplete options
|
||||
zstyle ':completion:*' complete-options true
|
||||
|
||||
|
||||
# Completion matching control
|
||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||
zstyle ':completion:*' keep-prefix true
|
||||
|
||||
|
||||
# Group matches and describe
|
||||
zstyle ':completion:*' menu select
|
||||
zstyle ':completion:*' list-grouped false
|
||||
zstyle ':completion:*' list-separator '''
|
||||
zstyle ':completion:*' group-name '''
|
||||
zstyle ':completion:*' verbose yes
|
||||
zstyle ':completion:*:matches' group 'yes'
|
||||
zstyle ':completion:*:warnings' format '%F{red}%B-- No match for: %d --%b%f'
|
||||
zstyle ':completion:*:messages' format '%d'
|
||||
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
|
||||
zstyle ':completion:*:descriptions' format '[%d]'
|
||||
|
||||
|
||||
# Colors
|
||||
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
||||
|
||||
|
||||
# case insensitive tab completion
|
||||
zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
|
||||
zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
|
||||
zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
|
||||
zstyle ':completion:*:*:-command-:*:*' group-order aliases builtins functions commands
|
||||
zstyle ':completion:*' special-dirs true
|
||||
zstyle ':completion:*' squeeze-slashes true
|
||||
|
||||
|
||||
# Sort
|
||||
zstyle ':completion:*' sort false
|
||||
zstyle ":completion:*:git-checkout:*" sort false
|
||||
zstyle ':completion:*' file-sort modification
|
||||
zstyle ':completion:*:eza' sort false
|
||||
zstyle ':completion:complete:*:options' sort false
|
||||
zstyle ':completion:files' sort false
|
||||
|
||||
autoload -U compinit && compinit
|
||||
export CARAPACE_BRIDGES='zsh,fish,bash,inshellisense' # optional
|
||||
zstyle ':completion:*' format $'\e[2;37mCompleting %d\e[m'
|
||||
source <(carapace _carapace)
|
||||
zstyle ':completion:*:git:*' group-order 'main commands' 'alias commands' 'external commands'
|
||||
'';
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
fastfetch
|
||||
pay-respects
|
||||
];
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
20
modules/features/programs/cli/dev-devenv.nix
Normal file
20
modules/features/programs/cli/dev-devenv.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{ ... }:
|
||||
{
|
||||
config.dendritic.features.dev-devenv = {
|
||||
homeModules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
cachix
|
||||
devenv
|
||||
];
|
||||
|
||||
programs.direnv.enable = true;
|
||||
programs.direnv.nix-direnv.enable = true;
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
136
modules/features/programs/cli/filemanager-yazi.nix
Normal file
136
modules/features/programs/cli/filemanager-yazi.nix
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
{ ... }:
|
||||
{
|
||||
config.dendritic.features.filemanager-yazi = {
|
||||
homeModules = [
|
||||
(
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
shellWrapperName = "y";
|
||||
plugins = {
|
||||
starship = pkgs.yaziPlugins.starship;
|
||||
full-border = pkgs.yaziPlugins.full-border;
|
||||
chmod = pkgs.yaziPlugins.chmod;
|
||||
compress = pkgs.yaziPlugins.compress;
|
||||
smart-paste = pkgs.yaziPlugins.smart-paste;
|
||||
smart-enter = pkgs.yaziPlugins.smart-enter;
|
||||
smart-filter = pkgs.yaziPlugins.smart-filter;
|
||||
};
|
||||
settings = {
|
||||
yazi = {
|
||||
ratio = [
|
||||
1
|
||||
4
|
||||
3
|
||||
];
|
||||
sort_by = "natural";
|
||||
sort_sensitive = true;
|
||||
sort_reverse = false;
|
||||
sort_dir_first = true;
|
||||
linemode = "none";
|
||||
show_hidden = true;
|
||||
show_symlink = true;
|
||||
};
|
||||
|
||||
preview = {
|
||||
image_filter = "lanczos3";
|
||||
image_quality = 90;
|
||||
tab_size = 1;
|
||||
max_width = 600;
|
||||
max_height = 900;
|
||||
cache_dir = "";
|
||||
ueberzug_scale = 1;
|
||||
ueberzug_offset = [
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
];
|
||||
};
|
||||
|
||||
tasks = {
|
||||
micro_workers = 5;
|
||||
macro_workers = 10;
|
||||
bizarre_retry = 5;
|
||||
};
|
||||
};
|
||||
initLua = ''
|
||||
require("starship"):setup()
|
||||
require("full-border"):setup()
|
||||
require("smart-enter"):setup {
|
||||
open_multi = true,
|
||||
}
|
||||
'';
|
||||
keymap = {
|
||||
mgr.prepend_keymap = [
|
||||
{
|
||||
on = [
|
||||
"c"
|
||||
"a"
|
||||
"a"
|
||||
];
|
||||
run = "plugin compress";
|
||||
desc = "Archive selected files";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"c"
|
||||
"a"
|
||||
"p"
|
||||
];
|
||||
run = "plugin compress -p";
|
||||
desc = "Archive selected files (password)";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"c"
|
||||
"a"
|
||||
"h"
|
||||
];
|
||||
run = "plugin compress -ph";
|
||||
desc = "Archive selected files (password+header)";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"c"
|
||||
"a"
|
||||
"l"
|
||||
];
|
||||
run = "plugin compress -l";
|
||||
desc = "Archive selected files (compression level)";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"c"
|
||||
"a"
|
||||
"u"
|
||||
];
|
||||
run = "plugin compress -phl";
|
||||
desc = "Archive selected files (password+header+level)";
|
||||
}
|
||||
{
|
||||
on = "p";
|
||||
run = "plugin smart-paste";
|
||||
desc = "Paste into the hovered directory or CWD";
|
||||
}
|
||||
{
|
||||
on = "l";
|
||||
run = "plugin smart-enter";
|
||||
desc = "Enter the child directory, or open the file";
|
||||
}
|
||||
{
|
||||
on = "F";
|
||||
run = "plugin smart-filter";
|
||||
desc = "Smart filter";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
46
modules/features/programs/cli/git-lazygit.nix
Normal file
46
modules/features/programs/cli/git-lazygit.nix
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
{ ... }:
|
||||
{
|
||||
config.dendritic.features.git-lazygit = {
|
||||
homeModules = [
|
||||
(
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
accent = "#${config.lib.stylix.colors.base0D}";
|
||||
muted = "#${config.lib.stylix.colors.base03}";
|
||||
in
|
||||
{
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
settings = lib.mkForce {
|
||||
|
||||
disableStartupPopups = true;
|
||||
notARepository = "skip";
|
||||
promptToReturnFromSubprocess = false;
|
||||
update.method = "never";
|
||||
|
||||
git = {
|
||||
commit.signOff = true;
|
||||
overrideGpg = true;
|
||||
};
|
||||
gui = {
|
||||
theme = {
|
||||
activeBorderColor = [
|
||||
accent
|
||||
"bold"
|
||||
];
|
||||
inactiveBorderColor = [ muted ];
|
||||
};
|
||||
showListFooter = false;
|
||||
showRandomTip = false;
|
||||
showCommandLog = false;
|
||||
showBottomLine = false;
|
||||
nerdFontsVersion = "3";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
38
modules/features/programs/cli/terminal-ghostty.nix
Normal file
38
modules/features/programs/cli/terminal-ghostty.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{ ... }:
|
||||
{
|
||||
config.dendritic.features.terminal-ghostty = {
|
||||
homeModules = [
|
||||
(
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
installVimSyntax = true;
|
||||
settings = {
|
||||
window-padding-x = 10;
|
||||
window-padding-y = 10;
|
||||
auto-update = "off";
|
||||
working-directory = "home";
|
||||
window-inherit-working-directory = false; # avoid inheritance
|
||||
keybinds = [ ];
|
||||
# background-opacity = 0.8;
|
||||
background-opacity = 1;
|
||||
confirm-close-surface = false;
|
||||
font-family = lib.mkForce "Comic Code Ligatures";
|
||||
# font-family = lib.mkForce "Terminus";
|
||||
font-size = 14;
|
||||
gtk-titlebar = false;
|
||||
# theme = "Teerb";
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
ueberzugpp
|
||||
terminus_font_ttf
|
||||
];
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
27
modules/features/programs/proton.nix
Normal file
27
modules/features/programs/proton.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{ ... }:
|
||||
{
|
||||
config.dendritic.features.proton.homeModules = [
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
proton-vpn
|
||||
proton-pass
|
||||
proton-authenticator
|
||||
];
|
||||
|
||||
# Fix Proton Authenticator desktop entry
|
||||
xdg.desktopEntries = {
|
||||
"Proton Authenticator" = {
|
||||
name = "Proton Authenticator";
|
||||
exec = "env WEBKIT_DISABLE_COMPOSITING_MODE=1 ${pkgs.proton-authenticator}/bin/proton-authenticator";
|
||||
icon = "proton-authenticator";
|
||||
type = "Application";
|
||||
categories = [ "Utility" ];
|
||||
terminal = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue