Compare commits
143 commits
add-scalad
...
main
Author | SHA1 | Date | |
---|---|---|---|
78e99ced02 | |||
fda4b11a5f | |||
365ed3db6b | |||
407adf52c0 | |||
19f70f19e4 | |||
115dce6cb2 | |||
1f636db477 | |||
f4ac5a2006 | |||
a91f9d00d0 | |||
983b96e9d0 | |||
ab3f6a797d | |||
cfe9e7ae8f | |||
99571ae1c0 | |||
ea0a2167e1 | |||
5451531a0c | |||
8fed016d19 | |||
3d1e971c4b | |||
2889dbcfb8 | |||
5c8bf490c2 | |||
4aaca19c8c | |||
ed6a9a88bf | |||
cbeb9fd9ea | |||
52ae41a79b | |||
a5bbdd636c | |||
a5317e85f0 | |||
b55cec1458 | |||
772fb5cd4e | |||
fb2e770b02 | |||
ff121dd391 | |||
7a85853e80 | |||
43e4be1512 | |||
f5b32b7288 | |||
81c1cd6d7e | |||
97dd1d4633 | |||
e2beeae636 | |||
07b27ef004 | |||
e52a604ee0 | |||
6853208de5 | |||
100290a11c | |||
a92c0d905e | |||
6f95ac5bc3 | |||
0ddb939e61 | |||
ab36ee0f4c | |||
b9ce9b9ee1 | |||
d1685c92d3 | |||
f923ddf7c4 | |||
a770ede405 | |||
57baa8ac77 | |||
e4a817cce6 | |||
d601fe01d0 | |||
df302e8540 | |||
b8b4d3edd6 | |||
074156d2d6 | |||
219b7e3ec2 | |||
4a87a28464 | |||
5cf0dc6f6b | |||
f141d7d804 | |||
780cd784c7 | |||
c6ec29ca13 | |||
5742f7e8ba | |||
07ad385a40 | |||
276ceac3d5 | |||
29c4ce7acd | |||
7ca9501e87 | |||
bea7f4b411 | |||
6896222f3a | |||
850b39c9b6 | |||
cc54218e6c | |||
832bc57208 | |||
446f158cd1 | |||
ca6336a7fc | |||
6d34841a45 | |||
d393f2c62d | |||
25dfde6d0c | |||
db1c0a7c24 | |||
02bb10e6ea | |||
1636b6eb8a | |||
5c6caa88a9 | |||
b02dc5d2ed | |||
482c68d6df | |||
17166fd00f | |||
bd57d53565 | |||
1c0cb47c5b | |||
559b8684b0 | |||
55468c89f6 | |||
8e5335ee33 | |||
e64fcefc8c | |||
f34346c313 | |||
c70d6cbe79 | |||
8238a99555 | |||
5abb42c8b6 | |||
e0c67d29ed | |||
595e21ea92 | |||
5819915e4e | |||
cdc210994a | |||
22ce600524 | |||
985b139a3b | |||
24d20d1391 | |||
5d8cfd9250 | |||
63a1ab0a2f | |||
487f3988c6 | |||
f55b00efc0 | |||
5dd55a91df | |||
e9e81fb6fb | |||
2a94b52e76 | |||
095b211b79 | |||
595a70a753 | |||
307d569fcc | |||
7c8834990d | |||
99ce453270 | |||
03412261b5 | |||
2e60e6925f | |||
![]() |
ebcc413c4f | ||
45a9afa230 | |||
![]() |
3ffa53af7a | ||
2f79b4b975 | |||
![]() |
7cf74a25ef | ||
b1b673de42 | |||
![]() |
bc892f2efd | ||
bb6fe35f54 | |||
![]() |
15a386c2cb | ||
aec63889ec | |||
![]() |
44d9115424 | ||
285f132d14 | |||
![]() |
90571fac9e | ||
7135dddd9a | |||
679bd8f95a | |||
![]() |
b80945bb18 | ||
f55bf1e412 | |||
![]() |
c07ed6c150 | ||
5157a786f7 | |||
![]() |
62d5238255 | ||
1182588dbf | |||
![]() |
71a18a763b | ||
![]() |
143f887872 | ||
d89ca3c8aa | |||
a7fc11fcde | |||
![]() |
3739000e7e | ||
![]() |
48421bb10e | ||
fd191d0dd9 | |||
dac860df2d | |||
cc0fd60226 | |||
![]() |
7194bbdb83 |
19 changed files with 1424 additions and 1074 deletions
|
@ -1,4 +1 @@
|
|||
{
|
||||
allowUnfree = true;
|
||||
}
|
||||
|
||||
{ allowUnfree = true; }
|
||||
|
|
148
flake.lock
Normal file
148
flake.lock
Normal file
|
@ -0,0 +1,148 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nur",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733312601,
|
||||
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738428726,
|
||||
"narHash": "sha256-OUoEgorFHBVnqQ2lITqs6MGN7MH4t/8hLEO29OKu6CM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "dae6d3460c8bab3ac9f38a86affe45b32818e764",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738277753,
|
||||
"narHash": "sha256-iyFcCOk0mmDiv4ut9mBEuMxMZIym3++0qN1rQBg8FW0=",
|
||||
"owner": "LnL7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "49b807fa7c37568d7fbe2aeaafb9255c185412f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "LnL7",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1738142207,
|
||||
"narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1738142207,
|
||||
"narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9d3ae807ebd2981d593cddd0080856873139aa40",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1738362438,
|
||||
"narHash": "sha256-EO2dVkMVLThWqv4hobEZEZGWBEuH2Z9SYqQDrbLSclU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nur",
|
||||
"rev": "95ddad0ff0e67c90314c6ca46324dce5f9a910d2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nur",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nix-darwin": "nix-darwin",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nur": "nur"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nur",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733222881,
|
||||
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
101
flake.nix
Normal file
101
flake.nix
Normal file
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
description = "Nix and home-manager configurations for Softinio's macbook";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nix-darwin = {
|
||||
url = "github:LnL7/nix-darwin";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nur.url = "github:nix-community/nur";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nix-darwin,
|
||||
home-manager,
|
||||
nur,
|
||||
nixpkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
homeManagerConfFor =
|
||||
config:
|
||||
{ ... }:
|
||||
{
|
||||
nixpkgs.overlays = [ nur.overlays.default ];
|
||||
imports = [
|
||||
config
|
||||
];
|
||||
};
|
||||
|
||||
m3maxConfiguration =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [ home-manager ];
|
||||
|
||||
fonts = {
|
||||
packages = with pkgs; [ fira-code ];
|
||||
};
|
||||
|
||||
services.nix-daemon.enable = true;
|
||||
|
||||
nix = {
|
||||
nixPath = nixpkgs.lib.mkForce [ "nixpkgs=${nixpkgs}" ];
|
||||
|
||||
package = pkgs.nixVersions.stable;
|
||||
settings = {
|
||||
experimental-features = "nix-command flakes";
|
||||
extra-platforms = [
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
trusted-users = [
|
||||
"root"
|
||||
"salar"
|
||||
];
|
||||
};
|
||||
distributedBuilds = false;
|
||||
};
|
||||
|
||||
programs.fish.enable = true;
|
||||
|
||||
system.configurationRevision = self.rev or self.dirtyRev or null;
|
||||
|
||||
system.stateVersion = 4;
|
||||
|
||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||
|
||||
users = {
|
||||
users.salar = {
|
||||
home = /Users/salar;
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
darwinConfigurations.salarm3max = nix-darwin.lib.darwinSystem {
|
||||
system = "aarc64-darwin";
|
||||
modules = [
|
||||
m3maxConfiguration
|
||||
home-manager.darwinModules.home-manager
|
||||
{
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.salar = homeManagerConfFor ./home.nix;
|
||||
}
|
||||
];
|
||||
specialArgs = {
|
||||
inherit nixpkgs;
|
||||
};
|
||||
};
|
||||
|
||||
darwinPackages = self.darwinConfigurations.salarm3max.pkgs;
|
||||
|
||||
defaultPackage.aarch64-darwin = self.darwinConfigurations.salarm3max.system;
|
||||
};
|
||||
}
|
393
home.nix
393
home.nix
|
@ -1,4 +1,8 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
# Let Home Manager install and manage itself.
|
||||
|
@ -6,33 +10,140 @@
|
|||
|
||||
imports = (import ./programs);
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(import ./overlays/sumneko-lua-language-server)
|
||||
(import (builtins.fetchTarball {
|
||||
url = https://github.com/nix-community/neovim-nightly-overlay/archive/master.tar.gz;
|
||||
}))
|
||||
];
|
||||
nixpkgs.config.allowUnfreePredicate =
|
||||
pkg:
|
||||
builtins.elem (lib.getName pkg) [
|
||||
"discord"
|
||||
"slack"
|
||||
"vscode"
|
||||
"vscode-extension-github-copilot"
|
||||
"vscode-extension-github-copilot-chat"
|
||||
"vscode-extension-MS-python-vscode-pylance"
|
||||
"vscode-extension-visualjj-visualjj"
|
||||
];
|
||||
|
||||
home = {
|
||||
username = "salar";
|
||||
homeDirectory = "/Users/salar";
|
||||
stateVersion = "21.11";
|
||||
stateVersion = "24.11";
|
||||
sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "$EDITOR";
|
||||
};
|
||||
packages = with pkgs; [
|
||||
any-nix-shell
|
||||
aspell
|
||||
basedpyright
|
||||
bash-language-server
|
||||
cachix
|
||||
cmake
|
||||
coursier
|
||||
curlFull
|
||||
deno
|
||||
devenv
|
||||
difftastic
|
||||
discord
|
||||
dua
|
||||
fd
|
||||
ffmpeg
|
||||
font-awesome
|
||||
gnupg
|
||||
go
|
||||
graphviz
|
||||
jq-lsp
|
||||
luajit
|
||||
lua-language-server
|
||||
marksman
|
||||
marp-cli
|
||||
maven
|
||||
meld
|
||||
metals
|
||||
multimarkdown
|
||||
mypy
|
||||
neofetch
|
||||
neovim
|
||||
nil
|
||||
niv
|
||||
nixd
|
||||
nix-index
|
||||
nixfmt-rfc-style
|
||||
nix-prefetch-git
|
||||
nodejs
|
||||
ollama
|
||||
openssl
|
||||
pandoc
|
||||
patchelf
|
||||
pngpaste
|
||||
prettyping
|
||||
python3Packages.huggingface-hub
|
||||
python3Packages.jupyterlab
|
||||
rclone
|
||||
readline
|
||||
ripgrep
|
||||
ripgrep-all
|
||||
rustup
|
||||
sbt
|
||||
scala-cli
|
||||
shellcheck
|
||||
slack
|
||||
slides
|
||||
slumber
|
||||
sqlite
|
||||
stylua
|
||||
swift-format
|
||||
tealdeer
|
||||
tectonic
|
||||
texlab
|
||||
tig
|
||||
tokei
|
||||
tree
|
||||
tree-sitter
|
||||
typescript
|
||||
typescript-language-server
|
||||
wget
|
||||
uv
|
||||
vscode-langservers-extracted
|
||||
xz
|
||||
yaml-language-server
|
||||
yq
|
||||
];
|
||||
};
|
||||
|
||||
programs.bat = {
|
||||
enable = true;
|
||||
enable = true;
|
||||
};
|
||||
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
programs.darcs = {
|
||||
enable = true;
|
||||
author = [ "Salar Rahmanian <code@softinio.com>" ];
|
||||
boring = [
|
||||
"^.idea$"
|
||||
"^.direnv$"
|
||||
"^.envrc$"
|
||||
"^.vscode$"
|
||||
];
|
||||
};
|
||||
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
programs.eza = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
git = true;
|
||||
icons = "auto";
|
||||
extraOptions = [
|
||||
"--group-directories-first"
|
||||
"--long"
|
||||
"--header"
|
||||
"--all"
|
||||
];
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
|
@ -43,6 +154,23 @@
|
|||
settings = {
|
||||
editor = "nvim";
|
||||
git_protocol = "ssh";
|
||||
prompt = "enabled";
|
||||
aliases = {
|
||||
co = "pr checkout";
|
||||
pv = "pr view";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.gh-dash = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
settings = {
|
||||
theme = "tokyonight";
|
||||
editor.file-picker.hidden = false;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -50,28 +178,28 @@
|
|||
enable = true;
|
||||
};
|
||||
|
||||
programs.java = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
programs.jq = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
programs.kitty = {
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
font = {
|
||||
name = "FiraCode Nerd Font Mono Retina";
|
||||
size = 16;
|
||||
};
|
||||
settings = {
|
||||
copy_on_select = true;
|
||||
enabled_layouts = "*";
|
||||
macos_quit_when_last_window_closed = true;
|
||||
scrollback_lines = 10000;
|
||||
};
|
||||
};
|
||||
|
||||
programs.nix-index = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
settings = {
|
||||
command_timeout = 1000;
|
||||
command_timeout = 3000;
|
||||
character = {
|
||||
success_symbol = " [λ](bold green)";
|
||||
error_symbol = " [λ](bold red)";
|
||||
|
@ -79,218 +207,9 @@
|
|||
};
|
||||
};
|
||||
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
pkgs.vscode-extensions.scalameta.metals
|
||||
pkgs.vscode-extensions.usernamehw.errorlens
|
||||
pkgs.vscode-extensions.redhat.java
|
||||
pkgs.vscode-extensions.xyz.local-history
|
||||
pkgs.vscode-extensions.yzhang.markdown-all-in-one
|
||||
pkgs.vscode-extensions.svsool.markdown-memo
|
||||
pkgs.vscode-extensions.github.vscode-pull-request-github
|
||||
pkgs.vscode-extensions.github.github-vscode-theme
|
||||
pkgs.vscode-extensions.jnoortheen.nix-ide
|
||||
pkgs.vscode-extensions.timonwong.shellcheck
|
||||
pkgs.vscode-extensions.skyapps.fish-vscode
|
||||
pkgs.vscode-extensions.baccata.scaladex-search
|
||||
pkgs.vscode-extensions.davidanson.vscode-markdownlint
|
||||
];
|
||||
userSettings = {
|
||||
editor.fontFamily = "FiraCode Nerd Font Mono Retina";
|
||||
editor.fontSize = 16;
|
||||
telemetry.enableTelemetry = false;
|
||||
workbench.colorTheme = "Solarized Light";
|
||||
workbench.iconTheme = "vscode-icons";
|
||||
};
|
||||
};
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
functions = {
|
||||
gitignore = "curl -sL https://www.gitignore.io/api/$argv";
|
||||
};
|
||||
|
||||
plugins = [
|
||||
{
|
||||
name = "bass";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "edc";
|
||||
repo = "bass";
|
||||
rev = "50eba266b0d8a952c7230fca1114cbc9fbbdfbd4";
|
||||
sha256 = "0ppmajynpb9l58xbrcnbp41b66g7p0c9l2nlsvyjwk6d16g4p4gy";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "foreign-env";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "oh-my-fish";
|
||||
repo = "plugin-foreign-env";
|
||||
rev = "dddd9213272a0ab848d474d0cbde12ad034e65bc";
|
||||
sha256 = "00xqlyl3lffc5l0viin1nyp819wf81fncqyz87jx8ljjdhilmgbs";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "bobthefish";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "oh-my-fish";
|
||||
repo = "theme-bobthefish";
|
||||
rev = "a2ad38aa051aaed25ae3bd6129986e7f27d42d7b";
|
||||
sha256 = "1fssb5bqd2d7856gsylf93d28n3rw4rlqkhbg120j5ng27c7v7lq";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
loginShellInit = ''
|
||||
set -xg TERM xterm-256color
|
||||
if test -e /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||
fenv source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||
end
|
||||
|
||||
if test -e /nix/var/nix/profiles/default/etc/profile.d/nix.sh
|
||||
fenv source /nix/var/nix/profiles/default/etc/profile.d/nix.sh
|
||||
end
|
||||
|
||||
if test -e $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
fenv source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
end
|
||||
|
||||
set -xg PATH $HOME/bin $HOME/.cargo/bin $PATH
|
||||
|
||||
set -xg PATH /Users/salar/.luarocks/bin:/nix/store/95wpywsjf5iiw77f6n9rw347lk1sly15-luarocks-3.2.1/bin:/Users/salar/bin:/Users/salar/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/nix/store/3qp71mhrpxxg080yc82k51nx7b5hkajr-kitty-0.21.2/Applications/kitty.app/Contents/MacOS $PATH
|
||||
|
||||
set -xg JAVA_HOME /Users/salar/.nix-profile
|
||||
|
||||
set -xg JDTLS_CONFIG /Users/salar/.config/jdt-language-server/config_mac
|
||||
|
||||
set -xg JAR /Users/salar/.config/jdt-language-server/plugins/org.eclipse.equinox.launcher_1.6.200.v20210416-2027.jar
|
||||
|
||||
set -xg WORKSPACE /Users/salar/Projects
|
||||
|
||||
set -xg NIX_PATH $HOME/.nix-defexpr/channels $NIX_PATH
|
||||
|
||||
set -xg FZF_DEFAULT_OPTS "--preview='bat {} --color=always'" \n
|
||||
|
||||
set -xg TOOLCHAINS swift
|
||||
|
||||
set -xg XDG_CONFIG_HOME $HOME/.config
|
||||
|
||||
set -xg LUA_PATH "/nix/store/95wpywsjf5iiw77f6n9rw347lk1sly15-luarocks-3.2.1/share/lua/5.1/?.lua;/nix/store/95wpywsjf5iiw77f6n9rw347lk1sly15-luarocks-3.2.1/share/lua/5.1/?/init.lua;/Users/salar/.luarocks/share/lua/5.1/?.lua;/Users/salar/.luarocks/share/lua/5.1/?/init.lua"
|
||||
|
||||
set -xg LUA_CPATH "?.so;/nix/store/95wpywsjf5iiw77f6n9rw347lk1sly15-luarocks-3.2.1/share/lua/5.1/?/init.lua;/Users/salar/.luarocks/lib/lua/5.1/?.so;/nix/store/95wpywsjf5iiw77f6n9rw347lk1sly15-luarocks-3.2.1/lib/lua/5.1/?.so"
|
||||
'';
|
||||
|
||||
interactiveShellInit = ''
|
||||
eval (direnv hook fish)
|
||||
any-nix-shell fish --info-right | source
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
cat="bat";
|
||||
du="ncdu --color dark -rr -x";
|
||||
fzfp="fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'";
|
||||
ping="prettyping";
|
||||
".." = "cd ..";
|
||||
pj="python -m json.tool";
|
||||
l="exa --long --header --git --all";
|
||||
g="git";
|
||||
gl="git log";
|
||||
gc="git commit -m";
|
||||
gca="git commit -am";
|
||||
gws="git status";
|
||||
ghauth="gh auth login --with-token < ~/.ghauth";
|
||||
giscala="gitignore scala,vim,java,sbt > .gitignore";
|
||||
gforksync="git fetch upstream && git merge upstream/master && git push origin master";
|
||||
grep="grep --color=auto";
|
||||
new-sbt="sbt new scala/scala-seed.g8";
|
||||
nixre="home-manager switch";
|
||||
nixedit="home-manager edit";
|
||||
nixinfo="nix-shell -p nix-info --run \"nix-info -m\"";
|
||||
nixgc="nix-collect-garbage -d";
|
||||
nixq="nix-env -qa";
|
||||
nixupdate="nix-channel --update";
|
||||
nixupgrade="nix upgrade-nix";
|
||||
nixup="nix-env -u";
|
||||
nixversion="nix eval nixpkgs.lib.version";
|
||||
nixdaemon="sudo launchctl load /Library/LaunchDaemons/org.nixos.nix-daemon.plist && launchctl start org.nixos.nix-daemon";
|
||||
rmxcodederived="rm -fr ~/Library/Developer/Xcode/DerivedData";
|
||||
v="nvim";
|
||||
tabninecfg="vc /Users/salar/Library/Preferences/TabNine/TabNine.toml";
|
||||
sshfre1="ssh salar@fre1.softinio.net";
|
||||
sshfre2="ssh salar@fre2.softinio.net";
|
||||
};
|
||||
};
|
||||
|
||||
xdg.configFile."fish/conf.d/plugin-bobthefish.fish".text = lib.mkAfter ''
|
||||
for f in $plugin_dir/*.fish
|
||||
source $f
|
||||
end
|
||||
'';
|
||||
|
||||
# Neovim Configuration
|
||||
xdg.configFile."nvim/lua/salargalaxyline.lua".source = programs/neovim/settings/salargalaxyline.lua;
|
||||
xdg.configFile."nvim/init.lua".source = programs/neovim/init.lua;
|
||||
|
||||
home.packages = [
|
||||
pkgs.adoptopenjdk-bin
|
||||
pkgs.any-nix-shell
|
||||
pkgs.aspell
|
||||
pkgs.bloop
|
||||
pkgs.cmake
|
||||
pkgs.coursier
|
||||
pkgs.curlFull
|
||||
pkgs.direnv
|
||||
pkgs.dust
|
||||
pkgs.exa
|
||||
pkgs.fd
|
||||
pkgs.ffmpeg
|
||||
pkgs.gitAndTools.diff-so-fancy
|
||||
pkgs.global
|
||||
pkgs.gnupg
|
||||
pkgs.go
|
||||
pkgs.hugo
|
||||
pkgs.jansson
|
||||
pkgs.luajit
|
||||
pkgs.luajitPackages.luarocks
|
||||
pkgs.luajitPackages.luasocket
|
||||
pkgs.maven
|
||||
pkgs.multimarkdown
|
||||
pkgs.ncdu
|
||||
pkgs.neofetch
|
||||
pkgs.neovim
|
||||
pkgs.niv
|
||||
pkgs.nixFlakes
|
||||
pkgs.nixfmt
|
||||
pkgs.nodePackages.pyright
|
||||
pkgs.nodePackages.typescript-language-server
|
||||
pkgs.nodePackages.vscode-html-languageserver-bin
|
||||
pkgs.nodePackages.vscode-json-languageserver
|
||||
pkgs.nodePackages.yaml-language-server
|
||||
pkgs.openssl
|
||||
pkgs.pandoc
|
||||
pkgs.prettyping
|
||||
pkgs.procs
|
||||
pkgs.python3Full
|
||||
pkgs.python39Packages.debugpy
|
||||
pkgs.readline
|
||||
pkgs.ripgrep
|
||||
pkgs.ripgrep-all
|
||||
pkgs.rnix-lsp
|
||||
pkgs.rustup
|
||||
pkgs.sbt
|
||||
pkgs.scala-cli
|
||||
pkgs.shellcheck
|
||||
pkgs.stylua
|
||||
pkgs.sumneko-lua-language-server
|
||||
pkgs.tealdeer
|
||||
pkgs.tig
|
||||
pkgs.tokei
|
||||
pkgs.tree
|
||||
pkgs.tree-sitter
|
||||
pkgs.universal-ctags
|
||||
pkgs.wget
|
||||
pkgs.xz
|
||||
pkgs.yq
|
||||
];
|
||||
xdg.configFile."nvim".source = builtins.fetchGit {
|
||||
url = "https://code.softinio.com/softinio/nvim-config";
|
||||
rev = "b205894edc350b5fe1b939939461b4e713478b97";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
self: super: {
|
||||
sumneko-lua-language-server = super.sumneko-lua-language-server.overrideAttrs (
|
||||
o: rec {
|
||||
version = "2.2.3";
|
||||
|
||||
src = builtins.fetchurl {
|
||||
url = "https://github.com/sumneko/vscode-lua/releases/download/v${version}/lua-${version}.vsix";
|
||||
sha256 = "16rpi6p7rslpdfi37ndy5g9qmvh22qljfk9w15kdrr668hfwp7nm";
|
||||
};
|
||||
|
||||
unpackPhase = ''
|
||||
${super.pkgs.unzip}/bin/unzip $src
|
||||
'';
|
||||
|
||||
platform = if super.stdenv.isDarwin then "macOS" else "Linux";
|
||||
|
||||
preBuild = "";
|
||||
postBuild = "";
|
||||
nativeBuildInputs = [
|
||||
super.makeWrapper
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r extension $out/extras
|
||||
chmod a+x $out/extras/server/bin/$platform/lua-language-server
|
||||
makeWrapper $out/extras/server/bin/$platform/lua-language-server \
|
||||
$out/bin/lua-language-server \
|
||||
--add-flags "-E -e LANG=en $out/extras/server/main.lua \
|
||||
--logpath='~/.cache/sumneko_lua/log' \
|
||||
--metapath='~/.cache/sumneko_lua/meta'"
|
||||
'';
|
||||
|
||||
meta.platforms = super.lib.platforms.all;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
438
programs/aider/aider.yml
Normal file
438
programs/aider/aider.yml
Normal file
|
@ -0,0 +1,438 @@
|
|||
##########################################################
|
||||
# Sample .aider.conf.yml
|
||||
# This file lists *all* the valid configuration entries.
|
||||
# Place in your home dir, or at the root of your git repo.
|
||||
##########################################################
|
||||
|
||||
# Note: You can only put OpenAI and Anthropic API keys in the yaml
|
||||
# config file. Keys for all APIs can be stored in a .env file
|
||||
# https://aider.chat/docs/config/dotenv.html
|
||||
|
||||
##########
|
||||
# options:
|
||||
|
||||
## show this help message and exit
|
||||
#help: xxx
|
||||
|
||||
#############
|
||||
# Main model:
|
||||
|
||||
## Specify the model to use for the main chat
|
||||
#model: xxx
|
||||
|
||||
## Use claude-3-opus-20240229 model for the main chat
|
||||
#opus: false
|
||||
|
||||
## Use claude-3-5-sonnet-20241022 model for the main chat
|
||||
#sonnet: false
|
||||
|
||||
## Use claude-3-5-haiku-20241022 model for the main chat
|
||||
#haiku: false
|
||||
|
||||
## Use gpt-4-0613 model for the main chat
|
||||
#4: false
|
||||
|
||||
## Use gpt-4o model for the main chat
|
||||
4o: true
|
||||
|
||||
## Use gpt-4o-mini model for the main chat
|
||||
#mini: false
|
||||
|
||||
## Use gpt-4-1106-preview model for the main chat
|
||||
#4-turbo: false
|
||||
|
||||
## Use gpt-3.5-turbo model for the main chat
|
||||
#35turbo: false
|
||||
|
||||
## Use deepseek/deepseek-chat model for the main chat
|
||||
#deepseek: false
|
||||
|
||||
## Use o1-mini model for the main chat
|
||||
#o1-mini: false
|
||||
|
||||
## Use o1-preview model for the main chat
|
||||
#o1-preview: false
|
||||
|
||||
########################
|
||||
# API Keys and settings:
|
||||
|
||||
## Specify the OpenAI API key
|
||||
#openai-api-key: xxx
|
||||
|
||||
## Specify the Anthropic API key
|
||||
#anthropic-api-key: xxx
|
||||
|
||||
## Specify the api base url
|
||||
#openai-api-base: xxx
|
||||
|
||||
## (deprecated, use --set-env OPENAI_API_TYPE=<value>)
|
||||
#openai-api-type: xxx
|
||||
|
||||
## (deprecated, use --set-env OPENAI_API_VERSION=<value>)
|
||||
#openai-api-version: xxx
|
||||
|
||||
## (deprecated, use --set-env OPENAI_API_DEPLOYMENT_ID=<value>)
|
||||
#openai-api-deployment-id: xxx
|
||||
|
||||
## (deprecated, use --set-env OPENAI_ORGANIZATION=<value>)
|
||||
#openai-organization-id: xxx
|
||||
|
||||
## Set an environment variable (to control API settings, can be used multiple times)
|
||||
#set-env: xxx
|
||||
## Specify multiple values like this:
|
||||
#set-env:
|
||||
# - xxx
|
||||
# - yyy
|
||||
# - zzz
|
||||
|
||||
## Set an API key for a provider (eg: --api-key provider=<key> sets PROVIDER_API_KEY=<key>)
|
||||
#api-key: xxx
|
||||
## Specify multiple values like this:
|
||||
#api-key:
|
||||
# - xxx
|
||||
# - yyy
|
||||
# - zzz
|
||||
|
||||
#################
|
||||
# Model settings:
|
||||
|
||||
## List known models which match the (partial) MODEL name
|
||||
#list-models: xxx
|
||||
|
||||
## Specify a file with aider model settings for unknown models
|
||||
#model-settings-file: .aider.model.settings.yml
|
||||
|
||||
## Specify a file with context window and costs for unknown models
|
||||
#model-metadata-file: .aider.model.metadata.json
|
||||
|
||||
## Add a model alias (can be used multiple times)
|
||||
#alias: xxx
|
||||
## Specify multiple values like this:
|
||||
#alias:
|
||||
# - xxx
|
||||
# - yyy
|
||||
# - zzz
|
||||
|
||||
## Set the reasoning_effort API parameter (default: not set)
|
||||
#reasoning-effort: xxx
|
||||
|
||||
## Verify the SSL cert when connecting to models (default: True)
|
||||
#verify-ssl: true
|
||||
|
||||
## Timeout in seconds for API calls (default: None)
|
||||
#timeout: xxx
|
||||
|
||||
## Specify what edit format the LLM should use (default depends on model)
|
||||
#edit-format: xxx
|
||||
|
||||
## Use architect edit format for the main chat
|
||||
#architect: false
|
||||
|
||||
## Specify the model to use for commit messages and chat history summarization (default depends on --model)
|
||||
#weak-model: xxx
|
||||
|
||||
## Specify the model to use for editor tasks (default depends on --model)
|
||||
#editor-model: xxx
|
||||
|
||||
## Specify the edit format for the editor model (default: depends on editor model)
|
||||
#editor-edit-format: xxx
|
||||
|
||||
## Only work with models that have meta-data available (default: True)
|
||||
#show-model-warnings: true
|
||||
|
||||
## Soft limit on tokens for chat history, after which summarization begins. If unspecified, defaults to the model's max_chat_history_tokens.
|
||||
#max-chat-history-tokens: xxx
|
||||
|
||||
#################
|
||||
# Cache settings:
|
||||
|
||||
## Enable caching of prompts (default: False)
|
||||
#cache-prompts: false
|
||||
|
||||
## Number of times to ping at 5min intervals to keep prompt cache warm (default: 0)
|
||||
#cache-keepalive-pings: false
|
||||
|
||||
###################
|
||||
# Repomap settings:
|
||||
|
||||
## Suggested number of tokens to use for repo map, use 0 to disable
|
||||
#map-tokens: xxx
|
||||
|
||||
## Control how often the repo map is refreshed. Options: auto, always, files, manual (default: auto)
|
||||
#map-refresh: auto
|
||||
|
||||
## Multiplier for map tokens when no files are specified (default: 2)
|
||||
#map-multiplier-no-files: true
|
||||
|
||||
################
|
||||
# History Files:
|
||||
|
||||
## Specify the chat input history file (default: .aider.input.history)
|
||||
#input-history-file: .aider.input.history
|
||||
|
||||
## Specify the chat history file (default: .aider.chat.history.md)
|
||||
#chat-history-file: .aider.chat.history.md
|
||||
|
||||
## Restore the previous chat history messages (default: False)
|
||||
#restore-chat-history: false
|
||||
|
||||
## Log the conversation with the LLM to this file (for example, .aider.llm.history)
|
||||
#llm-history-file: xxx
|
||||
|
||||
##################
|
||||
# Output settings:
|
||||
|
||||
## Use colors suitable for a dark terminal background (default: False)
|
||||
dark-mode: true
|
||||
|
||||
## Use colors suitable for a light terminal background (default: False)
|
||||
#light-mode: false
|
||||
|
||||
## Enable/disable pretty, colorized output (default: True)
|
||||
#pretty: true
|
||||
|
||||
## Enable/disable streaming responses (default: True)
|
||||
#stream: true
|
||||
|
||||
## Set the color for user input (default: #00cc00)
|
||||
#user-input-color: #00cc00
|
||||
|
||||
## Set the color for tool output (default: None)
|
||||
#tool-output-color: xxx
|
||||
|
||||
## Set the color for tool error messages (default: #FF2222)
|
||||
#tool-error-color: #FF2222
|
||||
|
||||
## Set the color for tool warning messages (default: #FFA500)
|
||||
#tool-warning-color: #FFA500
|
||||
|
||||
## Set the color for assistant output (default: #0088ff)
|
||||
#assistant-output-color: #0088ff
|
||||
|
||||
## Set the color for the completion menu (default: terminal's default text color)
|
||||
#completion-menu-color: xxx
|
||||
|
||||
## Set the background color for the completion menu (default: terminal's default background color)
|
||||
#completion-menu-bg-color: xxx
|
||||
|
||||
## Set the color for the current item in the completion menu (default: terminal's default background color)
|
||||
#completion-menu-current-color: xxx
|
||||
|
||||
## Set the background color for the current item in the completion menu (default: terminal's default text color)
|
||||
#completion-menu-current-bg-color: xxx
|
||||
|
||||
## Set the markdown code theme (default: default, other options include monokai, solarized-dark, solarized-light, or a Pygments builtin style, see https://pygments.org/styles for available themes)
|
||||
#code-theme: default
|
||||
|
||||
## Show diffs when committing changes (default: False)
|
||||
show-diffs: true
|
||||
|
||||
###############
|
||||
# Git settings:
|
||||
|
||||
## Enable/disable looking for a git repo (default: True)
|
||||
#git: true
|
||||
|
||||
## Enable/disable adding .aider* to .gitignore (default: True)
|
||||
#gitignore: true
|
||||
|
||||
## Specify the aider ignore file (default: .aiderignore in git root)
|
||||
#aiderignore: .aiderignore
|
||||
|
||||
## Only consider files in the current subtree of the git repository
|
||||
#subtree-only: false
|
||||
|
||||
## Enable/disable auto commit of LLM changes (default: True)
|
||||
auto-commits: false
|
||||
|
||||
## Enable/disable commits when repo is found dirty (default: True)
|
||||
#dirty-commits: true
|
||||
|
||||
## Attribute aider code changes in the git author name (default: True)
|
||||
attribute-author: false
|
||||
|
||||
## Attribute aider commits in the git committer name (default: True)
|
||||
attribute-committer: false
|
||||
|
||||
## Prefix commit messages with 'aider: ' if aider authored the changes (default: False)
|
||||
#attribute-commit-message-author: false
|
||||
|
||||
## Prefix all commit messages with 'aider: ' (default: False)
|
||||
#attribute-commit-message-committer: false
|
||||
|
||||
## Commit all pending changes with a suitable commit message, then exit
|
||||
#commit: false
|
||||
|
||||
## Specify a custom prompt for generating commit messages
|
||||
#commit-prompt: xxx
|
||||
|
||||
## Perform a dry run without modifying files (default: False)
|
||||
#dry-run: false
|
||||
|
||||
## Skip the sanity check for the git repository (default: False)
|
||||
#skip-sanity-check-repo: false
|
||||
|
||||
## Enable/disable watching files for ai coding comments (default: False)
|
||||
#watch-files: false
|
||||
|
||||
########################
|
||||
# Fixing and committing:
|
||||
|
||||
## Lint and fix provided files, or dirty files if none provided
|
||||
#lint: false
|
||||
|
||||
## Specify lint commands to run for different languages, eg: "python: flake8 --select=..." (can be used multiple times)
|
||||
#lint-cmd: xxx
|
||||
## Specify multiple values like this:
|
||||
#lint-cmd:
|
||||
# - xxx
|
||||
# - yyy
|
||||
# - zzz
|
||||
|
||||
## Enable/disable automatic linting after changes (default: True)
|
||||
#auto-lint: true
|
||||
|
||||
## Specify command to run tests
|
||||
#test-cmd: xxx
|
||||
|
||||
## Enable/disable automatic testing after changes (default: False)
|
||||
#auto-test: false
|
||||
|
||||
## Run tests, fix problems found and then exit
|
||||
#test: false
|
||||
|
||||
############
|
||||
# Analytics:
|
||||
|
||||
## Enable/disable analytics for current session (default: random)
|
||||
#analytics: xxx
|
||||
|
||||
## Specify a file to log analytics events
|
||||
#analytics-log: xxx
|
||||
|
||||
## Permanently disable analytics
|
||||
analytics-disable: true
|
||||
|
||||
############
|
||||
# Upgrading:
|
||||
|
||||
## Check for updates and return status in the exit code
|
||||
#just-check-update: false
|
||||
|
||||
## Check for new aider versions on launch
|
||||
check-update: false
|
||||
|
||||
## Show release notes on first run of new version (default: None, ask user)
|
||||
#show-release-notes: xxx
|
||||
|
||||
## Install the latest version from the main branch
|
||||
#install-main-branch: false
|
||||
|
||||
## Upgrade aider to the latest version from PyPI
|
||||
#upgrade: false
|
||||
|
||||
## Show the version number and exit
|
||||
#version: xxx
|
||||
|
||||
########
|
||||
# Modes:
|
||||
|
||||
## Specify a single message to send the LLM, process reply then exit (disables chat mode)
|
||||
#message: xxx
|
||||
|
||||
## Specify a file containing the message to send the LLM, process reply, then exit (disables chat mode)
|
||||
#message-file: xxx
|
||||
|
||||
## Run aider in your browser (default: False)
|
||||
#gui: false
|
||||
|
||||
## Enable automatic copy/paste of chat between aider and web UI (default: False)
|
||||
#copy-paste: false
|
||||
|
||||
## Apply the changes from the given file instead of running the chat (debug)
|
||||
#apply: xxx
|
||||
|
||||
## Apply clipboard contents as edits using the main model's editor format
|
||||
#apply-clipboard-edits: false
|
||||
|
||||
## Do all startup activities then exit before accepting user input (debug)
|
||||
#exit: false
|
||||
|
||||
## Print the repo map and exit (debug)
|
||||
#show-repo-map: false
|
||||
|
||||
## Print the system prompts and exit (debug)
|
||||
#show-prompts: false
|
||||
|
||||
#################
|
||||
# Voice settings:
|
||||
|
||||
## Audio format for voice recording (default: wav). webm and mp3 require ffmpeg
|
||||
voice-format: mp3
|
||||
|
||||
## Specify the language for voice using ISO 639-1 code (default: auto)
|
||||
#voice-language: en
|
||||
|
||||
## Specify the input device name for voice recording
|
||||
#voice-input-device: xxx
|
||||
|
||||
#################
|
||||
# Other settings:
|
||||
|
||||
## specify a file to edit (can be used multiple times)
|
||||
#file: xxx
|
||||
## Specify multiple values like this:
|
||||
#file:
|
||||
# - xxx
|
||||
# - yyy
|
||||
# - zzz
|
||||
|
||||
## specify a read-only file (can be used multiple times)
|
||||
#read: xxx
|
||||
## Specify multiple values like this:
|
||||
#read:
|
||||
# - xxx
|
||||
# - yyy
|
||||
# - zzz
|
||||
|
||||
## Use VI editing mode in the terminal (default: False)
|
||||
vim: true
|
||||
|
||||
## Specify the language to use in the chat (default: None, uses system settings)
|
||||
#chat-language: xxx
|
||||
|
||||
## Always say yes to every confirmation
|
||||
#yes-always: false
|
||||
|
||||
## Enable verbose output
|
||||
#verbose: false
|
||||
|
||||
## Load and execute /commands from a file on launch
|
||||
#load: xxx
|
||||
|
||||
## Specify the encoding for input and output (default: utf-8)
|
||||
#encoding: utf-8
|
||||
|
||||
## Line endings to use when writing files (default: platform)
|
||||
#line-endings: platform
|
||||
|
||||
## Specify the config file (default: search for .aider.conf.yml in git root, cwd or home directory)
|
||||
#config: xxx
|
||||
|
||||
## Specify the .env file to load (default: .env in git root)
|
||||
#env-file: .env
|
||||
|
||||
## Enable/disable suggesting shell commands (default: True)
|
||||
#suggest-shell-commands: true
|
||||
|
||||
## Enable/disable fancy input with history and completion (default: True)
|
||||
#fancy-input: true
|
||||
|
||||
## Enable/disable multi-line input mode with Meta-Enter to submit (default: False)
|
||||
multiline: true
|
||||
|
||||
## Enable/disable detection and offering to add URLs to chat (default: True)
|
||||
#detect-urls: true
|
||||
|
||||
## Specify which editor to use for the /editor command
|
||||
editor: nvim
|
17
programs/aider/default.nix
Normal file
17
programs/aider/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
aiderConfig = builtins.readFile ./aider.yml;
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
aider-chat
|
||||
streamlit
|
||||
python3Packages.greenlet
|
||||
python3Packages.llama-index-core
|
||||
python3Packages.llama-index-embeddings-huggingface
|
||||
python3Packages.playwright
|
||||
python3Packages.watchdog
|
||||
];
|
||||
home.file.".aider.conf.yml".text = aiderConfig;
|
||||
}
|
25
programs/broot/default.nix
Normal file
25
programs/broot/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ ... }:
|
||||
let
|
||||
myverbs = [
|
||||
{
|
||||
invocation = "panel_right";
|
||||
key = "alt-right";
|
||||
internal = ":panel_right";
|
||||
}
|
||||
{
|
||||
invocation = "panel_left_no_open";
|
||||
key = "alt-left";
|
||||
internal = ":panel_left_no_open";
|
||||
}
|
||||
];
|
||||
in
|
||||
{
|
||||
programs.broot = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
settings = {
|
||||
modal = true;
|
||||
verbs = myverbs;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,4 +1,11 @@
|
|||
[
|
||||
./aider
|
||||
./broot
|
||||
./fish
|
||||
./git
|
||||
./jujutsu
|
||||
./tmux
|
||||
./wezterm
|
||||
./vscode
|
||||
./zed
|
||||
]
|
||||
|
|
92
programs/fish/default.nix
Normal file
92
programs/fish/default.nix
Normal file
|
@ -0,0 +1,92 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
fish
|
||||
fishPlugins.foreign-env
|
||||
fishPlugins.bobthefish
|
||||
];
|
||||
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
functions = {
|
||||
gitignore = "curl -sL https://www.gitignore.io/api/$argv";
|
||||
};
|
||||
|
||||
plugins = [
|
||||
{
|
||||
name = "fish-ssh-agent";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "danhper";
|
||||
repo = "fish-ssh-agent";
|
||||
rev = "f10d95775352931796fd17f54e6bf2f910163d1b";
|
||||
sha256 = "sha256-cFroQ7PSBZ5BhXzZEKTKHnEAuEu8W9rFrGZAb8vTgIE=";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
loginShellInit = ''
|
||||
set -xg TERM xterm-256color
|
||||
if test -e /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||
fenv source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||
end
|
||||
|
||||
if test -e /nix/var/nix/profiles/default/etc/profile.d/nix.sh
|
||||
fenv source /nix/var/nix/profiles/default/etc/profile.d/nix.sh
|
||||
end
|
||||
|
||||
if test -e $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
fenv source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
end
|
||||
|
||||
set -xg PATH /Applications/Ghostty.app/Contents/MacOS $HOME/bin $HOME/.cargo/bin /Users/salar/.luarocks/bin:/Users/salar/bin:/Users/salar/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin $PATH
|
||||
|
||||
set -xg WORKSPACE /Users/salar/Projects
|
||||
|
||||
set -xg FZF_DEFAULT_OPTS "--preview='bat {} --color=always'" \n
|
||||
|
||||
set -xg TOOLCHAINS swift
|
||||
|
||||
set -xg OPENAI_API_KEY (cat ~/.openai)
|
||||
'';
|
||||
|
||||
interactiveShellInit = ''
|
||||
jj util completion fish | source
|
||||
eval (direnv hook fish)
|
||||
any-nix-shell fish --info-right | source
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
addsshmac = "ssh-add ~/.ssh/id_ed25519 --apple-use-keychain --apple-load-keychain";
|
||||
bf = "broot";
|
||||
cat = "bat";
|
||||
du = "dua i";
|
||||
fzfp = "fzf --preview 'bat --style=numbers --color=always --line-range :500 {}'";
|
||||
ping = "prettyping";
|
||||
".." = "cd ..";
|
||||
pj = "python -m json.tool";
|
||||
l = "ll";
|
||||
g = "git";
|
||||
ghauth = "gh auth login --with-token < ~/.ghauth";
|
||||
gitpurgemain = ''git branch --merged | grep -v "\*" | grep -v "main" | xargs -n 1 git branch -d'';
|
||||
gitpurgemaster = ''git branch --merged | grep -v "\*" | grep -v "master" | xargs -n 1 git branch -d'';
|
||||
giscala = "gitignore scala,vim,java,sbt > .gitignore";
|
||||
gforksync = "git fetch upstream && git merge upstream/master && git push origin master";
|
||||
grep = "grep --color=auto";
|
||||
lg = "lazygit";
|
||||
new-sbt = "sbt new scala/scala-seed.g8";
|
||||
nixc = "cd ~/.config/nixpkgs";
|
||||
nixre = "nix build && sudo ./result/activate";
|
||||
nixinfo = "nix-shell -p nix-info --run \"nix-info -m\"";
|
||||
nixgc = "nix-collect-garbage -d";
|
||||
nixq = "nix-env -qa";
|
||||
nixstorerepair = "nix-store --repair --verify --check-contents";
|
||||
nixupgrade = "nix upgrade-nix";
|
||||
rmxcodederived = "rm -fr ~/Library/Developer/Xcode/DerivedData";
|
||||
v = "nvim";
|
||||
sshhcloud1 = "ssh salar@hcloud1.softinio.net";
|
||||
sshhcloud1r = "ssh root@hcloud1.softinio.net";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,53 +1,82 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ ... }:
|
||||
|
||||
let
|
||||
gitConfig = {
|
||||
core = {
|
||||
editor = "nvim";
|
||||
pager = "diff-so-fancy | less --tabs=4 -RFX";
|
||||
};
|
||||
diff = {
|
||||
colorMoved = "default";
|
||||
external = "difft";
|
||||
tool = "difftastic";
|
||||
};
|
||||
difftool.difftastic = {
|
||||
cmd = "difft \"$MERGED\" \"$LOCAL\" \"abcdef1\" \"100644\" \"$REMOTE\" \"abcdef2\" \"100644\"";
|
||||
prompt = false;
|
||||
};
|
||||
difftool.nvim = {
|
||||
cmd = "nvim -d \"$LOCAL\" \"$REMOTE\"";
|
||||
prompt = false;
|
||||
};
|
||||
fetch.prune = true;
|
||||
init.defaultBranch = "main";
|
||||
merge.tool = "intellij";
|
||||
mergetool = {
|
||||
cmd = "idea merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"";
|
||||
trustExitCode = true;
|
||||
prompt = false;
|
||||
intellij = {
|
||||
cmd = "'/Applications/IntelliJ IDEA.app/Contents/macOS/idea' merge \“$LOCAL\” \“$REMOTE\” \“$BASE\” \“$MERGED\”";
|
||||
trustExitCode = true;
|
||||
};
|
||||
keepBackup = false;
|
||||
};
|
||||
diff.tool = "intellij";
|
||||
difftool = {
|
||||
cmd = "idea diff \"$LOCAL\" \"$REMOTE\"";
|
||||
prompt = false;
|
||||
pager = {
|
||||
difftool = true;
|
||||
};
|
||||
pull = {
|
||||
rebase = true;
|
||||
};
|
||||
url = {
|
||||
"git@github.com:" = {
|
||||
insteadOf = "https://github.com/";
|
||||
};
|
||||
};
|
||||
pull = {
|
||||
rebase = true;
|
||||
};
|
||||
};
|
||||
myAliases = {
|
||||
ci = "commit";
|
||||
cim = "commit -m";
|
||||
cia = "commit -am";
|
||||
co = "checkout";
|
||||
cob = "checkout -b";
|
||||
di = "diff";
|
||||
gpo = "push origin";
|
||||
main = "checkout main";
|
||||
master = "checkout master";
|
||||
st = "status";
|
||||
};
|
||||
myIgnores = [
|
||||
".DS_Store"
|
||||
".aider*"
|
||||
"*.bloop"
|
||||
".direnv/"
|
||||
".idea/"
|
||||
".mypy_cache"
|
||||
"*.metals"
|
||||
"*.metals.sbt"
|
||||
"*metals.sbt"
|
||||
"*.envrc" # there is lorri, nix-direnv & simple direnv; let people decide
|
||||
"*hie.yaml" # ghcide files
|
||||
"*.mill-version" # used by metals
|
||||
"*.vscode"
|
||||
"*.python-version"
|
||||
"result"
|
||||
];
|
||||
in
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userEmail = "code@softinio.com";
|
||||
userName = "Salar Rahmanian";
|
||||
ignores = [
|
||||
"*~"
|
||||
".DS_Store"
|
||||
"*.bloop"
|
||||
"*.metals"
|
||||
"*.metals.sbt"
|
||||
"*metals.sbt"
|
||||
"*.direnv"
|
||||
"*.envrc" # there is lorri, nix-direnv & simple direnv; let people decide
|
||||
"*hie.yaml" # ghcide files
|
||||
"*.mill-version" # used by metals
|
||||
"*.idea"
|
||||
"*.vscode"
|
||||
"*.python-version"
|
||||
];
|
||||
aliases = myAliases;
|
||||
ignores = myIgnores;
|
||||
extraConfig = gitConfig;
|
||||
};
|
||||
}
|
||||
|
|
44
programs/jujutsu/default.nix
Normal file
44
programs/jujutsu/default.nix
Normal file
|
@ -0,0 +1,44 @@
|
|||
{ ... }:
|
||||
let
|
||||
MyAliases = {
|
||||
l = [
|
||||
"log"
|
||||
"-r"
|
||||
"(main..@):: | (main..@)-"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.jujutsu = {
|
||||
enable = true;
|
||||
settings = {
|
||||
aliases = MyAliases;
|
||||
signing = {
|
||||
key = "~/.ssh/id_ed25519.pub";
|
||||
};
|
||||
ui = {
|
||||
diff.format = "git";
|
||||
diff.tool = [
|
||||
"difft"
|
||||
"--color=always"
|
||||
"$left"
|
||||
"$right"
|
||||
];
|
||||
editor = "nvim";
|
||||
merge-editor = [
|
||||
"meld"
|
||||
"$left"
|
||||
"$base"
|
||||
"$right"
|
||||
"-o"
|
||||
"$output"
|
||||
];
|
||||
pager = "less -FRX";
|
||||
};
|
||||
user = {
|
||||
name = "Salar Rahmanian";
|
||||
email = "code@softinio.com";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,559 +0,0 @@
|
|||
local fn = vim.fn
|
||||
|
||||
local install_path = fn.stdpath 'data' .. '/site/pack/packer/start/packer.nvim'
|
||||
|
||||
local function load_plugins()
|
||||
local use = require('packer').use
|
||||
require('packer').startup(function()
|
||||
use 'wbthomason/packer.nvim' -- Package manager
|
||||
use 'neovim/nvim-lspconfig' -- Collection of configurations for built-in LSP client
|
||||
use 'nvim-treesitter/nvim-treesitter'
|
||||
use 'nvim-treesitter/nvim-treesitter-textobjects'
|
||||
use 'nvim-treesitter/playground'
|
||||
use 'folke/which-key.nvim'
|
||||
use 'folke/lua-dev.nvim'
|
||||
use 'folke/tokyonight.nvim' -- Theme
|
||||
use { 'folke/trouble.nvim', requires = 'kyazdani42/nvim-web-devicons' }
|
||||
use { 'nvim-telescope/telescope.nvim', requires = { { 'nvim-lua/popup.nvim' }, { 'nvim-lua/plenary.nvim' } } }
|
||||
use 'nvim-telescope/telescope-dap.nvim'
|
||||
use {'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }
|
||||
use { 'softinio/scaladex.nvim' }
|
||||
use 'windwp/nvim-autopairs' -- Autopairs
|
||||
use 'kyazdani42/nvim-tree.lua' -- File explorer
|
||||
use {
|
||||
'glepnir/galaxyline.nvim',
|
||||
config = function()
|
||||
require 'salargalaxyline'
|
||||
end,
|
||||
requires = 'kyazdani42/nvim-web-devicons',
|
||||
}
|
||||
use 'lukas-reineke/indent-blankline.nvim'
|
||||
use { 'lewis6991/gitsigns.nvim', requires = 'nvim-lua/plenary.nvim' }
|
||||
use { 'TimUntersberger/neogit', requires = { { 'nvim-lua/plenary.nvim' }, { 'sindrets/diffview.nvim' } } }
|
||||
use { 'hrsh7th/nvim-compe', requires = 'L3MON4D3/LuaSnip' } -- Autocompletion plugin
|
||||
use {'tzachar/compe-tabnine', run='./install.sh', requires = 'hrsh7th/nvim-compe'}
|
||||
use 'kevinhwang91/nvim-bqf'
|
||||
use 'mfussenegger/nvim-dap'
|
||||
use 'mfussenegger/nvim-dap-python'
|
||||
use 'jbyuki/one-small-step-for-vimkind'
|
||||
use {'theHamsta/nvim-dap-virtual-text'}
|
||||
use 'sheerun/vim-polyglot'
|
||||
use 'scalameta/nvim-metals'
|
||||
use 'ray-x/lsp_signature.nvim'
|
||||
use 'b3nj5m1n/kommentary'
|
||||
use 'ckipp01/stylua-nvim'
|
||||
use 'gennaro-tedesco/nvim-jqx'
|
||||
use 'p00f/nvim-ts-rainbow'
|
||||
use 'christoomey/vim-tmux-navigator'
|
||||
end)
|
||||
end
|
||||
|
||||
_G.load_config = function()
|
||||
require('gitsigns').setup()
|
||||
require('kommentary.config').use_extended_mappings()
|
||||
require 'salargalaxyline'
|
||||
require('trouble').setup()
|
||||
require('which-key').setup()
|
||||
require('indent_blankline').setup({
|
||||
indent_blankline_use_treesitter = true
|
||||
})
|
||||
|
||||
-- nvim-autopairs
|
||||
require('nvim-autopairs').setup()
|
||||
require('nvim-autopairs.completion.compe').setup({
|
||||
map_cr = true,
|
||||
map_complete = true
|
||||
})
|
||||
|
||||
-- nvim-dap
|
||||
local dap = require('dap')
|
||||
dap.configurations.lua = {
|
||||
{
|
||||
type = 'nlua',
|
||||
request = 'attach',
|
||||
name = "Attach to running Neovim instance",
|
||||
host = function()
|
||||
local value = vim.fn.input('Host [127.0.0.1]: ')
|
||||
if value ~= "" then
|
||||
return value
|
||||
end
|
||||
return '127.0.0.1'
|
||||
end,
|
||||
port = function()
|
||||
local val = tonumber(vim.fn.input('Port: '))
|
||||
assert(val, "Please provide a port number")
|
||||
return val
|
||||
end,
|
||||
}
|
||||
}
|
||||
|
||||
dap.adapters.nlua = function(callback, config)
|
||||
callback({ type = 'server', host = config.host, port = config.port or 8088 })
|
||||
end
|
||||
|
||||
dap.configurations.scala = {
|
||||
{
|
||||
type = "scala",
|
||||
request = "launch",
|
||||
name = "Run",
|
||||
metals = {
|
||||
runType = "run",
|
||||
args = { "firstArg", "secondArg", "thirdArg" },
|
||||
},
|
||||
},
|
||||
{
|
||||
type = "scala",
|
||||
request = "launch",
|
||||
name = "Test File",
|
||||
metals = {
|
||||
runType = "testFile",
|
||||
},
|
||||
},
|
||||
{
|
||||
type = "scala",
|
||||
request = "launch",
|
||||
name = "Test Target",
|
||||
metals = {
|
||||
runType = "testTarget",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
vim.fn.sign_define('DapBreakpoint', {text='🛑', texthl='', linehl='', numhl=''})
|
||||
vim.fn.sign_define('DapStopped', {text='⭐️', texthl='', linehl='', numhl=''})
|
||||
|
||||
require('dap-python').test_runner = 'pytest'
|
||||
|
||||
-- nvim-tree
|
||||
require('nvim-tree').setup()
|
||||
|
||||
-- Treesitter
|
||||
require('nvim-treesitter.configs').setup {
|
||||
query_linter = {
|
||||
enable = true,
|
||||
use_virtual_text = true,
|
||||
lint_events = { 'BufWrite', 'CursorHold' },
|
||||
},
|
||||
ensure_installed = 'maintained',
|
||||
highlight = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = 'gnn',
|
||||
node_incremental = 'grn',
|
||||
scope_incremental = 'grc',
|
||||
node_decremental = 'grm',
|
||||
},
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
['af'] = '@function.outer',
|
||||
['if'] = '@function.inner',
|
||||
['ac'] = '@class.outer',
|
||||
['ic'] = '@class.inner',
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
[']m'] = '@function.outer',
|
||||
[']]'] = '@class.outer',
|
||||
},
|
||||
goto_next_end = {
|
||||
[']M'] = '@function.outer',
|
||||
[']['] = '@class.outer',
|
||||
},
|
||||
goto_previous_start = {
|
||||
['[m'] = '@function.outer',
|
||||
['[['] = '@class.outer',
|
||||
},
|
||||
goto_previous_end = {
|
||||
['[M'] = '@function.outer',
|
||||
['[]'] = '@class.outer',
|
||||
},
|
||||
},
|
||||
},
|
||||
playground = {
|
||||
enable = true,
|
||||
disable = {},
|
||||
updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
|
||||
persist_queries = false, -- Whether the query persists across vim sessions
|
||||
keybindings = {
|
||||
toggle_query_editor = 'o',
|
||||
toggle_hl_groups = 'i',
|
||||
toggle_injected_languages = 't',
|
||||
toggle_anonymous_nodes = 'a',
|
||||
toggle_language_display = 'I',
|
||||
focus_language = 'f',
|
||||
unfocus_language = 'F',
|
||||
update = 'R',
|
||||
goto_node = '<cr>',
|
||||
show_help = '?',
|
||||
},
|
||||
},
|
||||
rainbow = {
|
||||
enable = true,
|
||||
extended_mode = true,
|
||||
max_file_lines = 1000,
|
||||
},
|
||||
}
|
||||
|
||||
-- neogit
|
||||
require('neogit').setup {
|
||||
integrations = {
|
||||
diffview = true,
|
||||
},
|
||||
}
|
||||
|
||||
--Incremental live completion
|
||||
vim.o.inccommand = 'nosplit'
|
||||
|
||||
--Set highlight on search
|
||||
vim.o.hlsearch = false
|
||||
vim.o.incsearch = true
|
||||
|
||||
--Make line numbers default
|
||||
vim.wo.number = true
|
||||
|
||||
--Do not save when switching buffers
|
||||
vim.o.hidden = true
|
||||
|
||||
--Enable mouse mode
|
||||
vim.o.mouse = 'a'
|
||||
|
||||
-- clipboard
|
||||
vim.o.clipboard = 'unnamedplus'
|
||||
|
||||
--Enable break indent
|
||||
vim.o.breakindent = true
|
||||
|
||||
--Save undo history
|
||||
vim.cmd [[set undofile]]
|
||||
|
||||
--Case insensitive searching UNLESS /C or capital in search
|
||||
vim.o.ignorecase = true
|
||||
vim.o.smartcase = true
|
||||
|
||||
--Decrease update time
|
||||
vim.o.updatetime = 250
|
||||
vim.wo.signcolumn = 'yes'
|
||||
|
||||
--Set colorscheme (order is important here)
|
||||
vim.g.tokyonight_style = 'night'
|
||||
vim.g.tokyonight_italic_functions = true
|
||||
vim.o.termguicolors = true
|
||||
vim.cmd [[colorscheme tokyonight]]
|
||||
|
||||
--Remap space as leader key
|
||||
vim.api.nvim_set_keymap('', '<Space>', '<Nop>', { noremap = true, silent = true })
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
|
||||
--Remap for dealing with word wrap
|
||||
vim.api.nvim_set_keymap('n', 'k', "v:count == 0 ? 'gk' : 'k'", { noremap = true, expr = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', 'j', "v:count == 0 ? 'gj' : 'j'", { noremap = true, expr = true, silent = true })
|
||||
|
||||
--Remap escape to leave terminal mode
|
||||
vim.api.nvim_set_keymap('t', '<Esc>', [[<c-\><c-n>]], { noremap = true })
|
||||
|
||||
--Add map to enter paste mode
|
||||
vim.o.pastetoggle = '<F3>'
|
||||
|
||||
--Map blankline
|
||||
vim.g.indent_blankline_char = '┊'
|
||||
vim.g.indent_blankline_filetype_exclude = { 'help', 'packer' }
|
||||
vim.g.indent_blankline_buftype_exclude = { 'terminal', 'nofile' }
|
||||
vim.g.indent_blankline_char_highlight = 'LineNr'
|
||||
|
||||
-- Toggle to disable mouse mode and indentlines for easier paste
|
||||
ToggleMouse = function()
|
||||
if vim.o.mouse == 'a' then
|
||||
vim.cmd [[IndentBlanklineDisable]]
|
||||
vim.wo.signcolumn = 'no'
|
||||
vim.o.mouse = 'v'
|
||||
vim.wo.number = false
|
||||
print 'Mouse disabled'
|
||||
else
|
||||
vim.cmd [[IndentBlanklineEnable]]
|
||||
vim.wo.signcolumn = 'yes'
|
||||
vim.o.mouse = 'a'
|
||||
vim.wo.number = true
|
||||
print 'Mouse enabled'
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<F10>', '<cmd>lua ToggleMouse()<cr>', { noremap = true })
|
||||
|
||||
-- Telescope
|
||||
require('telescope').setup {
|
||||
defaults = {
|
||||
mappings = {
|
||||
i = {
|
||||
['<C-u>'] = false,
|
||||
['<C-d>'] = false,
|
||||
},
|
||||
},
|
||||
file_ignore_patterns = { "node_modules", "target"},
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true,
|
||||
override_generic_sorter = true,
|
||||
override_file_sorter = true,
|
||||
case_mode = "smart_case"
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
require('telescope').load_extension('dap')
|
||||
require('telescope').load_extension('fzf')
|
||||
require('telescope').load_extension('scaladex')
|
||||
|
||||
--Add leader shortcuts
|
||||
vim.api.nvim_set_keymap('n', '<leader>f', [[<cmd>lua require('telescope.builtin').find_files()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader><space>', [[<cmd>lua require('telescope.builtin').buffers()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>l', [[<cmd>lua require('telescope.builtin').current_buffer_fuzzy_find()<cr>]], { noremap = true, silent = true })
|
||||
-- vim.api.nvim_set_keymap('n', '<leader>t', [[<cmd>lua require('telescope.builtin').tags()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>?', [[<cmd>lua require('telescope.builtin').oldfiles()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>sd', [[<cmd>lua require('telescope.builtin').grep_string()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>sp', [[<cmd>lua require('telescope.builtin').live_grep()<cr>]], { noremap = true, silent = true })
|
||||
-- vim.api.nvim_set_keymap('n', '<leader>o', [[<cmd>lua require('telescope.builtin').tags{ only_current_buffer = true }<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>gco', [[<cmd>lua require('telescope.builtin').git_commits()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>gb', [[<cmd>lua require('telescope.builtin').git_branches()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>gs', [[<cmd>lua require('telescope.builtin').git_status()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>gp', [[<cmd>lua require('telescope.builtin').git_bcommits()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>m', [[<cmd>lua require('nvim-tree').toggle()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>ng', [[<cmd>lua require('neogit').open({ kind = "split" })<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>nm', [[<cmd>lua require("telescope").extensions.metals.commands()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>tt', [[<cmd>lua require("metals.tvp").toggle_tree_view()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>tr', [[<cmd>lua require("metals.tvp").reveal_in_tree()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>ws', [[<cmd>lua require"metals".worksheet_hover()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>a', [[<cmd>lua RELOAD("metals").open_all_diagnostics()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>nu', ':PackerUpdate<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>si', [[<cmd>lua require('telescope').extensions.scaladex.scaladex.search()<cr>]], { noremap = true, silent = true })
|
||||
|
||||
-- Change preview window location
|
||||
vim.g.splitbelow = true
|
||||
|
||||
-- Highlight on yank
|
||||
vim.api.nvim_exec(
|
||||
[[
|
||||
augroup YankHighlight
|
||||
autocmd!
|
||||
autocmd TextYankPost * silent! lua vim.highlight.on_yank()
|
||||
augroup end
|
||||
]],
|
||||
false
|
||||
)
|
||||
|
||||
-- Y yank until the end of line
|
||||
vim.api.nvim_set_keymap('n', 'Y', 'y$', { noremap = true })
|
||||
--
|
||||
-- LSP settings
|
||||
local nvim_lsp = require 'lspconfig'
|
||||
local on_attach = function(_client, bufnr)
|
||||
require('lsp_signature').on_attach()
|
||||
|
||||
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||
|
||||
local opts = { noremap = true, silent = true }
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gm', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'dr', [[<cmd>lua require('dap').repl.toggle()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'ds', [[<cmd>lua require('dap').ui.variables.scopes()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'dk', [[<cmd>lua require('dap').ui.widgets.hover()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'dl', [[<cmd>lua require('dap').run_last()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'dz', [[<cmd>lua require('dap').toggle_breakpoint()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'dc', [[<cmd>lua require('dap').continue()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<F7>', [[<cmd>lua require('dap').step_over()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<F6>', [[<cmd>lua require('dap').step_out()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<F5>', [[<cmd>lua require('dap').step_into()<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'B', [[<cmd>lua require('dap').set_breakpoint(vim.fn.input('Breakpoint condition: '))<cr>]], { noremap = true, silent = true })
|
||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'lp', [[<cmd>lua require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<cr>]], { noremap = true, silent = true })
|
||||
end
|
||||
|
||||
-- Enable the following language servers
|
||||
local servers = { 'html', 'jdtls', 'jsonls', 'pyright', 'rnix', 'sourcekit', 'tsserver', 'yamlls' }
|
||||
for _, lsp in ipairs(servers) do
|
||||
nvim_lsp[lsp].setup { on_attach = on_attach }
|
||||
end
|
||||
|
||||
-- lua language server
|
||||
local sumneko_binary = vim.fn.getenv 'HOME' .. '/.nix-profile/bin/lua-language-server'
|
||||
local runtime_path = vim.split(package.path, ';')
|
||||
table.insert(runtime_path, 'lua/?.lua')
|
||||
table.insert(runtime_path, 'lua/?/init.lua')
|
||||
|
||||
local luadev = require('lua-dev').setup{
|
||||
lspconfig = {
|
||||
cmd = { sumneko_binary },
|
||||
commands = {
|
||||
Format = {
|
||||
function()
|
||||
require('stylua-nvim').format_file()
|
||||
end,
|
||||
},
|
||||
},
|
||||
on_attach = on_attach,
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
|
||||
version = 'LuaJIT',
|
||||
-- Setup your lua path
|
||||
path = runtime_path,
|
||||
},
|
||||
diagnostics = {
|
||||
-- Get the language server to recognize the `vim` global
|
||||
globals = { 'vim' },
|
||||
},
|
||||
workspace = {
|
||||
-- Make the server aware of Neovim runtime files
|
||||
library = {
|
||||
vim.api.nvim_get_runtime_file('', true),
|
||||
},
|
||||
},
|
||||
-- Do not send telemetry data containing a randomized but unique identifier
|
||||
telemetry = {
|
||||
enable = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
require('lspconfig').sumneko_lua.setup(luadev)
|
||||
|
||||
-- metals
|
||||
-- vim.g.metals_server_version = '0.10.7+84-9d4bcf78-SNAPSHOT'
|
||||
-- vim.opt_global.shortmess:remove('F'):append 'c'
|
||||
local metals_config = require('metals').bare_config()
|
||||
metals_config.settings = {
|
||||
showImplicitArguments = true,
|
||||
showInferredType = true,
|
||||
bloopSbtAlreadyInstalled = true,
|
||||
excludedPackages = {
|
||||
"akka.actor.typed.javadsl",
|
||||
"com.github.swagger.akka.javadsl",
|
||||
"akka.stream.javadsl",
|
||||
},
|
||||
fallbackScalaVersion = "2.13.6",
|
||||
superMethodLensesEnabled = true,
|
||||
javaHome = "/Users/salar/.nix-profile"
|
||||
}
|
||||
metals_config.init_options.statusBarProvider = 'on'
|
||||
metals_config.on_attach = function(client, bufnr)
|
||||
vim.cmd([[autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()]])
|
||||
vim.cmd([[autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()]])
|
||||
vim.cmd([[autocmd BufEnter,CursorHold,InsertLeave <buffer> lua vim.lsp.codelens.refresh()]])
|
||||
|
||||
require("metals").setup_dap()
|
||||
end
|
||||
vim.cmd [[augroup lsp]]
|
||||
vim.cmd [[au!]]
|
||||
vim.cmd [[au FileType scala,sbt lua require("metals").initialize_or_attach(metals_config)]]
|
||||
vim.cmd [[augroup end]]
|
||||
|
||||
-- Map :Format to vim.lsp.buf.formatting()
|
||||
vim.cmd [[ command! Format execute 'lua vim.lsp.buf.formatting()' ]]
|
||||
|
||||
-- Set completeopt to have a better completion experience
|
||||
vim.o.completeopt = 'menuone,noinsert'
|
||||
|
||||
-- Compe setup
|
||||
require('compe').setup {
|
||||
enabled = true,
|
||||
autocomplete = true,
|
||||
debug = false,
|
||||
min_length = 1,
|
||||
preselect = 'enable',
|
||||
throttle_time = 80,
|
||||
source_timeout = 200,
|
||||
incomplete_delay = 400,
|
||||
max_abbr_width = 100,
|
||||
max_kind_width = 100,
|
||||
max_menu_width = 100,
|
||||
documentation = true,
|
||||
|
||||
source = {
|
||||
path = true,
|
||||
nvim_lsp = {
|
||||
priority = 1000,
|
||||
filetypes = { 'scala', 'sbt', 'java', 'python' },
|
||||
},
|
||||
nvim_lua = true,
|
||||
buffer = true,
|
||||
luasnip = true,
|
||||
tabnine = true,
|
||||
},
|
||||
}
|
||||
|
||||
local t = function(str)
|
||||
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
||||
end
|
||||
|
||||
local check_back_space = function()
|
||||
local col = vim.fn.col '.' - 1
|
||||
if col == 0 or vim.fn.getline('.'):sub(col, col):match '%s' then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
-- Use (s-)tab to:
|
||||
--- move to prev/next item in completion menuone
|
||||
--- jump to prev/next snippet's placeholder
|
||||
_G.tab_complete = function()
|
||||
if vim.fn.pumvisible() == 1 then
|
||||
return t '<C-n>'
|
||||
elseif check_back_space() then
|
||||
return t '<Tab>'
|
||||
else
|
||||
return vim.fn['compe#complete']()
|
||||
end
|
||||
end
|
||||
_G.s_tab_complete = function()
|
||||
if vim.fn.pumvisible() == 1 then
|
||||
return t '<C-p>'
|
||||
else
|
||||
return t '<S-Tab>'
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_set_keymap('i', '<Tab>', 'v:lua.tab_complete()', { expr = true })
|
||||
vim.api.nvim_set_keymap('s', '<Tab>', 'v:lua.tab_complete()', { expr = true })
|
||||
vim.api.nvim_set_keymap('i', '<S-Tab>', 'v:lua.s_tab_complete()', { expr = true })
|
||||
vim.api.nvim_set_keymap('s', '<S-Tab>', 'v:lua.s_tab_complete()', { expr = true })
|
||||
end
|
||||
|
||||
if fn.isdirectory(install_path) == 0 then
|
||||
fn.system { 'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path }
|
||||
load_plugins()
|
||||
require('packer').sync()
|
||||
vim.cmd 'autocmd User PackerComplete ++once lua load_config()'
|
||||
else
|
||||
load_plugins()
|
||||
_G.load_config()
|
||||
end
|
|
@ -1,197 +0,0 @@
|
|||
local gl = require 'galaxyline'
|
||||
local gls = gl.section
|
||||
gl.short_line_list = { 'LuaTree', 'vista', 'dbui' }
|
||||
|
||||
local colors = {
|
||||
bg = '#282c34',
|
||||
yellow = '#fabd2f',
|
||||
cyan = '#008080',
|
||||
darkblue = '#081633',
|
||||
green = '#afd700',
|
||||
orange = '#FF8800',
|
||||
purple = '#5d4d7a',
|
||||
magenta = '#d16d9e',
|
||||
grey = '#c0c0c0',
|
||||
blue = '#0087d7',
|
||||
red = '#ec5f67',
|
||||
}
|
||||
|
||||
local buffer_not_empty = function()
|
||||
if vim.fn.empty(vim.fn.expand '%:t') ~= 1 then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
gls.left[1] = {
|
||||
FirstElement = {
|
||||
provider = function()
|
||||
return '▋'
|
||||
end,
|
||||
highlight = { colors.blue, colors.yellow },
|
||||
},
|
||||
}
|
||||
gls.left[2] = {
|
||||
ViMode = {
|
||||
provider = function()
|
||||
local alias = { n = 'NORMAL', i = 'INSERT', c = 'COMMAND', v = 'VISUAL', V = 'VISUAL LINE', [''] = 'VISUAL BLOCK' }
|
||||
return alias[vim.fn.mode()]
|
||||
end,
|
||||
separator = '',
|
||||
separator_highlight = {
|
||||
colors.purple,
|
||||
function()
|
||||
if not buffer_not_empty() then
|
||||
return colors.purple
|
||||
end
|
||||
return colors.darkblue
|
||||
end,
|
||||
},
|
||||
highlight = { colors.darkblue, colors.purple, 'bold' },
|
||||
},
|
||||
}
|
||||
gls.left[3] = {
|
||||
FileIcon = {
|
||||
provider = 'FileIcon',
|
||||
condition = buffer_not_empty,
|
||||
highlight = { require('galaxyline.provider_fileinfo').get_file_icon_color, colors.darkblue },
|
||||
},
|
||||
}
|
||||
gls.left[4] = {
|
||||
FileName = {
|
||||
provider = { 'FileName', 'FileSize' },
|
||||
condition = buffer_not_empty,
|
||||
separator = '',
|
||||
separator_highlight = { colors.purple, colors.darkblue },
|
||||
highlight = { colors.magenta, colors.darkblue },
|
||||
},
|
||||
}
|
||||
|
||||
gls.left[5] = {
|
||||
GitIcon = {
|
||||
provider = function()
|
||||
return ' '
|
||||
end,
|
||||
condition = buffer_not_empty,
|
||||
highlight = { colors.orange, colors.purple },
|
||||
},
|
||||
}
|
||||
gls.left[6] = {
|
||||
GitBranch = {
|
||||
provider = 'GitBranch',
|
||||
condition = buffer_not_empty,
|
||||
highlight = { colors.grey, colors.purple },
|
||||
},
|
||||
}
|
||||
|
||||
local checkwidth = function()
|
||||
local squeeze_width = vim.fn.winwidth(0) / 2
|
||||
if squeeze_width > 40 then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
gls.left[7] = {
|
||||
DiffAdd = {
|
||||
provider = 'DiffAdd',
|
||||
condition = checkwidth,
|
||||
icon = ' ',
|
||||
highlight = { colors.green, colors.purple },
|
||||
},
|
||||
}
|
||||
gls.left[8] = {
|
||||
DiffModified = {
|
||||
provider = 'DiffModified',
|
||||
condition = checkwidth,
|
||||
icon = ' ',
|
||||
highlight = { colors.orange, colors.purple },
|
||||
},
|
||||
}
|
||||
gls.left[9] = {
|
||||
DiffRemove = {
|
||||
provider = 'DiffRemove',
|
||||
condition = checkwidth,
|
||||
icon = ' ',
|
||||
highlight = { colors.red, colors.purple },
|
||||
},
|
||||
}
|
||||
gls.left[10] = {
|
||||
LeftEnd = {
|
||||
provider = function()
|
||||
return ''
|
||||
end,
|
||||
separator = '',
|
||||
separator_highlight = { colors.purple, colors.bg },
|
||||
highlight = { colors.purple, colors.purple },
|
||||
},
|
||||
}
|
||||
gls.left[11] = {
|
||||
DiagnosticError = {
|
||||
provider = 'DiagnosticError',
|
||||
icon = ' ',
|
||||
highlight = { colors.red, colors.bg },
|
||||
},
|
||||
}
|
||||
gls.left[12] = {
|
||||
Space = {
|
||||
provider = function()
|
||||
return ' '
|
||||
end,
|
||||
},
|
||||
}
|
||||
gls.left[13] = {
|
||||
DiagnosticWarn = {
|
||||
provider = 'DiagnosticWarn',
|
||||
icon = ' ',
|
||||
highlight = { colors.blue, colors.bg },
|
||||
},
|
||||
}
|
||||
gls.right[1] = {
|
||||
FileFormat = {
|
||||
provider = 'FileFormat',
|
||||
separator = '',
|
||||
separator_highlight = { colors.bg, colors.purple },
|
||||
highlight = { colors.grey, colors.purple },
|
||||
},
|
||||
}
|
||||
gls.right[2] = {
|
||||
LineInfo = {
|
||||
provider = 'LineColumn',
|
||||
separator = ' | ',
|
||||
separator_highlight = { colors.darkblue, colors.purple },
|
||||
highlight = { colors.grey, colors.purple },
|
||||
},
|
||||
}
|
||||
gls.right[3] = {
|
||||
PerCent = {
|
||||
provider = 'LinePercent',
|
||||
separator = '',
|
||||
separator_highlight = { colors.darkblue, colors.purple },
|
||||
highlight = { colors.grey, colors.darkblue },
|
||||
},
|
||||
}
|
||||
gls.right[4] = {
|
||||
ScrollBar = {
|
||||
provider = 'ScrollBar',
|
||||
highlight = { colors.yellow, colors.purple },
|
||||
},
|
||||
}
|
||||
|
||||
gls.short_line_left[1] = {
|
||||
BufferType = {
|
||||
provider = 'FileTypeName',
|
||||
separator = '',
|
||||
separator_highlight = { colors.purple, colors.bg },
|
||||
highlight = { colors.grey, colors.purple },
|
||||
},
|
||||
}
|
||||
|
||||
gls.short_line_right[1] = {
|
||||
BufferIcon = {
|
||||
provider = 'BufferIcon',
|
||||
separator = '',
|
||||
separator_highlight = { colors.purple, colors.bg },
|
||||
highlight = { colors.grey, colors.purple },
|
||||
},
|
||||
}
|
|
@ -1,8 +1,7 @@
|
|||
{ config, pkgs, ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
tmuxConfig = builtins.readFile ./tmux.conf;
|
||||
|
||||
in
|
||||
{
|
||||
programs.tmux = {
|
||||
|
@ -23,16 +22,9 @@ in
|
|||
plugin = tmuxPlugins.continuum;
|
||||
extraConfig = "set -g @continuum-restore 'on'";
|
||||
}
|
||||
{
|
||||
plugin = tmuxPlugins.sensible;
|
||||
}
|
||||
{
|
||||
plugin = tmuxPlugins.vim-tmux-navigator;
|
||||
}
|
||||
{
|
||||
plugin = tmuxPlugins.onedark-theme;
|
||||
}
|
||||
{ plugin = tmuxPlugins.sensible; }
|
||||
{ plugin = tmuxPlugins.vim-tmux-navigator; }
|
||||
{ plugin = tmuxPlugins.onedark-theme; }
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
|
|
102
programs/vscode/default.nix
Normal file
102
programs/vscode/default.nix
Normal file
|
@ -0,0 +1,102 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
myExtensions = with pkgs.vscode-extensions; [
|
||||
asvetliakov.vscode-neovim
|
||||
baccata.scaladex-search
|
||||
charliermarsh.ruff
|
||||
davidanson.vscode-markdownlint
|
||||
enkia.tokyo-night
|
||||
github.copilot
|
||||
github.copilot-chat
|
||||
github.github-vscode-theme
|
||||
github.vscode-github-actions
|
||||
github.vscode-pull-request-github
|
||||
humao.rest-client
|
||||
jnoortheen.nix-ide
|
||||
marp-team.marp-vscode
|
||||
mechatroner.rainbow-csv
|
||||
mkhl.direnv
|
||||
ms-python.debugpy
|
||||
ms-python.python
|
||||
ms-python.vscode-pylance
|
||||
ms-toolsai.jupyter
|
||||
ms-toolsai.jupyter-keymap
|
||||
ms-toolsai.jupyter-renderers
|
||||
ms-toolsai.vscode-jupyter-cell-tags
|
||||
ms-toolsai.vscode-jupyter-slideshow
|
||||
ms-vscode.makefile-tools
|
||||
ms-toolsai.jupyter
|
||||
redhat.java
|
||||
redhat.vscode-yaml
|
||||
rust-lang.rust-analyzer
|
||||
scalameta.metals
|
||||
skyapps.fish-vscode
|
||||
sswg.swift-lang
|
||||
svsool.markdown-memo
|
||||
timonwong.shellcheck
|
||||
usernamehw.errorlens
|
||||
visualstudioexptteam.vscodeintellicode
|
||||
visualjj.visualjj
|
||||
vscode-icons-team.vscode-icons
|
||||
vscjava.vscode-java-pack
|
||||
xyz.local-history
|
||||
yzhang.markdown-all-in-one
|
||||
];
|
||||
myUserSettings = {
|
||||
"editor.fontFamily" = "SF Mono";
|
||||
"editor.fontLigatures" = true;
|
||||
"editor.fontSize" = 13;
|
||||
"editor.copyWithSyntaxHighlighting" = true;
|
||||
"extensions.experimental.affinity" = {
|
||||
"asvetliakov.vscode-neovim" = 1;
|
||||
};
|
||||
"extensions.ignoreRecommendations" = true;
|
||||
"files.autoSave" = "afterDelay";
|
||||
"git.confirmSync" = true;
|
||||
"git.rebaseWhenSync" = true;
|
||||
"github.gitProtocol" = "ssh";
|
||||
"githubPullRequests.notifications" = "pullRequests";
|
||||
"githubPullRequests.pullBranch" = "never";
|
||||
"markdown.extension.preview.autoShowPreviewToSide" = true;
|
||||
"notebook.formatOnSave" = true;
|
||||
# Install paste image manually as not in nix ( https://marketplace.visualstudio.com/items?itemName=mushan.vscode-paste-image )
|
||||
"pasteImage.insertPattern" = "![[\${imageFileName}]]";
|
||||
"pasteImage.path" = "\${projectRoot}/Attachments";
|
||||
"python.analysis.extraPaths" = [ "src" ];
|
||||
"python.analysis.autoFormatStrings" = true;
|
||||
"python.analysis.autoImportCompletions" = true;
|
||||
"python.analysis.completeFunctionParens" = true;
|
||||
"python.analysis.inlayHints.pytestParameters" = true;
|
||||
"python.analysis.typeCheckingMode" = "strict";
|
||||
"python.testing.pytestEnabled" = true;
|
||||
"[python]" = {
|
||||
"editor.defaultFormatter" = "charliermarsh.ruff";
|
||||
"editor.formatOnSave" = true;
|
||||
"editor.codeActionsOnSave" = {
|
||||
"source.fixAll" = "afterDelay";
|
||||
"source.organizeImports" = "afterDelay";
|
||||
};
|
||||
};
|
||||
"telemetry.telemetryLevel" = "off";
|
||||
"terminal.integrated.defaultProfile.osx" = "fish";
|
||||
"terminal.integrated.fontFamily" = "SF Mono";
|
||||
"terminal.integrated.fontSize" = 13;
|
||||
"update.mode" = "none";
|
||||
"vsicons.dontShowNewVersionMessage" = true;
|
||||
"window.openFoldersInNewWindow" = "on";
|
||||
"workbench.colorTheme" = "Tokyo Night";
|
||||
"workbench.iconTheme" = "vscode-icons";
|
||||
"workbench.sideBar.location" = "right";
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
mutableExtensionsDir = false;
|
||||
extensions = myExtensions;
|
||||
userSettings = myUserSettings;
|
||||
};
|
||||
}
|
11
programs/wezterm/default.nix
Normal file
11
programs/wezterm/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ ... }:
|
||||
|
||||
let
|
||||
weztermConfig = builtins.readFile ./wezterm.lua;
|
||||
in
|
||||
{
|
||||
programs.wezterm = {
|
||||
enable = true;
|
||||
extraConfig = weztermConfig;
|
||||
};
|
||||
}
|
171
programs/wezterm/wezterm.lua
Normal file
171
programs/wezterm/wezterm.lua
Normal file
|
@ -0,0 +1,171 @@
|
|||
local wezterm = require 'wezterm'
|
||||
local mux = wezterm.mux
|
||||
local act = wezterm.action
|
||||
|
||||
local function is_vim(pane)
|
||||
-- this is set by the plugin, and unset on ExitPre in Neovim
|
||||
return pane:get_user_vars().IS_NVIM == 'true'
|
||||
end
|
||||
|
||||
local direction_keys = {
|
||||
a = 'Left',
|
||||
o = 'Down',
|
||||
e = 'Up',
|
||||
u = 'Right',
|
||||
}
|
||||
|
||||
local function split_nav(resize_or_move, key)
|
||||
return {
|
||||
key = key,
|
||||
mods = resize_or_move == 'resize' and 'META' or 'CTRL',
|
||||
action = wezterm.action_callback(function(win, pane)
|
||||
if is_vim(pane) then
|
||||
-- pass the keys through to vim/nvim
|
||||
win:perform_action({
|
||||
SendKey = { key = key, mods = resize_or_move == 'resize' and 'META' or 'CTRL' },
|
||||
}, pane)
|
||||
else
|
||||
if resize_or_move == 'resize' then
|
||||
win:perform_action({ AdjustPaneSize = { direction_keys[key], 3 } }, pane)
|
||||
else
|
||||
win:perform_action({ ActivatePaneDirection = direction_keys[key] }, pane)
|
||||
end
|
||||
end
|
||||
end),
|
||||
}
|
||||
end
|
||||
|
||||
wezterm.on('update-right-status', function(window, pane)
|
||||
window:set_right_status(window:active_workspace())
|
||||
end)
|
||||
|
||||
wezterm.on('gui-startup', function(cmd)
|
||||
local tab, pane, window = mux.spawn_window(cmd or {})
|
||||
window:gui_window():maximize()
|
||||
pane:split { size = 0.2 }
|
||||
end)
|
||||
|
||||
return {
|
||||
adjust_window_size_when_changing_font_size = false,
|
||||
check_for_updates = false,
|
||||
-- color_scheme = "Gruvbox Light";
|
||||
color_scheme = 'tokyonight',
|
||||
default_gui_startup_args = { 'connect', 'unix' },
|
||||
font = wezterm.font 'SF Mono',
|
||||
font_size = 16,
|
||||
dpi = 144,
|
||||
scrollback_lines = 50000,
|
||||
initial_cols = 400,
|
||||
initial_rows = 80,
|
||||
leader = { key = 'b', mods = 'SUPER', timeout_milliseconds = 1000 },
|
||||
default_prog = { '/etc/profiles/per-user/salar/bin/fish' },
|
||||
ssh_domains = {
|
||||
{
|
||||
name = 'hcloud1',
|
||||
remote_address = 'hcloud1.softinio.net',
|
||||
username = 'salar',
|
||||
remote_wezterm_path = '/run/current-system/sw/bin/wezterm',
|
||||
},
|
||||
},
|
||||
unix_domains = {
|
||||
{
|
||||
name = 'unix',
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ key = '-', mods = 'LEADER', action = wezterm.action { SplitVertical = { domain = 'CurrentPaneDomain' } } },
|
||||
{ key = "'", mods = 'LEADER', action = wezterm.action { SplitHorizontal = { domain = 'CurrentPaneDomain' } } },
|
||||
{ key = 'k', mods = 'SUPER', action = act.TogglePaneZoomState },
|
||||
{ key = 'h', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Left' } },
|
||||
{ key = 'j', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Down' } },
|
||||
{ key = 'k', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Up' } },
|
||||
{ key = 'l', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Right' } },
|
||||
{ key = 'H', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Left', 5 } } },
|
||||
{ key = 'J', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Down', 5 } } },
|
||||
{ key = 'K', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Up', 5 } } },
|
||||
{ key = 'L', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Right', 5 } } },
|
||||
{ key = '1', mods = 'LEADER', action = wezterm.action { ActivateTab = 0 } },
|
||||
{ key = '2', mods = 'LEADER', action = wezterm.action { ActivateTab = 1 } },
|
||||
{ key = '3', mods = 'LEADER', action = wezterm.action { ActivateTab = 2 } },
|
||||
{ key = '4', mods = 'LEADER', action = wezterm.action { ActivateTab = 3 } },
|
||||
{ key = '5', mods = 'LEADER', action = wezterm.action { ActivateTab = 4 } },
|
||||
{ key = '6', mods = 'LEADER', action = wezterm.action { ActivateTab = 5 } },
|
||||
{ key = '7', mods = 'LEADER', action = wezterm.action { ActivateTab = 6 } },
|
||||
{ key = '8', mods = 'LEADER', action = wezterm.action { ActivateTab = 7 } },
|
||||
{ key = '9', mods = 'LEADER', action = wezterm.action { ActivateTab = 8 } },
|
||||
{ key = '&', mods = 'LEADER', action = wezterm.action { CloseCurrentTab = { confirm = true } } },
|
||||
{ key = 'x', mods = 'LEADER', action = wezterm.action { CloseCurrentPane = { confirm = true } } },
|
||||
{ key = 'Enter', mods = 'ALT', action = act.ToggleFullScreen },
|
||||
{ key = 'c', mods = 'SUPER', action = act.CopyTo 'Clipboard' },
|
||||
{ key = 'v', mods = 'SUPER', action = act.PasteFrom 'Clipboard' },
|
||||
{ key = 'n', mods = 'SUPER', action = act.SpawnWindow },
|
||||
{ key = 't', mods = 'SUPER', action = act.SpawnTab 'CurrentPaneDomain' },
|
||||
{ key = 'h', mods = 'SUPER', action = act { SpawnCommandInNewTab = { cwd = wezterm.home_dir } } },
|
||||
{ key = 'q', mods = 'SUPER', action = act.QuitApplication },
|
||||
{ key = 'i', mods = 'CTRL|SHIFT', action = act.SwitchToWorkspace },
|
||||
{
|
||||
key = '8',
|
||||
mods = 'ALT',
|
||||
action = wezterm.action_callback(function(window, pane)
|
||||
-- Here you can dynamically construct a longer list if needed
|
||||
|
||||
local home = wezterm.home_dir
|
||||
local workspaces = {
|
||||
{ id = home, label = 'Home' },
|
||||
{ id = home .. '/Projects', label = 'My Projects' },
|
||||
{ id = home .. '/OpenSource', label = 'Open Source Projects' },
|
||||
{ id = home .. '/.config/nixpkgs', label = 'Nix Config' },
|
||||
{ id = home .. '/Projects/scalanews', label = 'Scala News' },
|
||||
}
|
||||
|
||||
window:perform_action(
|
||||
act.InputSelector {
|
||||
action = wezterm.action_callback(function(inner_window, inner_pane, id, label)
|
||||
if not id and not label then
|
||||
wezterm.log_info 'cancelled'
|
||||
else
|
||||
wezterm.log_info('id = ' .. id)
|
||||
wezterm.log_info('label = ' .. label)
|
||||
inner_window:perform_action(
|
||||
act.SwitchToWorkspace {
|
||||
name = label,
|
||||
spawn = {
|
||||
label = 'Workspace: ' .. label,
|
||||
cwd = id,
|
||||
},
|
||||
},
|
||||
inner_pane
|
||||
)
|
||||
end
|
||||
end),
|
||||
title = 'Choose Workspace',
|
||||
choices = workspaces,
|
||||
fuzzy = true,
|
||||
fuzzy_description = 'Fuzzy find and/or make a workspace',
|
||||
},
|
||||
pane
|
||||
)
|
||||
end),
|
||||
},
|
||||
{
|
||||
key = '9',
|
||||
mods = 'ALT',
|
||||
action = act.ShowLauncherArgs {
|
||||
flags = 'FUZZY|WORKSPACES',
|
||||
},
|
||||
},
|
||||
{ key = 'Tab', mods = 'CTRL', action = wezterm.action.DisableDefaultAssignment },
|
||||
-- move between split panes
|
||||
split_nav('move', 'a'),
|
||||
split_nav('move', 'o'),
|
||||
split_nav('move', 'e'),
|
||||
split_nav('move', 'u'),
|
||||
-- resize panes
|
||||
split_nav('resize', 'a'),
|
||||
split_nav('resize', 'o'),
|
||||
split_nav('resize', 'e'),
|
||||
split_nav('resize', 'u'),
|
||||
},
|
||||
-- temp fix
|
||||
-- front_end = 'WebGpu',
|
||||
}
|
51
programs/zed/default.nix
Normal file
51
programs/zed/default.nix
Normal file
|
@ -0,0 +1,51 @@
|
|||
{ ... }:
|
||||
let
|
||||
myextensions = [
|
||||
"fish"
|
||||
"lua"
|
||||
"nix"
|
||||
"ruff"
|
||||
"scala"
|
||||
"sql"
|
||||
"swift"
|
||||
"toml"
|
||||
];
|
||||
in
|
||||
{
|
||||
programs.zed-editor = {
|
||||
enable = true;
|
||||
extensions = myextensions;
|
||||
userSettings = {
|
||||
assistant = {
|
||||
version = "2";
|
||||
default_model = {
|
||||
provider = "copilot_chat";
|
||||
model = "gpt-4o";
|
||||
};
|
||||
};
|
||||
features = {
|
||||
copilot = true;
|
||||
};
|
||||
language_models = {
|
||||
openai = {
|
||||
available_models = [
|
||||
{
|
||||
provider = "openai";
|
||||
name = "gpt-4o";
|
||||
max_tokens = 128000;
|
||||
}
|
||||
{
|
||||
provider = "openai";
|
||||
name = "gpt-4o-mini";
|
||||
max_tokens = 128000;
|
||||
}
|
||||
];
|
||||
version = "2";
|
||||
};
|
||||
};
|
||||
telemetry.metrics = false;
|
||||
theme = "Andromeda";
|
||||
vim_mode = true;
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue