diff --git a/home-manager/configs/alacritty.nix b/home-manager/configs/alacritty.nix index d3813f2..6e576c4 100644 --- a/home-manager/configs/alacritty.nix +++ b/home-manager/configs/alacritty.nix @@ -3,19 +3,36 @@ { programs.alacritty = { enable = true; + settings = { + window = { + padding = { x = 4; y = 8; }; + decorations = "full"; + opacity = 1; + startup_mode = "Windowed"; + title = "Alacritty"; + dynamic_title = true; + decorations_theme_variant = "None"; + }; + env = { - "TERM" = "alacritty"; + TERM = "xterm-256color"; }; terminal.shell.program = "zsh"; font = { - size = 12; + size = 14; normal.family = font; bold.family = font; italic.family = font; }; + + cursor = { + style = "Block"; + }; + + live_config_reload = true; }; }; } diff --git a/home-manager/configs/firefox.nix b/home-manager/configs/firefox.nix new file mode 100644 index 0000000..83b1225 --- /dev/null +++ b/home-manager/configs/firefox.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + programs.firefox = { + enable = true; + package = pkgs.firefox.override { + cfg = { + # Gnome shell native connector + enableGnomeExtensions = true; + }; + }; + }; +} diff --git a/home-manager/configs/git.nix b/home-manager/configs/git.nix index 70f26b9..2adead7 100644 --- a/home-manager/configs/git.nix +++ b/home-manager/configs/git.nix @@ -20,6 +20,9 @@ user = { signingKey = "~/.ssh/id_ed25519.pub"; }; + pull = { + rebase = true; + }; }; }; } diff --git a/home-manager/configs/zsh.nix b/home-manager/configs/zsh.nix index 36eee94..f355768 100644 --- a/home-manager/configs/zsh.nix +++ b/home-manager/configs/zsh.nix @@ -7,14 +7,26 @@ autosuggestion.enable = true; syntaxHighlighting.enable = true; + initExtraFirst = '' + [[ "$TERM" == "linux" ]] && return + ''; + + initExtra = '' + source <(nh completions --shell zsh) + eval "$(zoxide init zsh)" + [[ -z "$TERM" ]] && exec tmux + ''; + shellAliases = { - update = "sudo nixos-rebuild switch --flake ~/.dotfiles && home-manager switch --flake ~/.dotfiles"; ".." = "cd .."; ls = "exa"; vim = "nvim"; grep = "rg"; du = "dust"; rm = "rip"; + cp = "xcp"; + update-os = "nh os switch ~/.dotfiles"; + update-home = "nh home switch ~/.dotfiles"; }; history = { diff --git a/home-manager/dotfiles/bottom/bottom.toml b/home-manager/dotfiles/bottom/bottom.toml new file mode 100644 index 0000000..bbe5fee --- /dev/null +++ b/home-manager/dotfiles/bottom/bottom.toml @@ -0,0 +1,189 @@ +# This is a default config file for bottom. All of the settings are commented +# out by default; if you wish to change them uncomment and modify as you see +# fit. + +# This group of options represents a command-line flag/option. Flags explicitly +# added when running (ie: btm -a) will override this config file if an option +# is also set here. + +[flags] +# Whether to hide the average cpu entry. +#hide_avg_cpu = false +# Whether to use dot markers rather than braille. +#dot_marker = false +# The update rate of the application. +rate = "250ms" +# Whether to put the CPU legend to the left. +#left_legend = false +# Whether to set CPU% on a process to be based on the total CPU or just current usage. +#current_usage = false +# Whether to set CPU% on a process to be based on the total CPU or per-core CPU% (not divided by the number of cpus). +#unnormalized_cpu = false +# Whether to group processes with the same name together by default. +group_processes = true +# Whether to make process searching case sensitive by default. +#case_sensitive = false +# Whether to make process searching look for matching the entire word by default. +#whole_word = false +# Whether to make process searching use regex by default. +#regex = false +# Defaults to Celsius. Temperature is one of: +#temperature_type = "k" +#temperature_type = "f" +temperature_type = "c" +#temperature_type = "kelvin" +#temperature_type = "fahrenheit" +#temperature_type = "celsius" +# The default time interval (in milliseconds). +#default_time_value = "60s" +# The time delta on each zoom in/out action (in milliseconds). +#time_delta = 15000 +# Hides the time scale. +#hide_time = false +# Override layout default widget +#default_widget_type = "proc" +#default_widget_count = 1 +# Expand selected widget upon starting the app +#expanded_on_startup = true +# Use basic mode +#basic = false +# Use the old network legend style +#use_old_network_legend = false +# Remove space in tables +#hide_table_gap = false +# Show the battery widgets +battery = true +# Disable mouse clicks +#disable_click = false +# Built-in themes. Valid values are "default", "default-light", "gruvbox", "gruvbox-light", "nord", "nord-light" +#color = "default" +# Show memory values in the processes widget as values by default +mem_as_value = true +# Show tree mode by default in the processes widget. +#tree = false +# Shows an indicator in table widgets tracking where in the list you are. +#show_table_scroll_position = false +# Show processes as their commands by default in the process widget. +#process_command = false +# Displays the network widget with binary prefixes. +#network_use_binary_prefix = false +# Displays the network widget using bytes. +network_use_bytes = true +# Displays the network widget with a log scale. +#network_use_log = false +# Hides advanced options to stop a process on Unix-like systems. +#disable_advanced_kill = false +# Shows GPU(s) memory +enable_gpu_memory = true +# Shows cache and buffer memory +enable_cache_memory = true +# How much data is stored at once in terms of time. +#retention = "10m" + +# These are flags around the process widget. + +#[processes] +#columns = ["PID", "Name", "CPU%", "Mem%", "R/s", "W/s", "T.Read", "T.Write", "User", "State"] + +# These are all the components that support custom theming. Note that colour support +# will depend on terminal support. + +#[colors] # Uncomment if you want to use custom colors +# Represents the colour of table headers (processes, CPU, disks, temperature). +#table_header_color="LightBlue" +# Represents the colour of the label each widget has. +#widget_title_color="Gray" +# Represents the average CPU color. +#avg_cpu_color="Red" +# Represents the colour the core will use in the CPU legend and graph. +#cpu_core_colors=["LightMagenta", "LightYellow", "LightCyan", "LightGreen", "LightBlue", "LightRed", "Cyan", "Green", "Blue", "Red"] +# Represents the colour RAM will use in the memory legend and graph. +#ram_color="LightMagenta" +# Represents the colour SWAP will use in the memory legend and graph. +#swap_color="LightYellow" +# Represents the colour ARC will use in the memory legend and graph. +#arc_color="LightCyan" +# Represents the colour the GPU will use in the memory legend and graph. +#gpu_core_colors=["LightGreen", "LightBlue", "LightRed", "Cyan", "Green", "Blue", "Red"] +# Represents the colour rx will use in the network legend and graph. +#rx_color="LightCyan" +# Represents the colour tx will use in the network legend and graph. +#tx_color="LightGreen" +# Represents the colour of the border of unselected widgets. +#border_color="Gray" +# Represents the colour of the border of selected widgets. +#highlighted_border_color="LightBlue" +# Represents the colour of most text. +#text_color="Gray" +# Represents the colour of text that is selected. +#selected_text_color="Black" +# Represents the background colour of text that is selected. +#selected_bg_color="LightBlue" +# Represents the colour of the lines and text of the graph. +#graph_color="Gray" +# Represents the colours of the battery based on charge +#high_battery_color="green" +#medium_battery_color="yellow" +#low_battery_color="red" + +# Layout - layouts follow a pattern like this: +# [[row]] represents a row in the application. +# [[row.child]] represents either a widget or a column. +# [[row.child.child]] represents a widget. +# +# All widgets must have the type value set to one of ["cpu", "mem", "proc", "net", "temp", "disk", "empty"]. +# All layout components have a ratio value - if this is not set, then it defaults to 1. +# The default widget layout: +#[[row]] +# ratio=30 +# [[row.child]] +# type="cpu" +#[[row]] +# ratio=40 +# [[row.child]] +# ratio=4 +# type="mem" +# [[row.child]] +# ratio=3 +# [[row.child.child]] +# type="temp" +# [[row.child.child]] +# type="disk" +#[[row]] +# ratio=30 +# [[row.child]] +# type="net" +# [[row.child]] +# type="proc" +# default=true + + +# Filters - you can hide specific temperature sensors, network interfaces, and disks using filters. This is admittedly +# a bit hard to use as of now, and there is a planned in-app interface for managing this in the future: +#[disk_filter] +#is_list_ignored = true +#list = ["/dev/sda\\d+", "/dev/nvme0n1p2"] +#regex = true +#case_sensitive = false +#whole_word = false + +#[mount_filter] +#is_list_ignored = true +#list = ["/mnt/.*", "/boot"] +#regex = true +#case_sensitive = false +#whole_word = false + +#[temp_filter] +#is_list_ignored = true +#list = ["cpu", "wifi"] +#regex = false +#case_sensitive = false +#whole_word = false + +#[net_filter] +#is_list_ignored = true +#list = ["virbr0.*"] +#regex = true +#case_sensitive = false +#whole_word = false diff --git a/home-manager/dotfiles/tmux/tmux.conf b/home-manager/dotfiles/tmux/tmux.conf new file mode 100644 index 0000000..6a50013 --- /dev/null +++ b/home-manager/dotfiles/tmux/tmux.conf @@ -0,0 +1,55 @@ +set-option -sa terminal-overrides ",xterm*:Tc" +set -g mouse on + +# Vim style pane selection +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R + +# Start windows and panes at 1, not 0 +set -g base-index 1 +set -g pane-base-index 1 +set-window-option -g pane-base-index 1 +set-option -g renumber-windows on + +# Use Alt-arrow keys without prefix key to switch panes +bind -n M-Left select-pane -L +bind -n M-Right select-pane -R +bind -n M-Up select-pane -U +bind -n M-Down select-pane -D + +# Shift arrow to switch windows +bind -n S-Left previous-window +bind -n S-Right next-window + +# Shift Alt vim keys to switch windows +bind -n M-H previous-window +bind -n M-L next-window + +set -g @catppuccin_flavour 'mocha' +set -g @tokyo-night-tmux_show_datetime 0 +set -g @tokyo-night-tmux_show_path 1 +set -g @tokyo-night-tmux_path_format relative +set -g @tokyo-night-tmux_window_id_style dsquare +set -g @tokyo-night-tmux_window_id_style dsquare +set -g @tokyo-night-tmux_show_git 0 + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'christoomey/vim-tmux-navigator' +set -g @plugin 'dreamsofcode-io/catppuccin-tmux' +set -g @plugin 'tmux-plugins/tmux-yank' + +run '~/.tmux/plugins/tpm/tpm' + +# set vi-mode +set-window-option -g mode-keys vi +# keybindings +bind-key -T copy-mode-vi v send-keys -X begin-selection +bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle +bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel + +bind '"' split-window -v -c "#{pane_current_path}" +bind % split-window -h -c "#{pane_current_path}" +bind c new-window -c "#{pane_current_path}" diff --git a/home-manager/home.nix b/home-manager/home.nix index d0bb61c..635dd96 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -24,6 +24,7 @@ in # Custom import for username and email (import ./configs/git.nix { inherit pkgs config lib; userEmail = email; userName = fullName; }) + ./configs/firefox.nix ./configs/ssh.nix ./configs/nvim.nix ./configs/starship.nix @@ -41,6 +42,8 @@ in }; }; + fonts.fontconfig.enable = true; + home = { # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion stateVersion = "24.05"; @@ -52,7 +55,15 @@ in NIXOS_OZONE_WL = "1"; }; + file = { + "${config.xdg.configHome}/tmux".source = ./dotfiles/tmux; + "${config.xdg.configHome}/bottom".source = ./dotfiles/bottom; + }; + packages = with pkgs; [ + nh + bottom + lazygit neofetch mission-center discord @@ -60,8 +71,12 @@ in ripgrep rm-improved dust - firefox gh + zoxide + xcp + unzip + + (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) ]; }; diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 71b4f6b..e9ee760 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -103,10 +103,7 @@ # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ - neovim - git pciutils - unzip ]; programs._1password.enable = true;