add nix dotfiles

This commit is contained in:
Anthony Rodriguez 2024-08-25 21:58:12 +02:00
parent 1058657744
commit 1d912e1ee9
Signed by: nezia
GPG key ID: EE3BE97C040A86CE
394 changed files with 1645 additions and 8033 deletions

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Anthony Rodriguez
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,81 +1,59 @@
# My NixOS Flake
# My dotfiles This repository contains my personal NixOS configurations for two machines: my laptop (`vamos`) and my desktop computer (`solaire`). These configurations are managed using the Nix Flake system to ensure reproducibility and ease of deployment.
- [My dotfiles](#my-dotfiles) ## Structure
- [Installing](#installing)
- [Prerequisites](#prerequisites)
- [Fedora (desktop)](#fedora-desktop)
- [Arch (window manager)](#arch-window-manager)
- [Common software](#common-software)
- [Theme](#theme)
- [Shell](#shell)
- [Window Manager configuration](#window-manager-configuration)
- [Software used](#software-used)
- [Services and timers](#services-and-timers)
I use different flavors for my configuration, as I prefer having a window manager on my laptop, and a desktop environment on my desktop. Therefore, the programs installed as well as the configuration files are different for each of them. Currently, it works using the operating system name but I'm currently working on changing it as you might want to use a window manager on Fedora for instance. The different configurations are going to be detailed below. - `flake.nix`: The main entry point for the Nix flake.
- `hosts/`: Directory containing the specific configurations for each host (`vamos` and `solaire`).
- `modules/`: Reusable NixOS modules shared between different configurations.
- `home/`: Userspace configuration, divided between laptop and desktop.
This configuration uses git submodules in order to integrate my Emacs config from a separate repository, so make sure to initialize them before trying to install it (installation instructions below). ## Hosts
Since I use 1password as my password manager, I also use it to fetch my GPG key and import it automatically, which is why it's a dependency for my configuration. It expects a document called `gpg key`in the `Personal` vault. ### Vamos (Laptop)
## Installing This is the configuration for my laptop, `vamos`. It uses Gnome, and includes settings optimized for power management, and lightweight applications.
### Prerequisites ### Solaire (Desktop)
- [git](https://git-scm.com) This is the configuration for my desktop computer, `solaire`. It also uses Gnome, and adds Nvidia drivers.
- [chezmoi](https://chezmoi.io)
- [1Password](https://1password.com) and the [1Password CLI](https://developer.1password.com/docs/cli) (these dependencies will eventually become completely optional if you are not using it)
**As of today, only Fedora is supported (with the desktop flavor) and Arch Linux (with the window manager flavor). The installation process for both of them is similar:** ## Usage
### Fedora (desktop) ### Applying the Configuration
`FLAVOR=desktop chezmoi init --apply https://github.com/nezia1/dotfiles` To apply the configuration on a machine, use the following steps:
### Arch (window manager) 1. Clone this repository:
`FLAVOR=wm chezmoi init --apply https://github.com/nezia1/dotfiles` ```bash
git clone https://github.com/nezia1/nixos-config.git
cd nixos-config
```
## Common software 2. Switch to the desired configuration:
### Theme ```bash
sudo nixos-rebuild switch --flake .#<hostname>
```
I use [catppuccin](https://github.com/catppuccin/catppuccin) as my theme Replace `<hostname>` with either `vamos` or `solaire` depending on the machine you are configuring.
(the mocha variant). I love the soothing pastel colors. The GTK theme
and the Qt5 theme are also configured to be used with supported
applications.
### Shell ### Example
I use [fish](https://github.com/fish-shell/fish-shell) as my interactive shell, but I still keep [bash](https://www.gnu.org/software/bash/) as my non-interactive shell for compatibility purposes, as some pieces of software that I use require the user to have a POSIX compliant shell. This is why I have a bash module, where I setup everything that I want to have non-interactively and interactively and if running interactively, have it start a fish session. For the laptop (`vamos`):
## Window Manager configuration ```bash
sudo nixos-rebuild switch --flake .#vamos
```
This is my laptop configuration. I like using window managers as it optimizes my screen space, and the keybindings are extremely convenient when using a trackpad compared to using a mouse. For the desktop (`solaire`):
![](./screenshots/desktop.png) ![](./screenshots/desktop-terminals.png) ```bash
sudo nixos-rebuild switch --flake .#solaire
```
### Software used ## License
- Operating system: [Arch Linux](https://archlinux.org/) This repository is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
- Window manager: [Hyprland](https://hyprland.org)
- Status bar: [Waybar](https://github.com/Alexays/Waybar)
- Application launcher: [wofi](https://sr.ht/~scoopta/wofi/)
- Terminal emulator: [kitty](https://github.com/kovidgoyal/kitty)
- Shell: [fish](https://github.com/fish-shell/fish-shell)
- Text editor: [Emacs](https://www.gnu.org/software/emacs/)
- Notification daemon: [dunst](https://github.com/dunst-project/dunst)
- Password manager: [pass](https://www.passwordstore.org/)
Hyprland is configured to use a random wallpaper from the
`$HOME/.dotfiles` directory, so you need to have your wallpapers in it.
### Services and timers
The user-services module contains different systemd daemons and timers
that you might or might not need depending on your specific use-case:
- sync: a systemd timer that synchronizes my org directory using
[rclone](https://rclone.org/) to a remote called drive (runs every 5
minutes)

View file

@ -1,55 +0,0 @@
[desktop/input-sources]
current=uint32 0
mru-sources=[('xkb', 'us'), ('xkb', 'ch+fr')]
sources=[('xkb', 'us'), ('xkb', 'ch+fr')]
xkb-options=['compose:ralt']
[desktop/interface]
color-scheme='prefer-dark'
enable-hot-corners=false
font-antialiasing='rgba'
font-hinting='full'
gtk-enable-primary-paste=false
toolkit-accessibility=false
[desktop/peripherals/keyboard]
numlock-state=true
[mutter]
edge-tiling=true
[shell/keybindings]
show-screenshot-ui=['<Shift><Super>s']
[GWeather4]
temperature-unit='centigrade'
[shell/weather]
automatic-location=true
[system/location]
enabled=true
[terminal/legacy/profiles:]
default='71a9971e-e829-43a9-9b2f-4565c855d664'
list=['71a9971e-e829-43a9-9b2f-4565c855d664']
[terminal/legacy/profiles:/:71a9971e-e829-43a9-9b2f-4565c855d664]
background-color='#303446'
cursor-background-color='#f2d5cf'
cursor-colors-set=true
cursor-foreground-color='#303446'
font='Monospace 13'
foreground-color='#c6d0f5'
highlight-background-color='#303446'
highlight-colors-set=true
highlight-foreground-color='#626880'
palette=['#51576d', '#e78284', '#a6d189', '#e5c890', '#8caaee', '#f4b8e4', '#81c8be', '#b5bfe2', '#626880', '#e78284', '#a6d189', '#e5c890', '#8caaee', '#f4b8e4', '#81c8be', '#a5adce']
use-system-font=false
use-theme-colors=false
visible-name='nezia'
custom-command='tmux'
[tweaks]
show-extensions-notice=false

View file

@ -1,6 +0,0 @@
#
# ~/.bash_profile
#
[[ -f ~/.bashrc ]] && . ~/.bashrc
. "$HOME/.cargo/env"

View file

@ -1,11 +0,0 @@
#
# ~/.bashrc
#
# if running interactively, run fish
if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=''
exec fish $LOGIN_OPTION
fi
. "$HOME/.cargo/env"

View file

View file

@ -1,18 +0,0 @@
[global]
frame_color = "#89B4FA"
separator_color= frame
font = "monospace 11"
[urgency_low]
background = "#1E1E2E"
foreground = "#CDD6F4"
[urgency_normal]
background = "#1E1E2E"
foreground = "#CDD6F4"
[urgency_critical]
background = "#1E1E2E"
foreground = "#CDD6F4"
frame_color = "#FAB387"

View file

View file

@ -1,235 +0,0 @@
# fish completion for chezmoi -*- shell-script -*-
function __chezmoi_debug
set -l file "$BASH_COMP_DEBUG_FILE"
if test -n "$file"
echo "$argv" >> $file
end
end
function __chezmoi_perform_completion
__chezmoi_debug "Starting __chezmoi_perform_completion"
# Extract all args except the last one
set -l args (commandline -opc)
# Extract the last arg and escape it in case it is a space
set -l lastArg (string escape -- (commandline -ct))
__chezmoi_debug "args: $args"
__chezmoi_debug "last arg: $lastArg"
# Disable ActiveHelp which is not supported for fish shell
set -l requestComp "CHEZMOI_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
__chezmoi_debug "Calling $requestComp"
set -l results (eval $requestComp 2> /dev/null)
# Some programs may output extra empty lines after the directive.
# Let's ignore them or else it will break completion.
# Ref: https://github.com/spf13/cobra/issues/1279
for line in $results[-1..1]
if test (string trim -- $line) = ""
# Found an empty line, remove it
set results $results[1..-2]
else
# Found non-empty line, we have our proper output
break
end
end
set -l comps $results[1..-2]
set -l directiveLine $results[-1]
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
# completions must be prefixed with the flag
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
__chezmoi_debug "Comps: $comps"
__chezmoi_debug "DirectiveLine: $directiveLine"
__chezmoi_debug "flagPrefix: $flagPrefix"
for comp in $comps
printf "%s%s\n" "$flagPrefix" "$comp"
end
printf "%s\n" "$directiveLine"
end
# this function limits calls to __chezmoi_perform_completion, by caching the result behind $__chezmoi_perform_completion_once_result
function __chezmoi_perform_completion_once
__chezmoi_debug "Starting __chezmoi_perform_completion_once"
if test -n "$__chezmoi_perform_completion_once_result"
__chezmoi_debug "Seems like a valid result already exists, skipping __chezmoi_perform_completion"
return 0
end
set --global __chezmoi_perform_completion_once_result (__chezmoi_perform_completion)
if test -z "$__chezmoi_perform_completion_once_result"
__chezmoi_debug "No completions, probably due to a failure"
return 1
end
__chezmoi_debug "Performed completions and set __chezmoi_perform_completion_once_result"
return 0
end
# this function is used to clear the $__chezmoi_perform_completion_once_result variable after completions are run
function __chezmoi_clear_perform_completion_once_result
__chezmoi_debug ""
__chezmoi_debug "========= clearing previously set __chezmoi_perform_completion_once_result variable =========="
set --erase __chezmoi_perform_completion_once_result
__chezmoi_debug "Successfully erased the variable __chezmoi_perform_completion_once_result"
end
function __chezmoi_requires_order_preservation
__chezmoi_debug ""
__chezmoi_debug "========= checking if order preservation is required =========="
__chezmoi_perform_completion_once
if test -z "$__chezmoi_perform_completion_once_result"
__chezmoi_debug "Error determining if order preservation is required"
return 1
end
set -l directive (string sub --start 2 $__chezmoi_perform_completion_once_result[-1])
__chezmoi_debug "Directive is: $directive"
set -l shellCompDirectiveKeepOrder 32
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
__chezmoi_debug "Keeporder is: $keeporder"
if test $keeporder -ne 0
__chezmoi_debug "This does require order preservation"
return 0
end
__chezmoi_debug "This doesn't require order preservation"
return 1
end
# This function does two things:
# - Obtain the completions and store them in the global __chezmoi_comp_results
# - Return false if file completion should be performed
function __chezmoi_prepare_completions
__chezmoi_debug ""
__chezmoi_debug "========= starting completion logic =========="
# Start fresh
set --erase __chezmoi_comp_results
__chezmoi_perform_completion_once
__chezmoi_debug "Completion results: $__chezmoi_perform_completion_once_result"
if test -z "$__chezmoi_perform_completion_once_result"
__chezmoi_debug "No completion, probably due to a failure"
# Might as well do file completion, in case it helps
return 1
end
set -l directive (string sub --start 2 $__chezmoi_perform_completion_once_result[-1])
set --global __chezmoi_comp_results $__chezmoi_perform_completion_once_result[1..-2]
__chezmoi_debug "Completions are: $__chezmoi_comp_results"
__chezmoi_debug "Directive is: $directive"
set -l shellCompDirectiveError 1
set -l shellCompDirectiveNoSpace 2
set -l shellCompDirectiveNoFileComp 4
set -l shellCompDirectiveFilterFileExt 8
set -l shellCompDirectiveFilterDirs 16
if test -z "$directive"
set directive 0
end
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
if test $compErr -eq 1
__chezmoi_debug "Received error directive: aborting."
# Might as well do file completion, in case it helps
return 1
end
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
if test $filefilter -eq 1; or test $dirfilter -eq 1
__chezmoi_debug "File extension filtering or directory filtering not supported"
# Do full file completion instead
return 1
end
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
__chezmoi_debug "nospace: $nospace, nofiles: $nofiles"
# If we want to prevent a space, or if file completion is NOT disabled,
# we need to count the number of valid completions.
# To do so, we will filter on prefix as the completions we have received
# may not already be filtered so as to allow fish to match on different
# criteria than the prefix.
if test $nospace -ne 0; or test $nofiles -eq 0
set -l prefix (commandline -t | string escape --style=regex)
__chezmoi_debug "prefix: $prefix"
set -l completions (string match -r -- "^$prefix.*" $__chezmoi_comp_results)
set --global __chezmoi_comp_results $completions
__chezmoi_debug "Filtered completions are: $__chezmoi_comp_results"
# Important not to quote the variable for count to work
set -l numComps (count $__chezmoi_comp_results)
__chezmoi_debug "numComps: $numComps"
if test $numComps -eq 1; and test $nospace -ne 0
# We must first split on \t to get rid of the descriptions to be
# able to check what the actual completion will be.
# We don't need descriptions anyway since there is only a single
# real completion which the shell will expand immediately.
set -l split (string split --max 1 \t $__chezmoi_comp_results[1])
# Fish won't add a space if the completion ends with any
# of the following characters: @=/:.,
set -l lastChar (string sub -s -1 -- $split)
if not string match -r -q "[@=/:.,]" -- "$lastChar"
# In other cases, to support the "nospace" directive we trick the shell
# by outputting an extra, longer completion.
__chezmoi_debug "Adding second completion to perform nospace directive"
set --global __chezmoi_comp_results $split[1] $split[1].
__chezmoi_debug "Completions are now: $__chezmoi_comp_results"
end
end
if test $numComps -eq 0; and test $nofiles -eq 0
# To be consistent with bash and zsh, we only trigger file
# completion when there are no other completions
__chezmoi_debug "Requesting file completion"
return 1
end
end
return 0
end
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
# so we can properly delete any completions provided by another script.
# Only do this if the program can be found, or else fish may print some errors; besides,
# the existing completions will only be loaded if the program can be found.
if type -q "chezmoi"
# The space after the program name is essential to trigger completion for the program
# and not completion of the program name itself.
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
complete --do-complete "chezmoi " > /dev/null 2>&1
end
# Remove any pre-existing completions for the program since we will be handling all of them.
complete -c chezmoi -e
# this will get called after the two calls below and clear the $__chezmoi_perform_completion_once_result global
complete -c chezmoi -n '__chezmoi_clear_perform_completion_once_result'
# The call to __chezmoi_prepare_completions will setup __chezmoi_comp_results
# which provides the program's completion choices.
# If this doesn't require order preservation, we don't use the -k flag
complete -c chezmoi -n 'not __chezmoi_requires_order_preservation && __chezmoi_prepare_completions' -f -a '$__chezmoi_comp_results'
# otherwise we use the -k flag
complete -k -c chezmoi -n '__chezmoi_requires_order_preservation && __chezmoi_prepare_completions' -f -a '$__chezmoi_comp_results'

View file

@ -1,7 +0,0 @@
complete --command fisher --exclusive --long help --description "Print help"
complete --command fisher --exclusive --long version --description "Print version"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"

View file

@ -1,2 +0,0 @@
abbr -a -- code codium
abbr -a -- cd z

View file

@ -1 +0,0 @@
source ~/.asdf/asdf.fish

View file

@ -1 +0,0 @@
source ~/.asdf/plugins/golang/set-env.fish

View file

@ -1 +0,0 @@
set -g fish_greeting

View file

@ -1,7 +0,0 @@
if status is-interactive
keychain --quiet -Q id_ed25519
end
if test -f ~/.keychain/$hostname-fish
source ~/.keychain/$hostname-fish
end

View file

@ -1 +0,0 @@
fish_add_path ~/bin ~/.local/bin

View file

@ -1,2 +0,0 @@
# Created by `pipx` on 2023-08-28 08:41:19
set PATH $PATH /home/nezia/.local/bin

View file

@ -1 +0,0 @@
starship init fish | source

View file

@ -1,2 +0,0 @@
set -q MY_THEME; or set -gx MY_THEME "Catppuccin Frappe"
fish_config theme choose $MY_THEME

View file

@ -1,7 +0,0 @@
if status is-interactive
and not set -q TMUX
if command -v tmux > /dev/null
exec tmux new-session -As base
end
end

View file

@ -1 +0,0 @@
fish_vi_key_bindings

View file

@ -1 +0,0 @@
zoxide init fish | source

View file

@ -1,3 +0,0 @@
catppuccin/fish
jorgebucaran/nvm.fish
patrickf1/fzf.fish

View file

@ -1,2 +0,0 @@
function fish_mode_prompt
end

View file

@ -1,240 +0,0 @@
function fisher --argument-names cmd --description "A plugin manager for Fish"
set --query fisher_path || set --local fisher_path $__fish_config_dir
set --local fisher_version 4.4.4
set --local fish_plugins $__fish_config_dir/fish_plugins
switch "$cmd"
case -v --version
echo "fisher, version $fisher_version"
case "" -h --help
echo "Usage: fisher install <plugins...> Install plugins"
echo " fisher remove <plugins...> Remove installed plugins"
echo " fisher update <plugins...> Update installed plugins"
echo " fisher update Update all installed plugins"
echo " fisher list [<regex>] List installed plugins matching regex"
echo "Options:"
echo " -v, --version Print version"
echo " -h, --help Print this help message"
echo "Variables:"
echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~
case ls list
string match --entire --regex -- "$argv[2]" $_fisher_plugins
case install update remove
isatty || read --local --null --array stdin && set --append argv $stdin
set --local install_plugins
set --local update_plugins
set --local remove_plugins
set --local arg_plugins $argv[2..-1]
set --local old_plugins $_fisher_plugins
set --local new_plugins
test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins)
if ! set --query argv[2]
if test "$cmd" != update
echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1
else if ! set --query file_plugins
echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1
end
set arg_plugins $file_plugins
end
for plugin in $arg_plugins
set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin)
contains -- "$plugin" $new_plugins || set --append new_plugins $plugin
end
if set --query argv[2]
for plugin in $new_plugins
if contains -- "$plugin" $old_plugins
test "$cmd" = remove &&
set --append remove_plugins $plugin ||
set --append update_plugins $plugin
else if test "$cmd" = install
set --append install_plugins $plugin
else
echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1
end
end
else
for plugin in $new_plugins
contains -- "$plugin" $old_plugins &&
set --append update_plugins $plugin ||
set --append install_plugins $plugin
end
for plugin in $old_plugins
contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin
end
end
set --local pid_list
set --local source_plugins
set --local fetch_plugins $update_plugins $install_plugins
set --local fish_path (status fish-path)
echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal)
for plugin in $fetch_plugins
set --local source (command mktemp -d)
set --append source_plugins $source
command mkdir -p $source/{completions,conf.d,themes,functions}
$fish_path --command "
if test -e $plugin
command cp -Rf $plugin/* $source
else
set temp (command mktemp -d)
set repo (string split -- \@ $plugin) || set repo[2] HEAD
if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1])
set name (string split -- / \$path)[-1]
set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz
else
set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2]
end
echo Fetching (set_color --underline)\$url(set_color normal)
if command curl -q --silent -L \$url | command tar -xzC \$temp -f - 2>/dev/null
command cp -Rf \$temp/*/* $source
else
echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2
command rm -rf $source
end
command rm -rf \$temp
end
set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files
" &
set --append pid_list (jobs --last --pid)
end
wait $pid_list 2>/dev/null
for plugin in $fetch_plugins
if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source
if set --local index (contains --index -- "$plugin" $install_plugins)
set --erase install_plugins[$index]
else
set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)]
end
end
end
for plugin in $update_plugins $remove_plugins
if set --local index (contains --index -- "$plugin" $_fisher_plugins)
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
if contains -- "$plugin" $remove_plugins
for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var)
emit {$name}_uninstall
end
printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
set --erase _fisher_plugins[$index]
end
command rm -rf (string replace -- \~ ~ $$plugin_files_var)
functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var)
for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var)
complete --erase --command $name
end
set --erase $plugin_files_var
end
end
if set --query update_plugins[1] || set --query install_plugins[1]
command mkdir -p $fisher_path/{functions,themes,conf.d,completions}
end
for plugin in $update_plugins $install_plugins
set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)]
set --local files $source/{functions,themes,conf.d,completions}/*
if set --local index (contains --index -- $plugin $install_plugins)
set --local user_files $fisher_path/{functions,themes,conf.d,completions}/*
set --local conflict_files
for file in (string replace -- $source/ $fisher_path/ $files)
contains -- $file $user_files && set --append conflict_files $file
end
if set --query conflict_files[1] && set --erase install_plugins[$index]
echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2
continue
end
end
for file in (string replace -- $source/ "" $files)
command cp -RLf $source/$file $fisher_path/$file
end
set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files
set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~)
contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin
contains -- $plugin $install_plugins && set --local event install || set --local event update
printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~
for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~)
source $file
if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file)
emit {$name}_$event
end
end
end
command rm -rf $source_plugins
if set --query _fisher_plugins[1]
set --local commit_plugins
for plugin in $file_plugins
contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin
end
for plugin in $_fisher_plugins
contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin
end
printf "%s\n" $commit_plugins >$fish_plugins
else
set --erase _fisher_plugins
command rm -f $fish_plugins
end
set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins)
test "$total" != "0 0 0" && echo (string join ", " (
test $total[1] = 0 || echo "Installed $total[1]") (
test $total[2] = 0 || echo "Updated $total[2]") (
test $total[3] = 0 || echo "Removed $total[3]")
) plugin/s
case \*
echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1
end
end
if ! set --query _fisher_upgraded_to_4_4
set --universal _fisher_upgraded_to_4_4
if functions --query _fisher_list
set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share
command rm -rf $XDG_DATA_HOME/fisher
functions --erase _fisher_{list,plugin_parse}
fisher update >/dev/null 2>/dev/null
else
for var in (set --names | string match --entire --regex '^_fisher_.+_files$')
set $var (string replace -- ~ \~ $$var)
end
functions --erase _fisher_fish_postexec
end
end

View file

@ -1,13 +0,0 @@
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
</prefer>
</alias>
</fontconfig>

View file

@ -1,12 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="scan">
<test name="family" compare="contains">
<string>Monaspace</string>
</test>
<edit name="spacing">
<const>dual</const>
</edit>
</match>
</fontconfig>

View file

@ -1,14 +0,0 @@
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>DejaVu Serif</family>
</prefer>
</alias>
</fontconfig>

View file

@ -1,11 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>monospace</family>
<prefer>
<family>Monaspace Neon</family>
</prefer>
</alias>
</fontconfig>

View file

@ -1,10 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Twemoji</family>
</prefer>
</alias>
</fontconfig>

View file

@ -1,17 +0,0 @@
[Settings]
gtk-theme-name=Catppuccin-Mocha-Standard-Lavender-dark
gtk-icon-theme-name=Papirus-Dark
gtk-font-name=Cantarell 11
gtk-cursor-theme-name=Adwaita
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=1

View file

View file

@ -1,61 +0,0 @@
$rosewaterAlpha = fff5e0dc
$flamingoAlpha = fff2cdcd
$pinkAlpha = fff5c2e7
$mauveAlpha = ffcba6f7
$redAlpha = fff38ba8
$maroonAlpha = ffeba0ac
$peachAlpha = fffab387
$yellowAlpha = fff9e2af
$greenAlpha = ffa6e3a1
$tealAlpha = ff94e2d5
$skyAlpha = ff89dceb
$sapphireAlpha = ff74c7ec
$blueAlpha = ff89b4fa
$lavenderAlpha = ffb4befe
$textAlpha = ffcdd6f4
$subtext1Alpha = ffbac2de
$subtext0Alpha = ffa6adc8
$overlay2Alpha = ff9399b2
$overlay1Alpha = ff7f849c
$overlay0Alpha = ff6c7086
$surface2Alpha = ff585b70
$surface1Alpha = ff45475a
$surface0Alpha = ff313244
$baseAlpha = ff1e1e2e
$mantleAlpha = ff181825
$crustAlpha = ff11111b
$rosewater = 0xfff5e0dc
$flamingo = 0xfff2cdcd
$pink = 0xfff5c2e7
$mauve = 0xffcba6f7
$red = 0xfff38ba8
$maroon = 0xffeba0ac
$peach = 0xfffab387
$yellow = 0xfff9e2af
$green = 0xffa6e3a1
$teal = 0xff94e2d5
$sky = 0xff89dceb
$sapphire = 0xff74c7ec
$blue = 0xff89b4fa
$lavender = 0xffb4befe
$text = 0xffcdd6f4
$subtext1 = 0xffbac2de
$subtext0 = 0xffa6adc8
$overlay2 = 0xff9399b2
$overlay1 = 0xff7f849c
$overlay0 = 0xff6c7086
$surface2 = 0xff585b70
$surface1 = 0xff45475a
$surface0 = 0xff313244
$base = 0xff1e1e2e
$mantle = 0xff181825
$crust = 0xff11111b

View file

@ -1,197 +0,0 @@
# This is an example Hyprland config file.
#
# Refer to the wiki for more information.
#
# 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
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# Some default env vars.
env = XCURSOR_SIZE,24
source=~/.config/hypr/mocha.conf
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us
kb_variant =
kb_model =
kb_options = compose:ralt, caps:ctrl_modifier
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = true
}
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 = 3
col.active_border = $lavender
col.inactive_border = $overlay0
layout = dwindle
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 5
blur = false
blur_size = 3
blur_passes = 1
blur_new_optimizations = true
drop_shadow = false
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
animations {
enabled = true
# 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 = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = true
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic-mouse-v1 {
sensitivity = -0.5
}
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Q, exec, kitty
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $VISUAL
bind = $mainMod, W, exec, firefox
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, wofi --show drun -I
bind = $mainMod, P, exec, $HOME/.scripts/passwmenu
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, F, fullscreen
bind = $mainMod_SHIFT, W, exec, ~/.scripts/wwifi.sh
bind = $mainMod_SHIFT, Q, exit
# 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
# Media / brightness
bind=,XF86MonBrightnessUp,exec,brightnessctl set +5%
bind=,XF86MonBrightnessDown,exec,brightnessctl set 5%-
bind=,XF86AudioRaiseVolume,exec,pactl set-sink-volume @DEFAULT_SINK@ +5%
bind=,XF86AudioLowerVolume,exec,pactl set-sink-volume @DEFAULT_SINK@ -5%
bind=,XF86AudioMute,exec,pactl set-sink-mute @DEFAULT_SINK@ toggle
# Screenshot
bind=,Print,exec,grim -o "eDP-1" && notify-send "screenshot taken"
bind=CTRL,Print,exec,grim -g "$(slurp)" - | wl-copy && notify-send "screenshot taken and sent to clipboard"
# lock computer
bind = $mainMod, l, exec,swaylock
bind = ,switch:Lid Switch,exec,systemctl suspend
# emoji picker
bind = $mainMod, period, exec, $HOME/.scripts/wemoji.sh
# hyprland related
exec-once=sh ~/.scripts/start-waybar.sh
exec-once=/usr/lib/polkit-kde-authentication-agent-1
exec-once=dunst
exec-once= ~/.scripts/hyprpaper-generate-config.sh && hyprpaper
# window rules
windowrule=workspace 1 silent,kitty
windowrule=workspace 2 silent,firefox
windowrule=workspace 3 silent,Emacs
windowrule=workspace 4 silent,Spotify
windowrulev2 = workspace 5, title:^(.*(Disc|WebC)ord.*)$
windowrule=float,^(.*)(KeePassXC)$
windowrulev2 = idleinhibit always,title:^(.*YouTube.*)$
# personal apps
exec-once=discord
exec-once=spotify-launcher
exec-once=swayidle -w timeout 180 'swaylock' timeout 600 '[[ $(cat /sys/class/power_supply/AC/online) -eq 0 ]] && systemctl suspend-then-hibernate' before-sleep 'swaylock'
env=MOZ_ENABLE_WAYLAND

View file

@ -1,62 +0,0 @@
$rosewaterAlpha = fff5e0dc
$flamingoAlpha = fff2cdcd
$pinkAlpha = fff5c2e7
$mauveAlpha = ffcba6f7
$redAlpha = fff38ba8
$maroonAlpha = ffeba0ac
$peachAlpha = fffab387
$yellowAlpha = fff9e2af
$greenAlpha = ffa6e3a1
$tealAlpha = ff94e2d5
$skyAlpha = ff89dceb
$sapphireAlpha = ff74c7ec
$blueAlpha = ff89b4fa
$lavenderAlpha = ffb4befe
$textAlpha = ffcdd6f4
$subtext1Alpha = ffbac2de
$subtext0Alpha = ffa6adc8
$overlay2Alpha = ff9399b2
$overlay1Alpha = ff7f849c
$overlay0Alpha = ff6c7086
$surface2Alpha = ff585b70
$surface1Alpha = ff45475a
$surface0Alpha = ff313244
$baseAlpha = ff1e1e2e
$mantleAlpha = ff181825
$crustAlpha = ff11111b
$rosewater = 0xfff5e0dc
$flamingo = 0xfff2cdcd
$pink = 0xfff5c2e7
$mauve = 0xffcba6f7
$red = 0xfff38ba8
$maroon = 0xffeba0ac
$peach = 0xfffab387
$yellow = 0xfff9e2af
$green = 0xffa6e3a1
$teal = 0xff94e2d5
$sky = 0xff89dceb
$sapphire = 0xff74c7ec
$blue = 0xff89b4fa
$lavender = 0xffb4befe
$text = 0xffcdd6f4
$subtext1 = 0xffbac2de
$subtext0 = 0xffa6adc8
$overlay2 = 0xff9399b2
$overlay1 = 0xff7f849c
$overlay0 = 0xff6c7086
$surface2 = 0xff585b70
$surface1 = 0xff45475a
$surface0 = 0xff313244
$base = 0xff1e1e2e
$mantle = 0xff181825
$crust = 0xff11111b

View file

@ -1,80 +0,0 @@
# vim:ft=kitty
## name: Catppuccin-Frappe
## author: Pocco81 (https://github.com/Pocco81)
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/frappe.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #C6D0F5
background #303446
selection_foreground #303446
selection_background #F2D5CF
# Cursor colors
cursor #F2D5CF
cursor_text_color #303446
# URL underline color when hovering with mouse
url_color #F2D5CF
# Kitty window border colors
active_border_color #BABBF1
inactive_border_color #737994
bell_border_color #E5C890
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #232634
active_tab_background #CA9EE6
inactive_tab_foreground #C6D0F5
inactive_tab_background #292C3C
tab_bar_background #232634
# Colors for marks (marked text in the terminal)
mark1_foreground #303446
mark1_background #BABBF1
mark2_foreground #303446
mark2_background #CA9EE6
mark3_foreground #303446
mark3_background #85C1DC
# The 16 terminal colors
# black
color0 #51576D
color8 #626880
# red
color1 #E78284
color9 #E78284
# green
color2 #A6D189
color10 #A6D189
# yellow
color3 #E5C890
color11 #E5C890
# blue
color4 #8CAAEE
color12 #8CAAEE
# magenta
color5 #F4B8E4
color13 #F4B8E4
# cyan
color6 #81C8BE
color14 #81C8BE
# white
color7 #B5BFE2
color15 #A5ADCE

File diff suppressed because it is too large Load diff

View file

@ -1,3 +0,0 @@
[Default Applications]
application/x-directory=emacs-dired.desktop
inode/directory=emacs-dired.desktop

View file

@ -1,7 +0,0 @@
require("core.autocmds")
require("core.options")
require("config.lazy")
if vim.g.neovide then
require("core.neovide")
end

View file

@ -1,31 +0,0 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "b84eeb3641b08324287587b426ec974b888390d9" },
"alpha-nvim": { "branch": "main", "commit": "355fbb81a59637a8963cf5847074f8c44dbef11f" },
"catppuccin": { "branch": "main", "commit": "18bab5ec4c782cdf7d7525dbe89c60bfa02fc195" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"indent-blankline.nvim": { "branch": "master", "commit": "dddb5d21811c319eb6e51a993d8fb44b193aae3f" },
"lazy.nvim": { "branch": "main", "commit": "077102c5bfc578693f12377846d427f49bc50076" },
"lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "1c55991321d1a861537e32446affc5de5d9a6eaf" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "29f7c215332ba95e470811c380ddbce2cebe2af4" },
"nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },
"nvim-autopairs": { "branch": "master", "commit": "48ca9aaee733911424646cb1605f27bc01dedbe3" },
"nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" },
"nvim-lspconfig": { "branch": "master", "commit": "a89de2e049b5f89a0ee55029d5a31213bd4de6f8" },
"nvim-treesitter": { "branch": "master", "commit": "59cc5f35656f97bc964229e3ec5066a7b5a8ee5b" },
"nvim-web-devicons": { "branch": "master", "commit": "3722e3d1fb5fe1896a104eb489e8f8651260b520" },
"plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" },
"project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
"telescope-project.nvim": { "branch": "master", "commit": "1aaf16580a614601a7f7077d9639aeb457dc5559" },
"telescope.nvim": { "branch": "master", "commit": "54930e1abfc94409e1bb9266e752ef8379008592" },
"vim-snippets": { "branch": "master", "commit": "f0a3184d9f90b96b044d5914625a25c554d7f301" },
"vim-tmux-navigator": { "branch": "master", "commit": "5b3c701686fb4e6629c100ed32e827edf8dad01e" },
"which-key.nvim": { "branch": "main", "commit": "6c1584eb76b55629702716995cca4ae2798a9cca" }
}

View file

@ -1,35 +0,0 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
checker = { enabled = true },
})

View file

@ -1,8 +0,0 @@
local autocmd = vim.api.nvim_create_autocmd -- Create autocommand
autocmd("BufWritePre", {
buffer = buffer,
callback = function()
vim.lsp.buf.format { async = false }
end
})

View file

@ -1 +0,0 @@
vim.o.guifont = "monospace:h14" -- text below applies for VimScript

View file

@ -1,4 +0,0 @@
vim.g.mapleader = " "
vim.wo.relativenumber = true
vim.opt.foldmethod = "indent"
vim.opt.foldlevel = 99

View file

@ -1,41 +0,0 @@
return {
'goolord/alpha-nvim',
dependencies = {
"nvim-telescope/telescope.nvim",
},
config = function()
local alpha = require 'alpha'
local dashboard = require 'alpha.themes.dashboard'
local frappe = require("catppuccin.palettes").get_palette "frappe"
vim.api.nvim_set_hl(0, 'DashboardHeader', { fg = frappe.lavender })
dashboard.section.header.val = {
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⡀⠒⠒⠦⣄⡀⠀⠀⠀⠀⠀⠀⠀",
"⠀⠀⠀⠀⠀⢀⣤⣶⡾⠿⠿⠿⠿⣿⣿⣶⣦⣄⠙⠷⣤⡀⠀⠀⠀⠀",
"⠀⠀⠀⣠⡾⠛⠉⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣿⣷⣄⠘⢿⡄⠀⠀⠀",
"⠀⢀⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠐⠂⠠⢄⡀⠈⢿⣿⣧⠈⢿⡄⠀⠀",
"⢀⠏⠀⠀⠀⢀⠄⣀⣴⣾⠿⠛⠛⠛⠷⣦⡙⢦⠀⢻⣿⡆⠘⡇⠀⠀",
"⠀⠀⠀⠀⡐⢁⣴⡿⠋⢀⠠⣠⠤⠒⠲⡜⣧⢸⠄⢸⣿⡇⠀⡇⠀⠀",
"⠀⠀⠀⡼⠀⣾⡿⠁⣠⢃⡞⢁⢔⣆⠔⣰⠏⡼⠀⣸⣿⠃⢸⠃⠀⠀",
"⠀⠀⢰⡇⢸⣿⡇⠀⡇⢸⡇⣇⣀⣠⠔⠫⠊⠀⣰⣿⠏⡠⠃⠀⠀⢀",
"⠀⠀⢸⡇⠸⣿⣷⠀⢳⡈⢿⣦⣀⣀⣀⣠⣴⣾⠟⠁⠀⠀⠀⠀⢀⡎",
"⠀⠀⠘⣷⠀⢻⣿⣧⠀⠙⠢⠌⢉⣛⠛⠛⠉⠀⠀⠀⠀⠀⠀⣠⠎⠀",
"⠀⠀⠀⠹⣧⡀⠻⣿⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡾⠃⠀⠀",
"⠀⠀⠀⠀⠈⠻⣤⡈⠻⢿⣿⣷⣦⣤⣤⣤⣤⣤⣴⡾⠛⠉⠀⠀⠀⠀",
"⠀⠀⠀⠀⠀⠀⠈⠙⠶⢤⣈⣉⠛⠛⠛⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀",
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀"
}
dashboard.section.header.opts.hl = 'DashboardHeader'
dashboard.section.buttons.val = {
dashboard.button("e", " New file", ":ene <BAR> startinsert <CR>"),
dashboard.button("f", "󰈞 Find file", ":Telescope find_files <CR>"),
dashboard.button("p", " Open project", ":Telescope projects<CR>"),
}
alpha.setup(dashboard.opts)
end
};

View file

@ -1,7 +0,0 @@
return {
'windwp/nvim-autopairs',
event = "InsertEnter",
config = true
-- use opts = {} for passing setup options
-- this is equalent to setup({}) function
}

View file

@ -1,8 +0,0 @@
return {
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
config = function()
vim.cmd.colorscheme "catppuccin-frappe"
end,
}

View file

@ -1,101 +0,0 @@
return {
{ "williamboman/mason.nvim", opts = {} },
{
"williamboman/mason-lspconfig.nvim",
opts = {
ensure_installed = { "gopls", "lua_ls" },
},
},
{
"neovim/nvim-lspconfig",
config = function()
require("lspconfig").gopls.setup {}
require("lspconfig").lua_ls.setup {}
end,
keys = {
-- Keymap for LSP actions
{ "gd", vim.lsp.buf.definition, desc = "Go to Definition" },
{ "gr", vim.lsp.buf.references, desc = "Go to References" },
{ "gi", vim.lsp.buf.implementation, desc = "Go to Implementation" },
{ "K", vim.lsp.buf.hover, desc = "Hover Documentation" },
{ "<leader>r", vim.lsp.buf.rename, desc = "Rename Symbol" }
},
},
{
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
"honza/vim-snippets",
"hrsh7th/cmp-nvim-lsp-signature-help",
},
opts = function(_, opts)
local cmp = require "cmp"
local has_words_before = function()
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and
vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") ==
nil
end
require("luasnip.loaders.from_snipmate").lazy_load()
-- Setup cmp with options
opts.snippet = {
expand = function(args)
require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
end,
}
local luasnip = require('luasnip')
opts.mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Enter key to confirm completion
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item() -- Navigate to the next item in the list
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump() -- Expand or jump to the next snippet placeholder
elseif has_words_before() then
cmp.complete() -- Trigger completion if a word is before the cursor
else
fallback() -- Insert a tab character if nothing else applies
end
end, { "i", "s" }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item() -- Navigate to the previous item in the list
elseif luasnip.jumpable(-1) then
luasnip.jump(-1) -- Jump to the previous snippet placeholder
else
fallback() -- Insert a tab character if nothing else applies
end
end, { "i", "s" }),
})
opts.sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'luasnip' }, -- For luasnip users.
}, {
{ name = 'buffer' },
{ name = 'nvim_lsp_signature_help' },
})
return opts
end,
},
{
'numToStr/Comment.nvim',
opts = {
-- add any options here
}
}
}

View file

@ -1,13 +0,0 @@
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
"MunifTanjim/nui.nvim",
-- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information
},
keys = {
{ "<leader>ft", "<cmd>Neotree toggle<cr>", desc = "NeoTree" },
},
}

View file

@ -1,45 +0,0 @@
return {
"ahmedkhalf/project.nvim",
config = function()
require 'project_nvim'.setup {
-- Manual mode doesn't automatically change your root directory, so you have
-- the option to manually do so using `:ProjectRoot` command.
manual_mode = false,
-- Methods of detecting the root directory. **"lsp"** uses the native neovim
-- lsp, while **"pattern"** uses vim-rooter like glob pattern matching. Here
-- order matters: if one is not detected, the other is used as fallback. You
-- can also delete or rearangne the detection methods.
detection_methods = { "lsp", "pattern" },
-- All the patterns used to detect root dir, when **"pattern"** is in
-- detection_methods
patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" },
-- Table of lsp clients to ignore by name
-- eg: { "efm", ... }
ignore_lsp = {},
-- Don't calculate root dir on specific directories
-- Ex: { "~/.cargo/*", ... }
exclude_dirs = {},
-- Show hidden files in telescope
show_hidden = false,
-- When set to false, you will get a message when project.nvim changes your
-- directory.
silent_chdir = true,
-- What scope to change the directory, valid options are
-- * global (default)
-- * tab
-- * win
scope_chdir = 'global',
-- Path where project.nvim will store the project history for use in
-- telescope
datapath = vim.fn.stdpath("data"),
}
end
}

View file

@ -1,7 +0,0 @@
return {
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
opts = {
extensions = { "mason", "neo-tree" }
}
}

View file

@ -1,24 +0,0 @@
return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local configs = require("nvim-treesitter.configs")
configs.setup({
ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "elixir", "heex", "javascript", "html", "go" },
sync_install = false,
highlight = { enable = true },
indent = { enable = true },
})
end
},
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
---@module "ibl"
---@type ibl.config
opts = {},
}
}

View file

@ -1,21 +0,0 @@
return {
'nvim-telescope/telescope.nvim',
tag = "0.1.3",
lazy = true,
dependencies = {
'nvim-lua/plenary.nvim',
'ahmedkhalf/project.nvim'
},
opts = {}, -- define config options here, or use a config() function
config = function()
require('telescope').load_extension('projects')
end,
keys = {
{ '<leader>ff', function() require 'telescope.builtin'.find_files() end, desc = 'Find files', mode = 'n' },
{ '<leader>fg', function() require('telescope.builtin').live_grep() end, desc = 'Live grep', mode = 'n' },
{ '<leader>fb', function() require('telescope.builtin').buffers() end, desc = 'Buffers', mode = 'n' },
{ '<leader>fh', function() require('telescope.builtin').help_tags() end, desc = 'Help tags', mode = 'n' },
{ '<leader>fp', function() require('telescope').extensions.projects.projects {} end, desc = 'Projects', mode = 'n' },
{ '<leader>fd', "<cmd>Telescope diagnostics<CR>", desc = 'Diagnostics', mode = 'n' }
},
}

View file

@ -1,17 +0,0 @@
return {
"christoomey/vim-tmux-navigator",
cmd = {
"TmuxNavigateLeft",
"TmuxNavigateDown",
"TmuxNavigateUp",
"TmuxNavigateRight",
"TmuxNavigatePrevious",
},
keys = {
{ "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" },
{ "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" },
{ "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" },
{ "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" },
{ "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" },
},
}

View file

@ -1,18 +0,0 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
keys = {
{
"<leader>?",
function()
require("which-key").show({ global = false })
end,
desc = "Buffer Local Keymaps (which-key)",
},
},
}

View file

@ -1,10 +0,0 @@
{
"float": [
{
"class": "1Password",
"title": "Quick Access — 1Password"
}
],
"skiptaskbarhidden": [],
"log_on_focus": false
}

View file

View file

@ -1,4 +0,0 @@
[ColorScheme]
active_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ff1e1e2e, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
disabled_colors=#ffa6adc8, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffa6adc8, #ffa6adc8, #ffa6adc8, #ff1e1e2e, #ff11111b, #ff7f849c, #ff89b4fa, #ff45475a, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c
inactive_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ffa6adc8, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c

View file

@ -1,35 +0,0 @@
[Appearance]
color_scheme_path=/home/nezia/.config/qt5ct/colors/Catppuccin-Mocha.conf
custom_palette=true
icon_theme=Papirus-Dark
standard_dialogs=default
style=Lightly
[Fonts]
fixed="Monospace,12,-1,5,50,0,0,0,0,0"
general="Sans Serif,12,-1,5,50,0,0,0,0,0"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=1
double_click_interval=400
gui_effects=@Invalid()
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
stylesheets=@Invalid()
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
[PaletteEditor]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0[\0\0\0\xc6\0\0\x2\xd1\0\0\x2\xd6\0\0\0[\0\0\0\xc6\0\0\x2\xd1\0\0\x2\xd6\0\0\0\0\x2\0\0\0\x6\xc0\0\0\0[\0\0\0\xc6\0\0\x2\xd1\0\0\x2\xd6)
[SettingsWindow]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3@\0\0\x3\xeb\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x3Y\0\0\0\0\x2\0\0\0\x6\xc0\0\0\0\0\0\0\0\0\0\0\x3@\0\0\x3\xeb)
[Troubleshooting]
force_raster_widgets=1
ignored_applications=@Invalid()

View file

@ -1,127 +0,0 @@
# Sets user-defined palette
palette = "catppuccin_frappe"
[character]
# Note the use of Catppuccin color 'maroon'
success_symbol = "[](green)"
error_symbol = "[](red)"
vimcmd_symbol = "[](green)"
[directory]
truncation_length = 4
# Catppuccin 'lavender'
style = "bold lavender"
# palette tables should be last in the config ⚓️
[palettes.catppuccin_macchiato]
rosewater = "#f4dbd6"
flamingo = "#f0c6c6"
pink = "#f5bde6"
mauve = "#c6a0f6"
red = "#ed8796"
maroon = "#ee99a0"
peach = "#f5a97f"
yellow = "#eed49f"
green = "#a6da95"
teal = "#8bd5ca"
sky = "#91d7e3"
sapphire = "#7dc4e4"
blue = "#8aadf4"
lavender = "#b7bdf8"
text = "#cad3f5"
subtext1 = "#b8c0e0"
subtext0 = "#a5adcb"
overlay2 = "#939ab7"
overlay1 = "#8087a2"
overlay0 = "#6e738d"
surface2 = "#5b6078"
surface1 = "#494d64"
surface0 = "#363a4f"
base = "#24273a"
mantle = "#1e2030"
crust = "#181926"
[palettes.catppuccin_frappe]
rosewater = "#f2d5cf"
flamingo = "#eebebe"
pink = "#f4b8e4"
mauve = "#ca9ee6"
red = "#e78284"
maroon = "#ea999c"
peach = "#ef9f76"
yellow = "#e5c890"
green = "#a6d189"
teal = "#81c8be"
sky = "#99d1db"
sapphire = "#85c1dc"
blue = "#8caaee"
lavender = "#babbf1"
text = "#c6d0f5"
subtext1 = "#b5bfe2"
subtext0 = "#a5adce"
overlay2 = "#949cbb"
overlay1 = "#838ba7"
overlay0 = "#737994"
surface2 = "#626880"
surface1 = "#51576d"
surface0 = "#414559"
base = "#303446"
mantle = "#292c3c"
crust = "#232634"
[palettes.catppuccin_latte]
rosewater = "#dc8a78"
flamingo = "#dd7878"
pink = "#ea76cb"
mauve = "#8839ef"
red = "#d20f39"
maroon = "#e64553"
peach = "#fe640b"
yellow = "#df8e1d"
green = "#40a02b"
teal = "#179299"
sky = "#04a5e5"
sapphire = "#209fb5"
blue = "#1e66f5"
lavender = "#7287fd"
text = "#4c4f69"
subtext1 = "#5c5f77"
subtext0 = "#6c6f85"
overlay2 = "#7c7f93"
overlay1 = "#8c8fa1"
overlay0 = "#9ca0b0"
surface2 = "#acb0be"
surface1 = "#bcc0cc"
surface0 = "#ccd0da"
base = "#eff1f5"
mantle = "#e6e9ef"
crust = "#dce0e8"
[palettes.catppuccin_mocha]
rosewater = "#f5e0dc"
flamingo = "#f2cdcd"
pink = "#f5c2e7"
mauve = "#cba6f7"
red = "#f38ba8"
maroon = "#eba0ac"
peach = "#fab387"
yellow = "#f9e2af"
green = "#a6e3a1"
teal = "#94e2d5"
sky = "#89dceb"
sapphire = "#74c7ec"
blue = "#89b4fa"
lavender = "#b4befe"
text = "#cdd6f4"
subtext1 = "#bac2de"
subtext0 = "#a6adc8"
overlay2 = "#9399b2"
overlay1 = "#7f849c"
overlay0 = "#6c7086"
surface2 = "#585b70"
surface1 = "#45475a"
surface0 = "#313244"
base = "#1e1e2e"
mantle = "#181825"
crust = "#11111b"

View file

@ -1,36 +0,0 @@
daemonize
show-failed-attempts
clock
screenshots
effect-blur=7x5
color=1f1d2e80
font="Fira Code Retina"
indicator
indicator-radius=200
indicator-thickness=20
line-color=1f1d2e
ring-color=191724
inside-color=1f1d2e
key-hl-color=eb6f92
separator-color=00000000
text-color=e0def4
text-caps-lock-color=""
line-ver-color=eb6f92
ring-ver-color=eb6f92
inside-ver-color=1f1d2e
text-ver-color=e0def4
ring-wrong-color=31748f
text-wrong-color=31748f
inside-wrong-color=1f1d2e
inside-clear-color=1f1d2e
text-clear-color=e0def4
ring-clear-color=9ccfd8
line-clear-color=1f1d2e
line-wrong-color=1f1d2e
bs-hl-color=31748f
grace=2
grace-no-mouse
grace-no-touch
datestr=%d.%m.%Y
timestr=%H:%M
fade-in="0.1"

View file

@ -1,8 +0,0 @@
[Unit]
Description=Sync personal files with a remote called drive
[Service]
ExecStart=%h/.scripts/sync.sh
[Install]
WantedBy=default.target

View file

@ -1,9 +0,0 @@
[Unit]
Description=Sync a remote called drive every 5 minutes using rclone
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
[Install]
WantedBy=timers.target

View file

@ -1,45 +0,0 @@
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @plugin 'catppuccin/tmux#latest'
set -g @plugin 'tmux-plugins/tmux-yank'
# set the control character to Ctrl+Spacebar (instead of Ctrl+B)
set -g prefix C-space
unbind-key C-b
bind-key C-space send-prefix
# set new panes to open in current directory
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
# start windows and panes at 1 instead of 0
set -g base-index 1
set -g pane-base-index 1
set-window-option -g pane-base-index 1
set-option -g renumber-windows on
set -g @catppuccin_flavour 'frappe' # latte,frappe, macchiato or mocha
# neovim compatibility
set-option -sg escape-time 10
set-option -g focus-events on
set-option -a terminal-features 'xterm*:RGB'
# enable selecting panes with mouse
set -g mouse on
# enable vi keys in copy mode
setw -g mode-keys vi
# remove confirmation on killing panes and windows
bind-key & kill-window
bind-key x kill-pane
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

View file

@ -1,158 +0,0 @@
{
"layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height": 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": ["wlr/workspaces", "custom/media"],
"modules-center": ["clock"],
"modules-right": ["pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "sway/language", "battery", "battery#bat2", "tray"],
// Modules configuration
"wlr/workspaces": {
"on-click": "activate",
"disable-scroll": true,
"all-outputs": true,
"format": "{icon}",
"format-icons": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "",
"urgent": "",
"focused": "",
"default": ""
}
},
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 2,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
"icon-size": 21,
"spacing": 10
},
"clock": {
// "timezone": "America/New_York",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%d-%m-%Y}"
},
"cpu": {
"format": " {usage}%",
"tooltip": false
},
"memory": {
"format": " {}%"
},
"temperature": {
// "thermal-zone": 2,
"hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{icon} {temperatureC}°C",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": " {percent}%",
},
"battery": {
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": " {essid} ({signalStrength}%)",
"format-ethernet": " {ipaddr}/{cidr}",
"tooltip-format": " {ifname} via {gwaddr}",
"format-linked": " {ifname} (No IP) ",
"format-disconnected": "⚠ Disconnected",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{icon} {volume}%",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {volume}%",
"format-source": "{volume}%",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
}
}

View file

@ -1,37 +0,0 @@
/*
*
* Catppuccin Mocha palette
* Maintainer: rubyowo
*
*/
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;
@define-color text #cdd6f4;
@define-color subtext0 #a6adc8;
@define-color subtext1 #bac2de;
@define-color surface0 #313244;
@define-color surface1 #45475a;
@define-color surface2 #585b70;
@define-color overlay0 #6c7086;
@define-color overlay1 #7f849c;
@define-color overlay2 #9399b2;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color sapphire #74c7ec;
@define-color sky #89dceb;
@define-color teal #94e2d5;
@define-color green #a6e3a1;
@define-color yellow #f9e2af;
@define-color peach #fab387;
@define-color maroon #eba0ac;
@define-color red #f38ba8;
@define-color mauve #cba6f7;
@define-color pink #f5c2e7;
@define-color flamingo #f2cdcd;
@define-color rosewater #f5e0dc;

View file

@ -1,262 +0,0 @@
@import "mocha.css";
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: "Fira Code Retina", FontAwesome6FreeSolid, FontAwesome6Free;
font-size: 15px;
}
window#waybar {
background-color: @base;
color: @text;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
/*
window#waybar.empty {
background-color: transparent;
}
window#waybar.solo {
background-color: #FFFFFF;
}
*/
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: @fg;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.focused {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.active {
background-color: @lavender;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#mpd {
padding: 0 10px;
color: #ffffff;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
}
#battery {
}
#battery.charging, #battery.plugged {
}
@keyframes blink {
to {
background-color: @base;
color: @text;
}
}
#battery.critical:not(.charging) {
background-color: @red;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#cpu {
}
#memory {
}
#disk {
}
#backlight {
}
#network {
}
#network.disconnected {
}
#pulseaudio {
}
#pulseaudio.muted {
}
#wireplumber {
}
#wireplumber.muted {
}
#custom-media {
background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
}
#temperature.critical {
}
#tray {
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
background-color: #2d3436;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #f53c3c;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
}
#language {
background: #00b093;
color: #740864;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state {
background: #97e1ad;
color: #000000;
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
}

View file

View file

@ -1,94 +0,0 @@
/* Mocha Lavender */
@define-color accent #babbf1;
@define-color txt #cad3f5;
@define-color bg #24273a;
@define-color bg2 #494d64;
* {
font-family: 'JetBrains Mono Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 3px solid @accent;
border-radius: 7px;
background-color: @bg;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @bg;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @bg;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
}
/* Input */
#input {
margin: 5px;
padding: 10px;
border: none;
color: @accent;
background-color: @bg2;
animation: fadeIn 0.5s ease-in-out both;
}
/* Text */
#text {
margin: 5px;
padding: 10px;
border: none;
color: @txt;
animation: fadeIn 0.5s ease-in-out both;
}
/* Selected Entry */
#entry:selected {
background-color: @accent;
}
#entry:selected #text {
color: @bg;
}

View file

@ -1 +0,0 @@
{{ .chezmoi.sourceDir }}/zed/settings.json

View file

@ -1,432 +0,0 @@
#+TITLE: Emacs literate configuration
#+AUTHOR: Anthony Rodriguez
#+PROPERTY: header-args:emacs-lisp :tangle ~/.emacs.d/init.el
* Table of Contents :TOC:
- [[#packages-initialization][Packages initialization]]
- [[#vc-use-package][vc-use-package]]
- [[#general-config][General config]]
- [[#move-temporary-files-to-tmpusername][Move temporary files to /tmp/{username}]]
- [[#minimal-interface][Minimal interface]]
- [[#mode-line][Mode line]]
- [[#match-fish-shells-path][Match fish shell's path]]
- [[#bell][Bell]]
- [[#font][Font]]
- [[#visual-mode][Visual mode]]
- [[#theme][Theme]]
- [[#completion][Completion]]
- [[#which-key][which-key]]
- [[#org-mode][Org mode]]
- [[#pretty-bullets-and-headlines][Pretty bullets and headlines]]
- [[#toc-org][toc-org]]
- [[#programming][Programming]]
- [[#eglot][Eglot]]
- [[#autocompletion][Autocompletion]]
- [[#snippets][Snippets]]
- [[#magit][Magit]]
- [[#docker][Docker]]
- [[#popper][popper]]
- [[#languages][Languages]]
* Packages initialization
Here, we're initializing MELPA, as well as package.el and use-package.
#+begin_src emacs-lisp
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; Comment/uncomment this line to enable MELPA Stable if desired. See `package-archive-priorities`
;; and `package-pinned-packages`. Most users will not need or want to do this.
;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
;; Refresh package contents only if the archive contents are empty
(unless (and package-archive-contents (not (equal package-archive-contents '())))
(package-refresh-contents))
(require 'use-package)
(setq use-package-always-ensure t)
#+end_src
** vc-use-package
vc-use-package integrates package-vc-install, which allows installing packages from git repositories, into use-package. It won't be needed from Emacs 30, as it will integrate natively.
#+begin_src emacs-lisp
(if (< emacs-major-version 30)
(unless (package-installed-p 'vc-use-package)
(package-vc-install "https://github.com/slotThe/vc-use-package"))
(require 'vc-use-package))
#+end_src
* General config
** Move temporary files to /tmp/{username}
#+begin_src emacs-lisp
(defvar user-temporary-file-directory
(concat temporary-file-directory user-login-name "/"))
(make-directory user-temporary-file-directory t)
(setq backup-by-copying t)
(setq backup-directory-alist
`(("." . ,user-temporary-file-directory)
(,tramp-file-name-regexp nil)))
(setq auto-save-list-file-prefix
(concat user-temporary-file-directory ".auto-saves-"))
(setq auto-save-file-name-transforms
`((".*" ,user-temporary-file-directory t)))
#+end_src
** Minimal interface
We disable a lot of interface elements, to make the editor more minimal looking.
#+begin_src emacs-lisp
(setq inhibit-startup-message t)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(set-fringe-mode 10)
(menu-bar-mode -1)
#+end_src
** Mode line
#+begin_src emacs-lisp
(use-package moody
:config
(moody-replace-mode-line-front-space)
(moody-replace-mode-line-buffer-identification))
#+end_src
** Match fish shell's path
#+begin_src emacs-lisp
(defun set-exec-path-from-shell-PATH ()
"Set up Emacs' `exec-path' and PATH environment variable to match
that used by the user's shell.
This is particularly useful under Mac OS X and macOS, where GUI
apps are not started from a shell."
(interactive)
(let ((path-from-shell (replace-regexp-in-string
"[ \t\n]*$" "" (shell-command-to-string
"/usr/bin/fish --login -c 'string join : $PATH'"
))))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator))))
(set-exec-path-from-shell-PATH)
#+end_src
** Bell
I don't like any visual or sound bell.
#+begin_src emacs-lisp
(setq ring-bell-function 'ignore)
#+end_src
** Font
I use two different fonts in Emacs : my sans serif font for anything where variable fonts wouldn't matter, and monospace for fixed width text (such as code, org blocks and org tables). I like to use the generic sans-serif and monospace fonts, as it allows me to define them system-wide, which I highly prefer.
Besides the font settings, I use the package fixed-pitch, which sets up hooks automatically for all the modes that require fixed width fonts. This allows me to have my sans serif everywhere else.
#+begin_src emacs-lisp
(custom-theme-set-faces
'user
;; global faces
'(default ((t (:family "monospace" :height 125))))
'(variable-pitch ((t (:family "DejaVu Sans" :height 125))))
'(fixed-pitch ((t (:family "monospace" :height 125))))
;; org mode specific faces
'(org-block ((t (:inherit fixed-pitch))))
'(org-code ((t (:inherit (shadow fixed-pitch)))))
'(org-table ((t (:inherit fixed-pitch :foreground "#83a598")))))
(use-package fixed-pitch
:vc ( :fetcher github :repo cstby/fixed-pitch-mode))
#+end_src
*** Ligatures
#+begin_src emacs-lisp
(use-package ligature
:config
(ligature-set-ligatures 't '("www"))
(ligature-set-ligatures '(prog-mode tsx-ts-mode) '("--" "---" "==" "===" "!=" "!==" "=!="
"=:=" "=/=" "<=" ">=" "&&" "&&&" "&=" "++" "+++" "***" ";;" "!!"
"??" "???" "?:" "?." "?=" "<:" ":<" ":>" ">:" "<:<" "<>" "<<<" ">>>"
"<<" ">>" "||" "-|" "_|_" "|-" "||-" "|=" "||=" "##" "###" "####"
"#{" "#[" "]#" "#(" "#?" "#_" "#_(" "#:" "#!" "#=" "^=" "<$>" "<$"
"$>" "<+>" "<+" "+>" "<*>" "<*" "*>" "</" "</>" "/>" "<!--" "<#--"
"-->" "->" "->>" "<<-" "<-" "<=<" "=<<" "<<=" "<==" "<=>" "<==>"
"==>" "=>" "=>>" ">=>" ">>=" ">>-" ">-" "-<" "-<<" ">->" "<-<" "<-|"
"<=|" "|=>" "|->" "<->" "<~~" "<~" "<~>" "~~" "~~>" "~>" "~-" "-~"
"~@" "[||]" "|]" "[|" "|}" "{|" "[<" ">]" "|>" "<|" "||>" "<||"
"|||>" "<|||" "<|>" "..." ".." ".=" "..<" ".?" "::" ":::" ":=" "::="
":?" ":?>" "//" "///" "/*" "*/" "/=" "//=" "/==" "@_" "__" "???"
"<:<" ";;;"))
(global-ligature-mode t))
#+end_src
** Visual mode
We turn on visual mode, so that lines can wrap nicely and not go beyond my Emacs buffer size.
#+begin_src emacs-lisp
(global-visual-line-mode t)
#+end_src
** Theme
I use catppuccin as my theme, as I find it comfortable to work with (the Frappe flavor).
#+begin_src emacs-lisp
(use-package catppuccin-theme
:init
(setq catppuccin-flavor 'frappe)
:config
(load-theme 'catppuccin :no-confirm))
#+end_src
** Completion
I use vertico as my completion framework. It's minimal, fast and tells me all I need to know and even sorts by history.
#+begin_src emacs-lisp
(use-package vertico
:init
(vertico-mode)
;; Different scroll margin
;; (setq vertico-scroll-margin 0)
;; Show more candidates
;; (setq vertico-count 20)
;; Grow and shrink the Vertico minibuffer
(setq vertico-resize t)
;; Optionally enable cycling for `vertico-next' and `vertico-previous'.
(setq vertico-cycle t))
;; Persist history over Emacs restarts. Vertico sorts by history position.
(use-package savehist
:init
(savehist-mode))
;; A few more useful configurations...
(use-package emacs
:init
;; Add prompt indicator to `completing-read-multiple'.
;; We display [CRM<separator>], e.g., [CRM,] if the separator is a comma.
(defun crm-indicator (args)
(cons (format "[CRM%s] %s"
(replace-regexp-in-string
"\\`\\[.*?]\\*\\|\\[.*?]\\*\\'" ""
crm-separator)
(car args))
(cdr args)))
(advice-add #'completing-read-multiple :filter-args #'crm-indicator)
;; Do not allow the cursor in the minibuffer prompt
(setq minibuffer-prompt-properties
'(read-only t cursor-intangible t face minibuffer-prompt))
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
;; Support opening new minibuffers from inside existing minibuffers.
(setq enable-recursive-minibuffers t)
;; Emacs 28 and newer: Hide commands in M-x which do not work in the current
;; mode. Vertico commands are hidden in normal buffers. This setting is
;; useful beyond Vertico.
(setq read-extended-command-predicate #'command-completion-default-include-p))
(use-package orderless
:ensure t
:custom
(completion-styles '(orderless basic))
(completion-category-overrides '((file (styles basic partial-completion)))))
#+end_src
** which-key
which-key is a nice little package that allows to have a minibuffer showing which keybinds are available under prefixes.
#+begin_src emacs-lisp
(use-package which-key
:config
(which-key-mode)
(which-key-add-key-based-replacements ;; naming prefixes
"C-c l" "lsp"))
#+end_src
* Org mode
#+begin_src emacs-lisp
(use-package org
:hook
(org-mode . variable-pitch-mode))
#+end_src
** Pretty bullets and headlines
I use org-superstar-mode, as it makes headlines and bullets look really nice.
#+begin_src emacs-lisp
(use-package org-superstar
:defer t
:hook (org-mode . org-superstar-mode))
#+end_src
** toc-org
This allows generating the table of contents you can find at the beginning of this file.
#+begin_src emacs-lisp
(use-package toc-org
:hook (org-mode . toc-org-mode))
#+end_src
* Programming
** Eglot
Eglot is a built in LSP client for Emacs. I prefer it to LSP as it's more lightweight and more straightforward to setup correctly.
#+begin_src emacs-lisp
(use-package eglot
:defer t
:config
(setq eglot-events-buffer-size 0) ;; important performance fix (https://www.gnu.org/software/emacs/manual/html_node/eglot/Performance.html)
(advice-add 'jsonrpc--log-event :override #'ignore)
:bind (:map eglot-mode-map
("C-c l h" . eldoc)
("C-c l r" . eglot-rename)
("C-c l f" . eglot-format-buffer))
:hook ((tsx-ts-mode . eglot-ensure)
(typescript-ts-mode . eglot-ensure)
(python-ts-mode . eglot-ensure)
(go-ts-mode . eglot-ensure)
(eglot--managed-mode . electric-pair-mode)
(eglot--managed-mode . (lambda ()
(add-hook 'after-save-hook #'eglot-format-buffer nil t)))
(eglot--managed-mode . display-line-numbers-mode)))
(setq-default eglot-workspace-configuration '(:typescript (:format (:indentSize 2
:convertTabsToSpaces t
:semicolons "remove"))))
;; makes eglot faster using a rust wrapper, needs to be in PATH
(use-package eglot-booster
:defer t
:vc (:fetcher github :repo jdtsmith/eglot-booster)
:after eglot
:config
(eglot-booster-mode))
#+end_src
** Autocompletion
#+begin_src emacs-lisp
(use-package corfu
:defer t
:custom
(corfu-auto t)
:init
(global-corfu-mode)
(setq corfu-popupinfo-delay 0.2)
(corfu-popupinfo-mode))
(use-package nerd-icons-corfu
:after corfu
:config
(add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))
#+end_src
** Snippets
#+begin_src emacs-lisp
(use-package yasnippet
:defer t
:ensure t
:diminish yas-minor-mode
:hook (prog-mode . yas-minor-mode)
:bind (:map yas-minor-mode-map
("C-c C-e" . yas-expand)))
#+end_src
** Magit
Magit is a git client in Emacs.
#+begin_src emacs-lisp
(use-package magit
:defer t)
#+end_src
** Docker
#+begin_src emacs-lisp
(use-package docker
:defer t
:ensure t
:bind ("C-c d" . docker))
#+end_src
** popper
Popper is a package that allows us to have popup buffers. This is really useful when working with REPL languages such as Javascript or Go.
#+begin_src emacs-lisp
(use-package popper
:ensure t ; or :straight t
:bind (("C-c p t" . popper-toggle)
("C-c p c" . popper-cycle)
("C-c p w" . popper-toggle-type)
("C-c p k" . popper-kill-latest-popup))
:init
(setq popper-reference-buffers
'("\\*Messages\\*"
"Output\\*$"
"\\*Async Shell Command\\*"
help-mode
compilation-mode
"^\\*eshell.*\\*$" eshell-mode
"^\\*shell.*\\*$" shell-mode
"^\\*term.*\\*$" term-mode
"^\\*vterm.*\\*$" vterm-mode))
(which-key-add-key-based-replacements
"C-c p" "popper")
(popper-mode)
(popper-echo-mode))
#+end_src
** Languages
*** tree-sitter
Tree-sitter is a built-in Emacs package that allows us to have extremely well integrated language grammar. Here, we're setting up the list of sources, most of them being on tree-sitter's official GitHub, as well as hooking up the languages to their different modes.
#+begin_src emacs-lisp
(setq treesit-font-lock-level 4) ;; more coloring!
(setq treesit-language-source-alist
'((bash "https://github.com/tree-sitter/tree-sitter-bash")
(cmake "https://github.com/uyha/tree-sitter-cmake")
(css "https://github.com/tree-sitter/tree-sitter-css")
(elisp "https://github.com/Wilfred/tree-sitter-elisp")
(go "https://github.com/tree-sitter/tree-sitter-go")
(gomod "https://github.com/camdencheek/tree-sitter-go-mod")
(html "https://github.com/tree-sitter/tree-sitter-html")
(javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src")
(json "https://github.com/tree-sitter/tree-sitter-json")
(make "https://github.com/alemuller/tree-sitter-make")
(markdown "https://github.com/ikatyang/tree-sitter-markdown")
(python "https://github.com/tree-sitter/tree-sitter-python")
(toml "https://github.com/tree-sitter/tree-sitter-toml")
(templ "https://github.com/vrischmann/tree-sitter-templ")
(tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src")
(typescript "https://github.com/tree-sitter/tree-sitter-typescript" "master" "typescript/src")
(yaml "https://github.com/ikatyang/tree-sitter-yaml")))
;; mode bindings to file extensions
(setq auto-mode-alist
(append '(("\\.ts\\'" . tsx-ts-mode)
("\\.tsx\\'" . tsx-ts-mode)
("\\.py\\'" . python-ts-mode)
("\\.go\\'" . go-ts-mode))
auto-mode-alist))
#+end_src
*** Eat
Eat (Emulate a Terminal) is an emacs terminal emulator. It also integrates with eshell, and is needed in order to render full-screen terminal applications, which eshell struggles to do.
#+begin_src emacs-lisp
(use-package eat
:hook
((eshell-load . eat-eshell-mode)
(eshell-load . eat-eshell-mode)))
#+end_src
;; Local Variables:
;; eval: (add-hook 'after-save-hook (lambda ()(if (y-or-n-p "Reload?")(load-file user-init-file))) nil t)
;; eval: (add-hook 'after-save-hook (lambda ()(if (y-or-n-p "Tangle?")(org-babel-tangle))) nil t)
;; End:

View file

@ -1,16 +0,0 @@
;; Enable local variables
(setq enable-local-variables :all)
;; Paths to config.org and the tangled init.el
(defvar org-config-file (expand-file-name "README.org" user-emacs-directory))
(defvar tangled-init-file (expand-file-name "init.el" user-emacs-directory))
;; Function to tangle the org file
(defun tangle-org-config ()
(require 'org)
(org-babel-tangle-file org-config-file))
;; Check if config.org is newer than init.el and tangle if necessary
(when (file-newer-than-file-p org-config-file tangled-init-file)
(tangle-org-config))

View file

@ -1,12 +0,0 @@
[init]
defaultBranch = main
[user]
name = Anthony Rodriguez
email = anthony@nezia.dev
signingkey = EE3BE97C040A86CE
[commit]
gpgsign = true
[pull]
rebase = true
[push]
autoSetupRemote = true

View file

@ -1,19 +0,0 @@
# DO NOT EDIT! This file will be overwritten by nwg-look.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
include "/home/tony/.gtkrc-2.0.mine"
gtk-theme-name="Catppuccin-Mocha-Standard-Lavender-Dark"
gtk-icon-theme-name="Adwaita"
gtk-font-name="Cantarell 11"
gtk-cursor-theme-name="Adwaita"
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintslight"
gtk-xft-rgba="rgb"

View file

@ -1,3 +0,0 @@
export EDITOR=nvim
export VISUAL="codium --wait"
. "$HOME/.cargo/env"

View file

View file

@ -1,7 +0,0 @@
#!/bin/sh
wallpaper=$(ls "$HOME/".wallpapers/** | shuf -n 1)
cat << EOF > ~/.config/hypr/hyprpaper.conf
preload = $wallpaper
wallpaper = eDP-1, $wallpaper
EOF

View file

@ -1,15 +0,0 @@
#!/bin/bash
shopt -s nullglob globstar
prefix=${PASSWORD_STORE_DIR-~/.password-store}
password_files=( "$prefix"/**/*.gpg )
password_files=( "${password_files[@]#"$prefix"/}" )
password_files=( "${password_files[@]%.gpg}" )
password=$(printf '%s\n' "${password_files[@]}" | wofi --dmenu "$@")
[[ -n $password ]] || exit
pass show "$password" -c

View file

@ -1,11 +0,0 @@
#!/bin/sh
CONFIG_FILES="$HOME/.config/waybar/config.jsonc $HOME/.config/waybar/style.css"
trap "killall waybar" EXIT
while true; do
waybar &
inotifywait -e create,modify $CONFIG_FILES
killall waybar
done

View file

@ -1,5 +0,0 @@
#!/bin/sh
[ ! -d $HOME/org ] && rclone copy drive:org $HOME/org
rclone sync $HOME/org --include "**.{org,png,jpeg}" drive:org

File diff suppressed because it is too large Load diff

View file

@ -1,98 +0,0 @@
#!/bin/sh
# Starts a scan of available broadcasting SSIDs
# nmcli dev wifi rescan
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
FIELDS=SSID,SECURITY
POSITION=0
YOFF=0
XOFF=0
if [ -r "$DIR/config" ]; then
source "$DIR/config"
elif [ -r "$HOME/.config/wofi/wifi" ]; then
source "$HOME/.config/wofi/wifi"
else
echo "WARNING: config file not found! Using default values."
fi
LIST=$(nmcli --fields "$FIELDS" device wifi list | sed '/^--/d')
# For some reason wofi always approximates character width 2 short... hmmm
RWIDTH=$(($(echo "$LIST" | head -n 1 | awk '{print length($0); }')*10))
# Dynamically change the height of the wofi menu
LINENUM=$(echo "$LIST" | wc -l)
# Gives a list of known connections so we can parse it later
KNOWNCON=$(nmcli connection show)
# Really janky way of telling if there is currently a connection
CONSTATE=$(nmcli -fields WIFI g)
CURRSSID=$(LANGUAGE=C nmcli -t -f active,ssid dev wifi | awk -F: '$1 ~ /^yes/ {print $2}')
if [[ ! -z $CURRSSID ]]; then
HIGHLINE=$(echo "$(echo "$LIST" | awk -F "[ ]{2,}" '{print $1}' | grep -Fxn -m 1 "$CURRSSID" | awk -F ":" '{print $1}') + 1" | bc )
fi
# HOPEFULLY you won't need this as often as I do
# If there are more than 8 SSIDs, the menu will still only have 8 lines
if [ "$LINENUM" -gt 8 ] && [[ "$CONSTATE" =~ "enabled" ]]; then
LINENUM=8
elif [[ "$CONSTATE" =~ "disabled" ]]; then
LINENUM=1
fi
if [[ "$CONSTATE" =~ "enabled" ]]; then
TOGGLE="toggle off"
elif [[ "$CONSTATE" =~ "disabled" ]]; then
TOGGLE="toggle on"
fi
CHENTRY=$(echo -e "$TOGGLE\nmanual\n$LIST" | uniq -u | wofi -i -d --prompt "Wi-Fi SSID: " --lines "$LINENUM" --location "$POSITION" --yoffset "$YOFF" --xoffset "$XOFF" --width $RWIDTH)
#echo "$CHENTRY"
CHSSID=$(echo "$CHENTRY" | sed 's/\s\{2,\}/\|/g' | awk -F "|" '{print $1}')
#echo "$CHSSID"
# If the user inputs "manual" as their SSID in the start window, it will bring them to this screen
if [ "$CHENTRY" = "manual" ] ; then
# Manual entry of the SSID and password (if appplicable)
MSSID=$(echo "enter the SSID of the network (SSID,password)" | wofi -d "Manual Entry: " --lines 1)
# Separating the password from the entered string
MPASS=$(echo "$MSSID" | awk -F "," '{print $2}')
#echo "$MSSID"
#echo "$MPASS"
# If the user entered a manual password, then use the password nmcli command
if [ "$MPASS" = "" ]; then
nmcli dev wifi con "$MSSID"
else
nmcli dev wifi con "$MSSID" password "$MPASS"
fi
elif [ "$CHENTRY" = "toggle on" ]; then
nmcli radio wifi on
elif [ "$CHENTRY" = "toggle off" ]; then
nmcli radio wifi off
else
# If the connection is already in use, then this will still be able to get the SSID
if [ "$CHSSID" = "*" ]; then
CHSSID=$(echo "$CHENTRY" | sed 's/\s\{2,\}/\|/g' | awk -F "|" '{print $3}')
fi
# Parses the list of preconfigured connections to see if it already contains the chosen SSID. This speeds up the connection process
if [[ $(echo "$KNOWNCON" | grep "$CHSSID") = "$CHSSID" ]]; then
nmcli con up "$CHSSID"
else
if [[ "$CHENTRY" =~ "WPA2" ]] || [[ "$CHENTRY" =~ "WEP" ]]; then
WIFIPASS=$(echo "if connection is stored, hit enter" | wofi -P -d --prompt "password" --lines 1 --location "$POSITION" --yoffset "$YOFF" --xoffset "$XOFF" --width $RWIDTH)
fi
nmcli dev wifi con "$CHSSID" password "$WIFIPASS"
fi
fi

@ -1 +0,0 @@
Subproject commit 99469c4a9b1ccf77fade25842dc7bafbc8ce9946

View file

@ -1,12 +0,0 @@
/**
* @name Catppuccin Frappe
* @author winston#0001
* @authorId 505490445468696576
* @version 0.2.0
* @description 🎮 Soothing pastel theme for Discord
* @website https://github.com/catppuccin/discord
* @invite r6Mdz5dpFc
* **/
@import url("https://catppuccin.github.io/discord/dist/catppuccin-frappe.theme.css");

359
flake.lock Normal file
View file

@ -0,0 +1,359 @@
{
"nodes": {
"devshell": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1722113426,
"narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=",
"owner": "numtide",
"repo": "devshell",
"rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-compat": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1722555600,
"narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": [
"nixvim",
"flake-compat"
],
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1724440431,
"narHash": "sha256-9etXEOUtzeMgqg1u0wp+EdwG7RpmrAZ2yX516bMj2aE=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "c8a54057aae480c56e28ef3e14e4960628ac495b",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"nixvim",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1724435763,
"narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1724435763,
"narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1724469941,
"narHash": "sha256-+U5152FwmDD9EUOiFi5CFxCK6/yFESyDei9jEIlmUtI=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "ea319a737939094b48fda9063fa3201ef2479aac",
"type": "github"
},
"original": {
"owner": "lnl7",
"repo": "nix-darwin",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1724224976,
"narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c374d94f1536013ca8e92341b540eba4c22f9c62",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1721524707,
"narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "556533a23879fc7e5f98dd2e0b31a6911a213171",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"home-manager": "home-manager_2",
"nix-darwin": "nix-darwin",
"nixpkgs": [
"nixpkgs"
],
"nuschtosSearch": "nuschtosSearch",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1724528976,
"narHash": "sha256-5W13nD/5ySIsxSvDqXHlj4bg2F3tNcYGKCGudWzpNzw=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "8234ee85eaa2c8b7f2c74f5b4cdf02c4965b07fc",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1723969429,
"narHash": "sha256-BuewfNEXEf11MIkJY+uvWsdLu1dIvgJqntWChvNdALg=",
"owner": "NuschtOS",
"repo": "search",
"rev": "a05d1805f2a2bc47d230e5e92aecbf69f784f3d0",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"nixvim": "nixvim",
"shells": "shells",
"sops-nix": "sops-nix"
}
},
"shells": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1,
"narHash": "sha256-i5bBg0nqy1IOYhkr0SrICMSk3i3UVQyTjftkJwMdnEw=",
"path": "/nix/store/vralh6zrl13i5ri9pzgl22k5f99fx4am-source/shells",
"type": "path"
},
"original": {
"path": "/nix/store/vralh6zrl13i5ri9pzgl22k5f99fx4am-source/shells",
"type": "path"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1723501126,
"narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "be0eec2d27563590194a9206f551a6f73d52fa34",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1724338379,
"narHash": "sha256-kKJtaiU5Ou+e/0Qs7SICXF22DLx4V/WhG1P6+k4yeOE=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "070f834771efa715f3e74cd8ab93ecc96fabc951",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

68
flake.nix Normal file
View file

@ -0,0 +1,68 @@
{
description = "nezia's nixos configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
shells = {
url = "./shells";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, home-manager, nixvim, sops-nix, shells, ... }@inputs:
let
username = "nezia";
in {
nixosConfigurations = {
vamos =
let hostname = "vamos";
in nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hosts/${hostname}
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.sharedModules = [ nixvim.homeManagerModules.nixvim ];
home-manager.users.nezia = import ./home/laptop;
home-manager.extraSpecialArgs = { inherit inputs; };
}
{ _module.args = { inherit hostname username; }; }
];
};
solaire = let
hostname = "solaire";
in nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hosts/${hostname}
sops-nix.nixosModules.sops
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.sharedModules = [ nixvim.homeManagerModules.nixvim ];
home-manager.users.nezia = import ./home/desktop;
}
{ _module.args = { inherit hostname username; }; }
];
};
};
};
}

5
home/base/automount.nix Normal file
View file

@ -0,0 +1,5 @@
{ ... }:
{
services.udiskie.enable = true;
}

9
home/base/core.nix Normal file
View file

@ -0,0 +1,9 @@
{ inputs, ... }:
{
home.username = "nezia";
home.homeDirectory = "/home/nezia";
programs.home-manager.enable = true;
nix.registry.shells.flake = inputs.shells;
home.stateVersion = "24.05";
}

13
home/base/default.nix Normal file
View file

@ -0,0 +1,13 @@
{ ... }:
{
imports = [
./core.nix
./fonts.nix
./automount.nix
./mime.nix
./gnome
./shell
./programs
];
}

18
home/base/fonts.nix Normal file
View file

@ -0,0 +1,18 @@
{ pkgs, ... }:
{
fonts = {
fontconfig = {
enable = true;
defaultFonts = {
monospace = [ "MonaspiceNe Nerd Font" ];
emoji = [ "Noto Color Emoji "];
};
};
};
home.packages = with pkgs; [
noto-fonts-color-emoji
(nerdfonts.override { fonts = [ "Monaspace" ]; })
];
}

View file

@ -0,0 +1,48 @@
{ pkgs, ... }:
{
dconf = {
enable = true;
settings = {
"org/gnome/shell" = {
disable-user-extensions = false; # enables user extensions
enabled-extensions = [
pkgs.gnomeExtensions.appindicator.extensionUuid
];
};
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
"org/gnome/desktop/input-sources" = {
xkb-options = [ "compose:ralt" ];
};
};
};
home.packages = with pkgs.gnomeExtensions; [
appindicator
];
programs.gnome-terminal = {
enable = true;
showMenubar = false;
profile."7dfaed12-b68d-4459-8cb9-ecd3d49f3634" = {
visibleName = "Catppuccin Frappe";
default = true;
font = "MonaspiceNe Nerd Font 14";
customCommand = "tmux new-session -A -s main";
colors = {
palette = [ "#51576d" "#e78284" "#a6d189" "#e5c890" "#8caaee" "#f4b8e4" "#81c8be" "#b5bfe2" "#626880" "#e78284" "#a6d189" "#e5c890" "#8caaee" "#f4b8e4" "#81c8be" "#a5adce" ];
backgroundColor = "#303446";
foregroundColor = "#c6d0f5";
cursor = {
background = "#f2d5cf";
foreground = "#303446";
};
highlight = {
background = "#f2d5cf";
foreground = "#626880";
};
};
};
};
}

16
home/base/mime.nix Normal file
View file

@ -0,0 +1,16 @@
{ ... }:
{
xdg.mimeApps = {
enable = true;
defaultApplications = {
"default-web-browser" = [ "firefox.desktop" ];
"text/html" = [ "firefox.desktop" ];
"x-scheme-handler/http" = [ "firefox.desktop" ];
"x-scheme-handler/https" = [ "firefox.desktop" ];
"x-scheme-handler/about" = [ "firefox.desktop" ];
"x-scheme-handler/unknown" = [ "firefox.desktop" ];
"application/pdf" = [ "org.gnome.Evince.desktop" ];
};
};
}

View file

@ -0,0 +1,6 @@
{ ... }:
{
programs.firefox.enable = true;
programs.chromium.enable = true;
}

View file

@ -0,0 +1,12 @@
{ ... }:
{
imports = [
./git.nix
./gnupg.nix
./nixvim
./tmux.nix
./browsers.nix
./miscellaneous.nix
];
}

Some files were not shown because too many files have changed in this diff Show more