mirror of
https://github.com/pnx/dotfiles
synced 2026-08-27 05:08:13 +02:00
Compare commits
No commits in common. "191de3c0a674294641862d26f2e4883457e4bcea" and "2af28c3050a820d3eec83d535d78ccbede30c27e" have entirely different histories.
191de3c0a6
...
2af28c3050
23 changed files with 177 additions and 70 deletions
|
|
@ -1,3 +0,0 @@
|
||||||
set -x ANDROID_HOME "$HOME/Android/Sdk"
|
|
||||||
set -x ANDROID_SDK_ROOT "$ANDROID_HOME"
|
|
||||||
fish_add_path "$ANDROID_HOME/platform-tools" "$ANDROID_HOME/cmdline-tools/latest/bin" "$ANDROID_HOME/emulator"
|
|
||||||
3
fish/conf.d/opencode.fish
Normal file
3
fish/conf.d/opencode.fish
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
if [ -d "$HOME/.opencode/bin" ]
|
||||||
|
fish_add_path $HOME/.opencode/bin
|
||||||
|
end
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
BASE_URL=https://raw.githubusercontent.com/pnx/Iosevka-custom/main/dist
|
|
||||||
INSTALL_DIR=~/.local/share/fonts
|
|
||||||
|
|
||||||
FONTS=(
|
|
||||||
IosevkaCustom-Regular.ttf
|
|
||||||
IosevkaCustom-SemiBold.ttf
|
|
||||||
IosevkaCustomNerdFont-Regular.ttf
|
|
||||||
IosevkaCustomNerdFont-SemiBold.ttf
|
|
||||||
)
|
|
||||||
|
|
||||||
for font in ${FONTS[@]}; do
|
|
||||||
echo "Installing ${font} to '${INSTALL_DIR}/${font}'"
|
|
||||||
curl -L -o "${INSTALL_DIR}/${font}" "${BASE_URL}/${font}"
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
2
fonts/Iosevka/.gitignore
vendored
Normal file
2
fonts/Iosevka/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
.build
|
||||||
|
.patcher
|
||||||
26
fonts/Iosevka/Makefile
Normal file
26
fonts/Iosevka/Makefile
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
IOSEVKA_GIT=https://github.com/be5invis/Iosevka.git
|
||||||
|
FONT_NAME=IosevkaCustom
|
||||||
|
BUILD_DIR=.build
|
||||||
|
INSTALL_DIR ?= ~/.local/share/fonts
|
||||||
|
|
||||||
|
.phony = install
|
||||||
|
|
||||||
|
build: $(BUILD_DIR) \
|
||||||
|
$(BUILD_DIR)/node_modules \
|
||||||
|
$(BUILD_DIR)/private-build-plans.toml
|
||||||
|
cd $(BUILD_DIR); npm run build -- ttf::$(FONT_NAME)
|
||||||
|
install -m 644 $(BUILD_DIR)/dist/$(FONT_NAME)/TTF/*.ttf dist
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p $(INSTALL_DIR)
|
||||||
|
install -m 644 dist/*.ttf $(INSTALL_DIR)
|
||||||
|
|
||||||
|
$(BUILD_DIR) :
|
||||||
|
git clone --depth 1 $(IOSEVKA_GIT) $(BUILD_DIR)
|
||||||
|
|
||||||
|
$(BUILD_DIR)/node_modules :
|
||||||
|
cd $(BUILD_DIR); npm install
|
||||||
|
|
||||||
|
$(BUILD_DIR)/private-build-plans.toml : config.toml
|
||||||
|
cp $< $@
|
||||||
|
|
||||||
94
fonts/Iosevka/config.toml
Normal file
94
fonts/Iosevka/config.toml
Normal file
|
|
@ -0,0 +1,94 @@
|
||||||
|
[buildPlans.IosevkaCustom]
|
||||||
|
family = "IosevkaCustom"
|
||||||
|
spacing = "term"
|
||||||
|
serifs = "sans"
|
||||||
|
noCvSs = true
|
||||||
|
exportGlyphNames = false
|
||||||
|
noLigation = true
|
||||||
|
|
||||||
|
[buildPlans.IosevkaCustom.variants]
|
||||||
|
inherits = "ss12"
|
||||||
|
|
||||||
|
[buildPlans.IosevkaCustom.variants.design]
|
||||||
|
one = "base"
|
||||||
|
two = "straight-neck-serifless"
|
||||||
|
five = "upright-arched-serifless"
|
||||||
|
six = "closed-contour"
|
||||||
|
eight = "crossing"
|
||||||
|
nine = "straight-bar"
|
||||||
|
zero = "slashed"
|
||||||
|
capital-d = "standard-serifless"
|
||||||
|
capital-g = "toothless-corner-serifless-hooked"
|
||||||
|
capital-m = "flat-bottom-serifless"
|
||||||
|
capital-q = "crossing"
|
||||||
|
capital-r = "straight-serifless"
|
||||||
|
capital-w = "straight-flat-top-serifless"
|
||||||
|
a = "single-storey-earless-corner-serifless"
|
||||||
|
f = "flat-hook-serifless-crossbar-at-x-height"
|
||||||
|
g = "single-storey-flat-hook-earless-corner"
|
||||||
|
i = "serifed"
|
||||||
|
j = "flat-hook-serifless"
|
||||||
|
l = "serifed"
|
||||||
|
m = "earless-corner-double-arch-serifless"
|
||||||
|
t = "flat-hook"
|
||||||
|
w = "straight-flat-top-serifless"
|
||||||
|
y = "straight-serifless"
|
||||||
|
lower-eth = "straight-bar"
|
||||||
|
tittle = "square"
|
||||||
|
diacritic-dot = "square"
|
||||||
|
punctuation-dot = "square"
|
||||||
|
braille-dot = "square"
|
||||||
|
asterisk = "turn-hex-low"
|
||||||
|
underscore = "above-baseline"
|
||||||
|
brace = "curly"
|
||||||
|
number-sign = "upright"
|
||||||
|
dollar = "interrupted"
|
||||||
|
question = "corner-flat-hooked"
|
||||||
|
pilcrow = "high"
|
||||||
|
lig-ltgteq = "slanted"
|
||||||
|
lig-equal-chain = "without-notch"
|
||||||
|
lig-hyphen-chain = "without-notch"
|
||||||
|
|
||||||
|
[buildPlans.IosevkaCustom.weights.Regular]
|
||||||
|
shape = 400
|
||||||
|
menu = 400
|
||||||
|
css = 400
|
||||||
|
|
||||||
|
[buildPlans.IosevkaCustom.weights.SemiBold]
|
||||||
|
shape = 600
|
||||||
|
menu = 600
|
||||||
|
css = 600
|
||||||
|
|
||||||
|
[buildPlans.IosevkaCustom.widths.Normal]
|
||||||
|
shape = 500
|
||||||
|
menu = 5
|
||||||
|
css = "normal"
|
||||||
|
|
||||||
|
[buildPlans.IosevkaCustom.slopes.Upright]
|
||||||
|
angle = 0
|
||||||
|
shape = "upright"
|
||||||
|
menu = "upright"
|
||||||
|
css = "normal"
|
||||||
|
|
||||||
|
[buildPlans.IosevkaCustom.ligations]
|
||||||
|
disables = [
|
||||||
|
"slash-asterisk",
|
||||||
|
"trig"
|
||||||
|
]
|
||||||
|
# enables = [
|
||||||
|
# "arrow-l",
|
||||||
|
# "arrow-r",
|
||||||
|
# "eqeq",
|
||||||
|
# "eqeqeq",
|
||||||
|
# "exeq",
|
||||||
|
# "exeqeq",
|
||||||
|
# "exeqeqeq",
|
||||||
|
# "lteq",
|
||||||
|
# "gteq",
|
||||||
|
# "ltgt-ne",
|
||||||
|
# "llgg",
|
||||||
|
# "llggeq",
|
||||||
|
# # "kern-dotty",
|
||||||
|
# # "kern-bars",
|
||||||
|
# "html-comment"
|
||||||
|
# ]
|
||||||
3
fonts/Iosevka/deps.sh
Executable file
3
fonts/Iosevka/deps.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
sudo dnf install ttfautohint fontforge python3-fontforge
|
||||||
BIN
fonts/Iosevka/dist/IosevkaCustom-Regular.ttf
vendored
Normal file
BIN
fonts/Iosevka/dist/IosevkaCustom-Regular.ttf
vendored
Normal file
Binary file not shown.
BIN
fonts/Iosevka/dist/IosevkaCustom-SemiBold.ttf
vendored
Normal file
BIN
fonts/Iosevka/dist/IosevkaCustom-SemiBold.ttf
vendored
Normal file
Binary file not shown.
BIN
fonts/Iosevka/dist/IosevkaCustomNerdFont-Regular.ttf
vendored
Normal file
BIN
fonts/Iosevka/dist/IosevkaCustomNerdFont-Regular.ttf
vendored
Normal file
Binary file not shown.
BIN
fonts/Iosevka/dist/IosevkaCustomNerdFont-SemiBold.ttf
vendored
Normal file
BIN
fonts/Iosevka/dist/IosevkaCustomNerdFont-SemiBold.ttf
vendored
Normal file
Binary file not shown.
23
fonts/Iosevka/patcher.sh
Executable file
23
fonts/Iosevka/patcher.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BASE_PATH=$(dirname $(readlink -f $BASH_SOURCE))
|
||||||
|
|
||||||
|
TMP_DIR=${BASE_PATH}/.patcher
|
||||||
|
SCRIPT_FILE="$TMP_DIR/font-patcher"
|
||||||
|
URL=https://github.com/ryanoasis/nerd-fonts/releases/latest/download/FontPatcher.zip
|
||||||
|
ZIP_FILE=patcher.zip
|
||||||
|
|
||||||
|
if [ ! -f $SCRIPT_FILE ];then
|
||||||
|
mkdir $TMP_DIR
|
||||||
|
|
||||||
|
if [ ! -f "$TMP_DIR/$ZIP_FILE" ]; then
|
||||||
|
curl -L -o "$TMP_DIR/$ZIP_FILE" ${URL}
|
||||||
|
fi
|
||||||
|
|
||||||
|
unzip "$TMP_DIR/$ZIP_FILE" -d $TMP_DIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
for font in ${BASE_PATH}/dist/IosevkaCustom-*.ttf; do
|
||||||
|
$SCRIPT_FILE -out ${BASE_PATH}/dist -c $font
|
||||||
|
done
|
||||||
|
|
||||||
|
|
@ -6,7 +6,6 @@ font-family = "IosevkaCustom Nerd Font"
|
||||||
font-style-bold = "SemiBold"
|
font-style-bold = "SemiBold"
|
||||||
font-style = ""
|
font-style = ""
|
||||||
font-size = 15
|
font-size = 15
|
||||||
font-feature = -dlig, -liga, -calt
|
|
||||||
|
|
||||||
adjust-cell-width = 1
|
adjust-cell-width = 1
|
||||||
adjust-cell-height = 8
|
adjust-cell-height = 8
|
||||||
|
|
@ -26,8 +25,6 @@ cursor-style-blink = false
|
||||||
theme = skift
|
theme = skift
|
||||||
|
|
||||||
# Behavior
|
# Behavior
|
||||||
working-directory = home
|
|
||||||
window-inherit-working-directory = false
|
|
||||||
copy-on-select=clipboard
|
copy-on-select=clipboard
|
||||||
right-click-action=paste
|
right-click-action=paste
|
||||||
clipboard-trim-trailing-spaces=true
|
clipboard-trim-trailing-spaces=true
|
||||||
|
|
@ -36,8 +33,8 @@ desktop-notifications=false
|
||||||
|
|
||||||
# Keybinds
|
# Keybinds
|
||||||
|
|
||||||
# keybind = ctrl+click=ignore
|
keybind = "ctrl+click" = ignore
|
||||||
# keybind = shift+click=open_url
|
keybind = "shift+click" = open_url
|
||||||
|
|
||||||
# keybind = performable:ctrl+c=copy_to_clipboard
|
# keybind = performable:ctrl+c=copy_to_clipboard
|
||||||
# keybind = performable:ctrl+v=paste_from_clipboard
|
# keybind = performable:ctrl+v=paste_from_clipboard
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
/.tmp
|
|
||||||
**/.claude/settings.local.json
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
[user]
|
[user]
|
||||||
email = henrik.hautakoski@gmail.com
|
email = henrik.hautakoski@gmail.com
|
||||||
name = Henrik Hautakoski
|
name = Henrik Hautakoski
|
||||||
[core]
|
|
||||||
excludesFile = ~/.config/git/ignore
|
|
||||||
[pull]
|
[pull]
|
||||||
rebase = true
|
rebase = true
|
||||||
[init]
|
[init]
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ $color_active_border = $color_border
|
||||||
$color_inactive_border = $color_border
|
$color_inactive_border = $color_border
|
||||||
|
|
||||||
# Set programs that you use
|
# Set programs that you use
|
||||||
$terminal = ghostty
|
$terminal = alacritty
|
||||||
$menu = rofi -show drun
|
$menu = rofi -show drun
|
||||||
$run_prog = rofi -show run
|
$run_prog = rofi -show run
|
||||||
$screenshot = grim -g "$(slurp)" - | wl-copy
|
$screenshot = grim -g "$(slurp)" - | wl-copy
|
||||||
|
|
@ -92,6 +92,7 @@ animations {
|
||||||
}
|
}
|
||||||
|
|
||||||
dwindle {
|
dwindle {
|
||||||
|
pseudotile = no # master switch for pseudotiling.
|
||||||
preserve_split = true
|
preserve_split = true
|
||||||
precise_mouse_move = true
|
precise_mouse_move = true
|
||||||
}
|
}
|
||||||
|
|
@ -161,6 +162,7 @@ bind = $mainMod, S, exec, $screenshot
|
||||||
# Windows
|
# Windows
|
||||||
bind = $mainMod, X, killactive,
|
bind = $mainMod, X, killactive,
|
||||||
bind = $mainMod, F, togglefloating,
|
bind = $mainMod, F, togglefloating,
|
||||||
|
bind = $mainMod, V, togglesplit, # dwindle
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
# Move focus with mainMod + arrow keys
|
||||||
bind = $mainMod, left, movefocus, l
|
bind = $mainMod, left, movefocus, l
|
||||||
|
|
@ -206,7 +208,7 @@ bindm = $mainMod, mouse:273, resizewindow
|
||||||
# -------------
|
# -------------
|
||||||
|
|
||||||
# Hyprland apps
|
# Hyprland apps
|
||||||
exec-once=hypridle
|
exec-once = hypridle
|
||||||
|
|
||||||
# set wallpaper
|
# set wallpaper
|
||||||
exec-once=hyprpaper
|
exec-once=hyprpaper
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
splash = false
|
splash = false
|
||||||
ipc = true
|
ipc = false
|
||||||
|
|
||||||
wallpaper {
|
wallpaper {
|
||||||
monitor =
|
monitor =
|
||||||
path = ~/.local/share/wallpapers/wallpaper.jpeg
|
path = ~/.local/share/wallpapers/wallpaper.jpeg
|
||||||
fit_mode = cover
|
fit_mode = fit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,28 +4,36 @@ description: Create well-formatted commits with conventional commit messages
|
||||||
|
|
||||||
# Commit Command
|
# Commit Command
|
||||||
|
|
||||||
You are an AI agent that helps create well-formatted git commits with conventional commit messages, follow these instructions exactly. Always run and NEVER push the commit, you don't need to ask for confirmation unless there is a big issue or error.
|
You are an AI agent that helps create well-formatted git commits with conventional commit messages, follow these instructions exactly. Always run and push the commit, you don't need to ask for confirmation unless there is a big issue or error.
|
||||||
|
|
||||||
## Instructions for Agent
|
## Instructions for Agent
|
||||||
|
|
||||||
When the user runs this command, execute the following workflow:
|
When the user runs this command, execute the following workflow:
|
||||||
|
|
||||||
1. **Analyze git status**:
|
1. **Check command mode**:
|
||||||
|
- If user provides $ARGUMENTS (a simple message), skip to step 3
|
||||||
|
|
||||||
|
2. **Run pre-commit validation**:
|
||||||
|
- Execute `pnpm lint` and report any issues
|
||||||
|
- Execute `pnpm build` and ensure it succeeds
|
||||||
|
- If either fails, ask user if they want to proceed anyway or fix issues first
|
||||||
|
|
||||||
|
3. **Analyze git status**:
|
||||||
- Run `git status --porcelain` to check for changes
|
- Run `git status --porcelain` to check for changes
|
||||||
- If no files are staged, run `git add .` to stage all modified files
|
- If no files are staged, run `git add .` to stage all modified files
|
||||||
- If files are already staged, proceed with only those files
|
- If files are already staged, proceed with only those files
|
||||||
|
|
||||||
2. **Analyze the changes**:
|
4. **Analyze the changes**:
|
||||||
- Run `git diff --cached` to see what will be committed
|
- Run `git diff --cached` to see what will be committed
|
||||||
- Analyze the diff to determine the primary change type (feat, fix, docs, etc.)
|
- Analyze the diff to determine the primary change type (feat, fix, docs, etc.)
|
||||||
- Identify the main scope and purpose of the changes
|
- Identify the main scope and purpose of the changes
|
||||||
|
|
||||||
3. **Generate commit message**:
|
5. **Generate commit message**:
|
||||||
- Create message following format: `<type>: <description>`
|
- Create message following format: `<type>: <description>`
|
||||||
- Keep description concise, clear, and in imperative mood
|
- Keep description concise, clear, and in imperative mood
|
||||||
- Show the proposed message to user for confirmation
|
- Show the proposed message to user for confirmation
|
||||||
|
|
||||||
4. **Execute the commit**:
|
6. **Execute the commit**:
|
||||||
- Run `git commit -m "<generated message>"`
|
- Run `git commit -m "<generated message>"`
|
||||||
- Display the commit hash and confirm success
|
- Display the commit hash and confirm success
|
||||||
- Provide brief summary of what was committed
|
- Provide brief summary of what was committed
|
||||||
|
|
@ -82,6 +90,6 @@ Example commit sequence:
|
||||||
- **Error handling**: If validation fails, give user option to proceed or fix issues first
|
- **Error handling**: If validation fails, give user option to proceed or fix issues first
|
||||||
- **Auto-staging**: If no files are staged, automatically stage all changes with `git add .`
|
- **Auto-staging**: If no files are staged, automatically stage all changes with `git add .`
|
||||||
- **File priority**: If files are already staged, only commit those specific files
|
- **File priority**: If files are already staged, only commit those specific files
|
||||||
- **Never push the commit**: You must never under any circumstances execute `git push`.
|
- **Always run and push the commit**: You don't need to ask for confirmation unless there is a big issue or error `git push`.
|
||||||
- **Message quality**: Ensure commit messages are clear, concise, and follow conventional format
|
- **Message quality**: Ensure commit messages are clear, concise, and follow conventional format
|
||||||
- **Success feedback**: After successful commit, show commit hash and brief summary
|
- **Success feedback**: After successful commit, show commit hash and brief summary
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"mcp": {
|
"mcp": {
|
||||||
"linear": {
|
"neuron-ai-doc": {
|
||||||
"type": "remote",
|
"type": "remote",
|
||||||
"url": "https://mcp.linear.app/mcp",
|
"url": "https://docs.neuron-ai.dev/~gitbook/mcp",
|
||||||
"enabled": true
|
"enabled": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ export const Notify: Plugin = async ({ $ }) => {
|
||||||
return {
|
return {
|
||||||
async event(input) {
|
async event(input) {
|
||||||
if (input.event.type === "session.idle") {
|
if (input.event.type === "session.idle") {
|
||||||
await $`notify-send -t 10000 "Opencode" "Your code is done!" &> /dev/null`
|
await $`notify-send t 10000 "Opencode" "Your code is done!"`
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://opencode.ai/tui.json",
|
"$schema": "https://opencode.ai/tui.json",
|
||||||
"theme": "custom",
|
"theme": "custom"
|
||||||
"keybinds": {
|
|
||||||
"app_exit": "<leader>q"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ phpunit.enabled: true
|
||||||
code_transform.class_new.variants:
|
code_transform.class_new.variants:
|
||||||
laravel-model: laravel-model
|
laravel-model: laravel-model
|
||||||
laravel-provider: laravel-provider
|
laravel-provider: laravel-provider
|
||||||
laravel-command: laravel-command
|
|
||||||
laravel-facade: laravel-facade
|
laravel-facade: laravel-facade
|
||||||
laravel-phpunit-test: laravel-phpunit-test
|
laravel-phpunit-test: laravel-phpunit-test
|
||||||
phpunit-test: phpunit-test
|
phpunit-test: phpunit-test
|
||||||
|
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace {{ prototype.namespace }};
|
|
||||||
|
|
||||||
use Illuminate\Console\Attributes\Description;
|
|
||||||
use Illuminate\Console\Attributes\Signature;
|
|
||||||
use Illuminate\Console\Command;
|
|
||||||
|
|
||||||
{% for class in prototype.classes %}
|
|
||||||
#[Signature('app:{{ class.name | lower }}')]
|
|
||||||
#[Description('Command description')]
|
|
||||||
class {{ class.name }} extends Command
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Execute the console command.
|
|
||||||
*/
|
|
||||||
public function handle()
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{% endfor %}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue