Merge branch 'main' of github.com:GHOSCHT/nix-config

Configured 2 machines asynchronously. Now merging states together.
This commit is contained in:
GHOSCHT 2023-11-06 21:38:15 +01:00
commit 3b58fe0b41
No known key found for this signature in database
23 changed files with 1790 additions and 17 deletions

View file

@ -7,12 +7,13 @@
vars,
...
}: {
imports = (import ../modules/desktops) ++ (import ../modules/shell);
imports =
(import ../modules/desktops) ++ (import ../modules/shell) ++ [../modules/programs/librewolf.nix ../modules/programs/alacritty.nix] ++ (import ../modules/theming) ++ (import ../modules/coding);
users.users.${vars.user} = {
# System User
isNormalUser = true;
extraGroups = ["wheel" "video" "audio" "camera" "networkmanager" "lp" "scanner" "kvm" "libvirtd" "i2c"];
extraGroups = ["wheel" "video" "audio" "camera" "networkmanager" "lp" "scanner" "kvm" "libvirtd" "i2c" "tty" "dialout"];
};
boot.supportedFilesystems = ["ntfs"];
@ -23,7 +24,6 @@
programs.fish.enable = true;
services.flatpak.enable = true;
# Enable the X11 windowing system.
# services.xserver.enable = true;
@ -31,13 +31,17 @@
# Enable the KDE Plasma Desktop Environment.
services.xserver.displayManager.sddm.enable = true;
# Configure keymap in X11
# services.xserver = {
# layout = "de";
# xkbVariant = "";
# };
environment.defaultCursor = {
enable = true;
theme = "breeze_cursors";
};
time.timeZone = "Europe/Berlin";
i18n = {
defaultLocale = "en_US.UTF-8";
@ -79,6 +83,7 @@
source-code-pro
ttf_bitstream_vera
inter
noto-fonts-cjk-sans
(nerdfonts.override {
# Nerdfont Icons override
fonts = [
@ -121,11 +126,10 @@
pavucontrol # Audio Control
pipewire # Audio Server/Control
pulseaudio # Audio Server/Control
jellyfin-media-player
# Apps
appimage-run # Runs AppImages on NixOS
fcitx5
fcitx5-mozc
webcord
signal-desktop
alacritty
@ -155,6 +159,7 @@
feishin
sddm
electron-mail
xournalpp
]);
};
@ -162,6 +167,14 @@
dconf.enable = true;
};
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-mozc
fcitx5-gtk
];
};
services = {
printing = {
# CUPS

View file

@ -45,16 +45,28 @@
# hyprland.enable = true;
kde.enable = true;
awesome.enable = true;
# home-manager.users.${vars.user} = {
# services.kdeconnect.enable = true;
# };
nixpkgs.config.librewolf.enablePlasmaBrowserIntegration = true;
programs.kdeconnect.enable = true;
environment = {
systemPackages = with pkgs; [
# System-Wide Packages
discord # Messaging
obs-studio # Live Streaming
simple-scan # Scanning
easyeffects
firefox
heroic
];
systemPackages = with pkgs;
[
# System-Wide Packages
discord # Messaging
obs-studio # Live Streaming
simple-scan # Scanning
firefox
heroic
nextcloud-client
anki
easyeffects
qpwgraph
calibre
]
++ (with unstable; [
libsForQt5.kdeconnect-kde
]);
};
}

View file

@ -0,0 +1,4 @@
[
./nvim.nix
./vscode.nix
]

30
modules/coding/nvim.nix Normal file
View file

@ -0,0 +1,30 @@
{
config,
lib,
pkgs,
vars,
...
}: let
in {
home-manager.users.${vars.user} = {
home.file.".config/nvim/lua/custom/" = {
source = ../../rsc/config/nvim;
recursive = true;
};
};
environment.systemPackages = with pkgs; [
gcc
black
python310Packages.debugpy # is this working?
mypy
ruff
nodePackages.pyright
clang-tools_16
rnix-lsp
rust-analyzer
nodePackages.eslint_d
nodePackages.jsonlint
alejandra
];
}

66
modules/coding/vscode.nix Normal file
View file

@ -0,0 +1,66 @@
{
config,
lib,
pkgs,
vars,
...
}: let
in {
home-manager.users.${vars.user} = {
programs.vscode = {
enable = true;
package = pkgs.vscodium;
enableUpdateCheck = false;
extensions = with pkgs.vscode-extensions; [
catppuccin.catppuccin-vsc
pkief.material-icon-theme
vscodevim.vim
bbenoist.nix
ms-python.python
ms-toolsai.jupyter
ms-toolsai.jupyter-renderers
ms-toolsai.jupyter-keymap
];
userSettings = {
#Theming
"workbench.colorTheme" = "Catppuccin Mocha";
"catppuccin.accentColor" = "teal";
"workbench.iconTheme" = "material-icon-theme";
"window.menuBarVisibility" = "toggle";
"editor.minimap.autohide" = false;
#Extensions - General
"extensions.autoCheckUpdates" = false;
"extensions.autoUpdate" = false;
# Startup
"workbench.startupEditor" = "none";
# Vim
"editor.lineNumbers" = "relative";
};
keybindings = [
# Navigating Autosuggest and Quick Open entries
{
"key" = "ctrl+j";
"command" = "selectNextSuggestion";
"when" = "suggestWidgetVisible";
}
{
"key" = "ctrl+k";
"command" = "selectPrevSuggestion";
"when" = "suggestWidgetVisible";
}
{
"key" = "ctrl+j";
"command" = "workbench.action.quickOpenSelectNext";
"when" = "inQuickOpen";
}
{
"key" = "ctrl+k";
"command" = "workbench.action.quickOpenSelectPrevious";
"when" = "inQuickOpen";
}
];
};
};
# programs.vscode.package = pkgs.vscodium.fhsWithPackages (ps: with ps; [rustup zlib]);
}

View file

@ -0,0 +1,14 @@
{
config,
lib,
pkgs,
vars,
...
}: {
home-manager.users.${vars.user} = {
home.file.".config/alacritty" = {
source = ../../rsc/config/alacritty;
recursive = true;
};
};
}

View file

@ -0,0 +1,23 @@
{
config,
lib,
pkgs,
vars,
...
}: {
home-manager.users.${vars.user} = {
programs.librewolf = {
enable = true;
settings = {
"identity.fxaccounts.enabled" = true;
"browser.sessionstore.enabled" = false;
"browser.startup.page" = 1;
"browser.sessionstore.resume_session_once" = true;
"browser.sessionstore.resume_from_crash" = false;
"middlemouse.paste" = false;
"general.autoScroll" = true;
"security.OCSP.require" = false;
};
};
};
}

View file

@ -0,0 +1,44 @@
# Module to set a default cursor theme
{
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.environment.defaultCursor;
indexThemeText = theme: generators.toINI {} {"icon theme" = {Inherits = "${theme}";};};
mkDefaultCursorFile = theme:
pkgs.writeTextDir
"share/icons/default/index.theme"
"${indexThemeText theme}";
defaultCursorPkg = mkDefaultCursorFile cfg.theme;
in {
options = {
environment.defaultCursor = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to set a default cursor theme for graphical environments.
'';
};
theme = mkOption {
type = types.str;
default = "";
example = "Adwaita";
description = "The name of the defualt cursor theme.";
};
};
};
config = mkIf cfg.enable {
environment.systemPackages = [
defaultCursorPkg
];
};
}

