Compare commits

..

No commits in common. "master" and "refactor" have entirely different histories.

270 changed files with 870 additions and 27395 deletions

View File

@ -0,0 +1,86 @@
# Theme
theme = "catppuccin_frappe"
[keys.normal]
# Navigation
n = "move_char_left" # Maps the 'a' key to the move_char_left command
i = "move_visual_line_down"
e = "move_visual_line_up"
o = "move_char_right"
C-i = "half_page_down"
C-e = "half_page_up"
# Modes
h = "insert_mode"
l = "open_below"
L = "open_above"
# Search
k = "search_next"
K = "search_prev"
C-s = ":w" # Maps Ctrl-s to the typable command :w which is an alias for :write (save file)
C-o = ":open ~/.config/helix/config.toml" # Maps Ctrl-o to opening of the helix config file
C-l = ":open ~/.config/helix/languages.toml"
[keys.normal.g]
P = "goto_previous_buffer"
N = "goto_next_buffer"
n = "goto_line_start"
o = "goto_line_end"
[keys.select]
n = "move_char_left"
i = "move_visual_line_down"
e = "move_visual_line_up"
o = "move_char_right"
[editor]
bufferline = "multiple"
auto-save = true
line-number = "relative"
cursorline = true
color-modes = true
text-width = 120
auto-format = true
[editor.statusline]
left = ["mode", "spinner", "version-control", "file-name"]
mode.normal = "Normal"
mode.insert = "Insert"
mode.select = "Select"
[editor.indent-guides]
render = true
[editor.lsp]
display-messages = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
[editor.whitespace.render]
space = "all"
tab = "all"
tabpad = "all"
newline = "none"
nbsp = "none"
[editor.whitespace.characters]
space = "·"
tab = "⇀"
tabpad = " "
#w = "move_line_up" # Maps the 'w' key move_line_up
#"C-S-esc" = "extend_line" # Maps Ctrl-Shift-Escape to extend_line
#g = { a = "code_action" } # Maps `ga` to show possible code actions
#"ret" = ["open_below", "normal_mode"] # Maps the enter key to open_below then re-enter normal mode

View File

@ -17,5 +17,5 @@ QuietSuccess=true
[PasswordGenerator]
AdditionalChars=
ExcludedChars=
Length=25
Length=20
SpecialChars=false

View File

@ -14,14 +14,13 @@ for_window [class="Telegram"] focus
for_window [app_id="xed"] focus
# default keepass main window to scratch
for_window [app_id="org.keepassxc.KeePassXC"] $floating_window
for_window [app_id="org.keepassxc.KeePassXC" title="KeePassXC"] move to scratchpad #, scratchpad show # default to show
# set floating (nontiling) for apps needing it:
# set floating (nontiling)for apps needing it:
for_window [class="Yad" instance="yad"] floating enable
for_window [app_id="yad"] floating enable
for_window [app_id="blueman-manager"] floating enable, resize set width 40 ppt height 30 ppt
for_window [app_id="mobile"] floating enable, resize set width 200 ppt height 400 ppt
# set floating (nontiling) for special apps:
for_window [class="Xsane" instance="xsane"] floating enable
@ -30,7 +29,6 @@ for_window [class="qt5ct" instance="qt5ct"] floating enable, resize set width 60
for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable
for_window [app_id="pamac-manager"] floating enable, resize set width 80 ppt height 70 ppt
for_window [class="Lxappearance"] floating enable, resize set width 60 ppt height 50 ppt
for_window [class="steam" title="^((?!Steam$).)*"] floating enable
# set floating for window roles
for_window [window_role="pop-up"] floating enable

View File

@ -1,5 +1,5 @@
# Auth with polkit-gnome:
exec lxqt-policykit-agent
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# Desktop notifications
exec mako

View File

@ -145,8 +145,8 @@ exec swayidle -w\
# Move focus to the parent container
bindsym $mod+a focus parent
# bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc
# bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec
bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc
bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec
#
# Scratchpad:
@ -225,7 +225,7 @@ bindsym $mod+r mode "resize"
#
# Screenshots
#
bindsym $mod+Shift+p exec ~/.config/sway/scripts/screenshot.sh clipboard
bindsym $mod+Shift+p exec /usr/share/sway/scripts/grimshot --notify save output
bindsym $mod+p exec ~/.config/sway/scripts/screenshot.sh
#
# Keybindings List

View File

@ -9,5 +9,4 @@
# Wacom Tablet - Example
# input "1386:884:Wacom_Intuos_S_Pad" map_to_output HDMI-A-1
# input "1386:884:Wacom_Intuos_S_Pen" map_to_output HDMI-A-1
output DP-3 resolution 3840x2160@240.084Hz position 0,0
output * adaptive_sync off
output * adaptive_sync on

View File

@ -41,8 +41,8 @@ font pango:Overpass Nerd Font 12
smart_borders on
# Set wallpaper:
exec_always swaybg -i /home/nate/.config/sway/wallpapers/nix-black-4k.png
# exec_always /home/nate/.config/sway/scripts/background.sh
#exec_always swaybg -i /home/nate/.config/sway/wallpapers/ign-0000.png
exec_always /home/nate/.config/sway/scripts/background.sh
# Title format for windows
for_window [shell="xdg_shell"] title_format "%title (%app_id)"
@ -71,28 +71,31 @@ bar {
swaybar_command waybar
}
set $opacity 0.8
set $opacity 0.88
set $floating_window floating enable, resize set width 1030 height 710, opacity 1.0
for_window {
[class=".*"] opacity 1.0
[app_id=".*"] opacity 1.0
[app_id="foot"] opacity $opacity
[app_id="thunar"] opacity $opacity
[class=".*"] opacity $opacity
[app_id=".*"] opacity $opacity
[app_id="firefox"] opacity 1.0
[app_id="corectrl"] opacity 1.0
[app_id="org.keepassxc.KeePassXC"] $floating_window, move to scratchpad, sratchpad show, opacity 1.0
[app_id="pavucontrol"] opacity 1.0
[app_id="oversteer"] opacity 1.0
# Steam
[class="steam_app.*"] inhibit_idle fullscreen; floating enable; border none opacity 1.0
[class="steam"] opacity 1.0
[class="leagueclientux.exe"] opacity 1.0
[class="obsidian"] opacity 1.0
[title="(?:Open|Save|Save New|Open a) (?:File|Folder|As|Scene As)"] $floating_window
# Godot windows
[title="(?:Godot)"] opacity 1.0
[title="(?:Create New|Select Frames|project.godot|node)"] $floating_window
[title="(?:Create Folder|Node Configuration|Warning|Please Confirm)"] $floating_window, resize set height 200
# Aseprite
[title="(?:Aseprite)"] opacity 1.0
# Floating windows
[title="(?:Open|Save|Save New|Open a) (?:File|Folder|As|Scene As)"] $floating_window
[window_role="pop-up"] $floating_window
[window_role="bubble"] $floating_window
[window_role="task_dialog"] $floating_window

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
PID_FILE="background.pid"
WP_LOC="/home/nate/.config/sway/wallpapers"
PREV_WP=""

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/sh
# usage: import-gsettings
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
SCALE_FILE="scale.txt"
DIRNAME="/tmp/$(ls /tmp | grep scale.sh | head -n 1)"

View File

@ -0,0 +1,18 @@
#!/bin/bash
entries="Active Screen Output Area Window"
selected=$(printf '%s\n' $entries | wofi --style=$HOME/.config/wofi/style.widgets.css --conf=$HOME/.config/wofi/config.screenshot | awk '{print tolower($1)}')
case $selected in
active)
/usr/share/sway/scripts/grimshot --notify save active;;
screen)
/usr/share/sway/scripts/grimshot --notify save screen;;
output)
/usr/share/sway/scripts/grimshot --notify save output;;
area)
/usr/share/sway/scripts/grimshot --notify save area;;
window)
/usr/share/sway/scripts/grimshot --notify save window;;
esac

View File

@ -0,0 +1,15 @@
#!/bin/bash
LOC="$1"
# HTML encode string as %20
LOCATION=$(sed -e "s/ /%20/g" <<<"$LOC")
content=$(curl -sS "https://thisdavej.azurewebsites.net/api/weather/current?loc=NewYork&deg=C")
ICON=$(curl -s 'https://wttr.in/?format=1' | sed 's/[+0-9a-cA-Z°-]//g' )
# echo $ICON
TEMP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)"' | sed 's/"//g')
TOOLTIP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)\n\(.skytext)"' | sed 's/"//g')
CLASS=$(echo $content | jq .skytext)
echo '{"text": "'$TEMP'", "tooltip": "'$ICON $TOOLTIP $LOC'", "class": '$CLASS' }'

View File

Before

Width:  |  Height:  |  Size: 221 KiB

After

Width:  |  Height:  |  Size: 221 KiB

View File

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 150 KiB

View File

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 218 KiB

View File

Before

Width:  |  Height:  |  Size: 772 KiB

After

Width:  |  Height:  |  Size: 772 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

Before

Width:  |  Height:  |  Size: 344 KiB

After

Width:  |  Height:  |  Size: 344 KiB

View File

Before

Width:  |  Height:  |  Size: 591 KiB

After

Width:  |  Height:  |  Size: 591 KiB

View File

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

View File

@ -2,13 +2,13 @@
{
"layer": "top",
"position": "top",
"margin-top": 3,
"margin-top": 8,
"margin-left": 10,
"margin-right": 10,
"margin-bottom": 3,
"margin-bottom": 8,
// If height property would be not present, it'd be calculated dynamically
"height": 60,
"height": 30,
"modules-left": [
"custom/launcher",
@ -17,13 +17,6 @@
],
"modules-center": [
"custom/signal",
"custom/steam",
"custom/spotify",
"custom/firefox",
"custom/slack",
"custom/files",
"custom/pomo",
],
"modules-right": [
@ -32,11 +25,12 @@
"memory",
"cpu",
"pulseaudio",
"custom/spotify",
"custom/keyboard-layout",
"battery",
//"custom/PBPbattery",
// "backlight#icon",
// "backlight#value",
"backlight#icon",
"backlight#value",
"clock",
"tray",
//"custom/weather",
@ -86,7 +80,7 @@
"warning": 70,
"critical": 90,
},
"on-click": "foot -e 'htop'",
"on-click": "xfce4-terminal -e 'htop'",
},
"custom/keyboard-layout": {
@ -103,7 +97,7 @@
"memory": {
"interval": 5,
"format": " {}%", // Icon: memory
"on-click": "foot -e 'htop'",
"on-click": "xfce4-terminal -e 'htop'",
"states": {
"warning": 70,
"critical": 90
@ -116,7 +110,7 @@
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
"format-disconnected": "⚠ Disconnected",
"tooltip-format": "{ifname}: {ipaddr}",
"on-click": "foot -e 'nmtui'",
"on-click": "xfce4-terminal -e 'nmtui'",
},
"network#vpn": {
"interface": "tun0",
@ -153,18 +147,18 @@
"scroll-step": 1, // %, can be a float
"format": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon}  {format_source}",
"format-bluetooth-muted": " {icon}  {format_source}",
"format-muted": " {format_source}",
"format-bluetooth-muted": " {icon}  {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": [""]
"default": [""]
},
"on-click": "pavucontrol",
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
@ -179,12 +173,6 @@
"interval": 600,
},
// "custom/temp": {
// "exec": "notify-send \"temp thing\"",
// "interval": "once",
// "signal": 8,
// },
"tray": {
"icon-size": 18,
"spacing":10,
@ -203,54 +191,28 @@
"on-scroll-up": "brightnessctl -c backlight set +1%"
},
"custom/signal": {
"format": "  ",
"on-click": "exec signal",
"tooltip": false,
},
"custom/steam": {
"format": "  ",
"on-click": "exec steam",
"tooltip": false,
"custom/firefox": {
"format": " ",
"on-click": "exec firefox",
"tooltip": false
},
"custom/spotify": {
"format": "  ",
"on-click": "foot -e 'ncspot'",
"tooltip": false,
"format": " ",
"on-click": "xfce4-terminal -e 'ncspot'",
"tooltip": false
},
"custom/firefox": {
"format": " ",
"on-click": "exec firefox",
"tooltip": false,
"custom/terminal": {
"format": " ",
"on-click": "exec xfce4-terminal",
"tooltip": false
},
"custom/slack": {
"format": "  ",
"on-click": "slack",
"tooltip": false,
"exec if": "pgrep slack"
},
"custom/files": {
"format": " 󰉋 ",
"custom/files": {
"format": " ",
"on-click": "exec thunar",
"tooltip": false,
},
"custom/pomo": {
"format": " {} ",
"exec": "/home/nate/source/pomozoro/zig-out/bin/pomozoro",
"return-type": "json",
"on-click": "echo 's' > ~/.local/share/pomozoro/pomopipe",
"on-click-right": "echo 'p' > ~/.local/share/pomozoro/pomopipe",
"on-click-middle": "echo 'r' > ~/.local/share/pomozoro/pomopipe",
// "signal": 8,
"tooltip": false
},
"custom/launcher": {

View File

@ -0,0 +1,21 @@
#!/bin/bash
#simple Shellscript for waybar/i3blocks/polybar on Pinebook pro
#05012020 geri123@gmx.net Gerhard S.
PERCENT=$(cat /sys/class/power_supply/cw2015-battery/capacity)
STATUS=$(cat /sys/class/power_supply/cw2015-battery/status)
case $((
$PERCENT >= 0 && $PERCENT <= 20 ? 1 :
$PERCENT > 20 && $PERCENT <= 40 ? 2 :
$PERCENT > 40 && $PERCENT <= 60 ? 3 :
$PERCENT > 60 && $PERCENT <= 80 ? 4 : 5)) in
#
(1) echo $STATUS:"":$PERCENT%;;
(2) echo $STATUS:"":$PERCENT%;;
(3) echo $STATUS:"":$PERCENT%;;
(4) echo $STATUS:"":$PERCENT%;;
(5) echo $STATUS:"":$PERCENT%;;
esac

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
entries="Default Colemak"

View File

@ -0,0 +1,2 @@
#!/bin/sh
yad --title="EndeavourOS Sway-WM keybindings:" --no-buttons --geometry=400x345-15-400 --list --column=key: --column=description: --column=command: "ESC" "close this app" "" "=" "modkey" "(set mod Mod4)" "+enter" "Terminal" "(xfce4-terminal)" "+d" "Application Menu" "(wofi)" "+p" "Activities" "(wofi)" "+o" "" "Open Broswer" "+n" "" "Open Files" "+q" "close focused app" "(kill)" "[Shift]+Print-key" "screenshot" "(grim)" "+Shift+e" "power-menu" "(wofi)" "+t" "open keybinding helper" "full list"

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash
entries="Logout Suspend Reboot Shutdown"

View File

@ -0,0 +1,13 @@
#!/bin/bash
LOC="$1"
# HTML encode string as %20
LOCATION=$(sed -e "s/ /%20/g" <<<"$LOC")
content=$(curl -sS "https://thisdavej.azurewebsites.net/api/weather/current?loc=$LOCATION&deg=C")
ICON=$(curl -s 'https://wttr.in/?format=1' | sed 's/[+0-9a-cA-Z°-]//g' )
# echo $ICON
TEMP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)"' | sed 's/"//g')
TOOLTIP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)\n\(.skytext)"' | sed 's/"//g')
CLASS=$(echo $content | jq .skytext)
echo '{"text": "'$TEMP'", "tooltip": "'$ICON $TOOLTIP $LOC'", "class": '$CLASS' }'

219
dotfiles/waybar/style.css Normal file
View File

@ -0,0 +1,219 @@
/* =============================================================================
*
* Waybar configuration
*
* Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration
*
* =========================================================================== */
/* -----------------------------------------------------------------------------
* Keyframes
* -------------------------------------------------------------------------- */
/*
Nordic Color Scheme
*/
@define-color nord2 #434c5e;
@define-color nord3 #4c566a;
@define-color nord4 #d8dee9;
@define-color nord8 #88c0d0;
@define-color nord9 #81a1c1;
@define-color nord_cyan #8fbcbb;
@define-color nord_orange #d08770;
@define-color nord_red #bf616a;
@define-color nord_green #a3be8c;
@define-color nord_yellow #ebcb8b;
@keyframes blink-warning {
70% {
color: white;
}
to {
color: white;
background-color: @nord_orange;
}
}
@keyframes blink-critical {
70% {
color: white;
}
to {
color: white;
background-color: @nord_red;
}
}
/* -----------------------------------------------------------------------------
* Base styles
* -------------------------------------------------------------------------- */
/* Reset all styles */
* {
border: none;
border-radius: 0;
min-height: 0;
margin: 1px;
padding: 0;
}
/* The whole bar */
#waybar {
background: transparent;
color: @nord4;
background-color: @nord3;
font-family: Overpass Nerd Font;
font-size: 16px;
border-radius: 15px;
}
/* Every modules */
#battery,
#clock,
#backlight,
#cpu,
#custom-keyboard-layout,
#memory,
#mode,
#custom-weather,
#network,
#pulseaudio,
#temperature,
#tray,
#idle_inhibitor,
#custom-PBPbattery {
padding:0.5rem 0.6rem;
margin: 1px 0px;
}
/* -----------------------------------------------------------------------------
* Modules styles
* -------------------------------------------------------------------------- */
#battery {
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.warning {
color: @nord_orange;
}
#battery.critical {
color: @nord_red;
}
#battery.warning.discharging {
animation-name: blink-warning;
animation-duration: 3s;
}
#battery.critical.discharging {
animation-name: blink-critical;
animation-duration: 2s;
}
#cpu.warning {
color: @nord_orange;
}
#cpu.critical {
color: @nord_red;
}
#memory {
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#memory.warning {
color: @nord_orange;
}
#memory.critical {
color: @nord_red;
animation-name: blink-critical;
animation-duration: 2s;
padding-left:5px;
padding-right:5px;
}
#mode {
background: @nord8;
border-bottom: 3px transparent;
color:white;
margin-left: 5px;
padding: 7px;
}
#network.disconnected {
color: @nord_orange;
}
#pulseaudio {
padding-top:6px;
}
#pulseaudio.muted {
color: @nord_cyan;
}
#temperature.critical {
color: @nord_red;
}
#window {
font-weight: bold;
}
#workspaces {
font-size:13px;
}
#workspaces button {
border-bottom: 3px solid transparent;
margin-bottom: 0px;
padding:0px;
}
#custom-launcher {
color: @nord9;
}
#custom-spotify {
color: @nord_green;
}
#workspaces button.focused {
border-bottom: 3px solid @nord_green;
margin-bottom: 1px;
padding-left:0;
}
#workspaces button.urgent {
border-color: @nord2;
color: @nord_yellow;
}
#custom-power {
margin-left:15px;
margin-right:15px;
font-size:15px;
color: @nord_orange;
}
#custom-launcher {
font-size:15px;
margin-left:15px;
margin-right:10px;
}
#backlight.icon {
padding-right:1px;
font-size: 13px;
}

