Compare commits
38 Commits
95936a2e88
..
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
|
Generated
+7
-8
@@ -7,16 +7,15 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1783221248,
|
||||
"narHash": "sha256-ESQnuNHEDChsB4IxoLRhscVahqkDWkTb+qdIz8euYt4=",
|
||||
"lastModified": 1783618078,
|
||||
"narHash": "sha256-F43DGcBoIO8xOZFAfodg3jy0VghB9NGdb6xbTYAIx1A=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "af2beae5f0fae0a4310cc0e6aef2572f56090353",
|
||||
"rev": "144f4e36d0186195037da9fce80a727108978070",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-26.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -57,16 +56,16 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1783148766,
|
||||
"narHash": "sha256-uslt2pqShTIXDdAHRHv2QkYLsVdY8Oqwz0EA48/RSM8=",
|
||||
"lastModified": 1783224372,
|
||||
"narHash": "sha256-8i/87eeoqiGE4yOTjwSA3Eh/ziJRQEmd/unYU+K27sk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a50de1b7d8a586adc18d2395c19de7d6058e6030",
|
||||
"rev": "d407951447dcd00442e97087bf374aad70c04cea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-26.05",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
|
||||
@@ -1,40 +1,61 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
|
||||
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/release-26.05";
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = inputs@{ nixpkgs, kutu, home-manager, ... }:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
syedm = nixpkgs.lib.nixosSystem {
|
||||
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;
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./hosts/common.nix
|
||||
./hosts/syedm
|
||||
home-manager.nixosModules.home-manager
|
||||
{ home-manager.users.me = import ./home; }
|
||||
];
|
||||
};
|
||||
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; }
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
tardis = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./hosts/common.nix
|
||||
./hosts/tardis
|
||||
home-manager.nixosModules.home-manager
|
||||
{ home-manager.users.me = import ./home; }
|
||||
# For development
|
||||
devShells.${system}.default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
lua-language-server
|
||||
stylua
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
+16
-12
@@ -1,18 +1,23 @@
|
||||
{ config, pkgs, ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
batteryNotify = pkgs.writeShellScript "battery-notify" ''
|
||||
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}%"
|
||||
"Battery is at ''${LEVEL}%" 2>/dev/null || true
|
||||
else
|
||||
${pkgs.dunst}/bin/dunstify \
|
||||
-C 9991 2>/dev/null || true
|
||||
@@ -20,27 +25,26 @@ let
|
||||
'';
|
||||
in
|
||||
{
|
||||
systemd.user.services.battery-notify = {
|
||||
systemd.user.services.battery = {
|
||||
Unit = {
|
||||
Description = "Low battery notification";
|
||||
After = [ "dunst.service" ];
|
||||
Requires = [ "dunst.service" ];
|
||||
Description = "Battery management";
|
||||
};
|
||||
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = batteryNotify;
|
||||
ExecStart = battery;
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.timers.battery-notify = {
|
||||
systemd.user.timers.battery = {
|
||||
Unit = {
|
||||
Description = "Check battery level every 20 seconds";
|
||||
Description = "Check battery level every 15 seconds";
|
||||
};
|
||||
|
||||
Timer = {
|
||||
OnBootSec = "20s";
|
||||
OnUnitActiveSec = "20s";
|
||||
OnBootSec = "15s";
|
||||
OnUnitInactiveSec = "15s";
|
||||
AccuracySec = "1s";
|
||||
};
|
||||
|
||||
Install = {
|
||||
|
||||
@@ -2,21 +2,17 @@
|
||||
|
||||
{
|
||||
imports = [
|
||||
./battery
|
||||
./btop
|
||||
./dunst
|
||||
./eza
|
||||
./fastfetch
|
||||
./fish
|
||||
./gitui
|
||||
./kitty
|
||||
./kutu
|
||||
./nvim
|
||||
./picom
|
||||
./rofi
|
||||
./yazi
|
||||
];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
home.username = "me";
|
||||
home.homeDirectory = "/home/me";
|
||||
|
||||
@@ -36,15 +32,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
xsession = {
|
||||
enable = true;
|
||||
windowManager.command = "kutu.rb";
|
||||
};
|
||||
|
||||
home.file.".xinitrc".text = ''
|
||||
if [ -f ~/.xsession ]; then
|
||||
exec ~/.xsession
|
||||
fi
|
||||
home.file.".config/nixpkgs/config.nix".text = ''
|
||||
{
|
||||
allowUnfree = true;
|
||||
}
|
||||
'';
|
||||
|
||||
home.stateVersion = "26.05";
|
||||
+244
-82
@@ -3,119 +3,281 @@
|
||||
{
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
symlink_path = {
|
||||
foreground = "#89ddff";
|
||||
};
|
||||
control_char = {
|
||||
foreground = "#ff9e64";
|
||||
};
|
||||
broken_symlink = {
|
||||
foreground = "#ff007c";
|
||||
};
|
||||
broken_path_overlay = {
|
||||
foreground = "#ff007c";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
logo = {
|
||||
type = "kitty-direct";
|
||||
source = ./logo.png;
|
||||
width = 23;
|
||||
width = 20;
|
||||
height = 10;
|
||||
padding = {
|
||||
top = 0;
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 28 KiB |
+30
-3
@@ -1,5 +1,15 @@
|
||||
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
|
||||
@@ -10,20 +20,37 @@ function a
|
||||
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 (command cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
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
|
||||
nvim -S ./p.vim
|
||||
set cmd nvim -S ./p.vim
|
||||
else
|
||||
nvim
|
||||
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
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
|
||||
vi = "${pkgs.neovim}/bin/nvim";
|
||||
vim = "${pkgs.neovim}/bin/nvim";
|
||||
|
||||
g = "${pkgs.gitui}/bin/gitui";
|
||||
};
|
||||
|
||||
shellInit = builtins.readFile ./config.fish;
|
||||
|
||||
+146
-2
@@ -1,3 +1,147 @@
|
||||
if test "$KITTY_STR" = "1"
|
||||
fastfetch
|
||||
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
|
||||
|
||||
@@ -32,9 +32,6 @@
|
||||
|
||||
window_margin_width = 8;
|
||||
|
||||
allow_remote_control = "yes";
|
||||
listen_on = "unix:/tmp/mykitty";
|
||||
|
||||
foreground = "#CDD6F4";
|
||||
background = "#080014";
|
||||
selection_foreground = "#080014";
|
||||
|
||||
+8
-6
@@ -1,7 +1,9 @@
|
||||
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 /home/me/dotfiles/scripts/power.sh"
|
||||
bind_key 26, true, "bash @src@/power.sh"
|
||||
|
||||
bind_key 123, false, %q(
|
||||
pactl set-sink-volume @DEFAULT_SINK@ +5%;
|
||||
@@ -44,7 +46,7 @@ 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 /home/me/dotfiles/scripts/run.sh"
|
||||
bind_key 40, true, "bash @src@/run.sh"
|
||||
|
||||
bind_key 56, true, :add_workspace
|
||||
bind_key 57, true, :delete_workspace
|
||||
@@ -82,8 +84,8 @@ bind_key 55, true, "CM_LAUNCHER=rofi clipmenu"
|
||||
|
||||
bind_key 39, true, :toggle_floating
|
||||
|
||||
bind_mouse 9, false, :workspace_next
|
||||
bind_mouse 9, true, :move_window_next_workspace
|
||||
bind_mouse 8, false, :workspace_next
|
||||
bind_mouse 8, true, :move_window_next_workspace
|
||||
|
||||
bind_mouse 8, false, :workspace_previous
|
||||
bind_mouse 8, true, :move_window_previous_workspace
|
||||
bind_mouse 9, false, :workspace_previous
|
||||
bind_mouse 9, true, :move_window_previous_workspace
|
||||
|
||||
+12
-2
@@ -1,5 +1,15 @@
|
||||
{ ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
script = pkgs.substitute {
|
||||
src = ./config.rb;
|
||||
substitutions = [
|
||||
"--replace-fail"
|
||||
"@src@"
|
||||
"${./scripts}"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
home.file.".config/kutu/config.rb".source = ./config.rb;
|
||||
home.file.".config/kutu/config.rb".source = script;
|
||||
}
|
||||
|
||||
@@ -28,13 +28,13 @@ case "$sel" in
|
||||
*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 hibernate
|
||||
[ "$confirm" = "Yes" ] && exec systemctl --system hibernate
|
||||
;;
|
||||
*Stop\ KutuWM*)
|
||||
exec kutu-run.rb stop
|
||||
;;
|
||||
*Suspend*)
|
||||
exec systemctl suspend
|
||||
exec systemctl --system suspend
|
||||
;;
|
||||
*Lock*)
|
||||
~/dotfiles/scripts/lock.sh &
|
||||
@@ -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
|
||||
@@ -1,5 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
xset s off
|
||||
xset -dpms
|
||||
|
||||
xsetroot -cursor_name left_ptr
|
||||
|
||||
setxkbmap us
|
||||
@@ -8,9 +8,9 @@
|
||||
vimAlias = true;
|
||||
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
nvim-notify
|
||||
gitsigns-nvim
|
||||
mini-pairs
|
||||
mini-surround
|
||||
rainbow-delimiters-nvim
|
||||
neo-tree-nvim
|
||||
lualine-nvim
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
(pkgs.vimUtils.buildVimPlugin {
|
||||
name = "PicVim";
|
||||
src = builtins.fetchGit {
|
||||
src = fetchGit {
|
||||
url = "https://github.com/SyedM-dev/PicVim";
|
||||
rev = "5114853ed8f24661e48b726135bf78860d9339d5";
|
||||
};
|
||||
@@ -43,11 +43,10 @@
|
||||
];
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
lua-language-server
|
||||
clang-tools
|
||||
stylua
|
||||
nixd
|
||||
nixfmt
|
||||
];
|
||||
|
||||
initLua = builtins.readFile ./init.lua;
|
||||
};
|
||||
|
||||
home.file.".config/nvim".source = ./.;
|
||||
}
|
||||
|
||||
+9
-272
@@ -1,273 +1,10 @@
|
||||
-- Options
|
||||
local o = vim.opt
|
||||
local g = vim.g
|
||||
g.mapleader = " "
|
||||
g.loaded_perl_provider = 0
|
||||
g.loaded_ruby_provider = 0
|
||||
g.clipboard = "osc52"
|
||||
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"
|
||||
require("formatting")
|
||||
require("extra")
|
||||
require("keymaps")
|
||||
require("lsp")
|
||||
require("options")
|
||||
require("plugins")
|
||||
|
||||
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,
|
||||
})
|
||||
|
||||
-- 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,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
vim.lsp.config("clangd", {
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
vim.lsp.enable("lua_ls")
|
||||
vim.lsp.enable("clangd")
|
||||
|
||||
-- Plugins
|
||||
require("picvim").setup({})
|
||||
|
||||
require("notify").setup({})
|
||||
|
||||
require("gitsigns").setup({})
|
||||
|
||||
require("mini.pairs").setup({})
|
||||
|
||||
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,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
require("conform").setup({
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
},
|
||||
|
||||
format_on_save = {
|
||||
timeout_ms = 500,
|
||||
lsp_fallback = 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",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
local neoscroll = require("neoscroll")
|
||||
neoscroll.setup({
|
||||
mappings = {
|
||||
"<C-u>",
|
||||
"<C-d>",
|
||||
"<C-b>",
|
||||
"<C-f>",
|
||||
"<C-y>",
|
||||
"<C-e>",
|
||||
"zt",
|
||||
"zz",
|
||||
"zb",
|
||||
},
|
||||
})
|
||||
|
||||
-- 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)
|
||||
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)
|
||||
|
||||
-- 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,
|
||||
})
|
||||
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",
|
||||
},
|
||||
})
|
||||
@@ -1,42 +0,0 @@
|
||||
# General settings
|
||||
fading = true;
|
||||
vsync = true;
|
||||
backend = "glx";
|
||||
fade-delta = 4;
|
||||
inactive-opacity = 0.9;
|
||||
|
||||
# Window corner radius
|
||||
corner-radius = 7.0;
|
||||
round-borders = 1;
|
||||
|
||||
# Blur settings
|
||||
blur-method = "gaussian";
|
||||
blur-size = 7;
|
||||
blur-deviation = 3;
|
||||
|
||||
# Opacity rules
|
||||
opacity-rule = [
|
||||
"100:class_g = 'Polybar'"
|
||||
];
|
||||
|
||||
# Exclusions for corner radius
|
||||
corner-radius-exclude = [
|
||||
"class_g = 'Dunst'",
|
||||
"class_i = 'Dunst'",
|
||||
"name = 'Dunst'",
|
||||
"class_i = 'dmenu'",
|
||||
"class_g = 'dmenu'",
|
||||
"name - 'dmenu'"
|
||||
];
|
||||
|
||||
# Exclusions for background blur
|
||||
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,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
|
||||
'';
|
||||
}
|
||||
+18
-20
@@ -1,11 +1,11 @@
|
||||
{pkgs, ...}:
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
plugins-repo = pkgs.fetchFromGitHub {
|
||||
owner = "yazi-rs";
|
||||
repo = "plugins";
|
||||
rev = "8cd50c622898d3ace3ca821f540241965308289a";
|
||||
hash = "sha256-f4y952sUF/lrHMX6enQts/obk2DeatqAcaVHfjTD65k=";
|
||||
tkn-repo = pkgs.fetchFromGitHub {
|
||||
owner = "BennyOe";
|
||||
repo = "tokyo-night.yazi";
|
||||
rev = "8e6296f14daff24151c736ebd0b9b6cd89b02b03";
|
||||
hash = "sha256-LArhRteD7OQRBguV1n13gb5jkl90sOxShkDzgEf3PA0=";
|
||||
};
|
||||
in
|
||||
{
|
||||
@@ -25,9 +25,17 @@ in
|
||||
};
|
||||
|
||||
plugins = {
|
||||
max-preview = "${plugins-repo}/max-preview.yazi";
|
||||
full-border = "${plugins-repo}/full-border.yazi";
|
||||
git = "${plugins-repo}/git.yazi";
|
||||
full-border = pkgs.yaziPlugins.full-border;
|
||||
git = pkgs.yaziPlugins.git;
|
||||
};
|
||||
|
||||
flavors = {
|
||||
tokyo-night = tkn-repo;
|
||||
};
|
||||
|
||||
theme.flavor = {
|
||||
dark = "tokyo-night";
|
||||
light = "tokyo-night";
|
||||
};
|
||||
|
||||
initLua = ''
|
||||
@@ -35,16 +43,6 @@ in
|
||||
require("git"):setup {
|
||||
order = 1500,
|
||||
}
|
||||
'';
|
||||
|
||||
keymap = {
|
||||
manager.prepend_keymap = [
|
||||
{
|
||||
on = ["A"];
|
||||
run = "plugin --sync max-preview";
|
||||
desc = "Maximize or restore the preview pane";
|
||||
}
|
||||
];
|
||||
};
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
+22
-7
@@ -1,10 +1,16 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
../modules/secrets
|
||||
];
|
||||
imports = [
|
||||
../modules/secrets
|
||||
];
|
||||
|
||||
boot.resumeDevice =
|
||||
if config.swapDevices != [ ] then (builtins.head config.swapDevices).device else null;
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
@@ -34,14 +40,21 @@
|
||||
useXkbConfig = true;
|
||||
};
|
||||
|
||||
users.users.root.shell = pkgs.fish;
|
||||
|
||||
users.users.me = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.fish;
|
||||
extraGroups = [ "wheel" "video" "networkmanager" "input" ];
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"video"
|
||||
"networkmanager"
|
||||
"input"
|
||||
];
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPFh01e9doyInt0980V8T4xaakcSaOyXaxxYE4+oSwM me@syedm # server"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV me@tardis # msi laptop"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILMeU7L0yQ4+O1GME4D4UM4f6nqua+pWt/zdsMvyHV94 u0_a309@localhost # mobile"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC13WMc8GJE3lB1YJ6MtYW7PLqfT9H0uGz76pQBDxIzz me@might # mobile"
|
||||
];
|
||||
};
|
||||
|
||||
@@ -53,6 +66,8 @@
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim
|
||||
gitui
|
||||
libinput
|
||||
gnupg
|
||||
age
|
||||
|
||||
+27
-11
@@ -1,18 +1,23 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
|
||||
../../modules/cloudflare-ddns
|
||||
../../modules/gitea
|
||||
../../modules/msjd.nix
|
||||
];
|
||||
../../modules/cloudflare-ddns
|
||||
../../modules/gitea
|
||||
../../modules/msjd
|
||||
];
|
||||
|
||||
networking.hostName = "syedm";
|
||||
|
||||
services.openssh.enable = true;
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PasswordAuthentication = false;
|
||||
PermitRootLogin = "no";
|
||||
};
|
||||
};
|
||||
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
@@ -27,6 +32,17 @@
|
||||
'';
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 22 80 443 ];
|
||||
networking.firewall.allowedUDPPorts = [];
|
||||
networking = {
|
||||
tempAddresses = "disabled";
|
||||
firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [
|
||||
22
|
||||
80
|
||||
443
|
||||
];
|
||||
allowedUDPPorts = [ ];
|
||||
allowPing = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,29 +1,44 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ];
|
||||
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."/" = {
|
||||
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"; }
|
||||
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;
|
||||
|
||||
+31
-79
@@ -1,43 +1,39 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
{
|
||||
kutu,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
imports = [
|
||||
./hardware-configuration.nix
|
||||
|
||||
boot.blacklistedKernelModules = [
|
||||
"nouveau"
|
||||
../../modules/ollama
|
||||
../../modules/workstation/graphics.nix
|
||||
../../modules/workstation/audio.nix
|
||||
../../modules/workstation/xserver.nix
|
||||
../../modules/workstation/keyd.nix
|
||||
];
|
||||
|
||||
boot.kernelParams = [ "video=efifb:1920x1080" ];
|
||||
environment.systemPackages = lib.mkAfter (
|
||||
with pkgs;
|
||||
[
|
||||
firefox
|
||||
xdg-utils
|
||||
dmenu
|
||||
pulseaudio
|
||||
brightnessctl
|
||||
maim
|
||||
xclip
|
||||
xsel
|
||||
lunar-client
|
||||
jdk21
|
||||
spotify
|
||||
|
||||
boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
|
||||
|
||||
hardware.graphics.enable = true;
|
||||
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true;
|
||||
open = true;
|
||||
prime = {
|
||||
offload = {
|
||||
enable = true;
|
||||
enableOffloadCmd = true;
|
||||
};
|
||||
intelBusId = "PCI:0@0:2:0";
|
||||
nvidiaBusId = "PCI:1@0:0:0";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = lib.mkAfter (with pkgs; [
|
||||
firefox
|
||||
xdg-utils
|
||||
dmenu
|
||||
pulseaudio
|
||||
brightnessctl
|
||||
|
||||
inputs.kutu.packages.${stdenv.hostPlatform.system}.default
|
||||
]);
|
||||
kutu.packages.${stdenv.hostPlatform.system}.default
|
||||
]
|
||||
);
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
nerd-fonts.hurmit
|
||||
@@ -45,51 +41,7 @@
|
||||
unifont
|
||||
];
|
||||
|
||||
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 = "*";
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
services.keyd = {
|
||||
enable = true;
|
||||
keyboards.default = {
|
||||
ids = [ "*" ];
|
||||
settings.main = {
|
||||
"leftmeta+leftshift+f23" = "rightcontrol";
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.steam.enable = true;
|
||||
|
||||
networking.hostName = "tardis";
|
||||
}
|
||||
|
||||
@@ -1,29 +1,41 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "vmd" "nvme" ];
|
||||
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."/" = {
|
||||
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"; }
|
||||
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;
|
||||
|
||||
@@ -2,32 +2,101 @@
|
||||
|
||||
source /run/secrets.env
|
||||
|
||||
cache=/var/lib/cloudflare-ddns/old_ip
|
||||
IP=$(@curl@/bin/curl -s 'https://api.ipify.org')
|
||||
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 [[ -f "$cache" ]]; then
|
||||
old_ip=$(cat "$cache")
|
||||
else
|
||||
old_ip=""
|
||||
fi
|
||||
if [[ -n "$IP_V4" ]]; then
|
||||
old_ip_v4=$([[ -f "$cache_v4" ]] && cat "$cache_v4" || echo "")
|
||||
|
||||
if [[ "$IP" != "$old_ip" ]]; then
|
||||
for sub in "${arr[@]}"; do
|
||||
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==\"${sub}syedm.dev\" and .type==\"A\") | .id")
|
||||
log "Old IPv4: ${old_ip_v4:-none}"
|
||||
|
||||
if [ -n "$RECORD_ID" ]; then
|
||||
@curl@/bin/curl -s -X PUT \
|
||||
"https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
|
||||
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" \
|
||||
-d "{\"type\":\"A\",\"name\":\"${sub}syedm.dev\",\"content\":\"$IP\",\"ttl\":3600,\"proxied\":false}"
|
||||
fi
|
||||
done
|
||||
-H "Content-Type: application/json" | @jq@/bin/jq \
|
||||
-r ".result[] | select(.name==\"${name}\" and .type==\"A\") | .id")
|
||||
|
||||
echo "$IP" > "$cache"
|
||||
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"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
projectDir ="${config.users.users."me".home}/main/msjd";
|
||||
msjd = "${config.users.users."me".home}/main/msjd";
|
||||
in
|
||||
{
|
||||
systemd.services.msjd = {
|
||||
@@ -10,8 +10,8 @@ in
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
WorkingDirectory = projectDir;
|
||||
ExecStart = "${pkgs.nodejs}/bin/node index.mjs";
|
||||
WorkingDirectory = msjd;
|
||||
ExecStart = "${pkgs.nodejs}/bin/node ${msjd}/index.mjs";
|
||||
|
||||
User = "me";
|
||||
Restart = "always";
|
||||
@@ -21,6 +21,8 @@ in
|
||||
"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.
Binary file not shown.
@@ -12,6 +12,9 @@ case "${1:-}" in
|
||||
gpg)
|
||||
ENCRYPTED_FILE="$SCRIPT_DIR/gpg.age"
|
||||
;;
|
||||
data)
|
||||
ENCRYPTED_FILE="$SCRIPT_DIR/data.age"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {env|gpg}"
|
||||
exit 1
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPFh01e9doyInt0980V8T4xaakcSaOyXaxxYE4+oSwM me@syedm
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV me@tardis
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC13WMc8GJE3lB1YJ6MtYW7PLqfT9H0uGz76pQBDxIzz me@might
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 ZK0gQw 9LrC4V6ibhKKKoE8Dtm+caoI2z6tT6oBnfNAl5qlcQ8
|
||||
NWqFWrj49jp2e8our9rpYpHZZny8t4mKGogeRNMFCkk
|
||||
-> ssh-ed25519 CjJArg bxVL+Is1oNN4QLRW24hPOpFFAhGmGyF611o3oASaJFk
|
||||
K8a5oDyvQ4k0YeDBseS2/SmvPhu39LWyRuFkWi0gm2s
|
||||
--- wjAuZMd2h4fvKfKtIdHmEYPO1sEC64tmU4uZarAK4io
|
||||
Ô@àˆó,RîžÐÙ$øôG—8Š‘WÇì×®µ–žñ[
|
||||
-> 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,17 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
choice=$(
|
||||
(
|
||||
printf "%s\n" prism
|
||||
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 |
|
||||
dmenu -i -p "Enter command " \
|
||||
-nf '#4abaaf' -nb '#1f2335' -sb '#7aa2f7' -sf '#102030' -fn 'AgaveNerdFont-16'
|
||||
)
|
||||
|
||||
[ -z "$choice" ] && exit 0
|
||||
|
||||
fish -c "$choice" >/dev/null 2>&1 &
|
||||
disown
|
||||
Reference in New Issue
Block a user