View file

@ -0,0 +1,5 @@
[
# ./gtk.nix
# ./qt.nix
./cursor.nix
]

20
modules/theming/gtk.nix Normal file
View file

@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
vars,
...
}: {
home-manager.users.${vars.user} = {
gtk.enable = true;
# gtk.cursorTheme.package = pkgs.bibata-cursors;
# gtk.cursorTheme.name = "Bibata-Modern-Ice";
gtk.theme.package = pkgs.adw-gtk3;
gtk.theme.name = "adw-gtk3";
# gtk.iconTheme.package = gruvboxPlus;
# gtk.iconTheme.name = "GruvboxPlus";
};
}

31
modules/theming/qt.nix Normal file
View file

@ -0,0 +1,31 @@
{
config,
lib,
pkgs,
vars,
...
}: {
environment.systemPackages = with pkgs; [
libsForQt5.qtstyleplugins
libsForQt5.qtstyleplugin-kvantum
#other stuff
];
home-manager.users.${vars.user} = {
qt.enable = true;
# platform theme "gtk" or "gnome"
qt.platformTheme = "gtk";
# name of the qt theme
qt.style.name = "adwaita";
# detected automatically:
# adwaita, adwaita-dark, adwaita-highcontrast,
# adwaita-highcontrastinverse, breeze,
# bb10bright, bb10dark, cde, cleanlooks,
# gtk2, motif, plastique
# package to use
qt.style.package = pkgs.adwaita-qt;
};
}

View file