158
flake.lock generated
View File

@ -1,41 +1,40 @@
{
"nodes": {
"catppuccin": {
"firefox-addons": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1737579274,
"narHash": "sha256-8kBIYfn8TI9jbffhDNS12SdbQHb9ITXflwcgIJBeGqw=",
"owner": "catppuccin",
"repo": "nix",
"rev": "06f0ea19334bcc8112e6d671fd53e61f9e3ad63a",
"type": "github"
},
"original": {
"owner": "catppuccin",
"repo": "nix",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nur",
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"dir": "pkgs/firefox-addons",
"lastModified": 1702612985,
"narHash": "sha256-dnlw/lHJO2Fk/jUHzkz4dYKHF4nQxmHps9Jx8zldoo4=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "ae18cb76153e8dda888a313daac932ba358002ae",
"type": "gitlab"
},
"original": {
"dir": "pkgs/firefox-addons",
"owner": "rycee",
"repo": "nur-expressions",
"type": "gitlab"
}
},
"flake-utils": {
"locked": {
"lastModified": 1629284811,
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
@ -46,43 +45,26 @@
]
},
"locked": {
"lastModified": 1736373539,
"narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=",
"lastModified": 1702538064,
"narHash": "sha256-At5GwJPu2tzvS9dllhBoZmqK6lkkh/sOp2YefWRlaL8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "bd65bc3cde04c16755955630b344bc9e35272c56",
"rev": "0e2e443ff24f9d75925e91b89d1da44b863734af",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1736012469,
"narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1738410390,
"narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=",
"lastModified": 1702312524,
"narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "3a228057f5b619feb3186e986dbe76278d707b6e",
"rev": "a9bf124c46ef298113270b1f84a164865987a91c",
"type": "github"
},
"original": {
@ -92,86 +74,28 @@
"type": "github"
}
},
"nixpkgs_2": {
"nixpkgs-stable": {
"locked": {
"lastModified": 1738435198,
"narHash": "sha256-5+Hmo4nbqw8FrW85FlNm4IIrRnZ7bn0cmXlScNsNRLo=",
"lastModified": 1702346276,
"narHash": "sha256-eAQgwIWApFQ40ipeOjVSoK4TEHVd6nbSd9fApiHIw5A=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f6687779bf4c396250831aa5a32cbfeb85bb07a3",
"rev": "cf28ee258fd5f9a52de6b9865cdb93a1f96d09b7",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1738142207,
"narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_3",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1738362438,
"narHash": "sha256-EO2dVkMVLThWqv4hobEZEZGWBEuH2Z9SYqQDrbLSclU=",
"owner": "nix-community",
"repo": "NUR",
"rev": "95ddad0ff0e67c90314c6ca46324dce5f9a910d2",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"root": {
"inputs": {
"catppuccin": "catppuccin",
"firefox-addons": "firefox-addons",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable",
"nur": "nur"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
"nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable"
}
}
},

129
flake.nix
View File

@ -2,120 +2,61 @@
description = "NixOS system flake.";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
catppuccin.url = "github:catppuccin/nix";
nur.url = "github:nix-community/NUR";
};
outputs = { self, nixpkgs, nixpkgs-unstable, catppuccin, nur, home-manager, ... } @ inputs:
outputs = { self, nixpkgs, nixpkgs-stable, home-manager, ... } @ inputs:
let
inherit (self) outputs;
system = "x86_64-linux";
userName = "nate";
fullName = "Nate Anderson";
email = "n8r@tuta.io";
hostName = "winmax";
desktop = "sway";
gaming = true;
timeZone = "America/Denver";
pkgs = nixpkgs.legacyPackages.${system};
unstablePkgs = import nixpkgs-unstable { system = system; config = { allowUnfree = true; }; };
# pkgs23 = import nixpkgs-23 { system = system; config = { allowUnfree = true; }; };
stablePkgs = nixpkgs-stable.legacyPackages.${system};
in
{
nixosConfigurations = {
luci = nixpkgs.lib.nixosSystem {
nixosConfigurations = {
nixServer = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
./nixos/server_configuration.nix
inputs.home-manager.nixosModules.default
];
};
nixDesktop = nixpkgs.lib.nixosSystem {
# Pass args to desktop configuration
specialArgs = {
inherit inputs outputs timeZone system;
inherit inputs outputs userName hostName desktop timeZone gaming;
};
modules = [
inputs.home-manager.nixosModules.home-manager {
./nixos/desktop_configuration.nix
# Setup home manager
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.luci = import ./luci/modules/home-manager/home.nix;
home-manager.users.${userName} = import ./modules/home-manager/home.nix;
home-manager.extraSpecialArgs = {
inherit inputs outputs;
inherit inputs outputs userName fullName email hostName desktop gaming;
};
}
./luci/default.nix
];
};
nate = nixpkgs.lib.nixosSystem {
# Pass args to desktop configuration
specialArgs = {
inherit inputs outputs timeZone system;
};
modules = [
catppuccin.nixosModules.catppuccin
# Setup home manager
inputs.home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.nate = import ./nate/modules/home-manager/home.nix;
home-manager.extraSpecialArgs = {
inherit inputs outputs unstablePkgs;
};
}
./nate/default.nix
];
};
nate-work = nixpkgs.lib.nixosSystem {
# Pass args to desktop configuration
specialArgs = {
inherit inputs outputs timeZone system;
};
modules = [
catppuccin.nixosModules.catppuccin
# Setup home manager
inputs.home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.nate = {
imports = [
./nate-work/modules/home-manager/home.nix
catppuccin.homeManagerModules.catppuccin
];
};
home-manager.extraSpecialArgs = {
inherit inputs outputs unstablePkgs;
};
}
./nate-work/default.nix
];
};
jaci = nixpkgs.lib.nixosSystem {
# Pass args to desktop configuration
specialArgs = {
inherit inputs outputs timeZone system;
};
modules = [
# Setup home manager
inputs.home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jaci = import ./jaci/modules/home-manager/home.nix;
home-manager.extraSpecialArgs = {
inherit inputs outputs;
};
}
./jaci/default.nix
];
};
scrappy = nixpkgs.lib.nixosSystem {
# Pass args to desktop configuration
specialArgs = {
inherit inputs outputs timeZone system;
};
modules = [
# Setup home manager
inputs.home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.scrappy = import ./scrappy/modules/home-manager/home.nix;
home-manager.extraSpecialArgs = {
inherit inputs outputs unstablePkgs;
};
}
./scrappy/default.nix
];
};
};

View File

@ -1,39 +0,0 @@
{ config, lib, inputs, outputs, pkgs, system, timeZone, ... }:
let
userName = "jaci";
fullName = "Jaci Anderson";
email = "jaci.s.anderson@gmail.com";
hostName = "meowyxlife";
desktop = "kde";
gaming = true;
in
{
imports = [
./desktop-configuration.nix
./nixos/hardware-configuration.nix
];
deskCfg = {
userName = userName;
hostName = hostName;
de = desktop;
installGaming = gaming;
};
# Limit the number of generations to keep
boot.loader.systemd-boot.configurationLimit = 5;
# Perform garbage collection weekly to maintain low disk usage
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 21d";
};
# Optimize storage
# You can also manually optimize the store via:
# nix-store --optimise
# Refer to the following link for more details:
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
nix.settings.auto-optimise-store = true;
}

View File

@ -1,94 +0,0 @@
{ config, lib, inputs, outputs, pkgs, timeZone, system, ... }:
let
supportedDesktops = [ "kde" ];
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
deskCfg = config.deskCfg;
in
{
options.deskCfg = {
de = lib.mkOption {
default = "kde";
type = lib.types.str;
description = "Desktop Environment";
};
userName = lib.mkOption {
type = lib.types.str;
description = "Main username for system";
};
hostName = lib.mkOption {
type = lib.types.str;
description = "Hostname for system";
};
installGaming = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Whether to install gaming software or not";
};
};
imports = [
modules/user/main_user.nix
modules/labwc/labwc_conf.nix
];
config = {
assertions = [
{
assertion = builtins.elem deskCfg.de supportedDesktops;
message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}";
}
];
nixpkgs.overlays = [
inputs.nur.overlay
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# boot.plymouth.enable = true;
networking.hostName = deskCfg.hostName; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = timeZone;
users.users.${deskCfg.userName} = {
isNormalUser = true;
initialPassword = "password";
description = "main user";
shell = pkgs.zsh;
extraGroups = [
"wheel"
"networkmanager"
"corectrl"
deskCfg.userName
"video"
"audio"
];
};
# main_user = {
# enable = true;
# userName = deskCfg.userName;
# isDesktopUser = true;
# };
labwc = {
enable = true;
useNonFree = true;
installGaming = deskCfg.installGaming;
systemPackages = with pkgs; [
libreoffice
];
};
system.stateVersion = "23.11"; # Did you read the comment?
};
}

View File

