From c2845022e91b3f2dc3c6ad68d24895b75cd1395d Mon Sep 17 00:00:00 2001 From: Peter Kurfer Date: Tue, 10 Oct 2023 22:22:26 +0200 Subject: [PATCH] feat: initial migration --- .chezmoi.yaml.tmpl | 11 + .chezmoiignore.tmpl | 5 + .chezmoiscripts/run_install_buf.sh.tmpl | 13 + .chezmoiscripts/run_install_dotnet.sh.tmpl | 10 + .chezmoiscripts/run_install_go.sh.tmpl | 8 + .chezmoiscripts/run_install_kubectl.sh.tmpl | 18 + .chezmoiscripts/run_install_pfetch.sh.tmpl | 14 + .chezmoiscripts/run_install_starship.sh.tmpl | 5 + .editorconfig | 13 + .gitignore | 1 + dot_config/alacritty/alacritty.yml | 911 +++++++++++++++++++ dot_config/hypr/hyprland.conf | 180 ++++ dot_config/hypr/hyprpaper.conf | 3 + dot_config/starship.toml | 53 ++ dot_config/zsh/01-env.zsh | 63 ++ dot_config/zsh/02-plugins.zsh | 15 + dot_config/zsh/03-aliases.zsh | 20 + dot_gitconfig.tmpl | 55 ++ dot_gitignore | 1 + dot_zshrc.tmpl | 58 ++ setup.sh | 17 + 21 files changed, 1474 insertions(+) create mode 100644 .chezmoi.yaml.tmpl create mode 100644 .chezmoiignore.tmpl create mode 100644 .chezmoiscripts/run_install_buf.sh.tmpl create mode 100644 .chezmoiscripts/run_install_dotnet.sh.tmpl create mode 100644 .chezmoiscripts/run_install_go.sh.tmpl create mode 100644 .chezmoiscripts/run_install_kubectl.sh.tmpl create mode 100644 .chezmoiscripts/run_install_pfetch.sh.tmpl create mode 100755 .chezmoiscripts/run_install_starship.sh.tmpl create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 dot_config/alacritty/alacritty.yml create mode 100644 dot_config/hypr/hyprland.conf create mode 100644 dot_config/hypr/hyprpaper.conf create mode 100644 dot_config/starship.toml create mode 100644 dot_config/zsh/01-env.zsh create mode 100644 dot_config/zsh/02-plugins.zsh create mode 100644 dot_config/zsh/03-aliases.zsh create mode 100644 dot_gitconfig.tmpl create mode 100644 dot_gitignore create mode 100644 dot_zshrc.tmpl create mode 100755 setup.sh diff --git a/.chezmoi.yaml.tmpl b/.chezmoi.yaml.tmpl new file mode 100644 index 0000000..50d76ab --- /dev/null +++ b/.chezmoi.yaml.tmpl @@ -0,0 +1,11 @@ +{{- $coder := env "CODER" | not | not -}} +data: + name: "Peter Kurfer" +{{ if $coder }} + email: peter.kurfer@googlemail.com +{{ else }} + email: {{ promptString "email" | quote }} +{{ end }} + +diff: + command: delta \ No newline at end of file diff --git a/.chezmoiignore.tmpl b/.chezmoiignore.tmpl new file mode 100644 index 0000000..b3503d3 --- /dev/null +++ b/.chezmoiignore.tmpl @@ -0,0 +1,5 @@ +setup.sh + +{{ if eq .chezmoi.os "darwin" }} +*/hypr/ +{{ end }} \ No newline at end of file diff --git a/.chezmoiscripts/run_install_buf.sh.tmpl b/.chezmoiscripts/run_install_buf.sh.tmpl new file mode 100644 index 0000000..a4b2bfa --- /dev/null +++ b/.chezmoiscripts/run_install_buf.sh.tmpl @@ -0,0 +1,13 @@ +{{- if (lookPath "buf" | not) -}} +#!/bin/bash + + {{- if eq .chezmoi.os "darwin" }} +brew install bufbuild/buf/buf + {{- else if eq .chezmoi.os "linux" }} +BIN="/usr/local/bin" && \ +{{ if ne .chezmoi.uid "0" }} sudo {{ end -}}curl -sSL \ +"https://github.com/bufbuild/buf/releases/latest/download//buf-$(uname -s)-$(uname -m)" \ +-o "${BIN}/buf" && \ +{{ if ne .chezmoi.uid "0" }} sudo {{ end -}}chmod +x "${BIN}/buf" + {{- end }} +{{- end }} \ No newline at end of file diff --git a/.chezmoiscripts/run_install_dotnet.sh.tmpl b/.chezmoiscripts/run_install_dotnet.sh.tmpl new file mode 100644 index 0000000..2c7c109 --- /dev/null +++ b/.chezmoiscripts/run_install_dotnet.sh.tmpl @@ -0,0 +1,10 @@ +{{- if (lookPath "dotnet" | not) -}} +#!/bin/bash + {{- if eq .chezmoi.os "darwin" }} +brew tap isen-ng/dotnet-sdk-versions +brew install --cask dotnet-sdk7-0-400 dotnet-sdk6-0-400 + {{- else if eq .chezmoi.os "linux" }} +curl -L https://dot.net/v1/dotnet-install.sh | {{ if ne .chezmoi.uid "0" }} sudo {{ end -}}bash -s -- --channel LTS --install-dir /usr/local/dotnet +curl -L https://dot.net/v1/dotnet-install.sh | {{ if ne .chezmoi.uid "0" }} sudo {{ end -}}bash -s -- --channel STS --install-dir /usr/local/dotnet + {{- end }} +{{- end }} \ No newline at end of file diff --git a/.chezmoiscripts/run_install_go.sh.tmpl b/.chezmoiscripts/run_install_go.sh.tmpl new file mode 100644 index 0000000..856e005 --- /dev/null +++ b/.chezmoiscripts/run_install_go.sh.tmpl @@ -0,0 +1,8 @@ +{{- if (lookPath "go" | not) -}} +#!/bin/bash + {{- if eq .chezmoi.os "darwin" }} +brew install go + {{- else if eq .chezmoi.os "linux" }} +{{ if ne .chezmoi.uid "0" }} sudo {{ end -}}rm -rf /usr/local/go || {{ if ne .chezmoi.uid "0" }} sudo {{ end -}}mkdir -p /usr/local/go && curl -L https://go.dev/dl/{{ (gitHubLatestTag "golang/go").Name }}.linux-{{ .chezmoi.arch }}.tar.gz | {{ if ne .chezmoi.uid "0" }} sudo {{ end -}}tar -xz -C /usr/local/ + {{- end }} +{{- end }} \ No newline at end of file diff --git a/.chezmoiscripts/run_install_kubectl.sh.tmpl b/.chezmoiscripts/run_install_kubectl.sh.tmpl new file mode 100644 index 0000000..ee6a20d --- /dev/null +++ b/.chezmoiscripts/run_install_kubectl.sh.tmpl @@ -0,0 +1,18 @@ +{{- if or (lookPath "kubectl" | not) (lookPath "kustomize" | not ) -}} +#!/bin/bash +{{- if (lookPath "kubectl" | not) }} + {{- if eq .chezmoi.os "darwin" }} +brew install kubectl + {{- else if eq .chezmoi.os "linux" }} +{{ if ne .chezmoi.uid "0" }} sudo {{ end -}}curl -L -o /usr/local/bin/kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/{{ .chezmoi.arch }}/kubectl" +{{ if ne .chezmoi.uid "0" }} sudo {{ end -}}chmod +x /usr/local/bin/kubectl + {{- end }} +{{- end }} +{{- if (lookPath "kustomize" | not) -}} + {{- if eq .chezmoi.os "darwin" }} +brew install kustomize + {{- else if eq .chezmoi.os "linux" }} +{{ if ne .chezmoi.uid "0" }} sudo {{ end -}}curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | {{ if ne .chezmoi.uid "0" }} sudo {{ end -}}bash -s -- /usr/local/bin/ + {{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/.chezmoiscripts/run_install_pfetch.sh.tmpl b/.chezmoiscripts/run_install_pfetch.sh.tmpl new file mode 100644 index 0000000..b8adef5 --- /dev/null +++ b/.chezmoiscripts/run_install_pfetch.sh.tmpl @@ -0,0 +1,14 @@ +{{- if (lookPath "macchina" | not) -}} +#!/bin/bash + + {{- if eq .chezmoi.os "darwin" }} +brew install macchina + {{- else if eq .chezmoi.os "linux" }} + {{- if eq .chezmoi.arch "amd64" }} +{{ if ne .chezmoi.uid "0" }} sudo {{ end -}}curl -LO /usr/local/bin/macchina https://github.com/Macchina-CLI/macchina/releases/download/v{{ (gitHubLatestRelease "Macchina-CLI/macchina").TagName }}/macchina-linux-x86_64 + {{- else if .chezmoi.arch "arm64" }} +{{ if ne .chezmoi.uid "0" }} sudo {{ end -}}curl -LO /usr/local/bin/macchina https://github.com/Macchina-CLI/macchina/releases/download/v{{ (gitHubLatestRelease "Macchina-CLI/macchina").TagName }}/macchina-linux-aarch64 + {{- end }} +chmod +x /usr/local/bin/macchina + {{- end }} +{{- end }} \ No newline at end of file diff --git a/.chezmoiscripts/run_install_starship.sh.tmpl b/.chezmoiscripts/run_install_starship.sh.tmpl new file mode 100755 index 0000000..089d3ad --- /dev/null +++ b/.chezmoiscripts/run_install_starship.sh.tmpl @@ -0,0 +1,5 @@ +{{ if (lookPath "starship" | not)}} +#!/bin/bash + +mkdir -p $HOME/.local/bin && curl -sS https://starship.rs/install.sh | {{ if ne .chezmoi.uid "0" }} sudo -E {{ end -}} sh -s -- --yes --bin-dir $HOME/.local/bin +{{ end}} \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..931f0ad --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 120 + +[*.{yml,yaml,yml.j2,yaml.j2,yaml.tmpl}] +indent_size = 2 +insert_final_newline = true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbe9c82 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode/ \ No newline at end of file diff --git a/dot_config/alacritty/alacritty.yml b/dot_config/alacritty/alacritty.yml new file mode 100644 index 0000000..d6de403 --- /dev/null +++ b/dot_config/alacritty/alacritty.yml @@ -0,0 +1,911 @@ +# 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: 0 + # 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: 0 + + # 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: 1.0 + + # 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 + # + # Override the variant of the System theme/GTK theme/Wayland client side + # decorations. Commonly supported values are `Dark`, `Light`, and `None` for + # auto pick-up. Set this to `None` to use the default theme variant. + #decorations_theme_variant: None + + # Resize increments + # + # Prefer resizing window by discrete steps equal to cell dimensions. + #resize_increments: false + + # Make `Option` key behave as `Alt` (macOS only): + # - OnlyLeft + # - OnlyRight + # - Both + # - None (default) + #option_as_alt: 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 (roman) font face + normal: + # Font family + # + # Default: + # - (macOS) Menlo + # - (Linux/BSD) monospace + # - (Windows) Consolas + family: Hasklug Nerd font + + # The `style` can be specified to pick a specific face. + #style: Regular + + # Bold font face + #bold: + # Font family + # + # If the bold family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold + + # Italic font face + #italic: + # Font family + # + # If the italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Italic + + # Bold italic font face + #bold_italic: + # Font family + # + # If the bold italic family is not specified, it will fall back to the + # value specified for the normal font. + #family: monospace + + # The `style` can be specified to pick a specific face. + #style: Bold Italic + + # 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: '#1d1f21' + # foreground: '#c5c8c6' + + # 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: '#1d1f21' + # red: '#cc6666' + # green: '#b5bd68' + # yellow: '#f0c674' + # blue: '#81a2be' + # magenta: '#b294bb' + # cyan: '#8abeb7' + # white: '#c5c8c6' + + # Bright colors + #bright: + # black: '#666666' + # red: '#d54e53' + # green: '#b9ca4a' + # yellow: '#e7c547' + # blue: '#7aa6da' + # magenta: '#c397d8' + # cyan: '#70c0b1' + # white: '#eaeaea' + + # 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 + +# 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/winit/*/winit/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 +# - ToggleMaximized +# - 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: CreateNewWindow } + #- { 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 + + # Renderer override. + # - glsl3 + # - gles2 + # - gles2_pure + #renderer: None + + # Print all received window events. + #print_events: false + + # Highlight window damage information. + #highlight_damage: false diff --git a/dot_config/hypr/hyprland.conf b/dot_config/hypr/hyprland.conf new file mode 100644 index 0000000..d756b76 --- /dev/null +++ b/dot_config/hypr/hyprland.conf @@ -0,0 +1,180 @@ +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,auto +monitor=eDP-1,1920x1200@60,0x0,1 + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +exec-once = waybar & hyprpaper +exec-once = dex -a -s /etc/xdg/autostart/:~/.config/autostart/ +exec-once = /usr/bin/udiskie --tray +exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 +exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = us,de + kb_variant = + kb_model = + kb_options = compose:menu,grp:alt_shift_toggle + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 5 + gaps_out = 20 + border_size = 2 + col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + col.inactive_border = rgba(595959aa) + + layout = master +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = yes + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_is_master = false + mfact = 0.40 + no_gaps_when_only = false + orientation = center +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = off +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more +device:epic mouse V1 { + sensitivity = -0.5 +} + +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +windowrulev2 = float,class:^(org.twosheds.iwgtk)$,title:^(iwgtk)$ +windowrulev2 = float,class:^(pavucontrol)$,title:^(Volume Control)$ +windowrulev2 = float,class:^(org.keepassxc.KeePassXC)$,title:^(KeePassXC - Browser Access Request)$ +windowrulev2 = float,class:^(org.gnome.Calculator)$,title:^(Calculator)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, Return, exec, alacritty +bind = $mainMod, q, killactive, +bind = $mainMod, BackSpace, exit, +bind = $mainMod, E, exec, thunar +bind = $mainMod, V, togglefloating, +bind = $mainMod, Space, exec, rofi -show drun -config $HOME/.config/rofi/rofidmenu.rasi +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod, F, fullscreen +bind = $mainMod, W, togglegroup +bind = $mainMod SHIFT, W, moveoutofgroup +bind = $mainMod, TAB, changegroupactive, f +bind = $mainMod SHIFT, TAB, changegroupactive, b +bind = ALT,Tab,cyclenext,prev +bind = ALT,Tab,bringactivetotop +bind = $mainMod, M, layoutmsg,swapwithmaster +bind = $mainMod SHIFT, left, movewindow, l +bind = $mainMod SHIFT, right, movewindow, r +bind = $mainMod SHIFT, up, movewindow, u +bind = $mainMod SHIFT, down, movewindow, d +bind = $mainMod SHIFT, M, layoutmsg,addmaster +bind = $mainMod SHIFT, S, layoutmsg,swapnext +bind = $mainMod, L, exec, swaylock --screenshots --clock --indicator --indicator-radius 100 --indicator-thickness 7 --effect-blur 7x5 --effect-vignette 0.5:0.5 --ring-color bb00cc --key-hl-color 880033 --line-color 00000000 --inside-color 00000088 --separator-color 00000000 --grace 2 --fade-in 0.2 +bind = $mainMod SHIFT,P,exec, /bin/bash -c ~/.local/bin/screenshot.sh +bind = $mainMod SHIFT,O, layoutmsg,orientationnext +bind = $mainMod, period, exec, rofimoji + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + diff --git a/dot_config/hypr/hyprpaper.conf b/dot_config/hypr/hyprpaper.conf new file mode 100644 index 0000000..34c6068 --- /dev/null +++ b/dot_config/hypr/hyprpaper.conf @@ -0,0 +1,3 @@ +preload = ~/Pictures/Wallpaper/arch_linux_mountain.jpg + +wallpaper = HDMI-A-1,~/Pictures/Wallpaper/arch_linux_mountain.jpg diff --git a/dot_config/starship.toml b/dot_config/starship.toml new file mode 100644 index 0000000..2fb7ba3 --- /dev/null +++ b/dot_config/starship.toml @@ -0,0 +1,53 @@ +# Get editor completions based on the config schema +"$schema" = 'https://starship.rs/config-schema.json' + +# Inserts a blank line between shell prompts +add_newline = true + +format = """\ +[](bg:#030B16 fg:#7DF9AA)\ +[ ](bg:#7DF9AA fg:#090c0c)\ +[](fg:#7DF9AA bg:#1C3A5E)\ +$time\ +[](fg:#1C3A5E bg:#3B76F0)\ +$directory\ +[](fg:#3B76F0 bg:#FCF392)\ +$git_branch\ +$git_status\ +$git_metrics\ +[](fg:#FCF392 bg:#030B16)\ +$character\ +""" + +[directory] +format = "[  $path ]($style)" +style = "fg:#E4E4E4 bg:#3B76F0" + +[git_branch] +format = '[ $symbol$branch(:$remote_branch) ]($style)' +symbol = "  " +style = "fg:#1C3A5E bg:#FCF392" + +[git_status] +format = '[$all_status]($style)' +style = "fg:#1C3A5E bg:#FCF392" + +[git_metrics] +format = "([+$added]($added_style))[]($added_style)" +added_style = "fg:#1C3A5E bg:#FCF392" +deleted_style = "fg:bright-red bg:235" +disabled = false + +[cmd_duration] +format = "[  $duration ]($style)" +style = "fg:bright-white bg:18" + +[character] +success_symbol = '[ ➜](bold green) ' +error_symbol = '[ ✗](#E84D44) ' + +[time] +disabled = false +time_format = "%R" # Hour:Minute Format +style = "bg:#1d2230" +format = '[[ 󱑍 $time ](bg:#1C3A5E fg:#8DFBD2)]($style)' diff --git a/dot_config/zsh/01-env.zsh b/dot_config/zsh/01-env.zsh new file mode 100644 index 0000000..f6a5e76 --- /dev/null +++ b/dot_config/zsh/01-env.zsh @@ -0,0 +1,63 @@ +# Directories {{{ # +export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" +export XDG_CACHE_HOME=$HOME/.cache +export XDG_DATA_HOME=$HOME/.local/share +export XDG_STATE_HOME=$HOME/.local/state +# }}} Directories # + +# Wayland {{{{ # +export _JAVA_AWT_WM_NONREPARENTING=1 +# }}}} Wayland + +# Libvirt {{{{ +export LIBVIRT_DEFAULT_URI="qemu:///session" +# }}}} Libvirt # + +# dotnet {{{ # +export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 +# }}} dotnet # + + +# Env Programs {{{ # +export EDITOR=nvim +export BROWSER=/usr/bin/firefox +export GIT_EDITOR=nvim +export VISUAL=nvim +export TERMINAL=alacritty +export SOPS_GPG_EXEC=gpg2 +export CHROME_EXECUTABLE=/usr/bin/chromium +export TERM="xterm-256color" +# }}} Env Programs # + +# bat settings {{{ # +export BAT_THEME="Solarized (dark)" +export BAT_STYLE="full" +# }}} bat # + +# fzf settings {{{ # +_fzf_compgen_path() { + fd --hidden --follow --exclude ".git" --exclude ".wine" . "$1" +} +# Use fd to generate the list for directory completion +_fzf_compgen_dir() { + fd --type d --hidden --follow --exclude ".git" . "$1" +} + +export FZF_DEFAULT_COMMAND='fd --hidden --follow --type f --exclude .git --exclude .wine' +export FZF_TMUX=1 +export FZF_TMUX_HEIGHT=30\% +export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" +export FZF_ALT_C_COMMAND='command cat <(fd -t d --exclude .git --exclude .wine) <(fd -t d --hidden --follow --exclude .git --exclude .wine . ~)' +export FZF_ALT_C_OPTS="--preview '(highlight -O ansi -l {} 2> /dev/null || cat {} || tree -C {}) 2> /dev/null | head -200'" +# }}} fzf settings # + +# History {{{ # +[ -z "$HISTFILE" ] && HISTFILE="$HOME/.cache/zsh/history" +[ ! -d $(dirname $HISTFILE) ] && mkdir -p $(dirname $HISTFILE) +export HISTSIZE=10000 +export SAVEHIST=10000 +# }}} History # + +# ZSH options {{{{ # +setopt autocd +# }}}} ZSH options # diff --git a/dot_config/zsh/02-plugins.zsh b/dot_config/zsh/02-plugins.zsh new file mode 100644 index 0000000..8a02e10 --- /dev/null +++ b/dot_config/zsh/02-plugins.zsh @@ -0,0 +1,15 @@ +[[ -f $ZNAP_HOME/znap.zsh ]] || + git clone --depth 1 https://github.com/marlonrichert/zsh-snap.git $ZNAP_HOME + +source $ZNAP_HOME/znap.zsh + +znap source ohmyzsh/ohmyzsh \ + plugins/{docker,kubectl,git,grc,fzf,zoxide,terraform} + + +command -v golangci-lint &> /dev/null && znap fpath _golangci-lint 'golangci-lint completion zsh' +command -v goreleaser &> /dev/null && znap fpath _goreleaser 'goreleaser completion zsh' +command -v mockery &> /dev/null && znap fpath _mockery 'mockery completion zsh' +command -v buildr&> /dev/null && znap fpath _mockery 'buildr completion zsh' + +znap source marlonrichert/zsh-autocomplete diff --git a/dot_config/zsh/03-aliases.zsh b/dot_config/zsh/03-aliases.zsh new file mode 100644 index 0000000..78072b8 --- /dev/null +++ b/dot_config/zsh/03-aliases.zsh @@ -0,0 +1,20 @@ +# Editor {{{ # +alias vim='nvim' +alias vi='nvim' +alias edit='nvim' +# }}} Editor # + +alias cat='bat' +alias grep='grep --color=always' +alias lsd='lsd -lh' +alias ls=lsd +alias tree='exa -lh --tree --git' +alias df=duf +alias ytv='youtube-viewer --video-player=mplayer -novideo' +alias ytdlm="youtube-dl --extract-audio --audio-format flac" +alias http='http --pretty all --style monokai' +alias srm='shred -zvu -n 5' + +if [ -d $HOME/.dotnet/dotnet ]; then +alias dotnet="$HOME/.dotnet/dotnet" +fi \ No newline at end of file diff --git a/dot_gitconfig.tmpl b/dot_gitconfig.tmpl new file mode 100644 index 0000000..f0d893b --- /dev/null +++ b/dot_gitconfig.tmpl @@ -0,0 +1,55 @@ +[user] + email = {{ .email }} + name = {{ .name }} + signingkey = /Users/baez/.ssh/id_ed25519 +[core] + autocrlf = input + pager = delta + excludesfile = /Users/baez/.gitignore + +[diff] + colorMoved = default + tool = difftastic + +[pager] + difftool = true + +[pull] + rebase = true + +[difftool] + prompt = false + +[difftool "difftastic"] + cmd = difft "$LOCAL" "$REMOTE" + +[delta] + plus-color = "#012800" + minus-color = "#340001" + syntax-theme = Monokai Extended + line-numbers = true + side-by-side = true + inspect-raw-lines = false + +[diff] + +[interactive] + diffFilter = delta --color-only + +[alias] + dft = difftool +[credential] + helper = keepassxc +[push] + autoSetupRemote = true +[gpg] + format = ssh +[filter "lfs"] + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process + required = true +[commit] + gpgsign = true +[init] + defaultBranch = main diff --git a/dot_gitignore b/dot_gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/dot_gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/dot_zshrc.tmpl b/dot_zshrc.tmpl new file mode 100644 index 0000000..7b57569 --- /dev/null +++ b/dot_zshrc.tmpl @@ -0,0 +1,58 @@ +export ZSH_CACHE_DIR=$HOME/.config/zsh/cache + +{{- if eq .chezmoi.os "darwin" }} +export PATH="$PATH:/opt/homebrew/bin" +{{- end }} + +# scripts from ~/bin +export PATH="$PATH:$HOME/.local/bin" + +macchina + +# Cargo env +if [ -d $HOME/.cargo/bin ]; then + export PATH="$PATH:$HOME/.cargo/bin" +fi + +# Go +if [ -d /usr/local/go/bin ]; then + export PATH="$PATH:/usr/local/go/bin" +fi +export PATH="$PATH:$HOME/go/bin" + +# Yarn +if [ -d $HOME/.yarn/bin ]; then + export PATH="$PATH:$HOME/.yarn/bin" +fi + +# Jetbrains Toolbox +{{- if eq .chezmoi.os "darwin" }} +if [ -d "$HOME/Library/Application Support/JetBrains/Toolbox/scripts" ]; then + export PATH="$PATH:$HOME/Library/Application Support/JetBrains/Toolbox/scripts" +fi +{{- else if eq .chezmoi.os "linux" }} +if [ -d "$HOME/.local/share/JetBrains/Toolbox/scripts" ]; then + export PATH="$PATH:$HOME/.local/share/JetBrains/Toolbox/scripts" +fi +{{- end }} + +# Dotnet +if [ -d $HOME/.dotnet/sdk ]; then + export DOTNET_ROOT=$HOME/.dotnet + export PATH="$PATH:$DOTNET_ROOT" +elif [ -d /usr/local/dotnet/sdk ]; then + export DOTNET_ROOT=/usr/local/dotnet + export PATH="$PATH:/usr/local/dotnet" +fi + +export PATH="$PATH:$HOME/.dotnet/tools" + +# Znap +export ZNAP_HOME=$HOME/.local/share/znap + +for file in $HOME/.config/zsh/*.zsh; do + source "$file" +done + +znap eval starship 'starship init zsh --print-full-init' +znap prompt \ No newline at end of file diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..611a9b7 --- /dev/null +++ b/setup.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +export PATH=$PATH:$HOME/.local/bin + +chezmoi init --apply https://code.icb4dc0.de/prskr/dotfiles.git + +if $(which dnf 2>&1 > /dev/null); then +sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo +sudo dnf install -y \ + zoxide \ + terraform \ + helm \ + ansible \ + python3-kubernetes \ + fontawesome-fonts \ + fontawesome5-free-fonts +fi \ No newline at end of file