@ -0,0 +1,860 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator.
# Import additional configuration files
#
# Imports are loaded in order, skipping all missing files, with the importing
# file being loaded last. If a field is already present in a previous import, it
# will be replaced.
#
# All imports must either be absolute paths starting with `/`, or paths relative
# to the user's home directory starting with `~/`.
#import:
# - /path/to/alacritty.yml
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty itself.
#env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use `alacritty` if it is
# available, otherwise `xterm-256color` is used.
#TERM: alacritty
window:
# Window dimensions (changes require restart)
#
# Number of lines/columns (not pixels) in the terminal. Both lines and columns
# must be non-zero for this to take effect. The number of columns must be at
# least `2`, while using a value of `0` for columns and lines will fall back
# to the window manager's recommended size
#dimensions:
# columns: 0
# lines: 0
# Window position (changes require restart)
#
# Specified in number of pixels.
# If the position is not set, the window manager will handle the placement.
#position:
# x: 0s
# y: 0
# Window padding (changes require restart)
#
# Blank space added around the window in pixels. This padding is scaled
# by DPI and the specified value is always added at both opposing sides.
padding:
x: 0
y: 5
# Spread additional padding evenly around the terminal content.
#dynamic_padding: false
# Window decorations
#
# Values for `decorations`:
# - full: Borders and title bar
# - none: Neither borders nor title bar
#
# Values for `decorations` (macOS only):
# - transparent: Title bar, transparent background and title bar buttons
# - buttonless: Title bar, transparent background and no title bar buttons
#decorations: full
# Background opacity
#
# Window opacity as a floating point number from `0.0` to `1.0`.
# The value `0.0` is completely transparent and `1.0` is opaque.
opacity: 0.9
# Startup Mode (changes require restart)
#
# Values for `startup_mode`:
# - Windowed
# - Maximized
# - Fullscreen
#
# Values for `startup_mode` (macOS only):
# - SimpleFullscreen
#startup_mode: Windowed
# Window title
#title: Alacritty
# Allow terminal applications to change Alacritty's window title.
#dynamic_title: true
# Window class (Linux/BSD only):
#class:
# Application instance name
#instance: Alacritty
# General application class
#general: Alacritty
# Decorations theme variant (Linux/BSD only)
#
# Override the variant of the GTK theme/Wayland client side decorations.
# Commonly supported values are `dark` and `light`. Set this to `None` to use
# the default theme variant.
#decorations_theme_variant: None
#scrolling:
# Maximum number of lines in the scrollback buffer.
# Specifying '0' will disable scrolling.
#history: 10000
# Scrolling distance multiplier.
#multiplier: 3
# Font configuration
font:
normal:
family: JetBrains Mono Nerd Font
style: Medium
bold:
family: JetBrains Mono Nerd Font
style: Bold
italic:
family: JetBrains Mono Nerd Font
style: MediumItalic
# Point size
#size: 11.0
# Offset is the extra space around each character. `offset.y` can be thought
# of as modifying the line spacing, and `offset.x` as modifying the letter
# spacing.
#offset:
# x: 0
# y: 0
# Glyph offset determines the locations of the glyphs within their cells with
# the default being at the bottom. Increasing `x` moves the glyph to the
# right, increasing `y` moves the glyph upward.
#glyph_offset:
# x: 0
# y: 0
# Use built-in font for box drawing characters.
#
# If `true`, Alacritty will use a custom built-in font for box drawing
# characters (Unicode points 2500 - 259f).
#
#builtin_box_drawing: true
# If `true`, bold text is drawn using the bright color variants.
#draw_bold_text_with_bright_colors: false
# Colors (Tomorrow Night)
colors:
# Default colors
primary:
#background: '#24273A'
background: '#1e1e2e'
foreground: '#CAD3F5'
# Bright and dim foreground colors
#
# The dimmed foreground color is calculated automatically if it is not
# present. If the bright foreground color is not set, or
# `draw_bold_text_with_bright_colors` is `false`, the normal foreground
# color will be used.
#dim_foreground: '#828482'
#bright_foreground: '#eaeaea'
# Cursor colors
#
# Colors which should be used to draw the terminal cursor.
#
# Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff.
#cursor:
# text: CellBackground
# cursor: CellForeground
# Vi mode cursor colors
#
# Colors for the cursor when the vi mode is active.
#
# Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff.
#vi_mode_cursor:
# text: CellBackground
# cursor: CellForeground
# Search colors
#
# Colors used for the search bar and match highlighting.
#search:
# Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff.
#matches:
# foreground: '#000000'
# background: '#ffffff'
#focused_match:
# foreground: '#ffffff'
# background: '#000000'
# Keyboard hints
#hints:
# First character in the hint label
#
# Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff.
#start:
# foreground: '#1d1f21'
# background: '#e9ff5e'
# All characters after the first one in the hint label
#
# Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff.
#end:
# foreground: '#e9ff5e'
# background: '#1d1f21'
# Line indicator
#
# Color used for the indicator displaying the position in history during
# search and vi mode.
#
# By default, these will use the opposing primary color.
#line_indicator:
# foreground: None
# background: None
# Footer bar
#
# Color used for the footer bar on the bottom, used by search regex input,
# hyperlink URI preview, etc.
#
#footer_bar:
# background: '#c5c8c6'
# foreground: '#1d1f21'
# Selection colors
#
# Colors which should be used to draw the selection area.
#
# Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff.
#selection:
# text: CellBackground
# background: CellForeground
# Normal colors
normal:
black: '#494D64'
red: '#ED8796'
green: '#A6DA95'
yellow: '#EED49F'
blue: '#8AADF4'
magenta: '#F5BDE6'
cyan: '#8BD5CA'
white: '#B8C0E0'
# Bright colors
bright:
black: '#5B6078'
red: '#ED8796'
green: '#A6DA95'
yellow: '#EED49F'
blue: '#8AADF4'
magenta: '#F5BDE6'
cyan: '#8BD5CA'
white: '#A5ADCB'
# Dim colors
#
# If the dim colors are not set, they will be calculated automatically based
# on the `normal` colors.
dim:
black: '#131415'
red: '#864343'
green: '#777c44'
yellow: '#9e824c'
blue: '#556a7d'
magenta: '#75617b'
cyan: '#5b7d78'
white: '#828482'
# Indexed Colors
#
# The indexed colors include all colors from 16 to 256.
# When these are not set, they're filled with sensible defaults.
#
# Example:
# `- { index: 16, color: '#ff00ff' }`
#
#indexed_colors: []
# Transparent cell backgrounds
#
# Whether or not `window.opacity` applies to all cell backgrounds or only to
# the default background. When set to `true` all cells will be transparent
# regardless of their background color.
#transparent_background_colors: false
# Bell
#
# The bell is rung every time the BEL control character is received.
#bell:
# Visual Bell Animation
#
# Animation effect for flashing the screen when the visual bell is rung.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
#animation: EaseOutExpo
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will
# disable the visual bell animation.
#duration: 0
# Visual bell animation color.
#color: '#ffffff'
# Bell Command
#
# This program is executed whenever the bell is rung.
#
# When set to `command: None`, no command will be executed.
#
# Example:
# command:
# program: notify-send
# args: ["Hello, World!"]
#
#command: None
#selection:
# This string contains all characters that are used as separators for
# "semantic words" in Alacritty.
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
# When set to `true`, selected text will be copied to the primary clipboard.
#save_to_clipboard: false
#cursor:
# Cursor style
#style:
# Cursor shape
#
# Values for `shape`:
# - ▇ Block
# - _ Underline
# - | Beam
#shape: Block
# Cursor blinking state
#
# Values for `blinking`:
# - Never: Prevent the cursor from ever blinking
# - Off: Disable blinking by default
# - On: Enable blinking by default
# - Always: Force the cursor to always blink
#blinking: Off
# Vi mode cursor style
#
# If the vi mode cursor style is `None` or not specified, it will fall back to
# the style of the active value of the normal cursor.
#
# See `cursor.style` for available options.
#vi_mode_style: None
# Cursor blinking interval in milliseconds.
#blink_interval: 750
# Time after which cursor stops blinking, in seconds.
#
# Specifying '0' will disable timeout for blinking.
#blink_timeout: 5
# If this is `true`, the cursor will be rendered as a hollow box when the
# window is not focused.
#unfocused_hollow: true
# Thickness of the cursor relative to the cell width as floating point number
# from `0.0` to `1.0`.
#thickness: 0.15
# Live config reload (changes require restart)
#live_config_reload: true
# Shell
#
# You can set `shell.program` to the path of your favorite shell, e.g.
# `/bin/fish`. Entries in `shell.args` are passed unmodified as arguments to the
# shell.
#
# Default:
# - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset
# - (Windows) powershell
#shell:
# program: /bin/bash
# args:
# - --login
# Startup directory
#
# Directory the shell is started in. If this is unset, or `None`, the working
# directory of the parent process will be used.
#working_directory: None
# Send ESC (\x1b) before characters when alt is pressed.
#alt_send_esc: true
# Offer IPC using `alacritty msg` (unix only)
#ipc_socket: true
#mouse:
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
#double_click: { threshold: 300 }
#triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing.
#hide_when_typing: false
# Hints
#
# Terminal hints can be used to find text or hyperlink in the visible part of
# the terminal and pipe it to other applications.
#hints:
# Keys used for the hint labels.
#alphabet: "jfkdls;ahgurieowpq"
# List with all available hints
#
# Each hint must have any of `regex` or `hyperlinks` field and either an
# `action` or a `command` field. The fields `mouse`, `binding` and
# `post_processing` are optional.
#
# The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be
# highlighted.
#
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
# `mouse.mods` accept the same values as they do in the `key_bindings` section.
#
# The `mouse.enabled` field controls if the hint should be underlined while
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
#
# If the `post_processing` field is set to `true`, heuristics will be used to
# shorten the match if there are characters likely not to be part of the hint
# (e.g. a trailing `.`). This is most useful for URIs and applies only to
# `regex` matches.
#
# Values for `action`:
# - Copy
# Copy the hint's text to the clipboard.
# - Paste
# Paste the hint's text to the terminal or search.
# - Select
# Select the hint's text.
# - MoveViModeCursor
# Move the vi mode cursor to the beginning of the hint.
#enabled:
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
# hyperlinks: true
# command: xdg-open
# post_processing: true
# mouse:
# enabled: true
# mods: None
# binding:
# key: U
# mods: Control|Shift
# Mouse bindings
#
# Mouse bindings are specified as a list of objects, much like the key
# bindings further below.
#
# To trigger mouse bindings when an application running within Alacritty
# captures the mouse, the `Shift` modifier is automatically added as a
# requirement.
#
# Each mouse binding will specify a:
#
# - `mouse`:
#
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# - `action` (see key bindings for actions not exclusive to mouse mode)
#
# - Mouse exclusive actions:
#
# - ExpandSelection
# Expand the selection to the current mouse cursor location.
#
# And optionally:
#
# - `mods` (see key bindings)
#mouse_bindings:
# - { mouse: Right, action: ExpandSelection }
# - { mouse: Right, mods: Control, action: ExpandSelection }
# - { mouse: Middle, mode: ~Vi, action: PasteSelection }
# Key bindings
#
# Key bindings are specified as a list of objects. For example, this is the
# default paste binding:
#
# `- { key: V, mods: Control|Shift, action: Paste }`
#
# Each key binding will specify a:
#
# - `key`: Identifier of the key pressed
#
# - A-Z
# - F1-F24
# - Key0-Key9
#
# A full list with available key codes can be found here:
# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
#
# Instead of using the name of the keys, the `key` field also supports using
# the scancode of the desired key. Scancodes have to be specified as a
# decimal number. This command will allow you to display the hex scancodes
# for certain keys:
#
# `showkey --scancodes`.
#
# Then exactly one of:
#
# - `chars`: Send a byte sequence to the running application
#
# The `chars` field writes the specified string to the terminal. This makes
# it possible to pass escape sequences. To find escape codes for bindings
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
# of tmux. Note that applications use terminfo to map escape sequences back
# to keys. It is therefore required to update the terminfo when changing an
# escape sequence.
#
# - `action`: Execute a predefined action
#
# - ToggleViMode
# - SearchForward
# Start searching toward the right of the search origin.
# - SearchBackward
# Start searching toward the left of the search origin.
# - Copy
# - Paste
# - IncreaseFontSize
# - DecreaseFontSize
# - ResetFontSize
# - ScrollPageUp
# - ScrollPageDown
# - ScrollHalfPageUp
# - ScrollHalfPageDown
# - ScrollLineUp
# - ScrollLineDown
# - ScrollToTop
# - ScrollToBottom
# - ClearHistory
# Remove the terminal's scrollback history.
# - Hide
# Hide the Alacritty window.
# - Minimize
# Minimize the Alacritty window.
# - Quit
# Quit Alacritty.
# - ToggleFullscreen
# - SpawnNewInstance
# Spawn a new instance of Alacritty.
# - CreateNewWindow
# Create a new Alacritty window from the current process.
# - ClearLogNotice
# Clear Alacritty's UI warning and error notice.
# - ClearSelection
# Remove the active selection.
# - ReceiveChar
# - None
#
# - Vi mode exclusive actions:
#
# - Open
# Perform the action of the first matching hint under the vi mode cursor
# with `mouse.enabled` set to `true`.
# - ToggleNormalSelection
# - ToggleLineSelection
# - ToggleBlockSelection
# - ToggleSemanticSelection
# Toggle semantic selection based on `selection.semantic_escape_chars`.
# - CenterAroundViCursor
# Center view around vi mode cursor
#
# - Vi mode exclusive cursor motion actions:
#
# - Up
# One line up.
# - Down
# One line down.
# - Left
# One character left.
# - Right
# One character right.
# - First
# First column, or beginning of the line when already at the first column.
# - Last
# Last column, or beginning of the line when already at the last column.
# - FirstOccupied
# First non-empty cell in this terminal row, or first non-empty cell of
# the line when already at the first cell of the row.
# - High
# Top of the screen.
# - Middle
# Center of the screen.
# - Low
# Bottom of the screen.
# - SemanticLeft
# Start of the previous semantically separated word.
# - SemanticRight
# Start of the next semantically separated word.
# - SemanticLeftEnd
# End of the previous semantically separated word.
# - SemanticRightEnd
# End of the next semantically separated word.
# - WordLeft
# Start of the previous whitespace separated word.
# - WordRight
# Start of the next whitespace separated word.
# - WordLeftEnd
# End of the previous whitespace separated word.
# - WordRightEnd
# End of the next whitespace separated word.
# - Bracket
# Character matching the bracket at the cursor's location.
# - SearchNext
# Beginning of the next match.
# - SearchPrevious
# Beginning of the previous match.
# - SearchStart
# Start of the match to the left of the vi mode cursor.
# - SearchEnd
# End of the match to the right of the vi mode cursor.
#
# - Search mode exclusive actions:
# - SearchFocusNext
# Move the focus to the next search match.
# - SearchFocusPrevious
# Move the focus to the previous search match.
# - SearchConfirm
# - SearchCancel
# - SearchClear
# Reset the search regex.
# - SearchDeleteWord
# Delete the last word in the search regex.
# - SearchHistoryPrevious
# Go to the previous regex in the search history.
# - SearchHistoryNext
# Go to the next regex in the search history.
#
# - macOS exclusive actions:
# - ToggleSimpleFullscreen
# Enter fullscreen without occupying another space.
#
# - Linux/BSD exclusive actions:
#
# - CopySelection
# Copy from the selection buffer.
# - PasteSelection
# Paste from the selection buffer.
#
# - `command`: Fork and execute a specified command plus arguments
#
# The `command` field must be a map containing a `program` string and an
# `args` array of command line parameter strings. For example:
# `{ program: "alacritty", args: ["-e", "vttest"] }`
#
# And optionally:
#
# - `mods`: Key modifiers to filter binding actions
#
# - Command
# - Control
# - Option
# - Super
# - Shift
# - Alt
#
# Multiple `mods` can be combined using `|` like this:
# `mods: Control|Shift`.
# Whitespace and capitalization are relevant and must match the example.
#
# - `mode`: Indicate a binding for only specific terminal reported modes
#
# This is mainly used to send applications the correct escape sequences
# when in different modes.
#
# - AppCursor
# - AppKeypad
# - Search
# - Alt
# - Vi
#
# A `~` operator can be used before a mode to apply the binding whenever
# the mode is *not* active, e.g. `~Alt`.
#
# Bindings are always filled by default, but will be replaced when a new
# binding with the same triggers is defined. To unset a default binding, it can
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
# a no-op if you do not wish to receive input characters for that binding.
#
# If the same trigger is assigned to multiple actions, all of them are executed
# in the order they were defined in.
#key_bindings:
#- { key: Paste, action: Paste }
#- { key: Copy, action: Copy }
#- { key: L, mods: Control, action: ClearLogNotice }
#- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" }
#- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp }
#- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown }
#- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop }
#- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom }
# Vi Mode
#- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
#- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
#- { key: Escape, mode: Vi|~Search, action: ClearSelection }
#- { key: I, mode: Vi|~Search, action: ToggleViMode }
#- { key: I, mode: Vi|~Search, action: ScrollToBottom }
#- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode }
#- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp }
#- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown }
#- { key: G, mode: Vi|~Search, action: ScrollToTop }
#- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom }
#- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp }
#- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown }
#- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp }
#- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown }
#- { key: Y, mode: Vi|~Search, action: Copy }
#- { key: Y, mode: Vi|~Search, action: ClearSelection }
#- { key: Copy, mode: Vi|~Search, action: ClearSelection }
#- { key: V, mode: Vi|~Search, action: ToggleNormalSelection }
#- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection }
#- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection }
#- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection }
#- { key: Return, mode: Vi|~Search, action: Open }
#- { key: Z, mode: Vi|~Search, action: CenterAroundViCursor }
#- { key: K, mode: Vi|~Search, action: Up }
#- { key: J, mode: Vi|~Search, action: Down }
#- { key: H, mode: Vi|~Search, action: Left }
#- { key: L, mode: Vi|~Search, action: Right }
#- { key: Up, mode: Vi|~Search, action: Up }
#- { key: Down, mode: Vi|~Search, action: Down }
#- { key: Left, mode: Vi|~Search, action: Left }
#- { key: Right, mode: Vi|~Search, action: Right }
#- { key: Key0, mode: Vi|~Search, action: First }
#- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last }
#- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied }
#- { key: H, mods: Shift, mode: Vi|~Search, action: High }
#- { key: M, mods: Shift, mode: Vi|~Search, action: Middle }
#- { key: L, mods: Shift, mode: Vi|~Search, action: Low }
#- { key: B, mode: Vi|~Search, action: SemanticLeft }
#- { key: W, mode: Vi|~Search, action: SemanticRight }
#- { key: E, mode: Vi|~Search, action: SemanticRightEnd }
#- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft }
#- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight }
#- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd }
#- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket }
#- { key: Slash, mode: Vi|~Search, action: SearchForward }
#- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward }
#- { key: N, mode: Vi|~Search, action: SearchNext }
#- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious }
# Search Mode
#- { key: Return, mode: Search|Vi, action: SearchConfirm }
#- { key: Escape, mode: Search, action: SearchCancel }
#- { key: C, mods: Control, mode: Search, action: SearchCancel }
#- { key: U, mods: Control, mode: Search, action: SearchClear }
#- { key: W, mods: Control, mode: Search, action: SearchDeleteWord }
#- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious }
#- { key: N, mods: Control, mode: Search, action: SearchHistoryNext }
#- { key: Up, mode: Search, action: SearchHistoryPrevious }
#- { key: Down, mode: Search, action: SearchHistoryNext }
#- { key: Return, mode: Search|~Vi, action: SearchFocusNext }
#- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious }
# (Windows, Linux, and BSD only)
#- { key: V, mods: Control|Shift, mode: ~Vi, action: Paste }
#- { key: C, mods: Control|Shift, action: Copy }
#- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward }
#- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward }
#- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection }
#- { key: Insert, mods: Shift, action: PasteSelection }
#- { key: Key0, mods: Control, action: ResetFontSize }
#- { key: Equals, mods: Control, action: IncreaseFontSize }
#- { key: Plus, mods: Control, action: IncreaseFontSize }
#- { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
#- { key: Minus, mods: Control, action: DecreaseFontSize }
#- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
# (Windows only)
#- { key: Return, mods: Alt, action: ToggleFullscreen }
# (macOS only)
#- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" }
#- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory }
#- { key: Key0, mods: Command, action: ResetFontSize }
#- { key: Equals, mods: Command, action: IncreaseFontSize }
#- { key: Plus, mods: Command, action: IncreaseFontSize }
#- { key: NumpadAdd, mods: Command, action: IncreaseFontSize }
#- { key: Minus, mods: Command, action: DecreaseFontSize }
#- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize }
#- { key: V, mods: Command, action: Paste }
#- { key: C, mods: Command, action: Copy }
#- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection }
#- { key: H, mods: Command, action: Hide }
#- { key: H, mods: Command|Alt, action: HideOtherApplications }
#- { key: M, mods: Command, action: Minimize }
#- { key: Q, mods: Command, action: Quit }
#- { key: W, mods: Command, action: Quit }
#- { key: N, mods: Command, action: SpawnNewInstance }
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
#- { key: F, mods: Command, mode: ~Search, action: SearchForward }
#- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
#debug:
# Display the time it takes to redraw each frame.
#render_timer: false
# Keep the log file after quitting Alacritty.
#persistent_logging: false
# Log level
#
# Values for `log_level`:
# - Off
# - Error
# - Warn
# - Info
# - Debug
# - Trace
#log_level: Warn
# Print all received window events.
#print_events: false
# Highlight window damage information.
#highlight_damage: false