@ -1,169 +0,0 @@
# Theme
theme = "catppuccin_macchiato"
[keys.normal]
# Navigation
n = "move_char_left" # Maps the 'a' key to the move_char_left command
i = "move_visual_line_down"
e = "move_visual_line_up"
o = "move_char_right"
I = "page_down"
E = "page_up"
# Modes
h = "insert_mode"
H = "insert_at_line_start"
l = "open_below"
L = "open_above"
# Search
k = "search_next"
K = "search_prev"
# Selection
C-s = "split_selection_on_newline"
C-minus = "merge_selections"
C-_ = "merge_consecutive_selections"
"C-;" = "flip_selections"
"C-:" = "ensure_selections_forward"
"C-," = "remove_primary_selection"
C-c = "change_selection_noyank"
C-d = "delete_selection_noyank"
"C-(" = "rotate_selection_contents_backward"
"C-)" = "rotate_selection_contents_forward"
C-x = "shrink_to_line_bounds"
C-J = "join_selections_space"
C-K = "remove_selections"
C-o = "expand_selection"
C-i = "shrink_selection"
C-p = "select_prev_sibling"
C-n = "select_next_sibling"
# Misc
"C-/" = "toggle_comments"
[keys.normal."C-space"]
x = ":wbc!"
s = ":w!" # save file
o = ":config-open"
[keys.normal.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = ["collapse_selection", "extend_to_line_start"]
o = ["collapse_selection", "extend_to_line_end"]
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
[keys.normal.m]
m = ["select_mode", "match_brackets", "normal_mode"]
[keys.select]
n = "extend_char_left"
i = "extend_line_down"
e = "extend_line_up"
o = "extend_char_right"
[keys.select.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = "goto_line_start"
o = "goto_line_end"
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
# Window mode
[keys.normal."C-w"]
h = "hsplit"
C-h = "hsplit"
n = "jump_view_left"
C-n = "jump_view_left"
i = "jump_view_down"
I = "swap_view_down"
C-i = "jump_view_down"
e = "jump_view_up"
E = "swap_view_up"
C-e = "jump_view_up"
o = "jump_view_right"
O = "swap_view_right"
C-o = "jump_view_right"
# Remove old
s = "no_op"
C-s = "no_op"
H = "no_op"
j = "no_op"
J = "no_op"
C-j = "no_op"
k = "no_op"
K = "no_op"
C-k = "no_op"
l = "no_op"
L = "no_op"
C-l = "no_op"
[keys.normal."space"]
h = "hover"
k = "select_references_to_symbol_under_cursor"
[editor]
bufferline = "always"
auto-save = true
line-number = "relative"
cursorline = true
cursorcolumn = true
color-modes = true
text-width = 120
auto-format = true
[editor.statusline]
left = ["mode", "spinner", "version-control"]
center = ["file-name"]
mode.normal = "Normal"
mode.insert = "Insert"
mode.select = "Select"
[editor.indent-guides]
render = true
[editor.lsp]
display-messages = true
display-inlay-hints = false
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
[editor.whitespace.render]
space = "all"
tab = "all"
tabpad = "all"
newline = "none"
nbsp = "none"
[editor.whitespace.characters]
space = "·"
tab = "⇀"
tabpad = " "
#w = "move_line_up" # Maps the 'w' key move_line_up
#"C-S-esc" = "extend_line" # Maps Ctrl-Shift-Escape to extend_line
#g = { a = "code_action" } # Maps `ga` to show possible code actions
#"ret" = ["open_below", "normal_mode"] # Maps the enter key to open_below then re-enter normal mode

View File

@ -1,4 +0,0 @@
# Change dart format to 120 lines
[[language]]
name = "dart"
formatter = {command = "dart", args = ["format", "-l", "120"]}

View File

@ -1,3 +0,0 @@
profile {
output DP-2 position 0,0 mode 1920x1080@165.003006Hz
}

View File

@ -1,21 +0,0 @@
# Example autostart file
# Set background color.
swww init >/dev/null 2>&1 &
swww img ~/.config/labwc/backgrounds/cat1.jpg >/dev/null 2>&1 &
kanshi >/dev/null 2>&1 &
# Launch a panel such as yambar or waybar.
waybar >/dev/null 2>&1 &
# Enable notifications. Typically GNOME/KDE application notifications go
# through the org.freedesktop.Notifications D-Bus API and require a client such
# as mako to function correctly. Thunderbird is an example of this.
mako >/dev/null 2>&1 &
# Setup network applet
nm-applet --indicator >/dev/null 2>&1 &
wl-paste --watch cliphist store &

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

View File

@ -1,14 +0,0 @@
# Allow tearing
# WLR_DRM_NO_ATOMIC=1
# Firefox use wayland
MOZ_ENABLE_WAYLAND=1
##
## Set cursor theme and size. Find system icons themes with:
## `find /usr/share/icons/ -type d -name "cursors"`
##
# XCURSOR_THEME=breeze_cursors
# XCURSOR_THEME=capitaine-cursors
# XCURSOR_SIZE=24

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<openbox_menu>
<!-- Note: for localization support of menu items "client-menu" has to be removed here -->
<menu id="client-menu">
<item label="Minimize">
<action name="Iconify" />
</item>
<item label="Maximize">
<action name="ToggleMaximize" />
</item>
<item label="Fullscreen">
<action name="ToggleFullscreen" />
</item>
<item label="Roll up/down">
<action name="ToggleShade" />
</item>
<item label="Decorations">
<action name="ToggleDecorations" />
</item>
<item label="Always on Top">
<action name="ToggleAlwaysOnTop" />
</item>
<!--
Any menu with the id "workspaces" will be hidden
if there is only a single workspace available.
-->
<menu id="workspaces" label="Workspace">
<item label="Move left">
<action name="SendToDesktop" to="left" />
</item>
<item label="Move right">
<action name="SendToDesktop" to="right" />
</item>
<separator />
<item label="Always on Visible Workspace">
<action name="ToggleOmnipresent" />
</item>
</menu>
<item label="Close">
<action name="Close" />
</item>
</menu>
<menu id="root-menu">
<item label="󰈹 Web browser">
<action name="Execute" command="firefox" />
</item>
<item label="󰓓 Steam">
<action name="Execute" command="steam" />
</item>
<item label="󱃫 Files">
<action name="Execute" command="thunar" />
</item>
<separator />
<item label="Reconfigure">
<action name="Reconfigure" />
</item>
<item label="Logout">
<action name="Exit" />
</item>
<item label="Power Off">
<action name="Execute" command="systemctl -i poweroff" />
</item>
</menu>
<menu id="some-custom-menu">
<item label="Reconfigure">
<action name="Reconfigure" />
</item>
<item label="Exit">
<action name="Exit" />
</item>
</menu>
</openbox_menu>

View File

@ -1,536 +0,0 @@
<?xml version="1.0"?>
<!--
This file contains all supported config elements & attributes with
default values.
-->
<labwc_config>
<core>
<decoration>server</decoration>
<gap>0</gap>
<adaptiveSync>yes</adaptiveSync>
<allowTearing>yes</allowTearing>
<reuseOutputMode>no</reuseOutputMode>
</core>
<!-- Where to place new windows -->
<placement>
<policy>center</policy>
</placement>
<!-- <font><theme> can be defined without an attribute to set all places -->
<theme>
<name>Kawaii</name>
<cornerRadius>16</cornerRadius>
<keepBorder>yes</keepBorder>
<font>
<name>GohuFont 14 Nerd Font</name>
<size>14</size>
<slant>normal</slant>
<weight>bold</weight>
</font>
<!--<font place="ActiveWindow">
<name>sans</name>
<size>10</size>
<slant>normal</slant>
<weight>normal</weight>
</font>
<font place="InactiveWindow">
<name>sans</name>
<size>10</size>
<slant>normal</slant>
<weight>normal</weight>
</font>
<font place="MenuItem">
<name>sans</name>
<size>10</size>
<slant>normal</slant>
<weight>normal</weight>
</font>
<font place="OnScreenDisplay">
<name>sans</name>
<size>10</size>
<slant>normal</slant>
<weight>normal</weight>
</font> -->
</theme>
<!--
Just as for window-rules, 'identifier' relates to app_id for native Wayland
windows and WM_CLASS for XWayland clients.
-->
<windowSwitcher show="yes" preview="yes" outlines="yes">
<fields>
<!-- <field content="type" width="25%" />
<field content="trimmed_identifier" width="25%" /> -->
<field content="identifier" width="25%" />
<field content="title" width="50%" />
</fields>
</windowSwitcher>
<!-- edge strength is in pixels -->
<resistance>
<screenEdgeStrength>20</screenEdgeStrength>
</resistance>
<!-- Show a simple resize and move indicator -->
<resize popupShow="Never" />
<focus>
<followMouse>yes</followMouse>
<followMouseRequiresMovement>yes</followMouseRequiresMovement>
<raiseOnFocus>no</raiseOnFocus>
</focus>
<!-- Set range to 0 to disable window snapping completely -->
<snapping>
<range>1</range>
<topMaximize>yes</topMaximize>
</snapping>
<!--
Workspaces can be configured like this:
<desktops>
<popupTime>1000</popupTime>
<names>
<name>Workspace 1</name>
<name>Workspace 2</name>
<name>Workspace 3</name>
<name>Workspace 4</name>
</names>
</desktops>
Or it can also be configured like this:
<desktops number="4" />
popupTime defaults to 1000 so could be left out.
Set to 0 to completely disable the workspace OSD.
Use GoToDesktop left | right to switch workspaces.
Use SendToDesktop left | right to move windows.
See man labwc-actions for further information.
-->
<desktops>
<popupTime>1000</popupTime>
<names>
<name>Default</name>
</names>
</desktops>
<!--
<margin> can be used to reserve space where new/maximized/tiled
windows will not be placed. Clients using layer-shell protocol reserve
space automatically, so <margin> is only intended for other, specialist
cases.
If output is left empty, the margin will be applied to all outputs.
<margin top="" bottom="" left="" right="" output="" />
-->
<!-- Percent based regions based on output usable area, % char is required -->
<!--
<regions>
<region name="top-left" x="0%" y="0%" height="50%" width="50%" />
<region name="top" x="0%" y="0%" height="50%" width="100%" />
<region name="top-right" x="50%" y="0%" height="50%" width="50%" />
<region name="left" x="0%" y="0%" height="100%" width="50%" />
<region name="center" x="10%" y="10%" height="80%" width="80%" />
<region name="right" x="50%" y="0%" height="100%" width="50%" />
<region name="bottom-left" x="0%" y="50%" height="50%" width="50%" />
<region name="bottom" x="0%" y="50%" height="50%" width="100%" />
<region name="bottom-right" x="50%" y="50%" height="50%" width="50%" />
</regions>
-->
<!--
Keybind actions are specified in labwc-actions(5)
The following keybind modifiers are supported:
W - window/super/logo
A - alt
C - ctrl
S - shift
Use <keyboard><default /> to load all the default keybinds (those listed
below). If the default keybinds are largely what you want, a sensible
approach could be to start the <keyboard> section with a <default />
element, and then (re-)define any special binds you need such as launching
your favourite terminal or application launcher. See rc.xml for an example.
-->
<keyboard>
<numlock>on</numlock>
<layoutScope>global</layoutScope>
<repeatRate>40</repeatRate>
<repeatDelay>400</repeatDelay>
<keybind key="A-Tab">
<action name="NextWindow" />
</keybind>
<keybind key="W-Return">
<action name="Execute" command="foot" />
</keybind>
<keybind key="W-j">
<action name="Execute" command="firefox" />
</keybind>
<keybind key="A-F4">
<action name="Close" />
</keybind>
<keybind key="W-f">
<action name="ToggleMaximize" />
</keybind>
<keybind key="A-Left">
<action name="MoveToEdge" direction="left" />
</keybind>
<keybind key="A-Right">
<action name="MoveToEdge" direction="right" />
</keybind>
<keybind key="A-Up">
<action name="MoveToEdge" direction="up" />
</keybind>
<keybind key="A-Down">
<action name="MoveToEdge" direction="down" />
</keybind>
<keybind key="W-Left">
<action name="SnapToEdge" direction="left" />
</keybind>
<keybind key="W-Right">
<action name="SnapToEdge" direction="right" />
</keybind>
<keybind key="W-Up">
<action name="SnapToEdge" direction="up" />
</keybind>
<keybind key="W-Down">
<action name="SnapToEdge" direction="down" />
</keybind>
<keybind key="A-Space">
<action name="ShowMenu" menu="client-menu" />
</keybind>
<keybind key="XF86_AudioLowerVolume">
<action name="Execute" command="amixer sset Master 5%-" />
</keybind>
<keybind key="XF86_AudioRaiseVolume">
<action name="Execute" command="amixer sset Master 5%+" />
</keybind>
<keybind key="XF86_AudioMute">
<action name="Execute" command="amixer sset Master toggle" />
</keybind>
<keybind key="XF86_MonBrightnessUp">
<action name="Execute" command="brightnessctl set +10%" />
</keybind>
<keybind key="XF86_MonBrightnessDown">
<action name="Execute" command="brightnessctl set 10%-" />
</keybind>
<!-- SnapToRegion via W-Numpad -->
<!--
<keybind key="W-KP_7">
<action name="SnapToRegion" region="top-left" />
</keybind>
<keybind key="W-KP_8">
<action name="SnapToRegion" region="top" />
</keybind>
<keybind key="W-KP_9">
<action name="SnapToRegion" region="top-right" />
</keybind>
<keybind key="W-KP_4">
<action name="SnapToRegion" region="left" />
</keybind>
<keybind key="W-KP_5">
<action name="SnapToRegion" region="center" />
</keybind>
<keybind key="W-KP_6">
<action name="SnapToRegion" region="right" />
</keybind>
<keybind key="W-KP_1">
<action name="SnapToRegion" region="bottom-left" />
</keybind>
<keybind key="W-KP_2">
<action name="SnapToRegion" region="bottom" />
</keybind>
<keybind key="W-KP_3">
<action name="SnapToRegion" region="bottom-right" />
</keybind>
-->
</keyboard>
<!--
Multiple <mousebind> can exist within one <context>
Multiple <actions> can exist within one <mousebind>
Currently, the only openbox-action not supported is "Unshade"
Use <mouse><default /> to load all the default mousebinds (those listed
below). If the default mousebinds are largely what you want, a sensible
approach could be to start the <mouse> section with a <default />
element, and then (re-)define any special binds you need such as launching
a custom menu when right-clicking on your desktop. See rc.xml for an
example.
-->
<mouse>
<!-- time is in ms -->
<doubleClickTime>500</doubleClickTime>
<scrollFactor>1.0</scrollFactor>
<context name="Frame">
<mousebind button="A-Left" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="A-Left" action="Drag">
<action name="Move" />
</mousebind>
<mousebind button="A-Right" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="A-Right" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="Top">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="Left">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="Right">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="Bottom">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="TRCorner">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="BRCorner">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="TLCorner">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="BLCorner">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="TitleBar">
<mousebind button="Left" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind direction="Up" action="Scroll">
<action name="Unshade" />
<action name="Focus" />
</mousebind>
<mousebind direction="Down" action="Scroll">
<action name="Unfocus" />
<action name="Shade" />
</mousebind>
</context>
<context name="Title">
<mousebind button="Left" action="Drag">
<action name="Move" />
</mousebind>
<mousebind button="Left" action="DoubleClick">
<action name="ToggleMaximize" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="ShowMenu" menu="client-menu" />
</mousebind>
</context>
<context name="Maximize">
<mousebind button="Left" action="Click">
<action name="ToggleMaximize" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="ToggleMaximize" direction="horizontal" />
</mousebind>
<mousebind button="Middle" action="Click">
<action name="ToggleMaximize" direction="vertical" />
</mousebind>
</context>
<context name="WindowMenu">
<mousebind button="Left" action="Click">
<action name="ShowMenu" menu="client-menu" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="ShowMenu" menu="client-menu" />
</mousebind>
</context>
<context name="Iconify">
<mousebind button="Left" action="Click">
<action name="Iconify" />
</mousebind>
</context>
<context name="Close">
<mousebind button="Left" action="Click">
<action name="Close" />
</mousebind>
</context>
<context name="Client">
<mousebind button="Left" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="Middle" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="Right" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
</context>
<context name="Root">
<mousebind button="Left" action="Press">
<action name="ShowMenu" menu="root-menu" />
</mousebind>
<mousebind button="Right" action="Press">
<action name="ShowMenu" menu="root-menu" />
</mousebind>
<mousebind button="Middle" action="Press">
<action name="ShowMenu" menu="root-menu" />
</mousebind>
<mousebind direction="Up" action="Scroll">
<action name="GoToDesktop" to="left" wrap="yes" />
</mousebind>
<mousebind direction="Down" action="Scroll">
<action name="GoToDesktop" to="right" wrap="yes" />
</mousebind>
</context>
</mouse>
<!--
Direct cursor movement to a specified output. If the compositor is
running in nested mode, this does not take effect.
-->
<touch mapToOutput="" />
<!--
The tablet cursor movement can be restricted to a single output.
If output is left empty or the output does not exists, the tablet
will span all outputs.
The tablet orientation can be changed in 90 degree steps, thus
*rotate* can be set to [0|90|180|270]. Rotation will be applied
after applying tablet area transformation.
The active tablet area can be specified by setting the *top*/*left*
coordinate (in mm) and/or *width*/*height* (in mm). If width or
height are omitted or default (0.0), width/height will be set to
the remaining width/height seen from top/left.
Tablet buttons emulate regular mouse buttons. The tablet *button* can
be set to any of [Tip|Stylus|Stylus2|Stylus3|Pad|Pad2|Pad3|..|Pad9].
Valid *to* mouse buttons are [Left|Right|Middle].
-->
<tablet mapToOutput="" rotate="0">
<!-- Active area dimensions are in mm -->
<area top="0.0" left="0.0" width="0.0" height="0.0" />
<map button="Tip" to="Left" />
<map button="Stylus" to="Right" />
<map button="Stylus2" to="Middle" />
</tablet>
<!--
The *category* attribute is optional and can be set to touch, touchpad,
non-touch, default or the name of a device. You can obtain device names by
running *libinput list-devices* as root or member of the input group.
Tap is set to *yes* be default. All others are left blank in order to use
device defaults.
All values are [yes|no] except for:
- pointerSpeed [-1.0 to 1.0]
- accelProfile [flat|adaptive]
- tapButtonMap [lrm|lmr]
-->
<libinput>
<device category="default">
<naturalScroll></naturalScroll>
<leftHanded></leftHanded>
<pointerSpeed></pointerSpeed>
<accelProfile></accelProfile>
<tap>yes</tap>
<tapButtonMap></tapButtonMap>
<tapAndDrag></tapAndDrag>
<dragLock></dragLock>
<middleEmulation></middleEmulation>
<disableWhileTyping></disableWhileTyping>
</device>
</libinput>
<!--
# Window Rules
# - Criteria can consist of 'identifier' or 'title' or both (in which
# case AND logic is used).
# - 'identifier' relates to app_id for native Wayland windows and
# WM_CLASS for XWayland clients.
# - Criteria can also contain `matchOnce="true"` meaning that the rule
# must only apply to the first instance of the window with that
# particular 'identifier' or 'title'.
# - Matching against patterns with '*' (wildcard) and '?' (joker) is
# supported. Pattern matching is case-insensitive.
<windowRules>
<windowRule identifier="*"><action name="Maximize"/></windowRule>
<windowRule identifier="foo" serverDecoration="yes"/>
<windowRule title="bar" serverDecoration="yes"/>
<windowRule identifier="baz" title="quax" serverDecoration="yes"/>
</windowRules>
# Example below for `lxqt-panel` and `pcmanfm-qt \-\-desktop`
# where 'matchOnce' is used to avoid applying rule to the panel
# configuration window with the same 'app_id'.
<windowRules>
<windowRule identifier="lxqt-panel" matchOnce="true">
<skipTaskbar>yes</skipTaskbar>
<action name="MoveTo" x="0" y="0" />
<action name="ToggleAlwaysOnTop"/>
</windowRule>
<windowRule title="pcmanfm-desktop*">
<skipTaskbar>yes</skipTaskbar>
<skipWindowSwitcher>yes</skipWindowSwitcher>
<fixedPosition>yes</fixedPosition>
<action name="MoveTo" x="0" y="0" />
<action name="ToggleAlwaysOnBottom"/>
</windowRule>
<windowRule identifier="org.qutebrowser.qutebrowser">
<action name="ResizeTo" width="1024" y="800" />
<action name="AutoPlace"/>
</windowRule>
</windowRules>
-->
</labwc_config>

View File

@ -1,70 +0,0 @@
# This file contains all themerc options with default values
#
# System-wide and local themes can be overridden by creating a copy of this
# file and renaming it to $HOME/.config/labwc/themerc-override. Be careful
# though - if you only want to override a small number of specific options,
# make sure all other lines are commented out or deleted.
# general
border.width: 3
padding.height: 3
# The following options has no default, but fallbacks back to
# font-height + 2x padding.height if not set.
# titlebar.height:
# window border
window.active.border.color: #ffe6f2
window.inactive.border.color: #f6f5f4
# ToggleKeybinds status indicator
window.active.indicator.toggled-keybind.color: #ff0000
# window titlebar background
window.active.title.bg.color: #ffe6f2
window.inactive.title.bg.color: #f6f5f4
# window titlebar text
window.active.label.text.color: #000000
window.inactive.label.text.color: #000000
window.label.text.justify: center
# window buttons
window.active.button.unpressed.image.color: #000000
window.inactive.button.unpressed.image.color: #000000
# Note that "menu", "iconify", "max", "close" buttons colors can be defined
# individually by inserting the type after the button node, for example:
#
# window.active.button.iconify.unpressed.image.color: #333333
# menu
menu.overlap.x: 0
menu.overlap.y: 0
menu.width.min: 20
menu.width.max: 200
menu.items.bg.color: #ffe6f2
menu.items.text.color: #330066
menu.items.active.bg.color: #ffffcc
menu.items.active.text.color: #330066
menu.items.padding.x: 12
menu.items.padding.y: 6
menu.separator.width: 1
menu.separator.padding.width: 6
menu.separator.padding.height: 3
menu.separator.color: #8c1aff
# on screen display (window-cycle dialog)
osd.bg.color: #ffe6f2
osd.border.color: #ffffcc
osd.border.width: 3
osd.label.text.color: #330066
osd.window-switcher.width: 600
osd.window-switcher.padding: 4
osd.window-switcher.item.padding.x: 10
osd.window-switcher.item.padding.y: 1
osd.window-switcher.item.active.border.width: 2
osd.workspace-switcher.boxes.width: 20
osd.workspace-switcher.boxes.height: 20

View File

@ -1,88 +0,0 @@
{
"modules-left": [
"custom/launcher",
"wlr/taskbar"
],
"modules-center": [
"clock",
],
"modules-right": [
"tray",
"pulseaudio",
"custom/spotify",
"network",
"memory",
"cpu",
"custom/power",
],
// Modules
"wlr/taskbar": {
"format": "{icon} {name}",
"on-click": "minimize-raise",
},
"idle_inhibitor": {
"format": "{icon} ",
"format-icons":{
"activated": "",
"deactivated": ""
}
},
"clock": {
"interval": 10,
"format-alt": " {:%e %b %Y}", // Icon: calendar-alt
"format": "󰥔 {:%I:%M %p}",
},
"cpu": {
"interval": 5,
"format": " {usage}%",
"states": {
"warning": 70,
"critical": 90,
},
"on-click": "foot -e 'htop'",
},
"memory": {
"interval": 5,
"format": " {}%", // Icon: memory
"on-click": "foot -e 'htop'",
"states": {
"warning": 70,
"critical": 90
}
},
"pulseaudio": {
"scroll-step": 1, // %, can be a float
"format": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon}  {format_source}",
"format-bluetooth-muted": " {icon}  {format_source}",
"format-muted": "婢 {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "וֹ",
"headset": "  ",
"phone": "",
"portable": "",
"car": "",
"default": [""]
},
"on-click": "pavucontrol",
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -2%",
},
"tray": {
"icon-size": 18,
"spacing":10,
},
"custom/spotify": {
"format": " ",
"on-click": "spot",
"tooltip": false
},
"custom/launcher": {
"format": "  ",
"on-click": "nwg-drawer",
"tooltip": false
},
}

View File

