Compare commits
68 Commits
318afdf9a8
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
a647e92782
|
|||
|
2daaf64e9b
|
|||
|
ac284e6cfb
|
|||
|
1edf4af07f
|
|||
|
ebf3e773c6
|
|||
|
0db4036c29
|
|||
|
e7fa524261
|
|||
|
6154c9cf0d
|
|||
|
b3f3040174
|
|||
|
80271685e6
|
|||
|
35e165b801
|
|||
|
27759c824a
|
|||
|
80e245483a
|
|||
|
1b1d754950
|
|||
|
8df3c6bf45
|
|||
|
c9eca9eb1e
|
|||
|
514e10f696
|
|||
|
86e9663531
|
|||
|
13f8a22760
|
|||
|
1c64936338
|
|||
|
5ac70285e4
|
|||
|
015131bade
|
|||
|
999de8e02b
|
|||
|
737c5c8d8a
|
|||
|
315274e323
|
|||
|
b671cdd1c4
|
|||
|
0c9bfa8714
|
|||
|
e13a9fa82d
|
|||
|
700096aca1
|
|||
|
4e229aac5e
|
|||
|
3aa23d4ce1
|
|||
|
32b5474307
|
|||
|
9c0b473ea9
|
|||
|
3e30f0b1dc
|
|||
|
8fd2ef958f
|
|||
|
49c82d2baf
|
|||
|
ad8fb42b43
|
|||
|
5923a7ea32
|
|||
|
95936a2e88
|
|||
|
4c1158f9b7
|
|||
|
bb6e4624db
|
|||
|
91044efd80
|
|||
|
c6bb7aa88b
|
|||
|
27d0ab06e1
|
|||
| 56efd872ff | |||
| b07eed8970 | |||
| 562ec40d05 | |||
| 9b4ba3fef4 | |||
| c5db408cb3 | |||
| 2fb5860706 | |||
| c7a28de886 | |||
| 903661935e | |||
| 4ca03fde37 | |||
| 9a94ed7331 | |||
| 6b8c8e86f4 | |||
| 75fb14ffe7 | |||
| 8e34c30072 | |||
| 233b9d674a | |||
| 5954a223d9 | |||
| c7ada99ab3 | |||
| 822f654d6a | |||
| b5c495a094 | |||
| f8a8083a07 | |||
| 2d21314705 | |||
| 343ab84f42 | |||
| 8a3b4e1d49 | |||
| 0c3ae83422 | |||
| 6c69401e21 |
@@ -1,2 +1,3 @@
|
|||||||
.pos
|
.pos
|
||||||
p.vim
|
p.vim
|
||||||
|
log.txt
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
indent_type = "Spaces"
|
||||||
|
indent_width = 2
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
alias .="cd ."
|
|
||||||
alias ..="cd .."
|
|
||||||
alias ...="cd ../.."
|
|
||||||
alias ....="cd ../../.."
|
|
||||||
alias .....="cd ../../../.."
|
|
||||||
alias ......="cd ../../../../../.."
|
|
||||||
alias py="python3"
|
|
||||||
alias ls="eza -TlL 2 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"
|
|
||||||
alias lss="eza -TlL 1 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"
|
|
||||||
alias lsa="eza -TlaL 1 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"
|
|
||||||
alias sls="sudo eza -TlL 2 --git --no-permissions --no-user --no-time --icons=always --group-directories-first"
|
|
||||||
alias s="python3 -m http.server 8080"
|
|
||||||
alias pipes.sh="pipes-rs -d 1 -r 0 -b true -p 1 -t 0.5"
|
|
||||||
alias vi="nvim"
|
|
||||||
alias vim="nvim"
|
|
||||||
alias stow="stow --dotfiles"
|
|
||||||
alias :q="exit"
|
|
||||||
alias :qa="exit"
|
|
||||||
alias :Q="exit"
|
|
||||||
|
|
||||||
set fish_greeting
|
|
||||||
|
|
||||||
set -Ux EDITOR nvim
|
|
||||||
set -Ux VISUAL nvim
|
|
||||||
|
|
||||||
function a
|
|
||||||
for arg in $argv
|
|
||||||
if string match -q '*/' $arg
|
|
||||||
mkdir -p $arg
|
|
||||||
else
|
|
||||||
mkdir -p (dirname $arg)
|
|
||||||
touch $arg
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
function y
|
|
||||||
set tmp (mktemp -t "yazi-cwd.XXXXXX")
|
|
||||||
yazi $argv --cwd-file="$tmp"
|
|
||||||
if set cwd (command cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
|
||||||
builtin cd -- "$cwd"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
function g
|
|
||||||
gitui
|
|
||||||
end
|
|
||||||
function editor
|
|
||||||
set pos (cat ~/dotfiles/.pos)
|
|
||||||
y $pos
|
|
||||||
if test -e ./p.vim
|
|
||||||
nvim -S ./p.vim
|
|
||||||
end
|
|
||||||
echo $PWD > ~/dotfiles/.pos
|
|
||||||
end
|
|
||||||
|
|
||||||
# Created by `pipx` on 2025-07-15 19:25:29
|
|
||||||
set PATH $PATH /home/syed/.local/bin
|
|
||||||
Generated
+83
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1783618078,
|
||||||
|
"narHash": "sha256-F43DGcBoIO8xOZFAfodg3jy0VghB9NGdb6xbTYAIx1A=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "144f4e36d0186195037da9fce80a727108978070",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"kutu": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1783461814,
|
||||||
|
"narHash": "sha256-ycpzjXjMey4PlAFYeprz2nHI2azxkvEn3wNvHee+Yh0=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "4b8599132f26d75bddfe613bcf9697ce0f91d212",
|
||||||
|
"revCount": 40,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.syedm.dev/syedm/kutu.rb.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.syedm.dev/syedm/kutu.rb.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1783148766,
|
||||||
|
"narHash": "sha256-uslt2pqShTIXDdAHRHv2QkYLsVdY8Oqwz0EA48/RSM8=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a50de1b7d8a586adc18d2395c19de7d6058e6030",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-26.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1783224372,
|
||||||
|
"narHash": "sha256-8i/87eeoqiGE4yOTjwSA3Eh/ziJRQEmd/unYU+K27sk=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d407951447dcd00442e97087bf374aad70c04cea",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"kutu": "kutu",
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
kutu.url = "git+https://git.syedm.dev/syedm/kutu.rb.git";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
kutu,
|
||||||
|
nixpkgs,
|
||||||
|
home-manager,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
commonModules = [
|
||||||
|
./hosts/common.nix
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.users.me = import ./home/common.nix;
|
||||||
|
home-manager.users.root = import ./home/root.nix;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
nixosConfigurations = {
|
||||||
|
syedm = nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
modules = commonModules ++ [
|
||||||
|
./hosts/syedm
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
tardis = nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
specialArgs = { inherit kutu; };
|
||||||
|
modules = commonModules ++ [
|
||||||
|
./hosts/tardis
|
||||||
|
{ home-manager.users.me = import ./home/tardis.nix; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# For development
|
||||||
|
devShells.${system}.default = pkgs.mkShell {
|
||||||
|
packages = with pkgs; [
|
||||||
|
lua-language-server
|
||||||
|
stylua
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
battery = pkgs.writeShellScript "battery" ''
|
||||||
|
BAT="/sys/class/power_supply/BAT1"
|
||||||
|
LEVEL=$(cat "$BAT/capacity")
|
||||||
|
STATUS=$(cat "$BAT/status")
|
||||||
|
|
||||||
|
if [ "$STATUS" = "Discharging" ] && [ "$LEVEL" -lt 3 ]; then
|
||||||
|
${pkgs.systemd}/bin/systemctl hibernate
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$STATUS" = "Discharging" ] && [ "$LEVEL" -lt 20 ]; then
|
||||||
|
${pkgs.dunst}/bin/dunstify \
|
||||||
|
-r 9991 \
|
||||||
|
-t 0 \
|
||||||
|
-u critical \
|
||||||
|
"Battery Low" \
|
||||||
|
"Battery is at ''${LEVEL}%" 2>/dev/null || true
|
||||||
|
else
|
||||||
|
${pkgs.dunst}/bin/dunstify \
|
||||||
|
-C 9991 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
systemd.user.services.battery = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Battery management";
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = battery;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.timers.battery = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Check battery level every 15 seconds";
|
||||||
|
};
|
||||||
|
|
||||||
|
Timer = {
|
||||||
|
OnBootSec = "15s";
|
||||||
|
OnUnitInactiveSec = "15s";
|
||||||
|
AccuracySec = "1s";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "timers.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.btop = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
color_theme = "dracula";
|
||||||
|
theme_background = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./btop
|
||||||
|
./eza
|
||||||
|
./fastfetch
|
||||||
|
./fish
|
||||||
|
./gitui
|
||||||
|
./nvim
|
||||||
|
./yazi
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home.username = "me";
|
||||||
|
home.homeDirectory = "/home/me";
|
||||||
|
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings.user.name = "Syed Daanish";
|
||||||
|
settings.user.email = "me@syedm.dev";
|
||||||
|
|
||||||
|
signing = {
|
||||||
|
format = "openpgp";
|
||||||
|
key = "9988BF5D83DCEC880D69A3DA4786C50E6037E76A";
|
||||||
|
signByDefault = true;
|
||||||
|
signer = "${pkgs.writeShellScriptBin "gpg-secrets" ''
|
||||||
|
exec ${pkgs.gnupg}/bin/gpg --homedir /run/secrets/gpg "$@"
|
||||||
|
''}/bin/gpg-secrets";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".config/nixpkgs/config.nix".text = ''
|
||||||
|
{
|
||||||
|
allowUnfree = true;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
home.stateVersion = "26.05";
|
||||||
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
script = pkgs.replaceVars ./menuify.sh {
|
||||||
|
bash = pkgs.bash;
|
||||||
|
dmenu = pkgs.dmenu;
|
||||||
|
gawk = pkgs.gawk;
|
||||||
|
coreutils = pkgs.coreutils;
|
||||||
|
};
|
||||||
|
|
||||||
|
menuify = pkgs.writeShellScriptBin "menuify" (builtins.readFile script);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services.dunst = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
monitor = 0;
|
||||||
|
follow = "none";
|
||||||
|
enable_posix_regex = true;
|
||||||
|
width = "(0, 300)";
|
||||||
|
height = "(0, 200)";
|
||||||
|
notification_limit = 5;
|
||||||
|
origin = "bottom-right";
|
||||||
|
offset = "20x20";
|
||||||
|
icon_corner_radius = 18;
|
||||||
|
frame_width = 3;
|
||||||
|
gap_size = 5;
|
||||||
|
padding = 12;
|
||||||
|
horizontal_padding = 12;
|
||||||
|
idle_threshold = 60;
|
||||||
|
font = "Agave Nerd Font 12";
|
||||||
|
format = "<span font='10.5' font_weight='bold' size='x-large'>%s</span>\\n%b";
|
||||||
|
show_age_threshold = 0;
|
||||||
|
dmenu = "${menuify}/bin/menuify";
|
||||||
|
browser = "xdg-open";
|
||||||
|
corner_radius = 18;
|
||||||
|
mouse_left_click = "do_action, close_current";
|
||||||
|
mouse_middle_click = "close_current";
|
||||||
|
mouse_right_click = "context";
|
||||||
|
};
|
||||||
|
|
||||||
|
urgency_low = {
|
||||||
|
frame_color = "#877d91";
|
||||||
|
highlight = "#877d91";
|
||||||
|
foreground = "#fff";
|
||||||
|
background = "#2f2f4a";
|
||||||
|
fullscreen = "pushback";
|
||||||
|
history_ignore = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
urgency_normal = {
|
||||||
|
frame_color = "#CF9FFF";
|
||||||
|
highlight = "#CF9FFF";
|
||||||
|
foreground = "#fff";
|
||||||
|
background = "#2f2f4a";
|
||||||
|
fullscreen = "delay";
|
||||||
|
};
|
||||||
|
|
||||||
|
urgency_critical = {
|
||||||
|
frame_color = "#fa8290";
|
||||||
|
highlight = "#fa8290";
|
||||||
|
foreground = "#fff";
|
||||||
|
background = "#2f2f4a";
|
||||||
|
fullscreen = "show";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!@bash@/bin/bash
|
||||||
|
|
||||||
|
list=""
|
||||||
|
|
||||||
|
declare -A commands_map
|
||||||
|
|
||||||
|
mapfile -t lines
|
||||||
|
|
||||||
|
for line in "${lines[@]}"; do
|
||||||
|
id=$(@coreutils@/bin/echo "$line" | @gawk@/bin/awk -F '[ #()]' '{print $2}')
|
||||||
|
list+="$id"$'\n'
|
||||||
|
commands_map["$id"]="$line"
|
||||||
|
done
|
||||||
|
|
||||||
|
selected=$(@coreutils@/bin/printf "$list" | @dmenu@/bin/dmenu -i -p "Select what to do:" -nf '#e0af68' -nb '#1f2335' -sb '#414868' -sf '#ffffff' -fn 'HurmitNerdFont-16')
|
||||||
|
|
||||||
|
if [ -n "$selected" ]; then
|
||||||
|
command_to_run=${commands_map["$selected"]}
|
||||||
|
@coreutils@/bin/printf "$command_to_run"
|
||||||
|
fi
|
||||||
|
|
||||||
@@ -0,0 +1,283 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
theme = {
|
||||||
|
colourful = true;
|
||||||
|
|
||||||
|
filekinds = {
|
||||||
|
normal = {
|
||||||
|
foreground = "#c0caf5";
|
||||||
|
};
|
||||||
|
directory = {
|
||||||
|
foreground = "#7aa2f7";
|
||||||
|
};
|
||||||
|
symlink = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
pipe = {
|
||||||
|
foreground = "#414868";
|
||||||
|
};
|
||||||
|
block_device = {
|
||||||
|
foreground = "#e0af68";
|
||||||
|
};
|
||||||
|
char_device = {
|
||||||
|
foreground = "#e0af68";
|
||||||
|
};
|
||||||
|
socket = {
|
||||||
|
foreground = "#414868";
|
||||||
|
};
|
||||||
|
special = {
|
||||||
|
foreground = "#9d7cd8";
|
||||||
|
};
|
||||||
|
executable = {
|
||||||
|
foreground = "#9ece6a";
|
||||||
|
};
|
||||||
|
mount_point = {
|
||||||
|
foreground = "#b4f9f8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
perms = {
|
||||||
|
user_read = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
user_write = {
|
||||||
|
foreground = "#bb9af7";
|
||||||
|
};
|
||||||
|
user_execute_file = {
|
||||||
|
foreground = "#9ece6a";
|
||||||
|
};
|
||||||
|
user_execute_other = {
|
||||||
|
foreground = "#9ece6a";
|
||||||
|
};
|
||||||
|
group_read = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
group_write = {
|
||||||
|
foreground = "#ff9e64";
|
||||||
|
};
|
||||||
|
group_execute = {
|
||||||
|
foreground = "#9ece6a";
|
||||||
|
};
|
||||||
|
other_read = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
other_write = {
|
||||||
|
foreground = "#ff007c";
|
||||||
|
};
|
||||||
|
other_execute = {
|
||||||
|
foreground = "#9ece6a";
|
||||||
|
};
|
||||||
|
special_user_file = {
|
||||||
|
foreground = "#ff007c";
|
||||||
|
};
|
||||||
|
special_other = {
|
||||||
|
foreground = "#db4b4b";
|
||||||
|
};
|
||||||
|
attribute = {
|
||||||
|
foreground = "#737aa2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
size = {
|
||||||
|
major = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
minor = {
|
||||||
|
foreground = "#9d7cd8";
|
||||||
|
};
|
||||||
|
number_byte = {
|
||||||
|
foreground = "#a9b1d6";
|
||||||
|
};
|
||||||
|
number_kilo = {
|
||||||
|
foreground = "#89ddff";
|
||||||
|
};
|
||||||
|
number_mega = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
number_giga = {
|
||||||
|
foreground = "#ff9e64";
|
||||||
|
};
|
||||||
|
number_huge = {
|
||||||
|
foreground = "#ff007c";
|
||||||
|
};
|
||||||
|
unit_byte = {
|
||||||
|
foreground = "#a9b1d6";
|
||||||
|
};
|
||||||
|
unit_kilo = {
|
||||||
|
foreground = "#89ddff";
|
||||||
|
};
|
||||||
|
unit_mega = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
unit_giga = {
|
||||||
|
foreground = "#ff9e64";
|
||||||
|
};
|
||||||
|
unit_huge = {
|
||||||
|
foreground = "#ff007c";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
user_you = {
|
||||||
|
foreground = "#3d59a1";
|
||||||
|
};
|
||||||
|
user_root = {
|
||||||
|
foreground = "#bb9af7";
|
||||||
|
};
|
||||||
|
user_other = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
group_yours = {
|
||||||
|
foreground = "#89ddff";
|
||||||
|
};
|
||||||
|
group_root = {
|
||||||
|
foreground = "#bb9af7";
|
||||||
|
};
|
||||||
|
group_other = {
|
||||||
|
foreground = "#c0caf5";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
links = {
|
||||||
|
normal = {
|
||||||
|
foreground = "#89ddff";
|
||||||
|
};
|
||||||
|
multi_link_file = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
new = {
|
||||||
|
foreground = "#9ece6a";
|
||||||
|
};
|
||||||
|
modified = {
|
||||||
|
foreground = "#bb9af7";
|
||||||
|
};
|
||||||
|
deleted = {
|
||||||
|
foreground = "#db4b4b";
|
||||||
|
};
|
||||||
|
renamed = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
typechange = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
ignored = {
|
||||||
|
foreground = "#545c7e";
|
||||||
|
};
|
||||||
|
conflicted = {
|
||||||
|
foreground = "#ff9e64";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git_repo = {
|
||||||
|
branch_main = {
|
||||||
|
foreground = "#737aa2";
|
||||||
|
};
|
||||||
|
branch_other = {
|
||||||
|
foreground = "#b4f9f8";
|
||||||
|
};
|
||||||
|
git_clean = {
|
||||||
|
foreground = "#292e42";
|
||||||
|
};
|
||||||
|
git_dirty = {
|
||||||
|
foreground = "#bb9af7";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security_context = {
|
||||||
|
colon = {
|
||||||
|
foreground = "#545c7e";
|
||||||
|
};
|
||||||
|
user = {
|
||||||
|
foreground = "#737aa2";
|
||||||
|
};
|
||||||
|
role = {
|
||||||
|
foreground = "#2ac3de";
|
||||||
|
};
|
||||||
|
typ = {
|
||||||
|
foreground = "#3d59a1";
|
||||||
|
};
|
||||||
|
range = {
|
||||||
|
foreground = "#9d7cd8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
file_type = {
|
||||||
|
image = {
|
||||||
|
foreground = "#89ddff";
|
||||||
|
};
|
||||||
|
video = {
|
||||||
|
foreground = "#b4f9f8";
|
||||||
|
};
|
||||||
|
music = {
|
||||||
|
foreground = "#73daca";
|
||||||
|
};
|
||||||
|
lossless = {
|
||||||
|
foreground = "#41a6b5";
|
||||||
|
};
|
||||||
|
crypto = {
|
||||||
|
foreground = "#db4b4b";
|
||||||
|
};
|
||||||
|
document = {
|
||||||
|
foreground = "#a9b1d6";
|
||||||
|
};
|
||||||
|
compressed = {
|
||||||
|
foreground = "#ff9e64";
|
||||||
|
};
|
||||||
|
temp = {
|
||||||
|
foreground = "#737aa2";
|
||||||
|
};
|
||||||
|
compiled = {
|
||||||
|
foreground = "#737aa2";
|
||||||
|
};
|
||||||
|
build = {
|
||||||
|
foreground = "#1abc9c";
|
||||||
|
};
|
||||||
|
source = {
|
||||||
|
foreground = "#bb9af7";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
punctuation = {
|
||||||
|
foreground = "#292e42";
|
||||||
|
};
|
||||||
|
date = {
|
||||||
|
foreground = "#e0af68";
|
||||||
|
};
|
||||||
|
inode = {
|
||||||
|
foreground = "#737aa2";
|
||||||
|
};
|
||||||
|
blocks = {
|
||||||
|
foreground = "#737aa2";
|
||||||
|
};
|
||||||
|
header = {
|
||||||
|
foreground = "#a9b1d6";
|
||||||
|
};
|
||||||
|
octal = {
|
||||||
|
foreground = "#ff9e64";
|
||||||
|
};
|
||||||
|
flags = {
|
||||||
|
foreground = "#9d7cd8";
|
||||||
|
};
|
||||||
|
|
||||||
|
symlink_path = {
|
||||||
|
foreground = "#89ddff";
|
||||||
|
};
|
||||||
|
control_char = {
|
||||||
|
foreground = "#ff9e64";
|
||||||
|
};
|
||||||
|
broken_symlink = {
|
||||||
|
foreground = "#ff007c";
|
||||||
|
};
|
||||||
|
broken_path_overlay = {
|
||||||
|
foreground = "#ff007c";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
colourful: true
|
||||||
|
|
||||||
|
filekinds:
|
||||||
|
normal: { foreground: "#c0caf5" }
|
||||||
|
directory: { foreground: "#7aa2f7" }
|
||||||
|
symlink: { foreground: "#2ac3de" }
|
||||||
|
pipe: { foreground: "#414868" }
|
||||||
|
block_device: { foreground: "#e0af68" }
|
||||||
|
char_device: { foreground: "#e0af68" }
|
||||||
|
socket: { foreground: "#414868" }
|
||||||
|
special: { foreground: "#9d7cd8" }
|
||||||
|
executable: { foreground: "#9ece6a" }
|
||||||
|
mount_point: { foreground: "#b4f9f8" }
|
||||||
|
|
||||||
|
perms:
|
||||||
|
user_read: { foreground: "#2ac3de" }
|
||||||
|
user_write: { foreground: "#bb9af7" }
|
||||||
|
user_execute_file: { foreground: "#9ece6a" }
|
||||||
|
user_execute_other: { foreground: "#9ece6a" }
|
||||||
|
group_read: { foreground: "#2ac3de" }
|
||||||
|
group_write: { foreground: "#ff9e64" }
|
||||||
|
group_execute: { foreground: "#9ece6a" }
|
||||||
|
other_read: { foreground: "#2ac3de" }
|
||||||
|
other_write: { foreground: "#ff007c" }
|
||||||
|
other_execute: { foreground: "#9ece6a" }
|
||||||
|
special_user_file: { foreground: "#ff007c" }
|
||||||
|
special_other: { foreground: "#db4b4b" }
|
||||||
|
attribute: { foreground: "#737aa2" }
|
||||||
|
|
||||||
|
size:
|
||||||
|
major: { foreground: "#2ac3de" }
|
||||||
|
minor: { foreground: "#9d7cd8" }
|
||||||
|
number_byte: { foreground: "#a9b1d6" }
|
||||||
|
number_kilo: { foreground: "#89ddff" }
|
||||||
|
number_mega: { foreground: "#2ac3de" }
|
||||||
|
number_giga: { foreground: "#ff9e64" }
|
||||||
|
number_huge: { foreground: "#ff007c" }
|
||||||
|
unit_byte: { foreground: "#a9b1d6" }
|
||||||
|
unit_kilo: { foreground: "#89ddff" }
|
||||||
|
unit_mega: { foreground: "#2ac3de" }
|
||||||
|
unit_giga: { foreground: "#ff9e64" }
|
||||||
|
unit_huge: { foreground: "#ff007c" }
|
||||||
|
|
||||||
|
users:
|
||||||
|
user_you: { foreground: "#3d59a1" }
|
||||||
|
user_root: { foreground: "#bb9af7" }
|
||||||
|
user_other: { foreground: "#2ac3de" }
|
||||||
|
group_yours: { foreground: "#89ddff" }
|
||||||
|
group_root: { foreground: "#bb9af7" }
|
||||||
|
group_other: { foreground: "#c0caf5" }
|
||||||
|
|
||||||
|
links:
|
||||||
|
normal: { foreground: "#89ddff" }
|
||||||
|
multi_link_file: { foreground: "#2ac3de" }
|
||||||
|
|
||||||
|
git:
|
||||||
|
new: { foreground: "#9ece6a" }
|
||||||
|
modified: { foreground: "#bb9af7" }
|
||||||
|
deleted: { foreground: "#db4b4b" }
|
||||||
|
renamed: { foreground: "#2ac3de" }
|
||||||
|
typechange: { foreground: "#2ac3de" }
|
||||||
|
ignored: { foreground: "#545c7e" }
|
||||||
|
conflicted: { foreground: "#ff9e64" }
|
||||||
|
|
||||||
|
git_repo:
|
||||||
|
branch_main: { foreground: "#737aa2" }
|
||||||
|
branch_other: { foreground: "#b4f9f8" }
|
||||||
|
git_clean: { foreground: "#292e42" }
|
||||||
|
git_dirty: { foreground: "#bb9af7" }
|
||||||
|
|
||||||
|
security_context:
|
||||||
|
colon: { foreground: "#545c7e" }
|
||||||
|
user: { foreground: "#737aa2" }
|
||||||
|
role: { foreground: "#2ac3de" }
|
||||||
|
typ: { foreground: "#3d59a1" }
|
||||||
|
range: { foreground: "#9d7cd8" }
|
||||||
|
|
||||||
|
file_type:
|
||||||
|
image: { foreground: "#89ddff" }
|
||||||
|
video: { foreground: "#b4f9f8" }
|
||||||
|
music: { foreground: "#73daca" }
|
||||||
|
lossless: { foreground: "#41a6b5" }
|
||||||
|
crypto: { foreground: "#db4b4b" }
|
||||||
|
document: { foreground: "#a9b1d6" }
|
||||||
|
compressed: { foreground: "#ff9e64" }
|
||||||
|
temp: { foreground: "#737aa2" }
|
||||||
|
compiled: { foreground: "#737aa2" }
|
||||||
|
build: { foreground: "#1abc9c" }
|
||||||
|
source: { foreground: "#bb9af7" }
|
||||||
|
|
||||||
|
punctuation: { foreground: "#292e42" }
|
||||||
|
date: { foreground: "#e0af68" }
|
||||||
|
inode: { foreground: "#737aa2" }
|
||||||
|
blocks: { foreground: "#737aa2" }
|
||||||
|
header: { foreground: "#a9b1d6" }
|
||||||
|
octal: { foreground: "#ff9e64" }
|
||||||
|
flags: { foreground: "#9d7cd8" }
|
||||||
|
|
||||||
|
symlink_path: { foreground: "#89ddff" }
|
||||||
|
control_char: { foreground: "#ff9e64" }
|
||||||
|
broken_symlink: { foreground: "#ff007c" }
|
||||||
|
broken_path_overlay: { foreground: "#ff007c" }
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.fastfetch = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
logo = {
|
||||||
|
type = "kitty-direct";
|
||||||
|
source = ./logo.png;
|
||||||
|
width = 20;
|
||||||
|
height = 10;
|
||||||
|
padding = {
|
||||||
|
top = 0;
|
||||||
|
left = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
display = {
|
||||||
|
separator = " ";
|
||||||
|
};
|
||||||
|
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
type = "title";
|
||||||
|
key = "╭─ ->";
|
||||||
|
keyColor = "36";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "os";
|
||||||
|
key = "├─ ->";
|
||||||
|
keyColor = "36";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "kernel";
|
||||||
|
key = "╰─ ->";
|
||||||
|
keyColor = "36";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "shell";
|
||||||
|
key = "╭─ ->";
|
||||||
|
keyColor = "33";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "terminal";
|
||||||
|
key = "├─ ->";
|
||||||
|
keyColor = "33";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "custom";
|
||||||
|
format = "{#yellow}╰─ ->{#} kutu.rb";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "host";
|
||||||
|
key = "╭─ ->";
|
||||||
|
keyColor = "32";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "memory";
|
||||||
|
key = "├─ ->";
|
||||||
|
keyColor = "32";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "packages";
|
||||||
|
key = "╰─ ->";
|
||||||
|
keyColor = "32";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
type = "custom";
|
||||||
|
format = " {#black} {#red} {#green} {#yellow} {#blue} {#magenta} {#cyan} {#white} {#default}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,56 @@
|
|||||||
|
set -gx fish_greeting
|
||||||
|
|
||||||
|
function nix
|
||||||
|
if test "$argv[1]" = "develop"; and test (count $argv) -eq 1
|
||||||
|
command nix develop -c fish $argv[2..-1]
|
||||||
|
else if test "$argv[1]" = "shell"
|
||||||
|
env IN_NIX_SHELL=shell nix $argv -c fish
|
||||||
|
else
|
||||||
|
command nix $argv
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function a
|
||||||
|
for arg in $argv
|
||||||
|
if string match -q '*/' $arg
|
||||||
|
mkdir -p $arg
|
||||||
|
else
|
||||||
|
mkdir -p (dirname $arg)
|
||||||
|
touch $arg
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function g
|
||||||
|
if git rev-parse --git-dir >/dev/null 2>&1
|
||||||
|
gitui
|
||||||
|
else
|
||||||
|
echo "Not inside a Git repository."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function y
|
||||||
|
set tmp (mktemp -t "yazi-cwd.XXXXXX")
|
||||||
|
yazi $argv --cwd-file="$tmp"
|
||||||
|
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||||
|
builtin cd -- "$cwd"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function editor
|
||||||
|
set pos (cat ~/dotfiles/.pos)
|
||||||
|
y $pos
|
||||||
|
if test -e ./p.vim
|
||||||
|
set cmd nvim -S ./p.vim
|
||||||
|
else
|
||||||
|
set cmd nvim
|
||||||
|
end
|
||||||
|
if test -e ./flake.nix
|
||||||
|
and not contains -- "$IN_NIX_SHELL" pure impure
|
||||||
|
and command nix develop --command true 2>/dev/null
|
||||||
|
command nix develop --command $cmd
|
||||||
|
else
|
||||||
|
command $cmd
|
||||||
|
end
|
||||||
|
echo $PWD > ~/dotfiles/.pos
|
||||||
|
end
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
ls = "${pkgs.eza}/bin/eza -TlL 2 --git --no-permissions --no-user --no-time --icons=always --group-directories-first";
|
||||||
|
lss = "${pkgs.eza}/bin/eza -TlL 1 --git --no-permissions --no-user --no-time --icons=always --group-directories-first";
|
||||||
|
lsa = "${pkgs.eza}/bin/eza -TlaL 1 --git --no-permissions --no-user --no-time --icons=always --group-directories-first";
|
||||||
|
sls = "sudo ${pkgs.eza}/bin/eza -TlL 2 --git --no-permissions --no-user --no-time --icons=always --group-directories-first";
|
||||||
|
|
||||||
|
s = "${pkgs.python3}/bin/python3 -m http.server 8080";
|
||||||
|
|
||||||
|
vi = "${pkgs.neovim}/bin/nvim";
|
||||||
|
vim = "${pkgs.neovim}/bin/nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
shellInit = builtins.readFile ./config.fish;
|
||||||
|
interactiveShellInit = builtins.readFile ./interactive.fish;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
if test (tty) = /dev/tty1; and type -q startx; and test -z "$DISPLAY"; and test -z "$WAYLAND_DISPLAY"
|
||||||
|
exec startx
|
||||||
|
end
|
||||||
|
|
||||||
|
if test "$KITTY_STR" = "1"; and not set -q _FASTFETCH_RUN
|
||||||
|
set -gx _FASTFETCH_RUN 1
|
||||||
|
fastfetch
|
||||||
|
end
|
||||||
|
|
||||||
|
function postexec_test --on-event fish_postexec
|
||||||
|
echo
|
||||||
|
end
|
||||||
|
|
||||||
|
set -g fish_prompt_pwd_dir_length 0
|
||||||
|
|
||||||
|
function fish_prompt
|
||||||
|
set -l last_status $status
|
||||||
|
set -l markers
|
||||||
|
set -l user $USER
|
||||||
|
set -l host (hostname)
|
||||||
|
|
||||||
|
printf '\e[24m'
|
||||||
|
|
||||||
|
if test -n "$IN_NIX_SHELL"
|
||||||
|
if test "$IN_NIX_SHELL" = "shell"
|
||||||
|
set -a markers "nix shell"
|
||||||
|
else if test "$IN_NIX_SHELL" = "pure"; or test "$IN_NIX_SHELL" = "impure"
|
||||||
|
set -a markers "nix develop"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -n "$VIRTUAL_ENV"
|
||||||
|
set -a markers "venv:"(basename "$VIRTUAL_ENV")
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -n "$CONDA_DEFAULT_ENV"
|
||||||
|
set -a markers "conda:"$CONDA_DEFAULT_ENV
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -n "$BUN_INSTALL"
|
||||||
|
set -a markers "bun"
|
||||||
|
end
|
||||||
|
|
||||||
|
if test $last_status -ne 0
|
||||||
|
set_color ff007c
|
||||||
|
echo -n "[$last_status] "
|
||||||
|
end
|
||||||
|
|
||||||
|
set_color 7aa2f7
|
||||||
|
echo -n "$user"
|
||||||
|
|
||||||
|
set_color white
|
||||||
|
echo -n "@"
|
||||||
|
|
||||||
|
set_color 9ece6a
|
||||||
|
echo -n "$host "
|
||||||
|
|
||||||
|
set -l pwd
|
||||||
|
|
||||||
|
if git rev-parse --show-toplevel >/dev/null 2>&1
|
||||||
|
set -l root (git rev-parse --show-toplevel)
|
||||||
|
set -l rel (string replace "$root/" "" "$PWD")
|
||||||
|
set pwd (basename "$root")
|
||||||
|
if test "$rel" = "$PWD"
|
||||||
|
set pwd (basename "$root")
|
||||||
|
else
|
||||||
|
set pwd (basename "$root")"/"$rel
|
||||||
|
end
|
||||||
|
else
|
||||||
|
set pwd (prompt_pwd)
|
||||||
|
end
|
||||||
|
|
||||||
|
set_color 89ddff
|
||||||
|
echo -n $pwd
|
||||||
|
|
||||||
|
set -l git_info (git status --porcelain=v2 --branch 2>/dev/null)
|
||||||
|
|
||||||
|
if test $status -eq 0
|
||||||
|
set -l branch
|
||||||
|
set -l ahead 0
|
||||||
|
set -l behind 0
|
||||||
|
set -l staged 0
|
||||||
|
set -l modified 0
|
||||||
|
set -l untracked 0
|
||||||
|
|
||||||
|
for line in $git_info
|
||||||
|
switch $line
|
||||||
|
case '# branch.head*'
|
||||||
|
set branch (string split ' ' $line)[3]
|
||||||
|
|
||||||
|
case '# branch.ab*'
|
||||||
|
set -l parts (string split ' ' $line)
|
||||||
|
set ahead (string sub -s 2 -- $parts[3])
|
||||||
|
set behind (string sub -s 2 -- $parts[4])
|
||||||
|
|
||||||
|
case '1*' '2*'
|
||||||
|
set -l xy (string sub -s 3 -l 2 $line)
|
||||||
|
if test (string sub -s 1 -l 1 $xy) != "."
|
||||||
|
set staged (math $staged + 1)
|
||||||
|
end
|
||||||
|
if test (string sub -s 2 -l 1 $xy) != "."
|
||||||
|
set modified (math $modified + 1)
|
||||||
|
end
|
||||||
|
case '?*'
|
||||||
|
set untracked (math $untracked + 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set_color bb9af7
|
||||||
|
echo -n " [$branch"
|
||||||
|
|
||||||
|
test $ahead -gt 0; and echo -n " ↑$ahead"
|
||||||
|
test $behind -gt 0; and echo -n " ↓$behind"
|
||||||
|
test $staged -gt 0; and echo -n " +$staged"
|
||||||
|
test $modified -gt 0; and echo -n " ~$modified"
|
||||||
|
test $untracked -gt 0; and echo -n " ?$untracked"
|
||||||
|
|
||||||
|
echo -n "]"
|
||||||
|
end
|
||||||
|
|
||||||
|
if test (count $markers) -gt 0
|
||||||
|
set_color ff9e64
|
||||||
|
echo -n " ("(string join " " $markers)")"
|
||||||
|
end
|
||||||
|
|
||||||
|
set_color white
|
||||||
|
|
||||||
|
if test (count (jobs)) -gt 0
|
||||||
|
echo -n " "(count (jobs))
|
||||||
|
end
|
||||||
|
|
||||||
|
if set -q SSH_CONNECTION
|
||||||
|
echo -n " on ssh"
|
||||||
|
end
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
if fish_is_root_user
|
||||||
|
set_color ff007c
|
||||||
|
echo -n "# "
|
||||||
|
else
|
||||||
|
set_color 73daca
|
||||||
|
echo -n "λ "
|
||||||
|
end
|
||||||
|
|
||||||
|
set_color normal
|
||||||
|
end
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.gitui = {
|
||||||
|
enable = true;
|
||||||
|
theme = ./theme.ron;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
(
|
||||||
|
selection_bg: Some("#283457"),
|
||||||
|
selection_fg: Some("#c0caf5"),
|
||||||
|
command_fg: Some("#c0caf5"),
|
||||||
|
diff_line_add: Some("#9ece6a"),
|
||||||
|
diff_line_delete: Some("#f7768e"),
|
||||||
|
diff_file_added: Some("#9ece6a"),
|
||||||
|
diff_file_removed: Some("#f7768e"),
|
||||||
|
diff_file_modified: Some("#e0af68"),
|
||||||
|
diff_file_moved: Some("#bb9af7"),
|
||||||
|
commit_hash: Some("#bb9af7"),
|
||||||
|
commit_time: Some("#7dcfff"),
|
||||||
|
commit_author: Some("#9ece6a"),
|
||||||
|
branch_fg: Some("#e0af68"),
|
||||||
|
tag_fg: Some("#bb9af7"),
|
||||||
|
danger_fg: Some("#f7768e"),
|
||||||
|
use_selection_fg: Some(true),
|
||||||
|
syntax: Some("base16-ocean.dark"),
|
||||||
|
)
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
shellIntegration = {
|
||||||
|
enableFishIntegration = true;
|
||||||
|
mode = "no-cursor";
|
||||||
|
};
|
||||||
|
|
||||||
|
font = {
|
||||||
|
name = "Agave Nerd Font";
|
||||||
|
size = 13;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
KITTY_STR = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
bold_font = "Agave Nerd Font Bold";
|
||||||
|
# italic_font = "Operator Mono Lig";
|
||||||
|
bold_italic_font = "Hurmit Nerd Font Bold";
|
||||||
|
emoji_font_family = "UnifontExMono Regular";
|
||||||
|
|
||||||
|
cursor_shape = "block";
|
||||||
|
cursor_blink_interval = 0;
|
||||||
|
|
||||||
|
underline_position = "+3";
|
||||||
|
underline_thickness = "150%";
|
||||||
|
|
||||||
|
window_margin_width = 8;
|
||||||
|
|
||||||
|
foreground = "#CDD6F4";
|
||||||
|
background = "#080014";
|
||||||
|
selection_foreground = "#080014";
|
||||||
|
selection_background = "#F5E0DC";
|
||||||
|
|
||||||
|
cursor = "#F5E0DC";
|
||||||
|
cursor_text_color = "#080014";
|
||||||
|
|
||||||
|
url_color = "#F5E0DC";
|
||||||
|
|
||||||
|
active_border_color = "#B4BEFE";
|
||||||
|
inactive_border_color = "#6C7086";
|
||||||
|
bell_border_color = "#F9E2AF";
|
||||||
|
|
||||||
|
mark1_foreground = "#080014";
|
||||||
|
mark1_background = "#B4BEFE";
|
||||||
|
mark2_foreground = "#080014";
|
||||||
|
mark2_background = "#CBA6F7";
|
||||||
|
mark3_foreground = "#080014";
|
||||||
|
mark3_background = "#74C7EC";
|
||||||
|
|
||||||
|
color0 = "#1d2434";
|
||||||
|
color1 = "#c22a2a";
|
||||||
|
color2 = "#96c93c";
|
||||||
|
color3 = "#f1b950";
|
||||||
|
color4 = "#547eaa";
|
||||||
|
color5 = "#674099";
|
||||||
|
color6 = "#94E2D5";
|
||||||
|
color7 = "#BAC2DE";
|
||||||
|
|
||||||
|
color8 = "#44496f";
|
||||||
|
color9 = "#c22a2a";
|
||||||
|
color10 = "#96c93c";
|
||||||
|
color11 = "#f1b950";
|
||||||
|
color12 = "#547eaa";
|
||||||
|
color13 = "#674099";
|
||||||
|
color14 = "#94E2D5";
|
||||||
|
color15 = "#A6ADC8";
|
||||||
|
|
||||||
|
background_opacity = "0.8";
|
||||||
|
|
||||||
|
confirm_os_window_close = 0;
|
||||||
|
|
||||||
|
clipboard_control = "write-clipboard write-primary read-clipboard read-primary";
|
||||||
|
|
||||||
|
shell = "${pkgs.fish}/bin/fish";
|
||||||
|
};
|
||||||
|
|
||||||
|
keybindings = {
|
||||||
|
"ctrl+click" = "open_link";
|
||||||
|
"ctrl+shift+click" = "open_link";
|
||||||
|
"ctrl+backspace" = "send_text all \\x17";
|
||||||
|
"ctrl+delete" = "send_text all \\x1b[1;53";
|
||||||
|
"ctrl+]" = "send_text all \\x10";
|
||||||
|
"ctrl+[" = "send_text all \\x0f";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
run "bash @src@/startup.sh"
|
||||||
|
|
||||||
|
bind_key 23, true, "firefox"
|
||||||
|
bind_key 24, true, :kill_window
|
||||||
|
bind_key 25, true, "kitty"
|
||||||
|
bind_key 26, true, "bash @src@/power.sh"
|
||||||
|
|
||||||
|
bind_key 123, false, %q(
|
||||||
|
pactl set-sink-volume @DEFAULT_SINK@ +5%;
|
||||||
|
vol=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1);
|
||||||
|
dunstify "Volume Adjusted" "" -h int:value:$vol -r 997
|
||||||
|
)
|
||||||
|
|
||||||
|
bind_key 122, false, %q(
|
||||||
|
pactl set-sink-volume @DEFAULT_SINK@ -5%;
|
||||||
|
vol=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1);
|
||||||
|
dunstify "Volume Adjusted" "" -h int:value:$vol -r 997
|
||||||
|
)
|
||||||
|
|
||||||
|
bind_key 121, false, %q(
|
||||||
|
pactl set-sink-mute @DEFAULT_SINK@ toggle;
|
||||||
|
vol=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1);
|
||||||
|
dunstify "Volume Adjusted" "" -h int:value:$vol -r 997
|
||||||
|
)
|
||||||
|
|
||||||
|
bind_key 38, true, %Q(
|
||||||
|
maim -c 0.3,0.5,1.0,0.8 -s | tee /tmp/screenshot_temp.png | xclip -selection clipboard -t image/png;
|
||||||
|
if [ -s '/tmp/screenshot_temp.png' ]; then
|
||||||
|
mv /tmp/screenshot_temp.png ~/screenshots/$(date +%Y-%m-%d_%H:%M:%S).png;
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
|
||||||
|
bind_key 232, false, %q(
|
||||||
|
brightnessctl set 5%-;
|
||||||
|
pct=$(brightnessctl -m | cut -d, -f4 | tr -d ' %');
|
||||||
|
dunstify "Brightness" "" -h int:value:$pct -r 998
|
||||||
|
)
|
||||||
|
|
||||||
|
bind_key 233, false, %q(
|
||||||
|
brightnessctl set 5%+;
|
||||||
|
pct=$(brightnessctl -m | cut -d, -f4 | tr -d ' %');
|
||||||
|
dunstify "Brightness" "" -h int:value:$pct -r 998
|
||||||
|
)
|
||||||
|
|
||||||
|
bind_key 54, true, 'kitty -e fish -c "y"'
|
||||||
|
bind_key 53, true, 'kitty -e fish -c "editor"'
|
||||||
|
bind_key 41, true, 'kitty -e fish -c "btop"'
|
||||||
|
|
||||||
|
bind_key 40, true, "bash @src@/run.sh"
|
||||||
|
|
||||||
|
bind_key 56, true, :add_workspace
|
||||||
|
bind_key 57, true, :delete_workspace
|
||||||
|
|
||||||
|
bind_key 110, false, %q(
|
||||||
|
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify \
|
||||||
|
/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause;
|
||||||
|
dbus-send --print-reply --dest=$(busctl --user list | grep -oP 'org.mpris.MediaPlayer2.firefox.instance_1_\d+') \
|
||||||
|
/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
|
||||||
|
)
|
||||||
|
|
||||||
|
bind_key 173, true,
|
||||||
|
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous"
|
||||||
|
|
||||||
|
bind_key 171, true,
|
||||||
|
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next"
|
||||||
|
|
||||||
|
bind_key 89, true, :toggle_scratchpad
|
||||||
|
|
||||||
|
bind_key 81, true, :toggle_move_scratchpad
|
||||||
|
|
||||||
|
bind_key 118, false,
|
||||||
|
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause"
|
||||||
|
|
||||||
|
bind_key 86, false, :workspace_next
|
||||||
|
bind_key 86, true, :move_window_next_workspace
|
||||||
|
|
||||||
|
bind_key 82, false, :workspace_previous
|
||||||
|
bind_key 82, true, :move_window_previous_workspace
|
||||||
|
|
||||||
|
bind_key 10, true, "setxkbmap us"
|
||||||
|
bind_key 11, true, "setxkbmap ara"
|
||||||
|
|
||||||
|
bind_key 55, true, "CM_LAUNCHER=rofi clipmenu"
|
||||||
|
|
||||||
|
bind_key 39, true, :toggle_floating
|
||||||
|
|
||||||
|
bind_mouse 8, false, :workspace_next
|
||||||
|
bind_mouse 8, true, :move_window_next_workspace
|
||||||
|
|
||||||
|
bind_mouse 9, false, :workspace_previous
|
||||||
|
bind_mouse 9, true, :move_window_previous_workspace
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
script = pkgs.substitute {
|
||||||
|
src = ./config.rb;
|
||||||
|
substitutions = [
|
||||||
|
"--replace-fail"
|
||||||
|
"@src@"
|
||||||
|
"${./scripts}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.file.".config/kutu/config.rb".source = script;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [[ "$(xset q | awk '/timeout:/ {print $2}')" == "0" ]]; then
|
||||||
|
xset s on
|
||||||
|
xset +dpms
|
||||||
|
else
|
||||||
|
xset s off
|
||||||
|
xset -dpms
|
||||||
|
fi
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
opts=" Lock
|
||||||
|
Suspend
|
||||||
|
Shutdown
|
||||||
|
Reboot
|
||||||
|
Hibernate
|
||||||
|
Stop KutuWM"
|
||||||
|
|
||||||
|
sel=$(printf "%s\n" "$opts" | dmenu -i -p "Select Power Option:" \
|
||||||
|
-nf '#e0af68' -nb '#1f2335' -sb '#f7768e' -sf '#1a1b26' -fn 'AgaveNerdFont-16')
|
||||||
|
|
||||||
|
[ -z "$sel" ] && exit 0
|
||||||
|
|
||||||
|
case "$sel" in
|
||||||
|
*Shutdown*)
|
||||||
|
confirm=$(printf "No\nYes" | dmenu -i -p "Are you sure you want to shutdown? :" \
|
||||||
|
-nf '#e0af68' -nb '#1f2335' -sb '#f7768e' -sf '#1a1b26' -fn 'AgaveNerdFont-16')
|
||||||
|
[ "$confirm" = "Yes" ] && exec shutdown -h now
|
||||||
|
;;
|
||||||
|
*Reboot*)
|
||||||
|
confirm=$(printf "No\nYes" | dmenu -i -p "Are you sure you want to reboot? :" \
|
||||||
|
-nf '#e0af68' -nb '#1f2335' -sb '#f7768e' -sf '#1a1b26' -fn 'HurmitNerdFont-16')
|
||||||
|
[ "$confirm" = "Yes" ] && exec reboot
|
||||||
|
;;
|
||||||
|
*Hibernate*)
|
||||||
|
confirm=$(printf "No\nYes" | dmenu -i -p "Are you sure you want to hibernate? :" \
|
||||||
|
-nf '#e0af68' -nb '#1f2335' -sb '#f7768e' -sf '#1a1b26' -fn 'AgaveNerdFont-16')
|
||||||
|
[ "$confirm" = "Yes" ] && exec systemctl --system hibernate
|
||||||
|
;;
|
||||||
|
*Stop\ KutuWM*)
|
||||||
|
exec kutu-run.rb stop
|
||||||
|
;;
|
||||||
|
*Suspend*)
|
||||||
|
exec systemctl --system suspend
|
||||||
|
;;
|
||||||
|
*Lock*)
|
||||||
|
~/dotfiles/scripts/lock.sh &
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
declare -A aliases=(
|
||||||
|
[prism]="nvidia-offload prismlauncher"
|
||||||
|
[editor]="kitty -e fish -c editor"
|
||||||
|
[yazi]="kitty -e fish -c yazi"
|
||||||
|
[btop]="kitty -e fish -c btop"
|
||||||
|
)
|
||||||
|
|
||||||
|
choice=$(
|
||||||
|
{
|
||||||
|
printf '%s\n' "${!aliases[@]}"
|
||||||
|
compgen -c
|
||||||
|
} |
|
||||||
|
grep -v -E '^(\..*|if|fi|case|esac|for|done|while|until|select|function|return|continue|break|time|exec|source|alias|builtin|read|export|unset|local|set|declare|typeset|:|\.|\[|coproc|l|ll|ls|then|else|elif|do|in|\{|\}|!|\[\[|\]\]|_.*|compgen)$' |
|
||||||
|
sort -u |
|
||||||
|
dmenu -i -p "Enter command " \
|
||||||
|
-nf '#4abaaf' -nb '#1f2335' -sb '#7aa2f7' -sf '#102030' -fn 'AgaveNerdFont-16'
|
||||||
|
)
|
||||||
|
|
||||||
|
[ -z "$choice" ] && exit 0
|
||||||
|
|
||||||
|
if [[ -v "aliases[$choice]" ]]; then
|
||||||
|
eval "${aliases[$choice]}" >/dev/null 2>&1 &
|
||||||
|
else
|
||||||
|
"$choice" >/dev/null 2>&1 &
|
||||||
|
fi
|
||||||
|
|
||||||
|
disown
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
xset s off
|
||||||
|
xset -dpms
|
||||||
|
|
||||||
|
xsetroot -cursor_name left_ptr
|
||||||
|
|
||||||
|
setxkbmap us
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
gitsigns-nvim
|
||||||
|
mini-pairs
|
||||||
|
mini-surround
|
||||||
|
rainbow-delimiters-nvim
|
||||||
|
neo-tree-nvim
|
||||||
|
lualine-nvim
|
||||||
|
nvim-cursorline
|
||||||
|
conform-nvim
|
||||||
|
nvim-cmp
|
||||||
|
neoscroll-nvim
|
||||||
|
nvim-web-devicons
|
||||||
|
plenary-nvim
|
||||||
|
nui-nvim
|
||||||
|
tokyonight-nvim
|
||||||
|
cmp-nvim-lsp
|
||||||
|
nvim-lspconfig
|
||||||
|
|
||||||
|
(pkgs.vimUtils.buildVimPlugin {
|
||||||
|
name = "PicVim";
|
||||||
|
src = fetchGit {
|
||||||
|
url = "https://github.com/SyedM-dev/PicVim";
|
||||||
|
rev = "5114853ed8f24661e48b726135bf78860d9339d5";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(nvim-treesitter.withPlugins (p: [
|
||||||
|
p.c
|
||||||
|
p.nix
|
||||||
|
p.ruby
|
||||||
|
p.lua
|
||||||
|
p.cpp
|
||||||
|
]))
|
||||||
|
];
|
||||||
|
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
nixd
|
||||||
|
nixfmt
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".config/nvim".source = ./.;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
require("formatting")
|
||||||
|
require("extra")
|
||||||
|
require("keymaps")
|
||||||
|
require("lsp")
|
||||||
|
require("options")
|
||||||
|
require("plugins")
|
||||||
|
|
||||||
|
if vim.env.SSH_CONNECTION or vim.env.SSH_TTY then
|
||||||
|
vim.g.clipboard = "osc52"
|
||||||
|
end
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
-- Vimscript
|
||||||
|
vim.cmd([[
|
||||||
|
aunmenu PopUp
|
||||||
|
colorscheme tokyonight-night
|
||||||
|
]])
|
||||||
|
|
||||||
|
-- AutoCMD's
|
||||||
|
local autocmd = vim.api.nvim_create_autocmd
|
||||||
|
|
||||||
|
autocmd("CursorHold", {
|
||||||
|
callback = function()
|
||||||
|
vim.diagnostic.open_float(nil, {
|
||||||
|
focusable = false,
|
||||||
|
border = "rounded",
|
||||||
|
source = "if_many",
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("VimLeavePre", {
|
||||||
|
callback = function()
|
||||||
|
if vim.fn.filereadable("p.vim") == 1 then
|
||||||
|
vim.cmd([[
|
||||||
|
Neotree close
|
||||||
|
mksession! p.vim
|
||||||
|
echo "saved session"
|
||||||
|
]])
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
require("conform").setup({
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = { "stylua" },
|
||||||
|
nix = { "nixfmt" },
|
||||||
|
},
|
||||||
|
|
||||||
|
format_on_save = {
|
||||||
|
timeout_ms = 500,
|
||||||
|
lsp_fallback = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
-- Keymaps
|
||||||
|
local map = vim.keymap.set
|
||||||
|
map({ "n", "i", "v" }, "<C-s>", "<cmd>w<CR>")
|
||||||
|
map("n", ";", ":")
|
||||||
|
map("n", "<A-Up>", ":move-2<CR>")
|
||||||
|
map("n", "<A-Down>", ":move+1<CR>")
|
||||||
|
map("x", "<A-Up>", ":move '<-2<CR>gv")
|
||||||
|
map("x", "<A-Down>", ":move '>+1<CR>gv")
|
||||||
|
map("i", "<A-Up>", "<C-o>:move-2<CR>")
|
||||||
|
map("i", "<A-Down>", "<C-o>:move+1<CR>")
|
||||||
|
map("n", ">", ">>")
|
||||||
|
map("v", ">", ">gv")
|
||||||
|
map("n", "<", "<<")
|
||||||
|
map("v", "<", "<gv")
|
||||||
|
map("n", ".", ">>")
|
||||||
|
map("v", ".", ">gv")
|
||||||
|
map("n", ",", "<<")
|
||||||
|
map("v", ",", "<gv")
|
||||||
|
map("n", "<Esc>", "<cmd>nohlsearch<CR><Esc>")
|
||||||
|
map("n", "u", "ggVG")
|
||||||
|
map("n", "z", "<cmd>u<CR>")
|
||||||
|
map("n", "d", "<cmd>red<CR>")
|
||||||
|
map("n", "q", "<cmd>Neotree<CR>")
|
||||||
|
map("n", "<A-a>", "<cmd>Minuet virtualtext toggle<CR>")
|
||||||
|
map("v", "p", "P")
|
||||||
|
|
||||||
|
map("n", "\\", function()
|
||||||
|
vim.cmd([[
|
||||||
|
Neotree close
|
||||||
|
mksession! p.vim
|
||||||
|
echo "saved session"
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
|
||||||
|
local neoscroll = require("neoscroll")
|
||||||
|
map("n", "<ScrollWheelUp>", function()
|
||||||
|
neoscroll.scroll(-0.05, { move_cursor = false, duration = 20 })
|
||||||
|
end)
|
||||||
|
map("n", "<ScrollWheelDown>", function()
|
||||||
|
neoscroll.scroll(0.05, { move_cursor = false, duration = 20 })
|
||||||
|
end)
|
||||||
|
map("n", "<C-Up>", function()
|
||||||
|
neoscroll.scroll(-0.1, { move_cursor = false, duration = 50 })
|
||||||
|
end)
|
||||||
|
map("n", "<C-Down>", function()
|
||||||
|
neoscroll.scroll(0.1, { move_cursor = false, duration = 50 })
|
||||||
|
end)
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
-- LSP config
|
||||||
|
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||||
|
|
||||||
|
vim.lsp.config("lua_ls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = { globals = { "vim" } },
|
||||||
|
workspace = { library = vim.api.nvim_get_runtime_file("", true) },
|
||||||
|
telemetry = { enable = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
local servers = { "clangd", "solargraph", "hls", "nixd" }
|
||||||
|
|
||||||
|
for _, server in ipairs(servers) do
|
||||||
|
vim.lsp.config(server, { capabilities = capabilities })
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.list_extend(servers, { "lua_ls" })
|
||||||
|
|
||||||
|
vim.lsp.enable(servers)
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
-- Options
|
||||||
|
local o = vim.opt
|
||||||
|
local g = vim.g
|
||||||
|
g.mapleader = " "
|
||||||
|
g.loaded_perl_provider = 0
|
||||||
|
g.loaded_ruby_provider = 0
|
||||||
|
o.number = true
|
||||||
|
o.winborder = "rounded"
|
||||||
|
o.expandtab = true
|
||||||
|
o.shiftwidth = 2
|
||||||
|
o.tabstop = 4
|
||||||
|
o.softtabstop = 4
|
||||||
|
o.completeopt = { "menuone", "noselect", "noinsert" }
|
||||||
|
o.updatetime = 100
|
||||||
|
o.timeoutlen = 300
|
||||||
|
o.clipboard = "unnamedplus"
|
||||||
|
o.foldenable = false
|
||||||
|
o.list = true
|
||||||
|
o.listchars = {
|
||||||
|
tab = "→ ",
|
||||||
|
eol = " ",
|
||||||
|
space = " ",
|
||||||
|
nbsp = "␣",
|
||||||
|
trail = "·",
|
||||||
|
lead = "·",
|
||||||
|
}
|
||||||
|
o.scroll = 5
|
||||||
|
o.smoothscroll = true
|
||||||
|
o.termguicolors = true
|
||||||
|
o.laststatus = 3
|
||||||
|
o.mousescroll = "ver:0,hor:0"
|
||||||
|
|
||||||
|
vim.lsp.semantic_tokens.enable = false
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
float = {
|
||||||
|
border = "rounded",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.g.rainbow_delimiters = {
|
||||||
|
highlight = {
|
||||||
|
"RainbowDelimiterYellow",
|
||||||
|
"RainbowDelimiterBlue",
|
||||||
|
"RainbowDelimiterOrange",
|
||||||
|
"RainbowDelimiterGreen",
|
||||||
|
"RainbowDelimiterViolet",
|
||||||
|
"RainbowDelimiterCyan",
|
||||||
|
"RainbowDelimiterRed",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = true,
|
||||||
|
signs = {
|
||||||
|
text = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = " ",
|
||||||
|
[vim.diagnostic.severity.WARN] = " ",
|
||||||
|
[vim.diagnostic.severity.INFO] = " ",
|
||||||
|
[vim.diagnostic.severity.HINT] = " ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
underline = true,
|
||||||
|
update_in_insert = true,
|
||||||
|
severity_sort = true,
|
||||||
|
})
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
-- Plugins
|
||||||
|
require("picvim").setup({})
|
||||||
|
|
||||||
|
require("gitsigns").setup({})
|
||||||
|
|
||||||
|
require("mini.pairs").setup({})
|
||||||
|
|
||||||
|
require("mini.surround").setup({
|
||||||
|
mappings = {
|
||||||
|
add = "s",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("rainbow-delimiters.setup").setup({})
|
||||||
|
|
||||||
|
require("neo-tree").setup({
|
||||||
|
filesystem = {
|
||||||
|
filtered_items = {
|
||||||
|
visible = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("lualine").setup({
|
||||||
|
options = {
|
||||||
|
theme = "auto",
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_b = {
|
||||||
|
{ "branch" },
|
||||||
|
{
|
||||||
|
"diff",
|
||||||
|
symbols = {
|
||||||
|
added = " ",
|
||||||
|
modified = " ",
|
||||||
|
removed = " ",
|
||||||
|
},
|
||||||
|
diff_color = {
|
||||||
|
added = { fg = "#a6e3a1" },
|
||||||
|
modified = { fg = "#f9e2af" },
|
||||||
|
removed = { fg = "#f38ca8" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("nvim-cursorline").setup({
|
||||||
|
cursorline = {
|
||||||
|
enable = true,
|
||||||
|
timeout = 0,
|
||||||
|
number = false,
|
||||||
|
},
|
||||||
|
cursorword = {
|
||||||
|
enable = true,
|
||||||
|
min_length = 1,
|
||||||
|
hl = {
|
||||||
|
underline = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
local cmp = require("cmp")
|
||||||
|
cmp.setup({
|
||||||
|
window = {
|
||||||
|
completion = cmp.config.window.bordered({
|
||||||
|
border = "rounded",
|
||||||
|
}),
|
||||||
|
documentation = cmp.config.window.bordered({
|
||||||
|
border = "rounded",
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
["<CR>"] = cmp.mapping.confirm({
|
||||||
|
select = true,
|
||||||
|
}),
|
||||||
|
["<Tab>"] = cmp.mapping.select_next_item(),
|
||||||
|
["<S-Tab>"] = cmp.mapping.select_prev_item(),
|
||||||
|
}),
|
||||||
|
sources = {
|
||||||
|
{
|
||||||
|
name = "nvim_lsp",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "clangd",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("neoscroll").setup({
|
||||||
|
mappings = {
|
||||||
|
"<C-u>",
|
||||||
|
"<C-d>",
|
||||||
|
"<C-b>",
|
||||||
|
"<C-f>",
|
||||||
|
"<C-y>",
|
||||||
|
"<C-e>",
|
||||||
|
"zt",
|
||||||
|
"zz",
|
||||||
|
"zb",
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.picom = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
fading = true;
|
||||||
|
vsync = true;
|
||||||
|
backend = "glx";
|
||||||
|
|
||||||
|
fade-delta = 4;
|
||||||
|
inactive-opacity = 0.9;
|
||||||
|
|
||||||
|
corner-radius = 7.0;
|
||||||
|
round-borders = 1;
|
||||||
|
|
||||||
|
blur-method = "gaussian";
|
||||||
|
blur-size = 7;
|
||||||
|
blur-deviation = 3;
|
||||||
|
|
||||||
|
opacity-rule = [
|
||||||
|
"100:class_g = 'Polybar'"
|
||||||
|
];
|
||||||
|
|
||||||
|
corner-radius-exclude = [
|
||||||
|
"class_g = 'Dunst'"
|
||||||
|
"class_i = 'Dunst'"
|
||||||
|
"name = 'Dunst'"
|
||||||
|
"class_i = 'dmenu'"
|
||||||
|
"class_g = 'dmenu'"
|
||||||
|
"name - 'dmenu'"
|
||||||
|
];
|
||||||
|
|
||||||
|
blur-background-exclude = [
|
||||||
|
"class_g ~= 'slop'"
|
||||||
|
"class_i ~= 'slop'"
|
||||||
|
"name ~= 'slop'"
|
||||||
|
"window_type = 'menu'"
|
||||||
|
"window_type = 'tooltip'"
|
||||||
|
"role = 'xborder'"
|
||||||
|
"window_type = 'popup_menu'"
|
||||||
|
"window_type = 'dropdown_menu'"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
theme = ./tokyonight-mid.rasi;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
* {
|
||||||
|
font: "Agave Nerd Font 14";
|
||||||
|
|
||||||
|
bg0 : #1a1b26;
|
||||||
|
bg1 : #414868A0;
|
||||||
|
bg2 : #1f2335A0;
|
||||||
|
bg3 : #1a1b26A0;
|
||||||
|
fg0 : #ffffff;
|
||||||
|
fg1 : #a9b1d6;
|
||||||
|
fg2 : #737aa2;
|
||||||
|
red : #f7768e;
|
||||||
|
green : #9ece6a;
|
||||||
|
yellow : #e0af68;
|
||||||
|
blue : #7aa2f7;
|
||||||
|
magenta : #9a7ecc;
|
||||||
|
cyan : #4abaaf;
|
||||||
|
|
||||||
|
accent: @blue;
|
||||||
|
urgent: @yellow;
|
||||||
|
|
||||||
|
background-color : transparent;
|
||||||
|
text-color : @fg0;
|
||||||
|
|
||||||
|
margin : 0;
|
||||||
|
padding : 0;
|
||||||
|
spacing : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-icon, element-text, scrollbar {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
transparency: "real";
|
||||||
|
location : center;
|
||||||
|
width : 750px;
|
||||||
|
height : 320px;
|
||||||
|
background-color: @bg2;
|
||||||
|
border: 1px;
|
||||||
|
border-color: @cyan;
|
||||||
|
border-radius: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputbar {
|
||||||
|
spacing : 8px;
|
||||||
|
padding : 4px 8px;
|
||||||
|
background-color : @bg3;
|
||||||
|
children : [ textbox-prompt, entry ];
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
placeholder : "Search...";
|
||||||
|
placeholder-color : @fg2;
|
||||||
|
color : @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox-prompt, entry, element-icon, element-text {
|
||||||
|
vertical-align: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox-prompt {
|
||||||
|
expand : false;
|
||||||
|
str : " ";
|
||||||
|
text-color : @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox {
|
||||||
|
padding : 4px 8px;
|
||||||
|
background-color : @bg0;
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
padding : 4px 0px;
|
||||||
|
lines : 12;
|
||||||
|
columns : 1;
|
||||||
|
scrollbar : true;
|
||||||
|
fixed-height : false;
|
||||||
|
dynamic : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
element {
|
||||||
|
padding : 4px 8px;
|
||||||
|
spacing : 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal urgent {
|
||||||
|
text-color: @urgent;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal active {
|
||||||
|
text-color: @accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
element alternate active {
|
||||||
|
text-color: @accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected {
|
||||||
|
text-color : @bg0;
|
||||||
|
background-color : @accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected urgent {
|
||||||
|
background-color: @urgent;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-icon {
|
||||||
|
size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-text {
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollbar {
|
||||||
|
handle-width : 4px;
|
||||||
|
handle-color : @fg2;
|
||||||
|
padding : 0 4px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./fish
|
||||||
|
./eza
|
||||||
|
];
|
||||||
|
|
||||||
|
home.username = "root";
|
||||||
|
home.homeDirectory = "/root";
|
||||||
|
|
||||||
|
home.stateVersion = "26.05";
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./battery
|
||||||
|
./dunst
|
||||||
|
./kitty
|
||||||
|
./kutu
|
||||||
|
./picom
|
||||||
|
./rofi
|
||||||
|
];
|
||||||
|
|
||||||
|
xsession = {
|
||||||
|
enable = true;
|
||||||
|
windowManager.command = "kutu.rb";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".xinitrc".text = ''
|
||||||
|
if [ -f ~/.xsession ]; then
|
||||||
|
exec ~/.xsession
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
tkn-repo = pkgs.fetchFromGitHub {
|
||||||
|
owner = "BennyOe";
|
||||||
|
repo = "tokyo-night.yazi";
|
||||||
|
rev = "8e6296f14daff24151c736ebd0b9b6cd89b02b03";
|
||||||
|
hash = "sha256-LArhRteD7OQRBguV1n13gb5jkl90sOxShkDzgEf3PA0=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
shellWrapperName = "y";
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
manager = {
|
||||||
|
show_hidden = true;
|
||||||
|
};
|
||||||
|
preview = {
|
||||||
|
max_width = 1000;
|
||||||
|
max_height = 1000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
full-border = pkgs.yaziPlugins.full-border;
|
||||||
|
git = pkgs.yaziPlugins.git;
|
||||||
|
};
|
||||||
|
|
||||||
|
flavors = {
|
||||||
|
tokyo-night = tkn-repo;
|
||||||
|
};
|
||||||
|
|
||||||
|
theme.flavor = {
|
||||||
|
dark = "tokyo-night";
|
||||||
|
light = "tokyo-night";
|
||||||
|
};
|
||||||
|
|
||||||
|
initLua = ''
|
||||||
|
require("full-border"):setup()
|
||||||
|
require("git"):setup {
|
||||||
|
order = 1500,
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../modules/secrets
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.resumeDevice =
|
||||||
|
if config.swapDevices != [ ] then (builtins.head config.swapDevices).device else null;
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.systemd-boot.consoleMode = "max";
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
programs.fish.enable = true;
|
||||||
|
programs.tmux.enable = true;
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Europe/London";
|
||||||
|
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
console = {
|
||||||
|
font = "Lat2-Terminus16";
|
||||||
|
useXkbConfig = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.root.shell = pkgs.fish;
|
||||||
|
|
||||||
|
users.users.me = {
|
||||||
|
isNormalUser = true;
|
||||||
|
shell = pkgs.fish;
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"video"
|
||||||
|
"networkmanager"
|
||||||
|
"input"
|
||||||
|
];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPFh01e9doyInt0980V8T4xaakcSaOyXaxxYE4+oSwM me@syedm # server"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV me@tardis # msi laptop"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC13WMc8GJE3lB1YJ6MtYW7PLqfT9H0uGz76pQBDxIzz me@might # mobile"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
security.sudo.wheelNeedsPassword = false;
|
||||||
|
|
||||||
|
services.getty = {
|
||||||
|
autologinUser = "me";
|
||||||
|
autologinOnce = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
neovim
|
||||||
|
gitui
|
||||||
|
libinput
|
||||||
|
gnupg
|
||||||
|
age
|
||||||
|
bind
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
unzip
|
||||||
|
git
|
||||||
|
];
|
||||||
|
|
||||||
|
# DO NOT CHNAGE, EVER!
|
||||||
|
system.stateVersion = "26.05";
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
|
||||||
|
../../modules/cloudflare-ddns
|
||||||
|
../../modules/gitea
|
||||||
|
../../modules/msjd
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.hostName = "syedm";
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.caddy = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts."syedm.dev".extraConfig = ''
|
||||||
|
respond "Hello, world!"
|
||||||
|
'';
|
||||||
|
virtualHosts."git.syedm.dev".extraConfig = ''
|
||||||
|
reverse_proxy localhost:3000
|
||||||
|
'';
|
||||||
|
virtualHosts."acs.syedm.dev".extraConfig = ''
|
||||||
|
reverse_proxy localhost:3709
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
tempAddresses = "disabled";
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [
|
||||||
|
22
|
||||||
|
80
|
||||||
|
443
|
||||||
|
];
|
||||||
|
allowedUDPPorts = [ ];
|
||||||
|
allowPing = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"nvme"
|
||||||
|
"usb_storage"
|
||||||
|
"sd_mod"
|
||||||
|
"sdhci_pci"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/c5fedde6-79d4-4a44-92e4-2aa764553875";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/510C-E000";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [
|
||||||
|
"fmask=0077"
|
||||||
|
"dmask=0077"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{ device = "/dev/disk/by-uuid/712d25ef-146d-4c66-b6d4-1b64491a974e"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
kutu,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
|
||||||
|
../../modules/ollama
|
||||||
|
../../modules/workstation/graphics.nix
|
||||||
|
../../modules/workstation/audio.nix
|
||||||
|
../../modules/workstation/xserver.nix
|
||||||
|
../../modules/workstation/keyd.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = lib.mkAfter (
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
firefox
|
||||||
|
xdg-utils
|
||||||
|
dmenu
|
||||||
|
pulseaudio
|
||||||
|
brightnessctl
|
||||||
|
maim
|
||||||
|
xclip
|
||||||
|
xsel
|
||||||
|
lunar-client
|
||||||
|
jdk21
|
||||||
|
spotify
|
||||||
|
|
||||||
|
kutu.packages.${stdenv.hostPlatform.system}.default
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
nerd-fonts.hurmit
|
||||||
|
nerd-fonts.agave
|
||||||
|
unifont
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.steam.enable = true;
|
||||||
|
|
||||||
|
networking.hostName = "tardis";
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"xhci_pci"
|
||||||
|
"vmd"
|
||||||
|
"nvme"
|
||||||
|
];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/29a53eeb-befc-4512-9255-e1c5f1cf55ae";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/0951-B8D1";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [
|
||||||
|
"fmask=0077"
|
||||||
|
"dmask=0077"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{ device = "/dev/disk/by-uuid/659310da-4655-461e-a992-6e62d7a0362d"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
#!@bash@/bin/bash
|
||||||
|
|
||||||
|
source /run/secrets.env
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') [cloudflare-ddns] $*"
|
||||||
|
}
|
||||||
|
|
||||||
|
log "Starting DDNS update"
|
||||||
|
|
||||||
|
cache_v4=/var/lib/cloudflare-ddns/old_ip_v4
|
||||||
|
cache_v6=/var/lib/cloudflare-ddns/old_ip_v6
|
||||||
|
|
||||||
|
IP_V4=$(@curl@/bin/curl -4 -s 'https://api.ipify.org')
|
||||||
|
IP_V6=$(@curl@/bin/curl -6 -s 'https://api6.ipify.org')
|
||||||
|
|
||||||
|
log "Detected IPv4: ${IP_V4:-none}"
|
||||||
|
log "Detected IPv6: ${IP_V6:-none}"
|
||||||
|
|
||||||
|
arr=("" "git." "www." "acs.")
|
||||||
|
|
||||||
|
if [[ -n "$IP_V4" ]]; then
|
||||||
|
old_ip_v4=$([[ -f "$cache_v4" ]] && cat "$cache_v4" || echo "")
|
||||||
|
|
||||||
|
log "Old IPv4: ${old_ip_v4:-none}"
|
||||||
|
|
||||||
|
if [[ "$IP_V4" != "$old_ip_v4" ]]; then
|
||||||
|
log "IPv4 changed, updating A records"
|
||||||
|
|
||||||
|
for sub in "${arr[@]}"; do
|
||||||
|
name="${sub}syedm.dev"
|
||||||
|
|
||||||
|
log "Checking A record for $name"
|
||||||
|
|
||||||
|
RECORD_ID=$(@curl@/bin/curl -s -X GET \
|
||||||
|
"https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
|
||||||
|
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
|
||||||
|
-H "Content-Type: application/json" | @jq@/bin/jq \
|
||||||
|
-r ".result[] | select(.name==\"${name}\" and .type==\"A\") | .id")
|
||||||
|
|
||||||
|
if [ -n "$RECORD_ID" ]; then
|
||||||
|
log "Updating $name -> $IP_V4"
|
||||||
|
|
||||||
|
@curl@/bin/curl -s -X PUT \
|
||||||
|
"https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
|
||||||
|
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{\"type\":\"A\",\"name\":\"$name\",\"content\":\"$IP_V4\",\"ttl\":3600,\"proxied\":false}"
|
||||||
|
|
||||||
|
log "Updated $name"
|
||||||
|
else
|
||||||
|
log "No A record found for $name"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "$IP_V4" > "$cache_v4"
|
||||||
|
else
|
||||||
|
log "IPv4 unchanged"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$IP_V6" ]]; then
|
||||||
|
old_ip_v6=$([[ -f "$cache_v6" ]] && cat "$cache_v6" || echo "")
|
||||||
|
|
||||||
|
log "Old IPv6: ${old_ip_v6:-none}"
|
||||||
|
|
||||||
|
if [[ "$IP_V6" != "$old_ip_v6" ]]; then
|
||||||
|
log "IPv6 changed, updating AAAA records"
|
||||||
|
|
||||||
|
for sub in "${arr[@]}"; do
|
||||||
|
name="${sub}syedm.dev"
|
||||||
|
|
||||||
|
log "Checking AAAA record for $name"
|
||||||
|
|
||||||
|
RECORD_ID=$(@curl@/bin/curl -s -X GET \
|
||||||
|
"https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
|
||||||
|
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
|
||||||
|
-H "Content-Type: application/json" | @jq@/bin/jq \
|
||||||
|
-r ".result[] | select(.name==\"${name}\" and .type==\"AAAA\") | .id")
|
||||||
|
|
||||||
|
if [ -n "$RECORD_ID" ]; then
|
||||||
|
log "Updating $name -> $IP_V6"
|
||||||
|
|
||||||
|
@curl@/bin/curl -s -X PUT \
|
||||||
|
"https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
|
||||||
|
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{\"type\":\"AAAA\",\"name\":\"$name\",\"content\":\"$IP_V6\",\"ttl\":3600,\"proxied\":false}"
|
||||||
|
|
||||||
|
log "Updated $name"
|
||||||
|
else
|
||||||
|
log "No AAAA record found for $name"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "$IP_V6" > "$cache_v6"
|
||||||
|
else
|
||||||
|
log "IPv6 unchanged"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "DDNS update finished"
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
script = pkgs.replaceVars ./ddns.sh {
|
||||||
|
bash = pkgs.bash;
|
||||||
|
curl = pkgs.curl;
|
||||||
|
jq = pkgs.jq;
|
||||||
|
};
|
||||||
|
|
||||||
|
cloudflare-ddns = pkgs.writeShellScriptBin "cloudflare-ddns" (builtins.readFile script);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
environment.systemPackages = [ cloudflare-ddns ];
|
||||||
|
|
||||||
|
systemd.services.cloudflare-ddns = {
|
||||||
|
description = "Cloudflare DDNS updater";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
|
||||||
|
script = "${cloudflare-ddns}/bin/cloudflare-ddns";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.timers.cloudflare-ddns = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
|
||||||
|
timerConfig = {
|
||||||
|
OnBootSec = "2min";
|
||||||
|
OnUnitActiveSec = "5min";
|
||||||
|
Persistent = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /var/lib/cloudflare-ddns 0750 root root -"
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.gitea = {
|
||||||
|
enable = true;
|
||||||
|
appName = "My personal projects.";
|
||||||
|
database.type = "sqlite3";
|
||||||
|
settings = {
|
||||||
|
server = {
|
||||||
|
DOMAIN = "git.syedm.dev";
|
||||||
|
ROOT_URL = "https://git.syedm.dev/";
|
||||||
|
HTTP_ADDR = "0.0.0.0";
|
||||||
|
HTTP_PORT = 3000;
|
||||||
|
SSH_DOMAIN = "git.syedm.dev";
|
||||||
|
SSH_PORT = 22;
|
||||||
|
};
|
||||||
|
service = {
|
||||||
|
DISABLE_REGISTRATION = true;
|
||||||
|
REQUIRE_SIGNIN_VIEW = false;
|
||||||
|
};
|
||||||
|
session.COOKIE_SECURE = true;
|
||||||
|
log.LEVEL = "Info";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
msjd = "${config.users.users."me".home}/main/msjd";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
systemd.services.msjd = {
|
||||||
|
description = "Msjd";
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
WorkingDirectory = msjd;
|
||||||
|
ExecStart = "${pkgs.nodejs}/bin/node ${msjd}/index.mjs";
|
||||||
|
|
||||||
|
User = "me";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 3;
|
||||||
|
|
||||||
|
Environment = [
|
||||||
|
"NODE_ENV=production"
|
||||||
|
"PORT=3709"
|
||||||
|
];
|
||||||
|
|
||||||
|
EnvironmentFile = "/run/secrets.env";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.ollama = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.ollama-cuda;
|
||||||
|
loadModels = [ "deepseek-coder-v2:16b" "qwen3.5:9b" ];
|
||||||
|
environmentVariables = {
|
||||||
|
OLLAMA_KEEP_ALIVE = "20m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -0,0 +1,40 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
thisDir = ./.;
|
||||||
|
|
||||||
|
unlocker = pkgs.writeScriptBin "unlocker" ''
|
||||||
|
#!${pkgs.bash}/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
if [[ -f "${thisDir}/secrets.age" && -f "${config.users.users."me".home}/.ssh/id_ed25519" ]]; then
|
||||||
|
install -m 600 /dev/null /run/secrets.env
|
||||||
|
${pkgs.age}/bin/age -d -i "${config.users.users."me".home}/.ssh/id_ed25519" "${thisDir}/secrets.age" > /run/secrets.env
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p /run/secrets/gpg
|
||||||
|
|
||||||
|
if [[ -f "${thisDir}/gpg.age" ]]; then
|
||||||
|
${pkgs.age}/bin/age -d \
|
||||||
|
-i "${config.users.users."me".home}/.ssh/id_ed25519" \
|
||||||
|
"${thisDir}/gpg.age" | \
|
||||||
|
${pkgs.gnupg}/bin/gpg --homedir /run/secrets/gpg --import
|
||||||
|
fi
|
||||||
|
|
||||||
|
chown -R me:users /run/secrets/gpg
|
||||||
|
chmod -R 700 /run/secrets/gpg
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
environment.systemPackages = [ unlocker ];
|
||||||
|
|
||||||
|
systemd.services.unlocker = {
|
||||||
|
description = "Secrets manager";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
script = "${unlocker}/bin/unlocker";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mQENBGpFs8UBCADjPGL7oAC2akkJsAjc2ViXf4z1/gJzvDAMiivpAd9a5RIKGuPd
|
||||||
|
35SX3wyw5gC9nyS/0wjMe9h0afgvW52ko4j5JVKJmpt2nt55HMM6xYRcRq7tQcd3
|
||||||
|
X6RtPPHdi2a187OB31MkFqKhbVLzKM9LEYWV7SoHzbHrdKQIATrg2OR/012avA27
|
||||||
|
f1rkIHjk0y0pr9SEtPKgujQHUz0QKAXWpdaI5bRd5GSLMU53BxLUVIZVsfqIfmtJ
|
||||||
|
xeYK/8/0jzmExAroCdtcgJLEAZjeuwy9S6mfCW21cSVlKTu6icmYirBcjmVPqbHA
|
||||||
|
gJDYrTGVqpQJH7bPqKd26waU2u61N1iHmvENABEBAAG0G0RhYW5pc2ggU3llZCA8
|
||||||
|
bWVAc3llZG0uZGV2PokBTgQTAQoAOBYhBJmIv12D3OyIDWmj2keGxQ5gN+dqBQJq
|
||||||
|
RbPFAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEEeGxQ5gN+dqtvkIAN7i
|
||||||
|
SXAqnyiWscZfEF32WowzmcagjixOAj02VIZJ9chkgqXtRp61OELC9yj6HO3oC8I3
|
||||||
|
zMvp1jDA/0VqWgdr5FszVwWaQxvm2cWrkf8qMp2ydJtwqK3KFhZjrsCRSdLyA96o
|
||||||
|
WHchO2xMgIXWqFNCUlLIWDeL0GmHbFwSulqGh6IvGc/Qf6R8rciR9Xw5AIaWLt6I
|
||||||
|
uPOS73X8v/UKlihp4BWEZhFR4hlUVNeA4fH1UqMQi6L/H0u5wh8/OgyQfLoUtTk8
|
||||||
|
NOns9C2BkUUfdSH/fQx3DjQvzCk6xajW/Tv3Lu6S/AFGNfGaagag9IXLPSbyO54G
|
||||||
|
bhLVFaZHkskdoSYJZoq5AQ0EakWzxQEIANK4ZcQp0uyS7+YYxyYl9JQKTSgjXvNw
|
||||||
|
HVCoKPY1tdJ/1yVd4wc9ggjuaifYhK3kjkVpRf78BagD59j8NptHLHX2GPIbjGbp
|
||||||
|
LwgW4N2jXW6khmL4I0aiVuyQcieUI0R+0rdSsfl+J8uIRYdVpalJeqgZ0d+Vktv1
|
||||||
|
o3FtPblw17s449VCF0Jl3Z4Ok6YrinsU7b+zy9PpPPgpa4zpcra0uy13Bd6FRDwu
|
||||||
|
8U8KASvwGUwk8zcIAahql091Uzn7w52vkwHWS9wqOokKQkD4NhzsHJ5oLUflK4OG
|
||||||
|
y5gpLPD4ZbidyeHsPorbdsbpzevrBy84CX+nTW4XhBTWC5MUJFyahW0AEQEAAYkB
|
||||||
|
NgQYAQoAIBYhBJmIv12D3OyIDWmj2keGxQ5gN+dqBQJqRbPFAhsMAAoJEEeGxQ5g
|
||||||
|
N+dqVpoH/jIx/DYPBrtstQmxtaNUJzVgXoanJIROVR/xY3e9WjQN4rzfAx20/ZV+
|
||||||
|
COcfTn7V5rSLz/X6T6DN+IIlMCd83aaaBjMmTJVSGpaexu+Mf4YLaj8Wv6hHkF9H
|
||||||
|
/UizZl18eUmMubcdfG/Th53DV7T5PwtR7hJtM/bJTpN2JI+r0yl1kirXq4xCtrKp
|
||||||
|
LQRp0VdWE93G2TZ4aX0Ive31r4C9ZhkJKednDni1IhG358/molgf1T2D9+yTW0sQ
|
||||||
|
Iq69uLH6MtZkPF1kZijk1o9vfLGjaV3Pu8Fx5mp5ZV8Wu1yX4uocqkBrQFP97Otk
|
||||||
|
qtouGFMNuoZrweW2ch7+L9QzBERv6Js=
|
||||||
|
=E+ag
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
Binary file not shown.
Executable
+41
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
AGE_PRIVATE_KEY="$HOME/.ssh/id_ed25519"
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
case "${1:-}" in
|
||||||
|
env)
|
||||||
|
ENCRYPTED_FILE="$SCRIPT_DIR/secrets.age"
|
||||||
|
;;
|
||||||
|
gpg)
|
||||||
|
ENCRYPTED_FILE="$SCRIPT_DIR/gpg.age"
|
||||||
|
;;
|
||||||
|
data)
|
||||||
|
ENCRYPTED_FILE="$SCRIPT_DIR/data.age"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {env|gpg}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
RECIPIENTS_FILE="$SCRIPT_DIR/recipients.txt"
|
||||||
|
|
||||||
|
TMP_FILE=$(mktemp)
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
rm -f "$TMP_FILE"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
if [[ -f "$ENCRYPTED_FILE" ]]; then
|
||||||
|
age -d -i "$AGE_PRIVATE_KEY" -o "$TMP_FILE" "$ENCRYPTED_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
"${EDITOR:-vi}" "$TMP_FILE"
|
||||||
|
|
||||||
|
age -R "$RECIPIENTS_FILE" -o "$ENCRYPTED_FILE" "$TMP_FILE"
|
||||||
|
|
||||||
|
echo "Updated $ENCRYPTED_FILE"
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPFh01e9doyInt0980V8T4xaakcSaOyXaxxYE4+oSwM me@syedm
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV me@tardis
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC13WMc8GJE3lB1YJ6MtYW7PLqfT9H0uGz76pQBDxIzz me@might
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 ZK0gQw LFaoeASGNuaep1d8w4AAXK8/+ZAJ1mHWlpDXbdvy1kU
|
||||||
|
W41oJ2txqtPGWvu31mN/ePElPbXMhobfO8quLnJdaxA
|
||||||
|
-> ssh-ed25519 CjJArg Y4Mzxv8xQVZkruFvv5PW/EuuIlw4OY5GyXpgL4U8oSU
|
||||||
|
0BZUBHGccwRwmiX+kUSknxvFcVzU+08CNYDBOu672Nk
|
||||||
|
-> ssh-ed25519 XBr0gw c9NY4KTZ2mREDODdjQ6KcLTrjE8xmCUj8S0JWpIiAmM
|
||||||
|
DuJ07/bgasnpQljzq5uK4XeEh+0dksOKKIhH0GK8c6A
|
||||||
|
--- cjrU8h3oY1Vn3XkrupPzTk0pY/VxMUXXeh8mnzmV6jg
|
||||||
|
´ˆÏ™�Bé6Q9|8iô@;àíI‘{<™b‰¬xí ÊÂ^@Üè®�ã·ãBáÛ$<L#àKÚe%Çþ|Š‘s^îÙØuñ$0iY)ˆUpŸu$Ø;›R,�.¢3Âðø@E©Ýh>¿è´ä˜M¡k£Ú¤šö�Nnh�»xÖCà`!—}œŠV:Kˆ—ÐþEð˰B]Ëô£÷fô7íõ=¹²4×ç½yÖ-Åa…HìM#ÞåiýhÝŽÍÒÇR3½Âù½&ù¾’šä¨[G#B?Ñ&òuš7HV©ÁX°M;^Iìj\EŒt¨ÿ2»û�¢×8ÀÃ6Ôo [A°Ã‹Ñ› }NžQèH+±ÄÂ9ÿ+é×”Rs
|
||||||
|
Ôª€AbJy»á(wìîÍ�̧�ÎJ¬]gÄ
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.pulseaudio.enable = false;
|
||||||
|
|
||||||
|
services.power-profiles-daemon.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot.blacklistedKernelModules = [ "nouveau" ];
|
||||||
|
|
||||||
|
# This version is being hardcoded here so that we dont follow nixos-unstable if it updates beyond what the nvidia driver supports.
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_6_18;
|
||||||
|
|
||||||
|
boot.kernelParams = [
|
||||||
|
"mem_sleep_default=deep"
|
||||||
|
"video=efifb:1920x1080"
|
||||||
|
];
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
modesetting.enable = true;
|
||||||
|
powerManagement.enable = true;
|
||||||
|
# This nvidia version is used as any version later than this fail to suspend by hanging the system.
|
||||||
|
# This seems to stem from certain hardware issues with my msi laptop motherboard.
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.legacy_580;
|
||||||
|
open = true;
|
||||||
|
prime = {
|
||||||
|
offload = {
|
||||||
|
enable = true;
|
||||||
|
enableOffloadCmd = true;
|
||||||
|
};
|
||||||
|
intelBusId = "PCI:0@0:2:0";
|
||||||
|
nvidiaBusId = "PCI:1@0:0:0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.keyd = {
|
||||||
|
enable = true;
|
||||||
|
keyboards.default = {
|
||||||
|
ids = [ "*" ];
|
||||||
|
settings.main = {
|
||||||
|
"leftmeta+leftshift+f23" = "rightcontrol";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
displayManager.startx.enable = true;
|
||||||
|
videoDrivers = [ "nvidia" ];
|
||||||
|
xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "";
|
||||||
|
options = "terminate:ctrl_alt_bksp";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.dbus.enable = true;
|
||||||
|
services.clipmenu.enable = true;
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
config.common.default = "*";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
networking.hostName = "syedm";
|
|
||||||
|
|
||||||
# Configure network connections interactively with nmcli or nmtui.
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
programs.fish.enable = true;
|
|
||||||
programs.tmux.enable = true;
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "Europe/London";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
console = {
|
|
||||||
font = "Lat2-Terminus16";
|
|
||||||
useXkbConfig = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with 'passwd'.
|
|
||||||
users.users.me = {
|
|
||||||
isNormalUser = true;
|
|
||||||
shell = pkgs.fish;
|
|
||||||
extraGroups = [ "wheel" ];
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV syed@tardis"
|
|
||||||
];
|
|
||||||
packages = with pkgs; [];
|
|
||||||
};
|
|
||||||
|
|
||||||
# List packages installed in system profile.
|
|
||||||
# You can use https://search.nixos.org/ to find more packages (and options).
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
eza
|
|
||||||
yazi
|
|
||||||
gitui
|
|
||||||
bind
|
|
||||||
neovim
|
|
||||||
wget
|
|
||||||
curl
|
|
||||||
stow
|
|
||||||
unzip
|
|
||||||
git
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
services.caddy = {
|
|
||||||
enable = true;
|
|
||||||
virtualHosts."syedm.dev".extraConfig = ''
|
|
||||||
respond "Hello, world!"
|
|
||||||
'';
|
|
||||||
virtualHosts."git.syedm.dev".extraConfig = ''
|
|
||||||
reverse_proxy localhost:3000
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
services.gitea = {
|
|
||||||
enable = true;
|
|
||||||
appName = "My personal projects.";
|
|
||||||
database.type = "sqlite3";
|
|
||||||
settings = {
|
|
||||||
server = {
|
|
||||||
DOMAIN = "git.syedm.dev";
|
|
||||||
ROOT_URL = "https://git.syedm.dev/";
|
|
||||||
HTTP_ADDR = "0.0.0.0";
|
|
||||||
HTTP_PORT = 3000;
|
|
||||||
SSH_DOMAIN = "git.syedm.dev";
|
|
||||||
SSH_PORT = 22;
|
|
||||||
};
|
|
||||||
service = {
|
|
||||||
DISABLE_REGISTRATION = true;
|
|
||||||
REQUIRE_SIGNIN_VIEW = false;
|
|
||||||
};
|
|
||||||
session.COOKIE_SECURE = true;
|
|
||||||
log.LEVEL = "Info";
|
|
||||||
};
|
|
||||||
lfs.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
networking.firewall.allowedTCPPorts = [ 22 80 443 ];
|
|
||||||
networking.firewall.allowedUDPPorts = [];
|
|
||||||
|
|
||||||
# DO NOT CHNAGE, EVER!
|
|
||||||
system.stateVersion = "26.05";
|
|
||||||
}
|
|
||||||
|
|
||||||
Generated
-27
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1782847225,
|
|
||||||
"narHash": "sha256-JC9PjqKYG9ve5U8aDOLQipp3+KLANBHUvGdLZlxzdKI=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "95ca1e203c0750115fd4a6f17d5a245dfe6b1edd",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-26.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
|
|
||||||
};
|
|
||||||
outputs = inputs@{ self, nixpkgs, ... }: {
|
|
||||||
nixosConfigurations.syedm = nixpkgs.lib.nixosSystem {
|
|
||||||
modules = [ ./configuration.nix ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" =
|
|
||||||
{ device = "/dev/disk/by-uuid/c5fedde6-79d4-4a44-92e4-2aa764553875";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" =
|
|
||||||
{ device = "/dev/disk/by-uuid/510C-E000";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [ "fmask=0077" "dmask=0077" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices =
|
|
||||||
[ { device = "/dev/disk/by-uuid/712d25ef-146d-4c66-b6d4-1b64491a974e"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,313 +0,0 @@
|
|||||||
local vim = vim or {}
|
|
||||||
|
|
||||||
-- Bootstrap lazy.nvim
|
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
||||||
|
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
|
||||||
local repo = "https://github.com/folke/lazy.nvim.git"
|
|
||||||
vim.fn.system({ "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath })
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.opt.rtp:prepend(lazypath)
|
|
||||||
|
|
||||||
-- Options
|
|
||||||
local o = vim.opt
|
|
||||||
vim.g.mapleader = " "
|
|
||||||
vim.g.loaded_perl_provider = 0
|
|
||||||
vim.g.loaded_ruby_provider = 0
|
|
||||||
vim.g.clipboard = 'osc52'
|
|
||||||
o.number = true
|
|
||||||
o.expandtab = true
|
|
||||||
o.shiftwidth = 2
|
|
||||||
o.tabstop = 4
|
|
||||||
o.softtabstop = 4
|
|
||||||
o.completeopt = { "menuone", "noselect", "noinsert" }
|
|
||||||
o.updatetime = 100
|
|
||||||
o.timeoutlen = 300
|
|
||||||
o.clipboard = "unnamedplus"
|
|
||||||
o.shell = "/usr/bin/fish"
|
|
||||||
o.foldenable = false
|
|
||||||
o.list = true
|
|
||||||
o.listchars = {
|
|
||||||
tab = "→ ",
|
|
||||||
eol = " ",
|
|
||||||
space = " ",
|
|
||||||
nbsp = "␣",
|
|
||||||
trail = "·",
|
|
||||||
lead = "·",
|
|
||||||
}
|
|
||||||
o.scroll = 5
|
|
||||||
o.smoothscroll = true
|
|
||||||
o.termguicolors = true
|
|
||||||
o.laststatus = 3
|
|
||||||
o.mousescroll = "ver:0,hor:0"
|
|
||||||
|
|
||||||
vim.lsp.semantic_tokens.enable = false
|
|
||||||
|
|
||||||
vim.lsp.handlers.hover = function(_, result, ctx, config)
|
|
||||||
config = config or {}
|
|
||||||
config.border = "rounded"
|
|
||||||
return vim.lsp.handlers.hover(_, result, ctx, config)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.lsp.handlers.signature_help = function(_, result, ctx, config)
|
|
||||||
config = config or {}
|
|
||||||
config.border = "rounded"
|
|
||||||
return vim.lsp.handlers.signature_help(_, result, ctx, config)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.g.rainbow_delimiters = {
|
|
||||||
highlight = {
|
|
||||||
"RainbowDelimiterYellow",
|
|
||||||
"RainbowDelimiterBlue",
|
|
||||||
"RainbowDelimiterOrange",
|
|
||||||
"RainbowDelimiterGreen",
|
|
||||||
"RainbowDelimiterViolet",
|
|
||||||
"RainbowDelimiterCyan",
|
|
||||||
"RainbowDelimiterRed",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.diagnostic.config({
|
|
||||||
virtual_text = true,
|
|
||||||
signs = {
|
|
||||||
text = {
|
|
||||||
[vim.diagnostic.severity.ERROR] = " ",
|
|
||||||
[vim.diagnostic.severity.WARN] = " ",
|
|
||||||
[vim.diagnostic.severity.INFO] = " ",
|
|
||||||
[vim.diagnostic.severity.HINT] = " ",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
underline = true,
|
|
||||||
update_in_insert = true,
|
|
||||||
severity_sort = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Plugin List
|
|
||||||
require("lazy").setup({
|
|
||||||
{ "rcarriga/nvim-notify", lazy = false },
|
|
||||||
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
|
|
||||||
{ "neovim/nvim-lspconfig", lazy = false },
|
|
||||||
{
|
|
||||||
"nvim-neo-tree/neo-tree.nvim",
|
|
||||||
branch = "v3.x",
|
|
||||||
dependencies = {
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"MunifTanjim/nui.nvim",
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
},
|
|
||||||
lazy = false,
|
|
||||||
opts = {
|
|
||||||
filesystem = {
|
|
||||||
filtered_items = { visible = true },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"nvim-lualine/lualine.nvim",
|
|
||||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"folke/tokyonight.nvim",
|
|
||||||
lazy = false,
|
|
||||||
priority = 1000,
|
|
||||||
},
|
|
||||||
{ "HiPhish/rainbow-delimiters.nvim" },
|
|
||||||
{ "ya2s/nvim-cursorline" },
|
|
||||||
{
|
|
||||||
"williamboman/mason.nvim",
|
|
||||||
config = function()
|
|
||||||
require("mason").setup()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"williamboman/mason-lspconfig.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"williamboman/mason.nvim",
|
|
||||||
"neovim/nvim-lspconfig",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require("mason-lspconfig").setup({
|
|
||||||
ensure_installed = {
|
|
||||||
"lua_ls",
|
|
||||||
"clangd",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"stevearc/conform.nvim",
|
|
||||||
config = function()
|
|
||||||
require("conform").setup({
|
|
||||||
formatters_by_ft = {
|
|
||||||
lua = { "stylua" },
|
|
||||||
},
|
|
||||||
format_on_save = {
|
|
||||||
timeout_ms = 500,
|
|
||||||
lsp_fallback = true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"hrsh7th/nvim-cmp",
|
|
||||||
dependencies = {
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ "karb94/neoscroll.nvim" },
|
|
||||||
{
|
|
||||||
"SyedM-dev/PicVim",
|
|
||||||
lazy = false,
|
|
||||||
config = function()
|
|
||||||
require("picvim").setup()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"lewis6991/gitsigns.nvim",
|
|
||||||
config = function()
|
|
||||||
require("gitsigns").setup()
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"echasnovski/mini.pairs",
|
|
||||||
config = function()
|
|
||||||
require("mini.pairs").setup({})
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Plugin's setup
|
|
||||||
require("lualine").setup({
|
|
||||||
options = { theme = "auto" },
|
|
||||||
sections = {
|
|
||||||
lualine_b = {
|
|
||||||
{ "branch" },
|
|
||||||
{
|
|
||||||
"diff",
|
|
||||||
symbols = {
|
|
||||||
added = " ",
|
|
||||||
modified = " ",
|
|
||||||
removed = " ",
|
|
||||||
},
|
|
||||||
diff_color = {
|
|
||||||
added = { fg = "#a6e3a1" },
|
|
||||||
modified = { fg = "#f9e2af" },
|
|
||||||
removed = { fg = "#f38ba8" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
require("nvim-cursorline").setup({
|
|
||||||
cursorline = {
|
|
||||||
enable = true,
|
|
||||||
timeout = 0,
|
|
||||||
number = false,
|
|
||||||
},
|
|
||||||
cursorword = {
|
|
||||||
enable = true,
|
|
||||||
min_length = 1,
|
|
||||||
hl = { underline = true },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
local neoscroll = require("neoscroll")
|
|
||||||
neoscroll.setup({
|
|
||||||
mappings = {
|
|
||||||
"<C-u>",
|
|
||||||
"<C-d>",
|
|
||||||
"<C-b>",
|
|
||||||
"<C-f>",
|
|
||||||
"<C-y>",
|
|
||||||
"<C-e>",
|
|
||||||
"zt",
|
|
||||||
"zz",
|
|
||||||
"zb",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
local cmp = require("cmp")
|
|
||||||
cmp.setup({
|
|
||||||
window = {
|
|
||||||
completion = cmp.config.window.bordered({
|
|
||||||
border = "rounded",
|
|
||||||
}),
|
|
||||||
documentation = cmp.config.window.bordered({
|
|
||||||
border = "rounded",
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
|
|
||||||
mapping = cmp.mapping.preset.insert({
|
|
||||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
|
||||||
["<Tab>"] = cmp.mapping.select_next_item(),
|
|
||||||
["<S-Tab>"] = cmp.mapping.select_prev_item(),
|
|
||||||
}),
|
|
||||||
|
|
||||||
sources = {
|
|
||||||
{ name = "nvim_lsp" },
|
|
||||||
{ name = "clangd" },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Keymaps
|
|
||||||
local map = vim.keymap.set
|
|
||||||
map({ "n", "i", "v" }, "<C-s>", "<cmd>w<CR>")
|
|
||||||
map("n", ";", ":")
|
|
||||||
map("n", "<A-Up>", ":move-2<CR>")
|
|
||||||
map("n", "<A-Down>", ":move+1<CR>")
|
|
||||||
map("x", "<A-Up>", ":move '<-2<CR>gv")
|
|
||||||
map("x", "<A-Down>", ":move '>+1<CR>gv")
|
|
||||||
map("i", "<A-Up>", "<C-o>:move-2<CR>")
|
|
||||||
map("i", "<A-Down>", "<C-o>:move+1<CR>")
|
|
||||||
map("n", ">", ">>")
|
|
||||||
map("v", ">", ">gv")
|
|
||||||
map("n", "<", "<<")
|
|
||||||
map("v", "<", "<gv")
|
|
||||||
map("n", ".", ">>")
|
|
||||||
map("v", ".", ">gv")
|
|
||||||
map("n", ",", "<<")
|
|
||||||
map("v", ",", "<gv")
|
|
||||||
map("n", "<Esc>", "<cmd>nohlsearch<CR><Esc>")
|
|
||||||
map("n", "u", "ggVG")
|
|
||||||
map("n", "z", "<cmd>u<CR>")
|
|
||||||
map("n", "d", "<cmd>red<CR>")
|
|
||||||
map("n", "q", "<cmd>Neotree<CR>")
|
|
||||||
map("n", "<A-a>", "<cmd>Minuet virtualtext toggle<CR>")
|
|
||||||
map("x", "p", '"_dP')
|
|
||||||
map("x", "P", '"_dP')
|
|
||||||
map("n", "\\", function()
|
|
||||||
vim.cmd([[
|
|
||||||
Neotree close
|
|
||||||
mksession! p.vim
|
|
||||||
echo "saved session"
|
|
||||||
]])
|
|
||||||
end)
|
|
||||||
map("n", "<ScrollWheelUp>", function()
|
|
||||||
neoscroll.scroll(-0.05, { move_cursor = false, duration = 20 })
|
|
||||||
end)
|
|
||||||
map("n", "<ScrollWheelDown>", function()
|
|
||||||
neoscroll.scroll(0.05, { move_cursor = false, duration = 20 })
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Vimscript stuff
|
|
||||||
vim.cmd([[
|
|
||||||
aunmenu PopUp
|
|
||||||
colorscheme tokyonight-night
|
|
||||||
]])
|
|
||||||
|
|
||||||
-- AutoCMD's
|
|
||||||
|
|
||||||
local autocmd = vim.api.nvim_create_autocmd
|
|
||||||
|
|
||||||
autocmd("CursorHold", {
|
|
||||||
callback = function()
|
|
||||||
vim.diagnostic.open_float(nil, {
|
|
||||||
focusable = false,
|
|
||||||
border = "rounded",
|
|
||||||
source = "if_many",
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"PicVim": { "branch": "main", "commit": "5114853ed8f24661e48b726135bf78860d9339d5" },
|
|
||||||
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
|
|
||||||
"conform.nvim": { "branch": "master", "commit": "619363c30309d29ffa631e67c8183f2a72caa373" },
|
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "eb60cc7b94c46005237fd34170d76f3a089a90aa" },
|
|
||||||
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
|
|
||||||
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" },
|
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "47059d71b42d74b0a1e9f61c1d99d301039c3b5b" },
|
|
||||||
"mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" },
|
|
||||||
"mini.pairs": { "branch": "main", "commit": "db0fac0a25884183650352ccf92b362a41ed2e9c" },
|
|
||||||
"neo-tree.nvim": { "branch": "v3.x", "commit": "ebd66767191714e008ce73b769518a763ff31bdc" },
|
|
||||||
"neoscroll.nvim": { "branch": "master", "commit": "c8d29979cb0cb3a2437a8e0ae683fd82f340d3b8" },
|
|
||||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
|
||||||
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
|
|
||||||
"nvim-cursorline": { "branch": "main", "commit": "d4425a9ba73a66fca8a34fda9254eb8949b1784d" },
|
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "292f44408498103c47996ff5c18fd366293840d8" },
|
|
||||||
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
|
|
||||||
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
|
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "dad71387de386a946b123079d0e53f23028f3abd" },
|
|
||||||
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
|
|
||||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "a798325b7f36acc62741d1029930a7b96d4dd4bf" },
|
|
||||||
"tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user