dotfiles/home/home.nix
2024-04-01 03:28:49 +03:00

488 lines
16 KiB
Nix

{ stable, unstable, inputs, home, config, lib, pkgs, specialArgs, ... }:
{
home.username = "delta";
home.stateVersion = "23.11";
imports = [
./theme.nix
];
#services.blueman-applet.enable = true;
#services.network-manager-applet.enable = true;
programs.vscode = {
enable = true;
package = pkgs.vscode;
extensions = with pkgs.vscode-extensions; [
matklad.rust-analyzer
jnoortheen.nix-ide
b4dm4n.vscode-nixpkgs-fmt
usernamehw.errorlens
eamodio.gitlens
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "remote-ssh-edit";
publisher = "ms-vscode-remote";
version = "0.47.2";
sha256 = "1hp6gjh4xp2m1xlm1jsdzxw9d8frkiidhph6nvl24d0h8z34w49g";
}
{
name = "popping-and-locking-vscode";
publisher = "hedinne";
version = "2.0.11";
sha256 = "7ZH9l4jySPo1jMZnylTPK6o+XZnxUtrpYIiY9xVPuRw=";
}
{
name = "bracket-select";
publisher = "chunsen";
version = "2.0.2";
sha256 = "sha256-2+42NJWAI0cz+RvmihO2v8J/ndAHvV3YqMExvnl46m4=";
}
];
enableExtensionUpdateCheck = false;
enableUpdateCheck = false;
userSettings = {
"files.autoSave" = "onFocusChange";
"window.titleBarStyle" = "custom";
"workbench.colorTheme" = "Popping and Locking";
"terminal.external.linuxExec" = "kitty";
"editor.guides.bracketPairs" = "active";
"editor.bracketPairColorization.independentColorPoolPerBracketType" = true;
"editor.fontFamily" = "'FiraCode Nerd Font'";
"editor.fontLigatures" = "'ss01', 'ss02', 'ss06', 'ss08', 'cv14', 'cv04' , 'tnum'";
"editor.fontWeight" = "450";
"nix.enableLanguageServer"= true;
#"nix.serverPath" = "${pkgs.nil}/bin/nil";
"nix.serverPath" = "${pkgs.nixd}/bin/nixd";
"nix.serverSettings" = {
nil = {
formatting = {
command = [ "${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt" ];
};
};
};
};
};
programs.git = {
enable = true;
userName = "delta";
userEmail = "delta@example.com";
};
#xdg.desktopEntries = {
# maestral = {
# name = "Maestral";
# icon = "maestral";
# exec =
# ''sh -c "QT_QPA_PLATFORM=xcb ${pkgs.maestral-gui}/bin/maestral_qt"'';
# type = "Application";
# };
#};
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [ obs-pipewire-audio-capture ];
};
programs.mpv = {
enable = true;
config = {
hwdec = "auto";
slang = "en,eng";
alang = "en,eng";
subs-fallback = "default";
subs-with-matching-audio = "yes";
save-position-on-quit = "yes";
};
scripts = with pkgs; [ mpvScripts.autoload mpvScripts.cutter ];
scriptOpts = {
autoload = {
disabled = "no";
images = "no";
videos = "yes";
audio = "yes";
additional_image_exts = "list,of,ext";
additional_video_exts = "list,of,ext";
additional_audio_exts = "list,of,ext";
ignore_hidden = "yes";
};
};
};
programs.kitty = {
enable = true;
shellIntegration.enableFishIntegration = false;
settings = {
background = "#171717";
foreground = "#DCDCCC";
background_opacity = "0.8";
remember_window_size = "yes";
hide_window_decorations = "yes";
remote_control_password = "kitty-notification-password-fish ls";
allow_remote_control = "password";
font_family= "FiraCode Nerd Font"; #FiraCode Nerd Font Ret
font_features = "FiraCodeNF-Reg +ss01 +ss02 +ss06 +ss08 +cv14 +cv03 +tnum";
color0 = "#3F3F3F";
color1 = "#705050";
color2 = "#60B48A";
color3 = "#DFAF8F";
color4 = "#9AB8D7";
color5 = "#DC8CC3";
color6 = "#8CD0D3";
color7 = "#DCDCCC";
color8 = "#709080";
color9 = "#DCA3A3";
color10 = "#72D5A3";
color11 = "#F0DFAF";
color12 = "#94BFF3";
color13 = "#EC93D3";
color14 = "#93E0E3";
color15 = "#FFFFFF";
};
};
programs.ssh = {
enable = true;
matchBlocks = {
"intelnuc" = {
hostname = "192.168.3.53";
};
"huanan" = {
hostname = "192.168.3.106";
};
};
};
programs.chromium = {
enable = true;
package = pkgs.chromium;
#"ifconfig.co/json"
commandLineArgs = [
"--ignore-gpu-blocklist"
"--disable-gpu-driver-bug-workarounds"
#"--use-gl=egl"
"--enable-gpu-rasterization"
"--enable-zero-copy"
"--enable-features=VaapiVideoDecodeLinuxGL,VaapiVideoDecoder,VaapiVideoEncoder,CanvasOopRasterization,UseOzonePlatform"
#"--disable-features=UseChromeOSDirectVideoDecoder"
#"--use-angle=vulkan"
#"--enable-unsafe-webgpu"
"--enable-features=Vulkan"
"--enable-features=TouchpadOverscrollHistoryNavigation"
];
dictionaries = [
pkgs.hunspellDictsChromium.en_US
];
extensions = [
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; } # vimium
{
id = "dcpihecpambacapedldabdbpakmachpb"; # bypasss paywalls
updateUrl = "https://raw.githubusercontent.com/iamadamdev/bypass-paywalls-chrome/master/src/updates/updates.xml";
}
#{
# id = "aaaaaaaaaabbbbbbbbbbcccccccccc";
# crxPath = "/home/share/extension.crx";
# version = "1.0";
#}
];
};
programs.helix = {
enable = true;
languages.language = [{
name = "nix";
auto-format = true;
formatter.command = "${pkgs.nixfmt}/bin/nixfmt";
}];
themes = {
fleet_dark_transparent = {
"inherits" = "fleet_dark";
"ui.background" = { };
};
};
settings = {
theme = "fleet_dark_transparent";
editor = {
line-number = "relative";
mouse = true;
lsp.display-messages = true;
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
file-picker.hidden = false;
};
keys.normal = {
space.space = "file_picker";
space.w = ":w";
space.q = ":q";
esc = [ "collapse_selection" "keep_primary_selection" ];
};
};
};
#programs.dircolors.enable = true;
home.file.".config/btop/btop.conf".text = ''
#? Config file for btop v. 1.3.2
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "adapta"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = True
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 100
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = False
#* Show processes as a tree.
proc_tree = False
#* Use the cpu graph colors in the process list.
proc_colors = True
#* Use a darkening gradient in the process list.
proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
#* Show cpu graph for each process.
proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
#* Show proc box on left side of screen instead of right.
proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = False
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "iowait"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
#* Shows the system uptime in the CPU box.
show_uptime = True
#* Show cpu temperature.
check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
#* Show CPU frequency.
show_cpu_freq = True
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
#* Show mem box below net box instead of above.
mem_below_net = False
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
#* If swap memory should be shown in memory box.
show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
#* If mem box should be split to also show disks info.
show_disks = True
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
#* Starts with the Network Interface specified here.
net_iface = ""
#* Show battery stats in top right if battery is present.
show_battery = True
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Show power stats of battery next to charge indicator.
show_battery_watts = True
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = True
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = True
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""
'';
}