@ -1,100 +0,0 @@
@define-color celadon #b0f2b4;
@define-color celeste #baf2e9;
@define-color thistle #dfc2f2;
@define-color english_violet #51344d;
@define-color indian_red #c97064;
@define-color black_olive #1f271b;
@define-color egg_shell #f8f1dd;
* {
border: none;
border-radius: 0;
margin: 0;
padding: 0;
color: @egg_shell;
font-family: "GohuFont 14 Nerd Font";
font-size: 16px;
font-weight: normal;
}
/* The whole bar */
#waybar {
background: transparent;
background-color: transparent;
}
#taskbar {
background: transparent;
color: @egg_shell;
}
#taskbar button {
padding-left: 3px;
padding-right: 3px;
margin-left: 3px;
margin-right: 3px;
color: transparent;
border-bottom: 2px solid;
}
#taskbar button.active {
color: @celeste;
}
.modules-left,
.modules-right,
.modules-center {
margin: 8px 8px 1px 8px;
background: transparent;
color: @egg_shell;
background-color: @english_violet;
border-radius: 25px;
padding: 0px 10px 0px 10px;
}
/* Every modules */
#clock,
#cpu,
#custom-spotify,
#memory,
#network,
#pulseaudio,
#taskbar {
padding: 0.5rem 0.6rem;
margin: 1px 0px;
}
/* -----------------------------------------------------------------------------
* Modules styles
* -------------------------------------------------------------------------- */
#clock {
min-width: 140px;
}
#cpu.warning,
#cpu.critical,
#memory.warning,
#memory.critical,
#network.disconnected {
color: @indian_red;
}
#pulseaudio {
padding-top: 6px;
}
#pulseaudio.muted {
color: @celeste;
}
#custom-spotify {
color: @celadon;
}
#custom-power {
margin-left: 15px;
margin-right: 15px;
font-size: 15px;
color: @indian_red;
}

View File

@ -1,66 +0,0 @@
{lib, config, pkgs, inputs, ...}:
let
cfg = config.firefoxApp;
in
{
# imports = [
# inputs.nur.hmModules.nur
# ];
options.firefoxApp = {
enable = lib.mkEnableOption "enable firefox browser";
};
config = lib.mkIf cfg.enable {
programs.firefox = {
enable = true;
profiles = {
default = {
id = 0;
name = "default";
isDefault = true;
extensions = with pkgs; [
nur.repos.rycee.firefox-addons.darkreader
nur.repos.rycee.firefox-addons.keepassxc-browser
nur.repos.crazazy.firefox-addons.ublock-origin
];
search = {
# Replace default firefox search engine config with this one
force = true;
default = "Startpage";
engines = {
"Startpage" = {
urls = [{
template = "https://www.startpage.com/sp/search?query={searchTerms}";
}];
};
};
};
settings = {
"browser.startup.blankWindow" = true;
"browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064";
"browser.search.region" = "US";
"browser.search.isUS" = true;
"distribution.searchplugins.defaultLocale" = "en-US";
"general.useragent.locale" = "en-US";
"extensions.activeThemeID" = "{831b8843-7251-4306-9521-e688f18b4aeb}";
"privacy.trackingprotection.enable" = true;
"privacy.trackingprotection.emailtracking.enable" = true;
"privacy.trackingprotection.socialtracking.enable" = true;
"privacy.clearOnShutdown.cookies" = true;
"browser.safebrowsing.passwords.enabled" = false;
"browser.migrate.interactions.passwords" = false;
"pref.privacy.disable_button.view_passwords" = false;
"signon.rememberSignon" = false;
"extensions.formautofill.creditCards.enabled" = false;
"extensions.formautofill.addresses.enabled" = false;
# "browser.bookmarks.showMobileBookmarks" = true;
# "browser.newtabpage.pinned" = [{
# title = "NixOS";
# url = "https://nixos.org";
# }];
};
};
};
};
};
}

View File

@ -1,135 +0,0 @@
{ inputs, outputs, lib, config, pkgs, ... }:
let
userName = "jaci";
fullName = "Jaci Anderson";
email = "jaci.s.anderson@gmail.com";
in
{
# nixpkgs.overlays = [
# inputs.nur.overlay
# ];
# nixpkgs.config.allowUnfree = true;
# inputs.nixpkgs-stable.config.allowUnfree = true;
imports = [
../apps/firefox/firefox.nix
];
home.username = userName;
home.homeDirectory = "/home/${userName}";
programs.home-manager.enable = true;
home.stateVersion = "23.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
firefoxApp.enable = true;
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
helix
mangohud
wine-wayland
webcord
mumble
bat
duf
fd
fzf
lsd
ripgrep
tre-command
gtop
imv
mpv
gimp
# Install fonts
(nerdfonts.override { fonts = [ "Hermit" "Gohu" ]; })
# Style
catppuccin-kvantum
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
];
home.file."${config.xdg.configHome}" = {
source = ../../dotfiles;
recursive = true;
};
home.sessionVariables = {
EDITOR = "hx";
};
# Git setup
programs.git = {
enable = true;
userEmail = email;
userName = fullName;
};
# Zsh setup
programs.zsh = {
enable = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "half-life";
};
initExtra = ''
alias ask="nix-shell -p python310Packages.openai --run 'python ~/source/python/chat.py'"
fzf_projects() {
DIR=`
fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \
xargs dirname | \
sed 's|$HOME||g' | \
sort | \
uniq | \
fzf --preview 'ls $HOME/{}/README.md 2>/dev/null && bat $HOME/{}/README.md || printf "No README.md file found in this directory\n%s" {}' --preview-window=top | \
xargs printf "$HOME/%s/"
`
cd $DIR
}
alias p="fzf_projects source/"
### Busykid Bash Functions
'';
};
#
# Theming qt and gnome apps
#
qt = {
enable = true;
platformTheme.name = "qtct";
style.name = "kvantum";
};
gtk = {
enable = true;
cursorTheme = {
package = pkgs.catppuccin-cursors.latteLavender;
name = "Catppuccin-Latte-Lavender-Cursors";
};
iconTheme = {
package = pkgs.catppuccin-papirus-folders;
name = "Papirus-Light";
};
theme = {
name = "catppuccin-latte-lavender-compact+rimless";
package = pkgs.catppuccin-gtk.override {
accents = [ "lavender" ];
size = "compact";
tweaks = [ "rimless" ];
variant = "latte";
};
};
};
}

View File

@ -1,161 +0,0 @@
{ lib, config, pkgs, ... }:
{
options.labwc = {
enable = lib.mkEnableOption "Enable labwc window manager.";
useNonFree = lib.mkOption {
default = false;
example = true;
description = "Whether to enable non-free software in the labwc config";
};
installGaming = lib.mkOption {
default = false;
example = true;
description = "Whether to install gaming software on the system.";
};
systemPackages = lib.mkOption {
default = [];
description = "Add any additional packages desired. Merged with labwc defaults.";
};
};
###
## Configuration
###
config = lib.mkIf config.labwc.enable {
programs.dconf.enable = true;
nixpkgs.config.allowUnfree = config.labwc.useNonFree;
# For R2ModMan
# nixpkgs.config.permittedInsecurePackages = [
# "electron-25.9.0"
# ];
###
## XDG portal setup
###
xdg.portal = {
config = {
common = {
default = [
"wlr"
];
};
};
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
wlr.enable = true;
enable = true;
};
xdg.sounds.enable = true;
###
## System Packages
###
environment.systemPackages = with pkgs; lib.lists.flatten [
[
bash
foot
git
glib
grim
sway-contrib.grimshot
ghostscript
labwc
libnotify
kanshi
mako
spot
networkmanagerapplet
nwg-dock
nwg-drawer
nwg-look
pavucontrol
slurp
swaylock
swayidle
swww
wl-clipboard
cliphist
waybar
wdisplays
xdg-utils
zsh
]
config.labwc.systemPackages
# (lib.mkIf config.labwc.installGaming [
# pkgs.lutris
# ])
];
# Thunar config
programs.thunar = {
enable = true;
plugins = with pkgs.xfce; [
thunar-archive-plugin
thunar-volman
];
};
programs.file-roller.enable = true;
programs.xfconf.enable = true;
programs.zsh.enable = true;
programs.steam.enable = config.labwc.installGaming;
programs.gamemode.enable = true;
###
## Services
###
# Printing
services.flatpak.enable = true;
services.printing.enable = true;
services.printing.drivers = [ pkgs.brlaser ];
services.gvfs.enable = true; # thunar functionalities
services.openssh.enable = true;
services.dbus.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
###
## Misc
###
# sound.enable = true;
# Necessary for home-manager labwc setup
security.polkit.enable = true;
services.greetd = {
enable = true;
settings = rec {
initial_session = {
command = "${pkgs.labwc}/bin/labwc";
user = "jaci";
};
default_session = initial_session;
};
};
services.xserver.videoDrivers = [ "amdgpu" ];
# Enable HIP
systemd.tmpfiles.rules = [
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
];
hardware.graphics = {
# Mesa
enable = true;
enable32Bit = true;
# Rocm support
extraPackages = with pkgs; [
rocmPackages.clr.icd
];
};
};
}

View File

@ -1,3 +0,0 @@
- Need a way to access files
- Remove boot logs and grub menu
- Cant open steam and then open a web browser

View File

@ -1,36 +0,0 @@
{ ... }:
let
userName = "luci";
email = "luci@fosscat.com";
hostName = "luci";
in
{
imports = [
./nixos/hardware-configuration.nix
../shared/nix-gc.nix
../shared/server-configuration.nix
];
serverConfig = {
userName = userName;
hostName = hostName;
hostId = "09e1d908";
email = email;
sshEnable = true;
nfsEnable = true;
nfsRoot = "/nfs_export";
nfsExports = [ "/kage" ];
nfsIpExport = "192.168.1.1/24";
syncthingEnable = true;
caldavEnable = true;
};
# deskCfg = {
# userName = userName;
# hostName = hostName;
# de = desktop;
# installGaming = gaming;
# };
nixGc.enable = true;
}

View File

@ -1,166 +0,0 @@
# Theme
theme = "catppuccin_macchiato"
[keys.normal]
# Navigation
n = "move_char_left" # Maps the 'a' key to the move_char_left command
i = "move_visual_line_down"
e = "move_visual_line_up"
o = "move_char_right"
I = "page_down"
E = "page_up"
# Modes
h = "insert_mode"
H = "insert_at_line_start"
l = "open_below"
L = "open_above"
# Search
k = "search_next"
K = "search_prev"
# Selection
C-s = "split_selection_on_newline"
C-minus = "merge_selections"
C-_ = "merge_consecutive_selections"
"C-;" = "flip_selections"
"C-:" = "ensure_selections_forward"
"C-," = "remove_primary_selection"
C-c = "change_selection_noyank"
C-d = "delete_selection_noyank"
"C-(" = "rotate_selection_contents_backward"
"C-)" = "rotate_selection_contents_forward"
C-x = "shrink_to_line_bounds"
C-J = "join_selections_space"
C-K = "remove_selections"
C-o = "expand_selection"
C-i = "shrink_selection"
C-p = "select_prev_sibling"
C-n = "select_next_sibling"
# Misc
"C-/" = "toggle_comments"
[keys.normal."C-space"]
x = ":wbc!"
s = ":w!" # save file
o = ":config-open"
[keys.normal.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = ["collapse_selection", "extend_to_line_start"]
o = ["collapse_selection", "extend_to_line_end"]
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
[keys.normal.m]
m = ["select_mode", "match_brackets", "normal_mode"]
[keys.select]
n = "extend_char_left"
i = "extend_line_down"
e = "extend_line_up"
o = "extend_char_right"
[keys.select.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = "goto_line_start"
o = "goto_line_end"
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
# Window mode
[keys.normal."C-w"]
h = "hsplit"
C-h = "hsplit"
n = "jump_view_left"
C-n = "jump_view_left"
i = "jump_view_down"
I = "swap_view_down"
C-i = "jump_view_down"
e = "jump_view_up"
E = "swap_view_up"
C-e = "jump_view_up"
o = "jump_view_right"
O = "swap_view_right"
C-o = "jump_view_right"
# Remove old
s = "no_op"
C-s = "no_op"
H = "no_op"
j = "no_op"
J = "no_op"
C-j = "no_op"
k = "no_op"
K = "no_op"
C-k = "no_op"
l = "no_op"
L = "no_op"
C-l = "no_op"
[keys.normal."space"]
h = "hover"
k = "select_references_to_symbol_under_cursor"
[editor]
bufferline = "multiple"
auto-save = true
line-number = "relative"
cursorline = true
color-modes = true
text-width = 120
auto-format = true
[editor.statusline]
left = ["mode", "spinner", "version-control", "file-name"]
mode.normal = "Normal"
mode.insert = "Insert"
mode.select = "Select"
[editor.indent-guides]
render = true
[editor.lsp]
display-messages = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
[editor.whitespace.render]
space = "all"
tab = "all"
tabpad = "all"
newline = "none"
nbsp = "none"
[editor.whitespace.characters]
space = "·"
tab = "⇀"
tabpad = " "
#w = "move_line_up" # Maps the 'w' key move_line_up
#"C-S-esc" = "extend_line" # Maps Ctrl-Shift-Escape to extend_line
#g = { a = "code_action" } # Maps `ga` to show possible code actions
#"ret" = ["open_below", "normal_mode"] # Maps the enter key to open_below then re-enter normal mode

View File

@ -1,93 +0,0 @@
{ lib, config, pkgs, ... }:
let
userName = "luci";
fullName = "Luci NAS";
email = "luci@fosscat.com";
in
{
home.username = userName;
home.homeDirectory = "/home/${userName}";
programs.home-manager.enable = true;
home.stateVersion = "23.11"; # Please read the comment before changing.
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
helix
jq
#
# Better Unix
#
bat
duf
fd
fzf
lsd
ripgrep
tre-command
gtop
htop
neofetch
# Normies
unzip
imv
mpv
ffmpeg
];
home.file."${config.xdg.configHome}" = {
source = ../../dotfiles;
recursive = true;
};
# Copy radicale pass file
home.file."${config.xdg.configHome}/radicale" = {
source = ../radicale;
recursive = true;
};
home.sessionVariables = {
EDITOR = "hx";
};
# Git setup
programs.git = {
enable = true;
userEmail = email;
userName = fullName;
};
programs = {
direnv = {
enable = true;
enableZshIntegration = true; # see note on other shells below
nix-direnv.enable = true;
};
bash.enable = true; # see note on other shells below
};
# Zsh setup
programs.zsh = {
enable = true;
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "dieter";
};
initExtra = ''
eval "$(direnv hook zsh)"
alias ls="lsd"
alias l="lsd --almost-all --long"
alias llm="lsd --timesort --long"
alias lS="lsd --oneline --classic"
alias lt="lsd --tree --depth=2"
alias grep="rg"
'';
};
}

View File

@ -1 +0,0 @@
n8r:$apr1$HpSAv/EE$pCDM0qP2JJIY0B5aUXjS30

View File

@ -1,55 +0,0 @@
# 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 = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ "zfs" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.supportedFilesystems = [ "zfs" ];
boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
boot.zfs.forceImportRoot = false;
fileSystems."/" =
{ device = "/dev/disk/by-label/NIXROOT";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-label/NIXBOOT";
fsType = "vfat";
};
fileSystems."/nfs_export/kage" =
{ device = "zdata/kage";
fsType = "zfs";
};
# change ownership of kage to be open
systemd.tmpfiles.rules = [
"d /nfs_export/kage 0777 kage users - -"
];
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.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
# networking.interfaces.enp6s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,126 @@
{ inputs, outputs, lib, config, pkgs, userName, fullName, email, hostName, desktop, gaming, ... }:
{
# Home Manager needs a bit of information about you and the paths it should
# manage.
#
# nixpkgs.config.allowUnfree = true;
# inputs.nixpkgs-stable.config.allowUnfree = true;
home.username = userName;
home.homeDirectory = "/home/${userName}";
programs.home-manager.enable = true;
home.stateVersion = "23.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
bat
inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl
fd
firefox
foot
fzf
htop
kakoune
keepassxc
libnotify
mako
networkmanagerapplet
obs-studio
signal-desktop
# steam
waybar
wofi
xfce.thunar
# Install fonts
(nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; })
overpass
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# TODO not working firefox plugins
# extensions = with inputs.firefox-addons.packages.${pkgs.system}; [ ublock-origin bitwarden ];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file."${config.xdg.configHome}" = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
source = ../../dotfiles;
recursive = true;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/nate/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "kak";
};
wayland.windowManager.sway = {
enable = true;
# config = rec {
# modifier = "Mod4";
# terminal = "foot";
# # startup = [
# # {command = "firefox";}
# # ];
# };
};
# kdeconnect setup
# services.kdeconnect = {
# enable = true;
# indicator = true;
# };
# Git setup
programs.git = {
enable = true;
userEmail = email;
userName = fullName;
};
# Zsh setup
programs.zsh = {
enable = true;
#history = {
# Size = 10000;
#};
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "half-life";
};
};
}

117
modules/sway/sway_conf.nix Normal file
View File

@ -0,0 +1,117 @@
{ lib, config, pkgs, ... }:
{
options.swaywm = {
enable = lib.mkEnableOption "Enable sway window manager.";
useNonFree = lib.mkOption {
default = false;
example = true;
description = "Whether to enable non-free software in the sway config";
};
installGaming = lib.mkOption {
default = false;
example = true;
description = "Whether to install gaming software on the system.";
};
systemPackages = lib.mkOption {
default = [];
description = "Add any additional packages desired. Merged with sway defaults.";
};
};
config = lib.mkIf config.swaywm.enable {
nixpkgs.config.allowUnfree = config.swaywm.useNonFree;
###
## XDG portal setup
###
xdg.portal = {
config = {
common = {
default = [
"wlr"
];
};
};
extraPortals = with pkgs; [
# xdg-desktop-portal-kde
xdg-desktop-portal-gtk
];
wlr.enable = true;
enable = true;
};
xdg.sounds.enable = true;
###
## System Packages
###
environment.systemPackages = with pkgs; lib.lists.flatten [
[
git
glib # gsettings
grim
pavucontrol
slurp
swaylock
swayidle
wl-clipboard
xdg-utils
zsh
# Add to gaming only installs
lutris
wine-wayland
# Video utils
davinci-resolve-studio
imv
mpv
gimp
]
config.swaywm.systemPackages
# (lib.mkIf config.swaywm.installGaming [
# pkgs.lutris
# ])
];
programs.zsh.enable = true;
programs.steam.enable = config.swaywm.installGaming;
###
## Services
###
services.openssh.enable = true;
services.dbus.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
# kdeconnect setup
programs.kdeconnect.enable = true;
# Firewall
# networking.firewall = {
# enable = true;
# allowedTCPPortRanges = [
# {from = 1714; to = 1764;} # KDE Connnect
# ];
# allowedUDPPortRanges = [
# {from = 1714; to = 1764;} # KDE Connnect
# ];
# };
###
## Misc
###
sound.enable = true;
# Necessary for home-manager sway setup
security.polkit.enable = true;
hardware.opengl = {
enable = true;
driSupport = true;
};
};
}

