+6
.chezmoiexternal.toml
+6
.chezmoiexternal.toml
+1
.chezmoiignore
+1
.chezmoiignore
···
···
1
+
Brewfile
-1
.gitignore
-1
.gitignore
···
1
-
result
···
+103
Brewfile
+103
Brewfile
···
···
1
+
tap "dekker1/minizinc", "git@github.com:Dekker1/homebrew-minizinc.git"
2
+
tap "homebrew/bundle"
3
+
tap "homebrew/cask"
4
+
tap "homebrew/cask-fonts"
5
+
tap "homebrew/core"
6
+
tap "homebrew/services"
7
+
tap "koekeishiya/formulae"
8
+
brew "bat"
9
+
brew "bison"
10
+
brew "black"
11
+
brew "ccache"
12
+
brew "chezmoi"
13
+
brew "cmake"
14
+
brew "exa"
15
+
brew "fd"
16
+
brew "flex"
17
+
brew "fzf"
18
+
brew "gecode"
19
+
brew "gnupg"
20
+
brew "go"
21
+
brew "hugo"
22
+
brew "hut"
23
+
brew "llvm"
24
+
brew "ltex-ls"
25
+
brew "mas"
26
+
brew "mdbook"
27
+
brew "neovim"
28
+
brew "ninja"
29
+
brew "node"
30
+
brew "nushell"
31
+
brew "or-tools"
32
+
brew "pandoc"
33
+
brew "pinentry-mac"
34
+
brew "pipx"
35
+
brew "poetry"
36
+
brew "prettier"
37
+
brew "python@3.9"
38
+
brew "ripgrep"
39
+
brew "rustup-init"
40
+
brew "scip"
41
+
brew "starship"
42
+
brew "tectonic"
43
+
brew "texlab"
44
+
brew "topgrade"
45
+
brew "typst"
46
+
brew "xonsh"
47
+
brew "zoxide"
48
+
brew "zplug"
49
+
brew "dekker1/minizinc/choco"
50
+
brew "dekker1/minizinc/chuffed"
51
+
brew "dekker1/minizinc/flatzingo"
52
+
brew "dekker1/minizinc/fzn-oscar-cbls"
53
+
brew "dekker1/minizinc/fzn-picat"
54
+
brew "dekker1/minizinc/geas"
55
+
brew "dekker1/minizinc/jacop"
56
+
brew "dekker1/minizinc/open-wbo"
57
+
brew "dekker1/minizinc/yuck"
58
+
brew "koekeishiya/formulae/skhd"
59
+
brew "koekeishiya/formulae/yabai"
60
+
cask "alfred"
61
+
cask "calibre"
62
+
cask "chromium"
63
+
cask "discord"
64
+
cask "docker"
65
+
cask "firefox"
66
+
cask "fleet"
67
+
cask "font-atkinson-hyperlegible"
68
+
cask "font-ibm-plex"
69
+
cask "font-iosevka"
70
+
cask "font-iosevka-slab"
71
+
cask "font-playfair-display"
72
+
cask "kitty"
73
+
cask "mactex-no-gui"
74
+
cask "minizincide"
75
+
cask "mirrorop"
76
+
cask "multipass"
77
+
cask "notion"
78
+
cask "signal"
79
+
cask "skim"
80
+
cask "sublime-merge"
81
+
cask "sublime-text"
82
+
cask "vscodium"
83
+
cask "zoom"
84
+
cask "zotero"
85
+
cask "zulip"
86
+
mas "1Password for Safari", id: 1569813296
87
+
mas "Baking Soda", id: 1601151613
88
+
mas "Kagi Inc.", id: 1622835804
89
+
mas "Keynote", id: 409183694
90
+
mas "Microsoft Excel", id: 462058435
91
+
mas "Microsoft Word", id: 462054704
92
+
mas "Numbers", id: 409203825
93
+
mas "Pages", id: 409201541
94
+
mas "Pixelmator Pro", id: 1289583905
95
+
mas "Qantas", id: 1468230799
96
+
mas "Slack", id: 803453959
97
+
mas "Textual IRC Client", id: 1262957439
98
+
mas "The Unarchiver", id: 425424353
99
+
mas "Things", id: 904280696
100
+
mas "Userscripts-Mac-App", id: 1463298887
101
+
mas "Vinegar", id: 1591303229
102
+
mas "WhatsApp", id: 1147396723
103
+
mas "Wipr", id: 1320666476
-9
GhosttyNewWindow.scpt
-9
GhosttyNewWindow.scpt
-23
darwin/casks.nix
-23
darwin/casks.nix
···
1
-
{}:
2
-
[
3
-
# Development Tools
4
-
"ghostty"
5
-
"minizincide"
6
-
"sublime-merge"
7
-
"vscodium"
8
-
"zed"
9
-
10
-
# Communication Tools
11
-
"beeper"
12
-
"zoom"
13
-
14
-
# Utility Tools
15
-
"languagetool-desktop"
16
-
"skim"
17
-
18
-
# Productivity Tools
19
-
"1password-cli"
20
-
21
-
# Browsers
22
-
"zen"
23
-
]
···
-50
darwin/config/skhdrc
-50
darwin/config/skhdrc
···
1
-
# Open applications
2
-
alt - return : open "warp://action/new_window?path=$HOME"
3
-
# alt - return : /Users/dekker1/.nix-profile/bin/kitty --single-instance -d ~
4
-
5
-
# Focus display
6
-
alt - tab : yabai -m display --focus recent
7
-
8
-
# Focus window
9
-
alt - h : yabai -m window --focus west
10
-
alt - j : yabai -m window --focus south
11
-
alt - k : yabai -m window --focus north
12
-
alt - l : yabai -m window --focus east
13
-
14
-
alt - left : yabai -m window --focus west
15
-
alt - down : yabai -m window --focus south
16
-
alt - up : yabai -m window --focus north
17
-
alt - right : yabai -m window --focus east
18
-
19
-
# Swap window
20
-
shift + alt - h : yabai -m window --swap west
21
-
shift + alt - j : yabai -m window --swap south
22
-
shift + alt - k : yabai -m window --swap north
23
-
shift + alt - l : yabai -m window --swap east
24
-
25
-
shift + alt - left : yabai -m window --swap west
26
-
shift + alt - down : yabai -m window --swap south
27
-
shift + alt - up : yabai -m window --swap north
28
-
shift + alt - right : yabai -m window --swap east
29
-
30
-
# Move focus container to workspace
31
-
shift + alt - 1 : yabai -m window --space 1; yabai -m space --focus 1
32
-
shift + alt - 2 : yabai -m window --space 2; yabai -m space --focus 2
33
-
shift + alt - 3 : yabai -m window --space 3; yabai -m space --focus 3
34
-
shift + alt - 4 : yabai -m window --space 4; yabai -m space --focus 4
35
-
shift + alt - 5 : yabai -m window --space 5; yabai -m space --focus 5
36
-
shift + alt - 6 : yabai -m window --space 6; yabai -m space --focus 6
37
-
shift + alt - 7 : yabai -m window --space 7; yabai -m space --focus 7
38
-
shift + alt - 8 : yabai -m window --space 8; yabai -m space --focus 8
39
-
shift + alt - 9 : yabai -m window --space 9; yabai -m space --focus 9
40
-
shift + alt - 0 : yabai -m window --space 0; yabai -m space --focus 0
41
-
42
-
# Enable / Disable gaps in current workspace
43
-
lctrl + alt - g : yabai -m space --toggle padding; yabai -m space --toggle gap
44
-
45
-
# Float / Unfloat window
46
-
shift + alt - space : yabai -m window --toggle float;
47
-
48
-
# Make window native fullscreen
49
-
alt - f : yabai -m window --toggle zoom-fullscreen
50
-
shift + alt - f : yabai -m window --toggle native-fullscreen
···
-20
darwin/config/yabairc
-20
darwin/config/yabairc
···
1
-
yabai -m config layout bsp
2
-
yabai -m config top_padding 4
3
-
yabai -m config bottom_padding 4
4
-
yabai -m config left_padding 4
5
-
yabai -m config right_padding 4
6
-
yabai -m config window_gap 4
7
-
8
-
yabai -m rule --add label="About This Mac" app="System Information" title="About This Mac" manage=off
9
-
yabai -m rule --add label="Activity Monitor" app="^Activity Monitor$" manage=off
10
-
yabai -m rule --add label="App Store" app="^App Store$" manage=off
11
-
yabai -m rule --add label="Calculator" app="^Calculator$" manage=off
12
-
yabai -m rule --add label="Dictionary" app="^Dictionary$" manage=off
13
-
yabai -m rule --add label="Digital Colour Meter" app="^Digital Colou?r Meter$" sticky=on
14
-
yabai -m rule --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off
15
-
yabai -m rule --add label="Fork" app="^Fork$" manage=off sticky=on
16
-
yabai -m rule --add label="Safari" app="^Safari$" title="^(General|(Tab|Password|Website|Extension)s|AutoFill|Se(arch|curity)|Privacy|Advance)$" manage=off
17
-
yabai -m rule --add label="Software Update" title="Software Update" manage=off
18
-
yabai -m rule --add label="Sublime Merge" app="^Sublime Merge$" manage=off sticky=on
19
-
yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off
20
-
yabai -m rule --add label="Tweetbot" app="^Tweetbot$" title=".*" manage=off
···
-150
darwin/default.nix
-150
darwin/default.nix
···
1
-
{ pkgs, user, ... }:
2
-
{
3
-
imports = [
4
-
./home-manager.nix
5
-
../shared
6
-
../shared/cachix
7
-
];
8
-
9
-
# Setup user, packages, programs
10
-
nix = {
11
-
package = pkgs.nix;
12
-
settings.trusted-users = [ "@admin" "${user}" ];
13
-
14
-
gc = {
15
-
automatic = true;
16
-
interval = { Weekday = 0; Hour = 2; Minute = 0; };
17
-
options = "--delete-older-than 30d";
18
-
};
19
-
20
-
# Turn this on to make command line easier
21
-
extraOptions = ''
22
-
experimental-features = nix-command flakes
23
-
'';
24
-
};
25
-
26
-
# Turn off NIX_PATH warnings now that we're using flakes
27
-
system.checks.verifyNixPath = false;
28
-
29
-
30
-
# Load configuration that is shared across systems
31
-
environment.systemPackages = import ../shared/packages.nix { inherit pkgs; } ++ [
32
-
# MacOS specific packages
33
-
];
34
-
35
-
fonts.packages = import ../shared/fonts.nix { inherit pkgs; };
36
-
37
-
users.users.${user} = {
38
-
packages = import ../shared/packages.nix { inherit pkgs; } ++ [
39
-
# MacOS specific packages
40
-
];
41
-
};
42
-
43
-
# Setup MacOS specific services
44
-
services = {
45
-
aerospace = {
46
-
enable = true;
47
-
settings = {
48
-
mode.main.binding = {
49
-
# Open a new terminal window
50
-
alt-enter = "exec-and-forget osascript ~/nix-config/GhosttyNewWindow.scpt";
51
-
# alt-enter = "exec-and-forget open \"warp://action/new_window?path=$HOME\"";
52
-
# Toggle between floating and tiling layout
53
-
alt-shift-space = "layout floating tiling";
54
-
55
-
### Key mappings copied from the default config
56
-
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
57
-
alt-slash = "layout tiles horizontal vertical";
58
-
alt-comma = "layout accordion horizontal vertical";
59
-
60
-
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
61
-
alt-h = "focus left";
62
-
alt-j = "focus down";
63
-
alt-k = "focus up";
64
-
alt-l = "focus right";
65
-
66
-
# See: https://nikitabobko.github.io/AeroSpace/commands#move
67
-
alt-shift-h = "move left";
68
-
alt-shift-j = "move down";
69
-
alt-shift-k = "move up";
70
-
alt-shift-l = "move right";
71
-
72
-
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
73
-
alt-shift-minus = "resize smart -50";
74
-
alt-shift-equal = "resize smart +50";
75
-
76
-
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
77
-
alt-1 = "workspace 1";
78
-
alt-2 = "workspace 2";
79
-
alt-3 = "workspace 3";
80
-
alt-4 = "workspace 4";
81
-
alt-5 = "workspace 5";
82
-
alt-6 = "workspace 6";
83
-
alt-7 = "workspace 7";
84
-
alt-8 = "workspace 8";
85
-
alt-9 = "workspace 9";
86
-
87
-
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
88
-
alt-shift-1 = "move-node-to-workspace 1";
89
-
alt-shift-2 = "move-node-to-workspace 2";
90
-
alt-shift-3 = "move-node-to-workspace 3";
91
-
alt-shift-4 = "move-node-to-workspace 4";
92
-
alt-shift-5 = "move-node-to-workspace 5";
93
-
alt-shift-6 = "move-node-to-workspace 6";
94
-
alt-shift-7 = "move-node-to-workspace 7";
95
-
alt-shift-8 = "move-node-to-workspace 8";
96
-
alt-shift-9 = "move-node-to-workspace 9";
97
-
98
-
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth
99
-
# alt-tab = "workspace-back-and-forth";
100
-
# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor
101
-
alt-shift-tab = "move-workspace-to-monitor --wrap-around next";
102
-
103
-
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
104
-
alt-shift-semicolon = "mode service";
105
-
};
106
-
### Service mode (from default config, with default keybindings)
107
-
mode.service.binding = {
108
-
esc = ["reload-config" "mode main"];
109
-
r = ["flatten-workspace-tree" "mode main"]; # reset layout
110
-
f = ["layout floating tiling" "mode main"]; # Toggle between floating and tiling layout
111
-
backspace = ["close-all-windows-but-current" "mode main"];
112
-
113
-
# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2
114
-
#s = ["layout sticky tiling", "mode main"]
115
-
116
-
alt-shift-h = ["join-with left" "mode main"];
117
-
alt-shift-j = ["join-with down" "mode main"];
118
-
alt-shift-k = ["join-with up" "mode main"];
119
-
alt-shift-l = ["join-with right" "mode main"];
120
-
121
-
## Version 0.16+
122
-
# down = "volume down";
123
-
# up = "volume up";
124
-
# shift-down = ["volume set 0" "mode main"];
125
-
};
126
-
# on-window-detected = [
127
-
# # Use floating mode for Sublime Merge
128
-
# {
129
-
# "if.app-id" = "com.sublimemerge";
130
-
# run = "layout floating";
131
-
# }
132
-
# ];
133
-
134
-
};
135
-
};
136
-
137
-
skhd = {
138
-
enable = false;
139
-
skhdConfig = (builtins.readFile ./config/skhdrc);
140
-
};
141
-
142
-
yabai = {
143
-
enable = false;
144
-
extraConfig = (builtins.readFile ./config/yabairc);
145
-
};
146
-
};
147
-
148
-
system.stateVersion = 5;
149
-
system.primaryUser = "${user}";
150
-
}
···
-90
darwin/home-manager.nix
-90
darwin/home-manager.nix
···
1
-
{ email, name, pkgs, sshSignKey, user, ... }:
2
-
{
3
-
# It me
4
-
users.users.${user} = {
5
-
name = "${user}";
6
-
home = "/Users/${user}";
7
-
isHidden = false;
8
-
shell = pkgs.zsh;
9
-
};
10
-
11
-
homebrew = {
12
-
enable = true;
13
-
onActivation = {
14
-
autoUpdate = true;
15
-
upgrade = true;
16
-
cleanup = "zap";
17
-
};
18
-
casks = pkgs.callPackage ./casks.nix { };
19
-
brews = [
20
-
"openssl" # Required by cargo-update (`LDFLAGS="-L/usr/local/opt/openssl@3/lib" CPPFLAGS="-I/usr/local/opt/openssl@3/include" cargo install cargo-update`)
21
-
22
-
# MiniZinc solvers
23
-
"dekker1/minizinc/choco"
24
-
"dekker1/minizinc/flatzingo"
25
-
"dekker1/minizinc/geas"
26
-
# "dekker1/minizinc/jacop"
27
-
"dekker1/minizinc/fzn-oscar-cbls"
28
-
"dekker1/minizinc/fzn-picat"
29
-
"dekker1/minizinc/pumpkin"
30
-
"dekker1/minizinc/yuck"
31
-
"scip"
32
-
];
33
-
taps = [
34
-
"dekker1/minizinc"
35
-
];
36
-
37
-
# These app IDs are from using the mas CLI app
38
-
# mas = mac app store
39
-
# https://github.com/mas-cli/mas
40
-
#
41
-
# $ nix shell nixpkgs#mas
42
-
# $ mas search <app name>
43
-
#
44
-
masApps = {
45
-
"1Password for Safari" = 1569813296;
46
-
"Baking Soda" = 1601151613;
47
-
"Keynote" = 409183694;
48
-
"Numbers" = 409203825;
49
-
"Pages" = 409201541;
50
-
"Pixelmator Pro" = 1289583905;
51
-
# "Textual IRC Client" = 1262957439;
52
-
"The Unarchiver" = 425424353;
53
-
"Userscripts-Mac-App" = 1463298887;
54
-
"Vinegar" = 1591303229;
55
-
"Wipr" = 1320666476;
56
-
};
57
-
};
58
-
59
-
# Enable home-manager
60
-
home-manager = {
61
-
useGlobalPkgs = true;
62
-
users.${user} = { pkgs, config, lib, ... }: {
63
-
home = {
64
-
enableNixpkgsReleaseCheck = false;
65
-
stateVersion = "21.11";
66
-
sessionPath = [
67
-
"$HOME/.local/bin"
68
-
"$HOME/.cargo/bin"
69
-
];
70
-
};
71
-
programs = lib.attrsets.recursiveUpdate (import ../shared/home-manager.nix {
72
-
inherit config email lib name pkgs sshSignKey user;
73
-
}) {
74
-
# MacOS specific home-manager program settings
75
-
git.extraConfig.gpg.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign";
76
-
jujutsu.settings.signing.backends.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign";
77
-
78
-
skim.enable = true;
79
-
80
-
zsh.initContent = ''
81
-
if [[ $(uname -m) == 'arm64' ]]; then
82
-
eval "$(/opt/homebrew/bin/brew shellenv)"
83
-
fi
84
-
'';
85
-
86
-
ssh.matchBlocks."*".extraOptions."UseKeychain" = "yes";
87
-
};
88
-
};
89
-
};
90
-
}
···
+17
dot_config/kitty/kitty.conf
+17
dot_config/kitty/kitty.conf
···
···
1
+
font_family Iosevka Term
2
+
bold_font auto
3
+
italic_font auto
4
+
bold_italic_font auto
5
+
6
+
cursor_shape underline
7
+
8
+
font_size 14.0
9
+
10
+
confirm_os_window_close 0
11
+
12
+
shell nu
13
+
14
+
# BEGIN_KITTY_THEME
15
+
# Catppuccin-Latte
16
+
include current-theme.conf
17
+
# END_KITTY_THEME
+21
dot_config/kitty/themes/breakers.conf
+21
dot_config/kitty/themes/breakers.conf
···
···
1
+
background #fcfdfd
2
+
foreground #333333
3
+
cursor #5fb4b4
4
+
selection_background #d8dcdf
5
+
selection_foreground #f8f8f8
6
+
color0 #333333
7
+
color8 #333333
8
+
color1 #ec5f66
9
+
color9 #f97b58
10
+
color2 #80b979
11
+
color10 #80b979
12
+
color3 #f9ae58
13
+
color11 #fac761
14
+
color4 #6699cc
15
+
color12 #6699cc
16
+
color5 #c695c6
17
+
color13 #c695c6
18
+
color6 #5c99d6
19
+
color14 #5c99d6
20
+
color7 #999999
21
+
color15 #999999
+21
dot_config/kitty/themes/mariana.conf
+21
dot_config/kitty/themes/mariana.conf
···
···
1
+
background #303841
2
+
foreground #d8dee9
3
+
cursor #f9ae58
4
+
selection_background #596673
5
+
selection_foreground #f8f8f8
6
+
color0 #000000
7
+
color8 #000000
8
+
color1 #ec5f66
9
+
color9 #f97b58
10
+
color2 #99c794
11
+
color10 #99c794
12
+
color3 #f9ae58
13
+
color11 #ee932b
14
+
color4 #6699cc
15
+
color12 #6699cc
16
+
color5 #c695c6
17
+
color13 #c695c6
18
+
color6 #5c99d6
19
+
color14 #5c99d6
20
+
color7 #ffffff
21
+
color15 #f7f7f7
+3
dot_config/nvim/ftdetect/zinc.vim
+3
dot_config/nvim/ftdetect/zinc.vim
+113
dot_config/nvim/init.lua
+113
dot_config/nvim/init.lua
···
···
1
+
local fn = vim.fn
2
+
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
3
+
if fn.empty(fn.glob(install_path)) > 0 then
4
+
packer_bootstrap = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
5
+
end
6
+
7
+
---- Set general neovim options ----
8
+
require 'options'
9
+
10
+
---- Load and configure plugins using Packer
11
+
return require('packer').startup(function(use)
12
+
local use = require('packer').use
13
+
-- Package manager (Self update)
14
+
use 'wbthomason/packer.nvim'
15
+
-- General Editing
16
+
use {
17
+
'numToStr/Comment.nvim', -- 'gc' to comment visual regions/lines
18
+
config = function()
19
+
require('Comment').setup()
20
+
end
21
+
}
22
+
use {
23
+
'Konfekt/vim-sentence-chopper', -- 'gw' to split using sentences
24
+
config = function() vim.g.latexindent = false end, -- "gw" should not use latexindent
25
+
}
26
+
-- Appearance
27
+
use {
28
+
'SmiteshP/nvim-gps', -- Status line
29
+
requires = 'nvim-treesitter/nvim-treesitter',
30
+
config = function() require("nvim-gps").setup({
31
+
disable_icons = true,
32
+
depth = 3,
33
+
}) end,
34
+
}
35
+
use {
36
+
'nvim-lualine/lualine.nvim', -- Status line
37
+
requires = 'SmiteshP/nvim-gps',
38
+
}
39
+
use {
40
+
'cormacrelf/dark-notify', -- Automatic theme switching
41
+
requires = {
42
+
'rose-pine/neovim', -- Theme
43
+
'nvim-lualine/lualine.nvim',
44
+
},
45
+
config = require('plugins.appearance').conf_theme,
46
+
}
47
+
use {
48
+
'lukas-reineke/indent-blankline.nvim', -- Add indentation guides even on blank lines
49
+
config = require('plugins.appearance').conf_indent,
50
+
}
51
+
use {
52
+
'folke/which-key.nvim', -- Show key mappings
53
+
config = function() require('plugins.keymap') end,
54
+
}
55
+
use {
56
+
'beauwilliams/focus.nvim',
57
+
config = function() require("focus").setup() end,
58
+
}
59
+
-- Language configuration
60
+
use {
61
+
'nvim-treesitter/nvim-treesitter',
62
+
run = ':TSUpdate',
63
+
config = require('plugins.appearance').conf_treesitter,
64
+
}
65
+
use {
66
+
'neovim/nvim-lspconfig', -- Configuration of LSP
67
+
requires = 'nvim-treesitter/nvim-treesitter',
68
+
config = function()
69
+
require('lang.c++')
70
+
require('lang.go')
71
+
require('lang.python')
72
+
require('lang.rust')
73
+
require('lang.svelte')
74
+
require('lang.tex')
75
+
require('lang.yaml')
76
+
require('lang.zinc')
77
+
end,
78
+
}
79
+
use {
80
+
'mfussenegger/nvim-dap',
81
+
config = require('lang.debug').conf_debug,
82
+
}
83
+
use {
84
+
'pianocomposer321/yabs.nvim', -- Build System
85
+
config = require('lang.build').conf_yabs,
86
+
}
87
+
-- Auto-completion
88
+
use {
89
+
'hrsh7th/nvim-cmp',
90
+
requires = {
91
+
-- Sources
92
+
'Saecki/crates.nvim',
93
+
'hrsh7th/cmp-buffer',
94
+
'hrsh7th/cmp-nvim-lsp',
95
+
'hrsh7th/cmp-nvim-lua',
96
+
'hrsh7th/cmp-vsnip',
97
+
-- Further Requirements
98
+
'hrsh7th/vim-vsnip',
99
+
'nvim-lua/plenary.nvim'
100
+
},
101
+
config = require('plugins.completion').conf_cmp,
102
+
}
103
+
-- Component: Popup Navigation/Search
104
+
use {
105
+
'nvim-telescope/telescope.nvim',
106
+
requires = {'nvim-lua/popup.nvim', 'nvim-lua/plenary.nvim', },
107
+
config = require('plugins.search').conf_telescope,
108
+
}
109
+
-- Setup Packer if just installed
110
+
if packer_bootstrap then
111
+
require('packer').sync()
112
+
end
113
+
end)
+85
dot_config/nvim/lua/lang/build.lua
+85
dot_config/nvim/lua/lang/build.lua
···
···
1
+
-- YABS
2
+
function conf_yabs()
3
+
require("yabs"):setup {
4
+
languages = {
5
+
cpp = {
6
+
default_task = require("yabs").first_available("cmake_build", "make_build"),
7
+
},
8
+
c = {
9
+
default_task = require("yabs").first_available("cmake_build", "make_build"),
10
+
},
11
+
rust = {
12
+
default_task = "build",
13
+
tasks = {
14
+
build = {
15
+
command = "cargo build -q",
16
+
output = "quickfix",
17
+
},
18
+
build_rel = {
19
+
command = "cargo build -q --release",
20
+
output = "quickfix",
21
+
},
22
+
clean = {
23
+
command = "cargo clean",
24
+
output = "quickfix",
25
+
},
26
+
run = {
27
+
command = "cargo run",
28
+
output = "quickfix",
29
+
},
30
+
test = {
31
+
command = "cargo test",
32
+
output = "quickfix",
33
+
},
34
+
}
35
+
},
36
+
},
37
+
-- Default tasks
38
+
tasks = {
39
+
cmake_build = {
40
+
command = "cmake --build build --config Debug",
41
+
condition = require("yabs.conditions").file_exists("CMakeLists.txt"),
42
+
output = "quickfix",
43
+
},
44
+
cmake_build_rel = {
45
+
command = "cmake --build build --config Release",
46
+
condition = require("yabs.conditions").file_exists("CMakeLists.txt"),
47
+
output = "quickfix",
48
+
},
49
+
cmake_clean = {
50
+
command = "cmake --build build --target clean",
51
+
condition = require("yabs.conditions").file_exists("CMakeLists.txt"),
52
+
output = "quickfix",
53
+
},
54
+
cmake_configure = {
55
+
command = "cmake -B build -S .",
56
+
condition = require("yabs.conditions").file_exists("CMakeLists.txt"),
57
+
output = "quickfix",
58
+
},
59
+
make_build = {
60
+
command = "make",
61
+
condition = require("yabs.conditions").file_exists("Makefile"),
62
+
output = "quickfix",
63
+
},
64
+
make_clean = {
65
+
command = "make clean",
66
+
condition = require("yabs.conditions").file_exists("Makefile"),
67
+
output = "quickfix",
68
+
},
69
+
make_test = {
70
+
command = "make test",
71
+
condition = require("yabs.conditions").file_exists("Makefile"),
72
+
output = "quickfix",
73
+
},
74
+
},
75
+
opts = {
76
+
output_types = {
77
+
quickfix = {
78
+
open_on_run = "always"
79
+
}
80
+
}
81
+
},
82
+
}
83
+
end
84
+
85
+
return { conf_yabs = conf_yabs }
+7
dot_config/nvim/lua/lang/c++.lua
+7
dot_config/nvim/lua/lang/c++.lua
+29
dot_config/nvim/lua/lang/debug.lua
+29
dot_config/nvim/lua/lang/debug.lua
···
···
1
+
-- DAP
2
+
function conf_debug()
3
+
local dap = require('dap')
4
+
dap.adapters.lldb = {
5
+
type = 'executable',
6
+
command = '/opt/homebrew/opt/llvm/bin/lldb-vscode', -- adjust as needed
7
+
name = "lldb"
8
+
}
9
+
dap.configurations.cpp = {
10
+
{
11
+
name = "Launch",
12
+
type = "lldb",
13
+
request = "launch",
14
+
program = function()
15
+
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
16
+
end,
17
+
cwd = '${workspaceFolder}',
18
+
stopOnEntry = false,
19
+
args = {},
20
+
runInTerminal = false,
21
+
},
22
+
}
23
+
-- Use the same configuration for C and Rust
24
+
dap.configurations.c = dap.configurations.cpp
25
+
dap.configurations.rust = dap.configurations.cpp
26
+
27
+
end
28
+
29
+
return { conf_debug = conf_debug }
+9
dot_config/nvim/lua/lang/go.lua
+9
dot_config/nvim/lua/lang/go.lua
+9
dot_config/nvim/lua/lang/python.lua
+9
dot_config/nvim/lua/lang/python.lua
···
···
1
+
local lsp_settings = require('support.lsp')
2
+
local nvim_lsp = require('lspconfig')
3
+
4
+
nvim_lsp.pylsp.setup {
5
+
on_attach = lsp_settings.on_attach,
6
+
capabilities = lsp_settings.capabilites,
7
+
}
8
+
9
+
vim.cmd('autocmd Filetype python setlocal tabstop=4 shiftwidth=4 expandtab')
+9
dot_config/nvim/lua/lang/rust.lua
+9
dot_config/nvim/lua/lang/rust.lua
···
···
1
+
local lsp_settings = require('support.lsp')
2
+
local nvim_lsp = require('lspconfig')
3
+
4
+
nvim_lsp.rust_analyzer.setup {
5
+
on_attach = lsp_settings.on_attach,
6
+
capabilities = lsp_settings.capabilites,
7
+
}
8
+
9
+
vim.cmd('autocmd Filetype rust setlocal tabstop=4 shiftwidth=4 expandtab')
+8
dot_config/nvim/lua/lang/svelte.lua
+8
dot_config/nvim/lua/lang/svelte.lua
+7
dot_config/nvim/lua/lang/tex.lua
+7
dot_config/nvim/lua/lang/tex.lua
+1
dot_config/nvim/lua/lang/yaml.lua
+1
dot_config/nvim/lua/lang/yaml.lua
···
···
1
+
vim.cmd('autocmd Filetype yaml setlocal tabstop=2 shiftwidth=2 expandtab')
+14
dot_config/nvim/lua/lang/zinc.lua
+14
dot_config/nvim/lua/lang/zinc.lua
···
···
1
+
local treesitter = require('nvim-treesitter.parsers')
2
+
local parser_config = treesitter.get_parser_configs()
3
+
parser_config.minizinc = {
4
+
install_info = {
5
+
url = "https://github.com/shackle-rs/shackle",
6
+
branch = "develop",
7
+
files = {"src/parser.c"},
8
+
location = "misc/tree-sitter-minizinc",
9
+
},
10
+
filetype = "zinc",
11
+
used_by = {"mzn", "fzn", "dzn"}
12
+
}
13
+
14
+
vim.cmd('autocmd Filetype zinc setlocal commentstring=\\%\\ %s')
+103
dot_config/nvim/lua/options.lua
+103
dot_config/nvim/lua/options.lua
···
···
1
+
-- Incremental live completion
2
+
vim.opt.inccommand = "nosplit"
3
+
4
+
-- Do not save when switching buffers
5
+
vim.opt.hidden = true
6
+
7
+
-- Enable mouse mode
8
+
vim.opt.mouse = "a"
9
+
10
+
-- Use system clipboard
11
+
vim.opt.clipboard:prepend {"unnamedplus"}
12
+
13
+
-- Toggle to disable mouse mode and indentlines for easier paste
14
+
ToggleMouse = function()
15
+
if vim.opt.mouse == 'a' then
16
+
vim.cmd[[IndentBlanklineDisable]]
17
+
vim.opt.signcolumn='no'
18
+
vim.opt.mouse = 'v'
19
+
vim.opt.number = false
20
+
print("Mouse disabled")
21
+
else
22
+
vim.cmd[[IndentBlanklineEnable]]
23
+
vim.opt.signcolumn='yes'
24
+
vim.opt.mouse = 'a'
25
+
vim.opt.number = true
26
+
print("Mouse enabled")
27
+
end
28
+
end
29
+
30
+
vim.api.nvim_set_keymap('n', '<F10>', '<cmd>lua ToggleMouse()<cr>', { noremap = true })
31
+
32
+
-- Save undo history
33
+
vim.cmd[[set undofile]]
34
+
35
+
-- Decrease update time
36
+
vim.opt.updatetime = 250
37
+
vim.opt.signcolumn="yes"
38
+
39
+
-- Remap escape to leave terminal mode
40
+
vim.api.nvim_exec([[
41
+
augroup Terminal
42
+
autocmd!
43
+
au TermOpen * tnoremap <buffer> <Esc> <c-\><c-n>
44
+
au TermOpen * set nonu
45
+
augroup end
46
+
]], false)
47
+
48
+
-- Enable spellcheck
49
+
-- vim.opt.spell = true
50
+
vim.opt.spelllang = "en_au,nl"
51
+
52
+
--Make line numbers default
53
+
vim.opt.number = true
54
+
vim.opt.relativenumber = true
55
+
56
+
-- Softwrap settings
57
+
vim.opt.breakindent = true
58
+
vim.opt.showbreak = "โช "
59
+
vim.opt.linebreak = true
60
+
61
+
-- Change preview window location
62
+
vim.g.splitbelow = true
63
+
64
+
-- Highlight on yank
65
+
vim.api.nvim_exec([[
66
+
augroup YankHighlight
67
+
autocmd!
68
+
autocmd TextYankPost * silent! lua vim.highlight.on_yank()
69
+
augroup end
70
+
]], false)
71
+
72
+
-- Start search when you start typing
73
+
vim.opt.incsearch = true
74
+
75
+
-- Case insensitive searching UNLESS /C or capital in search
76
+
vim.opt.ignorecase = true
77
+
vim.opt.smartcase = true
78
+
79
+
-- Default indentation
80
+
vim.opt.shiftwidth = 2
81
+
vim.opt.tabstop = 2
82
+
vim.opt.smartindent = true
83
+
vim.opt.expandtab = false
84
+
85
+
-- Code Folding
86
+
-- vim.opt.foldmethod = 'expr'
87
+
-- vim.opt.foldexpr = 'nvim_treesitter#foldexpr()'
88
+
-- vim.opt.foldminlines = 5
89
+
-- vim.opt.foldnestmax = 2
90
+
91
+
-- Save when lost focus
92
+
vim.cmd('au FocusLost * silent! wa')
93
+
94
+
-- Map :Format to vim.lsp.buf.formatting()
95
+
vim.cmd([[ command! Format execute 'lua vim.lsp.buf.formatting()' ]])
96
+
vim.cmd([[
97
+
augroup format
98
+
autocmd!
99
+
autocmd BufWritePre * :Format
100
+
augroup END
101
+
]])
102
+
103
+
vim.cmd([[ autocmd BufWritePost ~/.local/share/chezmoi/* ! chezmoi apply --source-path "%" ]])
+52
dot_config/nvim/lua/plugins/appearance.lua
+52
dot_config/nvim/lua/plugins/appearance.lua
···
···
1
+
-- Colour Scheme configuration
2
+
local conf_theme = function()
3
+
local dn = require('dark_notify')
4
+
local gps = require('nvim-gps')
5
+
require('rose-pine').setup({
6
+
dark_variant = 'moon',
7
+
})
8
+
dn.run({
9
+
schemes = {
10
+
dark = 'rose-pine',
11
+
light = 'rose-pine',
12
+
},
13
+
onchange = function(mode)
14
+
--Set statusbar
15
+
require('plenary.reload').reload_module('lualine', true)
16
+
require('lualine').setup {
17
+
options = {
18
+
icons_enabled = 0,
19
+
theme = 'rose-pine'
20
+
},
21
+
sections = {
22
+
lualine_c = {
23
+
'filename',
24
+
{ gps.get_location, cond = gps.is_available },
25
+
},
26
+
}
27
+
}
28
+
end,
29
+
})
30
+
end
31
+
32
+
local conf_indent = function()
33
+
vim.g.indent_blankline_char = "โ" -- โ is another good option
34
+
vim.g.indent_blankline_filetype_exclude = { 'help', 'packer' }
35
+
vim.g.indent_blankline_buftype_exclude = { 'terminal', 'nofile'}
36
+
vim.g.indent_blankline_char_highlight = 'LineNr'
37
+
end
38
+
39
+
local conf_treesitter = function()
40
+
require'nvim-treesitter.configs'.setup {
41
+
ensure_installed = 'all',
42
+
highlight = {
43
+
enable = true, -- false will disable the whole extension
44
+
},
45
+
}
46
+
end
47
+
48
+
return {
49
+
conf_theme = conf_theme,
50
+
conf_indent = conf_indent,
51
+
conf_treesitter = conf_treesitter,
52
+
}
+27
dot_config/nvim/lua/plugins/completion.lua
+27
dot_config/nvim/lua/plugins/completion.lua
···
···
1
+
-- Configure nvim-cmp
2
+
local conf_cmp = function()
3
+
local cmp = require('cmp')
4
+
cmp.setup({
5
+
snippet = {
6
+
expand = function(args)
7
+
vim.fn["vsnip#anonymous"](args.body)
8
+
end,
9
+
},
10
+
mapping = {
11
+
['<C-d>'] = cmp.mapping.scroll_docs(-4),
12
+
['<C-f>'] = cmp.mapping.scroll_docs(4),
13
+
['<C-Space>'] = cmp.mapping.complete(),
14
+
['<C-e>'] = cmp.mapping.close(),
15
+
['<CR>'] = cmp.mapping.confirm({ select = true }),
16
+
},
17
+
sources = {
18
+
{ name = 'buffer' },
19
+
{ name = 'crates' },
20
+
{ name = 'nvim_lua' },
21
+
{ name = 'nvim_lsp' },
22
+
{ name = 'path' },
23
+
}
24
+
})
25
+
end
26
+
27
+
return { conf_cmp = conf_cmp }
+67
dot_config/nvim/lua/plugins/keymap.lua
+67
dot_config/nvim/lua/plugins/keymap.lua
···
···
1
+
-- Remap space as leader key
2
+
vim.api.nvim_set_keymap('', '<Space>', '<Nop>', { noremap = true, silent=true})
3
+
vim.g.mapleader = ' '
4
+
vim.g.maplocalleader = ' '
5
+
6
+
-- Remap for dealing with word wrap
7
+
vim.api.nvim_set_keymap('n', 'k', "v:count == 0 ? 'gk' : 'k'", { noremap=true, expr = true, silent = true })
8
+
vim.api.nvim_set_keymap('n', 'j', "v:count == 0 ? 'gj' : 'j'", { noremap= true, expr = true, silent = true })
9
+
10
+
-- Editing
11
+
-- Wrap current paragraph
12
+
vim.api.nvim_set_keymap('n', '<M-q>', [[gwip]], { noremap = false })
13
+
14
+
-- Windows
15
+
vim.api.nvim_set_keymap('n', '<leader>w', [[<C-w>]], { noremap = true })
16
+
17
+
-- Define leader mappings (using which-key)
18
+
local whichkey = require("which-key")
19
+
whichkey.setup{}
20
+
local mappings = {
21
+
["<tab>"] = { "<C-^>", "Reopen Last Buffer" },
22
+
-- Buffer
23
+
b = {
24
+
name = "Buffer",
25
+
b = { "<cmd>lua require('telescope.builtin').buffers()<cr>", "Find Buffer" },
26
+
d = { "<cmd>bd<cr>", "Delete Buffer" },
27
+
m = { "<cmd>%bd|e#<cr>", "Delete Other Buffers" },
28
+
y = { "ggyG<C-o>", "Copy Buffer" },
29
+
},
30
+
-- Debug
31
+
d = {
32
+
name = "Debug",
33
+
b = {"<cmd>lua require('dap').toggle_breakpoint()<cr>", "Breakpoint"},
34
+
B = {"<cmd>lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))<cr>", "Conditional Breakpoint"},
35
+
l = {"<cmd>require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<cr>", "Logpoint"},
36
+
r = {"<cmd>lua require('dap').repl.open()<cr>", "Open REPL"},
37
+
c = {"<cmd>lua require('dap').continue()<cr>", "Continue"},
38
+
q = {"<cmd>lua require('dap').close()<cr>", "Close"},
39
+
},
40
+
-- File
41
+
f = {
42
+
name = "File",
43
+
f = { "<cmd>lua require('telescope.builtin').file_browser()<cr>", "Find File" },
44
+
s = { "<cmd>write<cr>", "Store File" },
45
+
S = { "<cmd>wa<cr>", "Store All Files" },
46
+
},
47
+
-- Search
48
+
s = {
49
+
name = "Search",
50
+
p = { "<cmd>lua require('telescope.builtin').live_grep()<cr>", "Search Project" },
51
+
b = { "<cmd>lua require('telescope.builtin').treesitter()<cr>", "Search Buffer Symbols" },
52
+
},
53
+
-- Project
54
+
p = {
55
+
f = { "<cmd>lua require('telescope.builtin').find_files()<cr>", "Search Project" },
56
+
b = { "<cmd>lua require('yabs'):run_default_task()<cr>", "Build Project" },
57
+
t = { "<cmd>lua require('telescope').extensions.yabs.tasks()<cr>", "Search Project" },
58
+
},
59
+
60
+
-- Window
61
+
q = {
62
+
name = "Quit",
63
+
q = { "<cmd>qa<cr>", "Quit"},
64
+
},
65
+
w = "Window",
66
+
}
67
+
whichkey.register(mappings, { prefix = "<leader>" })
+6
dot_config/nvim/lua/plugins/search.lua
+6
dot_config/nvim/lua/plugins/search.lua
+34
dot_config/nvim/lua/support/lsp.lua
+34
dot_config/nvim/lua/support/lsp.lua
···
···
1
+
-- LSP settings
2
+
local on_attach = function(_client, bufnr)
3
+
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
4
+
5
+
local opts = { noremap=true, silent=true }
6
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
7
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
8
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
9
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
10
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
11
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>pa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
12
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>pr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
13
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>pl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
14
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
15
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
16
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
17
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
18
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
19
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
20
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
21
+
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
22
+
end
23
+
24
+
local capabilities = vim.lsp.protocol.make_client_capabilities()
25
+
capabilities.textDocument.completion.completionItem.snippetSupport = true
26
+
capabilities.textDocument.completion.completionItem.resolveSupport = {
27
+
properties = {
28
+
'documentation',
29
+
'detail',
30
+
'additionalTextEdits',
31
+
}
32
+
}
33
+
34
+
return { on_attach = on_attach, capabilities = capabilities }
+49
dot_config/skhd/skhdrc
+49
dot_config/skhd/skhdrc
···
···
1
+
# Open applications
2
+
alt - return : /Applications/kitty.app/Contents/MacOS/kitty --single-instance -d ~
3
+
4
+
# Focus display
5
+
alt - tab : yabai -m display --focus recent
6
+
7
+
# Focus window
8
+
alt - h : yabai -m window --focus west
9
+
alt - j : yabai -m window --focus south
10
+
alt - k : yabai -m window --focus north
11
+
alt - l : yabai -m window --focus east
12
+
13
+
alt - left : yabai -m window --focus west
14
+
alt - down : yabai -m window --focus south
15
+
alt - up : yabai -m window --focus north
16
+
alt - right : yabai -m window --focus east
17
+
18
+
# Swap window
19
+
shift + alt - h : yabai -m window --swap west
20
+
shift + alt - j : yabai -m window --swap south
21
+
shift + alt - k : yabai -m window --swap north
22
+
shift + alt - l : yabai -m window --swap east
23
+
24
+
shift + alt - left : yabai -m window --swap west
25
+
shift + alt - down : yabai -m window --swap south
26
+
shift + alt - up : yabai -m window --swap north
27
+
shift + alt - right : yabai -m window --swap east
28
+
29
+
# Move focus container to workspace
30
+
shift + alt - 1 : yabai -m window --space 1; yabai -m space --focus 1
31
+
shift + alt - 2 : yabai -m window --space 2; yabai -m space --focus 2
32
+
shift + alt - 3 : yabai -m window --space 3; yabai -m space --focus 3
33
+
shift + alt - 4 : yabai -m window --space 4; yabai -m space --focus 4
34
+
shift + alt - 5 : yabai -m window --space 5; yabai -m space --focus 5
35
+
shift + alt - 6 : yabai -m window --space 6; yabai -m space --focus 6
36
+
shift + alt - 7 : yabai -m window --space 7; yabai -m space --focus 7
37
+
shift + alt - 8 : yabai -m window --space 8; yabai -m space --focus 8
38
+
shift + alt - 9 : yabai -m window --space 9; yabai -m space --focus 9
39
+
shift + alt - 0 : yabai -m window --space 0; yabai -m space --focus 0
40
+
41
+
# Enable / Disable gaps in current workspace
42
+
lctrl + alt - g : yabai -m space --toggle padding; yabai -m space --toggle gap
43
+
44
+
# Float / Unfloat window
45
+
shift + alt - space : yabai -m window --toggle float;
46
+
47
+
# Make window native fullscreen
48
+
alt - f : yabai -m window --toggle zoom-fullscreen
49
+
shift + alt - f : yabai -m window --toggle native-fullscreen
+103
dot_config/topgrade.toml
+103
dot_config/topgrade.toml
···
···
1
+
[misc]
2
+
# Don't ask for confirmations
3
+
#assume_yes = true
4
+
5
+
# Disable specific steps - same options as the command line flag
6
+
disable = ["tlmgr", "vim", "gem", "node", "ruby_gems"]
7
+
8
+
# Ignore failures for these steps
9
+
#ignore_failures = ["powershell"]
10
+
11
+
# Run specific steps - same options as the command line flag
12
+
#only = ["system", "emacs"]
13
+
14
+
# Do not ask to retry failed steps (default: false)
15
+
no_retry = true
16
+
17
+
# Run inside tmux
18
+
#run_in_tmux = true
19
+
20
+
# List of remote machines with Topgrade installed on them
21
+
#remote_topgrades = ["toothless", "pi", "parnas"]
22
+
23
+
# Arguments to pass SSH when upgrading remote systems
24
+
#ssh_arguments = "-o ConnectTimeout=2"
25
+
26
+
# Path to Topgrade executable on remote machines
27
+
#remote_topgrade_path = ".cargo/bin/topgrade"
28
+
29
+
# Arguments to pass tmux when pulling Repositories
30
+
#tmux_arguments = "-S /var/tmux.sock"
31
+
32
+
# Do not set the terminal title
33
+
#set_title = false
34
+
35
+
# Display the time in step titles
36
+
# display_time = true
37
+
38
+
# Cleanup temporary or old files
39
+
#cleanup = true
40
+
41
+
[git]
42
+
#max_concurrency = 5
43
+
# Additional git repositories to pull
44
+
#repos = [
45
+
# "~/src/*/",
46
+
# "~/.config/something"
47
+
#]
48
+
49
+
# Don't pull the predefined git repos
50
+
#pull_predefined = false
51
+
52
+
# Arguments to pass Git when pulling Repositories
53
+
#arguments = "--rebase --autostash"
54
+
55
+
[composer]
56
+
#self_update = true
57
+
58
+
# Commands to run before anything
59
+
[pre_commands]
60
+
#"Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
61
+
62
+
# Custom commands
63
+
[commands]
64
+
#"Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
65
+
66
+
[brew]
67
+
#greedy_cask = true
68
+
69
+
[linux]
70
+
# Arch Package Manager to use. Allowed values: autodetect, trizen, paru, yay, pikaur, pacman.
71
+
#arch_package_manager = "pacman"
72
+
# Arguments to pass yay (or paru) when updating packages
73
+
#yay_arguments = "--nodevel"
74
+
#show_arch_news = true
75
+
#trizen_arguments = "--devel"
76
+
#pikaur_arguments = ""
77
+
#enable_tlmgr = true
78
+
#emerge_sync_flags = "-q"
79
+
#emerge_update_flags = "-uDNa --with-bdeps=y world"
80
+
#redhat_distro_sync = false
81
+
#rpm_ostree = false
82
+
83
+
[windows]
84
+
# Manually select Windows updates
85
+
#accept_all_updates = false
86
+
#open_remotes_in_new_terminal = true
87
+
88
+
# Causes Topgrade to rename itself during the run to allow package managers
89
+
# to upgrade it. Use this only if you installed Topgrade by using a package
90
+
# manager such as Scoop to Cargo
91
+
#self_rename = true
92
+
93
+
[npm]
94
+
# Use sudo if the NPM directory isn't owned by the current user
95
+
#use_sudo = true
96
+
97
+
[firmware]
98
+
# Offer to update firmware; if false just check for and display available updates
99
+
#upgrade = true
100
+
101
+
[flatpak]
102
+
# Use sudo for updating the system-wide installation
103
+
#use_sudo = true
+93
dot_config/xonsh/rc.d/env.xsh
+93
dot_config/xonsh/rc.d/env.xsh
···
···
1
+
import shutil
2
+
import sys
3
+
4
+
# --- Xonsh Settings ---
5
+
$XONSH_HISTORY_BACKEND = 'sqlite'
6
+
$HISTCONTROL='ignoredups'
7
+
$XONSH_SHOW_TRACEBACK = False
8
+
$SUGGEST_COMMANDS = False
9
+
10
+
# --- Path Variables ---
11
+
#> Use MacOS path_helper executable
12
+
source-bash $(/usr/libexec/path_helper -s)
13
+
14
+
brew_prefix = $(brew --prefix).strip()
15
+
$PATH = [
16
+
brew_prefix + "/opt/bison/bin",
17
+
brew_prefix + "/opt/flex/bin",
18
+
brew_prefix + "/opt/llvm/bin",
19
+
] + $PATH + [
20
+
$HOME + "/.local/bin",
21
+
$HOME + "/.cargo/bin",
22
+
]
23
+
24
+
# --- General Environment ---
25
+
#> Xonsh Behaviour
26
+
$AUTO_CD = True
27
+
#> Default Editor
28
+
$EDITOR = "nvim"
29
+
$VISUAL = "codium"
30
+
#> Monash Cluster
31
+
$OPTCLUSTER = "compute.optimisation-2020.cloud.edu.au"
32
+
#> CMake settings
33
+
$CMAKE_EXPORT_COMPILE_COMMANDS = "1" # output compile-commands.json for clangd
34
+
$CMAKE_GENERATOR = "Ninja Multi-Config" # use Ninja generator by default
35
+
$CMAKE_C_COMPILER_LAUNCHER = "ccache"
36
+
$CMAKE_CXX_COMPILER_LAUNCHER = "ccache"
37
+
#> FZF
38
+
$FZF_DEFAULT_COMMAND = "fd --type f"
39
+
40
+
# --- Aliases ---
41
+
42
+
def _theme(args):
43
+
"""This command takes a
44
+
"""
45
+
DARK_XONSH_STYLE = "stata-dark"
46
+
DARK_KITTY_STYLE = "Catppuccin-Macchiato"
47
+
LIGHT_XONSH_STYLE = "stata-light"
48
+
LIGHT_KITTY_STYLE = "Catppuccin-Latte"
49
+
if len(args) == 0 or args[0] == "info":
50
+
print("dark" if $XONSH_COLOR_STYLE == DARK_XONSH_STYLE else "light")
51
+
elif args[0] == "set":
52
+
dark_mode = False
53
+
if len(args) > 1:
54
+
if args[1] == "dark":
55
+
dark_mode = True
56
+
elif args[1] == "light":
57
+
dark_mode = False
58
+
else:
59
+
print(f"unknown theme `{args[1]}'", file=sys.stderr)
60
+
return 1
61
+
else:
62
+
try:
63
+
import warnings
64
+
65
+
with warnings.catch_warnings():
66
+
warnings.simplefilter("ignore")
67
+
import darkdetect
68
+
69
+
dark_mode = darkdetect.isDark()
70
+
except ImportError:
71
+
print("darkdetect package not found (xpip install darkdetect)", file=sys.stderr)
72
+
$XONSH_COLOR_STYLE = DARK_XONSH_STYLE if dark_mode else LIGHT_XONSH_STYLE
73
+
$( kitty +kitten themes --cache-age=-1 @(DARK_KITTY_STYLE if dark_mode else LIGHT_KITTY_STYLE) )
74
+
else:
75
+
print(f"unknown argument `{args[0]}'", file=sys.stderr)
76
+
return 1
77
+
return 0
78
+
79
+
aliases["brew-backup"] = ("brew", "bundle", "dump", "--global", "--no-lock", "--cask", "--mas", "--tap", "--force")
80
+
aliases["brew-cleanup"] = ("brew", "bundle", "cleanup", "--global", "--no-lock", "--force", "--zap")
81
+
aliases["brew-restore"] = ("brew", "bundle", "install", "--global", "--no-lock")
82
+
aliases["edit"] = $VISUAL
83
+
aliases["ssh"] = ("kitty", "+kitten", "ssh")
84
+
aliases["theme"] = _theme
85
+
if shutil.which('bat'):
86
+
aliases["less"] = "bat"
87
+
if shutil.which('exa'):
88
+
aliases["ls"] = "exa"
89
+
if shutil.which('rsync'):
90
+
aliases['cp'] = 'rsync --progress --recursive --archive'
91
+
92
+
# --- Set theme based on Dark Mode ---
93
+
_theme(["set"])
+10
dot_config/xonsh/rc.d/plugins.xsh
+10
dot_config/xonsh/rc.d/plugins.xsh
···
···
1
+
#> Homebrew integration
2
+
source-bash $(brew shellenv)
3
+
#> Kitty integration
4
+
xontrib load kitty
5
+
#> Vox: Xonsh Python virtual environment manager
6
+
xontrib load vox
7
+
#> Starship: smart prompt
8
+
execx($(starship init xonsh))
9
+
#> Zoxide: smart cd
10
+
execx($(zoxide init xonsh), 'exec', __xonsh__.ctx, filename='zoxide')
+20
dot_config/yabai/executable_yabairc
+20
dot_config/yabai/executable_yabairc
···
···
1
+
yabai -m config layout bsp
2
+
yabai -m config top_padding 4
3
+
yabai -m config bottom_padding 4
4
+
yabai -m config left_padding 4
5
+
yabai -m config right_padding 4
6
+
yabai -m config window_gap 4
7
+
8
+
yabai -m rule --add label="About This Mac" app="System Information" title="About This Mac" manage=off
9
+
yabai -m rule --add label="Activity Monitor" app="^Activity Monitor$" manage=off
10
+
yabai -m rule --add label="App Store" app="^App Store$" manage=off
11
+
yabai -m rule --add label="Calculator" app="^Calculator$" manage=off
12
+
yabai -m rule --add label="Dictionary" app="^Dictionary$" manage=off
13
+
yabai -m rule --add label="Digital Colour Meter" app="^Digital Colou?r Meter$" sticky=on
14
+
yabai -m rule --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off
15
+
yabai -m rule --add label="Fork" app="^Fork$" manage=off sticky=on
16
+
yabai -m rule --add label="Safari" app="^Safari$" title="^(General|(Tab|Password|Website|Extension)s|AutoFill|Se(arch|curity)|Privacy|Advance)$" manage=off
17
+
yabai -m rule --add label="Software Update" title="Software Update" manage=off
18
+
yabai -m rule --add label="Sublime Merge" app="^Sublime Merge$" manage=off sticky=on
19
+
yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off
20
+
yabai -m rule --add label="Tweetbot" app="^Tweetbot$" title=".*" manage=off
+13
dot_gitignore
+13
dot_gitignore
+24
dot_zshrc
+24
dot_zshrc
···
···
1
+
set -o vi
2
+
3
+
# History file configuration
4
+
[ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history"
5
+
HISTSIZE=50000
6
+
SAVEHIST=10000
7
+
8
+
# History command configuration
9
+
setopt extended_history # record timestamp of command in HISTFILE
10
+
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
11
+
setopt hist_ignore_dups # ignore duplicated commands history list
12
+
setopt hist_ignore_space # ignore commands that start with space
13
+
setopt hist_verify # show command with history expansion to user before running it
14
+
setopt inc_append_history # add commands to HISTFILE in order of execution
15
+
setopt share_history # share command history data
16
+
setopt autocd # change directory when given dir without cmd
17
+
18
+
# Case insensitive autocompletion
19
+
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*'
20
+
21
+
# Start Starship Prompt
22
+
if command -v starship &> /dev/null; then
23
+
eval "$(starship init zsh)"
24
+
fi
-71
flake.lock
-71
flake.lock
···
1
-
{
2
-
"nodes": {
3
-
"darwin": {
4
-
"inputs": {
5
-
"nixpkgs": [
6
-
"nixpkgs"
7
-
]
8
-
},
9
-
"locked": {
10
-
"lastModified": 1762912391,
11
-
"narHash": "sha256-4hpBE7bGd24SfD28rzMdUGXsLsNEYxCCrTipFdoqoNM=",
12
-
"owner": "LnL7",
13
-
"repo": "nix-darwin",
14
-
"rev": "d76299b2cd01837c4c271a7b5186e3d5d8ebd126",
15
-
"type": "github"
16
-
},
17
-
"original": {
18
-
"owner": "LnL7",
19
-
"ref": "nix-darwin-25.05",
20
-
"repo": "nix-darwin",
21
-
"type": "github"
22
-
}
23
-
},
24
-
"home-manager": {
25
-
"inputs": {
26
-
"nixpkgs": [
27
-
"nixpkgs"
28
-
]
29
-
},
30
-
"locked": {
31
-
"lastModified": 1763992789,
32
-
"narHash": "sha256-WHkdBlw6oyxXIra/vQPYLtqY+3G8dUVZM8bEXk0t8x4=",
33
-
"owner": "nix-community",
34
-
"repo": "home-manager",
35
-
"rev": "44831a7eaba4360fb81f2acc5ea6de5fde90aaa3",
36
-
"type": "github"
37
-
},
38
-
"original": {
39
-
"owner": "nix-community",
40
-
"ref": "release-25.05",
41
-
"repo": "home-manager",
42
-
"type": "github"
43
-
}
44
-
},
45
-
"nixpkgs": {
46
-
"locked": {
47
-
"lastModified": 1764018730,
48
-
"narHash": "sha256-ytszH039PHJ9HhUiH2i17ewZ+s8io9IdEBh9mtnTNQ0=",
49
-
"owner": "nixos",
50
-
"repo": "nixpkgs",
51
-
"rev": "48ac51dd5d116984766707fd5c5661477a053b00",
52
-
"type": "github"
53
-
},
54
-
"original": {
55
-
"owner": "nixos",
56
-
"ref": "nixpkgs-25.05-darwin",
57
-
"repo": "nixpkgs",
58
-
"type": "github"
59
-
}
60
-
},
61
-
"root": {
62
-
"inputs": {
63
-
"darwin": "darwin",
64
-
"home-manager": "home-manager",
65
-
"nixpkgs": "nixpkgs"
66
-
}
67
-
}
68
-
},
69
-
"root": "root",
70
-
"version": 7
71
-
}
···
-57
flake.nix
-57
flake.nix
···
1
-
{
2
-
description = "Dekker1's home manager configuation";
3
-
4
-
inputs = {
5
-
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-25.05-darwin";
6
-
home-manager = {
7
-
url = "github:nix-community/home-manager/release-25.05";
8
-
inputs.nixpkgs.follows = "nixpkgs";
9
-
};
10
-
darwin = {
11
-
url = "github:LnL7/nix-darwin/nix-darwin-25.05";
12
-
inputs.nixpkgs.follows = "nixpkgs";
13
-
};
14
-
};
15
-
outputs =
16
-
{ darwin
17
-
, home-manager
18
-
, nixpkgs
19
-
, ...
20
-
} @ inputs:
21
-
let
22
-
# Systems that can be used
23
-
linuxSystems = [ "x86_64-linux" "aarch64-linux" ];
24
-
darwinSystems = [ "aarch64-darwin" "x86_64-darwin" ];
25
-
# Arguments that are passed into the system configuration
26
-
name = "Jip J. Dekker";
27
-
email = "jip@dekker.one";
28
-
sshSignKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMCC0liW47USr/Ic1rJ52V4eE07y42VG9Ols1zYBrPlc";
29
-
user = "dekker1";
30
-
# Special arguments that are passed into each system configuration
31
-
specialArgs = inputs // { inherit email name sshSignKey user; };
32
-
in
33
-
{
34
-
darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems (system:
35
-
darwin.lib.darwinSystem {
36
-
inherit system specialArgs;
37
-
modules = [
38
-
home-manager.darwinModules.home-manager
39
-
./darwin
40
-
];
41
-
}
42
-
);
43
-
nixosConfigurations = nixpkgs.lib.genAttrs linuxSystems (system: nixpkgs.lib.nixosSystem {
44
-
inherit system specialArgs;
45
-
modules = [
46
-
home-manager.nixosModules.home-manager {
47
-
home-manager = {
48
-
useGlobalPkgs = true;
49
-
useUserPackages = true;
50
-
users.${user} = import ./nixos/home-manager.nix;
51
-
};
52
-
}
53
-
./nixos
54
-
];
55
-
});
56
-
};
57
-
}
···
-38
nixos/default.nix
-38
nixos/default.nix
···
1
-
{ pkgs, user, ... }:
2
-
{
3
-
imports = [
4
-
../shared
5
-
../shared/cachix
6
-
];
7
-
8
-
# Set your time zone.
9
-
time.timeZone = "Australia/Melbourne";
10
-
11
-
# Turn on flag for proprietary software
12
-
nix = {
13
-
nixPath = [ "nixos-config=/home/${user}/.local/share/nixos-config:/etc/nixos" ];
14
-
settings.allowed-users = [ "${user}" ];
15
-
package = pkgs.nixUnstable;
16
-
extraOptions = ''
17
-
experimental-features = nix-command flakes
18
-
'';
19
-
};
20
-
21
-
# It's me, it's you, it's everyone
22
-
users.users.${user} = {
23
-
isNormalUser = true;
24
-
extraGroups = [
25
-
"wheel" # Enable โsudoโ for the user.
26
-
];
27
-
shell = pkgs.zsh;
28
-
};
29
-
30
-
environment.systemPackages = import ../shared/packages.nix { inherit pkgs; } ++ (with pkgs; [
31
-
# Linux specific packages
32
-
gitAndTools.gitFull
33
-
]);
34
-
35
-
fonts.packages = import ../shared/fonts.nix { inherit pkgs; };
36
-
37
-
system.stateVersion = "25.05";
38
-
}
···
-18
nixos/home-manager.nix
-18
nixos/home-manager.nix
···
1
-
{ config, email, lib, name, pkgs, sshSignKey, user, ... }:
2
-
{
3
-
home = {
4
-
enableNixpkgsReleaseCheck = false;
5
-
username = "${user}";
6
-
homeDirectory = "/home/${user}";
7
-
stateVersion = "25.05";
8
-
};
9
-
10
-
programs = lib.attrsets.recursiveUpdate (import ../shared/home-manager.nix {
11
-
inherit config email lib name pkgs sshSignKey user;
12
-
}) {
13
-
firefox = {
14
-
enable = true;
15
-
package = pkgs.firefox-bin;
16
-
};
17
-
};
18
-
}
···
+9
private_Library/private_Application Support/nushell/config.nu
+9
private_Library/private_Application Support/nushell/config.nu
···
···
1
+
if not 'config' in $env {
2
+
$env.config = ([] | into record)
3
+
}
4
+
$env.config = ($env.config | upsert show_banner false)
5
+
$env.config = ($env.config | upsert rm.always_trash true)
6
+
$env.config = ($env.config | upsert edit_mode vi)
7
+
$env.config = ($env.config | upsert history.max_size 100000)
8
+
$env.config = ($env.config | upsert footer_mode auto)
9
+
$env.config = ($env.config | upsert history.file_format "sqlite")
+83
private_Library/private_Application Support/nushell/env.nu
+83
private_Library/private_Application Support/nushell/env.nu
···
···
1
+
# Nushell Environment Config File
2
+
3
+
### Load standardised prompt "starship"
4
+
# TEMP: Custom vi prompt indicators
5
+
$env.PROMPT_INDICATOR_VI_INSERT = ""
6
+
$env.PROMPT_INDICATOR_VI_NORMAL = ""
7
+
source ~/.cache/starship/init.nu
8
+
9
+
# Specifies how environment variables are:
10
+
# - converted from a string to a value on Nushell startup (from_string)
11
+
# - converted from a value back to a string when running external commands (to_string)
12
+
# Note: The conversions happen *after* config.nu is loaded
13
+
$env.ENV_CONVERSIONS = {
14
+
"PATH": {
15
+
from_string: { |s| $s | split row (char esep) | path expand --no-symlink }
16
+
to_string: { |v| $v | path expand --no-symlink | str join (char esep) }
17
+
}
18
+
}
19
+
20
+
# Directories to search for scripts when calling source or use
21
+
#
22
+
# By default, <nushell-config-dir>/scripts is added
23
+
$env.NU_LIB_DIRS = [ ($nu.default-config-dir | path join 'scripts') ]
24
+
25
+
# Directories to search for plugin binaries when calling register
26
+
#
27
+
# By default, <nushell-config-dir>/plugins is added
28
+
$env.NU_PLUGIN_DIRS = [ ($nu.default-config-dir | path join 'plugins') ]
29
+
30
+
# Add entries to PATH:
31
+
# From MacOS helper (/usr/libexec/path_helper)
32
+
$env.PATH = ($env.PATH | split row (char esep) | append "/Library/TeX/texbin")
33
+
$env.PATH = ($env.PATH | split row (char esep) | append "/Library/Apple/usr/bin")
34
+
$env.PATH = ($env.PATH | split row (char esep) | append "/opt/homebrew/bin")
35
+
$env.PATH = ($env.PATH | split row (char esep) | append "/opt/homebrew/sbin")
36
+
$env.PATH = ($env.PATH | split row (char esep) | append "/usr/local/bin")
37
+
# Optional Homebrew packages
38
+
$env.PATH = ($env.PATH | split row (char esep) | prepend $"(brew --prefix | str trim)/opt/bison/bin")
39
+
$env.PATH = ($env.PATH | split row (char esep) | prepend $"(brew --prefix | str trim)/opt/flex/bin")
40
+
$env.PATH = ($env.PATH | split row (char esep) | prepend $"(brew --prefix | str trim)/opt/llvm/bin")
41
+
$env.PATH = ($env.PATH | split row (char esep) | prepend $"(brew --prefix | str trim)/opt/openjdk/bin")
42
+
# Other package managers
43
+
$env.PATH = ($env.PATH | split row (char esep) | prepend $"($env.HOME)/.local/bin")
44
+
$env.PATH = ($env.PATH | split row (char esep) | prepend $"($env.HOME)/.cargo/bin")
45
+
46
+
# --- user custom ---
47
+
# Set default editor
48
+
$env.EDITOR = "nvim"
49
+
$env.VISUAL = "codium"
50
+
# Alias for Monash compute cluster
51
+
$env.OPTCLUSTER = "compute.optimisation-2020.cloud.edu.au"
52
+
# CMake settings
53
+
$env.CMAKE_EXPORT_COMPILE_COMMANDS = "1" # output compile-commands.json for clangd
54
+
$env.CMAKE_GENERATOR = "Ninja Multi-Config" # use Ninja generator by default
55
+
$env.CMAKE_C_COMPILER_LAUNCHER = "ccache"
56
+
$env.CMAKE_CXX_COMPILER_LAUNCHER = "ccache"
57
+
# Homebrew shell setup (brew shellenv)
58
+
$env.HOMEBREW_PREFIX = "/opt/homebrew"
59
+
$env.HOMEBREW_CELLAR = "/opt/homebrew/Cellar"
60
+
$env.HOMEBREW_REPOSITORY = "/opt/homebrew"
61
+
$env.INFOPATH = "/opt/homebrew/share/info"
62
+
# Set MANPATH
63
+
$env.MANPATH = "/usr/share/man:/usr/local/share/man:/Library/TeX/Distributions/.DefaultTeX/Contents/Man:/opt/homebrew/share/man"
64
+
65
+
### Setup aliases
66
+
alias edit = ^($env.VISUAL)
67
+
alias start = ^open
68
+
alias less = bat
69
+
alias set-light-theme = kitty +kitten themes Catppuccin-Latte
70
+
alias set-dark-theme = kitty +kitten themes Catppuccin-Macchiato
71
+
alias brew-backup = brew bundle dump --global --no-lock --formula --cask --mas --tap --force
72
+
alias brew-cleanup = brew bundle cleanup --global --no-lock --force --zap
73
+
alias brew-restore = brew bundle install --global --no-lock
74
+
75
+
# Load autojump plugin "zoxide"
76
+
source ~/.cache/zoxide/zoxide.nu
77
+
78
+
# Load completions
79
+
source ~/.cache/nu_scripts/custom-completions/cargo/cargo-completions.nu
80
+
source ~/.cache/nu_scripts/custom-completions/git/git-completions.nu
81
+
source ~/.cache/nu_scripts/custom-completions/make/make-completions.nu
82
+
source ~/.cache/nu_scripts/custom-completions/npm/npm-completions.nu
83
+
source ~/.cache/nu_scripts/custom-completions/typst/typst-completions.nu
+3
private_Library/private_Application Support/private_Sublime Merge/private_Packages/private_User/Diff.sublime-settings
+3
private_Library/private_Application Support/private_Sublime Merge/private_Packages/private_User/Diff.sublime-settings
+6
private_Library/private_Application Support/private_Sublime Merge/private_Packages/private_User/Preferences.sublime-settings
+6
private_Library/private_Application Support/private_Sublime Merge/private_Packages/private_User/Preferences.sublime-settings
+4
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/LSP.sublime-settings
+4
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/LSP.sublime-settings
+18
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/Package Control.sublime-settings
+18
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/Package Control.sublime-settings
···
···
1
+
{
2
+
"bootstrapped": true,
3
+
"in_process_packages": [],
4
+
"installed_packages": [
5
+
"CMakeFormat",
6
+
"Debugger",
7
+
"LSP",
8
+
"LSP-json",
9
+
"LSP-ltex-ls",
10
+
"LSP-rust-analyzer",
11
+
"LSP-svelte",
12
+
"LSP-TexLab",
13
+
"MiniZinc Language",
14
+
"Package Control",
15
+
"Svelte",
16
+
"xonsh",
17
+
],
18
+
}
+11
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/Preferences.sublime-settings
+11
private_Library/private_Application Support/private_Sublime Text/private_Packages/private_User/Preferences.sublime-settings
···
···
1
+
// Settings in here override those in "Default/Preferences.sublime-settings",
2
+
// and are overridden in turn by syntax-specific settings.
3
+
{
4
+
"font_face": "Iosevka Slab",
5
+
"font_size": 16,
6
+
"color_scheme": "auto",
7
+
"save_on_focus_lost": true,
8
+
"ignored_packages": [
9
+
"Vintage",
10
+
],
11
+
}
+50
private_Library/private_Application Support/private_VSCodium/User/settings.json
+50
private_Library/private_Application Support/private_VSCodium/User/settings.json
···
···
1
+
{
2
+
"clangd.arguments": [
3
+
"--compile-commands-dir=./build.nosync/"
4
+
],
5
+
"clangd.checkUpdates": true,
6
+
"cmake.buildDirectory": "${workspaceFolder}/build.nosync",
7
+
"cmake.configureOnOpen": false,
8
+
"cmake.environment": {
9
+
"CMAKE_C_COMPILER_LAUNCHER": "ccache",
10
+
"CMAKE_CXX_COMPILER_LAUNCHER": "ccache"
11
+
},
12
+
"cmake.generator": "Ninja Multi-Config",
13
+
"cmake.installPrefix": "${workspaceFolder}/build.nosync/install",
14
+
"editor.fontFamily": "Iosevka, Menlo, Monaco, 'Courier New', monospace",
15
+
"editor.fontLigatures": true,
16
+
"editor.fontSize": 14,
17
+
"editor.formatOnSave": true,
18
+
"editor.insertSpaces": false,
19
+
"editor.tabSize": 2,
20
+
"editor.wordWrap": "on",
21
+
"extensions.ignoreRecommendations": true,
22
+
"files.autoSave": "onWindowChange",
23
+
"files.insertFinalNewline": true,
24
+
"lldb.showDisassembly": "never",
25
+
"ltex.additionalRules.enablePickyRules": true,
26
+
"ltex.language": "en-GB",
27
+
"rust-analyzer.debug.engine": "vadimcn.vscode-lldb",
28
+
"rust-analyzer.rustfmt.extraArgs": [
29
+
"+nightly"
30
+
],
31
+
"rust-analyzer.rustfmt.overrideCommand": null,
32
+
"shackleLanguageServer.executable": "/Users/dekker1/Library/Mobile Documents/com~apple~CloudDocs/Code/github.com/shackle/target/debug/shackle-ls",
33
+
"terminal.external.osxExec": "kitty.app",
34
+
"terminal.integrated.confirmOnExit": "hasChildProcesses",
35
+
"terminal.integrated.defaultProfile.osx": "Nushell",
36
+
"terminal.integrated.scrollback": 10000,
37
+
"window.autoDetectColorScheme": true,
38
+
"window.zoomLevel": -0.5,
39
+
"workbench.colorTheme": "Catppuccin Latte",
40
+
"workbench.preferredDarkColorTheme": "Catppuccin Macchiato",
41
+
"workbench.preferredLightColorTheme": "Catppuccin Latte",
42
+
"[python]": {
43
+
"editor.defaultFormatter": "ms-python.black-formatter"
44
+
},
45
+
"sapling.showInlineBlame": true,
46
+
"files.exclude": {
47
+
"**/.sl": true
48
+
},
49
+
"cmake.showOptionsMovedNotification": false
50
+
}
+15
private_Library/private_Preferences/sapling/sapling.conf
+15
private_Library/private_Preferences/sapling/sapling.conf
···
···
1
+
[ui]
2
+
username =Jip J. Dekker <jip@dekker.one>
3
+
ignore.userroot = ~/.gitignore
4
+
5
+
# uncomment to disable color in command output
6
+
# (see 'sl help color' for details)
7
+
# color = never
8
+
9
+
# uncomment to disable command output pagination
10
+
# (see 'sl help pager' for details)
11
+
# paginate = never
12
+
13
+
[isl]
14
+
hasShownGettingStarted = false
15
+
render-compact = false
+29
private_dot_gitconfig
+29
private_dot_gitconfig
···
···
1
+
[alias]
2
+
co = checkout
3
+
l = log --graph --decorate --pretty=oneline --abbrev-commit
4
+
prune = fetch --prune
5
+
stash-all = stash save --include-untracked
6
+
s = status
7
+
undo = reset --soft HEAD^
8
+
[commit]
9
+
gpgSign = true
10
+
[core]
11
+
excludesfile = /Users/dekker1/.gitignore
12
+
[credential]
13
+
helper = osxkeychain
14
+
[help]
15
+
autocorrect = 1
16
+
[push]
17
+
default = simple
18
+
[user]
19
+
name = Jip J. Dekker
20
+
email = jip@dekker.one
21
+
signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMCC0liW47USr/Ic1rJ52V4eE07y42VG9Ols1zYBrPlc
22
+
[pull]
23
+
ff = only
24
+
[init]
25
+
defaultBranch = develop
26
+
[gpg]
27
+
format = ssh
28
+
[gpg "ssh"]
29
+
program = /Applications/1Password.app/Contents/MacOS/op-ssh-sign
+7
private_dot_gnupg/gpg-agent.conf.tmpl
+7
private_dot_gnupg/gpg-agent.conf.tmpl
+12
run_nushell_generation.nu
+12
run_nushell_generation.nu
···
···
1
+
#!/usr/bin/env nu
2
+
3
+
# Generate zoxide configuration
4
+
if (which zoxide | is-empty) == false {
5
+
mkdir ~/.cache/zoxide/
6
+
zoxide init nushell --hook prompt | save --force ~/.cache/zoxide/zoxide.nu
7
+
}
8
+
9
+
if (which starship | is-empty) == false {
10
+
mkdir ~/.cache/starship/
11
+
starship init nu | save --force ~/.cache/starship/init.nu
12
+
}
+1
symlink_dot_Brewfile.tmpl
+1
symlink_dot_Brewfile.tmpl
···
···
1
+
{{ .chezmoi.sourceDir }}/Brewfile