+2
-2
fish/config.fish
+2
-2
fish/config.fish
···
60
60
61
61
# ghcup-env
62
62
set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX $HOME
63
-
set -gx PATH $HOME/.cabal/bin $PATH /Users/boltless/.ghcup/bin
63
+
set -gx PATH $HOME/.cabal/bin $PATH $HOME/.ghcup/bin
64
64
65
65
# pnpm
66
-
set -gx PNPM_HOME "/Users/boltless/Library/pnpm"
66
+
set -gx PNPM_HOME "$HOME/Library/pnpm"
67
67
if not string match -q -- $PNPM_HOME $PATH
68
68
set -gx PATH "$PNPM_HOME" $PATH
69
69
end
+1
-1
ghostty/config
+1
-1
ghostty/config
+4
-4
git/config
+4
-4
git/config
···
2
2
defaultBranch = main
3
3
[user]
4
4
name = Seongmin Lee
5
-
email = boltlessengineer@proton.me
5
+
email = git@boltless.me
6
6
signingkey = ~/.ssh/git-sign-key.pub
7
7
[commit]
8
8
gpgsign = true
9
9
[core]
10
-
excludesFile = ~/.config/git/ignore
10
+
excludesFile = ~/.config/git/ignore
11
11
[gpg]
12
12
format = ssh
13
13
[gpg "ssh"]
···
15
15
[url "git@github.com:"]
16
16
insteadOf = https://github.com/
17
17
[url "git@github.com:boltlessengineer/"]
18
-
insteadOf = self:
18
+
insteadOf = self:
19
19
[rerere]
20
20
enabled = true
21
21
[alias]
22
-
st = status
22
+
st = status
23
23
lg = log --branches --remotes --tags --graph --decorate
24
24
ll = log --branches --remotes --tags --graph --decorate --oneline
25
25
find = !sh -c 'git-repo-search \"$@\" | fzf | awk \"{print \\$NF}\" --
+18
-2
jj/config.toml
+18
-2
jj/config.toml
···
1
1
"$schema" = "https://jj-vcs.github.io/jj/latest/config-schema.json"
2
2
3
+
[aliases]
4
+
su = ["squash"]
5
+
tug = ["bookmark", "move", "--from", "heads(::@- & bookmarks())", "--to", "@-"]
6
+
# mega-merge pull
7
+
mp = ["rebase", "-b", "MM", "-d", "heads(MM- | trunk())"]
8
+
3
9
[ui]
4
-
default-command = ["log", "--no-pager"]
10
+
default-command = ["log", "--no-pager", "-r", "@ | coalesce(mega_merge(), default()) | trunk()"]
5
11
should-sign-off = true
12
+
diff-formatter = ["difft", "--color=always", "--syntax-highlight=off", "$left", "$right"]
6
13
# diff-editor = ["nvim", "-c", "DiffEditor $left $right $output"]
7
14
# merge-editor = "vimdiff"
8
15
# conflict-marker-style = "git"
9
16
10
17
[user]
11
18
name = "Seongmin Lee"
12
-
email = "boltlessengineer@proton.me"
19
+
email = "git@boltless.me"
13
20
14
21
[signing]
15
22
behavior = "own"
···
18
25
19
26
[git]
20
27
write-change-id-header = true
28
+
private-commits = "description(glob:'wip:*') | description(glob:'private:*')"
29
+
30
+
[revset-aliases]
31
+
'MM' = "description('[mega-merge]')"
32
+
'FP' = "fork_point(MM-)"
33
+
'wip' = "description(glob:'wip:*')"
34
+
'default()' = "@ | ancestors(immutable_heads().., 2) | trunk()"
35
+
'show(x)' = "@ | ancestors(..(x::) ~ immutable(), 2) | trunk()"
36
+
'mega_merge()' = "ancestors(..(MM::) ~ immutable(), 2)"
21
37
22
38
[templates]
23
39
draft_commit_description = '''
+16
nix/darwin.nix
+16
nix/darwin.nix
···
9
9
pkgs.vim
10
10
pkgs.git
11
11
pkgs.ollama
12
+
# used for remote linux deployment
13
+
pkgs.nixos-rebuild
12
14
# I don't want to touch this due to current neovim settings.
13
15
# remove it when lux.nvim is out
14
16
(pkgs-unstable.lua5_1.withPackages (ps: with ps; [luarocks]))
···
41
43
# Enable rosetta binaries
42
44
nix.settings.extra-platforms = "x86_64-darwin aarch64-darwin";
43
45
46
+
nix.settings.trusted-users = [ "@admin" ];
47
+
nix.settings.extra-trusted-users = [ "boltless" ];
48
+
49
+
nix.linux-builder = {
50
+
enable = true;
51
+
maxJobs = 4;
52
+
config.virtualisation = {
53
+
cores = 6;
54
+
};
55
+
};
56
+
44
57
# Enable alternative shell support in nix-darwin.
45
58
# programs.fish.enable = true;
46
59
···
68
81
autohide-time-modifier = 0.6;
69
82
mru-spaces = false;
70
83
show-recents = false;
84
+
orientation = "left";
71
85
# Disable bottom-right corner action
72
86
wvous-br-corner = 1;
73
87
# persistent-apps = [];
···
204
218
masApps = {
205
219
Numbers = 409203825;
206
220
Pages = 409201541;
221
+
Tampermonkey = 6738342400;
207
222
Things3 = 904280696;
223
+
# Xcode = 497799835;
208
224
};
209
225
};
210
226
}
+9
-9
nix/flake.lock
+9
-9
nix/flake.lock
···
7
7
]
8
8
},
9
9
"locked": {
10
-
"lastModified": 1748373722,
11
-
"narHash": "sha256-qi6aDGP2W6GyAUNEhg+slQWEpUiJ8LNIrQkmxHpzadI=",
10
+
"lastModified": 1749744770,
11
+
"narHash": "sha256-MEM9XXHgBF/Cyv1RES1t6gqAX7/tvayBC1r/KPyK1ls=",
12
12
"owner": "nix-darwin",
13
13
"repo": "nix-darwin",
14
-
"rev": "75b99daa12b1fffd646d6c3cf13b06f1fa5cef63",
14
+
"rev": "536f951efb1ccda9b968e3c9dee39fbeb6d3fdeb",
15
15
"type": "github"
16
16
},
17
17
"original": {
···
23
23
},
24
24
"nixpkgs": {
25
25
"locked": {
26
-
"lastModified": 1748784767,
27
-
"narHash": "sha256-XDFqk5jdf//OwpbftRK/8tmJHVjTFhjoHOPoIS9n9Gg=",
26
+
"lastModified": 1756659129,
27
+
"narHash": "sha256-ZFCE+pWMvOUoqMSWXyFZIjsaIH53mkGMtY9RHrAQhJw=",
28
28
"owner": "NixOS",
29
29
"repo": "nixpkgs",
30
-
"rev": "e8c6caf5a492a7757d161c29d80c308462e896d3",
30
+
"rev": "11e13914dbd6715d20bbe0637e32f3feefb5ce0e",
31
31
"type": "github"
32
32
},
33
33
"original": {
···
39
39
},
40
40
"nixpkgs-unstable": {
41
41
"locked": {
42
-
"lastModified": 1749369410,
43
-
"narHash": "sha256-P1eYm8bewiyWg3QaPCHrOp6iWg/7ESi/aGHT4yilyNo=",
42
+
"lastModified": 1756696532,
43
+
"narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=",
44
44
"owner": "NixOS",
45
45
"repo": "nixpkgs",
46
-
"rev": "8207ad0d501dd3590e0e81a7c56b386a5c4342c9",
46
+
"rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f",
47
47
"type": "github"
48
48
},
49
49
"original": {
+45
-1
nix/flake.nix
+45
-1
nix/flake.nix
···
19
19
system = "aarch64-darwin";
20
20
pkgs = import nixpkgs {
21
21
inherit system;
22
-
overlays = [ (import ./overlays/jpm.nix) ];
22
+
config.allowUnfree = true;
23
+
overlays = [
24
+
(import ./overlays/jpm.nix)
25
+
(import ./overlays/bleve.nix)
26
+
(final: prev: {
27
+
kotlin-lsp = final.callPackage ./overlays/kotlin-lsp.nix {};
28
+
})
29
+
];
23
30
};
24
31
pkgs-unstable = nixpkgs-unstable.legacyPackages.${system};
25
32
in
···
50
57
name = "my-env";
51
58
paths = [
52
59
pkgs.bacon
60
+
pkgs.bleve-cli
53
61
pkgs.btop
62
+
pkgs.difftastic
63
+
pkgs.direnv
54
64
pkgs.dust
55
65
pkgs.eza
56
66
pkgs.fd
67
+
pkgs.fzf
57
68
pkgs.gh
69
+
pkgs.git
70
+
pkgs.go
71
+
pkgs.gopls
58
72
pkgs.hello
59
73
pkgs.janet
74
+
pkgs.yarn
60
75
pkgs.jpm
76
+
pkgs.kotlin-lsp
77
+
pkgs.ktfmt
61
78
pkgs.meld
79
+
pkgs.mprocs
80
+
pkgs.nil
81
+
pkgs.nixfmt-classic
62
82
pkgs.nodejs_24
83
+
pkgs.pandoc
63
84
pkgs.qmk
64
85
pkgs.ripgrep
86
+
pkgs.stack
65
87
pkgs.sumneko-lua-language-server
88
+
pkgs.tmux
89
+
pkgs.tree
90
+
pkgs.typescript-language-server
91
+
pkgs.typst
66
92
pkgs.unixtools.watch
93
+
pkgs.vim
94
+
pkgs.zellij
67
95
pkgs-unstable.jujutsu
68
96
pkgs-unstable.neovim
97
+
(pkgs-unstable.lua5_1.withPackages (ps: with ps; [luarocks]))
98
+
(pkgs.buildEnv {
99
+
name = "mailing";
100
+
paths = [
101
+
pkgs.neomutt
102
+
# pkgs.mutt-wizard
103
+
# pkgs.isync
104
+
# pkgs.msmtp
105
+
# pkgs.pass
106
+
# pkgs.cacert
107
+
# pkgs.gettext
108
+
];
109
+
})
69
110
] ++ (if pkgs.stdenv.isDarwin then [
70
111
# TODO: automate this with nix:
71
112
# $ ln -sfn ~/.nix-profile/Applications ~/Applications/Nix\ User\ Apps
···
74
115
pkgs.iina
75
116
pkgs.macmon
76
117
pkgs.docker
118
+
pkgs.slack
77
119
] else []);
78
120
};
121
+
# This can be just `imports = [ ./templates/templates.nix ]` when using flake-parts
122
+
templates = ((import ./templates/templates.nix) { inherit inputs; }).flake.templates;
79
123
};
80
124
}
81
125
# vim: et:ts=2
+25
nix/overlays/bleve.nix
+25
nix/overlays/bleve.nix
···
1
+
self: super: {
2
+
bleve-cli = super.buildGoModule {
3
+
pname = "bleve-cli";
4
+
version = "2.5.2";
5
+
6
+
src = super.fetchFromGitHub {
7
+
owner = "blevesearch";
8
+
repo = "bleve";
9
+
rev = "v2.5.2";
10
+
sha256 = "sha256-QycDP5IRuZsLo0cDbsQoX4Qb4yjsV3PDns96+dMajoE=";
11
+
};
12
+
13
+
subPackages = [ "cmd/bleve" ];
14
+
15
+
vendorHash = "sha256-RRIDViTRRKSN6QJhUSvTCoXJ2R5E3DWT4ygk9U/Q1dA=";
16
+
17
+
doCheck = false;
18
+
19
+
meta = with super.lib; {
20
+
description = "A modern text/numeric/geo-spatial/vector indexing library for go";
21
+
homepage = "https://github.com/blevesearch/bleve";
22
+
license = licenses.asl20;
23
+
};
24
+
};
25
+
}
+56
nix/overlays/kotlin-lsp.nix
+56
nix/overlays/kotlin-lsp.nix
···
1
+
{
2
+
lib,
3
+
stdenv,
4
+
fetchzip,
5
+
openjdk,
6
+
makeWrapper,
7
+
}:
8
+
9
+
stdenv.mkDerivation rec {
10
+
pname = "kotlin-lsp";
11
+
version = "0.253.10629";
12
+
src = fetchzip {
13
+
stripRoot = false;
14
+
url = "https://download-cdn.jetbrains.com/kotlin-lsp/${version}/kotlin-${version}.zip";
15
+
hash = "sha256-LCLGo3Q8/4TYI7z50UdXAbtPNgzFYtmUY/kzo2JCln0=";
16
+
};
17
+
18
+
dontBuild = true;
19
+
20
+
installPhase = ''
21
+
runHook preInstall
22
+
23
+
mkdir -p $out/lib
24
+
mkdir -p $out/native
25
+
mkdir -p $out/bin
26
+
cp -r lib/* $out/lib
27
+
cp -r native/* $out/native
28
+
chmod +x kotlin-lsp.sh
29
+
cp "kotlin-lsp.sh" "$out/kotlin-lsp.sh"
30
+
ln -s $out/kotlin-lsp.sh $out/bin/kotlin-lsp
31
+
32
+
runHook postInstall
33
+
'';
34
+
35
+
nativeBuildInputs = [
36
+
makeWrapper
37
+
];
38
+
39
+
postFixup = ''
40
+
wrapProgram "$out/bin/kotlin-lsp" --set JAVA_HOME ${openjdk} --prefix PATH : ${
41
+
lib.strings.makeBinPath [
42
+
openjdk
43
+
]
44
+
}
45
+
'';
46
+
47
+
meta = {
48
+
description = "LSP implementation for Kotlin code completion, linting";
49
+
homepage = "https://github.com/Kotlin/kotlin-lsp";
50
+
changelog = "https://github.com/Kotlin/kotlin-lsp/blob/kotlin-lsp/v${version}/RELEASES.md";
51
+
license = lib.licenses.asl20;
52
+
platforms = lib.platforms.unix;
53
+
sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
54
+
mainProgram = "kotlin-lsp";
55
+
};
56
+
}
+48
nix/templates/python/flake.nix
+48
nix/templates/python/flake.nix
···
1
+
{
2
+
description = "python flake";
3
+
inputs = {
4
+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
5
+
flake-parts.url = "github:hercules-ci/flake-parts";
6
+
};
7
+
outputs = inputs @ { flake-parts, ... }:
8
+
flake-parts.lib.mkFlake { inherit inputs; } {
9
+
systems = [
10
+
"x86_64-linux"
11
+
"aarch64-linux"
12
+
"aarch64-darwin"
13
+
];
14
+
perSystem = { pkgs, system, ... }: let
15
+
commonPackages = [
16
+
pkgs.python313Full
17
+
pkgs.pyright
18
+
pkgs.uv
19
+
pkgs.curl
20
+
pkgs.wget
21
+
pkgs.cmake
22
+
] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [
23
+
pkgs.gcc
24
+
pkgs.stdenv.cc.cc.lib
25
+
];
26
+
in {
27
+
devShells.default = pkgs.mkShell {
28
+
buildInputs = commonPackages;
29
+
shellHook = ''
30
+
# Set up the Python virtual environment with uv
31
+
test -d .venv || ${pkgs.uv}/bin/uv venv .venv
32
+
export VIRTUAL_ENV="$(pwd)/.venv"
33
+
export PATH="$VIRTUAL_ENV/bin:$PATH"
34
+
export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath commonPackages}:$LD_LIBRARY_PATH
35
+
36
+
source "$VIRTUAL_ENV/bin/activate"
37
+
38
+
if uv sync --frozen; then
39
+
package_count=$(uv pip list --format=freeze | wc -l)
40
+
echo "Done. $package_count pip packages installed."
41
+
else
42
+
echo "Warning: An error occurred during uv sync."
43
+
fi
44
+
'';
45
+
};
46
+
};
47
+
};
48
+
}
+18
nix/templates/templates.nix
+18
nix/templates/templates.nix
···
1
+
{ inputs, ... }:
2
+
let templatesDir = ./.;
3
+
in {
4
+
flake.templates = let
5
+
mkTemplate = name: val:
6
+
let
7
+
path = templatesDir + "/${name}";
8
+
flake = import (path + "/flake.nix");
9
+
in {
10
+
inherit path;
11
+
description = flake.description;
12
+
};
13
+
templateEntities = let
14
+
op = _: val: val == "directory";
15
+
as = builtins.readDir templatesDir;
16
+
in inputs.nixpkgs.lib.filterAttrs op as;
17
+
in builtins.mapAttrs mkTemplate templateEntities;
18
+
}
+2
tmux/.tmux.conf
+2
tmux/.tmux.conf
+5
-1
zsh/.zprofile
+5
-1
zsh/.zprofile
···
29
29
30
30
export PATH="$HOME/dot/bin:$PATH"
31
31
32
+
# android development setup
33
+
# https://developer.android.com/tools/variables
34
+
export ANDROID_HOME=$HOME/Library/Android/sdk
35
+
export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools"
32
36
33
37
34
38
################ BOTTOM ################
35
39
# load .zshrc when interactive (ssh)
36
-
[[ -o interactive ]] && source ~/.zshrc
40
+
# [[ -o interactive ]] && source ~/.zshrc
+6
zsh/.zshrc
+6
zsh/.zshrc
···
8
8
alias ta="tmux attach"
9
9
alias nn="NVIM_APPNAME=nativevim nvim"
10
10
alias nd="nix develop -c zsh -l"
11
+
alias zj="zellij"
11
12
12
13
## Custom prompt
13
14
setopt prompt_subst
···
27
28
if [[ -n "$IN_NIX_SHELL" ]]; then
28
29
export SHELL=$(which zsh)
29
30
fi
31
+
32
+
eval "$(direnv hook zsh)"
33
+
34
+
# https://github.com/nix-community/home-manager/issues/2562
35
+
# TODO: load nix profile shell functions
30
36
31
37
# Added by LM Studio CLI (lms)
32
38
export PATH="$PATH:$HOME/.lmstudio/bin"