View File

@ -44,8 +44,6 @@ in
cfg.userName
"video"
"audio"
# For android
"adbusers"
];
})
];

View File

@ -1,52 +0,0 @@
{ config, lib, inputs, outputs, pkgs, system, timeZone, ... }:
let
userName = "nate";
fullName = "Nate Anderson";
email = "nate.anderson@vasion.com";
hostName = "nate-vasion";
desktop = "sway";
gaming = true;
in
{
imports = [
./desktop-configuration.nix
./nixos/hardware-configuration.nix
];
deskCfg = {
userName = userName;
hostName = hostName;
de = desktop;
installGaming = gaming;
};
# Limit the number of generations to keep
boot.loader.systemd-boot.configurationLimit = 5;
# Perform garbage collection weekly to maintain low disk usage
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 14d";
};
### TODO add these to security.nix file
# Auto Update System
system.autoUpgrade = {
enable = true;
flake = inputs.self.outPath;
flags = [
"--update-input"
"nixpkgs"
"nixpkgs-unstable"
"-L" # print build logs
];
dates = "05:00";
randomizedDelaySec = "45min";
};
services.clamav.daemon.enable = true;
services.clamav.scanner.enable = true;
nix.settings.auto-optimise-store = true;
}

View File

@ -1,91 +0,0 @@
{ config, lib, inputs, outputs, pkgs, timeZone, system, ... }:
let
supportedDesktops = [ "sway" "hyprland" ];
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
deskCfg = config.deskCfg;
in
{
options.deskCfg = {
de = lib.mkOption {
default = "sway";
type = lib.types.str;
description = "Desktop Environment";
};
userName = lib.mkOption {
type = lib.types.str;
description = "Main username for system";
};
hostName = lib.mkOption {
type = lib.types.str;
description = "Hostname for system";
};
installGaming = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Whether to install gaming software or not";
};
};
imports = [
modules/user/main_user.nix
modules/sway/sway_conf.nix
modules/hypr/hyprland.nix
# inputs.nur.hmModules.nur
];
config = {
assertions = [
{
assertion = builtins.elem deskCfg.de supportedDesktops;
message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}";
}
];
nixpkgs.overlays = [
inputs.nur.overlays.default
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# boot.plymouth.enable = true;
networking.hostName = deskCfg.hostName; # Define your hostname.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = timeZone;
main_user = {
enable = true;
userName = deskCfg.userName;
isDesktopUser = true;
};
swaywm = {
enable = false;
useNonFree = true;
installGaming = deskCfg.installGaming;
systemPackages = with pkgs; [
libreoffice
];
};
hypr = {
enable = true;
user = deskCfg.userName;
systemPackages = with pkgs; [
libreoffice
];
};
system.stateVersion = "23.11"; # Did you read the comment?
};
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +0,0 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View File

@ -1,2 +0,0 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View File

@ -1,2 +0,0 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View File

@ -1,45 +0,0 @@
[main]
font=Hurmit Nerd Font Mono:size=12
selection-target=clipboard
[colors]
# Catpuccin Machiatto theme
foreground=cad3f5 # Text
background=24273a # Base
regular0=494d64 # Surface 1
regular1=ed8796 # red
regular2=a6da95 # green
regular3=eed49f # yellow
regular4=8aadf4 # blue
regular5=f5bde6 # pink
regular6=8bd5ca # teal
regular7=b8c0e0 # Subtext 1
bright0=5b6078 # Surface 2
bright1=ed8796 # red
bright2=a6da95 # green
bright3=eed49f # yellow
bright4=8aadf4 # blue
bright5=f5bde6 # pink
bright6=8bd5ca # teal
bright7=a5adcb # Subtext 0foreground=cdd6f4 # Text
# [colors]
# Catpuccin Mocha theme colors
# background=1e1e2e # Base
# regular0=45475a # Surface 1
# regular1=f38ba8 # red
# regular2=a6e3a1 # green
# regular3=f9e2af # yellow
# regular4=89b4fa # blue
# regular5=f5c2e7 # pink
# regular6=94e2d5 # teal
# regular7=bac2de # Subtext 1
# bright0=585b70 # Surface 2
# bright1=f38ba8 # red
# bright2=a6e3a1 # green
# bright3=f9e2af # yellow
# bright4=89b4fa # blue
# bright5=f5c2e7 # pink
# bright6=94e2d5 # teal
# bright7=a6adc8 # Subtext 0

View File

@ -1,46 +0,0 @@
theme = "catppuccin-macchiato"
###
# Font config
###
font-size = 14
font-family = "Monaspace Xenon Var"
font-family-bold = "Monaspace Argon Var"
font-family-italic = "Monaspace Radon Var"
font-family-bold-italic = "Monaspace Krypton Var"
font-variation = wght=400
font-variation = wdth=100
font-variation = slnt=-2
font-variation-bold = wght=600
font-variation-bold = wdth=100
font-variation-italic = wght=400
font-variation-italic = wdth=100
font-variation-italic = slnt=-10
font-variation-bold-italic = wght=700
font-variation-bold-italic = wdth=100
font-variation-bold-italic = slnt=-3
font-feature = +ss01, +ss02, +ss03, +ss04, +ss05, +ss06, +ss07, +ss08, +ss09, +ss10
# Enables texture healing
font-feature = +calt
font-feature = +liga
###
# Keybinds
###
keybind = ctrl+shift+plus=increase_font_size:1
# keybind = ctrl+minus=decrease_font_size:1
###
# Misc
###
window-padding-x = 4
window-padding-y = 4
copy-on-select=clipboard

View File

@ -1,170 +0,0 @@
# Theme
theme = "catppuccin_macchiato"
[keys.normal]
# Navigation
n = "move_char_left" # Maps the 'a' key to the move_char_left command
i = "move_visual_line_down"
e = "move_visual_line_up"
o = "move_char_right"
I = "page_down"
E = "page_up"
# Modes
h = "insert_mode"
H = "insert_at_line_start"
l = "open_below"
L = "open_above"
# Search
k = "search_next"
K = "search_prev"
# Selection
C-s = "split_selection_on_newline"
C-minus = "merge_selections"
C-_ = "merge_consecutive_selections"
"C-;" = "flip_selections"
"C-:" = "ensure_selections_forward"
"C-," = "remove_primary_selection"
C-c = "change_selection_noyank"
C-d = "delete_selection_noyank"
"C-(" = "rotate_selection_contents_backward"
"C-)" = "rotate_selection_contents_forward"
C-x = "shrink_to_line_bounds"
C-J = "join_selections_space"
C-K = "remove_selections"
C-o = "expand_selection"
C-i = "shrink_selection"
C-p = "select_prev_sibling"
C-n = "select_next_sibling"
# Misc
"C-/" = "toggle_comments"
[keys.normal."C-space"]
x = ":wbc!"
s = ":w!" # save file
o = ":config-open"
c = ["vsplit", ":open llm-chat.md"]
[keys.normal.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = ["collapse_selection", "extend_to_line_start"]
o = ["collapse_selection", "extend_to_line_end"]
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
[keys.normal.m]
m = ["select_mode", "match_brackets", "normal_mode"]
[keys.select]
n = "extend_char_left"
i = "extend_line_down"
e = "extend_line_up"
o = "extend_char_right"
[keys.select.g]
"/" = "goto_next_buffer"
h = "goto_previous_buffer"
n = "goto_line_start"
o = "goto_line_end"
e = "move_line_up"
i = "move_line_down"
l = "goto_last_line"
p = "no_op"
k = "no_op"
j = "no_op"
# Window mode
[keys.normal."C-w"]
h = "hsplit"
C-h = "hsplit"
n = "jump_view_left"
C-n = "jump_view_left"
i = "jump_view_down"
I = "swap_view_down"
C-i = "jump_view_down"
e = "jump_view_up"
E = "swap_view_up"
C-e = "jump_view_up"
o = "jump_view_right"
O = "swap_view_right"
C-o = "jump_view_right"
# Remove old
s = "no_op"
C-s = "no_op"
H = "no_op"
j = "no_op"
J = "no_op"
C-j = "no_op"
k = "no_op"
K = "no_op"
C-k = "no_op"
l = "no_op"
L = "no_op"
C-l = "no_op"
[keys.normal."space"]
h = "hover"
k = "select_references_to_symbol_under_cursor"
[editor]
bufferline = "always"
auto-save = true
line-number = "relative"
cursorline = true
cursorcolumn = true
color-modes = true
text-width = 120
auto-format = true
[editor.statusline]
left = ["mode", "spinner", "version-control"]
center = ["file-name"]
mode.normal = "Normal"
mode.insert = "Insert"
mode.select = "Select"
[editor.indent-guides]
render = true
[editor.lsp]
display-messages = true
display-inlay-hints = false
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
[editor.whitespace.render]
space = "all"
tab = "all"
tabpad = "all"
newline = "none"
nbsp = "none"
[editor.whitespace.characters]
space = "·"
tab = "⇀"
tabpad = " "
#w = "move_line_up" # Maps the 'w' key move_line_up
#"C-S-esc" = "extend_line" # Maps Ctrl-Shift-Escape to extend_line
#g = { a = "code_action" } # Maps `ga` to show possible code actions
#"ret" = ["open_below", "normal_mode"] # Maps the enter key to open_below then re-enter normal mode

View File

@ -1,112 +0,0 @@
###
### Configuration for LSP-AI
###
### Link here:
### https://github.com/SilasMarvin/lsp-ai
###
[language-server.lsp-ai]
command = "lsp-ai"
[language-server.lsp-ai.config.memory]
file_store = { }
[language-server.lsp-ai.config.models.sonnet]
type = "anthropic"
chat_endpoint = "https://api.anthropic.com/v1/messages"
model = "claude-3-5-sonnet-20241022"
auth_token_env_var_name = "ANTHROPIC_API_KEY"
[language-server.lsp-ai.config.models.haiku]
type = "anthropic"
chat_endpoint = "https://api.anthropic.com/v1/messages"
model = "claude-3-5-haiku-20241022"
auth_token_env_var_name = "ANTHROPIC_API_KEY"
[[language-server.lsp-ai.config.chat]]
trigger = "!C"
action_display_name = "Chat (Sonnet 󰤇)"
model = "sonnet"
parameters = { max_context = 4096, max_tokens = 4096, system = "You are a code assistant chatbot. The user will ask you for assistance coding and you will do you best to answer succinctly and accurately" }
[[language-server.lsp-ai.config.chat]]
trigger = "!C"
action_display_name = "Chat (Haiku 󰾆)"
model = "haiku"
parameters = { max_context = 4096, max_tokens = 4096, system = "You are a code assistant chatbot. The user will ask you for assistance coding and you will do you best to answer succinctly and accurately" }
[[language-server.lsp-ai.config.actions]]
action_display_name = "Complete (Sonnet 󰤇)"
model = "sonnet"
parameters = { max_context = 4096, max_tokens = 4096, messages = [{ role = "user", content = "{CODE}" }], system = "You are an AI coding assistant. Your task is to complete code snippets. The user's cursor position is marked by \"<CURSOR>\". Follow these steps:\n\n1. Analyze the code context and the cursor position.\n2. Provide your chain of thought reasoning, wrapped in <reasoning> tags. Include thoughts about the cursor position, what needs to be completed, and any necessary formatting.\n3. Determine the appropriate code to complete the current thought, including finishing partial words or lines.\n4. Replace \"<CURSOR>\" with the necessary code, ensuring proper formatting and line breaks.\n5. Wrap your code solution in <answer> tags.\n\nYour response should always include both the reasoning and the answer. Pay special attention to completing partial words or lines before adding new lines of code.\n\n<examples>\n<example>\nUser input:\n--main.py--\n# A function that reads in user inpu<CURSOR>\n\nResponse:\n<reasoning>\n1. The cursor is positioned after \"inpu\" in a comment describing a function that reads user input.\n2. We need to complete the word \"input\" in the comment first.\n3. After completing the comment, we should add a new line before defining the function.\n4. The function should use Python's built-in `input()` function to read user input.\n5. We'll name the function descriptively and include a return statement.\n</reasoning>\n\n<answer>t\ndef read_user_input():\n user_input = input(\"Enter your input: \")\n return user_input\n</answer>\n</example>\n\n<example>\nUser input:\n--main.py--\ndef fibonacci(n):\n if n <= 1:\n return n\n else:\n re<CURSOR>\n\n\nResponse:\n<reasoning>\n1. The cursor is positioned after \"re\" in the 'else' clause of a recursive Fibonacci function.\n2. We need to complete the return statement for the recursive case.\n3. The \"re\" already present likely stands for \"return\", so we'll continue from there.\n4. The Fibonacci sequence is the sum of the two preceding numbers.\n5. We should return the sum of fibonacci(n-1) and fibonacci(n-2).\n</reasoning>\n\n<answer>turn fibonacci(n-1) + fibonacci(n-2)</answer>\n</example>\n</examples>"}
post_process = { extractor = "(?s)<answer>(.*?)</answer>" }
[[language-server.lsp-ai.config.actions]]
action_display_name = "Complete (Haiku 󰾆)"
model = "haiku"
parameters = { max_context = 4096, max_tokens = 4096, messages = [{ role = "user", content = "{CODE}" }], system = "You are an AI coding assistant. Your task is to complete code snippets. The user's cursor position is marked by \"<CURSOR>\". Follow these steps:\n\n1. Analyze the code context and the cursor position.\n2. Provide your chain of thought reasoning, wrapped in <reasoning> tags. Include thoughts about the cursor position, what needs to be completed, and any necessary formatting.\n3. Determine the appropriate code to complete the current thought, including finishing partial words or lines.\n4. Replace \"<CURSOR>\" with the necessary code, ensuring proper formatting and line breaks.\n5. Wrap your code solution in <answer> tags.\n\nYour response should always include both the reasoning and the answer. Pay special attention to completing partial words or lines before adding new lines of code.\n\n<examples>\n<example>\nUser input:\n--main.py--\n# A function that reads in user inpu<CURSOR>\n\nResponse:\n<reasoning>\n1. The cursor is positioned after \"inpu\" in a comment describing a function that reads user input.\n2. We need to complete the word \"input\" in the comment first.\n3. After completing the comment, we should add a new line before defining the function.\n4. The function should use Python's built-in `input()` function to read user input.\n5. We'll name the function descriptively and include a return statement.\n</reasoning>\n\n<answer>t\ndef read_user_input():\n user_input = input(\"Enter your input: \")\n return user_input\n</answer>\n</example>\n\n<example>\nUser input:\n--main.py--\ndef fibonacci(n):\n if n <= 1:\n return n\n else:\n re<CURSOR>\n\n\nResponse:\n<reasoning>\n1. The cursor is positioned after \"re\" in the 'else' clause of a recursive Fibonacci function.\n2. We need to complete the return statement for the recursive case.\n3. The \"re\" already present likely stands for \"return\", so we'll continue from there.\n4. The Fibonacci sequence is the sum of the two preceding numbers.\n5. We should return the sum of fibonacci(n-1) and fibonacci(n-2).\n</reasoning>\n\n<answer>turn fibonacci(n-1) + fibonacci(n-2)</answer>\n</example>\n</examples>"}
post_process = { extractor = "(?s)<answer>(.*?)</answer>" }
[[language-server.lsp-ai.config.actions]]
action_display_name = "Refactor (Sonnet 󰤇)"
model = "sonnet"
parameters = { max_context = 4096, max_tokens = 4096, messages = [{ role = "user", content = "{SELECTED_TEXT}" }], system = "You are an AI coding assistant specializing in code refactoring. Your task is to analyze the given code snippet and provide a refactored version. Follow these steps:\n\n1. Analyze the code context and structure.\n2. Identify areas for improvement, such as code efficiency, readability, or adherence to best practices.\n3. Provide your chain of thought reasoning, wrapped in <reasoning> tags. Include your analysis of the current code and explain your refactoring decisions.\n4. Rewrite the entire code snippet with your refactoring applied.\n5. Wrap your refactored code solution in <answer> tags.\n\nYour response should always include both the reasoning and the refactored code.\n\n<examples>\n<example>\nUser input:\ndef calculate_total(items):\n total = 0\n for item in items:\n total = total + item['price'] * item['quantity']\n return total\n\n\nResponse:\n<reasoning>\n1. The function calculates the total cost of items based on price and quantity.\n2. We can improve readability and efficiency by:\n a. Using a more descriptive variable name for the total.\n b. Utilizing the sum() function with a generator expression.\n c. Using augmented assignment (+=) if we keep the for loop.\n3. We'll implement the sum() function approach for conciseness.\n4. We'll add a type hint for better code documentation.\n</reasoning>\n<answer>\nfrom typing import List, Dict\n\ndef calculate_total(items: List[Dict[str, float]]) -> float:\n return sum(item['price'] * item['quantity'] for item in items)\n</answer>\n</example>\n\n<example>\nUser input:\ndef is_prime(n):\n if n < 2:\n return False\n for i in range(2, n):\n if n % i == 0:\n return False\n return True\n\n\nResponse:\n<reasoning>\n1. This function checks if a number is prime, but it's not efficient for large numbers.\n2. We can improve it by:\n a. Adding an early return for 2, the only even prime number.\n b. Checking only odd numbers up to the square root of n.\n c. Using a more efficient range (start at 3, step by 2).\n3. We'll also add a type hint for better documentation.\n4. The refactored version will be more efficient for larger numbers.\n</reasoning>\n<answer>\nimport math\n\ndef is_prime(n: int) -> bool:\n if n < 2:\n return False\n if n == 2:\n return True\n if n % 2 == 0:\n return False\n \n for i in range(3, int(math.sqrt(n)) + 1, 2):\n if n % i == 0:\n return False\n return True\n</answer>\n</example>\n</examples>" }
post_process = { extractor = "(?s)<answer>(.*?)</answer>" }
[[language-server.lsp-ai.config.actions]]
action_display_name = "Refactor (Haiku 󰾆)"
model = "haiku"
parameters = { max_context = 4096, max_tokens = 4096, messages = [{ role = "user", content = "{SELECTED_TEXT}" }], system = "You are an AI coding assistant specializing in code refactoring. Your task is to analyze the given code snippet and provide a refactored version. Follow these steps:\n\n1. Analyze the code context and structure.\n2. Identify areas for improvement, such as code efficiency, readability, or adherence to best practices.\n3. Provide your chain of thought reasoning, wrapped in <reasoning> tags. Include your analysis of the current code and explain your refactoring decisions.\n4. Rewrite the entire code snippet with your refactoring applied.\n5. Wrap your refactored code solution in <answer> tags.\n\nYour response should always include both the reasoning and the refactored code.\n\n<examples>\n<example>\nUser input:\ndef calculate_total(items):\n total = 0\n for item in items:\n total = total + item['price'] * item['quantity']\n return total\n\n\nResponse:\n<reasoning>\n1. The function calculates the total cost of items based on price and quantity.\n2. We can improve readability and efficiency by:\n a. Using a more descriptive variable name for the total.\n b. Utilizing the sum() function with a generator expression.\n c. Using augmented assignment (+=) if we keep the for loop.\n3. We'll implement the sum() function approach for conciseness.\n4. We'll add a type hint for better code documentation.\n</reasoning>\n<answer>\nfrom typing import List, Dict\n\ndef calculate_total(items: List[Dict[str, float]]) -> float:\n return sum(item['price'] * item['quantity'] for item in items)\n</answer>\n</example>\n\n<example>\nUser input:\ndef is_prime(n):\n if n < 2:\n return False\n for i in range(2, n):\n if n % i == 0:\n return False\n return True\n\n\nResponse:\n<reasoning>\n1. This function checks if a number is prime, but it's not efficient for large numbers.\n2. We can improve it by:\n a. Adding an early return for 2, the only even prime number.\n b. Checking only odd numbers up to the square root of n.\n c. Using a more efficient range (start at 3, step by 2).\n3. We'll also add a type hint for better documentation.\n4. The refactored version will be more efficient for larger numbers.\n</reasoning>\n<answer>\nimport math\n\ndef is_prime(n: int) -> bool:\n if n < 2:\n return False\n if n == 2:\n return True\n if n % 2 == 0:\n return False\n \n for i in range(3, int(math.sqrt(n)) + 1, 2):\n if n % i == 0:\n return False\n return True\n</answer>\n</example>\n</examples>" }
post_process = { extractor = "(?s)<answer>(.*?)</answer>" }
###
### Configuration for languages
###
[[language]]
name = "go"
language-servers = ["gopls", "lsp-ai"]
[[language]]
name = "markdown"
language-servers = ["marksman", "lsp-ai"]
# Change dart format to 120 lines
[[language]]
name = "dart"
formatter = {command = "dart", args = ["format", "-l", "120"]}
language-servers = ["dart", "lsp-ai"]
[[language]]
name = "zig"
language-servers = ["zls", "lsp-ai"]
[language.debugger]
name = "codelldb-dap"
transport = "tcp"
command = "codelldb"
args = []
port-arg = "--port {}"
[[language.debugger.templates]]
name = "launch"
request = "launch"
completion = [ { name = "binary", completion = "filename" } ]
args = { console = "internalConsole", program = "{0}" }
[[language.debugger.templates]]
name = "attach"
request = "attach"
completion = [ "pid" ]
args = { console = "internalConsole", pid = "{0}" }
[[language.debugger.templates]]
name = "gdbserver attach"
request = "attach"
completion = [ { name = "lldb connect url", default = "connect://localhost:3333" }, { name = "file", completion = "filename" }, "pid" ]
args = { console = "internalConsole", attachCommands = [ "platform select remote-gdb-server", "platform connect {0}", "file {1}", "attach {2}" ] }
[[language]]
name = "nix"
language-servers = ["nil", "lsp-ai"]

View File

@ -1,10 +0,0 @@
general {
lock_cmd = swaylock # dbus/sysd lock command (loginctl lock-session)
before_sleep_cmd = swaylock
ignore_dbus_inhibit = false
}
listener {
timeout = 600 # in seconds
on-timeout = swaylock -C ~/.config/swaylock/idle-config # command to run when timeout has passed
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 376 KiB

View File

@ -1,6 +0,0 @@
https://www.youtube.com/watch?v=484RgaL990c
https://www.youtube.com/watch?v=6OGp_lZT2tM
https://www.youtube.com/watch?v=tIsiYbJLwIg
https://www.youtube.com/watch?v=pKw6s8w9rAI
https://www.youtube.com/watch?v=lFuErjQKoYg
https://www.youtube.com/@Denz1000

View File

@ -1,21 +0,0 @@
#! /usr/bin/env bash
hyprctl dispatch togglespecialworkspace music
YT_LINK=$(sort -R < ~/.config/hypr/scripts/music_links.txt | head -n 1)
firefox --new-window "$YT_LINK" &
sleep 1
hyprctl dispatch togglefloating
hyprctl dispatch movewindow u
hyprctl dispatch movewindow l
hyprctl dispatch resizeactive exact 45% 45%
hyprctl dispatch moveactive 30% 5%
ghostty ~/.config/hypr/scripts/music_setup_cmd.sh &
sleep 1
hyprctl dispatch togglefloating
hyprctl dispatch resizeactive exact 95% 30%
hyprctl dispatch movewindow d
hyprctl dispatch movewindow l
hyprctl dispatch moveactive -- 30 -5%

View File

@ -1,4 +0,0 @@
#! /usr/bin/env sh
sleep 1
cava

View File

@ -1,35 +0,0 @@
#!/usr/bin/env bash
entries="Screen Window Area Area+Edit"
selected=$(printf '%s\n' "$entries" | tr ' ' '\n' | wofi --style="$HOME"/.config/wofi/macc_style.css --conf="$HOME"/.config/wofi/config.screenshot | awk '{print tolower($1)}')
if [ "$1" == "clipboard" ]; then
case $selected in
screen)
hyprshot --notif-timeout 2000 -m output --clipboard-only;;
window)
hyprshot --notif-timeout 2000 -m window --clipboard-only;;
area)
hyprshot --notif-timeout 2000 -m region --clipboard-only;;
area+edit)
hyprshot --notif-timeout 2000 -m region --clipboard-only
sleep 0.1
flatpak run com.github.maoschanz.drawing -c
;;
esac
else
case $selected in
screen)
hyprshot --notif-timeout 2000 -m output -o ~/Pictures/;;
window)
hyprshot --notif-timeout 2000 -m window -o ~/Pictures/;;
area)
hyprshot --notif-timeout 2000 -m region -o ~/Pictures/;;
area+edit)
hyprshot --notif-timeout 2000 -m region --clipboard-only
sleep 0.1
flatpak run com.github.maoschanz.drawing -c
;;
esac
fi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

View File

@ -1,447 +0,0 @@
snippet_support = true
verbosity = 2
[server]
# exit session if no requests were received during given period in seconds
# set to 0 to disable
timeout = 1800 # seconds = 30 minutes
[language.bash]
filetypes = ["sh"]
roots = [".git", ".hg"]
command = "bash-language-server"
args = ["start"]
[language.c_cpp]
filetypes = ["c", "cpp"]
roots = ["compile_commands.json", ".clangd", ".git", ".hg"]
command = "clangd"
[language.clojure]
filetypes = ["clojure"]
roots = ["project.clj", ".git", ".hg"]
command = "clojure-lsp"
settings_section = "_"
[language.clojure.settings._]
# See https://clojure-lsp.io/settings/#all-settings
# source-paths-ignore-regex = ["resources.*", "target.*"]
[language.cmake]
filetypes = ["cmake"]
roots = ["CMakeLists.txt", ".git", ".hg"]
command = "cmake-language-server"
[language.crystal]
filetypes = ["crystal"]
roots = ["shard.yml"]
command = "crystalline"
[language.css]
filetypes = ["css"]
roots = ["package.json", ".git", ".hg"]
command = "vscode-css-languageserver"
args = ["--stdio"]
[language.less]
filetypes = ["less"]
roots = ["package.json", ".git", ".hg"]
command = "vscode-css-languageserver"
args = ["--stdio"]
[language.scss]
filetypes = ["scss"]
roots = ["package.json", ".git", ".hg"]
command = "vscode-css-languageserver"
args = ["--stdio"]
[language.d]
filetypes = ["d", "di"]
roots = [".git", "dub.sdl", "dub.json"]
command = "dls"
[language.dart]
# start shell to find path to dart analysis server source
filetypes = ["dart"]
roots = ["pubspec.yaml", ".git", ".hg"]
command = "dart"
args = ["language-server"]
[language.dart.settings.dart]
lineLength = 120
[language.elixir]
filetypes = ["elixir"]
roots = ["mix.exs"]
command = "elixir-ls"
settings_section = "elixirLS"
[language.elixir.settings.elixirLS]
# See https://github.com/elixir-lsp/elixir-ls/blob/master/apps/language_server/lib/language_server/server.ex
# dialyzerEnable = true
[language.elm]
filetypes = ["elm"]
roots = ["elm.json"]
command = "elm-language-server"
args = ["--stdio"]
settings_section = "elmLS"
[language.elm.settings.elmLS]
# See https://github.com/elm-tooling/elm-language-server#server-settings
runtime = "node"
elmPath = "elm"
elmFormatPath = "elm-format"
elmTestPath = "elm-test"
[language.elvish]
filetypes = ["elvish"]
roots = [".git", ".hg"]
command = "elvish"
args = ["-lsp"]
[language.erlang]
filetypes = ["erlang"]
# See https://github.com/erlang-ls/erlang_ls.git for more information and
# how to configure. This default config should work in most cases though.
roots = ["rebar.config", "erlang.mk", ".git", ".hg"]
command = "erlang_ls"
[language.go]
filetypes = ["go"]
roots = ["Gopkg.toml", "go.mod", ".git", ".hg"]
command = "gopls"
settings_section = "gopls"
[language.go.settings.gopls]
# See https://github.com/golang/tools/blob/master/gopls/doc/settings.md
# "build.buildFlags" = []
[language.haskell]
filetypes = ["haskell"]
roots = ["hie.yaml", "cabal.project", "Setup.hs", "stack.yaml", "*.cabal"]
command = "haskell-language-server-wrapper"
args = ["--lsp"]
settings_section = "_"
[language.haskell.settings._]
# See https://haskell-language-server.readthedocs.io/en/latest/configuration.html
# haskell.formattingProvider = "ormolu"
[language.html]
filetypes = ["html"]
roots = ["package.json"]
command = "vscode-html-languageserver"
args = ["--stdio"]
# # Commented out by default because you still need to set the paths in the JDT
# # Language Server arguments below before this can become a valid configuration.
# [language.java]
# filetypes = ["java"]
# roots = [".git", "mvnw", "gradlew"]
# command = "java"
# args = [
# "-Declipse.application=org.eclipse.jdt.ls.core.id1",
# "-Dosgi.bundles.defaultStartLevel=4",
# "-Declipse.product=org.eclipse.jdt.ls.core.product",
# "-Dlog.level=ALL",
# "-Dfile.encoding=utf-8",
# "--add-modules=ALL-SYSTEM",
# "--add-opens",
# "java.base/java.util=ALL-UNNAMED",
# "--add-opens",
# "java.base/java.lang=ALL-UNNAMED",
# "-noverify",
# "-Xmx1G",
# "-jar",
# "/path/to/eclipse.jdt.ls/repository/plugins/org.eclipse.equinox.launcher_1.6.100.v20201223-0822.jar",
# "-configuration",
# "/path/to/eclipse.jdt.ls/repository/config_linux",
# "-data",
# "/path/to/eclipse-workspace",
# ]
# [language.java.settings]
# # See https://github.dev/eclipse/eclipse.jdt.ls
# # "java.format.insertSpaces" = true
[language.javascriptreact]
filetypes = ["javascript"]
roots = ["package.json", "tsconfig.json", ".git", ".hg"]
command = "typescript-language-server"
args = ["--stdio"]
settings_section = "_"
[language.javascriptreact.settings._]
# quotePreference = "single"
# javascript.format.semicolons = "insert"
[language.json]
filetypes = ["json"]
roots = ["package.json"]
command = "vscode-json-language-server"
args = ["--stdio"]
# Requires Julia package "LanguageServer"
# Run: `julia --project=@kak-lsp -e 'import Pkg; Pkg.add("LanguageServer")'` to install it
# Configuration adapted from https://github.com/neovim/nvim-lspconfig/blob/bcebfac7429cd8234960197dca8de1767f3ef5d3/lua/lspconfig/julials.lua
[language.julia]
filetypes = ["julia"]
roots = ["Project.toml", ".git", ".hg"]
command = "julia"
args = [
"--startup-file=no",
"--history-file=no",
"-e",
"""
ls_install_path = joinpath(get(DEPOT_PATH, 1, joinpath(homedir(), ".julia")), "environments", "kak-lsp");
pushfirst!(LOAD_PATH, ls_install_path);
using LanguageServer;
popfirst!(LOAD_PATH);
depot_path = get(ENV, "JULIA_DEPOT_PATH", "");
buffer_file = ENV["kak_buffile"];
project_path = let
dirname(something(
# 1. Check if there is an explicitly set project
Base.load_path_expand((
p = get(ENV, "JULIA_PROJECT", nothing);
p === nothing ? nothing : isempty(p) ? nothing : p
)),
# 2. Check for Project.toml in current working directory
Base.current_project(pwd()),
# 3. Check for Project.toml from buffer's full file path excluding the file name
Base.current_project(dirname(buffer_file)),
# 4. Fallback to global environment
Base.active_project()
))
end
server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path);
server.runlinter = true;
run(server);
""",
]
[language.julia.settings]
# See https://github.com/julia-vscode/LanguageServer.jl/blob/master/src/requests/workspace.jl
# Format options. See https://github.com/julia-vscode/DocumentFormat.jl/blob/master/src/DocumentFormat.jl
# "julia.format.indent" = 4
# Lint options. See https://github.com/julia-vscode/StaticLint.jl/blob/master/src/linting/checks.jl
# "julia.lint.call" = true
# Other options, see https://github.com/julia-vscode/LanguageServer.jl/blob/master/src/requests/workspace.jl
# "julia.lint.run" = "true"
[language.latex]
filetypes = ["latex"]
roots = [".git", ".hg"]
command = "texlab"
settings_section = "texlab"
[language.latex.settings.texlab]
# See https://github.com/latex-lsp/texlab/wiki/Configuration
#
# Preview configuration for zathura with SyncTeX search.
# For other PDF viewers see https://github.com/latex-lsp/texlab/wiki/Previewing
forwardSearch.executable = "zathura"
forwardSearch.args = [
"%p",
"--synctex-forward", # Support texlab-forward-search
"%l:1:%f",
"--synctex-editor-command", # Inverse search: use Control+Left-Mouse-Button to jump to source.
"""
sh -c '
echo "
evaluate-commands -client %opt{texlab_client} %{
evaluate-commands -try-client %opt{jumpclient} %{
edit -- %{input} %{line}
}
}
" | kak -p $kak_session
'
""",
]
[language.lua]
filetypes = ["lua"]
roots = [".git", ".hg"]
command = "lua-language-server"
[language.lua.settings.Lua]
# See https://github.com/sumneko/vscode-lua/blob/master/setting/schema.json
# diagnostics.enable = true
[language.markdown]
filetypes = ["md", "markdown"]
roots = [".git", ".hg"]
command = "vscode-markdown-language-server"
args = ["--stdio"]
# [[language]]
# name = "markdown"
# scope = "source.md"
# injection-regex = "md|markdown"
# file-types = ["md", "markdown", "PULLREQ_EDITMSG", "mkd", "mdwn", "mdown", "markdn", "mdtxt", "mdtext", "workbook"]
# roots = [".marksman.toml"]
# language-servers = [ "marksman" ]
# indent = { tab-width = 2, unit = " " }
[language.nim]
filetypes = ["nim"]
roots = ["*.nimble", ".git", ".hg"]
command = "nimlsp"
[language.nix]
filetypes = ["nix"]
roots = ["flake.nix", "shell.nix", ".git", ".hg"]
command = "rnix-lsp"
[language.ocaml]
filetypes = ["ocaml"]
# Often useful to simply do a `touch dune-workspace` in your project root folder if you have problems with root detection
roots = ["dune-workspace", "dune-project", "Makefile", "opam", "*.opam", "esy.json", ".git", ".hg", "dune"]
command = "ocamllsp"
[language.php]
filetypes = ["php"]
roots = [".htaccess", "composer.json"]
command = "intelephense"
args = ["--stdio"]
settings_section = "intelephense"
[language.php.settings]
intelephense.storagePath = "/tmp/intelephense"
[language.proto]
filetypes = ["protobuf"]
roots = [".git", ".hg"]
command = "pls" # https://github.com/lasorda/protobuf-language-server
[language.python]
filetypes = ["python"]
roots = ["requirements.txt", "setup.py", ".git", ".hg"]
command = "pylsp"
settings_section = "_"
[language.python.settings._]
# See https://github.com/python-lsp/python-lsp-server#configuration
# pylsp.configurationSources = ["flake8"]
pylsp.plugins.jedi_completion.include_params = true
[language.r]
filetypes = ["r"]
roots = ["DESCRIPTION", ".git", ".hg"]
command = "R"
args = ["--slave", "-e", "languageserver::run()"]
[language.racket]
filetypes = ["racket"]
roots = ["info.rkt"]
command = "racket"
args = ["-l", "racket-langserver"]
[language.reason]
filetypes = ["reason"]
roots = ["package.json", "Makefile", ".git", ".hg"]
command = "ocamllsp"
[language.ruby]
filetypes = ["ruby"]
roots = ["Gemfile"]
command = "solargraph"
args = ["stdio"]
settings_section = "_"
[language.ruby.settings._]
# See https://github.com/castwide/solargraph/blob/master/lib/solargraph/language_server/host.rb
# diagnostics = false
# [language.rust]
# filetypes = ["rust"]
# roots = ["Cargo.toml"]
# command = "sh"
# args = [
# "-c",
# """
# if path=$(rustup which rls 2>/dev/null); then
# "$path"
# else
# rls
# fi
# """,
# ]
# [language.rust.settings.rust]
# # See https://github.com/rust-lang/rls#configuration
# # features = []
[language.rust]
filetypes = ["rust"]
roots = ["Cargo.toml"]
command = "sh"
args = [
"-c",
"""
if path=$(rustup which rust-analyzer 2>/dev/null); then
"$path"
else
rust-analyzer
fi
""",
]
settings_section = "rust-analyzer"
[language.rust.settings.rust-analyzer]
# See https://rust-analyzer.github.io/manual.html#configuration
hoverActions.enable = false # kak-lsp doesn't support this at the moment
# cargo.features = []
[language.terraform]
filetypes = ["terraform"]
roots = ["*.tf"]
command = "terraform-ls"
args = ["serve"]
[language.terraform.settings.terraform-ls]
# See https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md
# rootModulePaths = []
# [language.typescriptreact]
# filetypes = ["typescript"]
# roots = ["package.json", "tsconfig.json", ".git", ".hg"]
# command = "typescript-language-server"
# args = ["--stdio"]
# settings_section = "_"
# [language.typescriptreact.settings._]
# quotePreference = "double"
# typescript.format.semicolons = "insert"
[language.tsx]
filetypes = ["typescript"]
roots = ["package.json", "tsconfig.json", ".git", ".hg"]
command = "typescript-language-server"
args = ["--stdio"]
settings_section = "_"
# [language.typescript.settings.deno]
# enable = true
# lint = true
[language.yaml]
filetypes = ["yaml"]
roots = [".git", ".hg"]
command = "yaml-language-server"
args = ["--stdio"]
[language.yaml.settings]
# See https://github.com/redhat-developer/yaml-language-server#language-server-settings
# Defaults are at https://github.com/redhat-developer/yaml-language-server/blob/master/src/yamlSettings.ts
# yaml.format.enable = true
[language.zig]
filetypes = ["zig"]
roots = ["build.zig"]
command = "zls"
# Semantic tokens support
# See https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens
# for the default list of tokens and modifiers.
# However, many language servers implement their own values.
# Make sure to check the output of `lsp-capabilities` and each server's documentation and source code as well.
# Examples:
# - TypeScript: https://github.com/microsoft/vscode-languageserver-node/blob/main/client/src/common/semanticTokens.ts
# - Rust Analyzer: https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ide/src/syntax_highlighting.rs
[semantic_tokens]
faces = [
{face="documentation", token="comment", modifiers=["documentation"]},
{face="comment", token="comment"},
{face="function", token="function"},
{face="keyword", token="keyword"},
{face="module", token="namespace"},
{face="operator", token="operator"},
{face="string", token="string"},
{face="type", token="type"},
{face="default+d", token="variable", modifiers=["readonly"]},
{face="default+d", token="variable", modifiers=["constant"]},
{face="variable", token="variable"},
]