View file

@ -24,7 +24,9 @@ function autostart.exec(awful)
-- awful.spawn.with_shell("autocutsel -fork -selection PRIMARY")
awful.spawn.with_shell("xmousepasteblock")
awful.spawn.with_shell("xinput map-to-output 20 DVI-I")
-- awful.spawn.with_shell("fcitx5 -d")
awful.spawn.with_shell("xrandr --output DP-0 --mode 1920x1080 --rate 74.97 --pos 0x0 --rotate normal --output DP-4 --primary --mode 2560x1440 --rate 143.86 --pos 1920x0 --rotate normal")
awful.spawn.with_shell('dbus-daemon --session --address="unix:path=$XDG_RUNTIME_DIR/bus"')
awful.spawn.with_shell("fcitx5 -d")
end
return autostart

View file

@ -0,0 +1,19 @@
local headers = require("custom.headers")
---@type ChadrcConfig
local M = {}
M.ui = {
theme = 'catppuccin',
nvdash = {
load_on_startup = true,
header=headers.Bloody,
},
statusline = {
separator_style = "block",
theme = "default",
},
transparency = true,
}
M.plugins = "custom.plugins"
M.mappings = require "custom.mappings"
return M

View file

@ -0,0 +1,34 @@
local status, illuminate = pcall(require, "illuminate")
if not status then
return
end
illuminate.configure {
-- providers: provider used to get references in the buffer, ordered by priority
providers = {
"lsp",
"treesitter",
"regex",
},
delay = 100,
filetypes_denylist = {
"dirvish",
"fugitive",
"alpha",
"NvimTree",
"packer",
"neogitstatus",
"Trouble",
"lir",
"Outline",
"spectre_panel",
"toggleterm",
"DressingSelect",
"TelescopePrompt",
"aerial",
"Empty",
},
under_cursor = true,
max_file_lines = nil,
}

