So far everything works. Committing before a possible fuckup
This commit is contained in:
parent
4a2a081d91
commit
ebb5f51a86
7 changed files with 480 additions and 0 deletions
24
dotfiles/ghostty/config
Normal file
24
dotfiles/ghostty/config
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
font-family = Monocraft Nerd Font
|
||||
background-opacity = 0.8
|
||||
theme = IC Orange PPL
|
||||
|
||||
mouse-hide-while-typing = true
|
||||
|
||||
keybind = super+n=new_window
|
||||
keybind = super+h=goto_split:left
|
||||
keybind = super+j=goto_split:down
|
||||
keybind = super+k=goto_split:top
|
||||
keybind = super+l=goto_split:right
|
||||
|
||||
keybind = super+a>h=new_split:left
|
||||
keybind = super+a>j=new_split:down
|
||||
keybind = super+a>k=new_split:up
|
||||
keybind = super+a>l=new_split:right
|
||||
keybind = super+a>f=toggle_split_zoom
|
||||
|
||||
keybind = super+a>n=next_tab
|
||||
keybind = super+a>p=previous_tab
|
||||
|
||||
keybind = super+r=reload_config
|
||||
|
||||
window-save-state = always
|
||||
163
dotfiles/kanata/conf.kbd
Executable file
163
dotfiles/kanata/conf.kbd
Executable file
|
|
@ -0,0 +1,163 @@
|
|||
#|
|
||||
Kanata Config
|
||||
○ Ergonomic (kinda?) 34-key QWERTY layout
|
||||
○ GACS home-row mods
|
||||
○ Layers for function, number, media, and symbol keys
|
||||
○ Dedicated (and non-intrusive!) standard layout toggle for reliant tasks
|
||||
○ Decently commented for beginners and seasoned veterans alike.
|
||||
|
||||
FEEL FREE TO FORK!!!
|
||||
|#
|
||||
(defcfg
|
||||
concurrent-tap-hold yes
|
||||
movemouse-smooth-diagonals yes
|
||||
)
|
||||
#|
|
||||
Trying to be minimal in order to reduce constant editing
|
||||
of layer keys, not to mention how ugly having a 60% layout
|
||||
is when you have mapped keys in the grid.
|
||||
|#
|
||||
(defsrc
|
||||
caps
|
||||
q w e r t y u i o p
|
||||
a s d f g h j k l scln
|
||||
z x c v b n m , . /
|
||||
lmet spc rmet
|
||||
)
|
||||
;; Variables for clean code
|
||||
(defvar
|
||||
tap-time 200
|
||||
hold-time 250
|
||||
chord-time 50
|
||||
)
|
||||
;; Bindings
|
||||
(defalias
|
||||
;; Normal keyboard layer for gaming/other normie usage
|
||||
normie (layer-switch norm)
|
||||
;; Key chord definitions
|
||||
chw (chord ch w)
|
||||
che (chord ch e)
|
||||
chi (chord ch i)
|
||||
cho (chord ch o)
|
||||
chs (chord ch s)
|
||||
chd (chord ch d)
|
||||
chk (chord ch k)
|
||||
chl (chord ch l)
|
||||
ch_lmet (chord ch lmet)
|
||||
ch_rmet (chord ch rmet)
|
||||
;; Remap Caps to Escape/Nav layer
|
||||
navlayer (layer-while-held nav)
|
||||
caps (tap-hold $tap-time $hold-time (tap-dance 200 (esc caps)) @navlayer)
|
||||
;; Home row mods
|
||||
a (tap-hold $tap-time $hold-time a lctl)
|
||||
s (tap-hold $tap-time $hold-time s lalt)
|
||||
d (tap-hold $tap-time $hold-time d lmet)
|
||||
f (tap-hold $tap-time $hold-time f lsft)
|
||||
j (tap-hold $tap-time $hold-time j rsft)
|
||||
k (tap-hold $tap-time $hold-time k lmet)
|
||||
l (tap-hold $tap-time $hold-time l lalt)
|
||||
scln (tap-hold $tap-time $hold-time scln rctl)
|
||||
;; Numpad layer
|
||||
numpad (layer-while-held num)
|
||||
g (tap-hold $tap-time $hold-time g @numpad)
|
||||
;; Function key layer
|
||||
fnkeys (layer-while-held fn)
|
||||
h (tap-hold $tap-time $hold-time h @fnkeys)
|
||||
#|
|
||||
Hyper key when V or M are held down to allow for either hand to
|
||||
use hyper key for AHK/Raycast shortcuts.
|
||||
|#
|
||||
v (tap-hold $tap-time $hold-time v (multi lsft lctl lalt))
|
||||
m (tap-hold $tap-time $hold-time m (multi lsft lctl lalt))
|
||||
;; Holding Spacebar activates symbol layer
|
||||
symbols (layer-while-held symbol)
|
||||
spc (tap-hold $tap-time $hold-time spc @symbols)
|
||||
;; Media layer when Z or / are held.
|
||||
medialy (layer-while-held md)
|
||||
z (tap-hold $tap-time $hold-time z @medialy)
|
||||
/ (tap-hold $tap-time $hold-time / @medialy)
|
||||
)
|
||||
;; Chord definitions. Kind of weird to read as a layperson
|
||||
;; so I provided sufficient comments for general understanding.
|
||||
(defchords ch $chord-time
|
||||
(w ) w ;; W => W
|
||||
( e) e ;; E => E
|
||||
(w e) ret ;; W + E => Enter
|
||||
(i ) i ;; I => I
|
||||
( o) o ;; O => O
|
||||
(i o) bspc ;; I + O => Backspace
|
||||
(s ) @s ;; S => S
|
||||
( d) @d ;; D => D
|
||||
(s d) tab ;; S + D => Tab
|
||||
(k ) @k ;; K => K (See defalias)
|
||||
( l) @l ;; L => L (See defalias)
|
||||
(k l) esc ;; K + L => Escape
|
||||
(lmet ) (tap-dance $tap-time ((multi lsft lctl lalt lmet) lmet)) ;; LCmd => Hyper Key, LCmd × 2 => LCmd
|
||||
( rmet) (tap-dance $tap-time ((multi lsft lctl lalt lmet) lmet)) ;; RCmd => Hyper Key, RAlt × 2 => RCmd
|
||||
#|
|
||||
Put simply, the below line allows for toggling a no-bind
|
||||
layer for when you may require a standard layout (such as
|
||||
playing Street Fighter, Counter Strike, etc.) by pressing
|
||||
both Meta keys at the same time. You can toggle back to the
|
||||
base layer by holding both Meta keys at the same time, as to allow
|
||||
for normal functionality when holding either key down for a shortcut.
|
||||
|#
|
||||
(lmet rmet) (tap-hold $tap-time $hold-time @normie (layer-switch base))
|
||||
)
|
||||
;; Base layer with all binds enabled
|
||||
(deflayer base
|
||||
@caps
|
||||
q @chw @che r t y u @chi @cho p
|
||||
@a @chs @chd @f @g @h @j @chk @chl @scln
|
||||
@z x c @v b n @m , . @/
|
||||
@ch_lmet @spc @ch_rmet
|
||||
)
|
||||
;; Navigation layer
|
||||
(deflayer nav
|
||||
_
|
||||
_ (movemouse-up 3 3) _ _ _ _ mlft mrgt pgup pgdn
|
||||
(movemouse-left 3 3) (movemouse-down 3 3) (movemouse-right 3 3) _ home left down up right end
|
||||
_ _ _ _ _ _ _ _ _ _
|
||||
_ _ _
|
||||
)
|
||||
;; Numpad Layer
|
||||
(deflayer num
|
||||
_
|
||||
_ _ _ _ _ _ 7 8 9 _
|
||||
_ _ _ _ _ _ 4 5 6 0 _
|
||||
_ _ _ _ _ 1 2 3 _
|
||||
_ _ _
|
||||
)
|
||||
;; Function key layer
|
||||
(deflayer fn
|
||||
_
|
||||
f1 f2 f3 f4 _ _ _ _ _ _
|
||||
f5 f6 f7 f8 _ _ _ _ _ _ _
|
||||
f9 f10 f11 f12 _ _ _ _ _
|
||||
_ _ _
|
||||
)
|
||||
;; Symbol layer
|
||||
(deflayer symbol
|
||||
_
|
||||
S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-9 S-0
|
||||
- S-= S-[ S-] [ ] S-` S-scln S-\ \
|
||||
= _ _ ` _ S-- _ _ ' S-'
|
||||
_ _ _
|
||||
)
|
||||
;; Aformentioned standard layer with combo binds for toggling back
|
||||
;; to base layer.
|
||||
(deflayer norm
|
||||
esc
|
||||
q w e r t y u i o p
|
||||
a s d f g h j k l scln
|
||||
z x c v b n m , . /
|
||||
@ch_lmet spc @ch_rmet
|
||||
)
|
||||
;; Media layer
|
||||
(deflayer md
|
||||
_
|
||||
_ _ _ _ _ _ _ _ _ _
|
||||
prev pp next mute vold volu brdn brup ins del
|
||||
_ _ _ _ _ _ _ _ _ _
|
||||
_ _ _
|
||||
)
|
||||
8
dotfiles/skhd/skhdrc
Normal file
8
dotfiles/skhd/skhdrc
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# General Movement
|
||||
alt - h : yabai -m window --focus west
|
||||
alt - j : yabai -m window --focus south
|
||||
alt - k : yabai -m window --focus north
|
||||
alt - l : yabai -m window --focus east
|
||||
|
||||
# Open apps
|
||||
alt - t : open -n -a "ghostty"
|
||||
11
dotfiles/yabai/yabairc
Normal file
11
dotfiles/yabai/yabairc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
yabai -m config layout bsp
|
||||
yabai -m config window_placement second_child
|
||||
|
||||
yabai -m config top_padding 10
|
||||
yabai -m config bottom_padding 10
|
||||
yabai -m config left_padding 10
|
||||
yabai -m config right_padding 10
|
||||
yabai -m config window_gap 10
|
||||
|
||||
yabai -m config mouse_follows_focus on
|
||||
yabai -m config mouse_modifier alt
|
||||
140
flake.lock
generated
Normal file
140
flake.lock
generated
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
{
|
||||
"nodes": {
|
||||
"brew-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756059815,
|
||||
"narHash": "sha256-UALOxoXoFIHbwKzcqbqCAqw5cC0MJEehLaWSet5vxfE=",
|
||||
"owner": "Homebrew",
|
||||
"repo": "brew",
|
||||
"rev": "02947ea4edbdef5fcce9ee57fa289547f4d096c9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Homebrew",
|
||||
"ref": "4.6.7",
|
||||
"repo": "brew",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758207369,
|
||||
"narHash": "sha256-BG7GlXo5moXtrFSCqnkIb1Q00szOZXTj5Dx7NmWgves=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "b5698ed57db7ee7da5e93df2e6bbada91c88f3ce",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"homebrew-cask": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1758245667,
|
||||
"narHash": "sha256-zfbroR4KhbUBD77DlPqHO6igkT6e3hiVmJxuSEk7Aag=",
|
||||
"owner": "homebrew",
|
||||
"repo": "homebrew-cask",
|
||||
"rev": "d8aa9aadd1b2a4342b60062c3dc88d477634cf04",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "homebrew",
|
||||
"repo": "homebrew-cask",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"homebrew-core": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1758247278,
|
||||
"narHash": "sha256-azIe1WP5sj4Im3JRPcF0nKDjoXqnJHKs97Mw3m7eyRM=",
|
||||
"owner": "homebrew",
|
||||
"repo": "homebrew-core",
|
||||
"rev": "bb75886332a24590b175f70bc1191d2c4c8870b5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "homebrew",
|
||||
"repo": "homebrew-core",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758102940,
|
||||
"narHash": "sha256-wwqf3+A8EiqwWpcAaPN20QXJLlpGPpwtLTrzgnngI2o=",
|
||||
"owner": "nix-darwin",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "ebd0bfc11fc2b5cff37401e9b3703881ad5fabbd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-darwin",
|
||||
"ref": "master",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-homebrew": {
|
||||
"inputs": {
|
||||
"brew-src": "brew-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756398546,
|
||||
"narHash": "sha256-n4GVDLhKu65XFraJuCzap2AaZji4xhPaZMTJ8aQdD3s=",
|
||||
"owner": "zhaofengli",
|
||||
"repo": "nix-homebrew",
|
||||
"rev": "3aa475996cb3bc1ecefa88c99c466e6f0bc17431",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "zhaofengli",
|
||||
"repo": "nix-homebrew",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1758029226,
|
||||
"narHash": "sha256-TjqVmbpoCqWywY9xIZLTf6ANFvDCXdctCjoYuYPYdMI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "08b8f92ac6354983f5382124fef6006cade4a1c1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"homebrew-cask": "homebrew-cask",
|
||||
"homebrew-core": "homebrew-core",
|
||||
"nix-darwin": "nix-darwin",
|
||||
"nix-homebrew": "nix-homebrew",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
94
flake.nix
Normal file
94
flake.nix
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
description = "Personal nix-darwin system flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
nix-darwin.url = "github:nix-darwin/nix-darwin/master";
|
||||
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
nix-homebrew.url = "github:zhaofengli/nix-homebrew";
|
||||
homebrew-core = {
|
||||
url = "github:homebrew/homebrew-core";
|
||||
flake = false;
|
||||
};
|
||||
homebrew-cask = {
|
||||
url = "github:homebrew/homebrew-cask";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = inputs@{ self, nix-darwin, nix-homebrew, homebrew-core, homebrew-cask, home-manager, nixpkgs }:
|
||||
let
|
||||
configuration = { pkgs, ... }: {
|
||||
|
||||
users.users.erogers = {
|
||||
name = "erogers";
|
||||
home = "/Users/erogers";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim # Text editor of choice
|
||||
btop # Resource manager
|
||||
iina # Media player
|
||||
yabai # Tiling window manager
|
||||
skhd # Hotkey daemon
|
||||
# raycast # AI chat/Application launcher/Automation tool
|
||||
# kanata # Keyboard remapping tool
|
||||
];
|
||||
|
||||
services.yabai = {
|
||||
enable = true;
|
||||
extraConfig = builtins.readFile ./dotfiles/yabai/yabairc;
|
||||
};
|
||||
services.skhd = {
|
||||
enable = true;
|
||||
skhdConfig = builtins.readFile ./dotfiles/skhd/skhdrc;
|
||||
};
|
||||
system.primaryUser = "erogers";
|
||||
system.defaults = {
|
||||
dock.autohide = true;
|
||||
finder.AppleShowAllExtensions = true;
|
||||
};
|
||||
|
||||
|
||||
|
||||
nix.enable =false;
|
||||
# Necessary for using flakes on this system.
|
||||
nix.settings.experimental-features = "nix-command flakes";
|
||||
# Allow unfree software
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# Allow for TouchID authentication when executing commands with sudo
|
||||
security.pam.services.sudo_local.touchIdAuth = true;
|
||||
# Set Git commit hash for darwin-version.
|
||||
system.configurationRevision = self.rev or self.dirtyRev or null;
|
||||
# Used for backwards compatibility, please read the changelog before changing.
|
||||
# $ darwin-rebuild changelog
|
||||
system.stateVersion = 6;
|
||||
# The platform the configuration will be used on.
|
||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||
};
|
||||
in
|
||||
{
|
||||
# Build darwin flake using:
|
||||
# $ darwin-rebuild build --flake .#Angrboda
|
||||
darwinConfigurations."Angrboda" = nix-darwin.lib.darwinSystem {
|
||||
modules = [
|
||||
configuration
|
||||
nix-homebrew.darwinModules.nix-homebrew {
|
||||
nix-homebrew = {
|
||||
enable = true;
|
||||
enableRosetta = true;
|
||||
user = "erogers";
|
||||
autoMigrate = true;
|
||||
};
|
||||
}
|
||||
home-manager.darwinModules.home-manager {
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.erogers = import ./home.nix;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
40
home.nix
Normal file
40
home.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
home.stateVersion = "25.05"; # Please read the comment before changing.
|
||||
|
||||
home.packages = with pkgs; [
|
||||
irssi
|
||||
];
|
||||
|
||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||
# plain files is through 'home.file'.
|
||||
home.file = {
|
||||
# # 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;
|
||||
|
||||
# # You can also set the file content immediately.
|
||||
# ".gradle/gradle.properties".text = ''
|
||||
# org.gradle.console=verbose
|
||||
# org.gradle.daemon.idletimeout=3600000
|
||||
# '';
|
||||
};
|
||||
|
||||
# You can also manage environment variables but you will have to manually
|
||||
# source
|
||||
#
|
||||
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# or
|
||||
#
|
||||
# /etc/profiles/per-user/davish/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# if you don't want to manage your shell through Home Manager.
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue