Compare commits

..

51 Commits

Author SHA1 Message Date
syedm a647e92782 Minor changes 2026-07-21 20:41:20 +01:00
syedm 2daaf64e9b Make nixd/nixfmt global 2026-07-12 18:36:17 +01:00
syedm ac284e6cfb Cleanup 2026-07-12 18:25:07 +01:00
syedm 1edf4af07f Fix formatting 2026-07-12 18:07:46 +01:00
syedm ebf3e773c6 Fix fish startup code 2026-07-11 18:04:48 +01:00
syedm 0db4036c29 Make editor function work with flakes 2026-07-11 17:33:35 +01:00
syedm e7fa524261 Fix battery script 2026-07-10 20:19:04 +01:00
syedm 6154c9cf0d Update logo 2026-07-10 19:53:11 +01:00
syedm b3f3040174 Change nvidia version to make hibernation work 2026-07-09 23:32:00 +01:00
syedm 80271685e6 Switch to unstable branch 2026-07-09 21:48:10 +01:00
syedm 35e165b801 Add hinernation on low battery feature 2026-07-09 18:46:21 +01:00
syedm 27759c824a minor fixes 2026-07-09 17:49:47 +01:00
syedm 80e245483a Update mobile ssh key 2026-07-09 15:31:37 +01:00
syedm 1b1d754950 Make hibernation and suspend work 2026-07-09 13:53:54 +01:00
syedm 8df3c6bf45 Allow systemd hibernation 2026-07-09 10:52:27 +01:00
syedm c9eca9eb1e Keep ollama models alive longer 2026-07-08 23:43:24 +01:00
syedm 514e10f696 Disable x11 timeout 2026-07-08 23:10:11 +01:00
syedm 86e9663531 Add ollama and split tardis/default.nix 2026-07-08 22:41:57 +01:00
syedm 13f8a22760 Fix nix impurities 2026-07-08 22:12:54 +01:00
syedm 1c64936338 Fix incorrect file extention 2026-07-08 22:03:12 +01:00
syedm 5ac70285e4 Use msjd as flake 2026-07-08 22:02:31 +01:00
syedm 015131bade Harden ssh 2026-07-08 20:27:52 +01:00
syedm 999de8e02b Add ipv6 & logging support to ddns 2026-07-08 20:14:40 +01:00
syedm 737c5c8d8a Add IPv6 to ddns 2026-07-08 19:27:55 +01:00
syedm 315274e323 Fix networking bit 2026-07-08 19:23:52 +01:00
syedm b671cdd1c4 Enable firewall explicitly 2026-07-08 18:49:51 +01:00
syedm 0c9bfa8714 Minor fixes 2026-07-08 18:45:42 +01:00
syedm e13a9fa82d Update fish prompt and add to root user 2026-07-08 11:31:02 +01:00
syedm 700096aca1 Minor fixes 2026-07-08 10:32:18 +01:00
syedm 4e229aac5e Split common and tardis specific home-manager modules 2026-07-08 08:29:38 +01:00
syedm 3aa23d4ce1 Fix fish nix function recurse error 2026-07-08 08:15:50 +01:00
syedm 32b5474307 Add startx to fish config 2026-07-08 07:41:15 +01:00
syedm 9c0b473ea9 Fix fish config 2026-07-08 07:35:16 +01:00
syedm 3e30f0b1dc Fix nvim pasting 2026-07-08 07:28:41 +01:00
syedm 8fd2ef958f Update Fish prompt 2026-07-08 07:28:32 +01:00
syedm 49c82d2baf Fix neovim config 2026-07-08 06:10:49 +01:00
syedm ad8fb42b43 Add proper yazi theme 2026-07-08 05:59:57 +01:00
syedm 5923a7ea32 Add maim and formalize kutu config 2026-07-08 05:27:13 +01:00
syedm 95936a2e88 Move yazi and gitui to home-manager 2026-07-07 23:38:33 +01:00
syedm 4c1158f9b7 Use correct battery level 2026-07-07 23:13:42 +01:00
syedm bb6e4624db Add kutu config 2026-07-07 23:10:13 +01:00
syedm 91044efd80 Restructure 2026-07-07 21:47:49 +01:00
syedm c6bb7aa88b Remap copilot key to ctrl 2026-07-07 21:08:46 +01:00
syedm 27d0ab06e1 Add gpg signing 2026-07-07 20:58:48 +01:00
syedm 56efd872ff Fix typo 2026-07-07 19:26:25 +01:00
syedm b07eed8970 Choose btop theme 2026-07-07 19:25:24 +01:00
syedm 562ec40d05 Add battery timer and btop 2026-07-07 19:23:46 +01:00
syedm 9b4ba3fef4 Fix and reorder nvidia settings 2026-07-07 19:13:40 +01:00
syedm c5db408cb3 Merge nvidia and tardis default 2026-07-07 18:52:20 +01:00
syedm 2fb5860706 Fix nvidia 2026-07-07 18:42:38 +01:00
syedm c7a28de886 Add nvidia drivers and fix interactive.fish 2026-07-07 18:24:56 +01:00
53 changed files with 1595 additions and 625 deletions
+1
View File
@@ -1,2 +1,3 @@
.pos .pos
p.vim p.vim
log.txt
Generated
+11 -12
View File
@@ -7,16 +7,15 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1783221248, "lastModified": 1783618078,
"narHash": "sha256-ESQnuNHEDChsB4IxoLRhscVahqkDWkTb+qdIz8euYt4=", "narHash": "sha256-F43DGcBoIO8xOZFAfodg3jy0VghB9NGdb6xbTYAIx1A=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "af2beae5f0fae0a4310cc0e6aef2572f56090353", "rev": "144f4e36d0186195037da9fce80a727108978070",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-26.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@@ -26,11 +25,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1783430313, "lastModified": 1783461814,
"narHash": "sha256-OPyKjRU+DqJoF1qMtW8x8bzZQFczzC7c/dFhHwpaj9M=", "narHash": "sha256-ycpzjXjMey4PlAFYeprz2nHI2azxkvEn3wNvHee+Yh0=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "7fb1ea8cb3fa4b80f684239fb962cfd3288f3e37", "rev": "4b8599132f26d75bddfe613bcf9697ce0f91d212",
"revCount": 35, "revCount": 40,
"type": "git", "type": "git",
"url": "https://git.syedm.dev/syedm/kutu.rb.git" "url": "https://git.syedm.dev/syedm/kutu.rb.git"
}, },
@@ -57,16 +56,16 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1783148766, "lastModified": 1783224372,
"narHash": "sha256-uslt2pqShTIXDdAHRHv2QkYLsVdY8Oqwz0EA48/RSM8=", "narHash": "sha256-8i/87eeoqiGE4yOTjwSA3Eh/ziJRQEmd/unYU+K27sk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a50de1b7d8a586adc18d2395c19de7d6058e6030", "rev": "d407951447dcd00442e97087bf374aad70c04cea",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-26.05", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
+35 -14
View File
@@ -1,40 +1,61 @@
{ {
inputs = { 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"; kutu.url = "git+https://git.syedm.dev/syedm/kutu.rb.git";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-26.05"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = inputs@{ nixpkgs, kutu, home-manager, ... }: outputs =
{
kutu,
nixpkgs,
home-manager,
...
}:
let let
system = "x86_64-linux"; system = "x86_64-linux";
in { 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 = { nixosConfigurations = {
syedm = nixpkgs.lib.nixosSystem { syedm = nixpkgs.lib.nixosSystem {
inherit system; inherit system;
specialArgs = { inherit inputs; }; modules = commonModules ++ [
modules = [
./hosts/common.nix
./hosts/syedm ./hosts/syedm
home-manager.nixosModules.home-manager
{ home-manager.users.me = import ./home; }
]; ];
}; };
tardis = nixpkgs.lib.nixosSystem { tardis = nixpkgs.lib.nixosSystem {
inherit system; inherit system;
specialArgs = { inherit inputs; }; specialArgs = { inherit kutu; };
modules = [ modules = commonModules ++ [
./hosts/common.nix
./hosts/tardis ./hosts/tardis
home-manager.nixosModules.home-manager { home-manager.users.me = import ./home/tardis.nix; }
{ home-manager.users.me = import ./home; }
]; ];
}; };
}; };
# For development
devShells.${system}.default = pkgs.mkShell {
packages = with pkgs; [
lua-language-server
stylua
];
};
}; };
} }
+54
View File
@@ -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" ];
};
};
}
+12
View File
@@ -0,0 +1,12 @@
{ ... }:
{
programs.btop = {
enable = true;
settings = {
color_theme = "dracula";
theme_background = false;
};
};
}
+42
View File
@@ -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";
}
-36
View File
@@ -1,36 +0,0 @@
{ pkgs, ... }:
{
imports = [
./dunst
./eza
./fastfetch
./fish
./kitty
./nvim
./picom
./rofi
];
home.username = "me";
home.homeDirectory = "/home/me";
programs.git = {
enable = true;
settings.user.name = "Syed Daanish";
settings.user.email = "me@syedm.dev";
};
xsession = {
enable = true;
windowManager.command = "kutu.rb";
};
home.file.".xinitrc".text = ''
if [ -f ~/.xsession ]; then
exec ~/.xsession
fi
'';
home.stateVersion = "26.05";
}
+243 -81
View File
@@ -8,114 +8,276 @@
colourful = true; colourful = true;
filekinds = { filekinds = {
normal = { foreground = "#c0caf5"; }; normal = {
directory = { foreground = "#7aa2f7"; }; foreground = "#c0caf5";
symlink = { foreground = "#2ac3de"; }; };
pipe = { foreground = "#414868"; }; directory = {
block_device = { foreground = "#e0af68"; }; foreground = "#7aa2f7";
char_device = { foreground = "#e0af68"; }; };
socket = { foreground = "#414868"; }; symlink = {
special = { foreground = "#9d7cd8"; }; foreground = "#2ac3de";
executable = { foreground = "#9ece6a"; }; };
mount_point = { foreground = "#b4f9f8"; }; 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 = { perms = {
user_read = { foreground = "#2ac3de"; }; user_read = {
user_write = { foreground = "#bb9af7"; }; foreground = "#2ac3de";
user_execute_file = { foreground = "#9ece6a"; }; };
user_execute_other = { foreground = "#9ece6a"; }; user_write = {
group_read = { foreground = "#2ac3de"; }; foreground = "#bb9af7";
group_write = { foreground = "#ff9e64"; }; };
group_execute = { foreground = "#9ece6a"; }; user_execute_file = {
other_read = { foreground = "#2ac3de"; }; foreground = "#9ece6a";
other_write = { foreground = "#ff007c"; }; };
other_execute = { foreground = "#9ece6a"; }; user_execute_other = {
special_user_file = { foreground = "#ff007c"; }; foreground = "#9ece6a";
special_other = { foreground = "#db4b4b"; }; };
attribute = { foreground = "#737aa2"; }; 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 = { size = {
major = { foreground = "#2ac3de"; }; major = {
minor = { foreground = "#9d7cd8"; }; foreground = "#2ac3de";
number_byte = { foreground = "#a9b1d6"; }; };
number_kilo = { foreground = "#89ddff"; }; minor = {
number_mega = { foreground = "#2ac3de"; }; foreground = "#9d7cd8";
number_giga = { foreground = "#ff9e64"; }; };
number_huge = { foreground = "#ff007c"; }; number_byte = {
unit_byte = { foreground = "#a9b1d6"; }; foreground = "#a9b1d6";
unit_kilo = { foreground = "#89ddff"; }; };
unit_mega = { foreground = "#2ac3de"; }; number_kilo = {
unit_giga = { foreground = "#ff9e64"; }; foreground = "#89ddff";
unit_huge = { foreground = "#ff007c"; }; };
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 = { users = {
user_you = { foreground = "#3d59a1"; }; user_you = {
user_root = { foreground = "#bb9af7"; }; foreground = "#3d59a1";
user_other = { foreground = "#2ac3de"; }; };
group_yours = { foreground = "#89ddff"; }; user_root = {
group_root = { foreground = "#bb9af7"; }; foreground = "#bb9af7";
group_other = { foreground = "#c0caf5"; }; };
user_other = {
foreground = "#2ac3de";
};
group_yours = {
foreground = "#89ddff";
};
group_root = {
foreground = "#bb9af7";
};
group_other = {
foreground = "#c0caf5";
};
}; };
links = { links = {
normal = { foreground = "#89ddff"; }; normal = {
multi_link_file = { foreground = "#2ac3de"; }; foreground = "#89ddff";
};
multi_link_file = {
foreground = "#2ac3de";
};
}; };
git = { git = {
new = { foreground = "#9ece6a"; }; new = {
modified = { foreground = "#bb9af7"; }; foreground = "#9ece6a";
deleted = { foreground = "#db4b4b"; }; };
renamed = { foreground = "#2ac3de"; }; modified = {
typechange = { foreground = "#2ac3de"; }; foreground = "#bb9af7";
ignored = { foreground = "#545c7e"; }; };
conflicted = { foreground = "#ff9e64"; }; deleted = {
foreground = "#db4b4b";
};
renamed = {
foreground = "#2ac3de";
};
typechange = {
foreground = "#2ac3de";
};
ignored = {
foreground = "#545c7e";
};
conflicted = {
foreground = "#ff9e64";
};
}; };
git_repo = { git_repo = {
branch_main = { foreground = "#737aa2"; }; branch_main = {
branch_other = { foreground = "#b4f9f8"; }; foreground = "#737aa2";
git_clean = { foreground = "#292e42"; }; };
git_dirty = { foreground = "#bb9af7"; }; branch_other = {
foreground = "#b4f9f8";
};
git_clean = {
foreground = "#292e42";
};
git_dirty = {
foreground = "#bb9af7";
};
}; };
security_context = { security_context = {
colon = { foreground = "#545c7e"; }; colon = {
user = { foreground = "#737aa2"; }; foreground = "#545c7e";
role = { foreground = "#2ac3de"; }; };
typ = { foreground = "#3d59a1"; }; user = {
range = { foreground = "#9d7cd8"; }; foreground = "#737aa2";
};
role = {
foreground = "#2ac3de";
};
typ = {
foreground = "#3d59a1";
};
range = {
foreground = "#9d7cd8";
};
}; };
file_type = { file_type = {
image = { foreground = "#89ddff"; }; image = {
video = { foreground = "#b4f9f8"; }; foreground = "#89ddff";
music = { foreground = "#73daca"; }; };
lossless = { foreground = "#41a6b5"; }; video = {
crypto = { foreground = "#db4b4b"; }; foreground = "#b4f9f8";
document = { foreground = "#a9b1d6"; }; };
compressed = { foreground = "#ff9e64"; }; music = {
temp = { foreground = "#737aa2"; }; foreground = "#73daca";
compiled = { foreground = "#737aa2"; }; };
build = { foreground = "#1abc9c"; }; lossless = {
source = { foreground = "#bb9af7"; }; 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"; }; punctuation = {
date = { foreground = "#e0af68"; }; foreground = "#292e42";
inode = { foreground = "#737aa2"; }; };
blocks = { foreground = "#737aa2"; }; date = {
header = { foreground = "#a9b1d6"; }; foreground = "#e0af68";
octal = { foreground = "#ff9e64"; }; };
flags = { foreground = "#9d7cd8"; }; inode = {
foreground = "#737aa2";
};
blocks = {
foreground = "#737aa2";
};
header = {
foreground = "#a9b1d6";
};
octal = {
foreground = "#ff9e64";
};
flags = {
foreground = "#9d7cd8";
};
symlink_path = { foreground = "#89ddff"; }; symlink_path = {
control_char = { foreground = "#ff9e64"; }; foreground = "#89ddff";
broken_symlink = { foreground = "#ff007c"; }; };
broken_path_overlay = { foreground = "#ff007c"; }; control_char = {
foreground = "#ff9e64";
};
broken_symlink = {
foreground = "#ff007c";
};
broken_path_overlay = {
foreground = "#ff007c";
};
}; };
}; };
} }
+1 -1
View File
@@ -8,7 +8,7 @@
logo = { logo = {
type = "kitty-direct"; type = "kitty-direct";
source = ./logo.png; source = ./logo.png;
width = 23; width = 20;
height = 10; height = 10;
padding = { padding = {
top = 0; top = 0;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 28 KiB

+30 -3
View File
@@ -1,5 +1,15 @@
set -gx fish_greeting 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 function a
for arg in $argv for arg in $argv
if string match -q '*/' $arg if string match -q '*/' $arg
@@ -10,20 +20,37 @@ function a
end end
end 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 function y
set tmp (mktemp -t "yazi-cwd.XXXXXX") set tmp (mktemp -t "yazi-cwd.XXXXXX")
yazi $argv --cwd-file="$tmp" 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" builtin cd -- "$cwd"
end end
end end
function editor function editor
set pos (cat ~/dotfiles/.pos) set pos (cat ~/dotfiles/.pos)
y $pos y $pos
if test -e ./p.vim if test -e ./p.vim
nvim -S ./p.vim set cmd nvim -S ./p.vim
else 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 end
echo $PWD > ~/dotfiles/.pos echo $PWD > ~/dotfiles/.pos
end end
-2
View File
@@ -14,8 +14,6 @@
vi = "${pkgs.neovim}/bin/nvim"; vi = "${pkgs.neovim}/bin/nvim";
vim = "${pkgs.neovim}/bin/nvim"; vim = "${pkgs.neovim}/bin/nvim";
g = "${pkgs.gitui}/bin/gitui";
}; };
shellInit = builtins.readFile ./config.fish; shellInit = builtins.readFile ./config.fish;
+145 -1
View File
@@ -1,3 +1,147 @@
if test "$KITTY_STR" -eq 1 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 fastfetch
end 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
+8
View File
@@ -0,0 +1,8 @@
{ ... }:
{
programs.gitui = {
enable = true;
theme = ./theme.ron;
};
}
+19
View File
@@ -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"),
)
-3
View File
@@ -32,9 +32,6 @@
window_margin_width = 8; window_margin_width = 8;
allow_remote_control = "yes";
listen_on = "unix:/tmp/mykitty";
foreground = "#CDD6F4"; foreground = "#CDD6F4";
background = "#080014"; background = "#080014";
selection_foreground = "#080014"; selection_foreground = "#080014";
+91
View File
@@ -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
+15
View File
@@ -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;
}
+9
View File
@@ -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
+42
View File
@@ -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
+29
View File
@@ -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
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
xset s off
xset -dpms
xsetroot -cursor_name left_ptr
setxkbmap us
+6 -7
View File
@@ -8,9 +8,9 @@
vimAlias = true; vimAlias = true;
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
nvim-notify
gitsigns-nvim gitsigns-nvim
mini-pairs mini-pairs
mini-surround
rainbow-delimiters-nvim rainbow-delimiters-nvim
neo-tree-nvim neo-tree-nvim
lualine-nvim lualine-nvim
@@ -27,7 +27,7 @@
(pkgs.vimUtils.buildVimPlugin { (pkgs.vimUtils.buildVimPlugin {
name = "PicVim"; name = "PicVim";
src = builtins.fetchGit { src = fetchGit {
url = "https://github.com/SyedM-dev/PicVim"; url = "https://github.com/SyedM-dev/PicVim";
rev = "5114853ed8f24661e48b726135bf78860d9339d5"; rev = "5114853ed8f24661e48b726135bf78860d9339d5";
}; };
@@ -43,11 +43,10 @@
]; ];
extraPackages = with pkgs; [ extraPackages = with pkgs; [
lua-language-server nixd
clang-tools nixfmt
stylua
]; ];
initLua = builtins.readFile ./init.lua;
}; };
home.file.".config/nvim".source = ./.;
} }
+9 -272
View File
@@ -1,273 +1,10 @@
-- Options require("formatting")
local o = vim.opt require("extra")
local g = vim.g require("keymaps")
g.mapleader = " " require("lsp")
g.loaded_perl_provider = 0 require("options")
g.loaded_ruby_provider = 0 require("plugins")
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"
vim.lsp.semantic_tokens.enable = false if vim.env.SSH_CONNECTION or vim.env.SSH_TTY then
vim.g.clipboard = "osc52"
vim.diagnostic.config({ end
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,
})
+30
View File
@@ -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,
})
+11
View File
@@ -0,0 +1,11 @@
require("conform").setup({
formatters_by_ft = {
lua = { "stylua" },
nix = { "nixfmt" },
},
format_on_save = {
timeout_ms = 500,
lsp_fallback = true,
},
})
+47
View File
@@ -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)
+23
View File
@@ -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)
+66
View File
@@ -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,
})
+102
View File
@@ -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",
},
})
-42
View File
@@ -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'"
];
+13
View File
@@ -0,0 +1,13 @@
{ ... }:
{
imports = [
./fish
./eza
];
home.username = "root";
home.homeDirectory = "/root";
home.stateVersion = "26.05";
}
+23
View File
@@ -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
'';
}
+48
View File
@@ -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,
}
'';
};
}
+22 -10
View File
@@ -1,11 +1,17 @@
{ config, lib, pkgs, ... }: {
config,
pkgs,
...
}:
{ {
imports = imports = [
[
../modules/secrets ../modules/secrets
]; ];
boot.resumeDevice =
if config.swapDevices != [ ] then (builtins.head config.swapDevices).device else null;
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
@@ -34,14 +40,21 @@
useXkbConfig = true; useXkbConfig = true;
}; };
users.users.root.shell = pkgs.fish;
users.users.me = { users.users.me = {
isNormalUser = true; isNormalUser = true;
shell = pkgs.fish; shell = pkgs.fish;
extraGroups = [ "wheel" "video" "networkmanager" "input" ]; extraGroups = [
"wheel"
"video"
"networkmanager"
"input"
];
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPFh01e9doyInt0980V8T4xaakcSaOyXaxxYE4+oSwM me@syedm # server" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPFh01e9doyInt0980V8T4xaakcSaOyXaxxYE4+oSwM me@syedm # server"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV me@tardis # msi laptop" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV me@tardis # msi laptop"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILMeU7L0yQ4+O1GME4D4UM4f6nqua+pWt/zdsMvyHV94 u0_a309@localhost # mobile" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC13WMc8GJE3lB1YJ6MtYW7PLqfT9H0uGz76pQBDxIzz me@might # mobile"
]; ];
}; };
@@ -53,12 +66,11 @@
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
libinput neovim
nodejs
age
eza
yazi
gitui gitui
libinput
gnupg
age
bind bind
wget wget
curl curl
+23 -7
View File
@@ -1,18 +1,23 @@
{ config, lib, pkgs, ... }: { ... }:
{ {
imports = imports = [
[
./hardware-configuration.nix ./hardware-configuration.nix
../../modules/cloudflare-ddns ../../modules/cloudflare-ddns
../../modules/gitea ../../modules/gitea
../../modules/msjd.nix ../../modules/msjd
]; ];
networking.hostName = "syedm"; networking.hostName = "syedm";
services.openssh.enable = true; services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
PermitRootLogin = "no";
};
};
services.caddy = { services.caddy = {
enable = true; enable = true;
@@ -27,6 +32,17 @@
''; '';
}; };
networking.firewall.allowedTCPPorts = [ 22 80 443 ]; networking = {
networking.firewall.allowedUDPPorts = []; tempAddresses = "disabled";
firewall = {
enable = true;
allowedTCPPorts = [
22
80
443
];
allowedUDPPorts = [ ];
allowPing = true;
};
};
} }
+26 -11
View File
@@ -1,28 +1,43 @@
{ config, lib, pkgs, modulesPath, ... }: {
config,
lib,
modulesPath,
...
}:
{ {
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (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.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/c5fedde6-79d4-4a44-92e4-2aa764553875"; device = "/dev/disk/by-uuid/c5fedde6-79d4-4a44-92e4-2aa764553875";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/510C-E000"; device = "/dev/disk/by-uuid/510C-E000";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = [
"fmask=0077"
"dmask=0077"
];
}; };
swapDevices = swapDevices = [
[ { device = "/dev/disk/by-uuid/712d25ef-146d-4c66-b6d4-1b64491a974e"; } { device = "/dev/disk/by-uuid/712d25ef-146d-4c66-b6d4-1b64491a974e"; }
]; ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+26 -46
View File
@@ -1,26 +1,39 @@
{ config, lib, pkgs, inputs, ... }: {
kutu,
lib,
pkgs,
...
}:
{ {
imports = imports = [
[
./hardware-configuration.nix ./hardware-configuration.nix
../../modules/ollama
../../modules/workstation/graphics.nix
../../modules/workstation/audio.nix
../../modules/workstation/xserver.nix
../../modules/workstation/keyd.nix
]; ];
boot.blacklistedKernelModules = [ environment.systemPackages = lib.mkAfter (
"nouveau" with pkgs;
]; [
boot.kernelParams = [ "video=efifb:1920x1080" ];
environment.systemPackages = lib.mkAfter (with pkgs; [
firefox firefox
xdg-utils xdg-utils
dmenu dmenu
pulseaudio pulseaudio
brightnessctl brightnessctl
maim
xclip
xsel
lunar-client
jdk21
spotify
inputs.kutu.packages.${stdenv.hostPlatform.system}.default kutu.packages.${stdenv.hostPlatform.system}.default
]); ]
);
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
nerd-fonts.hurmit nerd-fonts.hurmit
@@ -28,40 +41,7 @@
unifont unifont
]; ];
services.xserver = { programs.steam.enable = true;
enable = true;
displayManager.startx.enable = true;
videoDrivers = [ "modesetting" ];
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
];
};
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
hardware.pulseaudio.enable = false;
services.power-profiles-daemon.enable = true;
networking.hostName = "tardis"; networking.hostName = "tardis";
} }
+23 -11
View File
@@ -1,28 +1,40 @@
{ config, lib, pkgs, modulesPath, ... }: {
config,
lib,
modulesPath,
...
}:
{ {
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "vmd" "nvme" ]; boot.initrd.availableKernelModules = [
"xhci_pci"
"vmd"
"nvme"
];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/29a53eeb-befc-4512-9255-e1c5f1cf55ae"; device = "/dev/disk/by-uuid/29a53eeb-befc-4512-9255-e1c5f1cf55ae";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/0951-B8D1"; device = "/dev/disk/by-uuid/0951-B8D1";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ]; options = [
"fmask=0077"
"dmask=0077"
];
}; };
swapDevices = swapDevices = [
[ { device = "/dev/disk/by-uuid/659310da-4655-461e-a992-6e62d7a0362d"; } { device = "/dev/disk/by-uuid/659310da-4655-461e-a992-6e62d7a0362d"; }
]; ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+81 -12
View File
@@ -2,32 +2,101 @@
source /run/secrets.env source /run/secrets.env
cache=/var/lib/cloudflare-ddns/old_ip log() {
IP=$(@curl@/bin/curl -s 'https://api.ipify.org') 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.") arr=("" "git." "www." "acs.")
if [[ -f "$cache" ]]; then if [[ -n "$IP_V4" ]]; then
old_ip=$(cat "$cache") old_ip_v4=$([[ -f "$cache_v4" ]] && cat "$cache_v4" || echo "")
else
old_ip="" log "Old IPv4: ${old_ip_v4:-none}"
fi
if [[ "$IP_V4" != "$old_ip_v4" ]]; then
log "IPv4 changed, updating A records"
if [[ "$IP" != "$old_ip" ]]; then
for sub in "${arr[@]}"; do for sub in "${arr[@]}"; do
name="${sub}syedm.dev"
log "Checking A record for $name"
RECORD_ID=$(@curl@/bin/curl -s -X GET \ RECORD_ID=$(@curl@/bin/curl -s -X GET \
"https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \ "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" | @jq@/bin/jq \
| @jq@/bin/jq -r ".result[] | select(.name==\"${sub}syedm.dev\" and .type==\"A\") | .id") -r ".result[] | select(.name==\"${name}\" and .type==\"A\") | .id")
if [ -n "$RECORD_ID" ]; then if [ -n "$RECORD_ID" ]; then
log "Updating $name -> $IP_V4"
@curl@/bin/curl -s -X PUT \ @curl@/bin/curl -s -X PUT \
"https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d "{\"type\":\"A\",\"name\":\"${sub}syedm.dev\",\"content\":\"$IP\",\"ttl\":3600,\"proxied\":false}" -d "{\"type\":\"A\",\"name\":\"$name\",\"content\":\"$IP_V4\",\"ttl\":3600,\"proxied\":false}"
log "Updated $name"
else
log "No A record found for $name"
fi fi
done done
echo "$IP" > "$cache" echo "$IP_V4" > "$cache_v4"
else
log "IPv4 unchanged"
fi 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, ... }: { config, pkgs, ... }:
let let
projectDir ="${config.users.users."me".home}/main/msjd"; msjd = "${config.users.users."me".home}/main/msjd";
in in
{ {
systemd.services.msjd = { systemd.services.msjd = {
@@ -10,8 +10,8 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
WorkingDirectory = projectDir; WorkingDirectory = msjd;
ExecStart = "${pkgs.nodejs}/bin/node index.mjs"; ExecStart = "${pkgs.nodejs}/bin/node ${msjd}/index.mjs";
User = "me"; User = "me";
Restart = "always"; Restart = "always";
@@ -21,6 +21,8 @@ in
"NODE_ENV=production" "NODE_ENV=production"
"PORT=3709" "PORT=3709"
]; ];
EnvironmentFile = "/run/secrets.env";
}; };
}; };
} }
+12
View File
@@ -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.
+13
View File
@@ -7,8 +7,21 @@ let
#!${pkgs.bash}/bin/bash #!${pkgs.bash}/bin/bash
set -euo pipefail set -euo pipefail
if [[ -f "${thisDir}/secrets.age" && -f "${config.users.users."me".home}/.ssh/id_ed25519" ]]; then 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 ${pkgs.age}/bin/age -d -i "${config.users.users."me".home}/.ssh/id_ed25519" "${thisDir}/secrets.age" > /run/secrets.env
fi 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 in
{ {
+30
View File
@@ -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.
+17 -1
View File
@@ -4,8 +4,24 @@ set -euo pipefail
AGE_PRIVATE_KEY="$HOME/.ssh/id_ed25519" AGE_PRIVATE_KEY="$HOME/.ssh/id_ed25519"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RECIPIENTS_FILE="$SCRIPT_DIR/recipients.txt"
case "${1:-}" in
env)
ENCRYPTED_FILE="$SCRIPT_DIR/secrets.age" 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) TMP_FILE=$(mktemp)
+1
View File
@@ -1,2 +1,3 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPFh01e9doyInt0980V8T4xaakcSaOyXaxxYE4+oSwM me@syedm ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPFh01e9doyInt0980V8T4xaakcSaOyXaxxYE4+oSwM me@syedm
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV me@tardis ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJFUwk54CNtSLUyXSTLsIs5KXgEsjOgE4HGlA4FacKjV me@tardis
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC13WMc8GJE3lB1YJ6MtYW7PLqfT9H0uGz76pQBDxIzz me@might
+9 -6
View File
@@ -1,7 +1,10 @@
age-encryption.org/v1 age-encryption.org/v1
-> ssh-ed25519 ZK0gQw 9LrC4V6ibhKKKoE8Dtm+caoI2z6tT6oBnfNAl5qlcQ8 -> ssh-ed25519 ZK0gQw LFaoeASGNuaep1d8w4AAXK8/+ZAJ1mHWlpDXbdvy1kU
NWqFWrj49jp2e8our9rpYpHZZny8t4mKGogeRNMFCkk W41oJ2txqtPGWvu31mN/ePElPbXMhobfO8quLnJdaxA
-> ssh-ed25519 CjJArg bxVL+Is1oNN4QLRW24hPOpFFAhGmGyF611o3oASaJFk -> ssh-ed25519 CjJArg Y4Mzxv8xQVZkruFvv5PW/EuuIlw4OY5GyXpgL4U8oSU
K8a5oDyvQ4k0YeDBseS2/SmvPhu39LWyRuFkWi0gm2s 0BZUBHGccwRwmiX+kUSknxvFcVzU+08CNYDBOu672Nk
--- wjAuZMd2h4fvKfKtIdHmEYPO1sEC64tmU4uZarAK4io -> ssh-ed25519 XBr0gw c9NY4KTZ2mREDODdjQ6KcLTrjE8xmCUj8S0JWpIiAmM
Ô@àˆó,RîžÐÙ$øôG—8Š‘WÇì×®µ–žñ[ 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…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Ä
+17
View File
@@ -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;
}
+35
View File
@@ -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";
};
};
}
+13
View File
@@ -0,0 +1,13 @@
{ ... }:
{
services.keyd = {
enable = true;
keyboards.default = {
ids = [ "*" ];
settings.main = {
"leftmeta+leftshift+f23" = "rightcontrol";
};
};
};
}
+25
View File
@@ -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 = "*";
};
}