Compare commits
No commits in common. "pre-nixos" and "main" have entirely different histories.
|
@ -1,241 +0,0 @@
|
|||
### MangoHud configuration file
|
||||
### Uncomment any options you wish to enable. Default options are left uncommented
|
||||
### Use some_parameter=0 to disable a parameter (only works with on/off parameters)
|
||||
### Everything below can be used / overridden with the environment variable MANGOHUD_CONFIG instead
|
||||
|
||||
################ PERFORMANCE #################
|
||||
|
||||
### Limit the application FPS. Comma-separated list of one or more FPS values (e.g. 0,30,60). 0 means unlimited (unless VSynced)
|
||||
fps_limit=144
|
||||
|
||||
### VSync [0-3] 0 = adaptive; 1 = off; 2 = mailbox; 3 = on
|
||||
# vsync=
|
||||
vsync=1
|
||||
|
||||
### OpenGL VSync [0-N] 0 = off; >=1 = wait for N v-blanks, N > 1 acts as a FPS limiter (FPS = display refresh rate / N)
|
||||
# gl_vsync=
|
||||
gl_vsync=0
|
||||
|
||||
################### VISUAL ###################
|
||||
|
||||
### Legacy layout
|
||||
# legacy_layout=false
|
||||
|
||||
### Display custom centered text, useful for a header
|
||||
# custom_text_center=
|
||||
|
||||
### Display the current system time
|
||||
# time
|
||||
|
||||
### Time formatting examples
|
||||
# time_format=%H:%M
|
||||
# time_format=[ %T %F ]
|
||||
# time_format=%X # locally formatted time, because of limited glyph range, missing characters may show as '?' (e.g. Japanese)
|
||||
|
||||
### Display MangoHud version
|
||||
# version
|
||||
|
||||
### Display the current GPU information
|
||||
gpu_stats
|
||||
gpu_temp
|
||||
gpu_core_clock
|
||||
gpu_mem_clock
|
||||
gpu_power
|
||||
# gpu_text=GPU
|
||||
gpu_load_change
|
||||
gpu_load_value=60,90
|
||||
gpu_load_color=39F900,FDFD09,B22222
|
||||
|
||||
### Display the current CPU information
|
||||
cpu_stats
|
||||
cpu_temp
|
||||
cpu_power
|
||||
# cpu_text=CPU
|
||||
cpu_mhz
|
||||
cpu_load_change
|
||||
cpu_load_value=60,90
|
||||
cpu_load_color=39F900,FDFD09,B22222
|
||||
|
||||
### Display the current CPU load & frequency for each core
|
||||
# core_load
|
||||
# core_load_change
|
||||
|
||||
### Display IO read and write for the app (not system)
|
||||
io_stats
|
||||
io_read
|
||||
io_write
|
||||
|
||||
### Display system vram / ram / swap space usage
|
||||
vram
|
||||
ram
|
||||
swap
|
||||
|
||||
### Display per process memory usage
|
||||
## Show resident memory and other types, if enabled
|
||||
# procmem
|
||||
# procmem_shared
|
||||
# procmem_virt
|
||||
|
||||
### Display battery information
|
||||
# battery
|
||||
# battery_icon
|
||||
# gamepad_battery
|
||||
# gamepad_battery_icon
|
||||
|
||||
### Display FPS and frametime
|
||||
fps
|
||||
# fps_sampling_period=500
|
||||
fps_color_change
|
||||
fps_value=60,90
|
||||
fps_color=B22222,FDFD09,39F900
|
||||
frametime
|
||||
# frame_count
|
||||
|
||||
### Display miscellaneous information
|
||||
#engine_version
|
||||
#gpu_name
|
||||
#vulkan_driver
|
||||
#wine
|
||||
|
||||
### Display loaded MangoHud architecture
|
||||
# arch
|
||||
|
||||
### Display the frametime line graph
|
||||
frame_timing
|
||||
histogram
|
||||
|
||||
### Display GameMode / vkBasalt running status
|
||||
gamemode
|
||||
#vkbasalt
|
||||
|
||||
### Display current FPS limit
|
||||
# show_fps_limit
|
||||
|
||||
### Display the current resolution
|
||||
# resolution
|
||||
|
||||
### Display custom text
|
||||
# custom_text=
|
||||
### Display output of Bash command in next column
|
||||
# exec=
|
||||
|
||||
### Display media player metadata
|
||||
# media_player
|
||||
# media_player_name=spotify
|
||||
## Format metadata, lines are delimited by ; (wip)
|
||||
# media_player_format={title};{artist};{album}
|
||||
# media_player_format=Track:;{title};By:;{artist};From:;{album}
|
||||
|
||||
### Change the hud font size
|
||||
# font_size=24
|
||||
# font_scale=1.0
|
||||
# font_size_text=24
|
||||
# font_scale_media_player=0.55
|
||||
# no_small_font
|
||||
|
||||
### Change default font (set location to TTF/OTF file)
|
||||
## Set font for the whole hud
|
||||
# font_file=
|
||||
|
||||
## Set font only for text like media player metadata
|
||||
# font_file_text=
|
||||
|
||||
## Set font glyph ranges. Defaults to Latin-only. Don't forget to set font_file/font_file_text to font that supports these
|
||||
## Probably don't enable all at once because of memory usage and hardware limits concerns
|
||||
## If you experience crashes or text is just squares, reduce glyph range or reduce font size
|
||||
# font_glyph_ranges=korean,chinese,chinese_simplified,japanese,cyrillic,thai,vietnamese,latin_ext_a,latin_ext_b
|
||||
|
||||
### Change the hud position
|
||||
# position=top-left
|
||||
|
||||
### Change the corner roundness
|
||||
# round_corners=
|
||||
|
||||
### Disable / hide the hud by default
|
||||
no_display
|
||||
|
||||
### Hud position offset
|
||||
# offset_x=
|
||||
# offset_y=
|
||||
|
||||
### Hud dimensions
|
||||
# width=
|
||||
# height=
|
||||
# table_columns=
|
||||
# cellpadding_y=
|
||||
|
||||
### Hud transparency / alpha
|
||||
# background_alpha=0.5
|
||||
# alpha=
|
||||
|
||||
### FCAT overlay
|
||||
### This enables an FCAT overlay to perform frametime analysis on the final image stream.
|
||||
### Enable the overlay
|
||||
# fcat
|
||||
### Set the width of the FCAT overlay.
|
||||
### 24 is a performance optimization on AMD GPUs that should not have adverse effects on nVidia GPUs.
|
||||
### A minimum of 20 pixels is recommended by nVidia.
|
||||
# fcat_overlay_width=24
|
||||
### Set the screen edge, this can be useful for special displays that don't update from top edge to bottom. This goes from 0 (left side) to 3 (top edge), counter-clockwise.
|
||||
# fcat_screen_edge=0
|
||||
|
||||
### Color customization
|
||||
# text_color=FFFFFF
|
||||
# gpu_color=2E9762
|
||||
# cpu_color=2E97CB
|
||||
# vram_color=AD64C1
|
||||
# ram_color=C26693
|
||||
# engine_color=EB5B5B
|
||||
# io_color=A491D3
|
||||
# frametime_color=00FF00
|
||||
# background_color=020202
|
||||
# media_player_color=FFFFFF
|
||||
# wine_color=EB5B5B
|
||||
# battery_color=FF9078
|
||||
|
||||
### Specify GPU with PCI bus ID for AMDGPU and NVML stats
|
||||
### Set to 'domain:bus:slot.function'
|
||||
# pci_dev=0:0a:0.0
|
||||
|
||||
### Blacklist
|
||||
# blacklist=
|
||||
|
||||
### Control over socket
|
||||
### Enable and set socket name, '%p' is replaced with process id
|
||||
# control = mangohud
|
||||
# control = mangohud-%p
|
||||
|
||||
################ WORKAROUNDS #################
|
||||
### Options starting with "gl_*" are for OpenGL
|
||||
### Specify what to use for getting display size. Options are "viewport", "scissorbox" or disabled. Defaults to using glXQueryDrawable
|
||||
# gl_size_query=viewport
|
||||
|
||||
### (Re)bind given framebuffer before MangoHud gets drawn. Helps with Crusader Kings III
|
||||
# gl_bind_framebuffer=0
|
||||
|
||||
### Don't swap origin if using GL_UPPER_LEFT. Helps with Ryujinx
|
||||
# gl_dont_flip=1
|
||||
|
||||
################ INTERACTION #################
|
||||
|
||||
### Change toggle keybinds for the hud & logging
|
||||
# toggle_hud=Shift_R+F12
|
||||
# toggle_fps_limit=Shift_L+F1
|
||||
# toggle_logging=Shift_L+F2
|
||||
# reload_cfg=Shift_L+F4
|
||||
# upload_log=Shift_L+F3
|
||||
|
||||
#################### LOG #####################
|
||||
### Automatically start the log after X seconds
|
||||
# autostart_log=1
|
||||
### Set amount of time in seconds that the logging will run for
|
||||
# log_duration=
|
||||
### Change the default log interval, 100 is default
|
||||
# log_interval=100
|
||||
### Set location of the output files (required for logging)
|
||||
output_folder=/home/wizardlink/.config/MangoHud
|
||||
### Permit uploading logs directly to FlightlessMango.com
|
||||
# permit_upload=1
|
||||
### Define a '+'-separated list of percentiles shown in the benchmark results
|
||||
### Use "AVG" to get a mean average. Default percentiles are 97+AVG+1+0.1
|
||||
# benchmark_percentiles=97,AVG,1,0.1
|
|
@ -1,212 +0,0 @@
|
|||
#? Config file for btop v. 1.2.13
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
color_theme = "/usr/share/btop/themes/dracula.theme"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = False
|
||||
|
||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||
truecolor = True
|
||||
|
||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||
force_tty = False
|
||||
|
||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||
#* Use whitespace " " as separator between different presets.
|
||||
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||
|
||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||
vim_keys = False
|
||||
|
||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||
rounded_corners = True
|
||||
|
||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||
#* "block" has half the resolution of braille but uses more common characters.
|
||||
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||
graph_symbol = "braille"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_cpu = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_mem = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_net = "default"
|
||||
|
||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||
graph_symbol_proc = "default"
|
||||
|
||||
#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
|
||||
shown_boxes = "cpu proc mem net"
|
||||
|
||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||
update_ms = 2000
|
||||
|
||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||
proc_sorting = "cpu lazy"
|
||||
|
||||
#* Reverse sorting order, True or False.
|
||||
proc_reversed = False
|
||||
|
||||
#* Show processes as a tree.
|
||||
proc_tree = False
|
||||
|
||||
#* Use the cpu graph colors in the process list.
|
||||
proc_colors = True
|
||||
|
||||
#* Use a darkening gradient in the process list.
|
||||
proc_gradient = True
|
||||
|
||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||
proc_per_core = False
|
||||
|
||||
#* Show process memory as bytes instead of percent.
|
||||
proc_mem_bytes = True
|
||||
|
||||
#* Show cpu graph for each process.
|
||||
proc_cpu_graphs = True
|
||||
|
||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||
proc_info_smaps = False
|
||||
|
||||
#* Show proc box on left side of screen instead of right.
|
||||
proc_left = False
|
||||
|
||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||
proc_filter_kernel = False
|
||||
|
||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_upper = "total"
|
||||
|
||||
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||
#* Select from a list of detected attributes from the options menu.
|
||||
cpu_graph_lower = "total"
|
||||
|
||||
#* Toggles if the lower CPU graph should be inverted.
|
||||
cpu_invert_lower = True
|
||||
|
||||
#* Set to True to completely disable the lower CPU graph.
|
||||
cpu_single_graph = False
|
||||
|
||||
#* Show cpu box at bottom of screen instead of top.
|
||||
cpu_bottom = False
|
||||
|
||||
#* Shows the system uptime in the CPU box.
|
||||
show_uptime = True
|
||||
|
||||
#* Show cpu temperature.
|
||||
check_temp = True
|
||||
|
||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||
cpu_sensor = "Auto"
|
||||
|
||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||
show_coretemp = True
|
||||
|
||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||
#* Example: "4:0 5:1 6:3"
|
||||
cpu_core_map = ""
|
||||
|
||||
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||
temp_scale = "celsius"
|
||||
|
||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||
base_10_sizes = False
|
||||
|
||||
#* Show CPU frequency.
|
||||
show_cpu_freq = True
|
||||
|
||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||
clock_format = "%X"
|
||||
|
||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||
background_update = True
|
||||
|
||||
#* Custom cpu model name, empty string to disable.
|
||||
custom_cpu_name = ""
|
||||
|
||||
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
|
||||
disks_filter = ""
|
||||
|
||||
#* Show graphs instead of meters for memory values.
|
||||
mem_graphs = True
|
||||
|
||||
#* Show mem box below net box instead of above.
|
||||
mem_below_net = False
|
||||
|
||||
#* Count ZFS ARC in cached and available memory.
|
||||
zfs_arc_cached = True
|
||||
|
||||
#* If swap memory should be shown in memory box.
|
||||
show_swap = True
|
||||
|
||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||
swap_disk = True
|
||||
|
||||
#* If mem box should be split to also show disks info.
|
||||
show_disks = True
|
||||
|
||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||
only_physical = True
|
||||
|
||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||
use_fstab = True
|
||||
|
||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||
zfs_hide_datasets = False
|
||||
|
||||
#* Set to true to show available disk space for privileged users.
|
||||
disk_free_priv = False
|
||||
|
||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||
show_io_stat = True
|
||||
|
||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||
io_mode = False
|
||||
|
||||
#* Set to True to show combined read/write io graphs in io mode.
|
||||
io_graph_combined = False
|
||||
|
||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||
io_graph_speeds = ""
|
||||
|
||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||
net_download = 100
|
||||
|
||||
net_upload = 100
|
||||
|
||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||
net_auto = True
|
||||
|
||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||
net_sync = True
|
||||
|
||||
#* Starts with the Network Interface specified here.
|
||||
net_iface = ""
|
||||
|
||||
#* Show battery stats in top right if battery is present.
|
||||
show_battery = True
|
||||
|
||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||
selected_battery = "Auto"
|
||||
|
||||
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||
log_level = "WARNING"
|
|
@ -1,170 +0,0 @@
|
|||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||
;; sync' after modifying this file!
|
||||
|
||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||
;; clients, file templates and snippets.
|
||||
(setq user-full-name "Alexandre Cavalheiro S. Tiago da Silva"
|
||||
user-mail-address "contact@thewizard.link")
|
||||
|
||||
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
|
||||
;; are the three important ones:
|
||||
;;
|
||||
;; + `doom-font'
|
||||
;; + `doom-variable-pitch-font'
|
||||
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||
;; presentations or streaming.
|
||||
;;
|
||||
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
|
||||
;; font string. You generally only need these two:
|
||||
;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light)
|
||||
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
|
||||
|
||||
(setq doom-font (font-spec :family "FantasqueSansMono NF" :size 15))
|
||||
;;(setq doom-font (font-spec :family "Hasklig" :size 12 :weight 'regular))
|
||||
|
||||
;;(setq doom-unicode-font doom-font) ; extend glyphs
|
||||
|
||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||
;; `load-theme' function. This is the default:
|
||||
(setq doom-theme 'doom-dracula)
|
||||
|
||||
;; If you use `org' and don't want your org files in the default location below,
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
(setq org-directory "~/Documents/notes"
|
||||
org-agenda-files (doom-files-in `(,org-directory, "~/Documents/zettelkasten") :type 'files :match "\\.org\\'"))
|
||||
|
||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||
(setq display-line-numbers-type 'relative)
|
||||
|
||||
|
||||
;; Here are some additional functions/macros that could help you configure Doom:
|
||||
;;
|
||||
;; - `load!' for loading external *.el files relative to this one
|
||||
;; - `use-package!' for configuring packages
|
||||
;; - `after!' for running code after a package has loaded
|
||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||
;; this file. Emacs searches the `load-path' when you load packages with
|
||||
;; `require' or `use-package'.
|
||||
;; - `map!' for binding new keys
|
||||
;;
|
||||
;; To get information about any of these functions/macros, move the cursor over
|
||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||
;; This will open documentation for it, including demos of how they are used.
|
||||
;;
|
||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||
;; they are implemented.
|
||||
|
||||
;; Set the tab size to 2
|
||||
(setq tab-width 2)
|
||||
|
||||
;; Make sure hl-line-mode doesn't overrides rainbow-mode
|
||||
(add-hook! 'rainbow-mode-hook
|
||||
(hl-line-mode (if rainbow-mode -1 +1)))
|
||||
|
||||
;; Show gravatars on commits
|
||||
(setq magit-revision-show-gravatars '("^Author: " . "^Commit: "))
|
||||
|
||||
;; Enable fullscreen when activating zen mode
|
||||
(setq writeroom-fullscreen-effect t)
|
||||
|
||||
;; Configure elcord
|
||||
(setq elcord-client-id "794300845000228897"
|
||||
elcord-mode-text-alist '(
|
||||
(cpp-mode . "C++")
|
||||
(emacs-lisp-mode . "Elisp")
|
||||
(gdscript-mode . "GDScript")
|
||||
(js-mode . ":(")
|
||||
(json-mode . "D:")
|
||||
(lua-mode . "PLEASE")
|
||||
(org-mode . "c:")
|
||||
(sh-mode . ":c")
|
||||
(typescript-mode . ":)")
|
||||
(magit-mode . "Git magic")
|
||||
(elixir-mode . "Elixir")
|
||||
(nim-mode "Nim")
|
||||
)
|
||||
elcord-mode-icon-alist '(
|
||||
(cpp-mode . "cpp_mode")
|
||||
(emacs-lisp-mode . "elisp_mode")
|
||||
(gdscript-mode . "gdscript_mode")
|
||||
(js-mode . "js_mode")
|
||||
(json-mode . "json_mode")
|
||||
(lua-mode . "lua_mode")
|
||||
(org-mode . "org_mode")
|
||||
(sh-mode . "sh_mode")
|
||||
(typescript-mode . "typescript_mode")
|
||||
(magit-mode . "magit_mode")
|
||||
(elixir-mode . "elixir_mode")
|
||||
(nim-mode . "nim_mode")
|
||||
)
|
||||
elcord-editor-icon "elmo_fire"
|
||||
elcord--editor-name "Coding is overrated."
|
||||
)
|
||||
|
||||
;; Configure initial major mode for the scratch buffer
|
||||
(setq initial-major-mode 'org-mode)
|
||||
|
||||
;; Configure orm-roam
|
||||
(setq org-roam-v2-ack t) ; flag that it has been successfully migrated
|
||||
(setq org-roam-directory "~/Documents/zettelkasten")
|
||||
(map! (:leader :desc "Opens a daily note through the calendar" :n "nrdF" #'org-roam-dailies-find-date))
|
||||
|
||||
(use-package! websocket
|
||||
:after org-roam)
|
||||
(use-package! org-roam-ui
|
||||
:after org-roam
|
||||
:config
|
||||
(setq org-roam-ui-sync-theme t
|
||||
org-roam-ui-follow t
|
||||
org-roam-ui-update-on-save t
|
||||
org-roam-ui-open-on-start t))
|
||||
|
||||
;; Function to add directories done by hlissner (Henrik) https://github.com/hlissner/doom-emacs/issues/5305#issuecomment-923996238
|
||||
(defun doom/add-directory-as-project (dir)
|
||||
"Register an arbitrary directory as a project.
|
||||
If DIR is not a valid project, a .project file will be created within it. This
|
||||
command will throw an error if a parent of DIR is a valid project (which would
|
||||
mask DIR)."
|
||||
(interactive "D")
|
||||
(let ((short-dir (abbreviate-file-name dir))
|
||||
(proj-dir (doom-project-root dir)))
|
||||
(unless (and proj-dir (file-equal-p proj-dir dir))
|
||||
(with-temp-file (doom-path dir ".project")))
|
||||
(setq proj-dir (doom-project-root dir))
|
||||
(unless (and proj-dir (file-equal-p proj-dir dir))
|
||||
(user-error "Can't add %S as a project, because %S is already a project"
|
||||
short-dir (abbreviate-file-name proj-dir)))
|
||||
(message "%S was not a project; adding .project file to it" short-dir)
|
||||
(projectile-add-known-project dir)))
|
||||
|
||||
;; Setup elixir-ls
|
||||
(setq lsp-clients-elixir-server-executable '("~/.local/share/elixir-ls/release/language_server.sh"))
|
||||
|
||||
;; Configure elfeed
|
||||
(setq rmh-elfeed-org-files '("/home/wizardlink/Documents/zettelkasten/20220610215118-elfeed.org"))
|
||||
|
||||
;; Configure doom-themes with treemacs
|
||||
(with-eval-after-load 'doom-themes
|
||||
(doom-themes-treemacs-config))
|
||||
|
||||
;; Configure doom-gruvbox
|
||||
(setq
|
||||
doom-gruvbox-brighter-comments nil
|
||||
doom-gruvbox-dark-variant "medium"
|
||||
doom-gruvbox-padded-modeline nil)
|
||||
|
||||
;; Configure formaters
|
||||
(setq +format-on-save-enabled-modes
|
||||
'(not emacs-lisp-mode
|
||||
javascript-mode
|
||||
typescript-mode
|
||||
web-mode))
|
||||
|
||||
;; Configure org-reveal
|
||||
(setq
|
||||
org-reveal-root "https://cdn.jsdelivr.net/npm/reveal.js"
|
||||
org-reveal-klipsify-src 'nil)
|
|
@ -1,13 +0,0 @@
|
|||
# -*- mode: snippet -*-
|
||||
# name: cult_bounty_message
|
||||
# key: cultBountyMessage
|
||||
# --
|
||||
« **$1** »
|
||||
|
||||
╫
|
||||
║ **Requirements**
|
||||
║ $2
|
||||
║
|
||||
║ **\$3 Reward \$4**
|
||||
║ <@574657462603612160>;
|
||||
╫
|
|
@ -1,11 +0,0 @@
|
|||
# -*- mode: snippet -*-
|
||||
# name: cult_event
|
||||
# key: cultEvent
|
||||
# --
|
||||
* TODO $1 :cult_event:
|
||||
SCHEDULED: <`(current-time-string)`>
|
||||
- HOST: $2
|
||||
- HOW LONG: $3
|
||||
- LINK: $4
|
||||
|
||||
$5
|
|
@ -1,3 +0,0 @@
|
|||
# Dev
|
||||
alias e '~/.local/bin/lvim'
|
||||
alias edit '~/.local/bin/lvim'
|
|
@ -1,50 +0,0 @@
|
|||
# Dracula Color Palette
|
||||
set -l foreground f8f8f2
|
||||
set -l selection 44475a
|
||||
set -l comment 6272a4
|
||||
set -l red ff5555
|
||||
set -l orange ffb86c
|
||||
set -l yellow f1fa8c
|
||||
set -l green 50fa7b
|
||||
set -l purple bd93f9
|
||||
set -l cyan 8be9fd
|
||||
set -l pink ff79c6
|
||||
|
||||
# Syntax Highlighting Colors
|
||||
set -gx fish_color_normal $foreground
|
||||
set -gx fish_color_command $cyan
|
||||
set -gx fish_color_keyword $pink
|
||||
set -gx fish_color_quote $yellow
|
||||
set -gx fish_color_redirection $foreground
|
||||
set -gx fish_color_end $orange
|
||||
set -gx fish_color_error $red
|
||||
set -gx fish_color_param $purple
|
||||
set -gx fish_color_comment $comment
|
||||
set -gx fish_color_selection --background=$selection
|
||||
set -gx fish_color_search_match --background=$selection
|
||||
set -gx fish_color_operator $green
|
||||
set -gx fish_color_escape $pink
|
||||
set -gx fish_color_autosuggestion $comment
|
||||
set -gx fish_color_cancel $red --reverse
|
||||
set -gx fish_color_option $orange
|
||||
|
||||
# Default Prompt Colors
|
||||
set -gx fish_color_cwd $green
|
||||
set -gx fish_color_host $purple
|
||||
set -gx fish_color_host_remote $purple
|
||||
set -gx fish_color_user $cyan
|
||||
|
||||
# Completion Pager Colors
|
||||
set -gx fish_pager_color_progress $comment
|
||||
set -gx fish_pager_color_background
|
||||
set -gx fish_pager_color_prefix $cyan
|
||||
set -gx fish_pager_color_completion $foreground
|
||||
set -gx fish_pager_color_description $comment
|
||||
set -gx fish_pager_color_selected_background --background=$selection
|
||||
set -gx fish_pager_color_selected_prefix $cyan
|
||||
set -gx fish_pager_color_selected_completion $foreground
|
||||
set -gx fish_pager_color_selected_description $comment
|
||||
set -gx fish_pager_color_secondary_background
|
||||
set -gx fish_pager_color_secondary_prefix $cyan
|
||||
set -gx fish_pager_color_secondary_completion $foreground
|
||||
set -gx fish_pager_color_secondary_description $comment
|
|
@ -1,17 +0,0 @@
|
|||
fish_add_path /home/wizardlink/.local/share/scripts \
|
||||
/home/wizardlink/.config/emacs/bin \
|
||||
/home/wizardlink/.spicetify \
|
||||
/home/wizardlink/.nimble/bin \
|
||||
/home/wizardlink/.cargo/bin \
|
||||
/home/wizardlink/.local/bin \
|
||||
/lib/flatpak/exports/bin \
|
||||
/home/wizardlink/.local/share/scripts/burrito
|
||||
|
||||
# Set the default editor
|
||||
set -x EDITOR lvim
|
||||
|
||||
# Configure FZF
|
||||
set -x FZF_DEFAULT_OPTS '--color=fg:#f8f8f2,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4 --layout=reverse --height 50%'
|
||||
|
||||
# Remove welcome message
|
||||
set -x fish_greeting ''
|
|
@ -1,7 +0,0 @@
|
|||
## Set theme
|
||||
##if status is-interactive
|
||||
##theme_gruvbox dark hard
|
||||
##end
|
||||
|
||||
## Set vim mode
|
||||
set -g fish_key_bindings fish_vi_key_bindings
|
|
@ -1,32 +0,0 @@
|
|||
# This file contains fish universal variable definitions.
|
||||
# VERSION: 3.0
|
||||
SETUVAR __fish_initialized:3400
|
||||
SETUVAR fish_color_autosuggestion:555\x1ebrblack
|
||||
SETUVAR fish_color_cancel:\x2dr
|
||||
SETUVAR fish_color_command:blue
|
||||
SETUVAR fish_color_comment:red
|
||||
SETUVAR fish_color_cwd:green
|
||||
SETUVAR fish_color_cwd_root:red
|
||||
SETUVAR fish_color_end:green
|
||||
SETUVAR fish_color_error:brred
|
||||
SETUVAR fish_color_escape:brcyan
|
||||
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||
SETUVAR fish_color_host:normal
|
||||
SETUVAR fish_color_host_remote:yellow
|
||||
SETUVAR fish_color_normal:normal
|
||||
SETUVAR fish_color_operator:brcyan
|
||||
SETUVAR fish_color_param:cyan
|
||||
SETUVAR fish_color_quote:yellow
|
||||
SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
|
||||
SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d111
|
||||
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||
SETUVAR fish_color_status:red
|
||||
SETUVAR fish_color_user:brgreen
|
||||
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||
SETUVAR --export fish_key_bindings:fish_default_key_bindings
|
||||
SETUVAR fish_pager_color_completion:normal
|
||||
SETUVAR fish_pager_color_description:B3A06D\x1eyellow\x1e\x2di
|
||||
SETUVAR fish_pager_color_prefix:cyan\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
|
||||
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
||||
SETUVAR fish_pager_color_selected_background:\x2dr
|
||||
SETUVAR fish_user_paths:/home/wizardlink/\x2elocal/share/scripts/burrito\x1e/home/wizardlink/\x2econfig/emacs/bin\x1e/home/wizardlink/\x2espicetify\x1e/home/wizardlink/\x2elocal/share/scripts\x1e/home/wizardlink/\x2eemacs\x2ed/bin\x1e/home/wizardlink/\x2enimble/bin\x1e/home/wizardlink/\x2ecargo/bin\x1e/home/wizardlink/\x2elocal/bin
|
|
@ -1,4 +0,0 @@
|
|||
function fish_prompt
|
||||
set_color 7400FF
|
||||
echo '%' (set_color normal)
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
function fzf_edit
|
||||
fzf --multi --bind 'enter:become(edit {+})'
|
||||
end
|
|
@ -1,32 +0,0 @@
|
|||
function n --wraps nnn --description 'support nnn quit and change directory'
|
||||
# Block nesting of nnn in subshells
|
||||
if test -n "$NNNLVL"
|
||||
if [ (expr $NNNLVL + 0) -ge 1 ]
|
||||
echo "nnn is already running"
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
# The behaviour is set to cd on quit (nnn checks if NNN_TMPFILE is set)
|
||||
# If NNN_TMPFILE is set to a custom path, it must be exported for nnn to
|
||||
# see. To cd on quit only on ^G, remove the "-x" from both lines below,
|
||||
# without changing the paths.
|
||||
if test -n "$XDG_CONFIG_HOME"
|
||||
set -x NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd"
|
||||
else
|
||||
set -x NNN_TMPFILE "$HOME/.config/nnn/.lastd"
|
||||
end
|
||||
|
||||
# Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn
|
||||
# stty start undef
|
||||
# stty stop undef
|
||||
# stty lwrap undef
|
||||
# stty lnext undef
|
||||
|
||||
nnn $argv
|
||||
|
||||
if test -e $NNN_TMPFILE
|
||||
source $NNN_TMPFILE
|
||||
rm $NNN_TMPFILE
|
||||
end
|
||||
end
|
|
@ -1,141 +0,0 @@
|
|||
#!/usr/bin/fish
|
||||
function theme_gruvbox --description 'Apply gruvbox theme'
|
||||
set -l mode 'light'
|
||||
if test (count $argv) -gt 0
|
||||
set mode $argv[1]
|
||||
end
|
||||
|
||||
set -g contrast 'medium'
|
||||
if test (count $argv) -gt 1
|
||||
set contrast $argv[2]
|
||||
end
|
||||
|
||||
switch $contrast
|
||||
case 'soft'
|
||||
case 'medium'
|
||||
case 'hard'
|
||||
case '*'
|
||||
set_color $fish_color_error
|
||||
echo 'Unknown contrast $contrast, choose soft, medium or hard'
|
||||
set_color $fish_color_normal
|
||||
return 1
|
||||
end
|
||||
|
||||
switch $mode
|
||||
case 'light'
|
||||
__theme_gruvbox_base
|
||||
__theme_gruvbox_light
|
||||
case 'dark'
|
||||
__theme_gruvbox_base
|
||||
__theme_gruvbox_dark
|
||||
case '*'
|
||||
set_color $fish_color_error
|
||||
echo 'Unknown mode $mode, choose light or dark'
|
||||
set_color $fish_color_normal
|
||||
return 1
|
||||
end
|
||||
__theme_gruvbox_palette
|
||||
return 0
|
||||
end
|
||||
|
||||
function __theme_gruvbox_base
|
||||
__printf_color 1 'cc/24/1d'
|
||||
__printf_color 2 '98/97/1a'
|
||||
__printf_color 3 'd7/99/21'
|
||||
__printf_color 4 '45/85/88'
|
||||
__printf_color 5 'b1/62/86'
|
||||
__printf_color 6 '68/9d/6a'
|
||||
end
|
||||
|
||||
function __theme_gruvbox_light
|
||||
set -l bg 'fb/f1/c7'
|
||||
switch $contrast
|
||||
case "soft"
|
||||
set bg 'f2/e5/bc'
|
||||
case "hard"
|
||||
set bg 'f9/f5/d7'
|
||||
end
|
||||
command printf "\033]11;rgb:$bg\007"
|
||||
|
||||
set -l fg '3c/38/36'
|
||||
command printf "\033]10;rgb:$fg\007"
|
||||
|
||||
__printf_color 0 $bg
|
||||
__printf_color 7 '7c/6f/64'
|
||||
__printf_color 8 '92/83/74'
|
||||
__printf_color 9 '9d/00/06'
|
||||
__printf_color 10 '79/74/0e'
|
||||
__printf_color 11 'b5/76/14'
|
||||
__printf_color 12 '07/66/78'
|
||||
__printf_color 13 '8f/3f/71'
|
||||
__printf_color 14 '42/7b/58'
|
||||
__printf_color 15 $fg
|
||||
end
|
||||
|
||||
function __theme_gruvbox_dark
|
||||
set -l bg '28/28/28'
|
||||
switch $contrast
|
||||
case "soft"
|
||||
set bg '32/30/2f'
|
||||
case "hard"
|
||||
set bg '1d/20/21'
|
||||
end
|
||||
command printf "\033]11;rgb:$bg\007"
|
||||
|
||||
set -l fg 'eb/db/b2'
|
||||
command printf "\033]10;rgb:$fg\007"
|
||||
|
||||
__printf_color 0 $bg
|
||||
__printf_color 7 'a8/99/84'
|
||||
__printf_color 8 '92/83/74'
|
||||
__printf_color 9 'fb/59/34'
|
||||
__printf_color 10 'b8/bb/26'
|
||||
__printf_color 11 'fa/bd/2f'
|
||||
__printf_color 12 '83/a5/98'
|
||||
__printf_color 13 'd3/86/9b'
|
||||
__printf_color 14 '8e/c0/7c'
|
||||
__printf_color 15 $fg
|
||||
end
|
||||
|
||||
function __theme_gruvbox_palette
|
||||
__printf_color 236 '32/30/2f'
|
||||
__printf_color 234 '1d/20/21'
|
||||
|
||||
__printf_color 235 '28/28/28'
|
||||
__printf_color 237 '3c/38/36'
|
||||
__printf_color 239 '50/49/45'
|
||||
__printf_color 241 '66/5c/54'
|
||||
__printf_color 243 '7c/6f/64'
|
||||
|
||||
__printf_color 244 '92/83/74'
|
||||
__printf_color 245 '92/83/74'
|
||||
|
||||
__printf_color 228 'f2/e5/bc'
|
||||
__printf_color 230 'f9/f5/d7'
|
||||
|
||||
__printf_color 229 'fb/f1/c7'
|
||||
__printf_color 223 'eb/db/b2'
|
||||
__printf_color 250 'd5/c4/a1'
|
||||
__printf_color 248 'bd/ae/93'
|
||||
__printf_color 246 'a8/99/84'
|
||||
|
||||
__printf_color 167 'fb/49/34'
|
||||
__printf_color 142 'b8/bb/26'
|
||||
__printf_color 214 'fa/bd/2f'
|
||||
__printf_color 109 '83/a5/98'
|
||||
__printf_color 175 'd3/86/9b'
|
||||
__printf_color 108 '8e/c0/7c'
|
||||
__printf_color 208 'fe/80/19'
|
||||
|
||||
__printf_color 88 '9d/00/06'
|
||||
__printf_color 100 '79/74/0e'
|
||||
__printf_color 136 'b5/76/14'
|
||||
__printf_color 24 '07/66/78'
|
||||
__printf_color 96 '8f/3f/71'
|
||||
__printf_color 66 '42/7b/58'
|
||||
__printf_color 130 'af/3a/03'
|
||||
end
|
||||
|
||||
function __printf_color
|
||||
command printf "\033]4;$argv[1];rgb:$argv[2]\007"
|
||||
end
|
|
@ -1,255 +0,0 @@
|
|||
--[[
|
||||
lvim is the global options object
|
||||
|
||||
Linters should be
|
||||
filled in as strings with either
|
||||
a global executable or a path to
|
||||
an executable
|
||||
]]
|
||||
-- THESE ARE EXAMPLE CONFIGS FEEL FREE TO CHANGE TO WHATEVER YOU WANT
|
||||
|
||||
-- general
|
||||
lvim.log.level = "warn"
|
||||
lvim.format_on_save.enabled = true
|
||||
lvim.colorscheme = "dracula"
|
||||
lvim.transparent_window = true
|
||||
-- to disable icons and use a minimalist setup, uncomment the following
|
||||
-- lvim.use_icons = false
|
||||
|
||||
-- keymappings [view all the defaults by pressing <leader>Lk]
|
||||
lvim.leader = "space"
|
||||
-- add your own keymapping
|
||||
lvim.keys.normal_mode["<C-s>"] = ":w<cr>"
|
||||
lvim.keys.normal_mode["<S-l>"] = ":BufferLineCycleNext<CR>"
|
||||
lvim.keys.normal_mode["<S-h>"] = ":BufferLineCyclePrev<CR>"
|
||||
-- unmap a default keymapping
|
||||
-- vim.keymap.del("n", "<C-Up>")
|
||||
-- override a default keymapping
|
||||
-- lvim.keys.normal_mode["<C-q>"] = ":q<cr>" -- or vim.keymap.set("n", "<C-q>", ":q<cr>" )
|
||||
|
||||
-- Change Telescope navigation to use j and k for navigation and n and p for history in both input and normal mode.
|
||||
-- we use protected-mode (pcall) just in case the plugin wasn't loaded yet.
|
||||
-- local _, actions = pcall(require, "telescope.actions")
|
||||
-- lvim.builtin.telescope.defaults.mappings = {
|
||||
-- -- for input mode
|
||||
-- i = {
|
||||
-- ["<C-j>"] = actions.move_selection_next,
|
||||
-- ["<C-k>"] = actions.move_selection_previous,
|
||||
-- ["<C-n>"] = actions.cycle_history_next,
|
||||
-- ["<C-p>"] = actions.cycle_history_prev,
|
||||
-- },
|
||||
-- -- for normal mode
|
||||
-- n = {
|
||||
-- ["<C-j>"] = actions.move_selection_next,
|
||||
-- ["<C-k>"] = actions.move_selection_previous,
|
||||
-- },
|
||||
-- }
|
||||
|
||||
-- Change theme settings
|
||||
-- lvim.builtin.theme.options.dim_inactive = true
|
||||
-- lvim.builtin.theme.options.style = "storm"
|
||||
|
||||
-- Use which-key to add extra bindings with the leader-key prefix
|
||||
-- lvim.builtin.which_key.mappings["P"] = { "<cmd>Telescope projects<CR>", "Projects" }
|
||||
-- lvim.builtin.which_key.mappings["t"] = {
|
||||
-- name = "+Trouble",
|
||||
-- r = { "<cmd>Trouble lsp_references<cr>", "References" },
|
||||
-- f = { "<cmd>Trouble lsp_definitions<cr>", "Definitions" },
|
||||
-- d = { "<cmd>Trouble document_diagnostics<cr>", "Diagnostics" },
|
||||
-- q = { "<cmd>Trouble quickfix<cr>", "QuickFix" },
|
||||
-- l = { "<cmd>Trouble loclist<cr>", "LocationList" },
|
||||
-- w = { "<cmd>Trouble workspace_diagnostics<cr>", "Workspace Diagnostics" },
|
||||
-- }
|
||||
|
||||
-- VIM general settings
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.title = false
|
||||
|
||||
-- TODO: User Config for predefined plugins
|
||||
-- After changing plugin config exit and reopen LunarVim, Run :PackerInstall :PackerCompile
|
||||
lvim.builtin.alpha.active = true
|
||||
lvim.builtin.alpha.mode = "dashboard"
|
||||
lvim.builtin.terminal.active = true
|
||||
lvim.builtin.nvimtree.setup.view.side = "left"
|
||||
lvim.builtin.nvimtree.setup.renderer.icons.show.git = false
|
||||
|
||||
-- if you don't want all the parsers change this to a table of the ones you want
|
||||
lvim.builtin.treesitter.ensure_installed = {
|
||||
"bash",
|
||||
"c",
|
||||
"javascript",
|
||||
"json",
|
||||
"lua",
|
||||
"python",
|
||||
"typescript",
|
||||
"tsx",
|
||||
"css",
|
||||
"rust",
|
||||
"java",
|
||||
"yaml",
|
||||
"gdscript"
|
||||
}
|
||||
|
||||
lvim.builtin.treesitter.ignore_install = { "haskell" }
|
||||
lvim.builtin.treesitter.highlight.enable = true
|
||||
|
||||
-- generic LSP settings
|
||||
|
||||
-- -- make sure server will always be installed even if the server is in skipped_servers list
|
||||
-- lvim.lsp.installer.setup.ensure_installed = {
|
||||
-- "sumneko_lua",
|
||||
-- "jsonls",
|
||||
-- }
|
||||
-- -- change UI setting of `LspInstallInfo`
|
||||
-- -- see <https://github.com/williamboman/nvim-lsp-installer#default-configuration>
|
||||
-- lvim.lsp.installer.setup.ui.check_outdated_servers_on_open = false
|
||||
-- lvim.lsp.installer.setup.ui.border = "rounded"
|
||||
-- lvim.lsp.installer.setup.ui.keymaps = {
|
||||
-- uninstall_server = "d",
|
||||
-- toggle_server_expand = "o",
|
||||
-- }
|
||||
|
||||
-- ---@usage disable automatic installation of servers
|
||||
-- lvim.lsp.installer.setup.automatic_installation = false
|
||||
|
||||
-- ---configure a server manually. !!Requires `:LvimCacheReset` to take effect!!
|
||||
-- ---see the full default list `:lua print(vim.inspect(lvim.lsp.automatic_configuration.skipped_servers))`
|
||||
-- vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "pyright" })
|
||||
-- local opts = {} -- check the lspconfig documentation for a list of all possible options
|
||||
-- require("lvim.lsp.manager").setup("pyright", opts)
|
||||
|
||||
-- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. !!Requires `:LvimCacheReset` to take effect!!
|
||||
-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype
|
||||
-- lvim.lsp.automatic_configuration.skipped_servers = vim.tbl_filter(function(server)
|
||||
-- return server ~= "emmet_ls"
|
||||
-- end, lvim.lsp.automatic_configuration.skipped_servers)
|
||||
|
||||
-- -- you can set a custom on_attach function that will be used for all the language servers
|
||||
-- -- See <https://github.com/neovim/nvim-lspconfig#keybindings-and-completion>
|
||||
-- lvim.lsp.on_attach_callback = function(client, bufnr)
|
||||
-- local function buf_set_option(...)
|
||||
-- vim.api.nvim_buf_set_option(bufnr, ...)
|
||||
-- end
|
||||
-- --Enable completion triggered by <c-x><c-o>
|
||||
-- buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")
|
||||
-- end
|
||||
|
||||
-- -- set a formatter, this will override the language server formatting capabilities (if it exists)
|
||||
-- local formatters = require "lvim.lsp.null-ls.formatters"
|
||||
-- formatters.setup {
|
||||
-- { command = "black", filetypes = { "python" } },
|
||||
-- { command = "isort", filetypes = { "python" } },
|
||||
-- {
|
||||
-- -- each formatter accepts a list of options identical to https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md#Configuration
|
||||
-- command = "prettier",
|
||||
-- ---@usage arguments to pass to the formatter
|
||||
-- -- these cannot contain whitespaces, options such as `--line-width 80` become either `{'--line-width', '80'}` or `{'--line-width=80'}`
|
||||
-- extra_args = { "--print-with", "100" },
|
||||
-- ---@usage specify which filetypes to enable. By default a providers will attach to all the filetypes it supports.
|
||||
-- filetypes = { "typescript", "typescriptreact" },
|
||||
-- },
|
||||
-- }
|
||||
|
||||
-- -- set additional linters
|
||||
-- local linters = require "lvim.lsp.null-ls.linters"
|
||||
-- linters.setup {
|
||||
-- { command = "flake8", filetypes = { "python" } },
|
||||
-- {
|
||||
-- -- each linter accepts a list of options identical to https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md#Configuration
|
||||
-- command = "shellcheck",
|
||||
-- ---@usage arguments to pass to the formatter
|
||||
-- -- these cannot contain whitespaces, options such as `--line-width 80` become either `{'--line-width', '80'}` or `{'--line-width=80'}`
|
||||
-- extra_args = { "--severity", "warning" },
|
||||
-- },
|
||||
-- {
|
||||
-- command = "codespell",
|
||||
-- ---@usage specify which filetypes to enable. By default a providers will attach to all the filetypes it supports.
|
||||
-- filetypes = { "javascript", "python" },
|
||||
-- },
|
||||
-- }
|
||||
|
||||
local command_resolver = require("null-ls.helpers.command_resolver")
|
||||
require("null-ls").register({
|
||||
sources = {
|
||||
-- Configure ESLint to properly use Yarn 2+
|
||||
require("null-ls").builtins.diagnostics.eslint.with({
|
||||
dynamic_command = command_resolver.from_yarn_pnp(),
|
||||
conditions = function(utils)
|
||||
return utils.root_has_file({ ".pnp.cjs" })
|
||||
end
|
||||
}),
|
||||
},
|
||||
})
|
||||
|
||||
--
|
||||
-- Configure LSP
|
||||
--
|
||||
|
||||
require("lvim.lsp.manager").setup("gdscript", {
|
||||
on_attach = require("lvim.lsp.manager").on_attach,
|
||||
flags = {
|
||||
debounce_text_changes = 150
|
||||
}
|
||||
})
|
||||
|
||||
--
|
||||
-- Configure debuggers
|
||||
--
|
||||
|
||||
local dap = require("dap")
|
||||
|
||||
dap.adapters.codelldb = {
|
||||
type = "server",
|
||||
port = "${port}",
|
||||
executable = {
|
||||
command = "/home/wizardlink/.local/share/codelldb/extension/adapter/codelldb",
|
||||
args = {"--port", "${port}"},
|
||||
}
|
||||
}
|
||||
|
||||
dap.configurations.rust = {
|
||||
{
|
||||
name = "Launch file",
|
||||
type = "codelldb",
|
||||
request = "launch",
|
||||
program = function()
|
||||
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
||||
end,
|
||||
cwd = "${workspaceFolder}",
|
||||
stopOnEntry = false,
|
||||
},
|
||||
-- {
|
||||
-- name = "Attach to gdbserver :1234",
|
||||
-- type = "codelldb",
|
||||
-- request = "launch",
|
||||
-- MIMode = "gdb",
|
||||
-- miDebuggerServerAddress = "localhost:1234",
|
||||
-- miDebuggerPath = "/home/wizardlink/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/rust-gdb",
|
||||
-- cwd = "${workspaceFolder}",
|
||||
-- program = function()
|
||||
-- return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
||||
-- end,
|
||||
-- },
|
||||
}
|
||||
|
||||
-- Additional Plugins
|
||||
lvim.plugins = {
|
||||
{ "dracula/vim" },
|
||||
{ "gpanders/editorconfig.nvim" },
|
||||
{ "alaviss/nim.nvim" },
|
||||
{ "morhetz/gruvbox" }
|
||||
}
|
||||
|
||||
-- Autocommands (https://neovim.io/doc/user/autocmd.html)
|
||||
-- vim.api.nvim_create_autocmd("BufEnter", {
|
||||
-- pattern = { "*.json", "*.jsonc" },
|
||||
-- -- enable wrap mode for json files only
|
||||
-- command = "setlocal wrap",
|
||||
-- })
|
||||
-- vim.api.nvim_create_autocmd("FileType", {
|
||||
-- pattern = "zsh",
|
||||
-- callback = function()
|
||||
-- -- let treesitter use bash highlight for zsh files as well
|
||||
-- require("nvim-treesitter.highlight").attach(0, "bash")
|
||||
-- end,
|
||||
-- })
|
|
@ -1,33 +0,0 @@
|
|||
context.modules = [
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
node.description = "Noise Canceling source"
|
||||
media.name = "Noise Canceling source"
|
||||
filter.graph = {
|
||||
nodes = [
|
||||
{
|
||||
type = ladspa
|
||||
name = rnnoise
|
||||
plugin = /home/wizardlink/.local/share/pipewire/librnnoise_ladspa.so
|
||||
label = noise_suppressor_mono
|
||||
control = {
|
||||
"VAD Threshold (%)" 75.0
|
||||
"VAD Grace Period (ms)" 300
|
||||
"Retroactive VAD Grace (ms)" 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
capture.props = {
|
||||
node.name = "capture.rnnoise_source"
|
||||
node.passive = true
|
||||
audio.rate = 48000
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "rnnoise_source"
|
||||
media.class = Audio/Source
|
||||
audio.rate = 48000
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -1,4 +0,0 @@
|
|||
[ColorScheme]
|
||||
active_colors=#ffbd93f9, #ff424559, #ff484d6b, #ff6272a4, #ff44475a, #ff44475a, #ff6272a4, #ff44475a, #ffbd93f9, #ff282a36, #ff282a36, #ff44475a, #ff6272a4, #ffbd93f9, #ff8be9fd, #ff8be9fd, #ff44475a, #ff6272a4, #ff44475a, #fff8f8f2, #ff44475a
|
||||
disabled_colors=#ffbd93f9, #ff424559, #ff484d6b, #ff6272a4, #ff44475a, #ff44475a, #ff6272a4, #ff44475a, #ffbd93f9, #ff282a36, #ff282a36, #ff44475a, #ff6272a4, #ffbd93f9, #ff8be9fd, #ff8be9fd, #ff44475a, #ff6272a4, #ff44475a, #fff8f8f2, #ff44475a
|
||||
inactive_colors=#ffbd93f9, #ff424559, #ff484d6b, #ff6272a4, #ff44475a, #ff44475a, #ff6272a4, #ff44475a, #ffbd93f9, #ff282a36, #ff282a36, #ff44475a, #ff6272a4, #ffbd93f9, #ff8be9fd, #ff8be9fd, #ff44475a, #ff6272a4, #ff44475a, #fff8f8f2, #ff44475a
|
|
@ -1,324 +0,0 @@
|
|||
# Default config for sway
|
||||
#
|
||||
# Copy this to ~/.config/sway/config and edit it to your liking.
|
||||
#
|
||||
# Read `man 5 sway` for a complete reference.
|
||||
|
||||
### Variables
|
||||
#
|
||||
# Logo key. Use Mod1 for Alt.
|
||||
set $mod Mod4
|
||||
# Home row direction keys, like vim
|
||||
set $left h
|
||||
set $down j
|
||||
set $up k
|
||||
set $right l
|
||||
# Your preferred terminal emulator
|
||||
set $term wezterm
|
||||
# Your preferred application launcher
|
||||
# Note: pass the final command to swaymsg so that the resulting window can be opened
|
||||
# on the original workspace that the command was run on.
|
||||
set $menu wofi | xargs swaymsg exec --
|
||||
|
||||
### Output configuration
|
||||
#
|
||||
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
|
||||
output DP-2 bg /mnt/internal/personal/wallpapers/wallhaven-7286p3.png fill
|
||||
output DP-3 bg /mnt/internal/personal/wallpapers/wallhaven-rd92qj.png fill
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
# output HDMI-A-1 resolution 1920x1080 position 1920,0
|
||||
|
||||
output DP-2 mode 1920x1080@143.999Hz position 0,520
|
||||
output DP-3 mode 1920x1080@74.973Hz position 1920,0
|
||||
|
||||
# Portrait mode for second monitor
|
||||
output DP-3 transform 90
|
||||
|
||||
# Turn on VRR
|
||||
output DP-2 adaptive_sync off
|
||||
output DP-3 adaptive_sync off
|
||||
|
||||
#
|
||||
# You can get the names of your outputs by running: swaymsg -t get_outputs
|
||||
|
||||
### Idle configuration
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
# exec swayidle -w \
|
||||
# timeout 300 'swaylock -f -c 000000' \
|
||||
# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
||||
# before-sleep 'swaylock -f -c 000000'
|
||||
#
|
||||
# This will lock your screen after 300 seconds of inactivity, then turn off
|
||||
# your displays after another 300 seconds, and turn your screens back on when
|
||||
# resumed. It will also lock your screen before your computer goes to sleep.
|
||||
|
||||
### Input configuration
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
# input "2:14:SynPS/2_Synaptics_TouchPad" {
|
||||
# dwt enabled
|
||||
# tap enabled
|
||||
# natural_scroll enabled
|
||||
# middle_emulation enabled
|
||||
# }
|
||||
#
|
||||
# You can get the names of your inputs by running: swaymsg -t get_inputs
|
||||
# Read `man 5 sway-input` for more information about this section.
|
||||
|
||||
input "type:pointer" {
|
||||
accel_profile "flat"
|
||||
pointer_accel 0
|
||||
}
|
||||
|
||||
input "type:keyboard" {
|
||||
xkb_layout us,br
|
||||
xkb_options grp:ctrls_toggle
|
||||
}
|
||||
|
||||
### Key bindings
|
||||
#
|
||||
# Basics:
|
||||
#
|
||||
# Start a terminal
|
||||
bindsym $mod+Return exec $term
|
||||
|
||||
# Kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# Start your launcher
|
||||
bindsym $mod+d exec $menu
|
||||
|
||||
# Drag floating windows by holding down $mod and left mouse button.
|
||||
# Resize them with right mouse button + $mod.
|
||||
# Despite the name, also works for non-floating windows.
|
||||
# Change normal to inverse to use left mouse button for resizing and right
|
||||
# mouse button for dragging.
|
||||
floating_modifier $mod normal
|
||||
|
||||
# Reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
# Exit sway (logs you out of your Wayland session)
|
||||
bindsym $mod+Shift+e exec swaymsg exit
|
||||
#bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||
#
|
||||
# Moving around:
|
||||
#
|
||||
# Move your focus around
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
# Or use $mod+[up|down|left|right]
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# Move the focused window with the same, but add Shift
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
# Ditto, with arrow keys
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
#
|
||||
# Workspaces:
|
||||
#
|
||||
# Switch to workspace
|
||||
bindsym $mod+1 workspace number 1
|
||||
bindsym $mod+2 workspace number 2
|
||||
bindsym $mod+3 workspace number 3
|
||||
bindsym $mod+4 workspace number 4
|
||||
bindsym $mod+5 workspace number 5
|
||||
bindsym $mod+6 workspace number 6
|
||||
bindsym $mod+7 workspace number 7
|
||||
bindsym $mod+8 workspace number 8
|
||||
#Move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace number 1
|
||||
bindsym $mod+Shift+2 move container to workspace number 2
|
||||
bindsym $mod+Shift+3 move container to workspace number 3
|
||||
bindsym $mod+Shift+4 move container to workspace number 4
|
||||
bindsym $mod+Shift+5 move container to workspace number 5
|
||||
bindsym $mod+Shift+6 move container to workspace number 6
|
||||
bindsym $mod+Shift+7 move container to workspace number 7
|
||||
bindsym $mod+Shift+8 move container to workspace number 8
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
|
||||
workspace 1 output DP-2
|
||||
workspace 2 output DP-3
|
||||
workspace 3 output DP-2
|
||||
workspace 4 output DP-3
|
||||
workspace 5 output DP-2
|
||||
workspace 6 output DP-3
|
||||
workspace 7 output DP-2
|
||||
workspace 8 output DP-3
|
||||
|
||||
bindsym $mod+Ctrl+$left workspace prev
|
||||
bindsym $mod+Ctrl+$right workspace next
|
||||
bindsym $mod+Ctrl+Shift+$left workspace prev_on_output
|
||||
bindsym $mod+Ctrl+Shift+$right workspace next_on_output
|
||||
|
||||
bindsym $mod+Ctrl+Space workspace back_and_forth
|
||||
#
|
||||
# Layout stuff:
|
||||
#
|
||||
# You can "split" the current object of your focus with
|
||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||
# respectively.
|
||||
bindsym $mod+b splith
|
||||
bindsym $mod+v splitv
|
||||
|
||||
# Switch the current container between different layout styles
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
# Toggle the current focus between tiling and floating mode
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# Swap focus between the tiling area and the floating area
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# Move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
#
|
||||
# Scratchpad:
|
||||
#
|
||||
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||
# You can send windows there and get them back later.
|
||||
|
||||
# Move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym $mod+minus scratchpad show
|
||||
#
|
||||
# Resizing containers:
|
||||
#
|
||||
mode "resize" {
|
||||
# left will shrink the containers width
|
||||
# right will grow the containers width
|
||||
# up will shrink the containers height
|
||||
# down will grow the containers height
|
||||
bindsym $left resize shrink width 10px
|
||||
bindsym $down resize grow height 10px
|
||||
bindsym $up resize shrink height 10px
|
||||
bindsym $right resize grow width 10px
|
||||
|
||||
# Ditto, with arrow keys
|
||||
bindsym Left resize shrink width 10px
|
||||
bindsym Down resize grow height 10px
|
||||
bindsym Up resize shrink height 10px
|
||||
bindsym Right resize grow width 10px
|
||||
|
||||
# Return to default mode
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
#
|
||||
# Screenshots:
|
||||
#
|
||||
bindsym Print exec grimshot save area "/mnt/internal/personal/screenshots/$(date '+%Y-%m-%d_%H-%M-%S').png"
|
||||
bindsym Shift+Print exec grimshot save output "/mnt/internal/personal/screenshots/$(date '+%Y-%m-%d_%H-%M-%S').png"
|
||||
bindsym Ctrl+Print exec grimshot save active "/mnt/internal/personal/screenshots/$(date '+%Y-%m-%d_%H-%M-%S').png"
|
||||
bindsym Ctrl+Alt+Print exec grimshot copy area
|
||||
|
||||
# bindsym Print exec flameshot gui -c
|
||||
# bindsym Shift+Print exec flameshot screen -c
|
||||
# bindsym Ctrl+Print exec flameshot full -c
|
||||
|
||||
#
|
||||
# Custom:
|
||||
#
|
||||
bindsym Ctrl+Alt+Return exec ~/.local/bin/emacs
|
||||
|
||||
### Looks
|
||||
#
|
||||
# Status Bar:
|
||||
#
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
#bar {
|
||||
# output DP-2
|
||||
|
||||
# position top
|
||||
# height 18
|
||||
# font FantasqueSansMono NF
|
||||
|
||||
# strip_workspace_name yes
|
||||
# strip_workspace_numbers yes
|
||||
# workspace_min_width 4
|
||||
|
||||
# # When the status_command prints a new line to stdout, swaybar updates.
|
||||
# # The default just shows the current date and time.
|
||||
# #status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
|
||||
|
||||
# colors {
|
||||
# statusline #000000
|
||||
# background #ffffff
|
||||
|
||||
# focused_workspace #ffffff #000000 #ffffff
|
||||
# active_workspace #ffffff #000000 #ffffff
|
||||
# inactive_workspace #000000 #ffffff #000000
|
||||
# }
|
||||
#}
|
||||
bar swaybar_command waybar
|
||||
|
||||
#
|
||||
# Colors:
|
||||
#
|
||||
# The explanation is under `man 5 sway-bar`
|
||||
client.focused #BD93F9 #BD93F9 #282A36 #BD93F9
|
||||
client.focused_inactive #282A36 #282A36 #BD93F9 #282A36
|
||||
client.unfocused #282A36 #282A36 #BD93F9 #282A36
|
||||
|
||||
#
|
||||
# Font:
|
||||
#
|
||||
font FantasqueSansMono NF
|
||||
|
||||
#
|
||||
# Border:
|
||||
#
|
||||
default_border pixel 2
|
||||
default_floating_border pixel 2
|
||||
|
||||
#
|
||||
# Gaps:
|
||||
#
|
||||
gaps outer 12
|
||||
gaps inner 18
|
||||
|
||||
### Prrograms
|
||||
#
|
||||
# Startup programs:
|
||||
#
|
||||
exec lxpolkit
|
||||
exec mako
|
||||
#exec /home/wizardlink/.local/share/scripts/vision_health
|
||||
|
||||
include /etc/sway/config.d/*
|
||||
|
||||
#
|
||||
# Window settings
|
||||
#
|
||||
for_window [title="Awakened PoE Trade"] floating enable
|
||||
for_window [title="Godot"] floating enable
|
||||
for_window [title="Retro Gadgets"] floating enable
|
||||
for_window [title="DeaDBeeF"] floating enable
|
||||
# for_window [app_id="xdg-desktop-portal-gnome"] floating enable
|
|
@ -1,15 +0,0 @@
|
|||
# This file is written by xdg-user-dirs-update
|
||||
# If you want to change or add directories, just edit the line you're
|
||||
# interested in. All local changes will be retained on the next run.
|
||||
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
||||
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||
# absolute path. No other format is supported.
|
||||
#
|
||||
XDG_DESKTOP_DIR="$HOME/Desktop"
|
||||
XDG_DOWNLOAD_DIR="$HOME/Downloads"
|
||||
XDG_TEMPLATES_DIR="$HOME/Templates"
|
||||
XDG_PUBLICSHARE_DIR="$HOME/Public"
|
||||
XDG_DOCUMENTS_DIR="$HOME/Documents"
|
||||
XDG_MUSIC_DIR="$HOME/Music"
|
||||
XDG_PICTURES_DIR="$HOME/Pictures"
|
||||
XDG_VIDEOS_DIR="$HOME/Videos"
|
|
@ -1 +0,0 @@
|
|||
en_US
|
|
@ -1,39 +0,0 @@
|
|||
[General]
|
||||
codecs-profiles-selected=Video - H.264 + MP3 (MP4)
|
||||
filedialog-path=@Variant(\0\0\0\x11\0\0\0ufile:///mnt/internal/shared/jellyfin/anime/Sonny%20Boy/[SubsPlease]%20Sonny%20Boy%20-%2004%20(1080p)%20[47527457].mkv)
|
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xcb\0\0\x2@\0\0\a_\0\0\x6\x1f\0\0\x4\x38\0\0\x2\x1c\0\0\v\xb7\0\0\x6S\0\0\0\0\x2\0\0\0\a\x80\0\0\x3\xcb\0\0\x2@\0\0\a_\0\0\x6\x1f)
|
||||
|
||||
[FullScreen]
|
||||
pos=@Point(560 1536)
|
||||
screen=@Rect(0 520 1920 1080)
|
||||
wide=false
|
||||
|
||||
[MainWindow]
|
||||
adv-controls=0
|
||||
bgSize=@Size(100 30)
|
||||
pl-dock-status=true
|
||||
playlist-visible=true
|
||||
playlistSize=@Size(917 918)
|
||||
status-bar-visible=false
|
||||
|
||||
[Messages]
|
||||
geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xc6\0\0\0\"\0\0\au\0\0\x4-\0\0\x2\x94\0\0\x1;\0\0\x4\xeb\0\0\x2\xfc\0\0\0\0\x2\0\0\0\a\x80\0\0\x3\xc6\0\0\0\"\0\0\au\0\0\x4-)"
|
||||
|
||||
[OpenDialog]
|
||||
advanced=false
|
||||
netMRL=
|
||||
size=@Size(526 423)
|
||||
|
||||
[Playlist]
|
||||
headerStateV2=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\xff\xff\xff\xff\x1\0\0\0\0\0\0\0\0\0\0\0\r\xec\x1f\0\0\0\n\0\0\0\f\0\0\0\x64\0\0\0\x2\0\0\0\x64\0\0\0\x3\0\0\0\x64\0\0\0\x6\0\0\0\x64\0\0\0\a\0\0\0\x64\0\0\0\x5\0\0\0\x64\0\0\0\n\0\0\0\x64\0\0\0\v\0\0\0\x64\0\0\0\b\0\0\0\x64\0\0\0\t\0\0\0\x64\0\0\x2\xdb\0\0\0\r\x1\x1\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\r\0\0\x1\x45\0\0\0\x1\0\0\0\0\0\0\0P\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x1\x46\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\0\0\0\x64)
|
||||
leftSplitterGeometry=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xc0\0\0\0\x80\x1\xff\xff\xff\xff\x1\0\0\0\x2\0)
|
||||
splitterSizes=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\0\xb4\0\0\x1\xa4\x1\xff\xff\xff\xff\x1\0\0\0\x1\0)
|
||||
view-mode=1
|
||||
zoom=0
|
||||
|
||||
[RecentsMRL]
|
||||
list=file:///mnt/internal/shared/jellyfin/anime/Sonny%20Boy/[SubsPlease]%20Sonny%20Boy%20-%2004%20(1080p)%20[47527457].mkv, file:///mnt/internal/shared/jellyfin/anime/Sonny%20Boy/[SubsPlease]%20Sonny%20Boy%20-%2004%20(1080p)%20[47527457].por.ass, https://cdn.jmvstream.com/w/LVW-8155/ngrp:LVW8155_41E1ciuCvO_all/playlist.m3u8, file:///home/wizardlink/Desktop/br.m3u, http://edge1.cl.grupoz.cl/aeradio/live/index.m3u8, https://unlimited1-us.dps.live/adntv/adntv.smil/playlist.m3u8, https://ythls.onrender.com/channel/UCTXNz3gjAypWp3EhlIATEJQ.m3u8, https://unlimited1-cl-isp.dps.live/13t/13t.smil/playlist.m3u8, https://unlimited2-cl-isp.dps.live/13p/13p.smil/playlist.m3u8, https://unlimited1-cl-isp.dps.live/13e/13e.smil/playlist.m3u8, https://unlimited2-cl-isp.dps.live/13cultura/13cultura.smil/playlist.m3u8, file:///home/wizardlink/Desktop/cl.m3u, http://www.portalcultura.com.br/playerhtml/funtelpa/tv_funtelpa/playlist.m3u8, https://5c483b9d1019c.streamlock.net/8066/8066/playlist.m3u8, http://93.152.174.144:4000/play/sic/index.m3u8, https://slbps-ml-sambatech.akamaized.net/samba-live/2472/7424/8a00fe7cc36ac263b2c3e9324497d5ff/video/621b6f2c-2dc6-41f1-9302-f9583c96ee31_index.m3u8, https://video-auth2.iol.pt/live_tvi_ficcao/live_tvi_ficcao/edge_servers/tvificcao-720p/playlist.m3u8, http://cdn.tvmatic.net/comedy.m3u8, http://213.13.26.11:1935/live/sobrenaturaltv/livestream.m3u8, https://59f1cbe63db89.streamlock.net:1443/tvmax/tvmax/playlist.m3u8, file:///home/wizardlink/Desktop/por.m3u, file:///home/wizardlink/Desktop/hzbuve_camera%2014@719324819_DS-7216HGHI-F1(719324819)_20230728121610_20230728121824_11386969.mp4, file:///home/wizardlink/Desktop/20230728_20230728121638_20230728121825_121716.mp4, file:///home/wizardlink/internal/personal/memes/cp.mp4, file:///home/wizardlink/internal/personal/memes/dangerously_cheesy-qDHuFOOKl6c.mp4, file:///home/wizardlink/internal/personal/memes/hat_powered_by_sadness.mp4, file:///home/wizardlink/internal/personal/memes/gib_cosmetic-Ep4ThJ8cQhs.mp4, file:///home/wizardlink/internal/personal/memes/gari_mod-XbH_YSh5ZHw.mp4, file:///home/wizardlink/internal/personal/memes/hoje_tem_festinha-VrgGi7Va33Y.mp4, file:///home/wizardlink/internal/personal/memes/paywall-3Pa26FJJzMc.mp4
|
||||
times=143168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
|
||||
[playlistdialog]
|
||||
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x2\x94\0\0\x2\xc6\0\0\x4\xeb\0\0\x5\x81\0\0\x2\x94\0\0\x2\xc6\0\0\x4\xeb\0\0\x5\x81\0\0\0\0\0\0\0\0\a\x80\0\0\x2\x94\0\0\x2\xc6\0\0\x4\xeb\0\0\x5\x81)
|
5385
.config/vlc/vlcrc
|
@ -1,66 +0,0 @@
|
|||
{
|
||||
// "layer": "top", // Waybar at top layer
|
||||
// "position": "bottom", // Waybar position (top|bottom|left|right)
|
||||
"height": 24, // Waybar height (to be removed for auto height)
|
||||
// "width": 1280, // Waybar width
|
||||
"spacing": 0, // Gaps between modules (4px)
|
||||
// Choose the order of the modules
|
||||
"modules-left": ["sway/workspaces", "sway/mode"],
|
||||
"modules-center": ["sway/window"],
|
||||
"modules-right": ["cpu", "memory", "sway/language", "tray", "clock"],
|
||||
// Modules configuration
|
||||
"sway/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"all-outputs": false,
|
||||
"format": "{icon}",
|
||||
"persistent_workspaces": {
|
||||
"1": ["DP-2"],
|
||||
"2": ["DP-3"],
|
||||
"3": ["DP-2"],
|
||||
"4": ["DP-3"],
|
||||
"5": ["DP-2"],
|
||||
"6": ["DP-3"],
|
||||
"7": ["DP-2"],
|
||||
"8": ["DP-3"]
|
||||
},
|
||||
"format-icons": {
|
||||
"1": "䷀",
|
||||
"2": "䷁",
|
||||
"3": "䷂",
|
||||
"4": "䷃",
|
||||
"5": "䷄",
|
||||
"6": "䷅",
|
||||
"7": "䷆",
|
||||
"8": "䷇",
|
||||
"urgent": ""
|
||||
//"focused": "",
|
||||
//"default": ""
|
||||
}
|
||||
},
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>"
|
||||
},
|
||||
//"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": "{:%Y-%m-%d}"
|
||||
},
|
||||
"cpu": {
|
||||
"format": "{usage}% ",
|
||||
"tooltip": false
|
||||
},
|
||||
"memory": {
|
||||
"format": "{}% "
|
||||
}
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: "Ubuntu Nerd Font";
|
||||
font-size: 13px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: transparent;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#window {
|
||||
font-weight: bold;
|
||||
font-family: "Ubuntu";
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background: transparent;
|
||||
color: white;
|
||||
border-top: 2px solid transparent;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
color: #BD93F9;
|
||||
border-top: 2px solid #BD93F9;
|
||||
}
|
||||
|
||||
#mode {
|
||||
background: #64727D;
|
||||
border-bottom: 3px solid white;
|
||||
}
|
||||
|
||||
#clock, #cpu, #memory, #language, #tray, #mode {
|
||||
padding: 0 3px;
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-weight: bold;
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
local wezterm = require 'wezterm';
|
||||
|
||||
return {
|
||||
color_scheme = "Dracula",
|
||||
font = wezterm.font("FantasqueSansMono NF"),
|
||||
font_size = 11,
|
||||
hide_tab_bar_if_only_one_tab = true,
|
||||
window_background_opacity = 0.88,
|
||||
window_padding = {
|
||||
left = 16,
|
||||
right = 16,
|
||||
top = 16,
|
||||
bottom = 16,
|
||||
},
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
style=/home/wizardlink/.config/wofi/mono.css
|
||||
location=center
|
||||
show=drun
|
||||
width=500
|
||||
height=500
|
||||
always_parse_args=true
|
||||
show_all=true
|
||||
print_command=true
|
||||
layer=overlay
|
||||
insensitive=true
|
||||
prompt=
|
||||
content_halign=center
|
|
@ -1,39 +0,0 @@
|
|||
window {
|
||||
margin: 0px;
|
||||
border: 2px solid #bd93f9;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#input {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: #f8f8f2;
|
||||
background-color: #44475a;
|
||||
}
|
||||
|
||||
#inner-box {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
background-color: #282a36;
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#scroll {
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#text {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
background-color: #44475a;
|
||||
}
|
10
.editorconfig
Normal file
|
@ -0,0 +1,10 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
max_line_length = 120
|
||||
trim_trailing_whitespace = true
|
104
.gitconfig
|
@ -1,104 +0,0 @@
|
|||
###############################
|
||||
# #
|
||||
# My Linux .gitconfig #
|
||||
# #
|
||||
# Last revision: #
|
||||
# 2020-12-04 #
|
||||
# #
|
||||
###############################
|
||||
|
||||
[alias]
|
||||
; List aliases
|
||||
aliases = config --get-regexp alias
|
||||
|
||||
; List all the contributors with commit amount
|
||||
contributors = shortlog --summary --numbered
|
||||
|
||||
; Output verbose info about branches and tags
|
||||
branches = branch -avv
|
||||
|
||||
; List all tags
|
||||
tags = tag -l
|
||||
|
||||
; Pretty logs
|
||||
plog = log --graph --decorate --all
|
||||
|
||||
; Pretty grep
|
||||
gcommit = log --graph --decorate --grep
|
||||
|
||||
[core]
|
||||
# Your path might be different, but unlikely
|
||||
# -- this needs to manually be set because
|
||||
# -- GIT for Windows has it's own vim
|
||||
# -- so it will run that instead.
|
||||
; Set the editor to be used by GIT
|
||||
editor = ~/.local/bin/lvim
|
||||
|
||||
; Custom .gitignore
|
||||
excludesfile = ~/.gitignore
|
||||
|
||||
; Treat trailing whitespaces and spaces before tabs as an error
|
||||
whitespace = space-before-tab,-indent-with-non-tab,trailing-space
|
||||
|
||||
[color]
|
||||
; Use colors in GIT commands
|
||||
ui = auto
|
||||
|
||||
[commit]
|
||||
; https://help.github.com/articles/signing-commits-using-gpg/
|
||||
gpgsign = true
|
||||
|
||||
[tag]
|
||||
gpgsign = true
|
||||
|
||||
[difftool]
|
||||
prompt = true
|
||||
|
||||
[difftool "lvimdiff"]
|
||||
cmd = ~/.local/bin/lvim -d "$LOCAL" "$REMOTE"
|
||||
|
||||
[diff]
|
||||
# Your path might be different, but unlikely
|
||||
# -- this needs to manually be set because
|
||||
# -- GIT for Windows has it's own vim
|
||||
# -- so it will run that instead.
|
||||
; Set the editor to be used by GIT
|
||||
tool = ~/.local/bin/lvim
|
||||
|
||||
[mergetool]
|
||||
; https://www.git-scm.com/docs/git-mergetool#Documentation/git-mergetool.txt---no-prompt
|
||||
prompt = false
|
||||
|
||||
[mergetool "lvimdiff"]
|
||||
cmd = ~/.local/bin/lvim -f -d -c '$wincmd w | wincmd J' "$LOCAL" "$BASE" "$REMOTE" "$MERGED"
|
||||
|
||||
[merge]
|
||||
# Your path might be different, but unlikely
|
||||
# -- this needs to manually be set because
|
||||
# -- GIT for Windows has it's own vim
|
||||
# -- so it will run that instead.
|
||||
tool = lvimdiff
|
||||
|
||||
; https://git-scm.com/docs/git-merge#_how_conflicts_are_presented
|
||||
conflictstyle = diff3
|
||||
|
||||
[push]
|
||||
; https://stackoverflow.com/questions/21839651/git-what-is-the-difference-between-push-default-matching-and-simple
|
||||
default = simple
|
||||
|
||||
; git-push pushes relevant annotated tags when pushing branches out
|
||||
followTags = true
|
||||
|
||||
[user]
|
||||
name = Alexandre Cavalheiro S. Tiago da Silva
|
||||
email = contact@thewizard.link
|
||||
signingkey = A1D3A2B4E14BD7C0445BB749A5767B54367CFBDF
|
||||
|
||||
[pull]
|
||||
ff = only
|
||||
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
[credential]
|
||||
helper = /usr/libexec/git-core/git-credential-libsecret
|
3
.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
|||
[submodule ".themes/dracula"]
|
||||
path = .themes/dracula
|
||||
url = https://github.com/dracula/gtk
|
|
@ -1,8 +0,0 @@
|
|||
#!/bin/sh
|
||||
export AMD_VULKAN_ICD="RADV"
|
||||
export DXVK_ASYNC=1
|
||||
export DXVK_STATE_CACHE=1
|
||||
export MANGOHUD=1
|
||||
export RADV_PERFTEST="gpl"
|
||||
|
||||
gamemoderun "$@"
|
|
@ -1,8 +0,0 @@
|
|||
#!/bin/sh
|
||||
export AMD_VULKAN_ICD="RADV"
|
||||
export DXVK_ASYNC=1
|
||||
export DXVK_STATE_CACHE=1
|
||||
export MANGOHUD=1
|
||||
export RADV_PERFTEST="gpl"
|
||||
|
||||
gamescope -w 1280 -h 720 -W 1920 -H 1080 -f -- gamemoderun "$@"
|
|
@ -1,10 +0,0 @@
|
|||
#!/bin/sh
|
||||
export AMD_VULKAN_ICD="RADV"
|
||||
export DXVK_ASYNC=1
|
||||
export DXVK_STATE_CACHE=1
|
||||
export MANGOHUD=1
|
||||
export RADV_PERFTEST="rt,gpl"
|
||||
export VKD3D_CONFIG="dxr11"
|
||||
export __GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1
|
||||
|
||||
gamemoderun "$@" -dx12
|
14
.neoconf.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"lspconfig": {
|
||||
"lua_ls": {
|
||||
"Lua.completion.callSnippet": "Replace"
|
||||
}
|
||||
}
|
||||
}
|
5
.stylua.toml
Normal file
|
@ -0,0 +1,5 @@
|
|||
quote_style = "AutoPreferDouble"
|
||||
call_parentheses = "None"
|
||||
|
||||
[sort_requires]
|
||||
enabled = true
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 247f95718b769c26c488f801d9d8bb001e675afe
|
121
LICENSE
Normal file
|
@ -0,0 +1,121 @@
|
|||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||
HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer
|
||||
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||
authorship and/or a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for
|
||||
the purpose of contributing to a commons of creative, cultural and
|
||||
scientific works ("Commons") that the public can reliably and without fear
|
||||
of later claims of infringement build upon, modify, incorporate in other
|
||||
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||
and for any purposes, including without limitation commercial purposes.
|
||||
These owners may contribute to the Commons to promote the ideal of a free
|
||||
culture and the further production of creative, cultural and scientific
|
||||
works, or to gain reputation or greater distribution for their Work in
|
||||
part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any
|
||||
expectation of additional consideration or compensation, the person
|
||||
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||
protected by copyright and related or neighboring rights ("Copyright and
|
||||
Related Rights"). Copyright and Related Rights include, but are not
|
||||
limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display,
|
||||
communicate, and translate a Work;
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
iii. publicity and privacy rights pertaining to a person's image or
|
||||
likeness depicted in a Work;
|
||||
iv. rights protecting against unfair competition in regards to a Work,
|
||||
subject to the limitations in paragraph 4(a), below;
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal
|
||||
protection of databases, and under any national implementation
|
||||
thereof, including any amended or successor version of such
|
||||
directive); and
|
||||
vii. other similar, equivalent or corresponding rights throughout the
|
||||
world based on applicable law or treaty, and any national
|
||||
implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||
of action, whether now known or unknown (including existing as well as
|
||||
future claims and causes of action), in the Work (i) in all territories
|
||||
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||
treaty (including future time extensions), (iii) in any current or future
|
||||
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional
|
||||
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||
member of the public at large and to the detriment of Affirmer's heirs and
|
||||
successors, fully intending that such Waiver shall not be subject to
|
||||
revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||
be judged legally invalid or ineffective under applicable law, then the
|
||||
Waiver shall be preserved to the maximum extent permitted taking into
|
||||
account Affirmer's express Statement of Purpose. In addition, to the
|
||||
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||
maximum duration provided by applicable law or treaty (including future
|
||||
time extensions), (iii) in any current or future medium and for any number
|
||||
of copies, and (iv) for any purpose whatsoever, including without
|
||||
limitation commercial, advertising or promotional purposes (the
|
||||
"License"). The License shall be deemed effective as of the date CC0 was
|
||||
applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||
of the License, and in such case Affirmer hereby affirms that he or she
|
||||
will not (i) exercise any of his or her remaining Copyright and Related
|
||||
Rights in the Work or (ii) assert any associated claims and causes of
|
||||
action with respect to the Work, in either case contrary to Affirmer's
|
||||
express Statement of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||
surrendered, licensed or otherwise affected by this document.
|
||||
b. Affirmer offers the Work as-is and makes no representations or
|
||||
warranties of any kind concerning the Work, express, implied,
|
||||
statutory or otherwise, including without limitation warranties of
|
||||
title, merchantability, fitness for a particular purpose, non
|
||||
infringement, or the absence of latent or other defects, accuracy, or
|
||||
the present or absence of errors, whether or not discoverable, all to
|
||||
the greatest extent permissible under applicable law.
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without
|
||||
limitation any person's Copyright and Related Rights in the Work.
|
||||
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||
consents, permissions or other rights required for any use of the
|
||||
Work.
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||
party to this document and has no duty or obligation with respect to
|
||||
this CC0 or use of the Work.
|
67
README.md
Normal file
|
@ -0,0 +1,67 @@
|
|||
# linuxware
|
||||
|
||||
This repository contains the configuration of my main Linux based system(s), currently this repository consists of a
|
||||
[NixOS] system configuration alongside [dotfiles] generated by [Home Manager] and [dotfiles] maintained by me.
|
||||
|
||||
## Navigation guide
|
||||
|
||||
In this section I will detail how you can navigate and make the most use out of my configuration.
|
||||
|
||||
### File structure
|
||||
|
||||
- [`flake.nix` & `flake.lock`](#flake)
|
||||
- _This is the "entry-point" of the [NixOS] configuration._
|
||||
- [`hosts/`](/hosts/)
|
||||
- _Inside you can find the per-system customizations I've made._
|
||||
- [`modules/`](/modules/)
|
||||
- _These contain the modules I export in the [flake](#flake)._
|
||||
- [`packages/`](/packages/)
|
||||
- _Encompasses the packages I maintain outside or in tandem with [nixpkgs]._
|
||||
- [`shared/`](/shared/)
|
||||
- _The [NixOS] and [Home Manager] configuration that's shared across hosts._
|
||||
- [`assets/`](/assets/)
|
||||
- _All media used in this configuration or shown inside READMEs._
|
||||
|
||||
> _Be sure to click the hyperlinks for the relevant documentation._
|
||||
|
||||
#### Flake
|
||||
|
||||
A flake basically contains what you want to consume in your environment and what you want to export to be consumed, on
|
||||
top of having a lockfile to pin the versions of what you are consuming.
|
||||
|
||||
Personally, the best way to learn how to use it as a beginner is the [Unofficial NixOS & Flakes
|
||||
Book](https://nixos-and-flakes.thiscute.world/). I will not explain how to configure or use my flake as that would be
|
||||
lenghty.
|
||||
|
||||
I export four modules that you can use in your configuration:
|
||||
- [Hyprland NixOS configuration](/modules/hyprland/README.md)
|
||||
- _Accessed through `<linuxware>.nixosModules.hyprland`._
|
||||
- [Hyprland home-manager configuration](/modules/hyprland/README.md#configuration)
|
||||
- _Accessed through `<linuxware>.homeManagerModules.hyprland`._
|
||||
- [Emacs home-manager configuration & dotfiles](/modules/emacs/README.md)
|
||||
- _Accessed through `<linuxware>.homeManagerModules.emacs`_
|
||||
- [Neovim home-manager configuration & dotfiles](/modules/neovim/README.md)
|
||||
- _Accessed through `<linuxware>.homeManagerModules.neovim`._
|
||||
|
||||
> _Be sure to click the hyperlinks for the relevant documentation._
|
||||
|
||||
To facilitate on-boarding, once you've set-up the experimental features needed for flakes I have provided a template
|
||||
with this repository for you to use; it comes with a [NixOS] system configuration, [Home Manager] configuration
|
||||
alongside the modules that I provide.
|
||||
|
||||
All you have to do is enter the directory you want your configuration to reside and execute
|
||||
`nix flake init -t github:wizardlink/linuxware`. Be sure to read the `README.md` file!
|
||||
|
||||
## Desktop screenshot
|
||||
|
||||

|
||||
|
||||
> _All screenshots of the system and it's components are available [here](/assets/README.md)._
|
||||
|
||||
|
||||
<!-- REFERENCES -->
|
||||
|
||||
[dotfiles]: https://wiki.archlinux.org/title/Dotfiles
|
||||
[home manager]: https://github.com/nix-community/home-manager
|
||||
[nixos]: https://nixos.org/
|
||||
[nixpkgs]: https://github.com/NixOS/nixpkgs/
|
42
assets/README.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
## Desktop
|
||||
|
||||

|
||||
|
||||
### Window gaps
|
||||
|
||||

|
||||
|
||||
### Window borders
|
||||
|
||||

|
||||

|
||||
|
||||
## Programs
|
||||
|
||||
### Neovim
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
### Alacritty & Fish
|
||||
|
||||

|
||||
|
||||
### Rofi
|
||||
|
||||

|
||||
|
||||
### Waybar
|
||||
|
||||

|
||||
|
||||
### Emacs
|
||||
|
||||

|
||||
|
||||
## System
|
||||
|
||||
### SDDM background
|
||||
|
||||

|
BIN
assets/screenshots/alacritty-and-fish.png
Normal file
After Width: | Height: | Size: 366 KiB |
BIN
assets/screenshots/doomemacs.png
Normal file
After Width: | Height: | Size: 124 KiB |
BIN
assets/screenshots/fastfetch-wizdesk.png
Normal file
After Width: | Height: | Size: 399 KiB |
BIN
assets/screenshots/full-system.png
Normal file
After Width: | Height: | Size: 4.1 MiB |
BIN
assets/screenshots/hyprland-active.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
assets/screenshots/hyprland-gaps.png
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
assets/screenshots/hyprland-inactive.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
assets/screenshots/neovim-dashboard.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
assets/screenshots/neovim-nix.png
Normal file
After Width: | Height: | Size: 1.6 MiB |
BIN
assets/screenshots/neovim-rust.png
Normal file
After Width: | Height: | Size: 1.7 MiB |
BIN
assets/screenshots/rofi.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
assets/screenshots/waybar.png
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
assets/sddm/Background.jpg
Normal file
After Width: | Height: | Size: 4.8 MiB |
633
flake.lock
Normal file
|
@ -0,0 +1,633 @@
|
|||
{
|
||||
"nodes": {
|
||||
"aquamarine": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1742213273,
|
||||
"narHash": "sha256-0l0vDb4anfsBu1rOs94bC73Hub+xEivgBAo6QXl2MmU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "484b732195cc53f4536ce4bd59a5c6402b1e7ccf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"clipboard-sync": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731355357,
|
||||
"narHash": "sha256-kTXsO+hskCfX36+Ez1fHu9SO54uUY2lofkrbMKE3Vrk=",
|
||||
"owner": "dnut",
|
||||
"repo": "clipboard-sync",
|
||||
"rev": "943e49e0a9a16b54bbab3704e99b6cf6ad4ea19f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "dnut",
|
||||
"repo": "clipboard-sync",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"pre-commit-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": 1742569620,
|
||||
"narHash": "sha256-igC2cu+cPRB3E4QwKR+vGagyAtoyB+DrmWwDKm8jkaw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "8a68f18e96bcab13e4f97bece61e6602298a3141",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hydractify-bot": {
|
||||
"inputs": {
|
||||
"naersk": "naersk",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1736510643,
|
||||
"narHash": "sha256-z6qvPOIr4Rl4wA6U5g8Aj3npdeTNiR3AXFIOy7e2IJs=",
|
||||
"owner": "hydractify",
|
||||
"repo": "hydractify-bot",
|
||||
"rev": "69759c7adcb2102dbb8d3e8a657dc5a47686dc46",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hydractify",
|
||||
"repo": "hydractify-bot",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprcursor": {
|
||||
"inputs": {
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1742215578,
|
||||
"narHash": "sha256-zfs71PXVVPEe56WEyNi2TJQPs0wabU4WAlq0XV7GcdE=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"rev": "2fd36421c21aa87e2fe3bee11067540ae612f719",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprgraphics": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1739049071,
|
||||
"narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland": {
|
||||
"inputs": {
|
||||
"aquamarine": "aquamarine",
|
||||
"hyprcursor": "hyprcursor",
|
||||
"hyprgraphics": "hyprgraphics",
|
||||
"hyprland-protocols": "hyprland-protocols",
|
||||
"hyprland-qtutils": "hyprland-qtutils",
|
||||
"hyprlang": "hyprlang",
|
||||
"hyprutils": "hyprutils",
|
||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"pre-commit-hooks": "pre-commit-hooks",
|
||||
"systems": "systems_2",
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1742563987,
|
||||
"narHash": "sha256-P7rQo7SClIFU6OkUlnN01OqVWsjTMgmG/8gqhpXHfRI=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "c7f0519fafbf334a8f5088a8a0fc385732a24036",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-protocols": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738422629,
|
||||
"narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-qt-support": {
|
||||
"inputs": {
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprland-qtutils",
|
||||
"hyprlang"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"hyprland-qtutils",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"hyprland-qtutils",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737634706,
|
||||
"narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qt-support",
|
||||
"rev": "8810df502cdee755993cb803eba7b23f189db795",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qt-support",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-qtutils": {
|
||||
"inputs": {
|
||||
"hyprland-qt-support": "hyprland-qt-support",
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprland-qtutils",
|
||||
"hyprlang",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1739048983,
|
||||
"narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qtutils",
|
||||
"rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qtutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprlang": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741191527,
|
||||
"narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "72df3861f1197e41b078faa3e38eedd60e00018d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprutils": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741534688,
|
||||
"narHash": "sha256-EV3945SnjOCuRVbGRghsWx/9D89FyshnSO1Q6/TuQ14=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "dd1f720cbc2dbb3c71167c9598045dd3261d27b3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprwayland-scanner": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1739870480,
|
||||
"narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1721727458,
|
||||
"narHash": "sha256-r/xppY958gmZ4oTfLiHN0ZGuQ+RSTijDblVgVLFi1mw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "3fb418eaf352498f6b6c30592e3beb63df42ef11",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "master",
|
||||
"repo": "naersk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 0,
|
||||
"narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=",
|
||||
"path": "/nix/store/lsy6c2f9alj2gkjj36h754kk63x6701l-source",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1729850857,
|
||||
"narHash": "sha256-WvLXzNNnnw+qpFOmgaM3JUlNEH+T4s22b5i2oyyCpXE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "41dea55321e5a999b17033296ac05fe8a8b5a257",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1742069588,
|
||||
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1742422364,
|
||||
"narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1742058297,
|
||||
"narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"clipboard-sync": "clipboard-sync",
|
||||
"home-manager": "home-manager",
|
||||
"hydractify-bot": "hydractify-bot",
|
||||
"hyprland": "hyprland",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"spicetify-nix": "spicetify-nix"
|
||||
}
|
||||
},
|
||||
"spicetify-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1742512598,
|
||||
"narHash": "sha256-nFPhSSxrPrpkmFR6vQq8OpUS+lGIAxDCUKg+5/qcnR8=",
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-nix",
|
||||
"rev": "610654a0afe56766e639077d9d267148667a25e8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Gerg-L",
|
||||
"repo": "spicetify-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"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726560853,
|
||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xdph": {
|
||||
"inputs": {
|
||||
"hyprland-protocols": [
|
||||
"hyprland",
|
||||
"hyprland-protocols"
|
||||
],
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741934139,
|
||||
"narHash": "sha256-ZhTcTH9FoeAtbPfWGrhkH7RjLJZ7GeF18nygLAMR+WE=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "150b0b6f52bb422a1b232a53698606fe0320dde0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
95
flake.nix
Normal file
|
@ -0,0 +1,95 @@
|
|||
{
|
||||
description = "NixOS System Flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
spicetify-nix = {
|
||||
url = "github:Gerg-L/spicetify-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
clipboard-sync = {
|
||||
url = "github:dnut/clipboard-sync";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
|
||||
hydractify-bot.url = "github:hydractify/hydractify-bot";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
home-manager,
|
||||
nixpkgs,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in
|
||||
{
|
||||
nixosConfigurations = {
|
||||
wizdesk =
|
||||
let
|
||||
specialArgs = inputs;
|
||||
modules = [
|
||||
./hosts/wizdesk/nixos.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.extraSpecialArgs = inputs;
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.wizardlink = import ./hosts/wizdesk/home-manager.nix;
|
||||
}
|
||||
];
|
||||
in
|
||||
nixpkgs.lib.nixosSystem { inherit system specialArgs modules; };
|
||||
|
||||
wizlap =
|
||||
let
|
||||
specialArgs = inputs;
|
||||
modules = [
|
||||
./hosts/wizlap/nixos.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.extraSpecialArgs = inputs;
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.wizardlink = import ./hosts/wizlap/home-manager.nix;
|
||||
}
|
||||
];
|
||||
in
|
||||
nixpkgs.lib.nixosSystem { inherit system specialArgs modules; };
|
||||
};
|
||||
|
||||
formatter."${system}" = pkgs.nixfmt-rfc-style;
|
||||
|
||||
packages."${system}" = {
|
||||
miraclecast = pkgs.callPackage ./packages/miraclecast.nix { };
|
||||
wb32dfu-udev-rules = pkgs.callPackage ./packages/wb32dfu-udev-rules { };
|
||||
};
|
||||
|
||||
nixosModules = {
|
||||
hyprland = import ./modules/hyprland/nixos.nix;
|
||||
};
|
||||
|
||||
homeManagerModules = {
|
||||
emacs = import ./modules/emacs;
|
||||
hyprland = import ./modules/hyprland/home-manager.nix;
|
||||
neovim = import ./modules/neovim;
|
||||
};
|
||||
|
||||
templates.default = {
|
||||
path = ./modules/template;
|
||||
description = ''
|
||||
A NixOS & Home-Manager template to get started with the https://github.com/wizardlink/linuxware configuration.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
15
hosts/README.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
## wizdesk
|
||||
|
||||
My main machine, this is where I host everything that's accessible through the `thewizard.link` domain.
|
||||
|
||||
### Specs
|
||||
|
||||

|
||||
|
||||
## wizlap
|
||||
|
||||
My ASUS Vivobook 15 (M1502IA), I mostly use it when I have to travel so there isn't much to say about it.
|
||||
|
||||
### Specs
|
||||
|
||||
They can be found in ASUS' store/support page, I haven't modified it yet.
|
71
hosts/wizdesk/hardware-configuration.nix
Normal file
|
@ -0,0 +1,71 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/1f7083ba-4271-486e-a85c-8386f6287b0a";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=root" ];
|
||||
};
|
||||
|
||||
fileSystems."/nix" =
|
||||
{ device = "/dev/disk/by-uuid/1f7083ba-4271-486e-a85c-8386f6287b0a";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=nix" ];
|
||||
};
|
||||
|
||||
fileSystems."/home" =
|
||||
{ device = "/dev/disk/by-uuid/1f7083ba-4271-486e-a85c-8386f6287b0a";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=home" ];
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/D4D7-CD5F";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
|
||||
fileSystems."/mnt/internal" =
|
||||
{ device = "/dev/disk/by-uuid/b8541c0d-9146-4388-b217-431f196957cc";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/mnt/ssd" =
|
||||
{ device = "/dev/disk/by-uuid/f27f2224-d351-46fd-89f5-991de36166ad";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/mnt/extra" =
|
||||
{ device = "/dev/disk/by-uuid/0d4ef3e0-7e7a-4a70-bbbc-040fe7aa7c2a";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/mnt/media" =
|
||||
{ device = "/dev/disk/by-uuid/52c17b8b-46c1-4870-b86c-c3b9f4bd4434";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
162
hosts/wizdesk/home-manager.nix
Normal file
|
@ -0,0 +1,162 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
#
|
||||
## HOME CONFIGURATION #
|
||||
#
|
||||
|
||||
# Import configurations for better modularity.
|
||||
imports = [
|
||||
../../modules/emacs
|
||||
../../modules/hyprland/home-manager.nix
|
||||
../../modules/neovim
|
||||
../../shared/home-manager
|
||||
./services/home-manager
|
||||
];
|
||||
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
# manage.
|
||||
home.username = "wizardlink";
|
||||
home.homeDirectory = "/home/wizardlink";
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||
# introduces backwards incompatible changes.
|
||||
#
|
||||
# You should not change this value, even if you update Home Manager. If you do
|
||||
# want to update the value, then make sure to first check the Home Manager
|
||||
# release notes.
|
||||
home.stateVersion = "23.05"; # Please read the comment before changing.
|
||||
|
||||
home.file = {
|
||||
# Create wallpaper script to be read by the start_services.sh script.
|
||||
".local/share/scripts/wallpaper.sh" = {
|
||||
executable = true;
|
||||
text = # sh
|
||||
''
|
||||
#
|
||||
## Start wallpaper daemon and set one.
|
||||
#
|
||||
OUTPUT_1="DP-2"
|
||||
IMAGE_1="/mnt/internal/personal/wallpapers/edited/1440-bicycle.jpg"
|
||||
|
||||
OUTPUT_2="DP-3"
|
||||
IMAGE_2="/mnt/internal/personal/wallpapers/edited/1080-bycicle.jpg"
|
||||
|
||||
function load_wallpapers() {
|
||||
swww img -t any --transition-bezier 0.0,0.0,1.0,1.0 --transition-duration .8 --transition-step 255 --transition-fps 60 -o $OUTPUT_1 $IMAGE_1;
|
||||
swww img -t any --transition-bezier 0.0,0.0,1.0,1.0 --transition-duration .8 --transition-step 255 --transition-fps 60 -o $OUTPUT_2 $IMAGE_2
|
||||
}
|
||||
|
||||
if ! swww query; then
|
||||
swww-daemon &
|
||||
fi
|
||||
|
||||
load_wallpapers &
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
#
|
||||
# PACKAGES #
|
||||
#
|
||||
|
||||
programs.direnv = {
|
||||
config = {
|
||||
whitelist = {
|
||||
prefix = [
|
||||
"/mnt/internal/hydractify/GitHub"
|
||||
"/mnt/internal/personal/projects"
|
||||
"/mnt/internal/personal/study"
|
||||
"/mnt/internal/repos"
|
||||
"/mnt/internal/shared/projects"
|
||||
"/mnt/internal/shared/work"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# Games
|
||||
pcsx2
|
||||
|
||||
# Creative work
|
||||
easyeffects
|
||||
|
||||
# Create an FHS environment using the command `fhs`, enabling the execution of non-NixOS packages in NixOS!
|
||||
(
|
||||
let
|
||||
base = appimageTools.defaultFhsEnvArgs;
|
||||
in
|
||||
buildFHSEnv (
|
||||
base
|
||||
// {
|
||||
name = "fhs";
|
||||
targetPkgs =
|
||||
pkgs:
|
||||
(
|
||||
# pkgs.buildFHSUserEnv provides only a minimal FHS environment,
|
||||
# lacking many basic packages needed by most software.
|
||||
# Therefore, we need to add them manually.
|
||||
#
|
||||
# pkgs.appimageTools provides basic packages required by most software.
|
||||
(base.targetPkgs pkgs)
|
||||
++ (with pkgs; [
|
||||
nodejs
|
||||
dotnet-sdk_8
|
||||
])
|
||||
);
|
||||
profile = "export FHS=1";
|
||||
runScript = "bash";
|
||||
extraOutputsToInstall = [ "dev" ];
|
||||
}
|
||||
)
|
||||
)
|
||||
];
|
||||
|
||||
#
|
||||
# MODULES #
|
||||
#
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
|
||||
# Enable ollama support
|
||||
ollama.enable = true;
|
||||
};
|
||||
|
||||
modules.hyprland = {
|
||||
# Enable scripts
|
||||
scripts = {
|
||||
startup.enable = true;
|
||||
screenshot.enable = true;
|
||||
};
|
||||
|
||||
# Enable hypridle and hyprlock
|
||||
hypridle.enable = true;
|
||||
hyprlock = {
|
||||
enable = true;
|
||||
background = "/mnt/internal/personal/wallpapers/wallhaven-2em8y6.jpg";
|
||||
};
|
||||
|
||||
# Add monitor configuration to hyprland
|
||||
extraConfig = # hyprlang
|
||||
''
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor = DP-3, 1920x1080@74.973, 2560x0, 1
|
||||
monitor = DP-2, 2560x1440@165.00301, 0x0, 1
|
||||
|
||||
# Bind workspaces to specific monitors
|
||||
workspace = 1, monitor:DP-2
|
||||
workspace = 2, monitor:DP-3
|
||||
workspace = 3, monitor:DP-2
|
||||
workspace = 4, monitor:DP-3
|
||||
workspace = 5, monitor:DP-2
|
||||
workspace = 6, monitor:DP-3
|
||||
workspace = 7, monitor:DP-2
|
||||
workspace = 8, monitor:DP-3
|
||||
workspace = 9, monitor:DP-2
|
||||
workspace = 0, monitor:DP-3
|
||||
'';
|
||||
};
|
||||
}
|
182
hosts/wizdesk/nixos.nix
Normal file
|
@ -0,0 +1,182 @@
|
|||
{ pkgs, config, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../modules/hyprland/nixos.nix
|
||||
../../shared/nixos
|
||||
./hardware-configuration.nix
|
||||
./services/nixos
|
||||
];
|
||||
|
||||
#
|
||||
# NIXOS #
|
||||
#
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.05";
|
||||
|
||||
#
|
||||
# SYSTEM #
|
||||
#
|
||||
|
||||
# Configure options for mounted volumes.
|
||||
fileSystems = {
|
||||
"/".options = [ "compress=zstd" ];
|
||||
"/home".options = [ "compress=zstd" ];
|
||||
"/nix".options = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
"/mnt/extra".options = [ "nofail" ];
|
||||
"/mnt/internal".options = [ "nofail" ];
|
||||
"/mnt/media".options = [ "nofail" ];
|
||||
"/mnt/ssd".options = [ "nofail" ];
|
||||
};
|
||||
|
||||
# Enable btrf's auto scrubbing of volumes.
|
||||
services.btrfs.autoScrub = {
|
||||
enable = true;
|
||||
interval = "weekly";
|
||||
fileSystems = [ "/" ];
|
||||
};
|
||||
|
||||
networking.hostName = "wizdesk"; # Define your hostname.
|
||||
|
||||
# Open ports in the firewall.
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
443 # SSL
|
||||
6567 # Mindustry
|
||||
80 # HTTP
|
||||
3979 # OpenTTD
|
||||
7777 # Terraria
|
||||
];
|
||||
|
||||
allowedUDPPorts = [
|
||||
2626 # Dolphin emulator
|
||||
27015 # Source games
|
||||
28910 # Heretic II
|
||||
6567 # Mindustry
|
||||
8211 # Palworld
|
||||
3979 # OpenTTD
|
||||
];
|
||||
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
} # KDEConnect
|
||||
];
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
} # KDEConnect
|
||||
];
|
||||
};
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.wizardlink = {
|
||||
createHome = true;
|
||||
description = "Alexandre Cavalheiro";
|
||||
extraGroups = [
|
||||
"docker"
|
||||
"gamemode"
|
||||
"libvirtd"
|
||||
"networkmanager"
|
||||
"openrazer"
|
||||
"postgresql"
|
||||
"wheel"
|
||||
];
|
||||
|
||||
initialPassword = "wizardlink";
|
||||
isNormalUser = true;
|
||||
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDdGOyRbu6IOw9yqotxE6m7wCif7oP/2D0tlREa5Q6uo Alexandre Cavalheiro S. Tiago da Silva <contact@thewizard.link>"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIISfCUsZrnCMZapdrvkUCrdRiX+1xuZBdGrynNRzDI2v" # SpaceEEC
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPInBFp7zBLhFluoww65CZzcnMdhndTawBv8QYJ5s/Xt david.alejandro.rubio@gmail.com" # Kodehawa
|
||||
];
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Sao_Paulo";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
supportedLocales = [
|
||||
"C.UTF-8/UTF-8"
|
||||
"en_GB.UTF-8/UTF-8"
|
||||
"en_US.UTF-8/UTF-8"
|
||||
"ja_JP.UTF-8/UTF-8"
|
||||
"pt_BR.UTF-8/UTF-8"
|
||||
];
|
||||
|
||||
extraLocaleSettings = {
|
||||
LANGUAGE = "en_US.UTF-8";
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_ALL = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "pt_BR.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "pt_BR.UTF-8";
|
||||
LC_PAPER = "pt_BR.UTF-8";
|
||||
LC_TELEPHONE = "pt_BR.UTF-8";
|
||||
LC_TIME = "en_GB.UTF-8";
|
||||
};
|
||||
};
|
||||
|
||||
#
|
||||
# HARDWARE #
|
||||
#
|
||||
|
||||
# Enable Zenergy
|
||||
boot.initrd.kernelModules = [
|
||||
"zenergy"
|
||||
];
|
||||
boot.extraModulePackages = [
|
||||
config.boot.kernelPackages.zenergy
|
||||
];
|
||||
|
||||
# Enable openrazer for managing Razer products' configuration
|
||||
hardware.openrazer = {
|
||||
enable = true;
|
||||
users = [ "wizardlink" ];
|
||||
};
|
||||
|
||||
services.udev = {
|
||||
# Vial udev rule for Monsgeek M1
|
||||
extraRules = ''
|
||||
# Monsgeek M1
|
||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="fffe", ATTRS{idProduct}=="0005", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
|
||||
'';
|
||||
|
||||
# WB32 DFU rules - needed for flashing
|
||||
packages = [ (pkgs.callPackage ../../packages/wb32dfu-udev-rules { }) ];
|
||||
};
|
||||
|
||||
# enable a better driver for wireless xbox controllers.
|
||||
hardware.xpadneo.enable = true;
|
||||
|
||||
#
|
||||
# PACKAGES #
|
||||
#
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
## Tools
|
||||
# Utilities
|
||||
btrfs-progs
|
||||
|
||||
## Hardware specific
|
||||
openrazer-daemon # Razor products back-end
|
||||
polychromatic # and it's front-end
|
||||
vial
|
||||
];
|
||||
}
|
9
hosts/wizdesk/services/home-manager/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./hydractify-bot.nix
|
||||
./openttd.nix
|
||||
./terraria.nix
|
||||
];
|
||||
}
|
17
hosts/wizdesk/services/home-manager/hydractify-bot.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ hydractify-bot, pkgs, ... }:
|
||||
|
||||
{
|
||||
systemd.user.services.hydractify-bot = {
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
|
||||
Unit.Description = "Hydractify bot";
|
||||
Unit.After = "postgresql.service";
|
||||
|
||||
Service = {
|
||||
ExecStart = "${hydractify-bot.defaultPackage.${pkgs.system}}/bin/hydractify";
|
||||
Restart = "on-failure";
|
||||
Type = "simple";
|
||||
WorkingDirectory = "/mnt/internal/hydractify/GitHub/hydractify";
|
||||
};
|
||||
};
|
||||
}
|
53
hosts/wizdesk/services/home-manager/openttd.nix
Normal file
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
openttd
|
||||
];
|
||||
|
||||
systemd.user.services.openttd = {
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
|
||||
Unit.Description = "OpenTTD Tmux server";
|
||||
|
||||
Service = {
|
||||
ExecStart = "${pkgs.tmux}/bin/tmux -L openttd new -s OpenTTD -d '${pkgs.openttd}/bin/openttd -g /home/wizardlink/.local/share/openttd/save/hyfy.sav -D'";
|
||||
ExecStop = "${pkgs.tmux}/bin/tmux kill-session -t OpenTTD";
|
||||
Restart = "on-failure";
|
||||
Type = "forking";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.openttd-rcon = {
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
|
||||
Unit = {
|
||||
Description = "OpenTTD RCON Password set";
|
||||
After = [ "openttd.service" ];
|
||||
};
|
||||
|
||||
Service = {
|
||||
ExecStart = "${pkgs.tmux}/bin/tmux -L openttd send-keys -t OpenTTD 'rcon_pw aaaa' Enter";
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services.openttd-save = {
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
|
||||
Unit = {
|
||||
Description = "OpenTTD RCON Password set";
|
||||
After = [ "openttd.service" ];
|
||||
};
|
||||
|
||||
Service = {
|
||||
ExecStart = "${pkgs.tmux}/bin/tmux -L openttd send-keys -t OpenTTD 'save hyfy' Enter";
|
||||
Type = "simple";
|
||||
Restart = "always";
|
||||
RestartSec = "1800s";
|
||||
};
|
||||
};
|
||||
}
|
17
hosts/wizdesk/services/home-manager/terraria.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
systemd.user.services.terraria = {
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
|
||||
Unit.Description = "Terraria TMUX Server";
|
||||
|
||||
Service = {
|
||||
ExecStart = "${pkgs.tmux}/bin/tmux -L terraria new -s Terraria -d /etc/profiles/per-user/wizardlink/bin/fhs -c 'dotnet ./tModLoader.dll -server -config serverconfig.txt'";
|
||||
ExecStop = "${pkgs.tmux}/bin/tmux kill-session -t Terraria";
|
||||
Restart = "on-failure";
|
||||
Type = "forking";
|
||||
WorkingDirectory = "/mnt/ssd/SteamLibrary/steamapps/common/tModLoader";
|
||||
};
|
||||
};
|
||||
}
|
20
hosts/wizdesk/services/nixos/archi.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
services.archisteamfarm = {
|
||||
enable = true;
|
||||
web-ui.enable = true;
|
||||
|
||||
bots.wizardlink = {
|
||||
enabled = true;
|
||||
username = "master1891891";
|
||||
|
||||
settings = {
|
||||
CustomGamePlayedWhileFarming = "In the fields";
|
||||
};
|
||||
};
|
||||
|
||||
bots.zak = {
|
||||
enabled = true;
|
||||
username = "matheuszak";
|
||||
};
|
||||
};
|
||||
}
|
50
hosts/wizdesk/services/nixos/caddy.nix
Normal file
|
@ -0,0 +1,50 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
email = "contact@thewizard.link";
|
||||
|
||||
virtualHosts."thewizard.link".extraConfig = ''
|
||||
redir https://github.com/wizardlink/
|
||||
header Strict-Transport-Security "max-age=63072000; includeSubDomains"
|
||||
'';
|
||||
|
||||
virtualHosts."jellyfin.thewizard.link".extraConfig = ''
|
||||
encode gzip
|
||||
reverse_proxy 127.0.0.1:8096 {
|
||||
flush_interval -1
|
||||
}
|
||||
'';
|
||||
|
||||
virtualHosts."jellyseerr.thewizard.link".extraConfig = ''
|
||||
reverse_proxy http://127.0.0.1:5055
|
||||
'';
|
||||
|
||||
virtualHosts."foundry.thewizard.link".extraConfig = ''
|
||||
reverse_proxy 127.0.0.1:30000 {
|
||||
flush_interval -1
|
||||
}
|
||||
'';
|
||||
|
||||
virtualHosts."git.thewizard.link".extraConfig = ''
|
||||
reverse_proxy 127.0.0.1:3788
|
||||
'';
|
||||
|
||||
virtualHosts."files.thewizard.link".extraConfig = ''
|
||||
root * /srv/files
|
||||
file_server
|
||||
'';
|
||||
|
||||
virtualHosts."torrent.thewizard.link".extraConfig = ''
|
||||
reverse_proxy 127.0.0.1:8144
|
||||
'';
|
||||
|
||||
virtualHosts."shoko.thewizard.link".extraConfig = ''
|
||||
reverse_proxy 127.0.0.1:8111
|
||||
'';
|
||||
|
||||
virtualHosts."nixbin.thewizard.link".extraConfig = ''
|
||||
reverse_proxy 127.0.0.1:7373
|
||||
'';
|
||||
};
|
||||
}
|
12
hosts/wizdesk/services/nixos/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./archi.nix
|
||||
./caddy.nix
|
||||
./forgejo.nix
|
||||
./jellyfin.nix
|
||||
./nix-serve.nix
|
||||
./postgresql.nix
|
||||
];
|
||||
}
|
26
hosts/wizdesk/services/nixos/forgejo.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
services.forgejo = {
|
||||
enable = true;
|
||||
|
||||
lfs.enable = true;
|
||||
|
||||
settings = {
|
||||
server = {
|
||||
HTTP_PORT = 3788;
|
||||
LANDING_PAGE = "explore";
|
||||
ROOT_URL = "https://git.thewizard.link";
|
||||
};
|
||||
|
||||
ui = {
|
||||
# HACK: Unfortunately we need to manually put files in /var/lib/forgejo/custom/public/assets/css
|
||||
# so this will break in a new system.
|
||||
DEFAULT_THEME = "catppuccin-frappe-lavender";
|
||||
THEMES = "forgejo-auto,forgejo-light,forgejo-dark,gitea-auto,gitea-light,gitea-dark,forgejo-auto-deuteranopia-protanopia,forgejo-light-deuteranopia-protanopia,forgejo-dark-deuteranopia-protanopia,forgejo-auto-tritanopia,forgejo-light-tritanopia,forgejo-dark-tritanopia,catppuccin-latte-rosewater,catppuccin-latte-flamingo,catppuccin-latte-pink,catppuccin-latte-mauve,catppuccin-latte-red,catppuccin-latte-maroon,catppuccin-latte-peach,catppuccin-latte-yellow,catppuccin-latte-green,catppuccin-latte-teal,catppuccin-latte-sky,catppuccin-latte-sapphire,catppuccin-latte-blue,catppuccin-latte-lavender,catppuccin-frappe-rosewater,catppuccin-frappe-flamingo,catppuccin-frappe-pink,catppuccin-frappe-mauve,catppuccin-frappe-red,catppuccin-frappe-maroon,catppuccin-frappe-peach,catppuccin-frappe-yellow,catppuccin-frappe-green,catppuccin-frappe-teal,catppuccin-frappe-sky,catppuccin-frappe-sapphire,catppuccin-frappe-blue,catppuccin-frappe-lavender,catppuccin-macchiato-rosewater,catppuccin-macchiato-flamingo,catppuccin-macchiato-pink,catppuccin-macchiato-mauve,catppuccin-macchiato-red,catppuccin-macchiato-maroon,catppuccin-macchiato-peach,catppuccin-macchiato-yellow,catppuccin-macchiato-green,catppuccin-macchiato-teal,catppuccin-macchiato-sky,catppuccin-macchiato-sapphire,catppuccin-macchiato-blue,catppuccin-macchiato-lavender,catppuccin-mocha-rosewater,catppuccin-mocha-flamingo,catppuccin-mocha-pink,catppuccin-mocha-mauve,catppuccin-mocha-red,catppuccin-mocha-maroon,catppuccin-mocha-peach,catppuccin-mocha-yellow,catppuccin-mocha-green,catppuccin-mocha-teal,catppuccin-mocha-sky,catppuccin-mocha-sapphire,catppuccin-mocha-blue,catppuccin-mocha-lavender";
|
||||
};
|
||||
|
||||
service = {
|
||||
DISABLE_REGISTRATION = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
36
hosts/wizdesk/services/nixos/jellyfin.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
services.jellyfin = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
user = "wizardlink";
|
||||
package = pkgs.jellyfin.override {
|
||||
jellyfin-web = pkgs.jellyfin-web.overrideAttrs (
|
||||
final: prev: {
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
# Inject the skip intro button script.
|
||||
sed -i "s#</head>#<script src=\"configurationpage?name=skip-intro-button.js\"></script></head>#" dist/index.html
|
||||
|
||||
mkdir -p $out/share
|
||||
cp -a dist $out/share/jellyfin-web
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
services.jellyseerr = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
package = pkgs.jellyseerr.overrideAttrs (
|
||||
_final: _prev: {
|
||||
dontCheckForBrokenSymlinks = true;
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
9
hosts/wizdesk/services/nixos/nix-serve.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
services.nix-serve = {
|
||||
enable = true;
|
||||
port = 7373;
|
||||
secretKeyFile = "/etc/keys/nixbin.thewizard.link-1";
|
||||
};
|
||||
}
|
13
hosts/wizdesk/services/nixos/postgresql.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
|
||||
initialScript = pkgs.writeText "backend-initScript" ''
|
||||
CREATE ROLE wizardlink WITH LOGIN SUPERUSER PASSWORD 'wizardlink' CREATEDB CREATEROLE REPLICATION;
|
||||
CREATE DATABASE wizardlink;
|
||||
GRANT ALL PRIVILEGES ON DATABASE wizardlink TO wizardlink;
|
||||
'';
|
||||
};
|
||||
}
|
53
hosts/wizlap/hardware-configuration.nix
Normal file
|
@ -0,0 +1,53 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/796d5ad8-db83-4c4f-883d-2f1f4f1937de";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
boot.initrd.luks.devices."luks-94d233be-889a-46a4-9c20-b7f026980cbf".device = "/dev/disk/by-uuid/94d233be-889a-46a4-9c20-b7f026980cbf";
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/CA05-302F";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.docker0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
145
hosts/wizlap/home-manager.nix
Normal file
|
@ -0,0 +1,145 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
#
|
||||
## HOME CONFIGURATION #
|
||||
#
|
||||
|
||||
# Import configurations for better modularity.
|
||||
imports = [
|
||||
../../modules/emacs
|
||||
../../modules/hyprland/home-manager.nix
|
||||
../../modules/neovim
|
||||
../../shared/home-manager
|
||||
];
|
||||
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
# manage.
|
||||
home.username = "wizardlink";
|
||||
home.homeDirectory = "/home/wizardlink";
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||
# introduces backwards incompatible changes.
|
||||
#
|
||||
# You should not change this value, even if you update Home Manager. If you do
|
||||
# want to update the value, then make sure to first check the Home Manager
|
||||
# release notes.
|
||||
home.stateVersion = "23.05"; # Please read the comment before changing.
|
||||
|
||||
home.file = {
|
||||
# Create wallpaper script to be read by the start_services.sh script.
|
||||
".local/share/scripts/wallpaper.sh" = {
|
||||
executable = true;
|
||||
text = # sh
|
||||
''
|
||||
#
|
||||
## Start wallpaper daemon and set one.
|
||||
#
|
||||
OUTPUT_1="eDP-1"
|
||||
IMAGE_1="/home/wizardlink/Pictures/wallhaven-x6p3y3.jpg"
|
||||
|
||||
function load_wallpapers() {
|
||||
swww img -t any --transition-bezier 0.0,0.0,1.0,1.0 --transition-duration .8 --transition-step 255 --transition-fps 60 -o $OUTPUT_1 $IMAGE_1;
|
||||
}
|
||||
|
||||
if ! swww query; then
|
||||
swww-daemon &
|
||||
fi
|
||||
|
||||
load_wallpapers &
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
#
|
||||
# PACKAGES #
|
||||
#
|
||||
|
||||
programs.direnv = {
|
||||
config = {
|
||||
whitelist = {
|
||||
prefix = [
|
||||
"/home/wizardlink/Documents/projects"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
## Tools
|
||||
# Utilities
|
||||
brightnessctl
|
||||
|
||||
# Create an FHS environment using the command `fhs`, enabling the execution of non-NixOS packages in NixOS!
|
||||
(
|
||||
let
|
||||
base = appimageTools.defaultFhsEnvArgs;
|
||||
in
|
||||
buildFHSEnv (
|
||||
base
|
||||
// {
|
||||
name = "fhs";
|
||||
targetPkgs =
|
||||
pkgs:
|
||||
(
|
||||
# pkgs.buildFHSUserEnv provides only a minimal FHS environment,
|
||||
# lacking many basic packages needed by most software.
|
||||
# Therefore, we need to add them manually.
|
||||
#
|
||||
# pkgs.appimageTools provides basic packages required by most software.
|
||||
(base.targetPkgs pkgs)
|
||||
++ (with pkgs; [
|
||||
])
|
||||
);
|
||||
profile = "export FHS=1";
|
||||
runScript = "bash";
|
||||
extraOutputsToInstall = [ "dev" ];
|
||||
}
|
||||
)
|
||||
)
|
||||
];
|
||||
|
||||
#
|
||||
# MODULES #
|
||||
#
|
||||
|
||||
# Enable neovim
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
|
||||
# Enable ollama support
|
||||
ollama.enable = true;
|
||||
|
||||
# Set the hostname for nixd in neovim
|
||||
nixd.hostname = "wizlap";
|
||||
};
|
||||
|
||||
# Add monitor configuration to hyprland
|
||||
modules.hyprland = {
|
||||
# Enable scripts
|
||||
scripts = {
|
||||
startup.enable = true;
|
||||
screenshot.enable = true;
|
||||
};
|
||||
|
||||
# Add monitor configuration to hyprland
|
||||
extraConfig = # hyprlang
|
||||
''
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor = eDP-1, 1920x1080@60.01, 0x0, 1
|
||||
|
||||
# Bind workspaces to specific monitors
|
||||
workspace = 1, monitor:eDP-1
|
||||
workspace = 2, monitor:eDP-1
|
||||
workspace = 3, monitor:eDP-1
|
||||
workspace = 4, monitor:eDP-1
|
||||
workspace = 5, monitor:eDP-1
|
||||
workspace = 6, monitor:eDP-1
|
||||
workspace = 7, monitor:eDP-1
|
||||
workspace = 8, monitor:eDP-1
|
||||
workspace = 9, monitor:eDP-1
|
||||
workspace = 0, monitor:eDP-1
|
||||
'';
|
||||
};
|
||||
}
|
118
hosts/wizlap/nixos.nix
Normal file
|
@ -0,0 +1,118 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../modules/hyprland/nixos.nix
|
||||
../../shared/nixos
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
#
|
||||
# NIXOS #
|
||||
#
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.05";
|
||||
|
||||
# Consume my desktop's binary cache. This is specially useful since (in theory)
|
||||
# I will always update the flake and desktop machine first, so when I pull the changes,
|
||||
# my desktop will have all the binaries my laptop needs.
|
||||
nix.settings.substituters = [ "http://192.168.0.100:7373" ];
|
||||
nix.settings.trusted-public-keys = [
|
||||
"wizdesk-1:2UvctPjiMwMs7r2r7VPvoPmh4OcUjY3JmaRDJnOTZY8="
|
||||
];
|
||||
|
||||
#
|
||||
# SYSTEM #
|
||||
#
|
||||
networking.hostName = "wizlap"; # Define your hostname.
|
||||
|
||||
# Open ports in the firewall.
|
||||
networking.firewall = {
|
||||
allowedTCPPortRanges = [
|
||||
{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
} # KDEConnect
|
||||
];
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
from = 1714;
|
||||
to = 1764;
|
||||
} # KDEConnect
|
||||
];
|
||||
};
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.wizardlink = {
|
||||
createHome = true;
|
||||
description = "Alexandre Cavalheiro";
|
||||
extraGroups = [
|
||||
"docker"
|
||||
"gamemode"
|
||||
"libvirtd"
|
||||
"networkmanager"
|
||||
"openrazer"
|
||||
"postgresql"
|
||||
"wheel"
|
||||
];
|
||||
|
||||
initialPassword = "wizardlink";
|
||||
isNormalUser = true;
|
||||
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDdGOyRbu6IOw9yqotxE6m7wCif7oP/2D0tlREa5Q6uo Alexandre Cavalheiro S. Tiago da Silva <contact@thewizard.link>"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIISfCUsZrnCMZapdrvkUCrdRiX+1xuZBdGrynNRzDI2v" # SpaceEEC
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPInBFp7zBLhFluoww65CZzcnMdhndTawBv8QYJ5s/Xt david.alejandro.rubio@gmail.com" # Kodehawa
|
||||
];
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Sao_Paulo";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
supportedLocales = [
|
||||
"C.UTF-8/UTF-8"
|
||||
"en_GB.UTF-8/UTF-8"
|
||||
"en_US.UTF-8/UTF-8"
|
||||
"ja_JP.UTF-8/UTF-8"
|
||||
"pt_BR.UTF-8/UTF-8"
|
||||
];
|
||||
|
||||
extraLocaleSettings = {
|
||||
LANGUAGE = "en_US.UTF-8";
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_ALL = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "pt_BR.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "pt_BR.UTF-8";
|
||||
LC_PAPER = "pt_BR.UTF-8";
|
||||
LC_TELEPHONE = "pt_BR.UTF-8";
|
||||
LC_TIME = "en_GB.UTF-8";
|
||||
};
|
||||
};
|
||||
|
||||
#
|
||||
# HARDWARE #
|
||||
#
|
||||
|
||||
# Enable Zenergy
|
||||
boot.initrd.kernelModules = [
|
||||
"zenergy"
|
||||
];
|
||||
boot.extraModulePackages = [
|
||||
config.boot.kernelPackages.zenergy
|
||||
];
|
||||
|
||||
# enable a better driver for wireless xbox controllers.
|
||||
hardware.xpadneo.enable = true;
|
||||
}
|
10
modules/README.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
This directory encompasses all modules/resources that are exported by this repository's flake.
|
||||
|
||||
## Currently maintained modules
|
||||
|
||||
- [hyprland](./hyprland)
|
||||
- [neovim](./neovim)
|
||||
- [emacs](./emacs)
|
||||
- [template](./template)
|
||||
|
||||
> _Be sure to click the hyperlinks for the relevant documentation._
|
6
modules/emacs/README.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
This module has no options, it simply just adds the necessary packages to run
|
||||
[DOOM Emacs](https://github.com/doomemacs/doomemacs) and writes contents inside [./doom](./doom) into `$XDG_CONFIG_HOME/doom`.
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
33
modules/emacs/default.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# CORE
|
||||
git
|
||||
emacs
|
||||
ripgrep
|
||||
|
||||
# Optional for DOOM
|
||||
clang
|
||||
coreutils
|
||||
fd
|
||||
|
||||
pandoc # For org-pandoc
|
||||
(aspellWithDicts (
|
||||
dicts: with dicts; [
|
||||
en
|
||||
pt_BR
|
||||
]
|
||||
)) # for flyspell
|
||||
gnuplot_qt # for plotting graphs
|
||||
languagetool # for grammar
|
||||
ledger # for accounting and org-ledger
|
||||
gzip # Otherwise random errors occur from the onChange script
|
||||
];
|
||||
|
||||
# Neatly place the configuration files for doom in their right place.
|
||||
xdg.configFile."doom" = {
|
||||
source = ./doom;
|
||||
recursive = true;
|
||||
};
|
||||
}
|
103
modules/emacs/doom/config.el
Normal file
|
@ -0,0 +1,103 @@
|
|||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||
;; sync' after modifying this file!
|
||||
|
||||
|
||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||
;; clients, file templates and snippets. It is optional.
|
||||
(setq user-full-name "Alexandre Cavalheiro S. Tiago da Silva"
|
||||
user-mail-address "contact@thewizard.link")
|
||||
|
||||
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||
;;
|
||||
;; - `doom-font' -- the primary font to use
|
||||
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||
;; presentations or streaming.
|
||||
;; - `doom-symbol-font' -- for symbols
|
||||
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||
;;
|
||||
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||
;; accept. For example:
|
||||
;;
|
||||
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||
;;
|
||||
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||
(setq doom-font (font-spec :family "BlexMono Nerd Font" :size 16))
|
||||
|
||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||
;; `load-theme' function. This is the default:
|
||||
(setq doom-theme 'catppuccin)
|
||||
|
||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||
(setq display-line-numbers-type 'relative)
|
||||
|
||||
;; If you use `org' and don't want your org files in the default location below,
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
(setq org-directory "~/Documents/notes"
|
||||
org-agenda-files (doom-files-in `(,org-directory, "~/Documents/zettelkasten") :type 'files :match "\\.org\\'"))
|
||||
|
||||
|
||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||
;;
|
||||
;; (after! PACKAGE
|
||||
;; (setq x y))
|
||||
;;
|
||||
;; The exceptions to this rule:
|
||||
;;
|
||||
;; - Setting file/directory variables (like `org-directory')
|
||||
;; - Setting variables which explicitly tell you to set them before their
|
||||
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||
;;
|
||||
;; Here are some additional functions/macros that will help you configure Doom.
|
||||
;;
|
||||
;; - `load!' for loading external *.el files relative to this one
|
||||
;; - `use-package!' for configuring packages
|
||||
;; - `after!' for running code after a package has loaded
|
||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||
;; this file. Emacs searches the `load-path' when you load packages with
|
||||
;; `require' or `use-package'.
|
||||
;; - `map!' for binding new keys
|
||||
;;
|
||||
;; To get information about any of these functions/macros, move the cursor over
|
||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||
;; This will open documentation for it, including demos of how they are used.
|
||||
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||
;; etc).
|
||||
;;
|
||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||
;; they are implemented.
|
||||
|
||||
;; Set the tab size to 2
|
||||
(setq tab-width 2)
|
||||
|
||||
;; Configure initial major mode for the scratch buffer
|
||||
(setq initial-major-mode 'org-mode)
|
||||
|
||||
;; Configure orm-roam
|
||||
(setq org-roam-directory "~/Documents/zettelkasten")
|
||||
(map! (:leader :desc "Opens a daily note through the calendar" :n "nrdF" #'org-roam-dailies-find-date))
|
||||
|
||||
(use-package! org-roam-ui
|
||||
:after org-roam
|
||||
:config
|
||||
(setq org-roam-ui-sync-theme t
|
||||
org-roam-ui-follow t
|
||||
org-roam-ui-update-on-save t
|
||||
org-roam-ui-open-on-start t))
|
||||
|
||||
;; Configure doom-themes with treemacs
|
||||
(with-eval-after-load 'doom-themes
|
||||
(doom-themes-treemacs-config))
|
||||
|
||||
;; Configure elfeed-org
|
||||
(setq rmh-elfeed-org-files '("/home/wizardlink/Documents/notes/elfeed.org"))
|
|
@ -4,8 +4,8 @@
|
|||
;; in. Remember to run 'doom sync' after modifying it!
|
||||
|
||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||
;; documentation. There you'll find a "Module Index" link where you'll find
|
||||
;; a comprehensive list of Doom's modules and what flags they support.
|
||||
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||
;; of our modules are listed, including what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||
|
@ -15,23 +15,25 @@
|
|||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input
|
||||
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;(corfu +orderless) ; complete with cap(f), cape and a flying feather!
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;(ivy +fuzzy) ; a search engine for love and life
|
||||
(vertico +icons) ; the search engine of the future
|
||||
;;ivy ; a search engine for love and life
|
||||
vertico ; the search engine of the future
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
(emoji +unicode) ; 🙂
|
||||
;;(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
indent-guides ; highlighted indent columns
|
||||
|
@ -41,13 +43,11 @@
|
|||
nav-flash ; blink cursor line after big motions
|
||||
;;neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup ; tame sudden yet inevitable temporary windows
|
||||
+all
|
||||
+defaults)
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
;;tabs ; a tab bar for Emacs
|
||||
(treemacs +lsp) ; a project drawer, like neotree but cooler
|
||||
(treemacs +lsp) ; a project drawer, like neotree but cooler
|
||||
unicode ; extended unicode support for various languages
|
||||
vc-gutter ; vcs diff in the fringe
|
||||
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
|
@ -68,8 +68,8 @@
|
|||
;;word-wrap ; soft wrapping with language-aware indent
|
||||
|
||||
:emacs
|
||||
(dired +ranger) ; making dired pretty [functional]
|
||||
(electric +icons) ; smarter, keyword-based electric-indent
|
||||
dired ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
;;ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
@ -77,47 +77,47 @@
|
|||
:term
|
||||
;;eshell ; the elisp shell that works everywhere
|
||||
;;shell ; simple shell REPL for Emacs
|
||||
;;term ; basic terminal emulator for Emacs
|
||||
vterm ; the best terminal emulation in Emacs
|
||||
term ; basic terminal emulator for Emacs
|
||||
;;vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
(spell
|
||||
+flyspell) ; FIXME tasing you for misspelling mispelling
|
||||
;;grammar ; tasing grammar mistake every you make
|
||||
(spell ; tasing you for misspelling mispelling
|
||||
+aspell
|
||||
+flyspell)
|
||||
grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
(debugger +lsp) ; FIXME stepping through code, to help you add bugs
|
||||
;;collab ; buffers with friends
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
editorconfig ; let someone else argue about tabs vs spaces
|
||||
editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
;;gist ; interacting with github gists
|
||||
lookup ; navigate your code and its documentation
|
||||
lsp
|
||||
magit ; a git porcelain for Emacs
|
||||
make ; run make tasks from Emacs
|
||||
;lsp ; M-x vscode
|
||||
;;magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
;;pdf ; pdf enhancements
|
||||
;;prodigy ; FIXME managing external services & code builders
|
||||
rgb ; creating color strings
|
||||
taskrunner ; taskrunner for all your projects
|
||||
;;taskrunner ; taskrunner for all your projects
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
|
||||
;;tty ; improve the terminal Emacs experience
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
(cc +lsp) ; C/C++/Obj-C madness
|
||||
;;(cc +lsp) ; C > C++ == 1
|
||||
;;clojure ; java with a lisp
|
||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||
;;coq ; proofs-as-programs
|
||||
|
@ -126,44 +126,43 @@
|
|||
;;data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
(elixir +lsp) ; erlang done right
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
emacs-lisp ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
;;ess ; emacs speaks statistics
|
||||
;;factor
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
(gdscript +lsp) ; the language you waited for
|
||||
;;gdscript ; the language you waited for
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(graphql +lsp) ; Give queries a REST
|
||||
;;(haskell +dante) ; a language that's lazier than I am
|
||||
;;(haskell +lsp) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
(json +lsp) ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
(javascript +lsp) ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;;json ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;;julia ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
(latex ; writing papers in Emacs has never been so fun
|
||||
+lsp
|
||||
+cdlatex) ; math snippets
|
||||
;;lean
|
||||
;;factor
|
||||
ledger ; an accounting system in Emacs
|
||||
;;(lua +lsp) ; one-based indices? one-based indices
|
||||
+lsp
|
||||
+cdlatex)
|
||||
;;lean ; for folks with too much to prove
|
||||
ledger ; be audit you can be
|
||||
;;lua ; one-based indices? one-based indices
|
||||
markdown ; writing docs for people to ignore
|
||||
nim ; python + lisp at the speed of c
|
||||
;;nim ; python + lisp at the speed of c
|
||||
;;nix ; I hereby declare "nix geht mehr!"
|
||||
;;ocaml ; an objective camel
|
||||
(org ; organize your plain life in plain text
|
||||
+pretty ; adds flair to org mode
|
||||
+gnuplot ; graph magic
|
||||
+pandoc
|
||||
+roam2) ; Enable org-roam v2 integration
|
||||
;;(php +lsp) ; perl's insecure younger brother
|
||||
+gnuplot
|
||||
+pandoc
|
||||
+pretty
|
||||
+roam2)
|
||||
;;php ; perl's insecure younger brother
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
;;python ; beautiful is better than ugly
|
||||
|
@ -173,20 +172,20 @@
|
|||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;scheme ; a fully conniving family of lisps
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
(web +lsp) ; the tubes
|
||||
(yaml +lsp) ; JSON, but readable
|
||||
;;web ; the tubes
|
||||
;;yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +gmail)
|
||||
;;(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
|
@ -7,64 +7,51 @@
|
|||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;(package! some-package)
|
||||
;; (package! some-package)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||
;; https://github.com/raxod502/straight.el#the-recipe-format
|
||||
;(package! another-package
|
||||
; :recipe (:host github :repo "username/repo"))
|
||||
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||
;; (package! another-package
|
||||
;; :recipe (:host github :repo "username/repo"))
|
||||
|
||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||
;; `:files' in the `:recipe':
|
||||
;(package! this-package
|
||||
; :recipe (:host github :repo "username/repo"
|
||||
; :files ("some-file.el" "src/lisp/*.el")))
|
||||
;; (package! this-package
|
||||
;; :recipe (:host github :repo "username/repo"
|
||||
;; :files ("some-file.el" "src/lisp/*.el")))
|
||||
|
||||
;; If you'd like to disable a package included with Doom, you can do so here
|
||||
;; with the `:disable' property:
|
||||
;(package! builtin-package :disable t)
|
||||
;; (package! builtin-package :disable t)
|
||||
|
||||
;; You can override the recipe of a built in package without having to specify
|
||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||
;(package! builtin-package :recipe (:nonrecursive t))
|
||||
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||
;; (package! builtin-package :recipe (:nonrecursive t))
|
||||
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||
|
||||
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||
;; This is required for some packages whose default branch isn't 'master' (which
|
||||
;; our package manager can't deal with; see raxod502/straight.el#279)
|
||||
;(package! builtin-package :recipe (:branch "develop"))
|
||||
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||
;; (package! builtin-package :recipe (:branch "develop"))
|
||||
|
||||
;; Use `:pin' to specify a particular commit to install.
|
||||
;(package! builtin-package :pin "1a2b3c4d5e")
|
||||
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||
|
||||
|
||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||
;(unpin! pinned-package)
|
||||
;; (unpin! pinned-package)
|
||||
;; ...or multiple packages
|
||||
;(unpin! pinned-package another-pinned-package)
|
||||
;; (unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;(unpin! t)
|
||||
;; (unpin! t)
|
||||
|
||||
;; Install and enable Discord RPC
|
||||
(package! elcord)
|
||||
|
||||
;; Install and enable Org Roam
|
||||
(package! org-roam
|
||||
:recipe (:host github :repo "org-roam/org-roam"
|
||||
:files (:defaults "extensions/*")))
|
||||
|
||||
;; Install and enable powershell.el
|
||||
(package! powershell)
|
||||
|
||||
;; Install and enable graphviz-dot-mode
|
||||
(package! graphviz-dot-mode)
|
||||
|
||||
;; Install org-roam
|
||||
;; Add org-roam-ui so I can see the node graph of my notes.
|
||||
(unpin! org-roam)
|
||||
(package! org-roam-ui)
|
||||
|
||||
;; Install org-reveal
|
||||
(package! org-reveal)
|
||||
;; Add catppuccin theme.
|
||||
(package! catppuccin-theme)
|
|
@ -23,4 +23,3 @@
|
|||
** Amazing things that happend
|
||||
|
||||
** What did you learn today?
|
||||
|
60
modules/hyprland/README.md
Normal file
|
@ -0,0 +1,60 @@
|
|||
The [NixOS] module installs [Hyprland] onto the system.
|
||||
|
||||
Whilst the [Home Manager] module generates the dotfiles for [Hyprland] and optionally [hyprlock] and [hypridle].
|
||||
|
||||
It can be configured through `modules.hyprland`.
|
||||
|
||||
## Module options
|
||||
|
||||
### extraConfig
|
||||
|
||||
`modules.hyprland.extraConfig` when set will be appended to the top of the configuration I generate, you can see where
|
||||
that is [here](./home-manager.nix#L189).
|
||||
|
||||
There are no monitors configured by default, so you should use this option to do so.
|
||||
|
||||
### hypridle.enable
|
||||
|
||||
Whether to configure and enable the [hypridle] package. Be mindful that it may not auto-start, I have yet to find why but
|
||||
even though it configures to start after `graphical-session.target`, that isn't reached in Hyprland sometimes.
|
||||
|
||||
### hyprlock.enable
|
||||
|
||||
Whether to configure and enable the [hyprlock] package, by itself it does nothing but when [hypridle] is also enabled it
|
||||
will automatically call [hyprlock] after a 120 second timeout.
|
||||
|
||||
### hyprlock.background
|
||||
|
||||
A path to an image that will be used as background when [hyprlock] is invoked.
|
||||
|
||||
### scripts.screenshot.enable
|
||||
|
||||
When enabled it will create two script files in `$XDG_DATA_HOME/scripts/hyprland` and two keybinds for you to run these
|
||||
scripts, allowing you to take screenshots of a region and the entire screen of your first monitor.
|
||||
|
||||
### scripts.startup.enable
|
||||
|
||||
Not my proudest option, this will add two packages containing a startup script for apps that I use in the daily &
|
||||
services. If this module ever gets actually used by someone, then I'll refine it.
|
||||
|
||||
## Visuals
|
||||
|
||||
### Active window
|
||||
|
||||

|
||||
|
||||
### Inactive window
|
||||
|
||||

|
||||
|
||||
### Gaps
|
||||
|
||||

|
||||
|
||||
|
||||
<!-- REFERENCES -->
|
||||
[hyprland]: https://hyprland.org/
|
||||
[hyprlock]: https://github.com/hyprwm/hyprlock
|
||||
[hypridle]: https://github.com/hyprwm/hypridle
|
||||
[home manager]: https://github.com/nix-community/home-manager
|
||||
[nixos]: https://nixos.org
|
418
modules/hyprland/home-manager.nix
Normal file
|
@ -0,0 +1,418 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.modules.hyprland;
|
||||
in
|
||||
{
|
||||
options.modules.hyprland = {
|
||||
extraConfig = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
example = # hyprlang
|
||||
''
|
||||
monitor = DP-3, 1920x1080@74.973, 2560x0, 1
|
||||
monitor = DP-2, 2560x1440@165.00301, 0x0, 1
|
||||
'';
|
||||
description = "Configuration to be appended to my own.";
|
||||
};
|
||||
|
||||
hypridle.enable = lib.mkEnableOption "hypridle";
|
||||
|
||||
hyprlock = {
|
||||
enable = lib.mkEnableOption "hyprlock";
|
||||
background = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "";
|
||||
example = "~/wallpapers/abc.png";
|
||||
description = "The image to be used as background for hyprlock.";
|
||||
};
|
||||
};
|
||||
|
||||
scripts = {
|
||||
screenshot.enable = lib.mkEnableOption "screenshot";
|
||||
startup.enable = lib.mkEnableOption "startup";
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
home.sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
QT_QPA_PLATFORM = "wayland";
|
||||
};
|
||||
|
||||
xdg.configFile."hypr/frappe.conf".source = builtins.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/catppuccin/hyprland/main/themes/frappe.conf";
|
||||
sha256 = "1clw669i1n3dhawdw4clmjv75fy3smycb5iqk3sanzpr3y0i4vwx";
|
||||
};
|
||||
|
||||
# Enable hypridle and hyprlock
|
||||
services.hypridle = lib.mkIf cfg.hypridle.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
ignore_dbus_inhibit = false;
|
||||
lock_cmd = "hyprlock";
|
||||
};
|
||||
|
||||
listener =
|
||||
[
|
||||
{
|
||||
timeout = 180;
|
||||
on-timeout = "hyprctl dispatch dpms off";
|
||||
on-resume = "hyprctl dispatch dpms on";
|
||||
}
|
||||
]
|
||||
++ lib.optionals cfg.hyprlock.enable [
|
||||
{
|
||||
timeout = 120;
|
||||
on-timeout = "hyprlock";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
programs.hyprlock = lib.mkIf cfg.hyprlock.enable {
|
||||
enable = true;
|
||||
extraConfig = # hyprlang
|
||||
''
|
||||
source = $HOME/.config/hypr/frappe.conf
|
||||
|
||||
$accent = $mauve
|
||||
$accentAlpha = $mauveAlpha
|
||||
$font = JetBrainsMono Nerd Font
|
||||
|
||||
# GENERAL
|
||||
general {
|
||||
disable_loading_bar = true
|
||||
hide_cursor = true
|
||||
}
|
||||
|
||||
# BACKGROUND
|
||||
background {
|
||||
monitor =
|
||||
path = ${cfg.hyprlock.background}
|
||||
blur_passes = 0
|
||||
color = $base
|
||||
}
|
||||
|
||||
# LAYOUT
|
||||
label {
|
||||
monitor =
|
||||
text = Layout: $LAYOUT
|
||||
color = $text
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
position = 30, -30
|
||||
halign = left
|
||||
valign = top
|
||||
}
|
||||
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = $TIME
|
||||
color = $text
|
||||
font_size = 90
|
||||
font_family = $font
|
||||
position = -30, 0
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# DATE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:43200000] date +"%A, %d %B %Y"
|
||||
color = $text
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
position = -30, -150
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# USER AVATAR
|
||||
image {
|
||||
monitor =
|
||||
path = $HOME/.face
|
||||
size = 100
|
||||
border_color = $accent
|
||||
position = 0, 75
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# INPUT FIELD
|
||||
input-field {
|
||||
monitor =
|
||||
size = 300, 60
|
||||
outline_thickness = 4
|
||||
dots_size = 0.2
|
||||
dots_spacing = 0.2
|
||||
dots_center = true
|
||||
outer_color = $accent
|
||||
inner_color = $surface0
|
||||
font_color = $text
|
||||
fade_on_empty = false
|
||||
placeholder_text = <span foreground="##$textAlpha"><i> Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
|
||||
hide_input = false
|
||||
check_color = $accent
|
||||
fail_color = $red
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||
capslock_color = $yellow
|
||||
position = 0, -47
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
# Set-up the scripts for services and apps.
|
||||
home.packages = lib.mkIf cfg.scripts.startup.enable [
|
||||
(import ./scripts/start_services.nix pkgs)
|
||||
(import ./scripts/start_apps.nix pkgs)
|
||||
];
|
||||
|
||||
# Then add the hyprland screenshot scripts.
|
||||
xdg.dataFile = lib.mkIf cfg.scripts.screenshot.enable {
|
||||
"scripts/hyprland/screenshot.sh".source = ./scripts/screenshot.sh;
|
||||
"scripts/hyprland/screenshot_area.sh".source = ./scripts/screenshot_area.sh;
|
||||
};
|
||||
|
||||
# Configure hyprland - we enable it in NixOS.
|
||||
xdg.configFile."hypr/hyprland.conf".text = # hyprlang
|
||||
''
|
||||
source = $HOME/.config/hypr/frappe.conf
|
||||
${cfg.extraConfig}
|
||||
|
||||
#
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
#
|
||||
|
||||
autogenerated = 0 # remove this line to remove the warning
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
|
||||
# Inject home-manager session variables
|
||||
exec-once = /etc/profiles/per-user/wizardlink/etc/profile.d/hm-session-vars.sh
|
||||
|
||||
# Start the core services of my desktop
|
||||
exec-once = start_services
|
||||
|
||||
# Open the apps I always use
|
||||
exec-once = start_apps
|
||||
|
||||
# Set cursor size.
|
||||
exec-once = hyprctl setcursor 24
|
||||
env = XCURSOR_SIZE, 24
|
||||
|
||||
# Source a file (multi-file configs)
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||
input {
|
||||
kb_layout =
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
float_switch_override_focus = 1
|
||||
|
||||
accel_profile = flat
|
||||
force_no_accel = true
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
tablet {
|
||||
output = DP-2
|
||||
}
|
||||
}
|
||||
|
||||
general {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
gaps_in = 6
|
||||
gaps_out = 18
|
||||
border_size = 2
|
||||
col.active_border = $base $surface0 $green 45deg
|
||||
col.inactive_border = $base $surface0 $blue 45deg
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
decoration {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
rounding = 8
|
||||
|
||||
blur {
|
||||
enabled = true
|
||||
size = 8
|
||||
passes = 1
|
||||
new_optimizations = true
|
||||
}
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = $crust
|
||||
}
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled = yes
|
||||
|
||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
|
||||
animation = windows, 1, 7, myBezier
|
||||
animation = windowsOut, 1, 7, default, popin 80%
|
||||
animation = border, 1, 10, default
|
||||
animation = 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 = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = yes # you probably want this
|
||||
}
|
||||
|
||||
master {
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
new_status = slave
|
||||
}
|
||||
|
||||
gestures {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
workspace_swipe = off
|
||||
}
|
||||
|
||||
# Example windowrule v1
|
||||
# windowrule = float, ^(kitty)$
|
||||
# Example windowrule v2
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
$mainMod = SUPER
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod CTRL, F, fullscreenstate, -1 2
|
||||
bind = $mainMod CTRL, L, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
|
||||
bind = $mainMod CTRL, P, exec, ~/.local/share/scripts/hyprland/screenshot_area.sh
|
||||
bind = $mainMod CTRL, V, pin
|
||||
bind = $mainMod SHIFT, F, fullscreen, 1
|
||||
bind = $mainMod SHIFT, P, exec, ~/.local/share/scripts/hyprland/screenshot.sh
|
||||
bind = $mainMod, C, killactive
|
||||
bind = $mainMod, E, exec, thunar
|
||||
bind = $mainMod, F, fullscreen
|
||||
bind = $mainMod, M, exit
|
||||
bind = $mainMod, O, togglesplit # dwindle
|
||||
bind = $mainMod, P, pseudo # dwindle
|
||||
bind = $mainMod, Q, exec, alacritty
|
||||
bind = $mainMod, R, exec, rofi -show drun
|
||||
bind = $mainMod, V, togglefloating
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, H, movefocus, l
|
||||
bind = $mainMod, L, movefocus, r
|
||||
bind = $mainMod, K, movefocus, u
|
||||
bind = $mainMod, J, 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
|
||||
bind = $mainMod SHIFT, H, movewindow, l
|
||||
bind = $mainMod SHIFT, L, movewindow, r
|
||||
bind = $mainMod SHIFT, K, movewindow, u
|
||||
bind = $mainMod SHIFT, J, movewindow, d
|
||||
bind = $mainMod ALT, H, resizeactive, -5% 0
|
||||
bind = $mainMod ALT, L, resizeactive, 5% 0
|
||||
bind = $mainMod ALT, K, resizeactive, 0 -5%
|
||||
bind = $mainMod ALT, J, resizeactive, 0 5%
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Volume changes
|
||||
binde = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 1%+
|
||||
binde = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 1%-
|
||||
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
|
||||
# Passthrough binds
|
||||
bind = SHIFT CTRL, F12, pass, ^(com.obsproject.Studio)$
|
||||
|
||||
# Window rules for xwaylandvideobridge
|
||||
windowrule = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$
|
||||
windowrule = noanim,class:^(xwaylandvideobridge)$
|
||||
windowrule = nofocus,class:^(xwaylandvideobridge)$
|
||||
windowrule = noinitialfocus,class:^(xwaylandvideobridge)$
|
||||
|
||||
# Rules for windowkill
|
||||
windowrule = tag +windowkill, class:^(steam_app_2726450)$
|
||||
windowrule = noborder, tag:windowkill
|
||||
windowrule = pin, tag:windowkill
|
||||
windowrule = opacity 0.9, tag:windowkill
|
||||
|
||||
# Rules for Awakened PoE
|
||||
windowrule = tag +poe, class:^(steam_app_238960)$
|
||||
windowrule = allowsinput, tag:poe
|
||||
|
||||
windowrule = tag +apt, class:^(awakened-poe-trade)$
|
||||
windowrule = float, tag:apt
|
||||
windowrule = noblur, tag:apt
|
||||
windowrule = noborder, tag:apt
|
||||
windowrule = noshadow, tag:apt
|
||||
|
||||
# Rules for anki
|
||||
windowrule = float, class:^(anki)$
|
||||
|
||||
windowrule = tag +gw2, class:^(steam_app_1284210)$
|
||||
windowrule = noblur, tag:gw2
|
||||
windowrule = noborder, tag:gw2
|
||||
|
||||
# Rules for godot
|
||||
windowrule = tag +godot, class:^(Godot)$, title:^(.+)$
|
||||
windowrule = center, tag:godot
|
||||
windowrule = size 50% 50%, tag:godot
|
||||
'';
|
||||
};
|
||||
}
|
26
modules/hyprland/nixos.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ pkgs, hyprland, ... }:
|
||||
|
||||
let
|
||||
hyprland-pkgs = hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system};
|
||||
in
|
||||
{
|
||||
# Enable Hyprland's cachix
|
||||
nix.settings.substituters = [ "https://hyprland.cachix.org" ];
|
||||
nix.settings.trusted-public-keys = [
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
];
|
||||
|
||||
# Enable Hyprland
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
|
||||
package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
portalPackage = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
|
||||
# Overwrite the Mesa packages with Hyprland's for consitency
|
||||
hardware.graphics = {
|
||||
package = hyprland-pkgs.mesa;
|
||||
package32 = hyprland-pkgs.pkgsi686Linux.mesa;
|
||||
};
|
||||
}
|
6
modules/hyprland/scripts/screenshot.sh
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
FILE_PATH="/mnt/internal/personal/screenshots/$(date +'%Y-%m-%d_%H-%M-%S').png"
|
||||
|
||||
grim -t png -o DP-2 $FILE_PATH
|
||||
wl-copy <$FILE_PATH
|
6
modules/hyprland/scripts/screenshot_area.sh
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
FILE_PATH="/mnt/internal/personal/screenshots/$(date +'%Y-%m-%d_%H-%M-%S').png"
|
||||
|
||||
grim -t png -g "$(slurp -w 0 -b '#6E738D77')" $FILE_PATH
|
||||
wl-copy <$FILE_PATH
|
15
modules/hyprland/scripts/start_apps.nix
Executable file
|
@ -0,0 +1,15 @@
|
|||
pkgs:
|
||||
|
||||
pkgs.writeShellScriptBin "start_apps" ''
|
||||
# Open qbittorrent
|
||||
qbittorrent &
|
||||
|
||||
# Open vesktop
|
||||
vesktop &
|
||||
|
||||
# Open steam
|
||||
steam &
|
||||
|
||||
# Open firefox
|
||||
firefox
|
||||
''
|
59
modules/hyprland/scripts/start_services.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
pkgs:
|
||||
|
||||
pkgs.writeShellScriptBin "start_services" ''
|
||||
#
|
||||
# Make sure xdg-desktop-portal-hyprland has access to what it needs
|
||||
#
|
||||
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &
|
||||
|
||||
#
|
||||
# Start waybar.
|
||||
#
|
||||
waybar &
|
||||
|
||||
|
||||
#
|
||||
# Start wallpaper daemon
|
||||
#
|
||||
~/.local/share/scripts/wallpaper.sh &
|
||||
|
||||
#
|
||||
# Start notification daemon.
|
||||
#
|
||||
mako &
|
||||
|
||||
#
|
||||
# Start polkit agent
|
||||
#
|
||||
${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1 &
|
||||
|
||||
#
|
||||
# Start kwallet service
|
||||
#
|
||||
kwalletd6 &
|
||||
|
||||
#
|
||||
# Start kdeconnect daemon
|
||||
#
|
||||
kdeconnectd &
|
||||
|
||||
#
|
||||
# Start Fcitx5
|
||||
#
|
||||
fcitx5 &
|
||||
|
||||
#
|
||||
# Start the blueman applet for managing bluetooth devices
|
||||
#
|
||||
blueman-applet &
|
||||
|
||||
#
|
||||
# Clipboard manager
|
||||
#
|
||||
${pkgs.wl-clipboard}/bin/wl-paste --watch cliphist store &
|
||||
|
||||
#
|
||||
# Service that syncs X11 and Wayland clipboards
|
||||
#
|
||||
clipboard-sync
|
||||
''
|
44
modules/neovim/README.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
This module generates dotfiles for [neovim].
|
||||
|
||||
The module extends `programs.neovim`.
|
||||
|
||||
## Module options
|
||||
|
||||
### programs.neovim.nixd.hostname
|
||||
|
||||
By default [nixd] is enabled, you **need** to pass the current machine's
|
||||
hostname that is used to generate your system.
|
||||
|
||||
### programs.neovim.nixd.location
|
||||
|
||||
The location of your system's flake, [nixd] will execute an expression defined in the LSP's configuration that reads
|
||||
the flake's contents to evaluate [NixOS] and [Home Manager] options.
|
||||
|
||||
### programs.neovim.ollama.enable
|
||||
|
||||
Whether to add an [ollama] package to be used with [ollama.nvim](https://github.com/nomnivore/ollama.nvim).
|
||||
|
||||
### programs.neovim.ollama.type
|
||||
|
||||
The type of [ollama] package to be added, valid options are: `amd`, `nvidia` or `cpu`.
|
||||
|
||||
## My neovim failed because of package X not existing
|
||||
|
||||
My configuration is based off of `nixos-unstable` so sometimes your package may not exist or have a different name, I
|
||||
apologise for that but I don't plan on maintaining backwards compatibility. :(
|
||||
|
||||
## How it looks
|
||||
|
||||
Here's some screenshots of how it currently looks like:
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
The theme I'm using is [catppuccin](https://github.com/catppuccin) in case you're curious.
|
||||
|
||||
[neovim]: https://neovim.io/
|
||||
[Home Manager]: https://github.com/nix-community/home-manager
|
||||
[nixos]: https://nixos.org
|
||||
[nixd]: https://github.com/nix-community/nixd/
|
||||
[ollama]: https://ollama.com/
|
167
modules/neovim/default.nix
Normal file
|
@ -0,0 +1,167 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
types
|
||||
mkOption
|
||||
mkIf
|
||||
mkEnableOption
|
||||
;
|
||||
|
||||
ollamaPackage = mkIf config.programs.neovim.ollama.enable (
|
||||
if config.programs.neovim.ollama.type == "amd" then
|
||||
pkgs.ollama-rocm
|
||||
else if config.programs.neovim.ollama.type == "nvidia" then
|
||||
pkgs.ollama-cuda
|
||||
else
|
||||
pkgs.ollama
|
||||
);
|
||||
in
|
||||
{
|
||||
options.programs.neovim = {
|
||||
nixd = {
|
||||
hostname = mkOption {
|
||||
default = "wizdesk";
|
||||
description = "Your NixOS hostname, needed for nixd lsp.";
|
||||
example = "nixos";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
location = mkOption {
|
||||
default = "git+file:///home/wizardlink/.system";
|
||||
description = "Path to your flake location, prepend 'file:///' to it and 'git+' before that if using git.";
|
||||
example = "git+file:///home/wizardlink/.system";
|
||||
type = types.str;
|
||||
};
|
||||
};
|
||||
|
||||
ollama = {
|
||||
enable = mkEnableOption "enable";
|
||||
type = mkOption {
|
||||
default = "amd";
|
||||
description = "The type of ollama package to install, AMD GPU accelerated or NVIDIA GPU accelerated.";
|
||||
example = "amd";
|
||||
type = types.enum [
|
||||
"amd"
|
||||
"nvidia"
|
||||
"cpu"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
MANPAGER = "nvim +Man!";
|
||||
};
|
||||
|
||||
programs.neovim = {
|
||||
withNodeJs = true;
|
||||
withPython3 = true;
|
||||
|
||||
extraLuaConfig = builtins.readFile ./init.lua;
|
||||
|
||||
extraPackages =
|
||||
with pkgs;
|
||||
[
|
||||
# Needed by LuaSnip
|
||||
luajitPackages.jsregexp
|
||||
|
||||
# Treesitter
|
||||
gcc # For compiling languages
|
||||
|
||||
# CMAKE
|
||||
neocmakelsp
|
||||
|
||||
# C/C++
|
||||
clang-tools
|
||||
vscode-extensions.ms-vscode.cpptools
|
||||
|
||||
# C#
|
||||
#csharp-ls Testing roslyn.nvim
|
||||
roslyn-ls
|
||||
rzls
|
||||
csharpier
|
||||
netcoredbg
|
||||
|
||||
# HTML/CSS/JSON
|
||||
emmet-ls
|
||||
vscode-langservers-extracted
|
||||
|
||||
# LUA
|
||||
lua-language-server
|
||||
stylua
|
||||
|
||||
# Markdown
|
||||
markdownlint-cli
|
||||
marksman
|
||||
|
||||
# Nix
|
||||
deadnix
|
||||
nixd
|
||||
nixfmt-rfc-style
|
||||
statix
|
||||
|
||||
# Python
|
||||
basedpyright
|
||||
python312Packages.flake8
|
||||
ruff
|
||||
|
||||
# TypeScript/JavaScript
|
||||
vtsls
|
||||
deno
|
||||
vscode-js-debug
|
||||
|
||||
# Rust
|
||||
rust-analyzer
|
||||
cargo # Needed by blink-cmp
|
||||
taplo
|
||||
vscode-extensions.vadimcn.vscode-lldb
|
||||
|
||||
# Vue
|
||||
prettierd
|
||||
vue-language-server
|
||||
|
||||
# Svelte
|
||||
nodePackages.svelte-language-server
|
||||
|
||||
# YAML
|
||||
yaml-language-server
|
||||
]
|
||||
++ pkgs.lib.optionals config.programs.neovim.ollama.enable [
|
||||
# Needed by ollama.nvim
|
||||
curl
|
||||
ollamaPackage
|
||||
];
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/lua" = {
|
||||
recursive = true;
|
||||
source = ./lua;
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/queries" = {
|
||||
recursive = true;
|
||||
source = ./queries;
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/ftplugin" = {
|
||||
recursive = true;
|
||||
source = ./ftplugin;
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/lua/plugins/astrolsp.lua".source = pkgs.runCommand "astrolsp.lua" { } ''
|
||||
cp ${./lsp.lua} $out
|
||||
|
||||
substituteInPlace $out \
|
||||
--replace-fail "{hostname}" "${config.programs.neovim.nixd.hostname}" \
|
||||
--replace-fail "{location}" "${config.programs.neovim.nixd.location}"
|
||||
'';
|
||||
};
|
||||
}
|
153
modules/neovim/ftplugin/cs.lua
Normal file
|
@ -0,0 +1,153 @@
|
|||
---@class CSFTPlugin.Project
|
||||
---@field dll_path string
|
||||
---@field name string
|
||||
---@field target_framework string
|
||||
|
||||
---@class CSFTPlugin
|
||||
---@field dotnet_cmd string?
|
||||
---@field projects CSFTPlugin.Project[]
|
||||
local M = {
|
||||
dotnet_cmd = vim.fn.exepath "dotnet",
|
||||
projects = {},
|
||||
}
|
||||
|
||||
---@param command string The shell command to execute
|
||||
---@return string[]
|
||||
function M.cmd(command)
|
||||
-- execute command
|
||||
local exec_return = vim.fn.execute("!" .. command)
|
||||
|
||||
-- get the output by line
|
||||
local output = vim.tbl_filter(
|
||||
---@param item string
|
||||
---@return boolean
|
||||
function(item)
|
||||
if item == "" then
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
end,
|
||||
vim.split(exec_return, "[\n]")
|
||||
)
|
||||
|
||||
-- remove echo line (":!<command>")
|
||||
table.remove(output, 1)
|
||||
|
||||
return output
|
||||
end
|
||||
|
||||
---@return CSFTPlugin.Project[]
|
||||
function M.find_projects()
|
||||
local projects = {}
|
||||
|
||||
local csproj_extension = ".csproj"
|
||||
|
||||
local csproj_files = M.cmd("find . -name '*" .. csproj_extension .. "'")
|
||||
|
||||
for _, file_path in ipairs(csproj_files) do
|
||||
local sub_start, sub_end = string.find(file_path, "%w+%" .. csproj_extension)
|
||||
|
||||
local project_name = string.sub(file_path, sub_start or 1, sub_end - #csproj_extension)
|
||||
local project_location = string.sub(file_path, 1, sub_start - 1)
|
||||
|
||||
local target_framework = M.cmd("rg -e 'TargetFramework>(.*)<' -r '$1' -o " .. file_path)[1]
|
||||
|
||||
projects[#projects + 1] = {
|
||||
dll_path = project_location .. "bin/Debug/" .. target_framework .. "/" .. project_name .. ".dll",
|
||||
name = project_name,
|
||||
target_framework = target_framework,
|
||||
}
|
||||
end
|
||||
|
||||
return projects
|
||||
end
|
||||
|
||||
---@param command string The dotnet CLI command to run
|
||||
---@return string[]
|
||||
function M:run(command)
|
||||
return M.cmd(self.dotnet_cmd .. " " .. command)
|
||||
end
|
||||
|
||||
---@return boolean
|
||||
function M:check_version()
|
||||
local cmd_output = self:run "--version"
|
||||
|
||||
local sub_start = string.find(cmd_output[1], "%d+%.%d+%.%d+")
|
||||
if not sub_start then
|
||||
return false
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
---@return thread
|
||||
function M:choose_dll()
|
||||
self.projects = self.find_projects()
|
||||
|
||||
local dap = require "dap"
|
||||
|
||||
return coroutine.create(function(search_coroutine)
|
||||
vim.ui.select(
|
||||
self.projects,
|
||||
{
|
||||
prompt = "Select project to debug:",
|
||||
---@param item CSFTPlugin.Project
|
||||
---@return string
|
||||
format_item = function(item)
|
||||
return item.name
|
||||
end,
|
||||
},
|
||||
---@param item CSFTPlugin.Project
|
||||
function(item)
|
||||
local path = item and item.dll_path or dap.ABORT
|
||||
|
||||
if path ~= dap.ABORT then
|
||||
self:run "build"
|
||||
end
|
||||
|
||||
coroutine.resume(search_coroutine, path)
|
||||
end
|
||||
)
|
||||
end)
|
||||
end
|
||||
|
||||
function M:start()
|
||||
local has_dotnet = self:check_version()
|
||||
|
||||
if not has_dotnet then
|
||||
vim.notify_once("dotnet executable not present of malfunctioning", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
vim.fn.setenv("DOTNET_ENVIRONMENT", "Development")
|
||||
|
||||
local debugger_path = vim.fn.get_nix_store "netcoredbg" .. "/bin/netcoredbg"
|
||||
|
||||
local dap = require "dap"
|
||||
|
||||
---@type dap.ExecutableAdapter
|
||||
dap.adapters.netcoredbg = {
|
||||
type = "executable",
|
||||
command = debugger_path,
|
||||
args = { "--interpreter=vscode" },
|
||||
}
|
||||
|
||||
---@type dap.Configuration[]
|
||||
dap.configurations.cs = {
|
||||
{
|
||||
type = "netcoredbg",
|
||||
name = "Launch project DLL",
|
||||
request = "launch",
|
||||
program = function()
|
||||
return self:choose_dll()
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
vim.g.loaded_csftplugin = true
|
||||
end
|
||||
|
||||
if not vim.g.loaded_csftplugin then
|
||||
M:start()
|
||||
end
|
23
modules/neovim/init.lua
Normal file
|
@ -0,0 +1,23 @@
|
|||
-- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution
|
||||
-- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk.
|
||||
local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
|
||||
if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then
|
||||
-- stylua: ignore
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable",
|
||||
lazypath })
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- validate that lazy is available
|
||||
if not pcall(require, "lazy") then
|
||||
-- stylua: ignore
|
||||
vim.api.nvim_echo(
|
||||
{ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } },
|
||||
true, {})
|
||||
vim.fn.getchar()
|
||||
vim.cmd.quit()
|
||||
end
|
||||
|
||||
require "util"
|
||||
require "lazy_setup"
|
||||
require "polish"
|
210
modules/neovim/lsp.lua
Normal file
|
@ -0,0 +1,210 @@
|
|||
-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine
|
||||
-- Configuration documentation can be found with `:h astrolsp`
|
||||
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||
-- as this provides autocomplete and documentation while editing
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"AstroNvim/astrolsp",
|
||||
---@param opts AstroLSPOpts
|
||||
---@return AstroLSPOpts
|
||||
opts = function(_, opts)
|
||||
---@type AstroLSPOpts
|
||||
local lsp_options = {
|
||||
-- Configuration table of features provided by AstroLSP
|
||||
features = {
|
||||
autoformat = true, -- enable or disable auto formatting on start
|
||||
codelens = true, -- enable/disable codelens refresh on start
|
||||
inlay_hints = false, -- enable/disable inlay hints on start
|
||||
semantic_tokens = true, -- enable/disable semantic token highlighting
|
||||
},
|
||||
-- customize lsp formatting options
|
||||
formatting = {
|
||||
-- control auto formatting on save
|
||||
format_on_save = {
|
||||
enabled = true, -- enable or disable format on save globally
|
||||
allow_filetypes = { -- enable format on save for specified filetypes only
|
||||
-- "go",
|
||||
"c",
|
||||
"cpp",
|
||||
"cs",
|
||||
"gdscript",
|
||||
"h",
|
||||
"javascript",
|
||||
"jsx",
|
||||
"lua",
|
||||
"nix",
|
||||
"rust",
|
||||
"svelte",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vue",
|
||||
},
|
||||
ignore_filetypes = { -- disable format on save for specified filetypes
|
||||
-- "python",
|
||||
},
|
||||
},
|
||||
disabled = { -- disable formatting capabilities for the listed language servers
|
||||
-- disable lua_ls formatting capability if you want to use StyLua to format your lua code
|
||||
-- "lua_ls",
|
||||
},
|
||||
timeout_ms = 1000, -- default format timeout
|
||||
-- filter = function(client) -- fully override the default formatting function
|
||||
-- return true
|
||||
-- end
|
||||
},
|
||||
-- enable servers that you already have installed without mason
|
||||
servers = {
|
||||
"basedpyright",
|
||||
"clangd",
|
||||
"cmake",
|
||||
--"csharp_ls", Testing roslyn.nvim
|
||||
"cssls",
|
||||
"denols",
|
||||
"eslint",
|
||||
"gdscript",
|
||||
"html",
|
||||
"jsonls",
|
||||
"lua_ls",
|
||||
"marksman",
|
||||
"nixd",
|
||||
"rust_analyzer",
|
||||
"svelte",
|
||||
"taplo",
|
||||
"volar",
|
||||
"vtsls",
|
||||
"yamlls",
|
||||
},
|
||||
-- customize language server configuration options passed to `lspconfig`
|
||||
---@diagnostic disable: missing-fields
|
||||
config = {
|
||||
-- clangd = { capabilities = { offsetEncoding = "utf-8" } },
|
||||
---@type lspconfig.Config
|
||||
nixd = {
|
||||
settings = {
|
||||
nixd = {
|
||||
nixpkgs = {
|
||||
expr = "import (builtins.getFlake ({location})).inputs.nixpkgs { }",
|
||||
},
|
||||
options = {
|
||||
nixos = {
|
||||
expr = '(builtins.getFlake ("{location}")).nixosConfigurations.{hostname}.options',
|
||||
},
|
||||
home_manager = {
|
||||
expr =
|
||||
'(builtins.getFlake ("{location}")).nixosConfigurations.{hostname}.options.home-manager.users.type.getSubOptions []',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
---@type lspconfig.Config
|
||||
vtsls = {
|
||||
filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" },
|
||||
settings = {
|
||||
vtsls = {
|
||||
tsserver = {
|
||||
globalPlugins = {
|
||||
{
|
||||
name = "@vue/typescript-plugin",
|
||||
location = vim.fn.get_nix_store "vue-language-server"
|
||||
.. "/lib/node_modules/@vue/language-server",
|
||||
languages = { "vue" },
|
||||
configNamespace = "typescript",
|
||||
enableForWorkspaceTypeScriptVersions = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
---@type lspconfig.Config
|
||||
rust_analyzer = {
|
||||
settings = {
|
||||
["rust-analyzer"] = {
|
||||
cargo = {
|
||||
extraEnv = { CARGO_PROFILE_RUST_ANALYZER_INHERITS = "dev" },
|
||||
extraArgs = { "--profile", "rust-analyzer" },
|
||||
},
|
||||
check = { command = "check", extraArgs = {} },
|
||||
},
|
||||
},
|
||||
},
|
||||
---@type lspconfig.Config
|
||||
html = {
|
||||
filetypes = { "html", "templ", "razor" },
|
||||
},
|
||||
},
|
||||
-- customize how language servers are attached
|
||||
handlers = {
|
||||
-- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server
|
||||
-- function(server, opts) require("lspconfig")[server].setup(opts) end
|
||||
|
||||
-- the key is the server that is being setup with `lspconfig`
|
||||
-- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server
|
||||
-- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed
|
||||
},
|
||||
-- Configure buffer local auto commands to add when attaching a language server
|
||||
autocmds = {
|
||||
-- first key is the `augroup` to add the auto commands to (:h augroup)
|
||||
lsp_document_highlight = {
|
||||
-- Optional condition to create/delete auto command group
|
||||
-- can either be a string of a client capability or a function of `fun(client, bufnr): boolean`
|
||||
-- condition will be resolved for each client on each execution and if it ever fails for all clients,
|
||||
-- the auto commands will be deleted for that buffer
|
||||
cond = "textDocument/documentHighlight",
|
||||
-- cond = function(client, bufnr) return client.name == "lua_ls" end,
|
||||
-- list of auto commands to set
|
||||
{
|
||||
-- events to trigger
|
||||
event = { "CursorHold", "CursorHoldI" },
|
||||
-- the rest of the autocmd options (:h nvim_create_autocmd)
|
||||
desc = "Document Highlighting",
|
||||
callback = function()
|
||||
vim.lsp.buf.document_highlight()
|
||||
end,
|
||||
},
|
||||
{
|
||||
event = { "CursorMoved", "CursorMovedI", "BufLeave" },
|
||||
desc = "Document Highlighting Clear",
|
||||
callback = function()
|
||||
vim.lsp.buf.clear_references()
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
-- mappings to be set up on attaching of a language server
|
||||
mappings = {
|
||||
n = {
|
||||
gl = {
|
||||
function()
|
||||
vim.diagnostic.open_float()
|
||||
end,
|
||||
desc = "Hover diagnostics",
|
||||
},
|
||||
-- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean
|
||||
-- gD = {
|
||||
-- function() vim.lsp.buf.declaration() end,
|
||||
-- desc = "Declaration of current symbol",
|
||||
-- cond = "textDocument/declaration",
|
||||
-- },
|
||||
-- ["<Leader>uY"] = {
|
||||
-- function() require("astrolsp.toggles").buffer_semantic_tokens() end,
|
||||
-- desc = "Toggle LSP semantic highlight (buffer)",
|
||||
-- cond = function(client) return client.server_capabilities.semanticTokensProvider and vim.lsp.semantic_tokens end,
|
||||
-- },
|
||||
},
|
||||
},
|
||||
-- A custom `on_attach` function to be run after the default `on_attach` function
|
||||
-- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`)
|
||||
on_attach = function(client, bufnr)
|
||||
-- this would disable semanticTokensProvider for all clients
|
||||
-- client.server_capabilities.semanticTokensProvider = nil
|
||||
end,
|
||||
}
|
||||
|
||||
opts = vim.tbl_deep_extend("force", opts, lsp_options)
|
||||
|
||||
return opts
|
||||
end,
|
||||
}
|
36
modules/neovim/lua/community.lua
Normal file
|
@ -0,0 +1,36 @@
|
|||
-- AstroCommunity: import any community modules here
|
||||
-- We import this file in `lazy_setup.lua` before the `plugins/` folder.
|
||||
-- This guarantees that the specs are processed before any user plugins.
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"AstroNvim/astrocommunity",
|
||||
{ import = "astrocommunity.colorscheme.catppuccin" },
|
||||
|
||||
{ import = "astrocommunity.media.vim-wakatime" },
|
||||
|
||||
{ import = "astrocommunity.editing-support.todo-comments-nvim" },
|
||||
{ import = "astrocommunity.editing-support.zen-mode-nvim" },
|
||||
|
||||
{ import = "astrocommunity.motion.flash-nvim" },
|
||||
{ import = "astrocommunity.motion.flit-nvim" },
|
||||
{ import = "astrocommunity.motion.leap-nvim" },
|
||||
{ import = "astrocommunity.motion.mini-ai" },
|
||||
{ import = "astrocommunity.motion.mini-surround" },
|
||||
|
||||
{ import = "astrocommunity.test.neotest" },
|
||||
|
||||
{ import = "astrocommunity.pack.cmake" },
|
||||
{ import = "astrocommunity.pack.cpp" },
|
||||
-- { import = "astrocommunity.pack.cs" }, Trying out roslyn.nvim
|
||||
{ import = "astrocommunity.pack.godot" },
|
||||
{ import = "astrocommunity.pack.html-css" },
|
||||
{ import = "astrocommunity.pack.json" },
|
||||
{ import = "astrocommunity.pack.lua" },
|
||||
{ import = "astrocommunity.pack.markdown" },
|
||||
{ import = "astrocommunity.pack.rust" },
|
||||
{ import = "astrocommunity.pack.toml" },
|
||||
{ import = "astrocommunity.pack.typescript-all-in-one" },
|
||||
{ import = "astrocommunity.pack.vue" },
|
||||
{ import = "astrocommunity.pack.yaml" },
|
||||
}
|
31
modules/neovim/lua/lazy_setup.lua
Normal file
|
@ -0,0 +1,31 @@
|
|||
require("lazy").setup({
|
||||
{
|
||||
"AstroNvim/AstroNvim",
|
||||
--version = "^4", -- Remove version tracking to elect for nighly AstroNvim
|
||||
import = "astronvim.plugins",
|
||||
opts = { -- AstroNvim options must be set here with the `import` key
|
||||
mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up
|
||||
maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up
|
||||
icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available)
|
||||
pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override
|
||||
},
|
||||
},
|
||||
{ import = "community" },
|
||||
{ import = "plugins" },
|
||||
} --[[@as LazySpec]], {
|
||||
-- Configure any other `lazy.nvim` configuration options here
|
||||
install = { colorscheme = { "astrodark", "habamax" } },
|
||||
ui = { backdrop = 100 },
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins, add more to your liking
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
} --[[@as LazyConfig]])
|
84
modules/neovim/lua/plugins/astrocore.lua
Normal file
|
@ -0,0 +1,84 @@
|
|||
-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
|
||||
-- Configuration documentation can be found with `:h astrocore`
|
||||
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||
-- as this provides autocomplete and documentation while editing
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"AstroNvim/astrocore",
|
||||
---@type AstroCoreOpts
|
||||
opts = {
|
||||
-- Configure core features of AstroNvim
|
||||
features = {
|
||||
large_buf = { size = 1024 * 500, lines = 10000 }, -- set global limits for large files for disabling features like treesitter
|
||||
autopairs = true, -- enable autopairs at start
|
||||
cmp = true, -- enable completion at start
|
||||
diagnostics_mode = 3, -- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on)
|
||||
highlighturl = true, -- highlight URLs at start
|
||||
notifications = true, -- enable notifications at start
|
||||
},
|
||||
-- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
|
||||
diagnostics = {
|
||||
virtual_text = true,
|
||||
underline = true,
|
||||
},
|
||||
-- vim options can be configured here
|
||||
options = {
|
||||
opt = { -- vim.opt.<key>
|
||||
autoindent = true, -- indents automatically based on context
|
||||
expandtab = true, -- use spaces instead of tabs
|
||||
grepprg = "rg --vimgrep", -- use ripgrep on grep actions
|
||||
number = true, -- sets vim.opt.number
|
||||
relativenumber = true, -- sets vim.opt.relativenumber
|
||||
shiftwidth = 2, -- how many spaces after indentation
|
||||
signcolumn = "auto", -- sets vim.opt.signcolumn to auto
|
||||
smartindent = true, -- smartly indent
|
||||
spell = false, -- sets vim.opt.spell
|
||||
tabstop = 2, -- how many spaces to indent when pressing tab
|
||||
wrap = false, -- sets vim.opt.wrap
|
||||
},
|
||||
g = { -- vim.g.<key>
|
||||
-- configure global vim variables (vim.g)
|
||||
-- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`
|
||||
-- This can be found in the `lua/lazy_setup.lua` file
|
||||
},
|
||||
},
|
||||
-- Mappings can be configured through AstroCore as well.
|
||||
-- NOTE: keycodes follow the casing in the vimdocs. For example, `<Leader>` must be capitalized
|
||||
mappings = {
|
||||
-- first key is the mode
|
||||
n = {
|
||||
-- second key is the lefthand side of the map
|
||||
|
||||
-- navigate buffer tabs with `H` and `L`
|
||||
-- L = {
|
||||
-- function() require("astrocore.buffer").nav(vim.v.count > 0 and vim.v.count or 1) end,
|
||||
-- desc = "Next buffer",
|
||||
-- },
|
||||
-- H = {
|
||||
-- function() require("astrocore.buffer").nav(-(vim.v.count > 0 and vim.v.count or 1)) end,
|
||||
-- desc = "Previous buffer",
|
||||
-- },
|
||||
|
||||
-- mappings seen under group name "Buffer"
|
||||
["<Leader>bD"] = {
|
||||
function()
|
||||
require("astroui.status.heirline").buffer_picker(function(bufnr)
|
||||
require("astrocore.buffer").close(bufnr)
|
||||
end)
|
||||
end,
|
||||
desc = "Pick to close",
|
||||
},
|
||||
-- tables with just a `desc` key will be registered with which-key if it's installed
|
||||
-- this is useful for naming menus
|
||||
["<Leader>b"] = { desc = "Buffers" },
|
||||
-- quick save
|
||||
-- ["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
|
||||
},
|
||||
t = {
|
||||
-- setting a mapping to false will disable it
|
||||
-- ["<esc>"] = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
37
modules/neovim/lua/plugins/astroui.lua
Normal file
|
@ -0,0 +1,37 @@
|
|||
-- AstroUI provides the basis for configuring the AstroNvim User Interface
|
||||
-- Configuration documentation can be found with `:h astroui`
|
||||
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||
-- as this provides autocomplete and documentation while editing
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"AstroNvim/astroui",
|
||||
---@type AstroUIOpts
|
||||
opts = {
|
||||
-- change colorscheme
|
||||
colorscheme = "catppuccin-frappe",
|
||||
-- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
|
||||
highlights = {
|
||||
init = { -- this table overrides highlights in all themes
|
||||
-- Normal = { bg = "#000000" },
|
||||
},
|
||||
astrotheme = { -- a table of overrides/changes when applying the astrotheme theme
|
||||
-- Normal = { bg = "#000000" },
|
||||
},
|
||||
},
|
||||
-- Icons can be configured throughout the interface
|
||||
icons = {
|
||||
-- configure the loading of the lsp in the status line
|
||||
LSPLoading1 = "⠋",
|
||||
LSPLoading2 = "⠙",
|
||||
LSPLoading3 = "⠹",
|
||||
LSPLoading4 = "⠸",
|
||||
LSPLoading5 = "⠼",
|
||||
LSPLoading6 = "⠴",
|
||||
LSPLoading7 = "⠦",
|
||||
LSPLoading8 = "⠧",
|
||||
LSPLoading9 = "⠇",
|
||||
LSPLoading10 = "⠏",
|
||||
},
|
||||
},
|
||||
}
|
15
modules/neovim/lua/plugins/luasnip.lua
Normal file
|
@ -0,0 +1,15 @@
|
|||
return {
|
||||
"L3MON4D3/LuaSnip",
|
||||
config = function(plugin, opts)
|
||||
-- include the default astronvim config that calls the setup call
|
||||
require "astronvim.plugins.configs.luasnip" (plugin, opts)
|
||||
|
||||
-- load snippets paths
|
||||
require("luasnip.loaders.from_lua").lazy_load {
|
||||
paths = { vim.fn.stdpath "config" .. "/snippets" },
|
||||
}
|
||||
|
||||
-- extend 'razor' files with html snippets
|
||||
require("luasnip").filetype_extend("razor", { "html" })
|
||||
end,
|
||||
}
|
31
modules/neovim/lua/plugins/mason.lua
Normal file
|
@ -0,0 +1,31 @@
|
|||
-- Customize Mason plugins
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
-- use mason-lspconfig to configure LSP installations
|
||||
{
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
-- overrides `require("mason-lspconfig").setup(...)`
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = nil
|
||||
opts.automatic_installation = false
|
||||
end,
|
||||
},
|
||||
-- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
|
||||
{
|
||||
"jay-babu/mason-null-ls.nvim",
|
||||
-- overrides `require("mason-null-ls").setup(...)`
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = nil
|
||||
opts.automatic_installation = false
|
||||
end,
|
||||
},
|
||||
{
|
||||
"jay-babu/mason-nvim-dap.nvim",
|
||||
-- overrides `require("mason-nvim-dap").setup(...)`
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = nil
|
||||
opts.automatic_installation = false
|
||||
end,
|
||||
},
|
||||
}
|