View File

@ -1,83 +0,0 @@
# Catppuccin theme for Kakoune
# Color palette
declare-option str rosewater 'rgb:f2d5cf'
declare-option str red 'rgb:e78284'
declare-option str mauve 'rgb:ca9ee6'
declare-option str maroon 'rgb:ea999c'
declare-option str pink 'rgb:f4b8e4'
declare-option str cyan 'rgb:85c1dc'
declare-option str yellow 'rgb:e5c890'
declare-option str green 'rgb:a6d189'
declare-option str white 'rgb:c6d0f5'
declare-option str blue 'rgb:8caaee'
declare-option str sky 'rgb:99d1db'
declare-option str lavender 'rgb:babbf1'
declare-option str black1 'rgb:292c3c'
declare-option str black2 'rgb:303446'
declare-option str black3 'rgb:414559'
declare-option str orange 'rgb:ef9f76'
declare-option str teal 'rgb:81c8be'
declare-option str gray0 'rgb:626880'
declare-option str gray1 'rgb:737994'
declare-option str bright_red %opt{red}
declare-option str bright_green %opt{green}
declare-option str bright_yellow %opt{yellow}
declare-option str bright_blue %opt{blue}
declare-option str bright_cyan %opt{cyan}
declare-option str bright_white %opt{white}
declare-option str foreground %opt{white}
declare-option str background %opt{black2}
# Markup
set-face global title "%opt{rosewater}"
set-face global header "%opt{bright_red}"
set-face global bold "%opt{mauve}"
set-face global italic "%opt{lavender}"
set-face global mono "%opt{green}"
set-face global block "%opt{cyan}"
set-face global link "%opt{green}"
set-face global bullet "%opt{green}"
set-face global list "%opt{white}"
# Builtins
set-face global Default "%opt{white},%opt{background}"
set-face global PrimarySelection "%opt{gray0},%opt{lavender}"
set-face global SecondarySelection "%opt{lavender},%opt{gray0}"
set-face global PrimaryCursor "%opt{background},%opt{rosewater}"
set-face global SecondaryCursor "%opt{black1},%opt{teal}"
set-face global PrimaryCursorEol "%opt{gray0},%opt{mauve}"
set-face global SecondaryCursorEol "%opt{gray0},%opt{maroon}"
set-face global LineNumbers "%opt{gray1},%opt{background}"
set-face global LineNumberCursor "%opt{lavender},%opt{gray0}+b"
set-face global LineNumbersWrapped "%opt{teal},%opt{black1}+i"
set-face global MenuForeground "%opt{white},%opt{gray0}+b"
set-face global MenuBackground "%opt{white},%opt{black3}"
set-face global MenuInfo "%opt{black1},%opt{blue}"
set-face global Information "%opt{black1},%opt{lavender}"
set-face global Error "%opt{red},%opt{black2}"
set-face global StatusLine "%opt{white},%opt{black1}"
set-face global StatusLineMode "%opt{black2},%opt{yellow}"
set-face global StatusLineInfo "%opt{background},%opt{green}"
set-face global StatusLineValue "%opt{orange},%opt{gray0}"
set-face global StatusCursor "%opt{black1},%opt{lavender}"
set-face global Prompt "%opt{green},%opt{black2}"
set-face global MatchingChar "%opt{maroon},%opt{black2}"
set-face global Whitespace "%opt{gray1},%opt{background}+f"
set-face global WrapMarker Whitespace
set-face global BufferPadding "%opt{background},%opt{background}"
# Code
set-face global value "%opt{orange}"
set-face global type "%opt{rosewater}"
set-face global variable "%opt{white}"
set-face global module "%opt{maroon}"
set-face global function "%opt{sky}"
set-face global string "%opt{green}"
set-face global keyword "%opt{blue}"
set-face global operator "%opt{blue}"
set-face global attribute "%opt{green}"
set-face global comment "%opt{gray1}"
set-face global documentation comment
set-face global meta "%opt{pink}"
set-face global builtin "%opt{lavender}+b"

View File

@ -1,83 +0,0 @@
# Catppuccin theme for Kakoune
# Color palette
declare-option str rosewater 'rgb:dc8a78'
declare-option str red 'rgb:d20f39'
declare-option str mauve 'rgb:8839ef'
declare-option str maroon 'rgb:e64553'
declare-option str pink 'rgb:ea76cb'
declare-option str cyan 'rgb:209fb5'
declare-option str yellow 'rgb:df8e1d'
declare-option str green 'rgb:40a02b'
declare-option str white 'rgb:4c4f69'
declare-option str blue 'rgb:1e66f5'
declare-option str sky 'rgb:04a5e5'
declare-option str lavender 'rgb:7287fd'
declare-option str black1 'rgb:e6e9ef'
declare-option str black2 'rgb:eff1f5'
declare-option str black3 'rgb:ccd0da'
declare-option str orange 'rgb:fe640b'
declare-option str teal 'rgb:179299'
declare-option str gray0 'rgb:acb0be'
declare-option str gray1 'rgb:9ca0b0'
declare-option str bright_red %opt{red}
declare-option str bright_green %opt{green}
declare-option str bright_yellow %opt{yellow}
declare-option str bright_blue %opt{blue}
declare-option str bright_cyan %opt{cyan}
declare-option str bright_white %opt{white}
declare-option str foreground %opt{white}
declare-option str background %opt{black2}
# Markup
set-face global title "%opt{rosewater}"
set-face global header "%opt{bright_red}"
set-face global bold "%opt{mauve}"
set-face global italic "%opt{lavender}"
set-face global mono "%opt{green}"
set-face global block "%opt{cyan}"
set-face global link "%opt{green}"
set-face global bullet "%opt{green}"
set-face global list "%opt{white}"
# Builtins
set-face global Default "%opt{white},%opt{background}"
set-face global PrimarySelection "%opt{gray0},%opt{lavender}"
set-face global SecondarySelection "%opt{lavender},%opt{gray0}"
set-face global PrimaryCursor "%opt{background},%opt{rosewater}"
set-face global SecondaryCursor "%opt{black1},%opt{teal}"
set-face global PrimaryCursorEol "%opt{gray0},%opt{mauve}"
set-face global SecondaryCursorEol "%opt{gray0},%opt{maroon}"
set-face global LineNumbers "%opt{gray1},%opt{background}"
set-face global LineNumberCursor "%opt{lavender},%opt{gray0}+b"
set-face global LineNumbersWrapped "%opt{teal},%opt{black1}+i"
set-face global MenuForeground "%opt{white},%opt{gray0}+b"
set-face global MenuBackground "%opt{white},%opt{black3}"
set-face global MenuInfo "%opt{black1},%opt{blue}"
set-face global Information "%opt{black1},%opt{lavender}"
set-face global Error "%opt{red},%opt{black2}"
set-face global StatusLine "%opt{white},%opt{black1}"
set-face global StatusLineMode "%opt{black2},%opt{yellow}"
set-face global StatusLineInfo "%opt{background},%opt{green}"
set-face global StatusLineValue "%opt{orange},%opt{gray0}"
set-face global StatusCursor "%opt{black1},%opt{lavender}"
set-face global Prompt "%opt{green},%opt{black2}"
set-face global MatchingChar "%opt{maroon},%opt{black2}"
set-face global Whitespace "%opt{gray1},%opt{background}+f"
set-face global WrapMarker Whitespace
set-face global BufferPadding "%opt{background},%opt{background}"
# Code
set-face global value "%opt{orange}"
set-face global type "%opt{rosewater}"
set-face global variable "%opt{white}"
set-face global module "%opt{maroon}"
set-face global function "%opt{sky}"
set-face global string "%opt{green}"
set-face global keyword "%opt{blue}"
set-face global operator "%opt{blue}"
set-face global attribute "%opt{green}"
set-face global comment "%opt{gray1}"
set-face global documentation comment
set-face global meta "%opt{pink}"
set-face global builtin "%opt{lavender}+b"

View File

@ -1,83 +0,0 @@
# Catppuccin theme for Kakoune
# Color palette
declare-option str rosewater 'rgb:f4dbd6'
declare-option str red 'rgb:ed8796'
declare-option str mauve 'rgb:c6a0f6'
declare-option str maroon 'rgb:ee99a0'
declare-option str pink 'rgb:f5bde6'
declare-option str cyan 'rgb:7dc4e4'
declare-option str yellow 'rgb:eed49f'
declare-option str green 'rgb:a6da95'
declare-option str white 'rgb:cad3f5'
declare-option str blue 'rgb:8aadf4'
declare-option str sky 'rgb:91d7e3'
declare-option str lavender 'rgb:b7bdf8'
declare-option str black1 'rgb:1e2030'
declare-option str black2 'rgb:24273a'
declare-option str black3 'rgb:363a4f'
declare-option str orange 'rgb:f5a97f'
declare-option str teal 'rgb:8bd5ca'
declare-option str gray0 'rgb:5b6078'
declare-option str gray1 'rgb:6e738d'
declare-option str bright_red %opt{red}
declare-option str bright_green %opt{green}
declare-option str bright_yellow %opt{yellow}
declare-option str bright_blue %opt{blue}
declare-option str bright_cyan %opt{cyan}
declare-option str bright_white %opt{white}
declare-option str foreground %opt{white}
declare-option str background %opt{black2}
# Markup
set-face global title "%opt{rosewater}"
set-face global header "%opt{bright_red}"
set-face global bold "%opt{mauve}"
set-face global italic "%opt{lavender}"
set-face global mono "%opt{green}"
set-face global block "%opt{cyan}"
set-face global link "%opt{green}"
set-face global bullet "%opt{green}"
set-face global list "%opt{white}"
# Builtins
set-face global Default "%opt{white},%opt{background}"
set-face global PrimarySelection "%opt{gray0},%opt{lavender}"
set-face global SecondarySelection "%opt{lavender},%opt{gray0}"
set-face global PrimaryCursor "%opt{background},%opt{rosewater}"
set-face global SecondaryCursor "%opt{black1},%opt{teal}"
set-face global PrimaryCursorEol "%opt{gray0},%opt{mauve}"
set-face global SecondaryCursorEol "%opt{gray0},%opt{maroon}"
set-face global LineNumbers "%opt{gray1},%opt{background}"
set-face global LineNumberCursor "%opt{lavender},%opt{gray0}+b"
set-face global LineNumbersWrapped "%opt{teal},%opt{black1}+i"
set-face global MenuForeground "%opt{white},%opt{gray0}+b"
set-face global MenuBackground "%opt{white},%opt{black3}"
set-face global MenuInfo "%opt{black1},%opt{blue}"
set-face global Information "%opt{black1},%opt{lavender}"
set-face global Error "%opt{red},%opt{black2}"
set-face global StatusLine "%opt{white},%opt{black1}"
set-face global StatusLineMode "%opt{black2},%opt{yellow}"
set-face global StatusLineInfo "%opt{background},%opt{green}"
set-face global StatusLineValue "%opt{orange},%opt{gray0}"
set-face global StatusCursor "%opt{black1},%opt{lavender}"
set-face global Prompt "%opt{green},%opt{black2}"
set-face global MatchingChar "%opt{maroon},%opt{black2}"
set-face global Whitespace "%opt{gray1},%opt{background}+f"
set-face global WrapMarker Whitespace
set-face global BufferPadding "%opt{background},%opt{background}"
# Code
set-face global value "%opt{orange}"
set-face global type "%opt{pink}"
set-face global variable "%opt{white}"
set-face global module "%opt{mauve}"
set-face global function "%opt{sky}"
set-face global string "%opt{green}"
set-face global keyword "%opt{blue}"
set-face global operator "%opt{blue}"
set-face global attribute "%opt{green}"
set-face global comment "%opt{gray1}"
set-face global documentation comment
set-face global meta "%opt{pink}"
set-face global builtin "%opt{lavender}+b"

View File