View file

@ -0,0 +1,26 @@
local config = require("plugins.configs.lspconfig")
local on_attach = config.on_attach
local capabilities = config.capabilities
local lspconfig = require("lspconfig")
lspconfig.pyright.setup({
on_attach = on_attach,
capabilities = capabilities,
filetypes = {"python"},
})
lspconfig.rnix.setup({
on_attach = on_attach,
capabilities = capabilities,
filetypes = {"nix"},
})
lspconfig.clangd.setup {
on_attach = function(client, bufnr)
client.server_capabilities.signatureHelpProvider = false
on_attach(client, bufnr)
end,
capabilities = capabilities,
}

View file

@ -0,0 +1,30 @@
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
local null_ls = require('null-ls')
local opts = {
sources = {
null_ls.builtins.formatting.black,
null_ls.builtins.diagnostics.mypy,
null_ls.builtins.diagnostics.eslint_d,
null_ls.builtins.diagnostics.jsonlint,
null_ls.builtins.diagnostics.ruff,
null_ls.builtins.formatting.clang_format,
null_ls.builtins.formatting.alejandra,
},
on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({
group = augroup,
buffer = bufnr,
})
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({ bufnr = bufnr })
end,
})
end
end,
}
return opts

View file

@ -0,0 +1,12 @@
local on_attach = require("plugins.configs.lspconfig").on_attach
local capabilities = require("plugins.configs.lspconfig").capabilities
local options = {
server = {
on_attach = on_attach,
capabilities = capabilities,
},
}
return options

View file