@ -1,83 +0,0 @@
# Catppuccin theme for Kakoune
# Color palette
declare-option str rosewater 'rgb:f5e0dc'
declare-option str red 'rgb:f38ba8'
declare-option str mauve 'rgb:cba6f7'
declare-option str maroon 'rgb:eba0ac'
declare-option str pink 'rgb:f5c2e7'
declare-option str cyan 'rgb:74c7ec'
declare-option str yellow 'rgb:f9e2af'
declare-option str green 'rgb:a6e3a1'
declare-option str white 'rgb:cdd6f4'
declare-option str blue 'rgb:89b4fa'
declare-option str sky 'rgb:89dceb'
declare-option str lavender 'rgb:b4befe'
declare-option str black1 'rgb:181825'
declare-option str black2 'rgb:1e1e2e'
declare-option str black3 'rgb:313244'
declare-option str orange 'rgb:fab387'
declare-option str teal 'rgb:94e2d5'
declare-option str gray0 'rgb:585b70'
declare-option str gray1 'rgb:6c7086'
declare-option str bright_red %opt{red}
declare-option str bright_green %opt{green}
declare-option str bright_yellow %opt{yellow}
declare-option str bright_blue %opt{blue}
declare-option str bright_cyan %opt{cyan}
declare-option str bright_white %opt{white}
declare-option str foreground %opt{white}
declare-option str background %opt{black2}
# Markup
set-face global title "%opt{rosewater}"
set-face global header "%opt{bright_red}"
set-face global bold "%opt{mauve}"
set-face global italic "%opt{lavender}"
set-face global mono "%opt{green}"
set-face global block "%opt{cyan}"
set-face global link "%opt{green}"
set-face global bullet "%opt{green}"
set-face global list "%opt{white}"
# Builtins
set-face global Default "%opt{white},%opt{background}"
set-face global PrimarySelection "%opt{gray0},%opt{lavender}"
set-face global SecondarySelection "%opt{lavender},%opt{gray0}"
set-face global PrimaryCursor "%opt{background},%opt{rosewater}"
set-face global SecondaryCursor "%opt{black1},%opt{teal}"
set-face global PrimaryCursorEol "%opt{gray0},%opt{mauve}"
set-face global SecondaryCursorEol "%opt{gray0},%opt{maroon}"
set-face global LineNumbers "%opt{gray1},%opt{background}"
set-face global LineNumberCursor "%opt{lavender},%opt{gray0}+b"
set-face global LineNumbersWrapped "%opt{teal},%opt{black1}+i"
set-face global MenuForeground "%opt{white},%opt{gray0}+b"
set-face global MenuBackground "%opt{white},%opt{black3}"
set-face global MenuInfo "%opt{black1},%opt{blue}"
set-face global Information "%opt{black1},%opt{lavender}"
set-face global Error "%opt{red},%opt{black2}"
set-face global StatusLine "%opt{white},%opt{black1}"
set-face global StatusLineMode "%opt{black2},%opt{yellow}"
set-face global StatusLineInfo "%opt{background},%opt{green}"
set-face global StatusLineValue "%opt{orange},%opt{gray0}"
set-face global StatusCursor "%opt{black1},%opt{lavender}"
set-face global Prompt "%opt{green},%opt{black2}"
set-face global MatchingChar "%opt{maroon},%opt{black2}"
set-face global Whitespace "%opt{gray1},%opt{background}+f"
set-face global WrapMarker Whitespace
set-face global BufferPadding "%opt{background},%opt{background}"
# Code
set-face global value "%opt{orange}"
set-face global type "%opt{rosewater}"
set-face global variable "%opt{white}"
set-face global module "%opt{maroon}"
set-face global function "%opt{sky}"
set-face global string "%opt{green}"
set-face global keyword "%opt{blue}"
set-face global operator "%opt{blue}"
set-face global attribute "%opt{green}"
set-face global comment "%opt{gray1}"
set-face global documentation comment
set-face global meta "%opt{pink}"
set-face global builtin "%opt{lavender}+b"

View File

@ -1 +0,0 @@

View File

@ -1,87 +0,0 @@
# Pastel theme for Kakoune
# Color palette
# declare-option str black 'rgb:2b2e33'
declare-option str black default
declare-option str dark 'rgb:3b3b46'
declare-option str gray 'rgb:5a5b5b'
declare-option str aqua 'rgb:6bbac1'
declare-option str white 'rgb:dcdbd7'
declare-option str blue 'rgb:65a4cf'
declare-option str cyan 'rgb:6dcac0'
declare-option str blue_green 'rgb:81bba3'
declare-option str green 'rgb:8dbc92'
declare-option str orange 'rgb:dea981'
declare-option str pink 'rgb:d38da9'
declare-option str purple 'rgb:ca9bf7'
declare-option str red 'rgb:db948e'
declare-option str yellow 'rgb:e1d179'
declare-option str lime 'rgb:adc47e'
declare-option str dimgray 'rgb:3d4747'
declare-option str psel 'rgba:46466480'
declare-option str ssel 'rgba:37375580'
declare-option str background %opt{black}
declare-option str dimmed_background %opt{gray}
declare-option str foreground %opt{white}
# Reference
# https://github.com/mawww/kakoune/blob/master/colors/default.kak
# For code
set-face global value "%opt{yellow}"
set-face global type "%opt{aqua}"
set-face global variable "%opt{purple}"
set-face global module "%opt{white}"
set-face global function "%opt{orange}"
set-face global string "%opt{pink}"
set-face global keyword "%opt{green}"
set-face global operator "%opt{aqua}"
set-face global attribute "%opt{blue_green}"
set-face global bracket "%opt{white}+b"
set-face global arguement "%opt{blue_green}"
set-face global comma "%opt{white}"
set-face global constant "%opt{blue_green}+b"
set-face global class "%opt{lime}"
set-face global comment "%opt{gray}+i"
set-face global meta "%opt{blue}"
set-face global builtin "%opt{cyan}+b"
# For markup
set-face global title "%opt{pink}"
set-face global header "%opt{orange}"
set-face global bold "%opt{pink}"
set-face global italic "%opt{purple}"
set-face global mono "%opt{green}"
set-face global block "%opt{cyan}"
set-face global link "%opt{green}"
set-face global bullet "%opt{green}"
set-face global list "%opt{white}"
# Builtin faces
set-face global Default "%opt{white},%opt{black}"
# set-face global Default "%opt{white},default"
set-face global PrimarySelection "default,%opt{psel}"
set-face global SecondarySelection "default,%opt{ssel}"
set-face global PrimaryCursor "%opt{dark},%opt{purple}"
set-face global SecondaryCursor "%opt{dark},%opt{aqua}"
set-face global PrimaryCursorEol "%opt{dark},%opt{yellow}"
set-face global SecondaryCursorEol "%opt{dark},%opt{blue}"
set-face global LineNumbers "%opt{gray},%opt{black}"
set-face global LineNumberCursor "%opt{purple},%opt{black}+b"
set-face global LineNumbersWrapped "%opt{gray},%opt{black}+i"
set-face global MenuForeground "%opt{dark},%opt{white}+b"
set-face global MenuBackground "%opt{white},%opt{dark}"
set-face global MenuInfo "%opt{dark},%opt{orange}"
set-face global Information "%opt{yellow},%opt{black}"
set-face global Error "%opt{red},%opt{black}"
set-face global StatusLine "%opt{white},%opt{black}"
set-face global StatusLineMode "%opt{aqua},%opt{black}"
set-face global StatusLineInfo "%opt{purple},%opt{black}"
set-face global StatusLineValue "%opt{orange},%opt{black}"
set-face global StatusCursor "%opt{white},%opt{blue}"
set-face global Prompt "%opt{green},%opt{black}"
set-face global MatchingChar "%opt{blue},%opt{black}"
set-face global Whitespace "%opt{dimgray},%opt{black}+f"
set-face global WrapMarker Whitespace
set-face global BufferPadding "%opt{black},%opt{black}"

View File

@ -1,275 +0,0 @@
# ------------------
# Plugin Setup
# ------------------
# IMORTANT NOTE:
# I needed to open kakoune and type ':plug-install' to actually
# install the plugins listed in this file. I did not see this
# mentioned in wikis or anything, so make sure to do this to
# avoid searching github wikis and reddit needlessly.
# Creates the /plugins folder if it doesnt exist each startup
evaluate-commands %sh{
plugins="$kak_config/plugins"
mkdir -p "$plugins"
[ ! -e "$plugins/plug.kak" ] && \
git clone -q https://github.com/andreyorst/plug.kak.git "$plugins/plug.kak"
printf "%s\n" "source '$plugins/plug.kak/rc/plug.kak'"
}
plug "andreyorst/plug.kak" noload
# ------------------
# Editor Settings
# ------------------
# Disables startup message showing
set-option global startup_info_version 30000000
set-option global tabstop 4
set-option global indentwidth 4
set-option global scrolloff 5,3
declare-option str kakrc_path "~/system/nate/dotfiles/kak/kakrc"
declare-option str sway_conf_path "~/system/nate/dotfiles/sway/config.d/default"
declare-option str shell_config "~/system/nate/modules/home-manager/home.nix"
# plug "catppuccin/kakoune" theme config %{
# colorscheme catppuccin_macchiato
# }
colorscheme catppuccin_macchiato
# relative line numbers
hook global BufCreate .* %{
add-highlighter buffer/ number-lines -hlcursor
}
# Git Gutters
hook global WinCreate .* %{ evaluate-commands %sh{
if [ $kak_buffile != $kak_bufname ] && git ls-files --error-unmatch "$kak_buffile" > /dev/null 2>&1; then
echo "git show-diff"
fi
}}
# Write on unfocus
hook global FocusOut .* %{ try %{
write
}}
hook global BufWritePost .* %{ evaluate-commands 'git update-diff' }
hook global BufReload .* %{ evaluate-commands 'git update-diff' }
# Color Render in Echo Area
hook global WinSetOption filetype=kak %{ hook global NormalIdle .* %{
evaluate-commands -save-regs 'a' %{ try %{
execute-keys -draft <a-i>w"ay
evaluate-commands %sh{ (
color="${kak_reg_a}"
inverted_color=$(echo "${color}" | perl -pe 'tr/0123456789abcdefABCDEF/fedcba9876543210543210/')
printf "%s\n" "evaluate-commands -client $kak_client %{ try %{
echo -markup %{{rgb:${inverted_color},rgb:${color}+b} #${color} }
}}" | kak -p $kak_session
) >/dev/null 2>&1 </dev/null & }
}}
}}
# Add default,red and bold style to these regex matches
add-highlighter global/ regex \b(TODO|FIXME|XXX|NOTE)\b 0:default,red+rb
# ------------------
# Key bindings
# ------------------
# Remap hjkl navigation to colemak-dh layout
map global normal n h
map global normal e k
map global normal i j
map global normal o l
map global normal N H
map global normal E K
map global normal I J
map global normal O L
# Remap insert command
map global normal h i
# Insert line above or below
map global normal l o
map global normal L O
# No alt, remap
map global normal <c-f> <a-f> -docstring 'same as [f] but in the other direction'
map global normal <c-t> <a-t> -docstring 'same as [t] but in the other direction'
map global normal <c-n> <a-h> -docstring 'select to beginning of line'
map global normal <c-o> <a-l> -docstring 'select to end of line'
map global normal <c-s> <a-s> -docstring 'split selections on line boundaries'
map global normal <c-S> <a-S> -docstring 'select first and last character of each selection'
map global normal '<c-;>' '<a-;>' -docstring 'flip direction of each selection'
map global normal <c-:> <a-:> -docstring 'ensure selections are in forward direction (cursor then anchor)'
map global normal <c-,> <a-,> -docstring 'clear the main selection'
map global normal <c-.> <a-.> -docstring 'Repeat last object or f/t selection'
# Scrolling remap
map global normal <c-e> <pageup> -docstring 'Scroll screen up'
map global normal <c-i> <pagedown> -docstring 'Scroll screen down'
map global normal <c-/> ':comment-line<ret>' -docstring 'comment selected lines'
# Ctrl-s to save
map global normal <c-s> ':w<ret>' -docstring 'write buffer'
# Ctrl-x to save and exit
map global normal <c-x> ':w<ret>:db<ret>' -docstring 'write close buffer'
# Colemak goto remappings
map global goto n h -docstring 'line start'
map global goto o l -docstring 'line end'
map global goto e k -docstring 'buffer top'
map global goto i j -docstring 'buffer bottom'
map global goto h n
map global goto l o
map global goto k e
map global goto j i
# Remap view keys
map global view n h
map global view o l
map global view e k
map global view i j
map global normal ( ': buffer-previous<ret>' -docstring 'prev buffer'
map global normal ) ': buffer-next<ret>' -docstring 'next buffer'
# map global normal [ ( -docstring 'rotate main selection'
# map global normal ] ) -docstring 'rotate main selection backwards'
# Make x select <param> lines up and down
def -params 1 extend-line-down %{
exec "<a-:>%arg{1}J"
}
def -params 1 extend-line-up %{
exec "<a-:><a-;>%arg{1}K<a-;>"
try %{
exec -draft ';<a-K>\n<ret>'
exec X
}
exec '<a-;><a-X>'
}
map global normal x ':extend-line-down %val{count}<ret>'
map global normal X ':extend-line-up %val{count}<ret>'
map global normal k n -docstring 'next result'
map global normal K N -docstring 'next result add selection'
map global normal <a-k> <c-n> -docstring 'prev result'
map global normal <a-K> <c-N> -docstring 'prev result add selection'
map global insert <down> <c-n> -docstring 'next completion'
map global insert <up> <c-p> -docstring 'prev completion'
# User Mode Bindings
# Accessed with <space>
declare-user-mode git
map global user g ': enter-user-mode git<ret>' -docstring "Git mode"
map global user p '<a-!>wl-paste -n<ret>' -docstring 'paste from system clip board'
hook global RegisterModified '"' %{ nop %sh{
printf %s "$kak_main_reg_dquote" | wl-copy > /dev/null 2>&1 &
}}
# Open kakrc, double quotes needed to ecsape the kakrc_path option
map global user o ":edit %opt{kakrc_path}<ret>" -docstring 'open kakrc'
map global user z ":edit %opt{shell_config}<ret>" -docstring 'open shell config'
map global user S ":edit %opt{sway_conf_path}<ret>" -docstring 'open wm config'
# Git Mode Bindings
map global git d '<esc>:git show-diff<ret>' -docstring "Show diff"
# -----------------
# LSP Configuration
# -----------------
plug "kak-lsp/kak-lsp" do %{
cargo install --locked --force --path .
mkdir -p ~/.config/kak-lsp
cp -n kak-lsp.toml ~/.config/kak-lsp/
} config %{
# enable inlay hints
lsp-inlay-hints-enable global
lsp-inlay-diagnostics-enable global
# set global lsp_diagnostic_line_error_sign '║'
# set global lsp_diagnostic_line_warning_sign '┊'
define-command lsp-restart -docstring 'restart lsp server' %{ lsp-stop; lsp-start }
map global insert <tab> '<a-;>:try lsp-snippets-select-next-placeholders catch %{ execute-keys -with-hooks <lt>tab> }<ret>' -docstring 'Select next snippet placeholder'
map global object a '<a-semicolon>lsp-object<ret>' -docstring 'LSP any symbol'
map global object <a-a> '<a-semicolon>lsp-object<ret>' -docstring 'LSP any symbol'
map global object e '<a-semicolon>lsp-object Function Method<ret>' -docstring 'LSP function or method'
map global object k '<a-semicolon>lsp-object Class Interface Struct<ret>' -docstring 'LSP class interface or struct'
map global object d '<a-semicolon>lsp-diagnostic-object --include-warnings<ret>' -docstring 'LSP errors and warnings'
map global object D '<a-semicolon>lsp-diagnostic-object<ret>' -docstring 'LSP errors'
# load lsp for supported filetypes
set-option global lsp_cmd "kak-lsp -s %val{session} -vvv --log /tmp/kak-lsp.log"
hook global WinSetOption filetype=(rust|python|go|javascript|typescript|c|cpp|zig|dart|ruby) %{
lsp-enable-window
# lsp-auto-hover-enable
map global user l ': enter-user-mode lsp<ret>' -docstring 'lsp mode'
map global user h ': enter-user-mode lsp<ret>h' -docstring 'lsp help'
map global user a ': enter-user-mode lsp<ret>a' -docstring 'lsp code action'
set-option global lsp_hover_anchor false
}
hook global KakEnd .* lsp-exit
}
# -----------------
# Other Plugins
# -----------------
map global goto f '<esc>:prompt -shell-script-candidates %{ fd --type f --hidden } file: %{ edit %val{text} }<ret>' -docstring "file"
map global goto b '<esc>:prompt -buffer-completion buffer: %{ buffer %val{text} }<ret>' -docstring "buffer"
# Fzf Plugin
plug "andreyorst/fzf.kak" config %{
# map global user f ':fzf-mode<ret>v' -docstring 'fzf file in project'
map global user b ':fzf-mode<ret>b' -docstring 'fzf current buffers'
map global user / ':fzf-mode<ret>g' -docstring 'fzf search in project'
# def fzf_file %{
# evaluate-commands %sh{
# printf "%s\n" ":fzf-mode<ret><esc>:fzf -items-cmd fd<ret>"
# }
# }
# Change FZF colors
# FZF_DEFAULT_OPTS=" \
# --color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
# --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
# --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8"
}
plug "alexherbo2/auto-pairs.kak" %{
enable-auto-pairs
}
plug "https://github.com/h-youhei/kakoune-surround"
map global normal <c-m> ':surround<ret>'
# Custom scripts
# evaluate-commands %sh{
# for file in ~/.config/kak/rc/*.kak; do
# printf "source %s\n" $file
# done
# }
# source "~/.config/kak/rc/"

View File

@ -1,40 +0,0 @@
#use evaluate-commands to collapse undo
define-command close_tag %{ evaluate-commands %{
#revert removing indent after leaving insert mode
try %{
execute-keys -draft '<a-h>s[^\n]<ret>'
} catch %{
execute-keys -draft 'K<a-&>'
}
execute-keys ';Gg<a-;>'
evaluate-commands %sh{
tag_list=`echo "$kak_selection" | grep -P -o '(?<=<)[^>]*[^/>](?=>)' | tac | cut -d ' ' -f 1`
close=
close_stack=
result=
for tag in $tag_list ; do
if [ `echo $tag | cut -c 1` = / ] ; then
close=${tag#/}
close_stack=$close\\n$close_stack
else
if [ $kak_opt_filetype != xml ] ; then
case $tag in
#self-closing tags
area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr) continue ;;
esac
fi
if [ $tag = $close ] ; then
close_stack=${close_stack#*\\n}
close=`echo $close_stack | head -n 1`
else
result=$tag
break
fi
fi
done
[ -z $result ] && echo "fail 'no un-closed tag'"
echo "execute-keys -with-hooks \;i<lt>/$result><esc>"
}
}}
map global user c ':close_tag<ret>' -docstring "Close tag"

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