@ -0,0 +1,55 @@
require("todo-comments").setup {
signs = true,
sign_priority = 8,
keywords = {
FIX = {
icon = "", -- icon used for the sign, and in search results
color = "error", -- can be a hex color, or a named color (see below)
alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
-- signs = false, -- configure signs for some keywords individually
},
TODO = { icon = "", color = "info" },
HACK = { icon = "", color = "warning" },
WARN = { icon = "", color = "warning", alt = { "WARNING", "XXX" } },
PERF = { icon = "󰑮 ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
NOTE = { icon = "", color = "hint", alt = { "INFO" } },
TEST = { icon = "󰤑 ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
},
gui_style = {
fg = "NONE", -- The gui style to use for the fg highlight group.
bg = "BOLD", -- The gui style to use for the bg highlight group.
},
merge_keywords = true, -- when true, custom keywords will be merged with the defaults
highlight = {
multiline = true, -- enable multine todo comments
multiline_pattern = "^.", -- lua pattern to match the next multiline from the start of the matched keyword
multiline_context = 10, -- extra lines that will be re-evaluated when changing a line
before = "", -- "fg" or "bg" or empty
keyword = "wide", -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg, but will also highlight surrounding characters, wide_fg acts accordingly but with fg)
after = "fg", -- "fg" or "bg" or empty
pattern = [[.*<(KEYWORDS)\s*:]], -- pattern or table of patterns, used for highlighting (vim regex)
comments_only = true, -- uses treesitter to match keywords in comments only
max_line_len = 400, -- ignore lines longer than this
exclude = {}, -- list of file types to exclude highlighting
},
colors = {
error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
warning = { "DiagnosticWarn", "WarningMsg", "#FBBF24" },
info = { "DiagnosticInfo", "#2563EB" },
hint = { "DiagnosticHint", "#10B981" },
default = { "Identifier", "#7C3AED" },
test = { "Identifier", "#FF00FF" },
},
search = {
command = "rg",
args = {
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
},
pattern = [[\b(KEYWORDS):]], -- ripgrep regex
-- pattern = [[\b(KEYWORDS)\b]], -- match without the extra colon.
},
}

206
rsc/config/nvim/headers.lua Normal file
View file

@ -0,0 +1,206 @@
local M = {}
M.Default = {
[[ ██████ █████ ███ ]],
[[░░██████ ░░███ ░░░ ]],
[[ ░███░███ ░███ ██████ ██████ █████ █████ ████ █████████████ ]],
[[ ░███░░███░███ ███░░███ ███░░███░░███ ░░███ ░░███ ░░███░░███░░███ ]],
[[ ░███ ░░██████ ░███████ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ░███ ]],
[[ ░███ ░░█████ ░███░░░ ░███ ░███ ░░███ ███ ░███ ░███ ░███ ░███ ]],
[[ █████ ░░█████░░██████ ░░██████ ░░█████ █████ █████░███ █████]],
[[░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░ ░░░░░ ]],
}
M.Default2 = {
[[███╗░░██╗███████╗░█████╗░██╗░░░██╗██╗███╗░░░███╗]],
[[████╗░██║██╔════╝██╔══██╗██║░░░██║██║████╗░████║]],
[[██╔██╗██║█████╗░░██║░░██║╚██╗░██╔╝██║██╔████╔██║]],
[[██║╚████║██╔══╝░░██║░░██║░╚████╔╝░██║██║╚██╔╝██║]],
[[██║░╚███║███████╗╚█████╔╝░░╚██╔╝░░██║██║░╚═╝░██║]],
[[╚═╝░░╚══╝╚══════╝░╚════╝░░░░╚═╝░░░╚═╝╚═╝░░░░░╚═╝]],
}
M.ThreeDimensionsDiagonal = {
[[ ,--. ]],
[[ ,--.'| ____ ]],
[[ ,--,: : | ,--, ,' , `.]],
[[,`--.'`| ' : ,---. ,--.'| ,-+-,.' _ |]],
[[| : : | | ' ,'\ .---.| |, ,-+-. ; , ||]],
[[: | \ | : ,---. / / | /. ./|`--'_ ,--.'|' | ||]],
[[| : ' '; | / \ . ; ,. : .-' . ' |,' ,'| | | ,', | |,]],
[[' ' ;. ; / / |' | |: :/___/ \: |' | | | | / | |--' ]],
[[| | | \ |. ' / |' | .; :. \ ' .| | : | : | | , ]],
[[' : | ; .'' ; /|| : | \ \ '' : |__ | : | |/ ]],
[[| | '`--' ' | / | \ \ / \ \ | | '.'|| | |`-' ]],
[[' : | | : | `----' \ \ |; : ;| ;/ ]],
[[; |.' \ \ / '---" | , / '---' ]],
[['---' `----' ---`-' ]],
}
M.Alpha = {
[[ _____ _____ _______ _____ _____ _____ ]],
[[ /\ \ /\ \ /::\ \ /\ \ /\ \ /\ \ ]],
[[ /::\____\ /::\ \ /::::\ \ /::\____\ /::\ \ /::\____\ ]],
[[ /::::| | /::::\ \ /::::::\ \ /:::/ / \:::\ \ /::::| | ]],
[[ /:::::| | /::::::\ \ /::::::::\ \ /:::/ / \:::\ \ /:::::| | ]],
[[ /::::::| | /:::/\:::\ \ /:::/~~\:::\ \ /:::/ / \:::\ \ /::::::| | ]],
[[ /:::/|::| | /:::/__\:::\ \ /:::/ \:::\ \ /:::/____/ \:::\ \ /:::/|::| | ]],
[[ /:::/ |::| | /::::\ \:::\ \ /:::/ / \:::\ \ |::| | /::::\ \ /:::/ |::| | ]],
[[ /:::/ |::| | _____ /::::::\ \:::\ \ /:::/____/ \:::\____\ |::| | _____ ____ /::::::\ \ /:::/ |::|___|______ ]],
[[ /:::/ |::| |/\ \ /:::/\:::\ \:::\ \ |:::| | |:::| | |::| | /\ \ /\ \ /:::/\:::\ \ /:::/ |::::::::\ \ ]],
[[/:: / |::| /::\____\/:::/__\:::\ \:::\____\|:::|____| |:::| | |::| | /::\____\/::\ \/:::/ \:::\____\/:::/ |:::::::::\____\]],
[[\::/ /|::| /:::/ /\:::\ \:::\ \::/ / \:::\ \ /:::/ / |::| | /:::/ /\:::\ /:::/ \::/ /\::/ / ~~~~~/:::/ /]],
[[ \/____/ |::| /:::/ / \:::\ \:::\ \/____/ \:::\ \ /:::/ / |::| | /:::/ / \:::\/:::/ / \/____/ \/____/ /:::/ / ]],
[[ |::|/:::/ / \:::\ \:::\ \ \:::\ /:::/ / |::|____|/:::/ / \::::::/ / /:::/ / ]],
[[ |::::::/ / \:::\ \:::\____\ \:::\__/:::/ / |:::::::::::/ / \::::/____/ /:::/ / ]],
[[ |:::::/ / \:::\ \::/ / \::::::::/ / \::::::::::/____/ \:::\ \ /:::/ / ]],
[[ |::::/ / \:::\ \/____/ \::::::/ / ~~~~~~~~~~ \:::\ \ /:::/ / ]],
[[ /:::/ / \:::\ \ \::::/ / \:::\ \ /:::/ / ]],
[[ /:::/ / \:::\____\ \::/____/ \:::\____\ /:::/ / ]],
[[ \::/ / \::/ / ~~ \::/ / \::/ / ]],
[[ \/____/ \/____/ \/____/ \/____/ ]],
}
M.FiraFontK = {
[[ ) ]],
[[ ( /( ]],
[[ )\()) ( ) ( ) ]],
[[((_)\ ))\ ( /(( )\ ( ]],
[[ _((_) /((_) )\ (_))\((_) )\ ']],
[[| \| |(_)) ((_)_)((_)(_) _((_)) ]],
[[| .` |/ -_)/ _ \\ V / | || ' \()]],
[[|_|\_|\___|\___/ \_/ |_||_|_|_| ]],
}
M.FiraFontS = {
[[ ) ]],
[[ ( /( ]],
[[ )\()) ( ) ( ) ]],
[[((_)\ ))\ ( /(( )\ ( ]],
[[ _((_)/((_))\(_))((_) )\ ']],
[[| \| (_)) ((_))((_|_)_((_)) ]],
[[| .` / -_) _ \ V /| | ' \()]],
[[|_|\_\___\___/\_/ |_|_|_|_| ]],
}
M.Impossible = {
[[ _ _ _ _ _ _ _ _ ]],
[[ /\ \ _ /\ \ /\ \ /\ \ _ / /\ /\ \ /\_\/\_\ _ ]],
[[ / \ \ /\_\ / \ \ / \ \ \ \ \ /_/ / / \ \ \ / / / / //\_\]],
[[ / /\ \ \_/ / // /\ \ \ / /\ \ \ \ \ \ \___\/ /\ \_\ /\ \/ \ \/ / /]],
[[ / / /\ \___/ // / /\ \_\ / / /\ \ \ / / / \ \ \ / /\/_/ / \____\__/ / ]],
[[ / / / \/____// /_/_ \/_/ / / / \ \_\\ \ \ \_\ \ / / / / /\/________/ ]],
[[ / / / / / // /____/\ / / / / / / \ \ \ / / / / / / / / /\/_// / / ]],
[[ / / / / / // /\____\/ / / / / / / \ \ \/ / / / / / / / / / / / ]],
[[ / / / / / // / /______ / / /___/ / / \ \ \/ /___/ / /__ / / / / / / ]],
[[/ / / / / // / /_______\/ / /____\/ / \ \ //\__\/_/___\\/_/ / / / ]],
[[\/_/ \/_/ \/__________/\/_________/ \_\/ \/_________/ \/_/ ]],
}
M.Isometric1 = {
[[ ___ ___ ___ ___ ___ ]],
[[ /\__\ /\ \ /\ \ /\__\ ___ /\__\ ]],
[[ /::| | /::\ \ /::\ \ /:/ / /\ \ /::| | ]],
[[ /:|:| | /:/\:\ \ /:/\:\ \ /:/ / \:\ \ /:|:| | ]],
[[ /:/|:| |__ /::\~\:\ \ /:/ \:\ \ /:/__/ ___ /::\__\ /:/|:|__|__ ]],
[[ /:/ |:| /\__\ /:/\:\ \:\__\ /:/__/ \:\__\ |:| | /\__\ __/:/\/__/ /:/ |::::\__\]],
[[ \/__|:|/:/ / \:\~\:\ \/__/ \:\ \ /:/ / |:| |/:/ / /\/:/ / \/__/~~/:/ /]],
[[ |:/:/ / \:\ \:\__\ \:\ /:/ / |:|__/:/ / \::/__/ /:/ / ]],
[[ |::/ / \:\ \/__/ \:\/:/ / \::::/__/ \:\__\ /:/ / ]],
[[ /:/ / \:\__\ \::/ / ~~~~ \/__/ /:/ / ]],
[[ \/__/ \/__/ \/__/ \/__/ ]],
}
M.Isometric2 = {
[[ ___ ___ ___ ___ ]],
[[ /\ \ /\__\ /\ \ ___ /\ \ ]],
[[ \:\ \ /:/ _/_ /::\ \ /\ \ ___ |::\ \ ]],
[[ \:\ \ /:/ /\__\ /:/\:\ \ \:\ \ /\__\ |:|:\ \ ]],
[[ _____\:\ \ /:/ /:/ _/_ /:/ \:\ \ \:\ \ /:/__/ __|:|\:\ \ ]],
[[/::::::::\__\ /:/_/:/ /\__\ /:/__/ \:\__\ ___ \:\__\ /::\ \ /::::|_\:\__\]],
[[\:\~~\~~\/__/ \:\/:/ /:/ / \:\ \ /:/ / /\ \ |:| | \/\:\ \__ \:\~~\ \/__/]],
[[ \:\ \ \::/_/:/ / \:\ /:/ / \:\ \|:| | ~~\:\/\__\ \:\ \ ]],
[[ \:\ \ \:\/:/ / \:\/:/ / \:\__|:|__| \::/ / \:\ \ ]],
[[ \:\__\ \::/ / \::/ / \::::/__/ /:/ / \:\__\ ]],
[[ \/__/ \/__/ \/__/ ~~~~ \/__/ \/__/ ]],
}
M.Isometric3 = {
[[ ___ ___ ___ ___ ]],
[[ /__/\ / /\ / /\ ___ ___ /__/\ ]],
[[ \ \:\ / /:/_ / /::\ /__/\ / /\ | |::\ ]],
[[ \ \:\ / /:/ /\ / /:/\:\ \ \:\ / /:/ | |:|:\ ]],
[[ _____\__\:\ / /:/ /:/_ / /:/ \:\ \ \:\ /__/::\ __|__|:|\:\ ]],
[[/__/::::::::\ /__/:/ /:/ /\ /__/:/ \__\:\ ___ \__\:\ \__\/\:\__ /__/::::| \:\]],
[[\ \:\~~\~~\/ \ \:\/:/ /:/ \ \:\ / /:/ /__/\ | |:| \ \:\/\ \ \:\~~\__\/]],
[[ \ \:\ ~~~ \ \::/ /:/ \ \:\ /:/ \ \:\| |:| \__\::/ \ \:\ ]],
[[ \ \:\ \ \:\/:/ \ \:\/:/ \ \:\__|:| /__/:/ \ \:\ ]],
[[ \ \:\ \ \::/ \ \::/ \__\::::/ \__\/ \ \:\ ]],
[[ \__\/ \__\/ \__\/ ~~~~ \__\/ ]],
}
M.Isometric4 = {
[[ ___ ___ ___ ___ ]],
[[ / /\ / /\ / /\ ___ ___ / /\ ]],
[[ / /::| / /::\ / /::\ / /\ /__/\ / /::| ]],
[[ / /:|:| / /:/\:\ / /:/\:\ / /:/ \__\:\ / /:|:| ]],
[[ / /:/|:|__ / /::\ \:\ / /:/ \:\ / /:/ / /::\ / /:/|:|__ ]],
[[/__/:/ |:| /\ /__/:/\:\ \:\ /__/:/ \__\:\ /__/:/ ___ __/ /:/\/ /__/:/_|::::\]],
[[\__\/ |:|/:/ \ \:\ \:\_\/ \ \:\ / /:/ | |:| / /\ /__/\/:/~~ \__\/ /~~/:/]],
[[ | |:/:/ \ \:\ \:\ \ \:\ /:/ | |:|/ /:/ \ \::/ / /:/ ]],
[[ |__|::/ \ \:\_\/ \ \:\/:/ |__|:|__/:/ \ \:\ / /:/ ]],
[[ /__/:/ \ \:\ \ \::/ \__\::::/ \__\/ /__/:/ ]],
[[ \__\/ \__\/ \__\/ ~~~~ \__\/ ]],
}
M.Bloody = {
[[ ███▄ █ ▓█████ ▒█████ ██▒ █▓ ██▓ ███▄ ▄███▓]],
[[ ██ ▀█ █ ▓█ ▀ ▒██▒ ██▒▓██░ █▒▓██▒▓██▒▀█▀ ██▒]],
[[▓██ ▀█ ██▒▒███ ▒██░ ██▒ ▓██ █▒░▒██▒▓██ ▓██░]],
[[▓██▒ ▐▌██▒▒▓█ ▄ ▒██ ██░ ▒██ █░░░██░▒██ ▒██ ]],
[[▒██░ ▓██░░▒████▒░ ████▓▒░ ▒▀█░ ░██░▒██▒ ░██▒]],
[[░ ▒░ ▒ ▒ ░░ ▒░ ░░ ▒░▒░▒░ ░ ▐░ ░▓ ░ ▒░ ░ ░]],
[[░ ░░ ░ ▒░ ░ ░ ░ ░ ▒ ▒░ ░ ░░ ▒ ░░ ░ ░]],
[[ ░ ░ ░ ░ ░ ░ ░ ▒ ░░ ▒ ░░ ░ ]],
[[ ░ ░ ░ ░ ░ ░ ░ ░ ]],
[[ ░ ]],
}
M.TheEdge = {
[[ ▄ ▄███▄ ████▄ ▄ ▄█ █▀▄▀█]],
[[ █ █▀ ▀ █ █ █ ██ █ █ █]],
[[██ █ ██▄▄ █ █ █ █ ██ █ ▄ █]],
[[█ █ █ █▄ ▄▀ ▀████ █ █ ▐█ █ █]],
[[█ █ █ ▀███▀ █ █ ▐ █ ]],
[[█ ██ █▐ ▀ ]],
[[ ▐ ]],
}
M.Fraktur = {
[[ ... ... _ . ]],
[[ .=*8888n.."%888: u @88> ]],
[[ X ?8888f '8888 u. 88Nu. u. %8P .. . : ]],
[[ 88x. '8888X 8888> .u ...ue888b '88888.o888c . .888: x888 x888. ]],
[['8888k 8888X '"*8h. ud8888. 888R Y888r ^8888 8888 .@88u ~`8888~'888X`?888f`]],
[[ "8888 X888X .xH8 :888'8888. 888R I888> 8888 8888 ''888E` X888 888X '888> ]],
[[ `8" X888!:888X d888 '88%" 888R I888> 8888 8888 888E X888 888X '888> ]],
[[ =~` X888 X888X 8888.+" 888R I888> 8888 8888 888E X888 888X '888> ]],
[[ :h. X8*` !888X 8888L u8888cJ888 .8888b.888P 888E X888 888X '888> ]],
[[ X888xX" '8888..: '8888c. .+ "*888*P" ^Y8888*"" 888& "*88%""*88" '888!`]],
[[:~`888f '*888*" "88888% 'Y" `Y" R888" `~ " `"` ]],
[[ "" `"` "YP' "" ]],
}
M.Larry3D = {
[[ __ __ ]],
[[/\ \/\ \ __ ]],
[[\ \ `\\ \ __ ___ __ __ /\_\ ___ ___ ]],
[[ \ \ , ` \ /'__`\ / __`\/\ \/\ \\/\ \ /' __` __`\ ]],
[[ \ \ \`\ \/\ __//\ \L\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]],
[[ \ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]],
[[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]],
}
-- These ASCII art have been generated in: http://patorjk.com/software/taag/
return M

6
rsc/config/nvim/init.lua Normal file
View file

@ -0,0 +1,6 @@
vim.opt.relativenumber = true
vim.o.guifont = "JetBrainsMono Nerd Font:h12"
vim.g.neovide_transparency = 0.8
vim.g.transparency = 1.0
vim.g.neovide_cursor_vfx_mode = "torpedo"
--vim.g.neovide_background_color = "#1e1e2e"

View file

@ -0,0 +1,68 @@
local M = {}
M.dap = {
plugin = true,
n = {
["<leader>db"] = {
"<cmd> DapToggleBreakpoint <CR>",
"Add breakpoint at line"
},
["<leader>dr"] = {
"<cmd> DapContinue <CR>",
"Start or continue the debugger",
},
["<leader>dus"] = {
function ()
local widgets = require('dap.ui.widgets');
local sidebar = widgets.sidebar(widgets.scopes);
sidebar.open();
end,
"Open debugging sidebar"
},
["<F5>"] = {
function ()
require("dap").continue()
end
},
["<F10>"] = {
function ()
require("dap").step_over()
end
},
["<F11>"] = {
function ()
require("dap").step_into()
end
},
["<F12>"] = {
function ()
require("dap").step_out()
end
},
}
}
M.dap_python = {
plugin = true,
n = {
["<leader>dpr"] = {
function()
require('dap-python').test_method()
end
},
}
}
M.crates = {
plugin = true,
n = {
["<leader>rcu"] = {
function ()
require('crates').upgrade_all_crates()
end,
"update crates"
}
}
}
return M

193
rsc/config/nvim/plugins.lua Normal file
View file

@ -0,0 +1,193 @@
local cmp = require "cmp"
local plugins = {
{
'numToStr/Comment.nvim',
lazy = false,
},
{
"simrat39/rust-tools.nvim",
ft = "rust",
dependencies = "neovim/nvim-lspconfig",
opts = function ()
return require "custom.configs.rust-tools"
end,
config = function(_, opts)
require('rust-tools').setup(opts)
end
},
{
'saecki/crates.nvim',
ft = {"toml"},
config = function(_, opts)
local crates = require('crates')
crates.setup(opts)
require('cmp').setup.buffer({
sources = { { name = "crates" }}
})
crates.show()
require("core.utils").load_mappings("crates")
end,
},
{
"rust-lang/rust.vim",
ft = "rust",
init = function ()
vim.g.rustfmt_autosave = 1
end
},
{
"theHamsta/nvim-dap-virtual-text",
lazy = false,
config = function(_, opts)
require("nvim-dap-virtual-text").setup()
end
},
{
"hrsh7th/nvim-cmp",
opts = function()
local M = require "plugins.configs.cmp"
M.completion.completeopt = "menu,menuone,noselect"
M.mapping["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Insert,
select = false,
}
table.insert(M.sources, {name = "crates"})
return M
end,
},
{
"m4xshen/hardtime.nvim",
dependencies = { "MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim" },
cmd = { "Hardtime" },
opts = {}
},
{
"folke/todo-comments.nvim",
event = "BufReadPost",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
require "custom.configs.todo"
end,
},
{
"RRethy/vim-illuminate",
event = { "CursorHold", "CursorHoldI" },
config = function()
require "custom.configs.illuminate"
end,
},
{
"hiphish/rainbow-delimiters.nvim",
event = "BufReadPost",
config = function()
local rainbow_delimiters = require "rainbow-delimiters"
vim.g.rainbow_delimiters = {
strategy = {
[""] = rainbow_delimiters.strategy["global"],
vim = rainbow_delimiters.strategy["local"],
},
query = {
[""] = "rainbow-delimiters",
lua = "rainbow-blocks",
},
highlight = {
"RainbowDelimiterRed",
"RainbowDelimiterYellow",
"RainbowDelimiterBlue",
"RainbowDelimiterOrange",
"RainbowDelimiterGreen",
"RainbowDelimiterViolet",
"RainbowDelimiterCyan",
},
}
end,
},
{
"rcarriga/nvim-dap-ui",
event = "VeryLazy",
dependencies = "mfussenegger/nvim-dap",
config = function()
local dap = require("dap")
local dapui = require("dapui")
dapui.setup()
dap.listeners.after.event_initialized["dapui_config"] = function()
dapui.open()
end
dap.listeners.before.event_terminated["dapui_config"] = function()
dapui.close()
end
dap.listeners.before.event_exited["dapui_config"] = function()
dapui.close()
end
end
},
{
"jay-babu/mason-nvim-dap.nvim",
event = "VeryLazy",
dependencies = {
"williamboman/mason.nvim",
"mfussenegger/nvim-dap",
},
opts = {
handlers = {}
},
},
{
"mfussenegger/nvim-dap",
config = function (_,opts)
require("core.utils").load_mappings("dap")
end
},
{
"mfussenegger/nvim-dap-python",
ft = "python",
dependencies = {
"mfussenegger/nvim-dap",
"rcarriga/nvim-dap-ui"
},
config = function (_,opts)
local path = "~/.local/share/nvim/mason/packages/debugpy/venv/bin/python"
require("dap-python").setup(path)
require("core.utils").load_mappings("dap_python")
end,
},
{
"jose-elias-alvarez/null-ls.nvim",
event = "VeryLazy",
opts = function()
return require "custom.configs.null-ls"
end,
},
{
"neovim/nvim-lspconfig",
config = function ()
require "plugins.configs.lspconfig"
require "custom.configs.lspconfig"
end
},
{
"nvim-treesitter",
opts = {
ensure_installed = {
"ocaml",
"python",
"rust",
"css",
"html",
"dockerfile",
"gitignore",
"typescript",
"nix",
"rust",
}
}
},
{
"theRealCarneiro/hyprland-vim-syntax",
dependencies = { "nvim-treesitter/nvim-treesitter" },
ft = "hypr",
},
}
return plugins