Compare commits
No commits in common. "main" and "migrate-off-digga" have entirely different histories.
main
...
migrate-of
File diff suppressed because it is too large
Load diff
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,4 +0,0 @@
|
|||
.direnv/
|
||||
.direnv/**
|
||||
.worktrees/**
|
||||
.envrc
|
||||
|
|
@ -2,28 +2,7 @@
|
|||
|
||||
var REG_NONE = NewRegistrar('none'); // No registrar.
|
||||
var DNS_BIND = NewDnsProvider('bind'); // ISC BIND.
|
||||
var DNS_HEDNS = NewDnsProvider('hedns');
|
||||
|
||||
D("lakhwara.com", REG_NONE,
|
||||
DnsProvider(DNS_HEDNS),
|
||||
DefaultTTL(300),
|
||||
//SOA('@', 'ns1.he.net.', 'hostmaster.he.net.', 2022041702, 86400, 7200, 3600000, 86400, TTL(172800)),
|
||||
A('anish', '69.61.2.203'),
|
||||
A('@', '69.61.2.203'),
|
||||
//A('coaching', '103.16.130.98'),
|
||||
TXT('anish', 'datkey=dat://1a240a14fab2bae9c85ebad29bddc04505aaba24e5fb809c2ccb4cdf71e3a7d5'),
|
||||
CNAME('fm1._domainkey', 'fm1.lakhwara.com.dkim.fmhosted.com.'),
|
||||
CNAME('fm2._domainkey', 'fm2.lakhwara.com.dkim.fmhosted.com.'),
|
||||
CNAME('fm3._domainkey', 'fm3.lakhwara.com.dkim.fmhosted.com.'),
|
||||
MX('@', 10, 'in1-smtp.messagingengine.com.'),
|
||||
MX('@', 20, 'in2-smtp.messagingengine.com.'),
|
||||
//NAMESERVER('ns1.he.net.'),
|
||||
//NAMESERVER('ns2.he.net.'),
|
||||
//NAMESERVER('ns3.he.net.'),
|
||||
//NAMESERVER('ns4.he.net.'),
|
||||
//NAMESERVER('ns5.he.net.'),
|
||||
TXT('@', 'v=spf1 include:spf.messagingengine.com ?all')
|
||||
)
|
||||
var DNS_HEDNS = NewDnsProvider('hedns');
|
||||
|
||||
D('sealight.xyz', REG_NONE, DnsProvider(DNS_HEDNS),
|
||||
DefaultTTL(86400),
|
||||
|
|
@ -34,26 +13,21 @@ D('sealight.xyz', REG_NONE, DnsProvider(DNS_HEDNS),
|
|||
//NAMESERVER('ns4.he.net.'),
|
||||
//NAMESERVER('ns5.he.net.'),
|
||||
// capsul: helix
|
||||
A('bridge', '69.61.2.203', TTL(300)),
|
||||
A('rss', '69.61.2.203', TTL(300)),
|
||||
A('git', '69.61.2.203', TTL(300)),
|
||||
A('bin', '69.61.2.203', TTL(300)),
|
||||
A('ci', '69.61.2.203', TTL(300)),
|
||||
A('write', '69.61.2.203', TTL(300)),
|
||||
A('photos', '69.61.2.203', TTL(300)),
|
||||
// vultr melbourne: lituus
|
||||
A('@', '67.219.99.225', TTL(300)),
|
||||
A('jitsi', '67.219.99.225', TTL(300)),
|
||||
A('chat', '67.219.99.225', TTL(300)),
|
||||
A('element', '67.219.99.225', TTL(300)),
|
||||
A('turn', '67.219.99.225', TTL(300)),
|
||||
A('bridge', '69.61.38.225', TTL(300)),
|
||||
A('rss', '69.61.38.225', TTL(300)),
|
||||
A('git', '69.61.38.225', TTL(300)),
|
||||
// vultr -> nulled: lituus
|
||||
A('@', '45.77.48.108', TTL(300)),
|
||||
A('jitsi', '45.77.48.108', TTL(300)),
|
||||
A('chat', '45.77.48.108', TTL(300)),
|
||||
A('element', '45.77.48.108', TTL(300)),
|
||||
A('turn', '45.77.48.108', TTL(300)),
|
||||
//nullhex free email real estate
|
||||
CNAME('key1._domainkey', 'key1.nullhex.com.'),
|
||||
CNAME('autoconfig', 'autoconfig.nullhex.com.'),
|
||||
MX('@', 10, 'smtp-in-1.nullhex.com.'),
|
||||
MX('@', 20, 'smtp-in-2.nullhex.com.'),
|
||||
TXT('@', 'v=spf1 a mx ~all'),
|
||||
TXT('_atproto', 'did=did:plc:exp76a7fe76w25gstz4lww75'),
|
||||
SRV('_autodiscover._tcp', 0, 1, 443, 'autodiscover.nullhex.com.'),
|
||||
TXT('_dmarc', 'v=DMARC1; p=quarantine;'),
|
||||
SRV('_imaps._tcp', 0, 1, 993, 'imap.nullhex.com.'),
|
||||
|
|
|
|||
0
dns/test_nullhex.sh
Normal file → Executable file
0
dns/test_nullhex.sh
Normal file → Executable file
|
|
@ -1,22 +0,0 @@
|
|||
; lakhwara.com Dumped Sun May 28 22:30:02 2023
|
||||
;
|
||||
lakhwara.com. 172800 IN SOA ns1.he.net. hostmaster.he.net. (
|
||||
2022041702 ;serial
|
||||
86400 ;refresh
|
||||
7200 ;retry
|
||||
3600000 ;expire
|
||||
86400 ) ;minimum
|
||||
anish.lakhwara.com. 86400 IN A 103.16.130.98
|
||||
anish.lakhwara.com. 86400 IN TXT datkey=dat://1a240a14fab2bae9c85ebad29bddc04505aaba24e5fb809c2ccb4cdf71e3a7d5
|
||||
fm1._domainkey.lakhwara.com. 86400 IN CNAME fm1.lakhwara.com.dkim.fmhosted.com.
|
||||
fm2._domainkey.lakhwara.com. 86400 IN CNAME fm2.lakhwara.com.dkim.fmhosted.com.
|
||||
fm3._domainkey.lakhwara.com. 86400 IN CNAME fm3.lakhwara.com.dkim.fmhosted.com.
|
||||
lakhwara.com. 86400 IN A 103.16.130.98
|
||||
lakhwara.com. 86400 IN MX 10 in1-smtp.messagingengine.com.
|
||||
lakhwara.com. 86400 IN MX 20 in2-smtp.messagingengine.com.
|
||||
lakhwara.com. 86400 IN NS ns1.he.net.
|
||||
lakhwara.com. 86400 IN NS ns2.he.net.
|
||||
lakhwara.com. 86400 IN NS ns3.he.net.
|
||||
lakhwara.com. 86400 IN NS ns4.he.net.
|
||||
lakhwara.com. 86400 IN NS ns5.he.net.
|
||||
lakhwara.com. 86400 IN TXT "v=spf1 include:spf.messagingengine.com ?all"
|
||||
1684
flake.lock
1684
flake.lock
File diff suppressed because it is too large
Load diff
355
flake.nix
355
flake.nix
|
|
@ -1,22 +1,13 @@
|
|||
{
|
||||
description = "Sealight NixOS Config";
|
||||
|
||||
nixConfig = {
|
||||
extra-substituters = [ "https://cache.numtide.com" ];
|
||||
extra-trusted-public-keys = [ "niks3.numtide.com-1:DTx8wZduET09hRmMtKdQDxNNthLQETkc/yaX7M4qK0g=" ];
|
||||
};
|
||||
description = "Your new nix config";
|
||||
|
||||
inputs = {
|
||||
# Nixpkgs
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11";
|
||||
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
|
||||
# ngipkgs.url = "github:Chickensoupwithrice/ngipkgs?ref=aynish/atomic-server-module";
|
||||
# ngipkgs-local.url = "path:/home/anish/usr/ngipkgs";
|
||||
|
||||
# Home manager
|
||||
home-manager.url = "github:nix-community/home-manager/release-25.05";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
hardware.url = "github:nixos/nixos-hardware";
|
||||
|
||||
|
|
@ -25,72 +16,27 @@
|
|||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
deploy-rs.url = "github:serokell/deploy-rs";
|
||||
deploy-rs.inputs.nixpkgs.follows = "nixpkgs";
|
||||
disko.url = "github:nix-community/disko";
|
||||
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# My Packages
|
||||
# Packages
|
||||
poonam.url = "git+ssh://gitea@git.sealight.xyz/aynish/kitaab?ref=main";
|
||||
poonam.inputs.nixpkgs.follows = "nixpkgs";
|
||||
basant.url = "git+ssh://gitea@git.sealight.xyz/aynish/basant?ref=main";
|
||||
vimwikicli.url =
|
||||
"git+ssh://gitea@git.sealight.xyz/aynish/vimwiki-cli?ref=main";
|
||||
basant.inputs.nixpkgs.follows = "nixpkgs";
|
||||
basant.inputs.poonam.follows = "poonam";
|
||||
vimwikicli.inputs.nixpkgs.follows = "nixpkgs";
|
||||
grasp.url = "git+ssh://gitea@git.sealight.xyz/aynish/grasp.git?ref=main";
|
||||
grasp.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# Matrix
|
||||
nix-matrix-appservices.url = "gitlab:coffeetables/nix-matrix-appservices";
|
||||
|
||||
# Darwin
|
||||
darwin = {
|
||||
url = "github:LnL7/nix-darwin/nix-darwin-25.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-homebrew = {
|
||||
url = "github:zhaofengli-wip/nix-homebrew";
|
||||
};
|
||||
homebrew-bundle = {
|
||||
url = "github:homebrew/homebrew-bundle";
|
||||
flake = false;
|
||||
};
|
||||
homebrew-core = {
|
||||
url = "github:homebrew/homebrew-core";
|
||||
flake = false;
|
||||
};
|
||||
homebrew-cask = {
|
||||
url = "github:homebrew/homebrew-cask";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Steam Deck / Gaming
|
||||
jovian = {
|
||||
url = "github:Jovian-Experiments/Jovian-NixOS";
|
||||
inputs.nixpkgs.follows = "unstable";
|
||||
};
|
||||
|
||||
# Tangled (atproto tools)
|
||||
tangled = {
|
||||
url = "git+https://tangled.org/@tangled.org/core";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# LLM Agents
|
||||
llm-agents.url = "github:numtide/llm-agents.nix";
|
||||
|
||||
# Others
|
||||
nur.url = "github:nix-community/NUR";
|
||||
rust-overlay = {
|
||||
url = "github:oxalica/rust-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
eww = {
|
||||
url = "github:elkowar/eww";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.rust-overlay.follows = "rust-overlay";
|
||||
};
|
||||
tidalcycles.url = "github:mitchmindtree/tidalcycles.nix";
|
||||
tidalcycles.inputs.nixpkgs.follows = "unstable";
|
||||
autohide-tdrop = {
|
||||
url = "github:I-Want-ToBelieve/autohide-tdrop";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# TODO hundred rabbits software
|
||||
# TODO needs secrets
|
||||
# dhyan.url = "git+ssh://gitea@git.sealight.xyz/aynish/dhyan?ref=main";
|
||||
|
|
@ -100,10 +46,21 @@
|
|||
# muneem.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, unstable, nixos-hardware, home-manager, deploy-rs
|
||||
, agenix, disko, basant, grasp, nix-matrix-appservices, nur, tidalcycles
|
||||
, rust-overlay, vimwikicli, autohide-tdrop, darwin, nix-homebrew, homebrew-bundle
|
||||
, homebrew-core, homebrew-cask, jovian, tangled, llm-agents, ... }@inputs:
|
||||
outputs =
|
||||
{ self
|
||||
, nixpkgs
|
||||
, unstable
|
||||
, home-manager
|
||||
, deploy-rs
|
||||
, agenix
|
||||
, basant
|
||||
, grasp
|
||||
, nur
|
||||
, tidalcycles
|
||||
, rust-overlay
|
||||
, eww
|
||||
, ...
|
||||
}@inputs:
|
||||
let
|
||||
forAllSystems = nixpkgs.lib.genAttrs [
|
||||
"aarch64-linux"
|
||||
|
|
@ -117,128 +74,52 @@
|
|||
unstable = unstable.legacyPackages.${prev.system};
|
||||
deploy = deploy-rs.packages.${prev.system}.deploy-rs;
|
||||
};
|
||||
vimwikiOverlay = final: prev: {
|
||||
vimwiki-cli = vimwikicli.packages.${prev.system}.vimwiki-cli;
|
||||
autohide-tdrop = autohide-tdrop.packages.${prev.system}.default;
|
||||
};
|
||||
|
||||
nixpkgsFor = forAllSystems (system:
|
||||
import nixpkgs {
|
||||
inherit system;
|
||||
config = {
|
||||
permittedInsecurePackages = [
|
||||
"olm-3.2.16"
|
||||
];
|
||||
allowUnfreePredicate = pkg:
|
||||
builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
"ripcord"
|
||||
"vcv-rack"
|
||||
"SunVox"
|
||||
"renoise"
|
||||
"bitwig-studio-unwrapped"
|
||||
];
|
||||
};
|
||||
overlays = [
|
||||
rust-overlay.overlays.default
|
||||
tidalcycles.overlays.default
|
||||
agenix.overlays.default
|
||||
nur.overlay
|
||||
# nix-matrix-appservices.overlay # nixpkgs has these packages and newer ones at that
|
||||
unstableOverlay
|
||||
vimwikiOverlay
|
||||
self.overlays.additions
|
||||
self.overlays.modifications
|
||||
];
|
||||
});
|
||||
nixpkgsFor = forAllSystems (system: import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
"ripcord"
|
||||
"VCV-Rack"
|
||||
"SunVox"
|
||||
"renoise"
|
||||
];
|
||||
# config.permittedInsecurePackages = [
|
||||
# "python3.10-django-3.1.14" # Needed for archivebox deployments on curve
|
||||
# # Check when archive box updates it's dependeny
|
||||
# ];
|
||||
overlays = [
|
||||
rust-overlay.overlays.default
|
||||
tidalcycles.overlays.default
|
||||
agenix.overlay
|
||||
nur.overlay
|
||||
unstableOverlay
|
||||
self.overlays.additions
|
||||
self.overlays.modifications
|
||||
];
|
||||
});
|
||||
|
||||
# for when space matters
|
||||
litePkgsFor = forAllSystems (system:
|
||||
import nixpkgs {
|
||||
inherit system;
|
||||
# config.permittedInsecurePackages = [
|
||||
# "forgejo-1.19.4-0" # Needed for archivebox deployments on curve
|
||||
# # Check when archive box updates it's dependeny
|
||||
# ];
|
||||
overlays = [
|
||||
agenix.overlays.default
|
||||
tangled.overlays.default # atproto tools only on lite deployments
|
||||
self.overlays.additions
|
||||
self.overlays.modifications
|
||||
tidalcycles.overlays.default # needed for nvim which comes pre-installed lol
|
||||
];
|
||||
});
|
||||
|
||||
# Package set for Darwin systems
|
||||
darwinPkgsFor = forAllSystems (system:
|
||||
import nixpkgs {
|
||||
inherit system;
|
||||
config = {
|
||||
permittedInsecurePackages = [
|
||||
"olm-3.2.16"
|
||||
];
|
||||
allowUnfreePredicate = pkg:
|
||||
builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
"ripcord"
|
||||
"vcv-rack"
|
||||
"SunVox"
|
||||
"renoise"
|
||||
];
|
||||
};
|
||||
overlays = [
|
||||
rust-overlay.overlays.default
|
||||
tidalcycles.overlays.default
|
||||
agenix.overlays.default
|
||||
nur.overlay
|
||||
unstableOverlay
|
||||
vimwikiOverlay
|
||||
self.overlays.additions
|
||||
self.overlays.modifications
|
||||
];
|
||||
});
|
||||
|
||||
# Package set for Steam Deck (gaming-focused)
|
||||
deckPkgsFor = forAllSystems (system:
|
||||
import unstable {
|
||||
inherit system;
|
||||
config = {
|
||||
permittedInsecurePackages = [
|
||||
"olm-3.2.16"
|
||||
];
|
||||
allowUnfreePredicate = pkg:
|
||||
builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
"ripcord"
|
||||
"vcv-rack"
|
||||
"SunVox"
|
||||
"renoise"
|
||||
"steam"
|
||||
"steam-original"
|
||||
"steam-runtime"
|
||||
"steamdeck-hw-theme"
|
||||
"steam-jupiter-unwrapped"
|
||||
];
|
||||
};
|
||||
overlays = [
|
||||
rust-overlay.overlays.default
|
||||
tidalcycles.overlays.default
|
||||
agenix.overlays.default
|
||||
nur.overlay
|
||||
unstableOverlay
|
||||
vimwikiOverlay
|
||||
self.overlays.additions
|
||||
self.overlays.modifications
|
||||
];
|
||||
});
|
||||
in {
|
||||
litePkgsFor = forAllSystems (system: import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [
|
||||
agenix.overlay
|
||||
tidalcycles.overlays.default # needed for nvim which comes pre-installed lol
|
||||
];
|
||||
});
|
||||
in
|
||||
{
|
||||
# Your custom packages
|
||||
# Acessible through 'nix build', 'nix shell', etc
|
||||
packages = forAllSystems (system:
|
||||
let pkgs = nixpkgsFor.${system};
|
||||
in import ./pkgs { pkgs = pkgs; });
|
||||
in import ./pkgs { pkgs = pkgs; }
|
||||
);
|
||||
# Devshell for bootstrapping
|
||||
# Acessible through 'nix develop' or 'nix-shell' (legacy)
|
||||
devShells = forAllSystems (system:
|
||||
let pkgs = nixpkgsFor.${system};
|
||||
in import ./shell.nix { pkgs = pkgs; });
|
||||
in import ./shell.nix { pkgs = pkgs; }
|
||||
);
|
||||
|
||||
# Your custom packages and modifications, exported as overlays
|
||||
overlays = import ./overlays;
|
||||
|
|
@ -260,15 +141,10 @@
|
|||
agenix.nixosModules.age
|
||||
self.nixosModules.backup
|
||||
self.nixosModules.wireguard
|
||||
self.nixosModules.wallabag
|
||||
nixos-hardware.nixosModules.lenovo-thinkpad-x270
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
nix.registry.nixpkgs.flake = nixpkgs;
|
||||
nix.registry.unstable.flake = unstable;
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.extraSpecialArgs = { inherit inputs; };
|
||||
home-manager.users.anish = import ./home/gui;
|
||||
}
|
||||
];
|
||||
|
|
@ -277,18 +153,17 @@
|
|||
helix = nixpkgs.lib.nixosSystem rec {
|
||||
specialArgs = { inherit inputs self; };
|
||||
system = "x86_64-linux";
|
||||
pkgs = litePkgsFor.${system};
|
||||
pkgs = nixpkgsFor.${system};
|
||||
modules = [
|
||||
./hosts/helix
|
||||
agenix.nixosModules.age
|
||||
self.nixosModules.backup
|
||||
self.nixosModules.wireguard
|
||||
basant.nixosModule
|
||||
# self.nixosModules.microbin
|
||||
disko.nixosModules.disko
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
nixpkgs.flake.setNixPath = false;
|
||||
nixpkgs.flake.setFlakeRegistry = false;
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.anish = import ./home/core;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
|
@ -302,7 +177,6 @@
|
|||
agenix.nixosModules.age
|
||||
self.nixosModules.backup
|
||||
self.nixosModules.hesienbridge
|
||||
nix-matrix-appservices.nixosModule
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
|
|
@ -312,6 +186,19 @@
|
|||
];
|
||||
};
|
||||
|
||||
cube = nixpkgs.lib.nixosSystem rec {
|
||||
specialArgs = { inherit inputs self; };
|
||||
system = "x86_64-linux";
|
||||
pkgs = litePkgsFor.${system};
|
||||
modules = [
|
||||
./hosts/cube
|
||||
agenix.nixosModules.age
|
||||
self.nixosModules.backup
|
||||
self.nixosModules.wireguard
|
||||
basant.nixosModule
|
||||
];
|
||||
};
|
||||
|
||||
box = nixpkgs.lib.nixosSystem rec {
|
||||
specialArgs = { inherit inputs self; };
|
||||
system = "x86_64-linux";
|
||||
|
|
@ -321,62 +208,14 @@
|
|||
agenix.nixosModules.age
|
||||
self.nixosModules.backup
|
||||
self.nixosModules.wireguard
|
||||
self.nixosModules.gonic
|
||||
self.nixosModules.gpodder2go
|
||||
self.nixosModules.wallabag
|
||||
self.nixosModules.ulogger-server
|
||||
self.nixosModules.gonic
|
||||
grasp.nixosModule
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
nix.registry.nixpkgs.flake = nixpkgs;
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.extraSpecialArgs = { inherit inputs; };
|
||||
home-manager.users.anish = import ./home/dev;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# new version of unstable has many changes I couldn't be bothered to deal with rn
|
||||
#deck = unstable.lib.nixosSystem rec {
|
||||
# specialArgs = { inherit inputs self; };
|
||||
# system = "x86_64-linux";
|
||||
# pkgs = deckPkgsFor.${system};
|
||||
# modules = [
|
||||
# ./hosts/deck
|
||||
# jovian.nixosModules.default
|
||||
# self.nixosModules.wireguard
|
||||
# agenix.nixosModules.age
|
||||
# self.nixosModules.backup
|
||||
# home-manager.nixosModules.home-manager
|
||||
# {
|
||||
# nix.registry.nixpkgs.flake = unstable;
|
||||
# home-manager.useGlobalPkgs = true;
|
||||
# home-manager.useUserPackages = true;
|
||||
# home-manager.users.anish = import ./home/gui;
|
||||
# }
|
||||
# ];
|
||||
#};
|
||||
};
|
||||
|
||||
# Darwin configuration entrypoint
|
||||
darwinConfigurations = {
|
||||
"Anishs-MacBook-Pro" = darwin.lib.darwinSystem rec {
|
||||
system = "aarch64-darwin";
|
||||
pkgs = darwinPkgsFor.${system};
|
||||
specialArgs = { inherit inputs self; };
|
||||
modules = [
|
||||
./hosts/darwin
|
||||
home-manager.darwinModules.home-manager
|
||||
agenix.darwinModules.default
|
||||
{
|
||||
users.users.anishlakhwara.home = "/Users/anishlakhwara";
|
||||
home-manager = {
|
||||
users.anishlakhwara = import ./home/darwin;
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
};
|
||||
home-manager.users.anish = import ./home/core;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
|
@ -386,48 +225,46 @@
|
|||
# Available through 'home-manager --flake .#your-username@your-hostname'
|
||||
homeConfigurations = {
|
||||
"anish@work" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs =
|
||||
nixpkgsFor."x86_64-linux"; # Home-manager requires 'pkgs' instance
|
||||
pkgs = nixpkgsFor."x86_64-linux"; # Home-manager requires 'pkgs' instance
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
modules = [ ./home/core.nix ./home/profiles/firefox ];
|
||||
modules = [
|
||||
./home/core.nix
|
||||
./home/profiles/firefox
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
deploy.nodes = {
|
||||
box = {
|
||||
hostname = "mossnet.lan";
|
||||
autoRollback = false;
|
||||
magicRollback = false;
|
||||
remoteBuild = true;
|
||||
profiles.system = {
|
||||
user = "root";
|
||||
path = deploy-rs.lib.x86_64-linux.activate.nixos
|
||||
self.nixosConfigurations.box;
|
||||
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.box;
|
||||
};
|
||||
};
|
||||
lituus = {
|
||||
hostname = "67.219.99.225";
|
||||
autoRollback = false;
|
||||
remoteBuild = true;
|
||||
hostname = "sealight.xyz";
|
||||
profiles.system = {
|
||||
user = "root";
|
||||
path = deploy-rs.lib.x86_64-linux.activate.nixos
|
||||
self.nixosConfigurations.lituus;
|
||||
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.lituus;
|
||||
};
|
||||
};
|
||||
helix = {
|
||||
hostname = "git.sealight.xyz";
|
||||
autoRollback = false;
|
||||
magicRollback = false;
|
||||
profiles.system = {
|
||||
user = "root";
|
||||
path = deploy-rs.lib.x86_64-linux.activate.nixos
|
||||
self.nixosConfigurations.helix;
|
||||
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.helix;
|
||||
};
|
||||
};
|
||||
cube = {
|
||||
hostname = "lakhwara.com";
|
||||
profiles.system = {
|
||||
user = "root";
|
||||
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cube;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# checks = builtins.mapAttrs
|
||||
# (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
||||
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
{ self, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../profiles/nvim
|
||||
../profiles/cli
|
||||
../profiles/direnv
|
||||
../profiles/git
|
||||
../profiles/tmux
|
||||
../profiles/task
|
||||
];
|
||||
home.stateVersion = "22.05";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,156 +0,0 @@
|
|||
# You can use it to add commands that run after login to macOS user session.
|
||||
# 'start-at-login' needs to be 'true' for 'after-login-command' to work
|
||||
# Available commands: https://nikitabobko.github.io/AeroSpace/commands
|
||||
after-login-command = []
|
||||
|
||||
# You can use it to add commands that run after AeroSpace startup.
|
||||
# 'after-startup-command' is run after 'after-login-command'
|
||||
# Available commands : https://nikitabobko.github.io/AeroSpace/commands
|
||||
after-startup-command = []
|
||||
|
||||
# Start AeroSpace at login
|
||||
start-at-login = true
|
||||
|
||||
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
|
||||
enable-normalization-flatten-containers = true
|
||||
enable-normalization-opposite-orientation-for-nested-containers = true
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
|
||||
# The 'accordion-padding' specifies the size of accordion padding
|
||||
# You can set 0 to disable the padding feature
|
||||
accordion-padding = 10
|
||||
|
||||
# Possible values: tiles|accordion
|
||||
default-root-container-layout = 'tiles'
|
||||
|
||||
# Possible values: horizontal|vertical|auto
|
||||
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
|
||||
# tall monitor (anything higher than wide) gets vertical orientation
|
||||
default-root-container-orientation = 'auto'
|
||||
|
||||
# Mouse follows focus when focused monitor changes
|
||||
# Drop it from your config, if you don't like this behavior
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
|
||||
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
|
||||
# Fallback value (if you omit the key): on-focused-monitor-changed = []
|
||||
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
||||
|
||||
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
|
||||
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
|
||||
# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app
|
||||
automatically-unhide-macos-hidden-apps = true
|
||||
|
||||
# Possible values: (qwerty|dvorak)
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
||||
[key-mapping]
|
||||
preset = 'dvorak'
|
||||
|
||||
# Gaps between windows (inner-*) and between monitor edges (outer-*).
|
||||
# Possible values:
|
||||
# - Constant: gaps.outer.top = 8
|
||||
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
|
||||
# In this example, 24 is a default value when there is no match.
|
||||
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
|
||||
[gaps]
|
||||
inner.horizontal = 0
|
||||
inner.vertical = 0
|
||||
outer.left = 0
|
||||
outer.bottom = 0
|
||||
outer.top = 0
|
||||
outer.right = 0
|
||||
|
||||
# 'main' binding mode declaration
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
# 'main' binding mode must be always presented
|
||||
# Fallback value (if you omit the key): mode.main.binding = {}
|
||||
[mode.main.binding]
|
||||
|
||||
# All possible keys:
|
||||
# - Letters. a, b, c, ..., z
|
||||
# - Numbers. 0, 1, 2, ..., 9
|
||||
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
|
||||
# - F-keys. f1, f2, ..., f20
|
||||
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
|
||||
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
|
||||
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
|
||||
# keypadMinus, keypadMultiply, keypadPlus
|
||||
# - Arrows. left, down, up, right
|
||||
|
||||
# All possible modifiers: cmd, alt, ctrl, shift
|
||||
|
||||
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
|
||||
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
|
||||
alt-enter = 'exec-and-forget open -n /System/Applications/Utilities/Kitty.app'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
|
||||
alt-slash = 'layout tiles horizontal vertical'
|
||||
alt-comma = 'layout accordion horizontal vertical'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
|
||||
# alt-h = 'focus left'
|
||||
# alt-j = 'focus down'
|
||||
# alt-k = 'focus up'
|
||||
# alt-l = 'focus right'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move
|
||||
alt-shift-h = 'move left'
|
||||
alt-shift-j = 'move down'
|
||||
alt-shift-k = 'move up'
|
||||
alt-shift-l = 'move right'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
|
||||
alt-shift-minus = 'resize smart -50'
|
||||
alt-shift-equal = 'resize smart +50'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
||||
alt-1 = 'workspace 1'
|
||||
alt-2 = 'workspace 2'
|
||||
alt-3 = 'workspace 3'
|
||||
alt-4 = 'workspace 4'
|
||||
alt-5 = 'workspace 5'
|
||||
alt-6 = 'workspace 6'
|
||||
alt-7 = 'workspace 7'
|
||||
alt-8 = 'workspace 8'
|
||||
alt-9 = 'workspace 9'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
|
||||
alt-shift-1 = 'move-node-to-workspace 1'
|
||||
alt-shift-2 = 'move-node-to-workspace 2'
|
||||
alt-shift-3 = 'move-node-to-workspace 3'
|
||||
alt-shift-4 = 'move-node-to-workspace 4'
|
||||
alt-shift-5 = 'move-node-to-workspace 5'
|
||||
alt-shift-6 = 'move-node-to-workspace 6'
|
||||
alt-shift-7 = 'move-node-to-workspace 7'
|
||||
alt-shift-8 = 'move-node-to-workspace 8'
|
||||
alt-shift-9 = 'move-node-to-workspace 9'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth
|
||||
alt-tab = 'workspace-back-and-forth'
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor
|
||||
alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||
alt-shift-semicolon = 'mode service'
|
||||
|
||||
# 'service' binding mode declaration.
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
[mode.service.binding]
|
||||
esc = ['reload-config', 'mode main']
|
||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
|
||||
backspace = ['close-all-windows-but-current', 'mode main']
|
||||
|
||||
# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2
|
||||
#s = ['layout sticky tiling', 'mode main']
|
||||
|
||||
alt-shift-h = ['join-with left', 'mode main']
|
||||
alt-shift-j = ['join-with down', 'mode main']
|
||||
alt-shift-k = ['join-with up', 'mode main']
|
||||
alt-shift-l = ['join-with right', 'mode main']
|
||||
|
||||
down = 'volume down'
|
||||
up = 'volume up'
|
||||
shift-down = ['volume set 0', 'mode main']
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
{ self, pkgs, inputs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../profiles/nvim
|
||||
../profiles/cli
|
||||
../profiles/direnv
|
||||
../profiles/git
|
||||
../profiles/task
|
||||
../profiles/kitty
|
||||
../profiles/tmux
|
||||
../profiles/opencode
|
||||
# ../profiles/firefox
|
||||
];
|
||||
|
||||
home.username = "anishlakhwara";
|
||||
home.homeDirectory = "/Users/anishlakhwara";
|
||||
home.stateVersion = "22.05";
|
||||
|
||||
programs.zsh.initContent = ''
|
||||
PATH=/Users/anishlakhwara/.sourcegraph/bin:/Users/anishlakhwara/.sourcegraph/sg.zsh_autocomplete:/Users/anishlakhwara/google-cloud-sdk/bin:/Users/anishlakhwara/google-cloud-sdk/completion.zsh.inc:/Users/anishlakhwara/google-cloud-sdk/path.zsh.inc:/Users/anishlakhwara/.sg:/opt/homebrew/bin:$PATH
|
||||
'';
|
||||
|
||||
# Managing sketchybar plugins from home-manager
|
||||
home.file = {
|
||||
".config/sketchybar" = {
|
||||
source = ./sketchybar;
|
||||
recursive = true;
|
||||
};
|
||||
".config/aerospace" = {
|
||||
source = ./aerospace;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
COLOR="$CYAN"
|
||||
|
||||
sketchybar --add item battery right \
|
||||
--set battery \
|
||||
update_freq=60 \
|
||||
icon.color="$COLOR" \
|
||||
icon.padding_left=10 \
|
||||
label.padding_right=10 \
|
||||
label.color="$COLOR" \
|
||||
background.height=26 \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.padding_right=5 \
|
||||
background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$COLOR" \
|
||||
background.color="$BAR_COLOR" \
|
||||
background.drawing=on \
|
||||
script="$PLUGIN_DIR/power.sh" \
|
||||
--subscribe battery power_source_change
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
COLOR="$CYAN"
|
||||
|
||||
sketchybar --add item battery right \
|
||||
--set battery \
|
||||
update_freq=60 \
|
||||
icon.color="$COLOR" \
|
||||
icon.padding_left=10 \
|
||||
label.padding_right=10 \
|
||||
label.color="$COLOR" \
|
||||
background.height=26 \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.padding_right=5 \
|
||||
background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$COLOR" \
|
||||
background.color="$BAR_COLOR" \
|
||||
background.drawing=on \
|
||||
script="$PLUGIN_DIR/power.sh" \
|
||||
--subscribe battery power_source_change
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
COLOR="$BLUE"
|
||||
|
||||
sketchybar --add item calendar right \
|
||||
--set calendar update_freq=15 \
|
||||
icon.color="$COLOR" \
|
||||
icon.padding_left=10 \
|
||||
label.color="$COLOR" \
|
||||
label.padding_right=10 \
|
||||
background.height=26 \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.padding_right=5 \
|
||||
background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$COLOR" \
|
||||
background.color="$BAR_COLOR" \
|
||||
background.drawing=on \
|
||||
script="$PLUGIN_DIR/calendar.sh"
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
COLOR="$MAGENTA"
|
||||
|
||||
sketchybar --add item clock right \
|
||||
--set clock update_freq=60 \
|
||||
icon.padding_left=10 \
|
||||
icon.color="$COLOR" \
|
||||
icon=" " \
|
||||
label.color="$COLOR" \
|
||||
label.padding_right=5 \
|
||||
label.width=43 \
|
||||
align=center \
|
||||
background.height=26 \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.padding_right=2 \
|
||||
background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$COLOR" \
|
||||
background.color="$BAR_COLOR" \
|
||||
background.drawing=on \
|
||||
script="$PLUGIN_DIR/clock.sh"
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
COLOR="$YELLOW"
|
||||
|
||||
sketchybar --add item cpu right \
|
||||
--set cpu \
|
||||
update_freq=3 \
|
||||
icon.color="$COLOR" \
|
||||
icon.padding_left=10 \
|
||||
label.color="$COLOR" \
|
||||
label.padding_right=10 \
|
||||
background.height=26 \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.padding_right=5 \
|
||||
background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$COLOR" \
|
||||
background.color="$BAR_COLOR" \
|
||||
background.drawing=on \
|
||||
script="$PLUGIN_DIR/cpu.sh"
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
COLOR="$WHITE"
|
||||
|
||||
sketchybar \
|
||||
--add item front_app left \
|
||||
--set front_app script="$PLUGIN_DIR/front_app.sh" \
|
||||
icon.drawing=off \
|
||||
background.height=26 \
|
||||
background.padding_left=0 \
|
||||
background.padding_right=10 \
|
||||
background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$COLOR" \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.color="$BAR_COLOR" \
|
||||
label.color="$COLOR" \
|
||||
label.padding_left=10 \
|
||||
label.padding_right=10 \
|
||||
associated_display=active \
|
||||
--subscribe front_app front_app_switched
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10")
|
||||
|
||||
sketchybar --add item spacer.1 left \
|
||||
--set spacer.1 background.drawing=off \
|
||||
label.drawing=off \
|
||||
icon.drawing=off \
|
||||
width=10
|
||||
|
||||
for i in {0..9}; do
|
||||
sid=$((i + 1))
|
||||
sketchybar --add space space.$sid left \
|
||||
--set space.$sid associated_space=$sid \
|
||||
label.drawing=off \
|
||||
icon.padding_left=10 \
|
||||
icon.padding_right=10 \
|
||||
background.padding_left=-5 \
|
||||
background.padding_right=-5 \
|
||||
script="$PLUGIN_DIR/space.sh"
|
||||
done
|
||||
|
||||
sketchybar --add item spacer.2 left \
|
||||
--set spacer.2 background.drawing=off \
|
||||
label.drawing=off \
|
||||
icon.drawing=off \
|
||||
width=5
|
||||
|
||||
sketchybar --add bracket spaces '/space.*/' \
|
||||
--set spaces background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$RED" \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.color="$BAR_COLOR" \
|
||||
background.height=26 \
|
||||
background.drawing=on
|
||||
|
||||
sketchybar --add item separator left \
|
||||
--set separator icon= \
|
||||
icon.font="$FONT:Regular:16.0" \
|
||||
background.padding_left=26 \
|
||||
background.padding_right=15 \
|
||||
label.drawing=off \
|
||||
associated_display=active \
|
||||
icon.color="$YELLOW"
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
COLOR="$ORANGE"
|
||||
|
||||
sketchybar --add item spotify q \
|
||||
--set spotify \
|
||||
scroll_texts=on \
|
||||
icon= \
|
||||
icon.color="$COLOR" \
|
||||
icon.padding_left=10 \
|
||||
background.color="$BAR_COLOR" \
|
||||
background.height=26 \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$COLOR" \
|
||||
background.padding_right=-5 \
|
||||
background.drawing=on \
|
||||
label.padding_right=10 \
|
||||
label.max_chars=20 \
|
||||
associated_display=active \
|
||||
updates=on \
|
||||
script="$PLUGIN_DIR/spotify.sh" \
|
||||
--subscribe spotify media_change
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
COLOR="$GREEN"
|
||||
|
||||
sketchybar \
|
||||
--add item sound right \
|
||||
--set sound \
|
||||
icon.color="$COLOR" \
|
||||
icon.padding_left=10 \
|
||||
label.color="$COLOR" \
|
||||
label.padding_right=10 \
|
||||
background.height=26 \
|
||||
background.corner_radius="$CORNER_RADIUS" \
|
||||
background.padding_right=5 \
|
||||
background.border_width="$BORDER_WIDTH" \
|
||||
background.border_color="$COLOR" \
|
||||
background.color="$BAR_COLOR" \
|
||||
background.drawing=on \
|
||||
script="$PLUGIN_DIR/sound.sh" \
|
||||
--subscribe sound volume_change
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
sketchybar -m --add item vpn right \
|
||||
--set vpn icon= \
|
||||
update_freq=5 \
|
||||
script="~/.config/sketchybar/plugins/vpn.sh"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
sketchybar --set "$NAME" icon=" " label="$(date '+%a %d. %b')"
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
LABEL=$(date '+%H:%M')
|
||||
sketchybar --set "$NAME" icon=" " label="$LABEL"
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
sketchybar --set "$NAME" icon="" label="$(ps -A -o %cpu | awk '{s+=$1} END {s /= 8} END {printf "%.1f%%\n", s}')"
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
case "$SENDER" in
|
||||
"front_app_switched")
|
||||
sketchybar --set "$NAME" label="$INFO"
|
||||
;;
|
||||
esac
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
PERCENTAGE=$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1)
|
||||
CHARGING=$(pmset -g batt | grep 'AC Power')
|
||||
|
||||
if [ "$PERCENTAGE" = "" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
case ${PERCENTAGE} in
|
||||
9[0-9] | 100)
|
||||
ICON=" "
|
||||
;;
|
||||
[6-8][0-9])
|
||||
ICON=" "
|
||||
;;
|
||||
[3-5][0-9])
|
||||
ICON=" "
|
||||
;;
|
||||
[1-2][0-9])
|
||||
ICON=" "
|
||||
;;
|
||||
*) ICON=" " ;;
|
||||
esac
|
||||
|
||||
if [ "$CHARGING" != "" ]; then
|
||||
ICON=""
|
||||
fi
|
||||
|
||||
sketchybar --set "$NAME" icon="$ICON" label="${PERCENTAGE}% "
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
VOLUME=$(osascript -e "output volume of (get volume settings)")
|
||||
MUTED=$(osascript -e "output muted of (get volume settings)")
|
||||
|
||||
if [ "$MUTED" != "false" ]; then
|
||||
ICON=" "
|
||||
VOLUME=0
|
||||
else
|
||||
case ${VOLUME} in
|
||||
100) ICON=" " ;;
|
||||
[5-9]*) ICON=" " ;;
|
||||
[0-9]*) ICON=" " ;;
|
||||
*) ICON=" " ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
sketchybar -m \
|
||||
--set "$NAME" icon=$ICON \
|
||||
--set "$NAME" label="$VOLUME%"
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source "$HOME/.config/sketchybar/variables.sh" # Loads all defined colors
|
||||
|
||||
SPACE_ICONS=(" " " " " " " " " " "6" "7" "8" "9" "10")
|
||||
|
||||
SPACE_CLICK_SCRIPT="yabai -m space --focus $SID 2>/dev/null"
|
||||
|
||||
if [ "$SELECTED" = "true" ]; then
|
||||
sketchybar --animate tanh 5 --set "$NAME" \
|
||||
icon.color="$RED" \
|
||||
icon="${SPACE_ICONS[$SID - 1]}" \
|
||||
click_script="$SPACE_CLICK_SCRIPT"
|
||||
else
|
||||
sketchybar --animate tanh 5 --set "$NAME" \
|
||||
icon.color="$COMMENT" \
|
||||
icon="${SPACE_ICONS[$SID - 1]}" \
|
||||
click_script="$SPACE_CLICK_SCRIPT"
|
||||
fi
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
STATE="$(echo "$INFO" | jq -r '.state')"
|
||||
APP="$(echo "$INFO" | jq -r '.app')"
|
||||
|
||||
if [ "$STATE" = "playing" ] && [ "$APP" == "Spotify" ]; then
|
||||
MEDIA="$(echo "$INFO" | jq -r '.title + " - " + .artist')"
|
||||
sketchybar --set "$NAME" label="$MEDIA" drawing=on
|
||||
else
|
||||
sketchybar --set "$NAME" drawing=off
|
||||
fi
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
### You need to edit sudoers file to run wg-quick without password
|
||||
|
||||
# %admin ALL = (ALL) NOPASSWD: /nix/store/s2qw0sxax8pckbzmyw6wrarahmx65bq9-wireguard-tools-1.0.20210914/bin/wg-quick
|
||||
|
||||
WG_PIDFILE="/var/run/wireguard/wg0.name"
|
||||
|
||||
if [ -f $WG_PIDFILE ]; then
|
||||
sketchybar -m --set vpn icon= \
|
||||
label="$VPN" \
|
||||
drawing=on \
|
||||
click_script="~/.config/sketchybar/plugins/wg_off.sh"
|
||||
else
|
||||
sketchybar -m --set vpn drawing=off click_script="~/.config/sketchybar/plugins/wg_on.sh"
|
||||
fi
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
### You need to edit sudoers file to run wg-quick without password
|
||||
|
||||
# %admin ALL = (ALL) NOPASSWD: /nix/store/s2qw0sxax8pckbzmyw6wrarahmx65bq9-wireguard-tools-1.0.20210914/bin/wg-quick
|
||||
|
||||
sudo wg-quick down wg0
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
### You need to edit sudoers file to run wg-quick without password
|
||||
|
||||
# %admin ALL = (ALL) NOPASSWD: /nix/store/s2qw0sxax8pckbzmyw6wrarahmx65bq9-wireguard-tools-1.0.20210914/bin/wg-quick
|
||||
|
||||
sudo wg-quick up wg0
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
# Color Palette
|
||||
# Tokyonight Night
|
||||
BLACK=0xff24283b
|
||||
WHITE=0xffa9b1d6
|
||||
MAGENTA=0xffbb9af7
|
||||
BLUE=0xff7aa2f7
|
||||
CYAN=0xff7dcfff
|
||||
GREEN=0xff9ece6a
|
||||
YELLOW=0xffe0af68
|
||||
ORANGE=0xffff9e64
|
||||
RED=0xfff7768e
|
||||
BAR_COLOR=0xff1a1b26
|
||||
COMMENT=0xff565f89
|
||||
|
||||
# Tokyonight Day
|
||||
# BLACK=0xffe9e9ed
|
||||
# WHITE=0xff3760bf
|
||||
# MAGENTA=0xff9854f1
|
||||
# BLUE=0xff2e7de9
|
||||
# CYAN=0xff007197
|
||||
# GREEN=0xff587539
|
||||
# YELLOW=0xff8c6c3e
|
||||
# ORANGE=0xffb15c00
|
||||
# RED=0xfff52a65
|
||||
# BAR_COLOR=0xffe1e2e7
|
||||
|
||||
TRANSPARENT=0x00000000
|
||||
|
||||
# General bar colors
|
||||
ICON_COLOR=$WHITE # Color of all icons
|
||||
LABEL_COLOR=$WHITE # Color of all labels
|
||||
|
||||
ITEM_DIR="$HOME/.config/sketchybar/items"
|
||||
PLUGIN_DIR="$HOME/.config/sketchybar/plugins"
|
||||
|
||||
FONT="Iosevka Nerd Font"
|
||||
|
||||
PADDINGS=3
|
||||
|
||||
POPUP_BORDER_WIDTH=2
|
||||
POPUP_CORNER_RADIUS=11
|
||||
POPUP_BACKGROUND_COLOR=$BLACK
|
||||
POPUP_BORDER_COLOR=$COMMENT
|
||||
|
||||
CORNER_RADIUS=15
|
||||
BORDER_WIDTH=2
|
||||
|
||||
SHADOW=on
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{ self, pkgs, inputs, ... }: {
|
||||
imports =
|
||||
[ ../profiles/cli ../profiles/nvim ../profiles/direnv ../profiles/git ../profiles/opencode ];
|
||||
home.stateVersion = "22.05";
|
||||
}
|
||||
|
|
@ -1,28 +1,10 @@
|
|||
{ pkgs, inputs, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../core
|
||||
../profiles/nvim
|
||||
../profiles/firefox
|
||||
../profiles/desktop
|
||||
../profiles/email
|
||||
../profiles/cal
|
||||
../profiles/sync/kitaab
|
||||
../profiles/ssh
|
||||
../profiles/task
|
||||
../profiles/opencode
|
||||
];
|
||||
|
||||
# GPG configuration for user session
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
pinentryPackage = pkgs.pinentry-curses;
|
||||
enableSshSupport = true;
|
||||
defaultCacheTtl = 28800; # 8 hours
|
||||
maxCacheTtl = 86400; # 24 hours
|
||||
};
|
||||
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
working_directory=$(pwd)
|
||||
vim_directory="${working_directory//\//%}.vim"
|
||||
trash "$HOME/.local/share/nvim/sessions/${vim_directory}"
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
`dasht-docsets-intstall`
|
||||
|
||||
Bash
|
||||
Clojure
|
||||
Docker
|
||||
Elixir
|
||||
HTML
|
||||
JavaScript
|
||||
Jinja
|
||||
Lua_5.4
|
||||
Nginx
|
||||
OpenGL_4
|
||||
PostgreSQL
|
||||
Processing
|
||||
Python_3
|
||||
React
|
||||
Rust
|
||||
TypeScript
|
||||
Vim
|
||||
|
|
@ -7,11 +7,10 @@
|
|||
dasht
|
||||
dosfstools
|
||||
#git
|
||||
git-machete
|
||||
bottom
|
||||
gptfdisk
|
||||
difftastic
|
||||
starship
|
||||
iputils
|
||||
jq
|
||||
manix
|
||||
moreutils
|
||||
|
|
@ -27,12 +26,10 @@
|
|||
iftop
|
||||
wget
|
||||
curl
|
||||
eza
|
||||
exa
|
||||
bat
|
||||
fd
|
||||
ncdu
|
||||
dust
|
||||
# dia-cli
|
||||
duf
|
||||
trash-cli
|
||||
nix-index
|
||||
|
|
@ -42,6 +39,7 @@
|
|||
file
|
||||
lsof
|
||||
atool
|
||||
strace
|
||||
zip
|
||||
unzip
|
||||
rsync
|
||||
|
|
@ -52,22 +50,17 @@
|
|||
less
|
||||
gdb
|
||||
xxd
|
||||
taskwarrior2
|
||||
taskwarrior
|
||||
yt-dlp
|
||||
gnupg
|
||||
syncthing
|
||||
dijo
|
||||
nixfmt-rfc-style
|
||||
nix-tree
|
||||
#ssb-patchwork
|
||||
fontconfig
|
||||
pandoc
|
||||
taskwarrior-tui
|
||||
# vimwiki-cli
|
||||
zk
|
||||
|
||||
(pkgs.writeScriptBin "jq-repl" ''
|
||||
#!/usr/bin/env bash
|
||||
if [[ -z $1 ]] || [[ $1 == "-" ]]; then
|
||||
if [[ -z $1 ]] || [[ $1 == "-" ]] then
|
||||
input=$(mktemp)
|
||||
trap "rm -f $input" EXIT
|
||||
cat /dev/stdin > $input
|
||||
|
|
@ -77,98 +70,43 @@
|
|||
|
||||
echo "" \ | fzf --phony --preview-window="up:90%" --print-query --preview "jq --color-output -r {q} $input"
|
||||
'')
|
||||
(pkgs.writeScriptBin "clear-vim-trash" (builtins.readFile ./bin/clear-vim-trash.sh))
|
||||
(pkgs.writeScriptBin "flakify" ''
|
||||
#!/usr/bin/env zsh
|
||||
if [ ! -e flake.nix ]; then
|
||||
nix flake new -t github:nix-community/nix-direnv .
|
||||
elif [ ! -e .envrc ]; then
|
||||
echo "use flake" > .envrc
|
||||
direnv allow
|
||||
fi
|
||||
vim flake.nix
|
||||
'')
|
||||
(pkgs.writeScriptBin "mx" ''
|
||||
#!/usr/bin/env bash
|
||||
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | fzf --preview="manix '{}'" | xargs manix
|
||||
'')
|
||||
(pkgs.writeScriptBin "monitor" ''
|
||||
connect() {
|
||||
# Turn it on if it was off
|
||||
xrandr --output HDMI-2 --auto
|
||||
xrandr --output HDMI-2 --same-as eDP-1
|
||||
xrandr --output eDP-1 --off
|
||||
pkill -9 polybar
|
||||
feh --bg-scale ~/Downloads/stephen-walker-onIXxjH56AA-unsplash.jpg
|
||||
polybar mybar > $XDG_DATA_HOME/polybar.log 2>&1 &
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
xrandr --output HDMI-2 --off
|
||||
xrandr --output eDP-1 --auto
|
||||
}
|
||||
|
||||
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
|
||||
'')
|
||||
(pkgs.writeScriptBin "big-monitor" ''
|
||||
connect() {
|
||||
# Turn it on if it was off
|
||||
xrandr --output HDMI-2 --auto --primary
|
||||
# Disable normal display
|
||||
xrandr --output eDP-1 --off
|
||||
# Use a nice background
|
||||
feh --bg-scale ~/Downloads/stephen-walker-onIXxjH56AA-unsplash.jpg
|
||||
# Reload Polybar
|
||||
~/.config/bspwm/rc.d/polybar
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
xrandr --output HDMI-2 --off
|
||||
}
|
||||
|
||||
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
|
||||
'')
|
||||
(pkgs.writeScriptBin "disconnect-keyboard" ''
|
||||
# keyboard on curve is busted
|
||||
get_keyboard_id() {
|
||||
xinput list | grep 'AT Translated Set' | cut -f2 | cut -d'=' -f2 | xinput float
|
||||
}
|
||||
|
||||
disconnect_keyboard() {
|
||||
id=$(get_keyboard_id)
|
||||
xinput float $id
|
||||
unset id
|
||||
}
|
||||
|
||||
attach_keyboard() {
|
||||
id=$(get_keyboard_id)
|
||||
xinput reattach $id 3
|
||||
unset id
|
||||
}
|
||||
|
||||
disconnect_keyboard
|
||||
'')
|
||||
] ++ lib.optionals pkgs.stdenv.isLinux [
|
||||
# Linux-only packages
|
||||
iputils
|
||||
strace
|
||||
];
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestion.enable = false;
|
||||
enableAutosuggestions = true;
|
||||
|
||||
initContent = ''
|
||||
initExtra = ''
|
||||
bindkey -v
|
||||
flakify() {
|
||||
if [ ! -e flake.nix ]; then
|
||||
nix flake new -t github:nix-community/nix-direnv .
|
||||
elif [ ! -e .envrc ]; then
|
||||
echo "use flake" > .envrc
|
||||
direnv allow
|
||||
fi
|
||||
vim flake.nix
|
||||
}
|
||||
mx() {
|
||||
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | fzf --preview="manix '{}'" | xargs manix
|
||||
}
|
||||
autopair-init
|
||||
export PATH="$PATH:/Users/anishlakhwara/go/bin"
|
||||
'';
|
||||
sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
TERMINFO_DIRS = "${pkgs.kitty.terminfo.outPath}/share/terminfo"; # Needed to run home-manager switch on non-nixOS
|
||||
};
|
||||
plugins = [
|
||||
# {
|
||||
# name = "zsh-autocomplete";
|
||||
# src = pkgs.fetchFromGitHub {
|
||||
# owner = "marlonrichert";
|
||||
# repo = "zsh-autocomplete";
|
||||
# rev = "22.01.21";
|
||||
# sha256 = "+UziTYsjgpiumSulrLojuqHtDrgvuG91+XNiaMD7wIs=";
|
||||
# };
|
||||
# }
|
||||
{
|
||||
name = "zsh-autopair";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
|
@ -199,16 +137,16 @@
|
|||
};
|
||||
file = "zsh-autoquoter.zsh";
|
||||
}
|
||||
# {
|
||||
# name = "zsh-nix-shell";
|
||||
# file = "nix-shell.plugin.zsh";
|
||||
# src = pkgs.fetchFromGitHub {
|
||||
# owner = "chisui";
|
||||
# repo = "zsh-nix-shell";
|
||||
# rev = "v0.5.0";
|
||||
# sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91";
|
||||
# };
|
||||
# }
|
||||
{
|
||||
name = "zsh-nix-shell";
|
||||
file = "nix-shell.plugin.zsh";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "chisui";
|
||||
repo = "zsh-nix-shell";
|
||||
rev = "v0.5.0";
|
||||
sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
|
|
@ -226,6 +164,7 @@
|
|||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
# nix-direnv.enableFlakes = true; always enabled
|
||||
};
|
||||
|
||||
programs.zoxide = {
|
||||
|
|
@ -233,7 +172,7 @@
|
|||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
services.kdeconnect.enable = pkgs.stdenv.isLinux;
|
||||
services.kdeconnect.enable = true;
|
||||
|
||||
home.shellAliases = {
|
||||
# quick cd
|
||||
|
|
@ -242,43 +181,36 @@
|
|||
"...." = "cd ../../..";
|
||||
"....." = "cd ../../../..";
|
||||
|
||||
icat = "kitty +kitten icat";
|
||||
yt = "ytfzf -T kitty -t ";
|
||||
gen-secret = "< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c\${1:-32};echo;";
|
||||
# kitaab recents
|
||||
kr = "cd /home/anish/kitaab/vimwiki; ls --sort=modified --reverse | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 {}'";
|
||||
|
||||
# modern cli tools
|
||||
ls = "eza --icons";
|
||||
l = "esa -l --icons";
|
||||
la = "eza -la --icons";
|
||||
ls = "exa --icons";
|
||||
l = "exa -l --icons";
|
||||
la = "exa -la --icons";
|
||||
tree = "ls --tree --icons";
|
||||
cat = "bat";
|
||||
unzip = "aunpack";
|
||||
copy = if pkgs.stdenv.isDarwin then "pbcopy" else "xclip -selection clipboard";
|
||||
paste = if pkgs.stdenv.isDarwin then "pbpaste" else "xclip -selection clipboard -o";
|
||||
copy = "xclip -selection clipboard";
|
||||
paste = "xclip -selection clipboard -o";
|
||||
rm = "echo USE TRASH, FOOL: trash ";
|
||||
trash = "trash-put";
|
||||
make-secret = "< /dev/urandom \\tr -dc _A-Za-z0-9 | head -c \${1:-32};echo;";
|
||||
|
||||
# task warrior
|
||||
t = "task -BLOCKED -idea -backlog";
|
||||
tw = "t rc.context:work";
|
||||
# TODO find a reasonable way to manage this from a non-nix managed file in ~/.task/context or something
|
||||
# we can do something like task rc.context:$(cat ~/.task/context) to read context
|
||||
# and write a little script make-context = cat $@ > ~/.task/context or something
|
||||
tt = "taskwarrior-tui -r list";
|
||||
ti = "task +idea";
|
||||
tb = "task +backlog list";
|
||||
ttb = "taskwarrior-tui -r backlog";
|
||||
# TODO: make blocked a context?
|
||||
t = "task -BLOCKED";
|
||||
tin = "task in";
|
||||
tun = "task -BLOCKED -wait";
|
||||
tb = "task list +backlog";
|
||||
tr = "task newest limit:page";
|
||||
twait = "task +wait";
|
||||
tu = "task unblocked -wait";
|
||||
tl = "task list";
|
||||
ta = "task add";
|
||||
tai = "task add +idea";
|
||||
tai = "task add +in";
|
||||
tn = "task-note";
|
||||
tp = "task limit:page";
|
||||
ts = "task sync";
|
||||
# taskwarrior task lists
|
||||
twt = "task tags +PENDING | tail -n +4 | cut -d ' ' -f1 | fzf --preview 'task +{}'";
|
||||
# task warrior projects list
|
||||
tp = "task projects +PENDING | tail -n +4 | head -n -2 | cut -d ' ' -f1 | fzf --preview 'task pro:{}'";
|
||||
|
||||
# keeping for posterity but now sxhkbd handles screenshot with <Super+O>
|
||||
# scrot = "flameshot screen -c -p ~/screenshots/";
|
||||
|
|
@ -303,19 +235,12 @@
|
|||
nf = "n flake";
|
||||
nfl = "nf lock";
|
||||
nepl = "n repl '<nixpkgs>'";
|
||||
srch = "ns nixpkgs";
|
||||
srch = "ns nixos";
|
||||
orch = "ns override";
|
||||
# Impure for bitwig on linux, not sure what it's for in darwin
|
||||
nrb = ''
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
cd ~/usr/helm && sudo darwin-rebuild switch --impure --flake ".#Anishs-MacBook-Pro" && cd $OLDPWD
|
||||
else
|
||||
cd /tmp && sudo nixos-rebuild switch --impure --flake '/home/anish/usr/helm#curve' && cd $OLDPWD
|
||||
fi
|
||||
'';
|
||||
nrt = "cd /tmp; sudo nixos-rebuild test --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
|
||||
ned = "cd /home/anish/usr/helm; vim; cd $OLDPWD";
|
||||
ncd = "cd /home/anish/usr/helm";
|
||||
nrb = "cd /tmp; sudo nixos-rebuild switch --flake '/etc/nixos/#curve'; cd $OLDPWD";
|
||||
nrt = "cd /tmp; sudo nixos-rebuild test --flake '/etc/nixos/#curve'; cd $OLDPWD";
|
||||
ned = "cd /etc/nixos; vim; cd $OLDPWD";
|
||||
ncd = "cd /etc/nixos";
|
||||
mn = ''
|
||||
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix
|
||||
'';
|
||||
|
|
@ -340,11 +265,10 @@
|
|||
jtl = "journalctl";
|
||||
|
||||
# quick ssh
|
||||
kssh = "kitty +kitten ssh";
|
||||
kssh = "kitten +kitty ssh";
|
||||
smm = "ssh 10.0.69.4"; # box over wireguard
|
||||
sm = "ssh mossnet.lan"; # box regular
|
||||
sl = "ssh sealight.xyz"; # lituus
|
||||
sh = "ssh git.sealight.xyz"; # helix
|
||||
sb = "ssh cyberian@69.61.38.246"; # bonfire for allwell
|
||||
ss = "ssh sealight.xyz"; # helix
|
||||
# sl = "ssh 69.61.38.225"; # lituus has become helix
|
||||
};
|
||||
}
|
||||
|
|
|
|||
0
home/profiles/desktop/Xresources
Executable file → Normal file
0
home/profiles/desktop/Xresources
Executable file → Normal file
|
|
@ -1,71 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Get class of a wid
|
||||
get_class() {
|
||||
id=$1
|
||||
if [ -z "$id" ]; then
|
||||
echo ""
|
||||
else
|
||||
xprop -id "$id" | sed -n \
|
||||
-e '/WM_CLASS/s/\( "\)/\n/g; s/[^\n]*\n\([^"]*\)[^\n]*/\1\n/g' \
|
||||
-e '/WM_COMMAND/s/[^"]*/\n\n/1; s/\n"//1; s/\n\([^"]*\)".*/\n\1/; /\n/p' | sed '/^$/d' | head -n1
|
||||
fi
|
||||
}
|
||||
|
||||
get_pid() {
|
||||
xprop _NET_WM_PID -id "$1" | awk '/[0-9]+/ {print $3}'
|
||||
}
|
||||
|
||||
get_ppid() {
|
||||
ps -o ppid= -p $1
|
||||
}
|
||||
|
||||
check_swallowing_process() {
|
||||
pid=$(get_pid $1)
|
||||
[ -z $pid ] && return 0
|
||||
gppid=$(get_ppid $(get_ppid $pid))
|
||||
grep -i "^$(ps -o cmd= -p $gppid | awk '{print $1}' | sed 's_^.*/__')$" ~/.config/bspwm/terminals && return 0
|
||||
[ "$(get_ppid "$(get_ppid "$(get_pid "$1")")")" = "$(get_pid "$2")" ] && return 0 || return 1
|
||||
}
|
||||
|
||||
swallow() {
|
||||
addedtodesktop=$2
|
||||
lasttermdesktop=$(bspc query -D -n last)
|
||||
|
||||
swallowerid=$1
|
||||
swallowingid=$(bspc query -N -n last)
|
||||
if [ "$addedtodesktop" = "$lasttermdesktop" ] && check_swallowing_process "$swallowerid" "$swallowingid"; then
|
||||
grep -q "^$(get_class "$swallowerid")$" ~/.config/bspwm/{noswallow, terminals} && return
|
||||
grep -i "^$(get_class "$swallowingid")$" ~/.config/bspwm/terminals || return
|
||||
echo "$swallowerid $swallowingid" >> /tmp/swallowids
|
||||
bspc node "$swallowingid" --flag hidden=on
|
||||
fi
|
||||
}
|
||||
|
||||
spit() {
|
||||
spitterid=$1
|
||||
spitterdesktop=$2
|
||||
grep "^$spitterid" /tmp/swallowids || return
|
||||
spittingid=$(grep "^$spitterid" /tmp/swallowids | head -n1 | awk '{print $2}')
|
||||
|
||||
bspc node "$spittingid" --flag hidden=off
|
||||
|
||||
termdesktop=$(bspc query -D -n "$spittingid")
|
||||
[ "$termdesktop" = "$spitterdesktop" ] || bspc node "$spittingid" -d "$spitterdesktop"
|
||||
|
||||
bspc node "$spittingid" -f
|
||||
sed -i "/^$spitterid/d" /tmp/swallowids
|
||||
}
|
||||
|
||||
bspc subscribe node_add node_remove | while read -r event
|
||||
do
|
||||
case $(echo "$event" | awk '{ print $1 }') in
|
||||
node_add)
|
||||
swallow $(echo "$event" | awk '{print $5 " " $3}')
|
||||
;;
|
||||
node_remove)
|
||||
spit $(echo "$event" | awk '{print $4 " " $3}')
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# get into a shell that has poonam
|
||||
cd ~/kitaab || exit;
|
||||
nix develop;
|
||||
# Use fzf to select a file and capture the output
|
||||
selected_file=$(${pkgs.poonam}/main report --titles=false | head -n -2 | fzf --preview 'bat --color=always --terminal-width -1 ./vimwiki/{}')
|
||||
echo $selected_file
|
||||
|
||||
# Add additional details to the file path
|
||||
# file_path="./vimwiki/${selected_file}"
|
||||
#
|
||||
# # Open the file in vim for editing
|
||||
# vim "${file_path}"
|
||||
#
|
||||
|
|
@ -1 +0,0 @@
|
|||
curl -F "content=$(xclip -o)" -X POST https://bin.sealight.xyz/upload
|
||||
|
|
@ -5,9 +5,9 @@ rofi_command="rofi -theme theme/powermenu.rasi"
|
|||
### Options ###
|
||||
power_off="\tShutdown"
|
||||
reboot="\tReboot"
|
||||
lock="\tLock"
|
||||
suspend="\tSleep"
|
||||
log_out="\tLogout"
|
||||
lock="\tLock"
|
||||
suspend="鈴\tSleep"
|
||||
log_out="\tLogout"
|
||||
# Variable passed to rofi
|
||||
options="$power_off\n$reboot\n$lock\n$suspend\n$log_out"
|
||||
|
||||
|
|
@ -18,14 +18,14 @@ case "$(echo -e "$options" | $rofi_command -dmenu)" in
|
|||
" Reboot")
|
||||
systemctl reboot
|
||||
;;
|
||||
" Lock")
|
||||
" Lock")
|
||||
dm-tool lock
|
||||
;;
|
||||
" Sleep")
|
||||
"鈴 Sleep")
|
||||
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
|
||||
systemctl suspend
|
||||
;;
|
||||
" Logout")
|
||||
" Logout")
|
||||
bspc quit
|
||||
;;
|
||||
esac
|
||||
|
|
|
|||
|
|
@ -3,12 +3,11 @@
|
|||
timer=5
|
||||
|
||||
# Options
|
||||
select=" "
|
||||
window=" "
|
||||
screen=" "
|
||||
record=" "
|
||||
delay=" "
|
||||
cancel=" "
|
||||
select="麗"
|
||||
window="类"
|
||||
screen=""
|
||||
delay=""
|
||||
cancel=""
|
||||
|
||||
# Variable passed to rofi
|
||||
options="$select\n$window\n$screen\n$delay\n$cancel"
|
||||
|
|
@ -51,6 +50,4 @@ case $chosen in
|
|||
| tee $filepath | xclip -selection c -t image/png
|
||||
notify
|
||||
;;
|
||||
$record)
|
||||
kooha
|
||||
esac
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ bspc config presel_feedback_color "#bd93f9"
|
|||
bspc config split_ratio 0.71
|
||||
|
||||
# Extra padding for polybar
|
||||
bspc config top_padding 34
|
||||
bspc config bottom_padding 0
|
||||
bspc config -m primary top_padding 34
|
||||
bspc config -m primary bottom_padding 0
|
||||
|
||||
# Rules
|
||||
bspc rule -r '*'
|
||||
|
|
@ -39,10 +39,7 @@ bspc rule -a Pinentry state=floating center=on
|
|||
bspc rule -a Firefox state=fullscreen
|
||||
bspc rule -a feh state=fullscreen
|
||||
|
||||
# bspswallow
|
||||
pgrep bspswallow || bspswallow &
|
||||
|
||||
# polybar
|
||||
for file in "$XDG_CONFIG_HOME"/bspwm/rc.d/*; do
|
||||
for file in $XDG_CONFIG_HOME/bspwm/rc.d/*; do
|
||||
source "$file"
|
||||
done
|
||||
|
|
|
|||
|
|
@ -22,112 +22,15 @@ in
|
|||
paper-icon-theme
|
||||
papirus-icon-theme
|
||||
libsForQt5.qtstyleplugin-kvantum
|
||||
libsForQt5.qt5ct
|
||||
qt5ct
|
||||
gtk-engine-murrine
|
||||
gtk_engines
|
||||
maim
|
||||
kitty
|
||||
libreoffice
|
||||
inotify-tools
|
||||
offpunk
|
||||
termpdfpy
|
||||
# libsForQt5.kontact
|
||||
thunderbird
|
||||
libsecret # For secret-tool to manage keyring
|
||||
];
|
||||
|
||||
# GTK4 color scheme?
|
||||
dconf.settings = {
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
};
|
||||
};
|
||||
|
||||
# Move required config files around
|
||||
xdg.enable = true; # This doesn't seem to do anything so we have below
|
||||
xdg.configHome = "/home/anish/.config"; # TODO bad hardcode
|
||||
xdg.configFile = {
|
||||
"Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
|
||||
"Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
|
||||
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
|
||||
};
|
||||
xdg.mimeApps.defaultApplications = {
|
||||
|
||||
};
|
||||
home.file = {
|
||||
".config/bspwm/rc.d/polybar".source = ./run.sh;
|
||||
".config/bspwm/bspwmrc".source = ./bspwmrc;
|
||||
".config/sxhkdrc".source = ./sxhkdrc;
|
||||
".config/rofi/theme" = {
|
||||
source = ./rofi;
|
||||
recursive = true;
|
||||
};
|
||||
".config/polybar" = {
|
||||
source = ./polybar;
|
||||
recursive = true;
|
||||
};
|
||||
".config/dunst/dunstrc".source = ./dunstrc;
|
||||
".config/kitty/kitty.conf".source = ./kitty.conf;
|
||||
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
|
||||
".config/zathura/zathurarc".source = ./zathurarc;
|
||||
".background-image".source = ./background.jpg;
|
||||
#gtk4 theme
|
||||
".config/gtk-4.0/settings.ini".text = ''
|
||||
[Settings]
|
||||
gtk-application-prefer-dark-theme=true
|
||||
'';
|
||||
# gtk3 theme
|
||||
".config/gtk-3.0/settings.ini".text = ''
|
||||
[Settings]
|
||||
gtk-theme-name=Dracula
|
||||
gtk-icon-theme-name=Paper
|
||||
gtk-cursor-theme-name=Capitaine Cursors - White
|
||||
gtk-fallback-icon-theme=gnome
|
||||
gtk-application-prefer-dark-theme=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintfull
|
||||
gtk-xft-rgba=none
|
||||
'';
|
||||
# GTK2 global theme (widget and icon theme)
|
||||
".config/gtk-2.0/gtkrc".text = ''
|
||||
gtk-theme-name=Ayu-Mirage
|
||||
gtk-icon-theme-name=Capitaine Cursors - White
|
||||
gtk-font-name="Sans 10"
|
||||
'';
|
||||
".local/bin/passmenu".source = ./bin/passmenu;
|
||||
".local/bin/paste".source = ./bin/paste;
|
||||
".local/bin/bluetoothmenu".source = ./bin/bluetoothmenu;
|
||||
".local/bin/wifimenu".source = ./bin/wifimenu;
|
||||
".local/bin/powermenu".source = ./bin/powermenu;
|
||||
".local/bin/screenshot".source = ./bin/screenshot;
|
||||
".local/bin/mpv-ify".source = ./bin/mpv-ify;
|
||||
".local/bin/bspswallow".source = ./bin/bspswallow;
|
||||
".config/bspwm/terminals".text = "Kitty";
|
||||
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
|
||||
};
|
||||
|
||||
xdg.desktopEntries = {
|
||||
ocr = {
|
||||
name = "OCR image";
|
||||
exec = "${pkgs.writeScript "ocr" ''
|
||||
${pkgs.xfce.xfce4-screenshooter}/bin/xfce4-screenshooter -r --save /tmp/ocr-tmp.png
|
||||
${pkgs.tesseract}/bin/tesseract /tmp/ocr-tmp.png | ${pkgs.xclip}/bin/xclip -sel clip
|
||||
rm /tmp/ocr-tmp.png
|
||||
''}";
|
||||
};
|
||||
screenshot = {
|
||||
name = "Screenshot";
|
||||
exec = "screenshot";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme.name = "gtk";
|
||||
style = { name = "qt5ct-style"; };
|
||||
};
|
||||
|
||||
# set up env
|
||||
xsession.enable = true;
|
||||
|
||||
|
|
@ -163,10 +66,67 @@ in
|
|||
"*.colorBD" = "#e6e1cf";
|
||||
};
|
||||
|
||||
programs.autorandr.enable = true;
|
||||
services.udiskie.automount = true;
|
||||
# Move required config files around
|
||||
xdg.enable = true; # This doesn't seem to do anything so we have below
|
||||
xdg.configHome = "/home/anish/.config"; # TODO bad hardcode
|
||||
xdg.configFile = {
|
||||
"Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
|
||||
"Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
|
||||
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
|
||||
};
|
||||
home.file = {
|
||||
".config/bspwm/rc.d/polybar".source = ./run.sh;
|
||||
".config/bspwm/bspwmrc".source = ./bspwmrc;
|
||||
".config/sxhkdrc".source = ./sxhkdrc;
|
||||
".config/rofi/theme" = {
|
||||
source = ./rofi;
|
||||
recursive = true;
|
||||
};
|
||||
".config/polybar" = {
|
||||
source = ./polybar;
|
||||
recursive = true;
|
||||
};
|
||||
".config/dunst/dunstrc".source = ./dunstrc;
|
||||
".config/kitty/kitty.conf".source = ./kitty.conf;
|
||||
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
|
||||
".config/zathura/zathurarc".source = ./zathurarc;
|
||||
".background-image".source = ./background.jpg;
|
||||
# gtk3 theme
|
||||
".config/gtk-3.0/settings.ini".text = ''
|
||||
[Settings]
|
||||
gtk-theme-name=Dracula
|
||||
gtk-icon-theme-name=Paper
|
||||
gtk-cursor-theme-name=Capitaine Cursors - White
|
||||
gtk-fallback-icon-theme=gnome
|
||||
gtk-application-prefer-dark-theme=true
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintfull
|
||||
gtk-xft-rgba=none
|
||||
'';
|
||||
# GTK2 global theme (widget and icon theme)
|
||||
".config/gtk-2.0/gtkrc".text = ''
|
||||
gtk-theme-name=Ayu-Mirage
|
||||
gtk-icon-theme-name=Capitaine Cursors - White
|
||||
gtk-font-name="Sans 10"
|
||||
'';
|
||||
# TODO hardcoded
|
||||
".local/bin/passmenu".source = ./bin/passmenu;
|
||||
".local/bin/bluetoothmenu".source = ./bin/bluetoothmenu;
|
||||
".local/bin/wifimenu".source = ./bin/wifimenu;
|
||||
".local/bin/powermenu".source = ./bin/powermenu;
|
||||
".local/bin/screenshot".source = ./bin/screenshot;
|
||||
".local/bin/mpv-ify".source = ./bin/mpv-ify;
|
||||
".config/eww/eww.yuck".source = ./eww/eww.yuck;
|
||||
".config/eww/eww.scss".source = ./eww/eww.scss;
|
||||
".config/eww/widgets.yuck".source = ./eww/widgets.yuck;
|
||||
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
|
||||
};
|
||||
|
||||
services.mpris-proxy.enable = true; # bluetooth media control
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "gtk";
|
||||
style = { name = "qt5ct-style"; };
|
||||
};
|
||||
|
||||
# Compositor
|
||||
# services.picom = {
|
||||
|
|
@ -189,4 +149,9 @@ in
|
|||
# corner-radius = 3
|
||||
# '';
|
||||
# };
|
||||
|
||||
programs.autorandr.enable = true;
|
||||
services.udiskie.automount = true;
|
||||
|
||||
services.mpris-proxy.enable = true; # bluetooth media control
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
origin = top-right
|
||||
|
||||
# Offset from the origin
|
||||
offset = 12x36
|
||||
offset = 18x36
|
||||
|
||||
# Scale factor. It is auto-detected if value is 0.
|
||||
scale = 0
|
||||
|
|
|
|||
|
|
@ -1,16 +1,11 @@
|
|||
include ayu.conf
|
||||
font_family Hermit
|
||||
font_size 13
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
open_url_with default
|
||||
mouse_map left click ungrabbed mouse_click_url_or_select
|
||||
confirm_os_window_close 0
|
||||
enable_audio_bell no
|
||||
|
||||
|
||||
|
||||
# Ctrl+V for paste
|
||||
map ctrl+v paste_from_clipboard
|
||||
mouse_map middle release ungrabbed paste_from_clipboard
|
||||
-- Allows zen-mode.nvim to increase font size
|
||||
allow_remote_control socket-only
|
||||
listen_on unix:/tmp/kitty
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ fixed-center = true
|
|||
width = 100%
|
||||
height = 34
|
||||
|
||||
offset-x =
|
||||
offset-y =
|
||||
|
||||
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
|
||||
background = ${colors.bg}
|
||||
|
||||
|
|
@ -46,7 +49,7 @@ line-color = #fff
|
|||
; Number of spaces to add at the beginning/end of the bar
|
||||
; Individual side values can be defined using:
|
||||
; padding-{left,right}
|
||||
padding-right = 1
|
||||
padding-right = 1
|
||||
padding-left = 0
|
||||
|
||||
; Number of spaces to add before/after each module
|
||||
|
|
@ -55,15 +58,14 @@ padding-left = 0
|
|||
module-margin = 0
|
||||
margin-bottom = 34
|
||||
|
||||
font-0 = "Iosevka Nerd Font,Iosevka NF:pixelsize=10;1" ; Icon Size
|
||||
font-1 = "Iosevka Nerd Font,Iosevka NF:pixelsize=12;4" ; Large Text font
|
||||
font-2 = "FiraCode Nerd Font:pixelsize=12;2"
|
||||
font-3 = "Siji:pixelsize=10;2"
|
||||
font-4 = "Iosevka Nerd Font,Iosevka NF:pixelsize=8;1" ; Small Icon Size
|
||||
font-0 = "Iosevka Term:pixelsize=13;4"
|
||||
font-1 = "Iosevka Term:pixelsize=6;1"
|
||||
font-2 = "Fira Code:pixelsize=13;2"
|
||||
font-3 = "Siji:pixelsize=8;2"
|
||||
|
||||
; Add module mpd for artist - title info
|
||||
modules-left = bspwm sps volume
|
||||
; modules-center = title
|
||||
modules-center = title
|
||||
modules-right = wireless-network sps battery sps memory sps cpu sps date
|
||||
|
||||
; The separator will be inserted between the output of each module
|
||||
|
|
@ -114,11 +116,11 @@ type = internal/bspwm
|
|||
pin-workspaces = true
|
||||
enable-click = true
|
||||
|
||||
ws-icon-0 = 1;%{T2} %{T-}
|
||||
ws-icon-1 = 2;%{T2} %{T-}
|
||||
ws-icon-2 = 3;%{T2} %{T-}
|
||||
ws-icon-3 = 4;%{T2} %{T-}
|
||||
ws-icon-4 = 5;%{T2} %{T-}
|
||||
ws-icon-0 = 1;%{T1}%{T-}
|
||||
ws-icon-1 = 2;%{T1}%{T-}
|
||||
ws-icon-2 = 3;%{T1}%{T-}
|
||||
ws-icon-3 = 4;%{T1}%{T-}
|
||||
ws-icon-4 = 5;%{T1}%{T-}
|
||||
ws-icon-default =
|
||||
; fuzzy-match = true
|
||||
|
||||
|
|
@ -155,14 +157,14 @@ interval = 1.0
|
|||
|
||||
; See "http://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string
|
||||
; NOTE: if you want to use syntax tags here you need to use %%{...}
|
||||
date = %{T2} %{T-}%{T1} %d/%a%{T-}
|
||||
date = %{T1}%{T-}%{T2} %d/%a%{T-}
|
||||
|
||||
; Optional time format
|
||||
time = %{T2} %H:%M%{T-}
|
||||
|
||||
; if `date-alt` or `time-alt` is defined, clicking
|
||||
; the module will toggle between formats
|
||||
date-alt = %{T2} %{T-} %{T1} %a, %d %b %y%{T-}
|
||||
date-alt = %{T1}%{T-}%{T2} %a, %d %b %y%{T-}
|
||||
time-alt = %{T2} %H:%M:%S%{T-}
|
||||
|
||||
label = %date%%time%
|
||||
|
|
@ -175,12 +177,11 @@ interface = wlp3s0
|
|||
|
||||
label-connected = %essid%
|
||||
label-connected-font = 2
|
||||
format-connected = <ramp-signal> <label-connected>
|
||||
format-connected = <ramp-signal><label-connected>
|
||||
label-connected-foreground = #82b414
|
||||
|
||||
|
||||
format-disconnected = <label-disconnected>
|
||||
label-disconnected = ""
|
||||
label-disconnected = "睊"
|
||||
label-disconnected-foreground = #f92672
|
||||
|
||||
ramp-signal-foreground = #82b414
|
||||
|
|
@ -198,7 +199,7 @@ type = internal/cpu
|
|||
; Default: 1
|
||||
interval = 0.5
|
||||
|
||||
label = %{T2} %{T-}%{T1} %percentage:2%%%{T-}
|
||||
label = %{T1}%{T-}%{T2} %percentage:2%%%{T-}
|
||||
|
||||
label-foreground = ${colors.cyan}
|
||||
|
||||
|
|
@ -228,7 +229,7 @@ format = <label>
|
|||
; %gb_swap_free%
|
||||
; %gb_swap_used%
|
||||
|
||||
label = %{T2} %{T-}%{T1} %gb_used%%{T-}
|
||||
label = %{T1}%{T-}%{T2} %gb_used%%{T-}
|
||||
|
||||
label-foreground = ${colors.cyan}
|
||||
|
||||
|
|
@ -276,6 +277,38 @@ type = custom/text
|
|||
content = " "
|
||||
content-padding = 0
|
||||
|
||||
[module/network]
|
||||
type = internal/network
|
||||
interface = wlp3s0
|
||||
;enp0s29u1u2
|
||||
interval = 1.0
|
||||
label-connected = "%{T1}龍%{T-}%{T2} %downspeed% | %upspeed%%{T-}"
|
||||
label-disconnected = "%{T2}0/0%{T-}"
|
||||
label-connected-background = ${colors.bg}
|
||||
label-connected-foreground = ${colors.blue}
|
||||
label-disconnected-foreground = ${colors.red}
|
||||
|
||||
[module/title]
|
||||
type = internal/xwindow
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
format = <label>
|
||||
format-background = ${colors.bg}
|
||||
format-foreground = ${colors.green}
|
||||
format-padding = 4
|
||||
|
||||
; Available tokens:
|
||||
; %title%
|
||||
; Default: %title%
|
||||
label = "%{T1}类%{T-}%{T2} %title%%{T-}"
|
||||
label-maxlen = 65
|
||||
|
||||
; Used instead of label when there is no window title
|
||||
; Available tokens:
|
||||
; None
|
||||
label-empty =%{T2}Empty%{T-}
|
||||
label-empty-foreground = #707880
|
||||
|
||||
[module/volume]
|
||||
type = internal/pulseaudio
|
||||
|
||||
|
|
@ -283,7 +316,7 @@ use-ui-max = false
|
|||
|
||||
interval = 5
|
||||
|
||||
format-volume = <ramp-volume> <bar-volume>
|
||||
format-volume = <ramp-volume><bar-volume>
|
||||
|
||||
format-muted = <label-muted>
|
||||
format-muted-prefix = " "
|
||||
|
|
@ -299,13 +332,13 @@ label-muted-foreground = ${colors.mauve}
|
|||
bar-volume-width = 8
|
||||
bar-volume-gradient = false
|
||||
bar-volume-indicator = |
|
||||
bar-volume-indicator-font = 6
|
||||
bar-volume-indicator-font = 2
|
||||
bar-volume-indicator-foreground = ${colors.mauve}
|
||||
bar-volume-fill = ─
|
||||
bar-volume-fill-font = 6
|
||||
bar-volume-fill-font = 2
|
||||
bar-volume-fill-foreground = ${colors.mauve}
|
||||
bar-volume-empty = ─
|
||||
bar-volume-empty-font = 6
|
||||
bar-volume-empty-font = 2
|
||||
bar-volume-empty-foreground = ${colors.fg-alt}
|
||||
|
||||
ramp-volume-0 = " "
|
||||
|
|
@ -337,19 +370,19 @@ battery = BAT0
|
|||
poll-interval = 2
|
||||
time-format = %H:%M
|
||||
|
||||
format-charging = <animation-charging> <label-charging>
|
||||
format-charging = <animation-charging><label-charging>
|
||||
format-charging-prefix =
|
||||
|
||||
format-discharging = <ramp-capacity> <label-discharging>
|
||||
format-discharging = <ramp-capacity><label-discharging>
|
||||
|
||||
format-full = <label-full>
|
||||
format-full-prefix = " "
|
||||
format-full-prefix-font = 2
|
||||
format-full-prefix = " "
|
||||
format-full-prefix-font = 1
|
||||
format-full-prefix-foreground = ${colors.sky}
|
||||
|
||||
label-charging = "%percentage%% "
|
||||
label-discharging = "%percentage%% "
|
||||
label-full = "%percentage%%"
|
||||
label-full = "%percentage%% "
|
||||
|
||||
label-charging-foreground = ${colors.sky}
|
||||
label-discharging-foreground = ${colors.sky}
|
||||
|
|
@ -376,4 +409,3 @@ animation-charging-foreground = ${colors.sky}
|
|||
animation-charging-framerate = 750
|
||||
|
||||
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
|
||||
|
||||
|
|
|
|||
0
home/profiles/desktop/polybar/run.sh
Executable file → Normal file
0
home/profiles/desktop/polybar/run.sh
Executable file → Normal file
|
|
@ -2,7 +2,7 @@
|
|||
@import "config.rasi"
|
||||
|
||||
textbox-icon {
|
||||
str: " ";
|
||||
str: " ";
|
||||
}
|
||||
|
||||
prompt {
|
||||
|
|
|
|||
|
|
@ -2,35 +2,12 @@
|
|||
|
||||
@import "config.rasi"
|
||||
|
||||
textbox {
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.5;
|
||||
}
|
||||
|
||||
listview {
|
||||
columns: 9;
|
||||
lines: 7;
|
||||
cycle: true;
|
||||
dynamic: true;
|
||||
layout: vertical;
|
||||
flow: horizontal;
|
||||
reverse: false;
|
||||
fixed-height: true;
|
||||
fixed-columns: true;
|
||||
}
|
||||
|
||||
element {
|
||||
orientation: vertical;
|
||||
}
|
||||
|
||||
element-text {
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.5;
|
||||
font: "FiraCode Nerd Font 24";
|
||||
columns: 4;
|
||||
}
|
||||
|
||||
textbox-icon {
|
||||
str: "❇️ ";
|
||||
str: "🎑";
|
||||
}
|
||||
|
||||
prompt {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ super + Return
|
|||
kitty
|
||||
|
||||
ctrl + super + Return
|
||||
tdrop -n tdrop_kitty --post-create-hook "autohide-tdrop &" -ma -h 60% -w 70% -x 15% -y 32 kitty --class=tdrop_kitty
|
||||
xst -e bash -c "(tmux ls | grep -qEv 'attached|scratch' && tmux at) || tmux"
|
||||
|
||||
super + space
|
||||
rofi -show drun -modi drun,run -show-icons -theme theme/appmenu.rasi
|
||||
|
|
@ -25,10 +25,7 @@ super + Tab
|
|||
rofi -show window -show-icons -theme theme/windowmenu.rasi
|
||||
|
||||
super + e
|
||||
rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy --hidden-descriptions
|
||||
|
||||
super + a
|
||||
paste
|
||||
rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy
|
||||
|
||||
super + p
|
||||
passmenu
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
programs.msmtp.enable = true;
|
||||
programs.notmuch.enable = true;
|
||||
home.file.".mailcap".text = ''
|
||||
text/html; firefox %s
|
||||
text/html; browsh %s
|
||||
application/pdf; zathura %s
|
||||
image/png; feh %s
|
||||
image/jpeg; feh %s
|
||||
|
|
@ -175,7 +175,7 @@
|
|||
bind editor ^T complete
|
||||
|
||||
# Press A to archive
|
||||
macro index,pager A "<clear-flag><save-message>=/Archive" "mark message as Archived"
|
||||
macro index,pager A "<clear-flag>N<save-message>=/Archive" "mark message as Archived"
|
||||
# Press C to add contact to Khard address book
|
||||
macro index,pager C \
|
||||
"<pipe-message>khard add-email<return>" \
|
||||
|
|
|
|||
|
|
@ -13,40 +13,37 @@
|
|||
#env.XDG_DEXSTOP_DIR = "$HOME/";
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
# Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
|
||||
ublock-origin
|
||||
wallabagger
|
||||
# tree-style-tab
|
||||
tridactyl
|
||||
promnesia
|
||||
sidebery
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = "shaarli";
|
||||
version = "2.0.0";
|
||||
addonId = "shaarli@imirhil.fr";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/815126/shaarli-2.0.0.xpi";
|
||||
sha256 = "W/OpvOfMclibP6LeG573/DlMs0p8fF0efyd+i8Sudgg=";
|
||||
meta = { };
|
||||
})
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = "grasp";
|
||||
version = "0.6.6";
|
||||
addonId = "{37e42980-a7c9-473c-96d5-13f18e0efc74}";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/3502186/grasp-0.6.6.xpi";
|
||||
sha256 = "L4JhT29MeA34nHIlB8FtCU7hrpbWljZZBusx12uxblE=";
|
||||
meta = { };
|
||||
})
|
||||
];
|
||||
profiles.anish = {
|
||||
id = 0;
|
||||
isDefault = true;
|
||||
name = "anish";
|
||||
userChrome = (builtins.readFile ./userChrome.css);
|
||||
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
# Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
|
||||
ublock-origin
|
||||
# wallabagger
|
||||
# tree-style-tab
|
||||
tridactyl
|
||||
promnesia
|
||||
sidebery
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = "shaarli";
|
||||
version = "2.0.0";
|
||||
addonId = "shaarli@imirhil.fr";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/815126/shaarli-2.0.0.xpi";
|
||||
sha256 = "W/OpvOfMclibP6LeG573/DlMs0p8fF0efyd+i8Sudgg=";
|
||||
meta = { };
|
||||
})
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = "grasp";
|
||||
version = "0.6.6";
|
||||
addonId = "{37e42980-a7c9-473c-96d5-13f18e0efc74}";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/3502186/grasp-0.6.6.xpi";
|
||||
sha256 = "L4JhT29MeA34nHIlB8FtCU7hrpbWljZZBusx12uxblE=";
|
||||
meta = { };
|
||||
})
|
||||
];
|
||||
|
||||
settings = {
|
||||
"browser.zoom.siteSpecific" = false;
|
||||
"zoom.minPercent" = "150"; # TODO doesn't seem to work anymore, you have to manually go into preferences and set the zoom level.
|
||||
"devtools.theme" = "dark";
|
||||
# Enable userContent.css and userChrome.css for our theme modules
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
|
|
@ -54,7 +51,6 @@
|
|||
"browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this!
|
||||
# Don't use the built-in password manager; a nixos user is more likely
|
||||
# using an external one (you are using one, right?).
|
||||
# I am, but it's far too convienent. I'm enabling 2FA anyway so w/e
|
||||
#"signon.rememberSignons" = false;
|
||||
# Do not check if Firefox is the default browser
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
|
|
|
|||
|
|
@ -8,29 +8,13 @@
|
|||
/*** NAV BAR ***/
|
||||
/* Hide urlbar */
|
||||
#nav-bar {
|
||||
/* customize this value. */
|
||||
--navbar-margin: -55px;
|
||||
|
||||
margin-top: var(--navbar-margin);
|
||||
margin-bottom: 0;
|
||||
z-index: -100;
|
||||
transition: all 0.3s ease !important;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#navigator-toolbox:focus-within > #nav-bar,
|
||||
#navigator-toolbox:hover > #nav-bar
|
||||
{
|
||||
margin-top: 0;
|
||||
margin-bottom: var(--navbar-margin);
|
||||
z-index: 100;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#main-window[chromehidden*="toolbar"] {
|
||||
visibility: collapse;
|
||||
height: -55px !important;
|
||||
min-height: -55px !important;
|
||||
position: relative !important;
|
||||
z-index: 2 !important;
|
||||
height: 2px !important;
|
||||
min-height: 2px !important;
|
||||
margin-bottom: -2px !important;
|
||||
opacity: 0 !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
/* But unfocus it when we invoke it with ctrl+L */
|
||||
|
|
@ -53,11 +37,10 @@
|
|||
height: 28px !important;
|
||||
}
|
||||
|
||||
/* hides the sidebar header
|
||||
/* hides the sidebar header */
|
||||
#sidebar-header {
|
||||
display: none !important;
|
||||
}
|
||||
*/
|
||||
|
||||
.tab[selected="true"] {
|
||||
visibility: collapse;
|
||||
|
|
@ -70,153 +53,73 @@
|
|||
.tabbrowser-tab[visuallyselected="true"] {
|
||||
visibility: collapse;
|
||||
}
|
||||
|
||||
/* Credits to https://github.com/MrOtherGuy for hthe following snippet*/
|
||||
|
||||
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
|
||||
See the above repository for updates as well as full license text. */
|
||||
|
||||
/* Show sidebar only when the cursor is over it.
|
||||
The border controlling sidebar width will be removed so you'll need to modify
|
||||
these values to change width.
|
||||
By default the internal layout of sidebar changes when hovered, but this can
|
||||
be changed by setting pref "userchrome.autohide-sidebar.static-layout.enabled" to true
|
||||
*/
|
||||
/* Show sidebar only when the cursor is over it */
|
||||
/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
|
||||
|
||||
/* Note: If you want only *some* sidebar to be auto-hidden, then you can use [sidebarcommand] attribute selector.
|
||||
For example, to only affect Sidebery's sidebar replace all instances of #sidebar-box with
|
||||
#sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"].
|
||||
To find the sidebarcommand value for any other sidebar, open that sidebar and use Browser Toolbox to inspect it.
|
||||
See: https://firefox-source-docs.mozilla.org/devtools-user/browser_toolbox/index.html
|
||||
*/
|
||||
/* The whole thing
|
||||
:where(#main-window) #browser{
|
||||
--uc-sidebar-width: 240px;
|
||||
--uc-sidebar-hover-width: 210px;
|
||||
}
|
||||
#main-window[sizemode="fullscreen"] #browser{
|
||||
--uc-sidebar-width: 1px;
|
||||
}
|
||||
#sidebar-box{
|
||||
--uc-sidebar-width: 44px; /* Only thing I (gale) changed */
|
||||
--uc-sidebar-hover-width: 210px;
|
||||
--uc-autohide-sidebar-delay: 600ms; /* Wait 0.6s before hiding sidebar */
|
||||
--uc-autohide-transition-duration: 115ms;
|
||||
--uc-autohide-transition-type: linear;
|
||||
--browser-area-z-index-sidebar: 3;
|
||||
position: relative;
|
||||
min-width: var(--uc-sidebar-width) !important;
|
||||
width: var(--uc-sidebar-width) !important;
|
||||
max-width: var(--uc-sidebar-width) !important;
|
||||
z-index: var(--browser-area-z-index-sidebar,3);
|
||||
background-color: inherit;
|
||||
/* This directionality flipper is played so that sidebar "grows" into the right direction */
|
||||
direction: ltr;
|
||||
&:is([positionend],[sidebar-positionend]):not(:-moz-locale-dir(rtl)){
|
||||
direction: rtl;
|
||||
}
|
||||
z-index:1;
|
||||
}
|
||||
.sidebar-browser-stack{
|
||||
background: inherit;
|
||||
}
|
||||
#main-window[sizemode="fullscreen"] #browser{ --uc-sidebar-width: 1px; }
|
||||
|
||||
#sidebar-box[positionend]{ direction: rtl }
|
||||
#sidebar-box[positionend] > *{ direction: ltr }
|
||||
|
||||
#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
|
||||
#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
|
||||
|
||||
#main-window[sizemode="fullscreen"] #sidebar-box{ --uc-sidebar-width: 1px; }
|
||||
|
||||
#sidebar-splitter{ display: none }
|
||||
|
||||
#sidebar-header{
|
||||
overflow: hidden;
|
||||
color: var(--chrome-color, inherit) !important;
|
||||
padding-inline: 0 !important;
|
||||
}
|
||||
#sidebar-header{ overflow: hidden; /*color: var(--chrome-color, inherit) !important*/}
|
||||
|
||||
#sidebar-header::before,
|
||||
#sidebar-header::after{
|
||||
content: "";
|
||||
display: flex;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
#sidebar-header,
|
||||
#sidebar{
|
||||
transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
|
||||
transition: min-width 115ms linear var(--uc-autohide-sidebar-delay) !important;
|
||||
min-width: var(--uc-sidebar-width) !important;
|
||||
will-change: min-width;
|
||||
direction: ltr;
|
||||
&:-moz-locale-dir(rtl){
|
||||
direction: rtl;
|
||||
}
|
||||
}
|
||||
#sidebar-box:hover > #sidebar-header,
|
||||
#sidebar-box:hover > #sidebar,
|
||||
#sidebar-box:hover > .sidebar-browser-stack > #sidebar{
|
||||
min-width: var(--uc-sidebar-hover-width) !important;
|
||||
transition-delay: 0ms !important;
|
||||
}
|
||||
|
||||
#sidebar-box:hover > #sidebar{ min-width: var(--uc-sidebar-hover-width) !important; transition-delay: 0ms !important }
|
||||
|
||||
.sidebar-panel{
|
||||
background-color: transparent !important;
|
||||
color: var(--newtab-text-primary-color) !important;
|
||||
/*background-color: transparent !important;
|
||||
color: var(--newtab-text-primary-color) !important;*/
|
||||
}
|
||||
|
||||
.sidebar-panel #search-box{
|
||||
-moz-appearance: none !important;
|
||||
background-color: rgba(249,249,250,0.1) !important;
|
||||
/*background-color: rgba(249,249,250,0.1) !important;
|
||||
color: inherit !important;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Add sidebar divider and give it background */
|
||||
|
||||
#sidebar,
|
||||
#sidebar-header{
|
||||
background-color: inherit !important;
|
||||
/*background-color: inherit !important;*/
|
||||
border-inline: 1px solid rgb(80,80,80);
|
||||
border-inline-width: 0px 1px;
|
||||
}
|
||||
|
||||
#sidebar-box:not([positionend],[sidebar-positionend]) > :-moz-locale-dir(rtl),
|
||||
#sidebar-box:is([positionend],[sidebar-positionend]) > *{
|
||||
#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
|
||||
#sidebar-box[positionend] > *{
|
||||
border-inline-width: 1px 0px;
|
||||
}
|
||||
@media -moz-pref("sidebar.revamp") {
|
||||
#sidebar, #sidebar-header{ border-style: none }
|
||||
#sidebar-box{ padding: 0 !important; }
|
||||
}
|
||||
|
||||
/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
|
||||
|
||||
#sidebar-box:not([positionend],[sidebar-positionend]):hover ~ #appcontent #statuspanel{
|
||||
inset-inline: auto 0px !important;
|
||||
}
|
||||
#sidebar-box:not([positionend],[sidebar-positionend]):hover ~ #appcontent #statuspanel-label{
|
||||
margin-inline: 0px !important;
|
||||
border-left-style: solid !important;
|
||||
}
|
||||
@media -moz-pref("userchrome.autohide-sidebar.static-layout.enabled"){
|
||||
#sidebar-box{
|
||||
min-width: var(--uc-sidebar-width) !important;
|
||||
contain: size;
|
||||
box-shadow: var(--content-area-shadow);
|
||||
}
|
||||
#sidebar{
|
||||
min-width: var(--uc-sidebar-hover-width) !important;
|
||||
}
|
||||
.sidebar-browser-stack{
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
transition: width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay);
|
||||
direction: ltr;
|
||||
&:hover{
|
||||
transition-delay: 0ms;
|
||||
width: var(--uc-sidebar-hover-width);
|
||||
}
|
||||
&:-moz-locale-dir(rtl){
|
||||
transition-property: transform,width !important;
|
||||
}
|
||||
}
|
||||
#sidebar-box[sidebar-positionend]:hover :is(#sidebar-header,#sidebar):-moz-locale-dir(ltr){
|
||||
transform: translateX(0);
|
||||
transition-delay: 0ms !important;
|
||||
}
|
||||
#sidebar-box:not([sidebar-positionend]):hover .sidebar-browser-stack:-moz-locale-dir(rtl){
|
||||
transform: translateX(calc(-1 * var(--uc-sidebar-hover-width) + var(--uc-sidebar-width)));
|
||||
}
|
||||
#sidebar-box[sidebar-positionend]:hover > .sidebar-browser-stack:-moz-locale-dir(rtl){
|
||||
transform: translateX(calc(var(--uc-sidebar-hover-width) - var(--uc-sidebar-width)));
|
||||
transition-delay: 0ms !important;
|
||||
}
|
||||
}
|
||||
*/
|
||||
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{ inset-inline: auto 0px !important; }
|
||||
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{ margin-inline: 0px !important; border-left-style: solid !important; }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
#xdg.configFile = {
|
||||
# "git/config".source = ./config;
|
||||
|
|
@ -8,19 +7,12 @@
|
|||
|
||||
programs.lazygit.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
unstable.git-spice
|
||||
];
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "Anish Lakhwara";
|
||||
userEmail = "anish+git@lakhwara.com";
|
||||
delta.enable = true;
|
||||
signing = {
|
||||
signByDefault = if pkgs.stdenv.isLinux then false else true;
|
||||
key = if pkgs.stdenv.isLinux then "B8492C8FB53397B7" else "7FC5DF072EF7B716";
|
||||
};
|
||||
# TODO enable signing
|
||||
|
||||
ignores = [
|
||||
"*~"
|
||||
|
|
@ -57,14 +49,12 @@
|
|||
".tmp"
|
||||
".direnv"
|
||||
"result"
|
||||
"node_modules/"
|
||||
];
|
||||
|
||||
extraConfig = {
|
||||
pull.rebase = false;
|
||||
push.autoSetupRemote = true;
|
||||
init.defaultBranch = "main";
|
||||
"url \"git@github.com:\"" = { insteadOf = "https://github.com/"; };
|
||||
};
|
||||
|
||||
aliases = {
|
||||
|
|
@ -103,8 +93,6 @@
|
|||
|
||||
# delete merged branches
|
||||
bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d";
|
||||
undo = "!git reset HEAD~1 --mixed";
|
||||
blm = "blame -w -C -C -C";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
|
||||
background #0A0E14
|
||||
foreground #B3B1AD
|
||||
cursor #E6B450
|
||||
selection_background #273747
|
||||
color0 #000000
|
||||
color8 #4D5566
|
||||
color1 #FF3333
|
||||
color9 #D96C75
|
||||
color2 #C2D94C
|
||||
color10 #91B362
|
||||
color3 #FF8F40
|
||||
color11 #F29668
|
||||
color4 #59C2FF
|
||||
color12 #6994BF
|
||||
color5 #D4BFFF
|
||||
color13 #A37ACC
|
||||
color6 #95E6CB
|
||||
color14 #4CBF99
|
||||
color7 #ffffff
|
||||
color15 #F0F0F0
|
||||
selection_foreground #B3B1AD
|
||||
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
#: This is a port of ayu Mirage color scheme
|
||||
#: based on :
|
||||
#: https://github.com/ayu-theme/ayu-colors
|
||||
|
||||
background #1F2430
|
||||
foreground #CBCCC6
|
||||
cursor #FFCC66
|
||||
selection_background #33415E
|
||||
color0 #000000
|
||||
color8 #4D5566
|
||||
color1 #FF3333
|
||||
color9 #F27983
|
||||
color2 #BAE67E
|
||||
color10 #A6CC70
|
||||
color3 #FFA759
|
||||
color11 #F29E74
|
||||
color4 #73D0FF
|
||||
color12 #77A8D9
|
||||
color5 #D4BFFF
|
||||
color13 #A37ACC
|
||||
color6 #95E6CB
|
||||
color14 #4CBF99
|
||||
color7 #ffffff
|
||||
color15 #F0F0F0
|
||||
selection_foreground #CBCCC6
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
kitty
|
||||
];
|
||||
home.file = {
|
||||
".config/kitty/kitty.conf".source = ./kitty.conf;
|
||||
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
include ayu.conf
|
||||
font_family Hermit
|
||||
font_size 13
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
open_url_with default
|
||||
mouse_map left click ungrabbed mouse_click_url_or_select
|
||||
confirm_os_window_close 0
|
||||
enable_audio_bell no
|
||||
hide_window_decorations titlebar-only
|
||||
macos_option_as_alt left
|
||||
-- Allows zen-mode.nvim to increase font size
|
||||
-- allow_remote_control socket-only
|
||||
-- listen_on unix:/tmp/kitty
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
customPlugins = {
|
||||
vim-zettel = pkgs.vimUtils.buildVimPlugin {
|
||||
|
|
@ -10,17 +10,16 @@ let
|
|||
sha256 = "1fzKmknfVlEYwqeXgbKITbb2/PJ023iJyMz6vak3qh4=";
|
||||
};
|
||||
};
|
||||
|
||||
my-lspsaga = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "lspsaga.nvim";
|
||||
lsp-format = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "lsp-format";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "glepnir";
|
||||
repo = "lspsaga.nvim";
|
||||
rev = "b7b4777369b441341b2dcd45c738ea4167c11c9e";
|
||||
sha256 = "sciX/fMxzY1YOxXxjj1+ymrdMi451avcFFu+14R+/pk=";
|
||||
owner = "lukas-reineke";
|
||||
repo = "lsp-format.nvim";
|
||||
rev = "84e117b99bb2bc0d0c8122e2b256046f046f8aff";
|
||||
sha256 = "rs3NTZwWdsmBGXnrgUeVxUiNjbN/ULxJHifPYJD9mT4=";
|
||||
};
|
||||
};
|
||||
nvim-luapad = pkgs.vimUtils.buildVimPlugin {
|
||||
nvim-luapad = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
name = "nvim-luapad";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "rafcamlet";
|
||||
|
|
@ -29,7 +28,25 @@ let
|
|||
sha256 = "gMaS5YFi3+gmUIfkCMEt9vhm8XSgv54Cquv5+WCWeTo=";
|
||||
};
|
||||
};
|
||||
my-which-key-nvim = pkgs.vimUtils.buildVimPlugin {
|
||||
leap = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
name = "leap";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "ggandor";
|
||||
repo = "leap.nvim";
|
||||
rev = "1bb1fec369b1e9ae96e6ff1b829ea9272c51f844";
|
||||
sha256 = "dH0v1D5q5OlMLA/omTDMb/taKyIgQ5VfVMYXJ609k/k=";
|
||||
};
|
||||
};
|
||||
nvim-navic = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "nvim-navic";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "SmiteshP";
|
||||
repo = "nvim-navic";
|
||||
rev = "096b23e73c84a653fd317c0c10261875fa573a6d";
|
||||
sha256 = "vX7ZVJxgatIicmijehtaRvyHxk1i4gFfXrbPM/+VoFc=";
|
||||
};
|
||||
};
|
||||
my-which-key-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "which-key.nvim";
|
||||
version = "2022-05-04";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
|
@ -40,7 +57,27 @@ let
|
|||
};
|
||||
meta.homepage = "https://github.com/folke/which-key.nvim/";
|
||||
};
|
||||
yuck-vim = pkgs.vimUtils.buildVimPlugin {
|
||||
my-conjure = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "conjure";
|
||||
version = "2022-05-04";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "olical";
|
||||
repo = "conjure";
|
||||
rev = "2e7f449d06753f2996e186954e96afc60edd5862";
|
||||
sha256 = "ZV0vPYiZI5/3Isw2l7rrLuiO+kA9G0vrA6OxHFkLTFw=";
|
||||
};
|
||||
};
|
||||
scnvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "scnvim";
|
||||
version = "2022-06-04";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "davidgranstrom";
|
||||
repo = "scnvim";
|
||||
rev = "746cc0db820d02a9c36b8f9ba2eac9725fa73107";
|
||||
sha256 = "kvSwS6FNUY2Ue84NhWLLcm0ldLMSp4WqQ7s6TUoX6Cc=";
|
||||
};
|
||||
};
|
||||
yuck-vim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "yuck.vim";
|
||||
version = "2021-08-09";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
|
@ -50,7 +87,7 @@ let
|
|||
sha256 = "lp7qJWkvelVfoLCyI0aAiajTC+0W1BzDhmtta7tnICE=";
|
||||
};
|
||||
};
|
||||
nvim-parinfer = pkgs.vimUtils.buildVimPlugin {
|
||||
nvim-parinfer = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-parinfer";
|
||||
version = "v1.2.0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
|
@ -60,7 +97,7 @@ let
|
|||
sha256 = "Dlzfp3CZTzq8zQeHByWf3ER6/Em+KNGYNI4Z17ui8Lc=";
|
||||
};
|
||||
};
|
||||
my-marks = pkgs.vimUtils.buildVimPlugin {
|
||||
my-marks = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "marks";
|
||||
version = "2022-08-31";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
|
@ -70,7 +107,7 @@ let
|
|||
sha256 = "XdbgIWuAHNdTfyKDrKmQVq5oSbBoi56DpwtgOqhScAk=";
|
||||
};
|
||||
};
|
||||
my-fterm = pkgs.vimUtils.buildVimPlugin {
|
||||
my-fterm = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "fterm";
|
||||
version = "2022-07-22";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
|
@ -80,7 +117,7 @@ let
|
|||
sha256 = "rR6KDwj58aYfyaSsoUy75536SdBhk394yspCUl/hzfE=";
|
||||
};
|
||||
};
|
||||
my-nvim-peekup = pkgs.vimUtils.buildVimPlugin {
|
||||
my-nvim-peekup = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-peekup";
|
||||
version = "0.1.0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
|
|
@ -90,36 +127,17 @@ let
|
|||
sha256 = "czKjJgCpvRSdtR7rNGlJrluDgPIdx94KUyx33op5gdY=";
|
||||
};
|
||||
};
|
||||
opencode-nvim = pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "opencode.nvim";
|
||||
version = "2024-12-24";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "NickvanDyke";
|
||||
repo = "opencode.nvim";
|
||||
rev = "dfca5bb214d78a600781d50da350238b3e6e2621";
|
||||
hash = "sha256-W7fPGiLpKRe1Nw0MckigUijTNq+L9Z+vxOKcf3oNZf0=";
|
||||
};
|
||||
doCheck = false;
|
||||
};
|
||||
gh-addressed = pkgs.vimUtils.buildVimPlugin {
|
||||
pname = "gh-addressed";
|
||||
version = "2024-09-17";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "dlvhdr";
|
||||
repo = "gh-addressed.nvim";
|
||||
rev = "64c12f0f2a1d28afe53220da5fb86e1adb79be07";
|
||||
sha256 = "0pxzq9jllw7rfspyy6j8dr464g0ph7xvh317l4iyva26ld8889mp";
|
||||
};
|
||||
doCheck = false;
|
||||
doInstallCheck = false;
|
||||
nvimRequireCheck = "none";
|
||||
};
|
||||
};
|
||||
|
||||
my-python-packages = python-packages: with python-packages; [
|
||||
tasklib
|
||||
pynvim
|
||||
six
|
||||
pylsp-mypy
|
||||
#pyls-isort
|
||||
#pyls-black
|
||||
black
|
||||
isort
|
||||
# other python packages you want
|
||||
];
|
||||
python-with-my-packages = pkgs.python3.withPackages my-python-packages;
|
||||
|
|
@ -128,33 +146,21 @@ in
|
|||
home.sessionVariables.EDITOR = "nvim";
|
||||
home.shellAliases = {
|
||||
k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD";
|
||||
# kitaab zettel
|
||||
kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD";
|
||||
# kitaab recents
|
||||
kr = "cd /home/anish/kitaab/vimwiki; eza --sort=modified --reverse | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./{}';cd $OLDPWD";
|
||||
# kitaab get by tagged
|
||||
kt = "cd /home/anish/kitaab/vimwiki; eza *_index.wiki | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./{}';cd $OLDPWD";
|
||||
# List files that have no links in them
|
||||
ku = "cd /home/anish/kitaab/;vim ./vimwiki/$(python3 poonam/main.py report --titles=false | tail -n +4 | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./vimwiki/{}');cd $OLDPWD";
|
||||
};
|
||||
# Add %update to the highlight clause for vimwiki files
|
||||
home.file.".config/nvim/after/syntax/vimwiki.vim".text = ''
|
||||
" match with %update
|
||||
syntax match VimwikiPlaceholder /^\s*%update\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
" match with %link
|
||||
syntax match VimwikiPlaceholder /^\s*%link\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
|
||||
'';
|
||||
|
||||
# Private mode plugin for concealing buffer content (out of store symlink for live editing)
|
||||
home.file.".config/nvim/lua/private-mode.lua".source = config.lib.file.mkOutOfStoreSymlink "${toString ./.}/private-mode.lua";
|
||||
|
||||
#environment.systemPackages = with customPlugins; [ tidal ];
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
|
||||
extraConfig = ''
|
||||
" so our custom files still get included
|
||||
" set runtimepath+=/home/anish/.config/nvim/
|
||||
set runtimepath+=/home/anish/.config/nvim/
|
||||
set tabstop=2
|
||||
set showmatch
|
||||
set shiftwidth=2
|
||||
|
|
@ -191,7 +197,7 @@ in
|
|||
set nobackup
|
||||
set nowritebackup
|
||||
" Better display for messages
|
||||
set cmdheight=0
|
||||
set cmdheight=2
|
||||
" You will have bad experience for diagnostic messages when it's default 4000.
|
||||
set updatetime=300
|
||||
" don't give |ins-completion-menu| messages.
|
||||
|
|
@ -200,7 +206,6 @@ in
|
|||
set signcolumn=yes
|
||||
" highlight row
|
||||
set cursorline
|
||||
set autoread
|
||||
|
||||
let mapleader = "\<Space>"
|
||||
let maplocalleader = ","
|
||||
|
|
@ -215,7 +220,19 @@ in
|
|||
nmap <leader>rt :retab!<CR>
|
||||
vmap <leader>rt :retab!<CR>
|
||||
|
||||
" Alt+hjkl navigation now handled by Navigator.nvim plugin
|
||||
" moving splits with vim movements.
|
||||
:tnoremap <A-h> <C-\><C-N><C-w>h
|
||||
:tnoremap <A-j> <C-\><C-N><C-w>j
|
||||
:tnoremap <A-k> <C-\><C-N><C-w>k
|
||||
:tnoremap <A-l> <C-\><C-N><C-w>l
|
||||
:inoremap <A-h> <C-\><C-N><C-w>h
|
||||
:inoremap <A-j> <C-\><C-N><C-w>j
|
||||
:inoremap <A-k> <C-\><C-N><C-w>k
|
||||
:inoremap <A-l> <C-\><C-N><C-w>l
|
||||
:nnoremap <A-h> <leader>h
|
||||
:nnoremap <A-j> <leader>j
|
||||
:nnoremap <A-k> <leader>k
|
||||
:nnoremap <A-l> <leader>l
|
||||
:nnoremap <F5> "=strftime("%Y-%m-%d %H:%M")<CR>
|
||||
:inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M")<CR>
|
||||
:inoremap <F4> <C-R>=strftime("%H:%M")<CR>
|
||||
|
|
@ -237,7 +254,6 @@ in
|
|||
nnoremap <leader>fb <cmd>Telescope buffers<cr>
|
||||
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
|
||||
nnoremap <leader>ft <cmd>Telescope tags<cr>
|
||||
nnoremap <leader>fr <cmd>lua KitaabRecent()<cr>
|
||||
|
||||
" exit normal mode in terminal
|
||||
:tnoremap <C-n> <C-\><C-n>
|
||||
|
|
@ -245,20 +261,16 @@ in
|
|||
" Sexp in Conjure (since it's fennel)
|
||||
let g:sexp_filetypes = "clojure,scheme,lisp,janet,fennel,yuck"
|
||||
let g:conjure#filetype#fennel = "conjure.client.fennel.stdio"
|
||||
" we only use fennel with love; no we don't...
|
||||
let g:conjure#client#fennel#stdio#command = "fennel"
|
||||
" let g:conjure#extract#tree_sitter#enabled = true
|
||||
map <localleader>lt :ConjureLogToggle<CR>
|
||||
|
||||
let g:rainbow_active = 0
|
||||
autocmd BufReadPost,BufNewFile c,clj,cljs RainbowParenthesesToggleAll
|
||||
|
||||
" general commands
|
||||
map <leader>e :Neotree toggle<CR>
|
||||
map <leader>t :NERDTreeToggle<CR>
|
||||
map <leader>s :w<CR>
|
||||
map <leader>q :q<CR>
|
||||
map <leader>r :RainbowParenthesesToggleAll<CR>
|
||||
nnoremap <Esc> :noh<CR>
|
||||
nnoremap <BS> :noh<CR>
|
||||
map Q <Nop>
|
||||
nnoremap Y y$
|
||||
nnoremap <leader>n :vnew<CR>
|
||||
|
|
@ -289,11 +301,11 @@ in
|
|||
:vmap <leader>sy "*y
|
||||
:map <leader>sp :r!xclip -o<CR>
|
||||
|
||||
" buffer navigation (using built-in commands)
|
||||
nnoremap <silent> gT :bprevious<CR>
|
||||
nnoremap <silent> gt :bnext<CR>
|
||||
nnoremap <silent> gj :buffers<CR>
|
||||
nnoremap <silent> gq :bdelete<CR>
|
||||
" barbar
|
||||
nnoremap <silent> gT :BufferPrevious<CR>
|
||||
nnoremap <silent> gt :BufferNext<CR>
|
||||
nnoremap <silent> gj :BufferPick<CR>
|
||||
nnoremap <silent> gq :BufferClose<CR>
|
||||
|
||||
" git
|
||||
nnoremap <leader>ga :G fetch --all
|
||||
|
|
@ -304,21 +316,16 @@ in
|
|||
nnoremap <leader>gp :Git! push<CR>
|
||||
nnoremap <leader>gd :Gdiff<CR>
|
||||
nnoremap <leader>gc :G commit -v -q %:p<CR>
|
||||
" diffview keybindings
|
||||
nnoremap <leader>do :DiffviewOpen<CR>
|
||||
nnoremap <leader>dc :DiffviewClose<CR>
|
||||
nnoremap <leader>dh :DiffviewFileHistory %<CR>
|
||||
nnoremap <leader>df :DiffviewFileHistory<CR>
|
||||
|
||||
" kitaab
|
||||
"map <leader>cz :VimwikiIndex<CR>:ZettelNew
|
||||
"map <leader>zs :ZettelSearch<CR>
|
||||
map <leader>cz :VimwikiIndex<CR>:ZettelNew
|
||||
map <leader>zs :ZettelSearch<CR>
|
||||
map <leader>zn :ZettelNew<CR>
|
||||
"map <leader>zo :ZettelOpen<CR>
|
||||
"map <leader>zf :Telescope oldfiles only_cwd=true<CR>
|
||||
"map <leader>wt :VimwikiMakeTomorrowDiaryNote
|
||||
"map <leader>wd :VimwikiMakeYesterdayDiaryNote
|
||||
"map <leader>zm :ZenMode<CR>:setlocal nospell<CR>
|
||||
map <leader>zo :ZettelOpen<CR>
|
||||
map <leader>zf :Telescope oldfiles only_cwd=true<CR>
|
||||
map <leader>wt :VimwikiMakeTomorrowDiaryNote
|
||||
map <leader>wd :VimwikiMakeYesterdayDiaryNote
|
||||
map <leader>zm :ZenMode<CR>:setlocal nospell<CR>
|
||||
let g:vimwiki_list = [{ 'path': '~/kitaab/vimwiki', 'auto_tags': 1, 'auto_diary_index': 1, 'auto_generate_links': 1 }]
|
||||
let g:sync_taskwarrior = 0
|
||||
let g:zettel_format = "%y%m%d-%H%M"
|
||||
|
|
@ -331,40 +338,23 @@ in
|
|||
let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.8 } }
|
||||
|
||||
" lsp commands
|
||||
nnoremap gd :lua vim.lsp.buf.definition()<CR>
|
||||
nnoremap gI :lua require('telescope.builtin').lsp_implementation()<CR>
|
||||
nnoremap gK :lua vim.lsp.buf.signature_help()<CR>
|
||||
nnoremap gr :lua require('telescope.builtin').lsp_references()<CR>
|
||||
" nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
|
||||
" nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
|
||||
" nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR>
|
||||
" nnoremap <leader>vsd :lua vim.lsp.util.show_line_diagnostics()<CR>
|
||||
" nnoremap <leader>vn :lua vim.lsp.diagnostic.goto_next()<CR>
|
||||
" nnoremap <leader>va :lua require('telescope.builtin').lsp_code_actions(require('telescope.themes').get_cursor())<cr>
|
||||
nnoremap <leader>vd :lua vim.lsp.buf.definition()<CR>
|
||||
nnoremap <leader>vi :lua require('telescope.builtin').lsp_implementation()<CR>
|
||||
nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR>
|
||||
nnoremap <leader>vrr :lua require('telescope.builtin').lsp_references()<CR>
|
||||
nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
|
||||
nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
|
||||
nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR>
|
||||
nnoremap <leader>vsd :lua vim.lsp.util.show_line_diagnostics()<CR>
|
||||
nnoremap <leader>vn :lua vim.lsp.diagnostic.goto_next()<CR>
|
||||
nnoremap <leader>va :lua require('telescope.builtin').lsp_code_actions(require('telescope.themes').get_cursor())<cr>
|
||||
" lspsaga stuff doesn't work
|
||||
nnoremap <leader>vd :Lspsaga peek_definition<CR>
|
||||
nnoremap <leader>cr :Lspsaga rename<CR><CR>
|
||||
nnoremap K :Lspsaga hover_doc<CR>
|
||||
nnoremap <leader>ca :Lspsaga code_action<CR>
|
||||
nnoremap <leader>vsd :Lspsaga show_line_diagnostics<CR>
|
||||
nnoremap <leader>vs :Dasht<Space>
|
||||
nnoremap <leader>vn :Lspsaga diagnostic_jump_prev<CR>
|
||||
nnoremap <leader>co :Outline<CR>
|
||||
" Trouble keybindings
|
||||
nnoremap <leader>xx :Trouble diagnostics<CR>
|
||||
nnoremap <leader>xw :Trouble workspace_diagnostics<CR>
|
||||
nnoremap <leader>xd :Trouble document_diagnostics<CR>
|
||||
nnoremap <leader>xl :Trouble loclist<CR>
|
||||
nnoremap <leader>xq :Trouble quickfix<CR>
|
||||
nnoremap <leader>xr :Trouble lsp_references<CR>
|
||||
|
||||
" Yank to system clipboard (y operations only, not d)
|
||||
nnoremap y "+y
|
||||
vnoremap y "+y
|
||||
nnoremap Y "+Y
|
||||
|
||||
" Note-taking keybindings
|
||||
nnoremap <leader>zz :ZkNew { title = vim.fn.input('Title: ') }<CR>
|
||||
" nnoremap <leader>vd :call Lspsaga peek_definition<CR>
|
||||
" nnoremap <leader>vrn :call Lspsaga rename<CR><CR>
|
||||
" nnoremap <leader>vh :call Lspsaga hover_doc<CR>
|
||||
" nnoremap <leader>vca :call Lspsaga code_action<CR>
|
||||
" nnoremap <leader>vsd :call Lspsaga show_line_diagnostics<CR>
|
||||
" nnoremap <leader>vn :call Lspsaga diagnostic_jump_prev<CR>
|
||||
|
||||
" dashboard
|
||||
let g:dashboard_custom_header = [
|
||||
|
|
@ -423,7 +413,7 @@ in
|
|||
|
||||
" lua config
|
||||
lua <<EOF
|
||||
local signs = { Error = "⮾ ", Warn = "⚠ ", Hint = "💡", Info = " " }
|
||||
local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " }
|
||||
for type, icon in pairs(signs) do
|
||||
local hl = "DiagnosticSign" .. type
|
||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
|
||||
|
|
@ -474,19 +464,8 @@ in
|
|||
}
|
||||
)
|
||||
|
||||
local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview
|
||||
function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...)
|
||||
opts = opts or {}
|
||||
opts.border = opts.border or 'rounded'
|
||||
return orig_util_open_floating_preview(contents, syntax, opts, ...)
|
||||
end
|
||||
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<leader>vt', ':call v:lua.toggle_diagnostics()<CR>', {noremap = true, silent = true})
|
||||
|
||||
-- nicer diff view
|
||||
vim.opt.diffopt = {'internal', 'filler', 'closeoff', 'algorithm:patience', 'indent-heuristic'}
|
||||
|
||||
|
||||
-- autopairs
|
||||
require('nvim-autopairs').setup{}
|
||||
|
||||
|
|
@ -499,10 +478,6 @@ in
|
|||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
-- private mode
|
||||
-- Setup private mode
|
||||
require('private-mode').setup({ keymap = '<leader>pm' })
|
||||
|
||||
local luasnip = require("luasnip")
|
||||
local lspkind = require("lspkind")
|
||||
local cmp = require('cmp')
|
||||
|
|
@ -519,6 +494,22 @@ in
|
|||
format = lspkind.cmp_format({
|
||||
mode = 'symbol_text',
|
||||
maxwidth = 50,
|
||||
-- old format
|
||||
-- format = function(entry, vim_item)
|
||||
-- -- fancy icons and a name of kind
|
||||
-- vim_item.kind = require("lspkind").presets.default[vim_item.kind] ..
|
||||
-- " " .. vim_item.kind
|
||||
-- -- set a name for each source
|
||||
-- vim_item.menu = ({
|
||||
-- buffer = "[Buffer]",
|
||||
-- nvim_lsp = "[LSP]",
|
||||
-- look = "[Look]",
|
||||
-- path = "[Path]",
|
||||
-- spell = "[Spell]",
|
||||
-- calc = "[Calc]",
|
||||
-- })[entry.source.name]
|
||||
-- return vim_item
|
||||
-- end
|
||||
})
|
||||
},
|
||||
mapping = {
|
||||
|
|
@ -570,191 +561,61 @@ in
|
|||
cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = ' ' } }))
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
-- lsp-format removed, using conform.nvim instead
|
||||
require("nvim-navic").setup {
|
||||
icons = {
|
||||
Constant = "π ",
|
||||
Function = "ƒ "
|
||||
}
|
||||
}
|
||||
|
||||
-- Setup neo-tree
|
||||
require("neo-tree").setup {}
|
||||
|
||||
-- Setup outline
|
||||
require("outline").setup {}
|
||||
|
||||
-- Setup trouble
|
||||
require("trouble").setup {}
|
||||
|
||||
-- Setup noice for floating command palette and notifications
|
||||
require("noice").setup({
|
||||
cmdline = {
|
||||
enabled = true,
|
||||
view = "cmdline_popup",
|
||||
},
|
||||
messages = {
|
||||
enabled = true,
|
||||
},
|
||||
popupmenu = {
|
||||
enabled = true,
|
||||
},
|
||||
notify = {
|
||||
enabled = true,
|
||||
view = "notify",
|
||||
},
|
||||
lsp = {
|
||||
progress = {
|
||||
enabled = true,
|
||||
format = "lsp_progress",
|
||||
format_done = "lsp_progress_done",
|
||||
throttle = 1000 / 30, -- frequency to update lsp progress message
|
||||
view = "mini",
|
||||
},
|
||||
override = {
|
||||
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||
["vim.lsp.util.stylize_markdown"] = true,
|
||||
["cmp.entry.get_documentation"] = true,
|
||||
},
|
||||
},
|
||||
presets = {
|
||||
command_palette = true,
|
||||
long_message_to_split = true,
|
||||
inc_rename = false,
|
||||
lsp_doc_border = false,
|
||||
},
|
||||
views = {
|
||||
cmdline_popup = {
|
||||
border = {
|
||||
style = "rounded",
|
||||
padding = { 0, 1 },
|
||||
},
|
||||
filter_options = {},
|
||||
win_options = {
|
||||
winhighlight = "NormalFloat:NormalFloat,FloatBorder:FloatBorder",
|
||||
},
|
||||
},
|
||||
-- null-ls
|
||||
-- being very janky
|
||||
local null_ls = require("null-ls")
|
||||
null_ls.setup({
|
||||
sources = {
|
||||
null_ls.builtins.diagnostics.shellcheck,
|
||||
null_ls.builtins.diagnostics.proselint.with({ filetypes = { "vimwiki", "mail", }, }),
|
||||
-- null_ls.builtins.code_actions.statix,
|
||||
-- null_ls.builtins.diagnostics.clj_kondo,
|
||||
-- null_ls.builtins.formatting.isort,
|
||||
-- null_ls.builtins.formatting.black,
|
||||
},
|
||||
})
|
||||
|
||||
-- Setup barbar (tabline with icons)
|
||||
require'barbar'.setup {
|
||||
icons = {
|
||||
filetype = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- Setup lspconfig
|
||||
require("lsp-format").setup {}
|
||||
require("nvim-navic").setup {}
|
||||
local format = require("lsp-format")
|
||||
local navic = require("nvim-navic")
|
||||
|
||||
-- Setup conform.nvim for formatting
|
||||
require("conform").setup({
|
||||
formatters_by_ft = {
|
||||
javascript = { "prettier", "lsp" },
|
||||
typescript = { "prettier", "lsp" },
|
||||
javascriptreact = { "prettier", "lsp" },
|
||||
typescriptreact = { "prettier", "lsp" },
|
||||
json = { "prettier", "lsp" },
|
||||
html = { "prettier", "lsp" },
|
||||
css = { "prettier", "lsp" },
|
||||
yaml = { "prettier", "lsp" },
|
||||
rust = { "lsp" },
|
||||
go = { "lsp" },
|
||||
lua = { "lsp" },
|
||||
nix = { "nixfmt-rfc-style" },
|
||||
clojure = { "lsp" },
|
||||
fennel = { "lsp" },
|
||||
terraform = { "lsp" },
|
||||
bash = { "shfmt" },
|
||||
sh = { "shfmt" },
|
||||
},
|
||||
format_on_save = {
|
||||
timeout_ms = 500,
|
||||
lsp_fallback = true,
|
||||
},
|
||||
})
|
||||
|
||||
-- lspsaga, code_action lightbulb is annoying
|
||||
local saga = require('lspsaga')
|
||||
saga.init_lsp_saga({
|
||||
border_style = "rounded",
|
||||
code_action_icon = "",
|
||||
code_action_num_shortcut = true,
|
||||
code_action_lightbulb = {
|
||||
enable = false,
|
||||
enable_in_insert = false,
|
||||
cache_code_action = true,
|
||||
sign = true,
|
||||
update_time = 150,
|
||||
sign_priority = 20,
|
||||
virtual_text = false,
|
||||
},
|
||||
code_action_keys = {
|
||||
quit = 'q',
|
||||
exec = '<CR>',
|
||||
},
|
||||
-- show outline
|
||||
show_outline = {
|
||||
win_position = 'right',
|
||||
--set special filetype win that outline window split.like NvimTree neotree
|
||||
-- defx, db_ui
|
||||
auto_enter = true,
|
||||
auto_preview = true,
|
||||
virt_text = '┃',
|
||||
jump_key = 'o',
|
||||
-- auto refresh when change buffer
|
||||
auto_refresh = true,
|
||||
},
|
||||
})
|
||||
-- local saga = require('lspsaga')
|
||||
-- saga.init_lsp_saga({
|
||||
-- code_action_lightbulb = {
|
||||
-- enable = true,
|
||||
-- enable_in_insert = true,
|
||||
-- cache_code_action = true,
|
||||
-- sign = true,
|
||||
-- update_time = 150,
|
||||
-- sign_priority = 4,
|
||||
-- virtual_text = false,
|
||||
-- },
|
||||
-- })
|
||||
|
||||
capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||
|
||||
-- fennel-ls is bleeding edge
|
||||
local lspconfig = require('lspconfig')
|
||||
require("lspconfig.configs")["fennel-ls"] = {
|
||||
default_config = {
|
||||
cmd = {"fennel-ls"},
|
||||
filetypes = {"fennel"},
|
||||
root_dir = function(dir) return lspconfig.util.find_git_ancestor(dir) end,
|
||||
settings = {}
|
||||
}
|
||||
}
|
||||
|
||||
local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'ts_ls', 'lua_ls', 'gopls', 'bashls'}
|
||||
local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'tsserver', 'sumneko_lua' }
|
||||
for _, lsp in ipairs(servers) do
|
||||
lspconfig[lsp].setup {
|
||||
on_attach = function(client, bufnr)
|
||||
format.on_attach(client)
|
||||
navic.attach(client, bufnr)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end
|
||||
|
||||
-- nil_ls needs custom settings to disable autoArchive prompt
|
||||
lspconfig['nil_ls'].setup {
|
||||
-- rnix doesn't support gps
|
||||
require('lspconfig').rnix.setup {
|
||||
on_attach = function(client, bufnr)
|
||||
navic.attach(client, bufnr)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
settings = {
|
||||
['nil'] = {
|
||||
nix = {
|
||||
flake = {
|
||||
autoArchive = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- fennel-ls doesn't support navic
|
||||
lspconfig['fennel-ls'].setup {
|
||||
on_attach = function(client, bufnr)
|
||||
-- fennel-ls setup without navic
|
||||
format.on_attach(client)
|
||||
end,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
|
||||
-- deprecated pylsp
|
||||
-- require('lspconfig').pylsp.setup {
|
||||
-- on_attach = function(client, bufnr)
|
||||
|
|
@ -784,8 +645,8 @@ in
|
|||
|
||||
-- treesitter
|
||||
require('nvim-treesitter.configs').setup {
|
||||
-- parser_install_dir = "~/.local/share/nvim/site/parser/",
|
||||
-- ensure_installed={'nix', 'clojure', 'python', 'fennel', 'lua', 'html', 'css', 'regex', 'supercollider', 'beancount', 'janet'},
|
||||
parser_install_dir = "~/.local/share/nvim/site/parser/",
|
||||
ensure_installed={'nix', 'clojure', 'python', 'fennel', 'lua', 'html', 'css', 'regex', 'supercollider', 'beancount'},
|
||||
highlight = { enabled = true, additional_vim_regex_highting = true, },
|
||||
textobjects = { enabled = true },
|
||||
}
|
||||
|
|
@ -803,7 +664,7 @@ in
|
|||
function()
|
||||
local msg = 'No Active Lsp'
|
||||
local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype')
|
||||
local clients = vim.lsp.get_clients()
|
||||
local clients = vim.lsp.get_active_clients()
|
||||
if next(clients) == nil then
|
||||
return msg
|
||||
end
|
||||
|
|
@ -829,7 +690,7 @@ in
|
|||
local map = vim.api.nvim_set_keymap
|
||||
local opts = { noremap = true, silent = true }
|
||||
map('n', '<TAB>', '<CMD>lua require("FTerm").toggle()<CR>', opts)
|
||||
map('t', '<TAB>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', opts)
|
||||
map('t', '<A-i>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', opts)
|
||||
|
||||
-- Custom functions
|
||||
function update_date()
|
||||
|
|
@ -866,17 +727,11 @@ in
|
|||
)
|
||||
|
||||
-- auto session
|
||||
vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
|
||||
require('auto-session').setup {
|
||||
log_level = 'error',
|
||||
auto_session_suppress_dirs = {'~/', '/tmp', '/'},
|
||||
auto_session_enable_last_session = false,
|
||||
auto_session_root_dir = vim.fn.stdpath('data').."/sessions/",
|
||||
auto_session_enabled = true,
|
||||
auto_save_enabled = nil,
|
||||
auto_restore_enabled = nil,
|
||||
auto_session_create_enabled = nil,
|
||||
log_level = 'info',
|
||||
auto_session_suppress_dirs = {'~/'}
|
||||
}
|
||||
vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal"
|
||||
|
||||
require("which-key").setup{}
|
||||
require('leap').set_default_keymaps()
|
||||
|
|
@ -904,72 +759,8 @@ in
|
|||
['<F2>'] = map_expr('s.meter'),
|
||||
}
|
||||
}
|
||||
-- You gotta run :SCNvimGenerateAssets for this first
|
||||
-- require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets())
|
||||
|
||||
-- zk
|
||||
require("zk").setup()
|
||||
-- vim.api.nvim_set_keymap("n", "<leader>zn", "<Cmd>ZkNew { title = vim.fn.input('Title: ') }<CR>", opts)
|
||||
|
||||
-- Open notes.
|
||||
vim.api.nvim_set_keymap("n", "<leader>zo", "<Cmd>ZkNotes { sort = { 'modified' } }<CR>", opts)
|
||||
-- Open notes associated with the selected tags.
|
||||
vim.api.nvim_set_keymap("n", "<leader>zt", "<Cmd>ZkTags<CR>", opts)
|
||||
|
||||
local map = vim.api.nvim_set_keymap
|
||||
-- Search for the notes matching a given query.
|
||||
vim.api.nvim_set_keymap("n", "<leader>zf", "<Cmd>ZkNotes { sort = { 'modified' }, match = { vim.fn.input('Search: ') } }<CR>", opts)
|
||||
-- Search for the notes matching the current visual selection.
|
||||
vim.api.nvim_set_keymap("v", "<leader>zf", ":'<,'>ZkMatch<CR>", opts)
|
||||
map("n", "<CR>", "<Cmd>lua vim.lsp.buf.definition()<CR>", opts)
|
||||
|
||||
-- Create a new note after asking for its title.
|
||||
-- This overrides the global `<leader>zn` mapping to create the note in the same directory as the current buffer.
|
||||
-- map("n", "<leader>zn", "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts)
|
||||
-- Create a new note in the same directory as the current buffer, using the current selection for title.
|
||||
-- map("v", "<leader>znt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>", opts)
|
||||
-- Create a new note in the same directory as the current buffer, using the current selection for note content and asking for its title.
|
||||
map("v", "<leader>znc", ":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts)
|
||||
|
||||
-- Open notes linking to the current buffer.
|
||||
map("n", "<leader>zb", "<Cmd>ZkBacklinks<CR>", opts)
|
||||
-- Alternative for backlinks using pure LSP and showing the source context.
|
||||
--map('n', '<leader>zb', '<Cmd>lua vim.lsp.buf.references()<CR>', opts)
|
||||
-- Open notes linked by the current buffer.
|
||||
map("n", "<leader>zl", "<Cmd>ZkLinks<CR>", opts)
|
||||
|
||||
-- Preview a linked note.
|
||||
map("n", "<leader>ck", "<Cmd>lua vim.lsp.buf.hover()<CR>", opts)
|
||||
-- Open the code actions for a visual selection.
|
||||
map("v", "<leader>za", ":'<,'>lua vim.lsp.buf.range_code_action()<CR>", opts)
|
||||
|
||||
-- diffview setup
|
||||
require('diffview').setup{
|
||||
use_icons = true,
|
||||
view = {
|
||||
default = {
|
||||
layout = "diff2_horizontal",
|
||||
},
|
||||
merge_tool = {
|
||||
layout = "diff3_horizontal",
|
||||
disable_diagnostics = true,
|
||||
},
|
||||
},
|
||||
file_panel = {
|
||||
listing_style = "tree",
|
||||
win_config = {
|
||||
position = "left",
|
||||
width = 35,
|
||||
},
|
||||
},
|
||||
file_history_panel = {
|
||||
win_config = {
|
||||
position = "bottom",
|
||||
height = 16,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- zen mode
|
||||
require('zen-mode').setup{
|
||||
window = {
|
||||
|
|
@ -1015,130 +806,36 @@ in
|
|||
}
|
||||
require('twilight').setup{}
|
||||
|
||||
-- hologram
|
||||
require('hologram').setup{
|
||||
auto_display = false -- WIP automatic markdown image display, may be prone to breaking
|
||||
}
|
||||
|
||||
-- Setup Navigator.nvim
|
||||
require('Navigator').setup {
|
||||
disable_on_zoom = true,
|
||||
mux = 'auto', -- auto-detect tmux
|
||||
}
|
||||
|
||||
-- Set up Navigator.nvim keybindings
|
||||
vim.keymap.set({'n', 't'}, '<M-h>', '<CMD>NavigatorLeft<CR>')
|
||||
vim.keymap.set({'n', 't'}, '<M-j>', '<CMD>NavigatorDown<CR>')
|
||||
vim.keymap.set({'n', 't'}, '<M-k>', '<CMD>NavigatorUp<CR>')
|
||||
vim.keymap.set({'n', 't'}, '<M-l>', '<CMD>NavigatorRight<CR>')
|
||||
|
||||
-- Paste from system clipboard in insert mode (handles tmux/kitty better)
|
||||
vim.keymap.set('i', '<C-v>', '<C-r><C-p>+', {noremap = true, silent = true})
|
||||
|
||||
-- Pane resizing with Alt+Shift+hjkl (to match tmux)
|
||||
vim.keymap.set('n', '<M-S-h>', '<Cmd>vertical resize -2<CR>', {silent = true})
|
||||
vim.keymap.set('n', '<M-S-j>', '<Cmd>resize -2<CR>', {silent = true})
|
||||
vim.keymap.set('n', '<M-S-k>', '<Cmd>resize +2<CR>', {silent = true})
|
||||
vim.keymap.set('n', '<M-S-l>', '<Cmd>vertical resize +2<CR>', {silent = true})
|
||||
|
||||
-- opencode.nvim setup with tmux provider
|
||||
vim.g.opencode_opts = {
|
||||
provider = {
|
||||
enabled = "tmux",
|
||||
tmux = {
|
||||
-- default tmux provider settings work well
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- opencode.nvim keybindings
|
||||
vim.keymap.set({ "n", "x" }, "<leader>oa", function() require("opencode").ask("@this: ") end, { desc = "Ask opencode" })
|
||||
vim.keymap.set({ "n", "x" }, "<leader>os", function() require("opencode").select() end, { desc = "Select opencode action" })
|
||||
vim.keymap.set({ "n", "t" }, "<leader>oo", function() require("opencode").toggle() end, { desc = "Toggle opencode" })
|
||||
vim.keymap.set({ "n", "x" }, "<leader>op", function() return require("opencode").operator("@this ") end, { expr = true, desc = "Add range to opencode" })
|
||||
|
||||
-- Kitaab recent files (only date-based files, sorted reverse)
|
||||
function KitaabRecent()
|
||||
local pickers = require('telescope.pickers')
|
||||
local finders = require('telescope.finders')
|
||||
local conf = require('telescope.config').values
|
||||
|
||||
-- Use current working directory
|
||||
local kitaab_path = vim.fn.getcwd()
|
||||
|
||||
-- Get all files (depth 1, exclude directories)
|
||||
local files = vim.fn.readdir(kitaab_path, function(name)
|
||||
return vim.fn.isdirectory(kitaab_path .. '/' .. name) == 0
|
||||
end)
|
||||
|
||||
-- Filter to only date-based files (starting with digit)
|
||||
local date_files = {}
|
||||
for _, filename in ipairs(files) do
|
||||
if filename:match('^%d') then
|
||||
table.insert(date_files, filename)
|
||||
end
|
||||
end
|
||||
|
||||
-- Sort in reverse (most recent first)
|
||||
table.sort(date_files, function(a, b) return a > b end)
|
||||
|
||||
pickers.new({}, {
|
||||
prompt_title = 'Kitaab Recent',
|
||||
finder = finders.new_table({
|
||||
results = date_files,
|
||||
entry_maker = function(entry)
|
||||
return {
|
||||
value = kitaab_path .. '/' .. entry,
|
||||
display = entry,
|
||||
ordinal = entry,
|
||||
path = kitaab_path .. '/' .. entry,
|
||||
}
|
||||
end
|
||||
}),
|
||||
previewer = conf.file_previewer({}),
|
||||
sorter = conf.generic_sorter({}),
|
||||
}):find()
|
||||
end
|
||||
|
||||
EOF
|
||||
|
||||
'';
|
||||
extraPackages = with pkgs // customPlugins; [
|
||||
# used to compile tree-sitter grammar
|
||||
tree-sitter
|
||||
python-with-my-packages
|
||||
nodejs
|
||||
clojure-lsp
|
||||
clojure
|
||||
nil
|
||||
rnix-lsp
|
||||
terraform-lsp
|
||||
rust-analyzer
|
||||
clj-kondo
|
||||
zls
|
||||
gopls
|
||||
gcc
|
||||
pyright
|
||||
nodePackages_latest.pyright
|
||||
shellcheck
|
||||
proselint
|
||||
statix
|
||||
nodePackages.typescript
|
||||
nodePackages.typescript-language-server
|
||||
nodePackages.bash-language-server
|
||||
luajitPackages.lua-lsp
|
||||
fennel-ls
|
||||
nixfmt-rfc-style
|
||||
shfmt
|
||||
zk
|
||||
sumneko-lua-language-server
|
||||
];
|
||||
|
||||
plugins = with pkgs.vimPlugins // customPlugins; [
|
||||
# ui
|
||||
lualine-nvim
|
||||
fzf-vim
|
||||
neo-tree-nvim
|
||||
outline-nvim
|
||||
noice-nvim
|
||||
nui-nvim
|
||||
trouble-nvim
|
||||
nerdtree
|
||||
neovim-ayu
|
||||
rainbow_parentheses-vim
|
||||
vim-surround
|
||||
|
|
@ -1148,7 +845,7 @@ in
|
|||
telescope-nvim
|
||||
plenary-nvim
|
||||
nvim-navic
|
||||
(nvim-treesitter.withPlugins (p: [ p.nix p.clojure p.python p.fennel p.lua p.html p.css p.regex p.supercollider p.beancount p.markdown p.glsl p.yaml p.toml p.dockerfile p.json ]))
|
||||
nvim-treesitter
|
||||
nvim-treesitter-context
|
||||
my-fterm
|
||||
barbar-nvim
|
||||
|
|
@ -1158,8 +855,7 @@ in
|
|||
nvim-peekup
|
||||
zen-mode-nvim
|
||||
twilight-nvim
|
||||
my-lspsaga
|
||||
vim-dasht
|
||||
lspsaga-nvim
|
||||
|
||||
# language
|
||||
vim-nix
|
||||
|
|
@ -1174,11 +870,10 @@ in
|
|||
vimwiki
|
||||
taskwiki
|
||||
vim-zettel
|
||||
hologram-nvim
|
||||
zk-nvim
|
||||
|
||||
# lsp stuff
|
||||
# nvim-lint
|
||||
null-ls-nvim
|
||||
nvim-lspconfig
|
||||
nvim-cmp
|
||||
cmp-nvim-lsp
|
||||
|
|
@ -1191,7 +886,7 @@ in
|
|||
nvim-autopairs
|
||||
cmp_luasnip
|
||||
luasnip
|
||||
conform-nvim
|
||||
lsp-format
|
||||
friendly-snippets
|
||||
lspkind-nvim
|
||||
|
||||
|
|
@ -1199,7 +894,6 @@ in
|
|||
vim-fugitive
|
||||
gitsigns-nvim
|
||||
fzf-checkout-vim
|
||||
diffview-nvim
|
||||
|
||||
# Clojure stuff
|
||||
# conjure
|
||||
|
|
@ -1207,29 +901,21 @@ in
|
|||
vim-sexp-mappings-for-regular-people
|
||||
fennel-vim
|
||||
|
||||
vim-tidal
|
||||
# experimental
|
||||
nvim-luapad
|
||||
gh-addressed
|
||||
scnvim
|
||||
leap-nvim
|
||||
Navigator-nvim
|
||||
leap
|
||||
vim-beancount
|
||||
# vimtex
|
||||
# custom
|
||||
yuck-vim
|
||||
nvim-parinfer
|
||||
|
||||
# opencode integration
|
||||
opencode-nvim
|
||||
# vim-processing
|
||||
] ++ lib.optionals pkgs.stdenv.isLinux [
|
||||
# Linux-only plugins
|
||||
vim-tidal # requires SuperCollider which is Linux-only
|
||||
];
|
||||
];
|
||||
withPython3 = true;
|
||||
extraPython3Packages = pkgs: with pkgs; [ tasklib six packaging ];
|
||||
extraPython3Packages = pkgs: with pkgs; [ tasklib six ];
|
||||
vimAlias = true;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": true
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,201 +0,0 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
# 💤 LazyVim
|
||||
|
||||
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
|
||||
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("config.lazy")
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
{
|
||||
"LazyVim": { "branch": "main", "commit": "12818a6cb499456f4903c5d8e68af43753ebc869" },
|
||||
"SchemaStore.nvim": { "branch": "main", "commit": "54a2cf0105166d5a48172e81f12a2bf10cfc8b2c" },
|
||||
"aerial.nvim": { "branch": "master", "commit": "e585934fef8d253dbc5655cff3deb3444e064e6c" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "0b2fd861eee7595015b6561dade52fb060be10c4" },
|
||||
"catppuccin": { "branch": "main", "commit": "4fd72a9ab64b393c2c22b168508fd244877fec96" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||
"cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"conform.nvim": { "branch": "master", "commit": "62eba813b7501b39612146cbf29cd07f1d4ac29c" },
|
||||
"dashboard-nvim": { "branch": "master", "commit": "fabf5feec96185817c732d47d363f34034212685" },
|
||||
"dressing.nvim": { "branch": "master", "commit": "c5775a888adbc50652cb370073fcfec963eca93e" },
|
||||
"flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "562dc47189ad3c8696dbf460d38603a74d544849" },
|
||||
"grug-far.nvim": { "branch": "main", "commit": "ebab68b2150079732ae8074eefb261a124824139" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "db926997af951da38e5004ec7b9fbdc480b48f5d" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "077102c5bfc578693f12377846d427f49bc50076" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "491452cf1ca6f029e90ad0d0368848fac717c6d2" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" },
|
||||
"luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "482350b050bd413931c2cdd4857443c3da7d57cb" },
|
||||
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
|
||||
"mini.ai": { "branch": "main", "commit": "a9b992b13d22a8db8df6beac25afa59a10b5584d" },
|
||||
"mini.icons": { "branch": "main", "commit": "12e7b5d47bfc1b4c5ba4278fb49ec9100138df14" },
|
||||
"mini.pairs": { "branch": "main", "commit": "927d19cbdd0e752ab1c7eed87072e71d2cd6ff51" },
|
||||
"mini.surround": { "branch": "main", "commit": "d8913ed23be0a1a4585ae34414821cc343a46174" },
|
||||
"neo-tree.nvim": { "branch": "main", "commit": "206241e451c12f78969ff5ae53af45616ffc9b72" },
|
||||
"neovim-ayu": { "branch": "master", "commit": "6993189dd0ee38299879a1a0064718a8392e8713" },
|
||||
"noice.nvim": { "branch": "main", "commit": "448bb9c524a7601035449210838e374a30153172" },
|
||||
"nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" },
|
||||
"nvim-lint": { "branch": "master", "commit": "debabca63c0905b59ce596a55a8e33eafdf66342" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "911167921d49cd5c1c9b2436031d0da3945e787f" },
|
||||
"nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
|
||||
"nvim-snippets": { "branch": "main", "commit": "56b4052f71220144689caaa2e5b66222ba5661eb" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "04401b5dd17c3419dae5141677bd256f52d54733" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "41e3abf6bfd9a9a681eb1f788bdeba91c9004b2b" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "0cb76eea80e9c73b88880f0ca78fbd04c5bdcac7" },
|
||||
"outline.nvim": { "branch": "main", "commit": "02a18194b3d2adfb537dd1a9f21d1fc29dd31382" },
|
||||
"persistence.nvim": { "branch": "main", "commit": "f6aad7dde7fcf54148ccfc5f622c6d5badd0cc3d" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "ec289423a1693aeae6cd0d503bac2856af74edaa" },
|
||||
"sg.nvim": { "branch": "master", "commit": "8bdd4d19da2268072708d5fe18fda9c23e16509d" },
|
||||
"tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "3d3cd95e4a4135c250faf83dd5ed61b8e5502b86" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" },
|
||||
"telescope-terraform-doc.nvim": { "branch": "main", "commit": "7ac642765615e6ff164ecfc82eb278aa68d06840" },
|
||||
"telescope-terraform.nvim": { "branch": "main", "commit": "072c97023797ca1a874668aaa6ae0b74425335df" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "5972437de807c3bc101565175da66a1aa4f8707a" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "8f45f353dc3649cb9b44cecda96827ea88128584" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "b0e7c7382a7e8f6456f2a95655983993ffda745e" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "6efc446226679fda0547c0fd6a7892fd5f5b15d8" },
|
||||
"ts-comments.nvim": { "branch": "main", "commit": "98d7d4dec0af1312d38e288f800bbf6ff562b6ab" },
|
||||
"vim-dadbod": { "branch": "master", "commit": "7888cb7164d69783d3dce4e0283decd26b82538b" },
|
||||
"vim-dadbod-completion": { "branch": "master", "commit": "880f7e9f2959e567c718d52550f9fae1aa07aa81" },
|
||||
"vim-dadbod-ui": { "branch": "master", "commit": "0f51d8de368c8c6220973e8acd156d17da746f4c" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "0444df68cd1cdabc7453d6bd84099458327e5513" },
|
||||
"vim-helm": { "branch": "master", "commit": "ae1ebc160d2b9b90108477ab10df7a4fc501e358" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "6c1584eb76b55629702716995cca4ae2798a9cca" }
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
"extras": [
|
||||
"lazyvim.plugins.extras.editor.aerial",
|
||||
"lazyvim.plugins.extras.editor.outline",
|
||||
"lazyvim.plugins.extras.lang.go",
|
||||
"lazyvim.plugins.extras.lang.helm",
|
||||
"lazyvim.plugins.extras.lang.json",
|
||||
"lazyvim.plugins.extras.lang.nix",
|
||||
"lazyvim.plugins.extras.lang.sql",
|
||||
"lazyvim.plugins.extras.lang.svelte",
|
||||
"lazyvim.plugins.extras.lang.tailwind",
|
||||
"lazyvim.plugins.extras.lang.terraform",
|
||||
"lazyvim.plugins.extras.lang.typescript"
|
||||
],
|
||||
"news": {
|
||||
"NEWS.md": "6520"
|
||||
},
|
||||
"version": 6
|
||||
}
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
-- Autocmds are automatically loaded on the VeryLazy event
|
||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||
-- Add any additional autocmds here
|
||||
|
||||
-- Aggressive fugitive auto-reload with polling
|
||||
local function setup_fugitive_aggressive_reload()
|
||||
local timer = nil
|
||||
|
||||
local function refresh_fugitive()
|
||||
-- Check all files for changes
|
||||
vim.cmd("silent! checktime")
|
||||
|
||||
-- Force refresh any open fugitive buffers
|
||||
for _, win in ipairs(vim.api.nvim_list_wins()) do
|
||||
local buf = vim.api.nvim_win_get_buf(win)
|
||||
if vim.api.nvim_buf_get_option(buf, "filetype") == "fugitive" then
|
||||
vim.api.nvim_buf_call(buf, function()
|
||||
pcall(vim.cmd, "silent! edit")
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function start_polling()
|
||||
if timer then vim.fn.timer_stop(timer) end
|
||||
-- Poll every 2 seconds
|
||||
timer = vim.fn.timer_start(2000, function()
|
||||
refresh_fugitive()
|
||||
end, { ["repeat"] = -1 })
|
||||
end
|
||||
|
||||
local function stop_polling()
|
||||
if timer then
|
||||
vim.fn.timer_stop(timer)
|
||||
timer = nil
|
||||
end
|
||||
end
|
||||
|
||||
local augroup = vim.api.nvim_create_augroup("FugitiveAggressiveReload", { clear = true })
|
||||
|
||||
-- Start polling when fugitive buffer opens
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
group = augroup,
|
||||
pattern = "fugitive",
|
||||
callback = start_polling,
|
||||
})
|
||||
|
||||
-- Stop polling when no fugitive buffers are open
|
||||
vim.api.nvim_create_autocmd("BufDelete", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
-- Check if any fugitive buffers remain
|
||||
local has_fugitive = false
|
||||
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_valid(buf) and vim.api.nvim_buf_get_option(buf, "filetype") == "fugitive" then
|
||||
has_fugitive = true
|
||||
break
|
||||
end
|
||||
end
|
||||
if not has_fugitive then
|
||||
stop_polling()
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
-- Set up aggressive reload
|
||||
setup_fugitive_aggressive_reload()
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
-- Keymaps are automatically loaded on the VeryLazy event
|
||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||
-- Add any additional keymaps here
|
||||
local map = vim.keymap.set
|
||||
|
||||
-- Navigation
|
||||
map("n", "gt", "<cmd>bnext<cr>", { desc = "Next Buffer" })
|
||||
map("n", "gT", "<cmd>bprevious<cr>", { desc = "Prev Buffer" })
|
||||
map("n", "gq", "<cmd>bdelete<cr>", { desc = "Prev Buffer" })
|
||||
map("n", "<leader>q", "<cmd>q<cr>", { desc = "Quit" })
|
||||
|
||||
-- Git
|
||||
map("n", "<leader>gs", "<cmd>:G<cr>", { desc = "Git Status" })
|
||||
map("n", "<leader>gb", "<cmd>Telescope git_branches<cr>", { desc = "Git Status" })
|
||||
map("n", "<leader>gp", "<cmd>:G! push<cr>", { desc = "Git Status" })
|
||||
|
||||
-- Telescope
|
||||
map("n", "<leader>fs", "<cmd>Telescope live_grep<cr>", { desc = "Telescop Live Grep" })
|
||||
|
||||
-- Cody
|
||||
map("n", "<leader>co", "<cmd>CodyChat<cr>", { desc = "Cody Chat" })
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import/override with your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||
lazy = false,
|
||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||
-- have outdated releases, which may break your Neovim install.
|
||||
version = false, -- always use the latest git commit
|
||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||
},
|
||||
install = { colorscheme = { "tokyonight", "habamax" } },
|
||||
checker = {
|
||||
enabled = true, -- check for plugin updates periodically
|
||||
notify = false, -- notify on update
|
||||
}, -- automatically check for plugin updates
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
-- "matchit",
|
||||
-- "matchparen",
|
||||
-- "netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
require("sg").setup({})
|
||||
-- require("ayu").setup({ mirage = true })
|
||||
-- require("ayu").colorscheme()
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
-- Options are automatically loaded before lazy.nvim startup
|
||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||
-- Add any additional options here
|
||||
|
||||
-- Enable autoread to detect external file changes
|
||||
vim.opt.autoread = true
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"sourcegraph/amp.nvim",
|
||||
branch = "main",
|
||||
lazy = false,
|
||||
opts = { auto_start = true, log_level = "info" },
|
||||
},
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"sourcegraph/sg.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
},
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
---@param opts cmp.ConfigSchema
|
||||
opts = function(_, opts)
|
||||
table.insert(opts.sources, { name = "cody" })
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"catppuccin/nvim",
|
||||
lazy = true,
|
||||
name = "catppuccin",
|
||||
opts = {
|
||||
integrations = {
|
||||
aerial = true,
|
||||
alpha = true,
|
||||
cmp = true,
|
||||
dashboard = true,
|
||||
flash = true,
|
||||
gitsigns = true,
|
||||
headlines = true,
|
||||
illuminate = true,
|
||||
indent_blankline = { enabled = true },
|
||||
leap = true,
|
||||
lsp_trouble = true,
|
||||
mason = true,
|
||||
markdown = true,
|
||||
mini = true,
|
||||
native_lsp = {
|
||||
enabled = true,
|
||||
underlines = {
|
||||
errors = { "undercurl" },
|
||||
hints = { "undercurl" },
|
||||
warnings = { "undercurl" },
|
||||
information = { "undercurl" },
|
||||
},
|
||||
},
|
||||
navic = { enabled = true, custom_bg = "lualine" },
|
||||
neotest = true,
|
||||
neotree = true,
|
||||
noice = true,
|
||||
semantic_tokens = true,
|
||||
telescope = true,
|
||||
treesitter = true,
|
||||
treesitter_context = true,
|
||||
which_key = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{ "Shatur/neovim-ayu", lazy = false },
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "catppuccin-macchiato",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -1,193 +0,0 @@
|
|||
-- since this is just an example spec, don't actually load anything here and return an empty spec
|
||||
-- stylua: ignore
|
||||
if true then return {} end
|
||||
|
||||
-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
|
||||
--
|
||||
-- In your plugin files, you can:
|
||||
-- * add extra plugins
|
||||
-- * disable/enabled LazyVim plugins
|
||||
-- * override the configuration of LazyVim plugins
|
||||
return {
|
||||
-- add gruvbox
|
||||
{ "ellisonleao/gruvbox.nvim" },
|
||||
|
||||
-- Configure LazyVim to load gruvbox
|
||||
{
|
||||
"LazyVim/LazyVim",
|
||||
opts = {
|
||||
colorscheme = "gruvbox",
|
||||
},
|
||||
},
|
||||
|
||||
-- change trouble config
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
-- opts will be merged with the parent spec
|
||||
opts = { use_diagnostic_signs = true },
|
||||
},
|
||||
|
||||
-- disable trouble
|
||||
{ "folke/trouble.nvim", enabled = false },
|
||||
|
||||
-- override nvim-cmp and add cmp-emoji
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = { "hrsh7th/cmp-emoji" },
|
||||
---@param opts cmp.ConfigSchema
|
||||
opts = function(_, opts)
|
||||
table.insert(opts.sources, { name = "emoji" })
|
||||
end,
|
||||
},
|
||||
|
||||
-- change some telescope options and a keymap to browse plugin files
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
keys = {
|
||||
-- add a keymap to browse plugin files
|
||||
-- stylua: ignore
|
||||
{
|
||||
"<leader>fp",
|
||||
function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
|
||||
desc = "Find Plugin File",
|
||||
},
|
||||
},
|
||||
-- change some options
|
||||
opts = {
|
||||
defaults = {
|
||||
layout_strategy = "horizontal",
|
||||
layout_config = { prompt_position = "top" },
|
||||
sorting_strategy = "ascending",
|
||||
winblend = 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- add pyright to lspconfig
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
---@class PluginLspOpts
|
||||
opts = {
|
||||
---@type lspconfig.options
|
||||
servers = {
|
||||
-- pyright will be automatically installed with mason and loaded with lspconfig
|
||||
pyright = {},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- add tsserver and setup with typescript.nvim instead of lspconfig
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
dependencies = {
|
||||
"jose-elias-alvarez/typescript.nvim",
|
||||
init = function()
|
||||
require("lazyvim.util").lsp.on_attach(function(_, buffer)
|
||||
-- stylua: ignore
|
||||
vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
|
||||
vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
|
||||
end)
|
||||
end,
|
||||
},
|
||||
---@class PluginLspOpts
|
||||
opts = {
|
||||
---@type lspconfig.options
|
||||
servers = {
|
||||
-- tsserver will be automatically installed with mason and loaded with lspconfig
|
||||
tsserver = {},
|
||||
},
|
||||
-- you can do any additional lsp server setup here
|
||||
-- return true if you don't want this server to be setup with lspconfig
|
||||
---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
|
||||
setup = {
|
||||
-- example to setup with typescript.nvim
|
||||
tsserver = function(_, opts)
|
||||
require("typescript").setup({ server = opts })
|
||||
return true
|
||||
end,
|
||||
-- Specify * to use this function as a fallback for any server
|
||||
-- ["*"] = function(server, opts) end,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
|
||||
-- treesitter, mason and typescript.nvim. So instead of the above, you can use:
|
||||
{ import = "lazyvim.plugins.extras.lang.typescript" },
|
||||
|
||||
-- add more treesitter parsers
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"html",
|
||||
"javascript",
|
||||
"json",
|
||||
"lua",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"python",
|
||||
"query",
|
||||
"regex",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vim",
|
||||
"yaml",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
|
||||
-- would overwrite `ensure_installed` with the new value.
|
||||
-- If you'd rather extend the default config, use the code below instead:
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
-- add tsx and treesitter
|
||||
vim.list_extend(opts.ensure_installed, {
|
||||
"tsx",
|
||||
"typescript",
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- the opts function can also be used to change the default opts:
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = function(_, opts)
|
||||
table.insert(opts.sections.lualine_x, "😄")
|
||||
end,
|
||||
},
|
||||
|
||||
-- or you can return new options to override all the defaults
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = function()
|
||||
return {
|
||||
--[[add your custom lualine config here]]
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
-- use mini.starter instead of alpha
|
||||
{ import = "lazyvim.plugins.extras.ui.mini-starter" },
|
||||
|
||||
-- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
|
||||
{ import = "lazyvim.plugins.extras.lang.json" },
|
||||
|
||||
-- add any tools you want to have installed below
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
opts = {
|
||||
ensure_installed = {
|
||||
"stylua",
|
||||
"shellcheck",
|
||||
"shfmt",
|
||||
"flake8",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"tpope/vim-fugitive",
|
||||
lazy = false,
|
||||
},
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"dlvhdr/gh-addressed.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"MunifTanjim/nui.nvim",
|
||||
"folke/trouble.nvim", -- optional
|
||||
},
|
||||
cmd = "GhReviewComments",
|
||||
keys = {
|
||||
{ "<leader>gc", "<cmd>GhReviewComments<cr>", desc = "GitHub Review Comments" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
return {
|
||||
"echasnovski/mini.surround",
|
||||
opts = {
|
||||
mappings = {
|
||||
add = "ys",
|
||||
delete = "ds",
|
||||
find = "gsf",
|
||||
find_left = "gsF",
|
||||
highlight = "gsh",
|
||||
replace = "cs",
|
||||
update_n_lines = "gsn",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
"console.log": {
|
||||
"prefix": "clog",
|
||||
"body": [
|
||||
"console.log('$1')"
|
||||
],
|
||||
"description": "Log output to console"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
local M = {}
|
||||
|
||||
local ns_id = vim.api.nvim_create_namespace('private_mode')
|
||||
local enabled = false
|
||||
local concealed_char = '•' -- Character to show instead of text
|
||||
|
||||
local function conceal_buffer()
|
||||
local buf = vim.api.nvim_get_current_buf()
|
||||
local line_count = vim.api.nvim_buf_line_count(buf)
|
||||
|
||||
vim.api.nvim_buf_clear_namespace(buf, ns_id, 0, -1)
|
||||
|
||||
for i = 0, line_count - 1 do
|
||||
local line = vim.api.nvim_buf_get_lines(buf, i, i + 1, false)[1]
|
||||
if line and #line > 0 then
|
||||
-- Conceal each character individually
|
||||
for col = 0, #line - 1 do
|
||||
vim.api.nvim_buf_set_extmark(buf, ns_id, i, col, {
|
||||
end_col = col + 1,
|
||||
conceal = concealed_char,
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function reveal_current_line()
|
||||
local buf = vim.api.nvim_get_current_buf()
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
local current_line = cursor[1] - 1
|
||||
|
||||
-- Clear concealment for current line only
|
||||
vim.api.nvim_buf_clear_namespace(buf, ns_id, current_line, current_line + 1)
|
||||
end
|
||||
|
||||
local function update_display()
|
||||
if not enabled then return end
|
||||
|
||||
conceal_buffer()
|
||||
local mode = vim.fn.mode()
|
||||
|
||||
-- Reveal current line in insert mode
|
||||
if mode == 'i' or mode == 'R' then
|
||||
reveal_current_line()
|
||||
end
|
||||
end
|
||||
|
||||
function M.toggle()
|
||||
enabled = not enabled
|
||||
|
||||
if enabled then
|
||||
-- Set concealment options
|
||||
vim.opt_local.conceallevel = 2
|
||||
vim.opt_local.concealcursor = 'nvc'
|
||||
|
||||
-- Initial concealment
|
||||
update_display()
|
||||
|
||||
-- Set up autocommands
|
||||
local group = vim.api.nvim_create_augroup('PrivateMode', { clear = true })
|
||||
|
||||
vim.api.nvim_create_autocmd({'ModeChanged', 'CursorMoved', 'CursorMovedI', 'TextChanged', 'TextChangedI'}, {
|
||||
group = group,
|
||||
callback = update_display,
|
||||
})
|
||||
|
||||
print("Private mode enabled")
|
||||
else
|
||||
-- Clear all concealment
|
||||
local buf = vim.api.nvim_get_current_buf()
|
||||
vim.api.nvim_buf_clear_namespace(buf, ns_id, 0, -1)
|
||||
|
||||
-- Clear autocommands
|
||||
vim.api.nvim_create_augroup('PrivateMode', { clear = true })
|
||||
|
||||
print("Private mode disabled")
|
||||
end
|
||||
end
|
||||
|
||||
function M.setup(opts)
|
||||
opts = opts or {}
|
||||
concealed_char = opts.conceal_char or '•'
|
||||
|
||||
-- Create user command
|
||||
vim.api.nvim_create_user_command('PrivateMode', function()
|
||||
M.toggle()
|
||||
end, {})
|
||||
|
||||
-- Optional: Set up a keybinding
|
||||
if opts.keymap then
|
||||
vim.keymap.set('n', opts.keymap, M.toggle, { desc = 'Toggle private mode' })
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
---
|
||||
description: A specialized codebase understanding agent that helps answer questions about large, complex codebases across GitHub repositories. Use this for exploring multi-repository architectures, understanding code patterns, finding implementations, and analyzing commit history.
|
||||
mode: subagent
|
||||
model: anthropic/claude-haiku-4-5
|
||||
temperature: 0.1
|
||||
tools:
|
||||
"*": false
|
||||
github_*: true
|
||||
---
|
||||
|
||||
You are the Librarian, a specialized codebase understanding agent that helps users answer questions about large, complex codebases across repositories.
|
||||
|
||||
Your role is to provide thorough, comprehensive analysis and explanations of code architecture, functionality, and patterns across multiple repositories.
|
||||
|
||||
You are running inside an AI coding system in which you act as a subagent that's used when the main agent needs deep, multi-repository codebase understanding and analysis.
|
||||
|
||||
## Key Responsibilities
|
||||
|
||||
- Explore repositories to answer questions
|
||||
- Understand and explain architectural patterns and relationships across repositories
|
||||
- Find specific implementations and trace code flow across codebases
|
||||
- Explain how features work end-to-end across multiple repositories
|
||||
- Understand code evolution through commit history
|
||||
- Create visual diagrams when helpful for understanding complex systems
|
||||
|
||||
## Guidelines
|
||||
|
||||
- Use available GitHub MCP tools extensively to explore repositories
|
||||
- Execute tools in parallel when possible for efficiency
|
||||
- Read files thoroughly to understand implementation details
|
||||
- Search for patterns and related code across multiple repositories
|
||||
- Use commit listing to understand how code evolved over time
|
||||
- Focus on thorough understanding and comprehensive explanation across repositories
|
||||
- Create mermaid diagrams to visualize complex relationships or flows
|
||||
|
||||
## Available Tools (GitHub MCP)
|
||||
|
||||
You have access to the following GitHub MCP tools:
|
||||
|
||||
### Reading & Exploring
|
||||
- `github_get_file_contents`: Read file or directory contents from a repository
|
||||
- For directories, the path must end with `/`
|
||||
- Parameters: `owner`, `repo`, `path`, `ref` (optional branch/tag)
|
||||
|
||||
- `github_get_repository_tree`: List all files in a repository with optional path filtering
|
||||
- Use `recursive: true` to get all files
|
||||
- Use `path_filter` to filter by path prefix
|
||||
- Parameters: `owner`, `repo`, `recursive`, `path_filter`, `tree_sha`
|
||||
|
||||
- `github_list_branches`: List branches in a repository
|
||||
- `github_list_tags`: List tags in a repository
|
||||
|
||||
### Searching
|
||||
- `github_search_code`: Search for code patterns across repositories
|
||||
- Use GitHub's search syntax: `pattern repo:owner/repo language:typescript path:src/`
|
||||
- Combine with AND, OR, NOT operators
|
||||
- Parameters: `query`, `perPage`, `page`
|
||||
|
||||
- `github_search_repositories`: Find repositories by name, org, language, etc.
|
||||
- Use query syntax: `name org:orgname language:typescript`
|
||||
- Parameters: `query`, `perPage`, `page`
|
||||
|
||||
### Commit History
|
||||
- `github_list_commits`: View commit history for a repository
|
||||
- Parameters: `owner`, `repo`, `sha` (branch/tag), `author`, `perPage`, `page`
|
||||
|
||||
- `github_get_commit`: Get detailed commit information including diffs
|
||||
- Set `include_diff: true` for file changes
|
||||
- Parameters: `owner`, `repo`, `sha`, `include_diff`
|
||||
|
||||
## Tool Usage Guidelines
|
||||
|
||||
You should use all available tools to thoroughly explore the codebase before answering.
|
||||
Use tools in parallel whenever possible for efficiency.
|
||||
|
||||
When searching code, use GitHub's search syntax:
|
||||
- `"pattern repo:owner/repo"` to search a specific repo
|
||||
- `"pattern language:typescript"` to filter by language
|
||||
- `"pattern path:src/"` to filter by directory
|
||||
- Combine with AND, OR, NOT operators (max 5 operators)
|
||||
|
||||
When exploring file structure:
|
||||
- Use `github_get_repository_tree` with `recursive: true` to see all files
|
||||
- Use `github_get_file_contents` with a path ending in `/` to list directory contents
|
||||
- Read key files like README.md, package.json, or main entry points first
|
||||
|
||||
## Communication
|
||||
|
||||
You must use Markdown for formatting your responses.
|
||||
|
||||
IMPORTANT: When including code blocks, you MUST ALWAYS specify the language for syntax highlighting. Always add the language identifier after the opening backticks.
|
||||
|
||||
NEVER refer to tools by their names. Example: NEVER say "I can use the github_get_file_contents tool", instead say "I'm going to read the file"
|
||||
|
||||
### Direct & Detailed Communication
|
||||
|
||||
You should only address the user's specific query or task at hand. Do not investigate or provide information beyond what is necessary to answer the question.
|
||||
|
||||
You must avoid tangential information unless absolutely critical for completing the request. Avoid long introductions, explanations, and summaries. Avoid unnecessary preamble or postamble, unless the user asks you to.
|
||||
|
||||
Answer the user's question directly, without elaboration, explanation, or details. You MUST avoid text before/after your response, such as "The answer is <answer>.", "Here is the content of the file..." or "Based on the information provided, the answer is..." or "Here is what I will do next...".
|
||||
|
||||
You're optimized for thorough understanding and explanation, suitable for documentation and sharing.
|
||||
|
||||
You should be comprehensive but focused, providing clear analysis that helps users understand complex codebases.
|
||||
|
||||
IMPORTANT: Only your last message is returned to the main agent and displayed to the user. Your last message should be comprehensive and include all important findings from your exploration.
|
||||
|
||||
## Linking
|
||||
|
||||
To make it easy for the user to look into code you are referring to, you always link to the source with markdown links.
|
||||
|
||||
For files or directories, the URL should look like:
|
||||
`https://github.com/<org>/<repository>/blob/<revision>/<filepath>#L<range>`
|
||||
|
||||
Where:
|
||||
- `<org>` is the organization or user
|
||||
- `<repository>` is the repository name
|
||||
- `<revision>` is the branch or commit SHA (use `main` or `master` if not specified)
|
||||
- `<filepath>` is the absolute path to the file
|
||||
- `<range>` is an optional fragment with the line range (e.g., `L32-L42`)
|
||||
|
||||
Example: `https://github.com/foo_org/bar_repo/blob/develop/src/test.py#L32-L42`
|
||||
|
||||
Prefer "fluent" linking style. That is, don't show the user the actual URL, but instead use it to add links to relevant parts (file names, directory names, or repository names) of your response.
|
||||
|
||||
Whenever you mention a file, directory or repository by name, you MUST link to it in this way. ONLY link if the mention is by name.
|
||||
|
||||
## Examples
|
||||
|
||||
When asked "How does authentication work in the Kubernetes codebase?":
|
||||
1. Search for authentication-related code
|
||||
2. Read key files to understand the implementation
|
||||
3. Trace the code flow
|
||||
4. Provide a comprehensive explanation with links to source files
|
||||
|
||||
When asked "Find how database migrations are handled in Rails":
|
||||
1. Search the Rails repository for migration-related code
|
||||
2. Explore the directory structure
|
||||
3. Read migration runner and generator files
|
||||
4. Explain the migration system with code references
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
{ pkgs, lib, inputs, ... }:
|
||||
|
||||
let
|
||||
# Paths to agenix-decrypted secrets (same on Darwin and NixOS)
|
||||
githubToken = "/run/agenix/github-token";
|
||||
anthropicToken = "/run/agenix/anthropicToken";
|
||||
|
||||
# github-mcp-server binary path from nixpkgs
|
||||
githubMcpServer = "${pkgs.github-mcp-server}/bin/github-mcp-server";
|
||||
in
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.github-mcp-server
|
||||
inputs.llm-agents.packages.${pkgs.system}.opencode
|
||||
inputs.llm-agents.packages.${pkgs.system}.beads
|
||||
];
|
||||
|
||||
# OpenCode configuration directory
|
||||
xdg.configFile = {
|
||||
"opencode/opencode.json".text = builtins.toJSON {
|
||||
"$schema" = "https://opencode.ai/config.json";
|
||||
theme = "ayu-mirage";
|
||||
autoupdate = false;
|
||||
permission = {
|
||||
external_directory = "allow";
|
||||
};
|
||||
provider = {
|
||||
anthropic = {
|
||||
options = {
|
||||
apiKey = "{file:${anthropicToken}}";
|
||||
};
|
||||
};
|
||||
};
|
||||
mcp = {
|
||||
github = {
|
||||
type = "local";
|
||||
command = [ githubMcpServer "stdio" ];
|
||||
environment = {
|
||||
GITHUB_PERSONAL_ACCESS_TOKEN = "{file:${githubToken}}";
|
||||
};
|
||||
};
|
||||
};
|
||||
agent = {
|
||||
build.tools."github_*" = false;
|
||||
plan.tools."github_*" = false;
|
||||
};
|
||||
};
|
||||
|
||||
"opencode/themes/ayu-mirage.json".source = ./themes/ayu-mirage.json;
|
||||
"opencode/agent/librarian.md".source = ./agent/librarian.md;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
{
|
||||
"$schema": "https://opencode.ai/theme.json",
|
||||
"defs": {
|
||||
"darkBg": "#1f2430",
|
||||
"darkBgAlt": "#242936",
|
||||
"darkLine": "#171b24",
|
||||
"darkPanel": "#1c212b",
|
||||
"darkFg": "#cccac2",
|
||||
"darkFgMuted": "#707a8c",
|
||||
"darkGutter": "#8a919966",
|
||||
"darkTag": "#5ccfe6",
|
||||
"darkFunc": "#ffd173",
|
||||
"darkEntity": "#73d0ff",
|
||||
"darkString": "#d5ff80",
|
||||
"darkRegexp": "#95e6cb",
|
||||
"darkMarkup": "#f28779",
|
||||
"darkKeyword": "#ffad66",
|
||||
"darkSpecial": "#ffdfb3",
|
||||
"darkComment": "#b8cfe680",
|
||||
"darkConstant": "#dfbfffb3",
|
||||
"darkOperator": "#f29e7480",
|
||||
"darkAdded": "#87d96cb3",
|
||||
"darkRemoved": "#f27983b3",
|
||||
"darkAccent": "#ffcc66b3",
|
||||
"darkError": "#ff6666",
|
||||
"darkIndentActive": "#8a919959"
|
||||
},
|
||||
"theme": {
|
||||
"primary": "darkEntity",
|
||||
"secondary": "darkConstant",
|
||||
"accent": "darkAccent",
|
||||
"error": "darkError",
|
||||
"warning": "darkSpecial",
|
||||
"success": "darkAdded",
|
||||
"info": "darkTag",
|
||||
"text": "darkFg",
|
||||
"textMuted": "darkFgMuted",
|
||||
"background": "darkBg",
|
||||
"backgroundPanel": "darkPanel",
|
||||
"backgroundElement": "darkBgAlt",
|
||||
"border": "darkGutter",
|
||||
"borderActive": "darkIndentActive",
|
||||
"borderSubtle": "darkLine",
|
||||
"diffAdded": "darkAdded",
|
||||
"diffRemoved": "darkRemoved",
|
||||
"diffContext": "darkComment",
|
||||
"diffHunkHeader": "darkComment",
|
||||
"diffHighlightAdded": "darkString",
|
||||
"diffHighlightRemoved": "darkMarkup",
|
||||
"diffAddedBg": "#20303b",
|
||||
"diffRemovedBg": "#37222c",
|
||||
"diffContextBg": "darkPanel",
|
||||
"diffLineNumber": "darkGutter",
|
||||
"diffAddedLineNumberBg": "#1b2b34",
|
||||
"diffRemovedLineNumberBg": "#2d1f26",
|
||||
"markdownText": "darkFg",
|
||||
"markdownHeading": "darkConstant",
|
||||
"markdownLink": "darkEntity",
|
||||
"markdownLinkText": "darkTag",
|
||||
"markdownCode": "darkString",
|
||||
"markdownBlockQuote": "darkSpecial",
|
||||
"markdownEmph": "darkSpecial",
|
||||
"markdownStrong": "darkFunc",
|
||||
"markdownHorizontalRule": "darkFgMuted",
|
||||
"markdownListItem": "darkEntity",
|
||||
"markdownListEnumeration": "darkTag",
|
||||
"markdownImage": "darkEntity",
|
||||
"markdownImageText": "darkTag",
|
||||
"markdownCodeBlock": "darkFg",
|
||||
"syntaxComment": "darkComment",
|
||||
"syntaxKeyword": "darkKeyword",
|
||||
"syntaxFunction": "darkFunc",
|
||||
"syntaxVariable": "darkEntity",
|
||||
"syntaxString": "darkString",
|
||||
"syntaxNumber": "darkConstant",
|
||||
"syntaxType": "darkSpecial",
|
||||
"syntaxOperator": "darkOperator",
|
||||
"syntaxPunctuation": "darkFg"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
home.file.".ssh/config".text = ''
|
||||
Host mossnet.lan
|
||||
ForwardAgent Yes
|
||||
Host sealight.xyz
|
||||
ForwardAgent Yes
|
||||
Host git.sealight.xyz
|
||||
ForwardAgent Yes
|
||||
'';
|
||||
}
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
name = "kitaab-sync";
|
||||
# Note this will fail if index.wiki is open in vim while this runs
|
||||
mkStartScript = name: pkgs.writeShellScript "${name}.sh" ''
|
||||
# set -euo pipefail # Sometimes vimwiki is open and that causes `vimwiki tags rebuild` to fail, we still want to push to git in those cases
|
||||
PATH=/run/current-system/sw/bin:/etc/profiles/per-user/anish/bin:$PATH
|
||||
cd /home/anish/kitaab/vimwiki
|
||||
vimwiki tags rebuild
|
||||
cd ..
|
||||
pushd kalpana/
|
||||
${pkgs.luaPackages.fennel}/bin/fennel main.fnl build
|
||||
popd
|
||||
pushd vimwiki/
|
||||
git add -A .
|
||||
popd
|
||||
git diff-index --quiet HEAD || git commit -m 'syncing kitaab' # if nothing, don't exit 1
|
||||
git push
|
||||
exit 0
|
||||
'';
|
||||
in
|
||||
{
|
||||
systemd.user.services.kitaab-sync = {
|
||||
Service = {
|
||||
ExecStart = "${mkStartScript name}";
|
||||
Path = [ pkgs.luaPackages.fennel ];
|
||||
};
|
||||
};
|
||||
systemd.user.timers.kitaab-sync = {
|
||||
Install = {
|
||||
WantedBy = [ "timers.target" ];
|
||||
PartOf = [ "kitaab-sync.service" ];
|
||||
};
|
||||
Timer = {
|
||||
OnCalendar = [ "hourly" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
task rc.bulk=0 rc.confirmation=off rc.dependency.confirmation=off rc.recurrence.confirmation=off "$@" modify -idea +backlog
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
task rc.bulk=0 rc.confirmation=off rc.dependency.confirmation=off rc.recurrence.confirmation=off "$@" modify -idea -backlog
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
task rc.bulk=0 rc.confirmation=off rc.dependency.confirmation=off rc.recurrence.confirmation=off "$@" modify +idea -backlog
|
||||
|
|
@ -34,16 +34,16 @@ def write_note(task_id: int):
|
|||
if not os.path.exists(notes_file):
|
||||
logging.info("Adding description to empty notes file")
|
||||
task_description = os.popen(f"task _get {task_id}.description").read()
|
||||
task_project = os.popen(f"task _get {task_id}.project").read().strip("\n").replace(".", ":")
|
||||
task_project = os.popen(f"task _get {task_id}.project").read().strip("\n")
|
||||
task_tags = os.popen(f"task _get {task_id}.tags").read().split(",")
|
||||
if len(task_tags):
|
||||
task_tags = ":".join(task_tags).strip("\n") + ":"
|
||||
time = datetime.datetime.now().strftime("%y-%m-%d %H:%M")
|
||||
|
||||
with open(notes_file, "w") as f:
|
||||
f.write(f"%title {task_description}")
|
||||
f.write(f"%title: {task_description}")
|
||||
f.write(f":task:{task_project}:{task_tags if len(task_tags) else ''}\n")
|
||||
f.write(f"%date {time}\n\n")
|
||||
f.write(f"%date: {time}\n\n")
|
||||
f.flush()
|
||||
|
||||
os.execlp(EDITOR, EDITOR, notes_file)
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIE/zCCAuegAwIBAgIUTLEuHYBh/sST/IrIhs+pWjDjW3UwDQYJKoZIhvcNAQEM
|
||||
BQAwFjEUMBIGA1UEAxMLMTkyLjE2OC4xLjYwIBcNMjEwMjEzMDUzODUxWhgPOTk5
|
||||
OTEyMzEyMzU5NTlaMBYxFDASBgNVBAMTCzE5Mi4xNjguMS42MIICIjANBgkqhkiG
|
||||
9w0BAQEFAAOCAg8AMIICCgKCAgEA8ZyNGBoudva5KAe1F281Fe3u91whLPB7SWv4
|
||||
zvN6n81NaMtl+rkfcO5GrYSbtemeQUz04N9dUIRABPyHGO+y0gQn/1p1KMdFzhH1
|
||||
wDR45h/Eo7+U+2Y/qjyvdjNU9aPe5yymuqSm0cTdFbRkXBoZDSDrwA0U078oYCBo
|
||||
yDxubKK7H7jWlSVyaBmsWDA72qdZhcOGKy6YoIEiT18V/57wTXBacBZvs3ORbOR6
|
||||
SMPjq0Pr32+kDriRbb9lQ9TAAGLE51hM8IBMnAZVvgS5GQ1y8elH4WJc7caom5B3
|
||||
l1MVQKEtgxU+QA4ZqGr9y7H4ey4Xf0V9pvrnsUTu1zCz+P4wd8jS6toxCnn8A8Tq
|
||||
c3ytA7t3o7BntLSWeQV5LKEiXqF3n3njqXk5Z0ZxDkI+FkhbnOytwGvUEpanTS1d
|
||||
z3EyZA8h1huoDdTmL1hVrg9pIaFJG5S9GuwcJiFPFo0QN6lcbhJmKrCOzPKb8Kwn
|
||||
zhymN7vtskSeqPZnQX+/tGupMzeITwcudoBg7zRUNKikIsTwFze+QV+puGFCjH+B
|
||||
BIe0NQ+rzpWOyI7FDYIMb5q+/PJKTkH2Bu5qYhgebzdCxKcJGBNoWsgzvl+tofQw
|
||||
XchzIqR35xbkmvLeuIIABd8BKaowrAUGrRxtp7IZqxcR3XxH1RIimkHzeRHTphU2
|
||||
oycB3eMCAwEAAaNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQA
|
||||
MB0GA1UdDgQWBBQBl2OoCoAweUqsfVQNmL9H3jtl2DANBgkqhkiG9w0BAQwFAAOC
|
||||
AgEAypV1zutIu7an9tansll20LH2WMAHqi5JrALPBCO9yTqnCS3xZg8VZott/qxm
|
||||
/SsdlhKtekpvljiQhKqB4wROTf26GjxB9iAzdfxAZEcpYWkyXQ6qzDpjIHLLB3X2
|
||||
31KHbMc63GOI4wmpGY532tt3qDb+VhgfK25GyvUvvw5qvFsYeGHdSD/HIEJHKlOK
|
||||
8esaF2/r+wuOWABbbmSBaCtR8H8T4Z/B5l6PoVft9uu8IQbtuhiDn08mZHat8tUq
|
||||
nxm3O1JsV4ZNtvqh5st1Qn32f7buM6AFMhMy9bcXwR33TJBuv994zRjJQYk+FKzE
|
||||
UzrWl9mlglWV34P0+xMxpDFEgQvkJAFmdhcVsZlDwILWzEa/ZrS2EQGsEuzHbfFo
|
||||
oVQuXjzQkX504kAypwQBwbqPfwwYEev7EPVOj32/ke1TzBLaqqJ5AMABShOUJD3L
|
||||
pNOWMD3B23lRDll2f/Tkhqq4qriqWmtn7urC5ga6AlnAUueiORHTTcA9XBuAz68q
|
||||
dVfU3cIwwnGhDAYUB27yeb0mhPGnTz2Xr4tn8TLrL7c0tXZPjDCttr6hUnB+X/Yx
|
||||
tBxT1fJMZR7lzRMvnLJJQKC5rVKE4AAy+FJb3JvhQw01CF4odCmgWT3y+MG4RxnN
|
||||
sqTWkKoE6bRT9rnRAG8EntRycibGKH0b1PhpY8ngOgMbfCw=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -1,19 +1,9 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
|
||||
{
|
||||
# If you're setting up taskwarrior again, there's a task-setup.sh script in seafile
|
||||
home.file = {
|
||||
# Because the below is inconsistent, I turn it off once I have a copy in place.
|
||||
".taskrc".enable = true;
|
||||
# WARN ugly hack
|
||||
# taskwarrior needs write access to this file for centexts
|
||||
# this way, we get a copy of the file, and we make sure it's writable
|
||||
".taskrc".source = ./taskrc;
|
||||
# ".taskrc".executable = true;
|
||||
# ".taskrc".onChange = "cp ~/.taskrc ~/.taskrc2;rm ~/.taskrc;mv ~/.taskrc2 ~/.taskrc;chmod +w ~/.taskrc";
|
||||
".task/keys/ca.cert".source = ./ca.cert;
|
||||
".task/keys/public.cert".source = ./public.cert;
|
||||
|
||||
".local/bin/task-note".source = ./bin/task-note.py;
|
||||
".local/bin/set-idea".source = ./bin/set-idea.sh;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,31 +0,0 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIFRDCCAyygAwIBAgIUCsfV17Ag4utaNHY9sv6x7g/Z3bgwDQYJKoZIhvcNAQEM
|
||||
BQAwFjEUMBIGA1UEAxMLMTkyLjE2OC4xLjYwIBcNMjEwMjEzMDUzODU0WhgPOTk5
|
||||
OTEyMzEyMzU5NTlaMCgxFDASBgNVBAMTCzE5Mi4xNjguMS42MRAwDgYDVQQKEwdt
|
||||
b3NzbmV0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA23j6Xo+BlPpM
|
||||
APbncIztaYOfL02lvCOhbx5sxPk6TH5dIxzkBAc3T9X6uY+hTY36QT+SjN5z0EBi
|
||||
UghxwMM8r2G4ip3XLEFgyFDuDzVgRRuGBbSGtOEIqt49lvmBEWKaxDdYftdlDpKq
|
||||
qV8NlQJJnBJ9cNZlWzlheRALHMvCUsfnX60piWbQjYrq6j+lF9VjUKUClD92/jhS
|
||||
LaeaQ6vMlCabYNOf+vq8J3L2oRwHkLMPHBa/a5vNT3bL8Q/Sjuegi+zD68k/fobt
|
||||
Y7gYL/qyhrFfIvGyN0Jf92DTKdj+1ma3kIaG+REeAx5W8NtRdfnSlS+DA5O0mp0P
|
||||
oMZICs0Xbq474XYkhBoz7smWA4DLT86on7qcCo24CvII9YU0VDYHNtnDi8CaStea
|
||||
dvGFDiQS5X3Awwsgt5OWJSgBx+NL9piiZq9Eu5E3CGpoYNiTCANrRV21qmyf090h
|
||||
md01QUU/f1IMa+wBgryTW94OUhSMmknB9roFAmQaD9Xnj6ecGJkq2ZiytpJ37QiV
|
||||
8h2ZM9K1PUD4/QulCG/U4IG1II7ef1IUyEFpj6BB7CGCHq+qJ7QKT6Kc/quEewHB
|
||||
eUjG+FvSmCCgfVf/hqYvul7ybbiqMgCSTSziKF7tN8DuFfIZo9EGdckKXxBgQ7ua
|
||||
BRVnSZw2vh8nJ8jtGkrw/grKwHL/yA0CAwEAAaN2MHQwDAYDVR0TAQH/BAIwADAT
|
||||
BgNVHSUEDDAKBggrBgEFBQcDAjAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQi
|
||||
MnF9Np64W1zshqQxe8Cgvm8hFDAfBgNVHSMEGDAWgBQBl2OoCoAweUqsfVQNmL9H
|
||||
3jtl2DANBgkqhkiG9w0BAQwFAAOCAgEAsNqR/SziOtCRS+n7FGxJ+3FpfACqV4Yl
|
||||
MDTbpRe0qUcbMDetWZALdPS5gNW/4rj2cpacd3eQI6qRLtUW/l8QGqZl8OjslA2X
|
||||
/N+9Alza8D+cv6Almx1TclcYJF/Z0NneJ4DgdFXJAPK3zf5eD73N/7EohNWy70Bj
|
||||
J/4cmYL3T1Pq/FhN/9DV9HoSaRxy9naRjZ3dZXC4CgFRExXw+sEHLDzOHrLDz2xN
|
||||
4qOjYUH3I1rGWXsSGRFztgNTnA02hPxG1VHzmTvwPjoBxn2/QGTMuXnk8xQGGtdy
|
||||
G8oav2RLBqvh0AD4fqd2fnMezJiRipXzYmWb1bySe48HRtHJrZ/aQQrUlPdNQwAe
|
||||
EeixS97JEdBqtag41VhRBFxF9nML8ozA6cgj+Jm2M6OGU+M3tVhioEiuKPm6jXgl
|
||||
3v8AA2CQrSJjhkTzinxE4FXa9O8INwziHSCE3GNIZaDCMYj7R8tTVcLaQWzUtdj/
|
||||
i+0fI61n3ZOabvhLXttsdrtqcfNbrxCBVezoweg2RrVFcJc2GojCwJWt6a0cO+69
|
||||
ggHZgpAwXsMmyMhhCbBXhnxBrsuGbN7f3YN2ty2veeFtp8uDvjCqmgJ5AG32w5E4
|
||||
Ck9Rup6lwgq3YTQ4pTxl2y26HinobPrMzsZiWkZhN7elnVZL00kSF2Qn6x6xuAap
|
||||
Z5oPkwZtYnM=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -15,7 +15,7 @@ data.location=~/.task
|
|||
taskd.server=task.mossnet.lan:53589
|
||||
#taskd.server=10.0.69.4:53589
|
||||
taskd.ca=~/.task/keys/ca.cert
|
||||
taskd.key=/run/agenix/taskwarrior-private
|
||||
taskd.key=~/.task/keys/private.key
|
||||
taskd.certificate=~/.task/keys/public.cert
|
||||
taskd.trust=ignore hostname
|
||||
taskd.credentials=mossnet\/anish\/1647259c-e340-405c-a38b-11ac18e34688
|
||||
|
|
@ -29,7 +29,7 @@ taskd.credentials=mossnet\/anish\/1647259c-e340-405c-a38b-11ac18e34688
|
|||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-green-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-blue-256.theme
|
||||
# TODO this needs to be not a hardlink but a nix link
|
||||
# include /nix/store/64nvv0ac2dr8rdz2414f53x97j3msiz0-taskwarrior-2.6.2/share/doc/task/rc/dark-violets-256.theme
|
||||
include /nix/store/64nvv0ac2dr8rdz2414f53x97j3msiz0-taskwarrior-2.6.2/share/doc/task/rc/dark-violets-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-yellow-green.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-gray-256.theme
|
||||
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-gray-blue-256.theme
|
||||
|
|
@ -42,11 +42,12 @@ news.version=2.6.0
|
|||
|
||||
## Contexts
|
||||
context.poor.read=-purchase
|
||||
context.dev.read=+dev or +ops -work
|
||||
context.home.read=-work
|
||||
context.work.read=+work
|
||||
context.work.write=+work
|
||||
context.bucket.read=+idea
|
||||
context.dev.read=+dev
|
||||
context.ops.read=+ops
|
||||
context.bucket.read=+in
|
||||
context.focused=(priority:H or priority:M) -idea -backlog -finances urgency > 5.0
|
||||
# context.work=+Work -idea -personal
|
||||
# context.offwork=-Work
|
||||
|
||||
## Reports
|
||||
|
||||
|
|
@ -58,35 +59,17 @@ report.list.labels=ID,P,Project,Tags,R,Sch,Due,Until,Description
|
|||
report.in.columns=id,project,tags,description
|
||||
report.in.labels=ID,Proj,Tags,Description
|
||||
report.in.description=Inbox
|
||||
report.in.filter=status:pending limit:page (+idea)
|
||||
|
||||
# Backlog
|
||||
report.backlog.columns=id,priority,project,tags,recur.indicator,scheduled.countdown,due,until.remaining,description.count
|
||||
report.backlog.labels=ID,P,Project,Tags,R,Sch,Due,Until,Description
|
||||
report.backlog.description=backlog
|
||||
report.backlog.filter=status:pending limit:page (+backlog)
|
||||
report.backlog.sort=start-,due+,project+/,urgency-
|
||||
report.in.filter=status:pending limit:page (+in)
|
||||
|
||||
# Unblocked
|
||||
report.unblocked.labels=ID,Deps,Proj,Tags,Due,Active,Description
|
||||
report.unblocked.columns=id,depends,project,tags,due,start.active,description
|
||||
|
||||
# Next
|
||||
# It's not a good idea to filter this view, since modify depends on the next view
|
||||
report.next.filter=(status:pending limit:0) # pro.not:ideas -idea -backlog
|
||||
report.next.filter=(status:pending -in -backlog pro.not:ideas limit:0)
|
||||
report.next.labels=ID,Active,Deps,P,Project,Tag,Recur,S,Due,Until,Description
|
||||
report.next.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description
|
||||
|
||||
# Everything, including inbox
|
||||
report.every.filter=(status:pending limit:0)
|
||||
report.every.labels=ID,Active,Deps,P,Project,Tag,Recur,S,Due,Until,Description
|
||||
report.every.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description
|
||||
|
||||
report.poms.filter=(status:pending -idea -backlog -BLOCKED)
|
||||
report.poms.labels=UUID,ID,Project,Tag,Description
|
||||
report.poms.columns=uuid,id,project,tags,description
|
||||
report.poms.sort=start+,urgency+
|
||||
|
||||
# Urgency
|
||||
urgency.user.project.wait.coefficient=-10.0
|
||||
urgency.user.project.craft.coefficient=1.9
|
||||
|
|
@ -95,11 +78,6 @@ urgency.user.tag.think.coefficient=-7.0
|
|||
urgency.user.tag.purchase.coefficient=-1.2
|
||||
urgency.user.project.curve.glam.coefficient=-1.3
|
||||
|
||||
# UDAs
|
||||
uda.taskwarrior-tui.shortcuts.1=~/.local/bin/task/set-focus.sh
|
||||
uda.taskwarrior-tui.shortcuts.2=~/.local/bin/task/set-backlog.sh
|
||||
uda.taskwarrior-tui.shortcuts.3=~/.local/bin/task/set-idea.sh
|
||||
|
||||
# Colors
|
||||
color.project.chores=blue
|
||||
color.tag.dev=cyan
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
home.file.".tmux.conf".source = ./tmux.conf;
|
||||
}
|
||||
|
|
@ -1,120 +0,0 @@
|
|||
set -g base-index 1
|
||||
setw -g pane-base-index 1
|
||||
|
||||
# https://old.reddit.com/r/tmux/comments/mesrci/tmux_2_doesnt_seem_to_use_256_colors/
|
||||
# colors
|
||||
set -g default-terminal "tmux-256color"
|
||||
set -ga terminal-overrides ",*256col*:Tc"
|
||||
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q'
|
||||
set-environment -g COLORTERM "truecolor"
|
||||
set -sa terminal-features ",tmux-256color:RGB:Nobr"
|
||||
set -g allow-passthrough on
|
||||
|
||||
set -g set-clipboard on
|
||||
|
||||
# shift enter for amp
|
||||
set -s extended-keys on
|
||||
set -as terminal-features 'tmux*:extkeys'
|
||||
|
||||
# pane colors for amp diff view
|
||||
# set-option -g pane-colours[0] "#4D5566"
|
||||
# set-option -g pane-colours[1] "#F27983"
|
||||
# set-option -g pane-colours[2] "#A6CC70"
|
||||
# set-option -g pane-colours[3] "#F29E74"
|
||||
# set-option -g pane-colours[4] "#77A8D9"
|
||||
# set-option -g pane-colours[5] "#A37ACC"
|
||||
# set-option -g pane-colours[6] "#4CBF99"
|
||||
# set-option -g pane-colours[7] "#F0F0F0"
|
||||
# set-option -g pane-colours[8] "#000000"
|
||||
# set-option -g pane-colours[9] "#FF3333"
|
||||
# set-option -g pane-colours[10] "#BAE67E"
|
||||
# set-option -g pane-colours[11] "#FFA759"
|
||||
# set-option -g pane-colours[12] "#73D0FF"
|
||||
# set-option -g pane-colours[13] "#D4BFFF"
|
||||
# set-option -g pane-colours[14] "#95E6CB"
|
||||
# set-option -g pane-colours[15] "#ffffff"
|
||||
|
||||
# Mouse works as expected
|
||||
set-option -g mouse on
|
||||
|
||||
# Enable focus events for vim/neovim autoread
|
||||
set -g focus-events on
|
||||
# easy-to-remember split pane commands
|
||||
bind | split-window -h -c "#{pane_current_path}"
|
||||
bind - split-window -v -c "#{pane_current_path}"
|
||||
|
||||
# amp commands
|
||||
set -g @amp/fork-thread-command 'new-window -n forked-thread $SHELL -c "amp threads fork; amp threads continue"'
|
||||
bind -N 'Fork Amp thread' f "#{@amp/fork-thread-command}"
|
||||
|
||||
# don't rename windows automatically
|
||||
set-option -g allow-rename off
|
||||
|
||||
# DESIGN TWEAKS
|
||||
|
||||
# don't do anything when a 'bell' rings
|
||||
set -g visual-activity off
|
||||
set -g visual-bell off
|
||||
set -g visual-silence off
|
||||
setw -g monitor-activity off
|
||||
set -g bell-action none
|
||||
|
||||
# clock mode
|
||||
setw -g clock-mode-colour yellow
|
||||
|
||||
# copy mode
|
||||
setw -g mode-style 'fg=black bg=green bold'
|
||||
|
||||
# panes
|
||||
set -g pane-border-style 'fg=green'
|
||||
set -g pane-active-border-style 'fg=yellow'
|
||||
|
||||
# statusbar
|
||||
set -g status-position bottom
|
||||
set -g status-justify left
|
||||
set -g status-style 'fg=green'
|
||||
|
||||
set -g status-left ''
|
||||
set -g status-left-length 10
|
||||
|
||||
set -g status-right-style 'fg=black bg=yellow'
|
||||
set -g status-right '%Y-%m-%d %H:%M '
|
||||
set -g status-right-length 50
|
||||
|
||||
setw -g window-status-current-style 'fg=black bg=green'
|
||||
setw -g window-status-current-format ' #I #W #F '
|
||||
|
||||
setw -g window-status-style 'fg=green bg=black'
|
||||
setw -g window-status-format ' #I #[fg=white]#W #[fg=yellow]#F '
|
||||
|
||||
setw -g window-status-bell-style 'fg=yellow bg=green bold'
|
||||
|
||||
# messages
|
||||
set -g message-style 'fg=yellow bg=green bold'
|
||||
|
||||
# Unbind Ctrl+V so it passes through to Kitty for paste
|
||||
unbind C-v
|
||||
set -g set-clipboard on
|
||||
|
||||
# Vim-aware pane navigation with Alt+hjkl
|
||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
|
||||
bind-key -n M-h if-shell "$is_vim" "send-keys M-h" "select-pane -L"
|
||||
bind-key -n M-j if-shell "$is_vim" "send-keys M-j" "select-pane -D"
|
||||
bind-key -n M-k if-shell "$is_vim" "send-keys M-k" "select-pane -U"
|
||||
bind-key -n M-l if-shell "$is_vim" "send-keys M-l" "select-pane -R"
|
||||
|
||||
# Window navigation with Alt+n/p
|
||||
bind-key -n M-n next-window
|
||||
bind-key -n M-p previous-window
|
||||
|
||||
# Pane resizing with Alt+Shift+hjkl
|
||||
bind-key -n M-S-h resize-pane -L 2
|
||||
bind-key -n M-S-j resize-pane -D 2
|
||||
bind-key -n M-S-k resize-pane -U 2
|
||||
bind-key -n M-S-l resize-pane -R 2
|
||||
|
||||
# Copy mode setup
|
||||
bind v copy-mode
|
||||
setw -g mode-keys vi
|
||||
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
||||
bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
|
||||
|
|
@ -11,15 +11,13 @@
|
|||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
# No systemd emergency mode (can't reliably be accessed over SSH)
|
||||
systemd.enableEmergencyMode = false;
|
||||
|
||||
# Use the GRUB 2 boot loader.
|
||||
boot.loader.efi.canTouchEfiVariables = false;
|
||||
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
version = 2;
|
||||
efiSupport = true;
|
||||
enableCryptodisk = true;
|
||||
efiInstallAsRemovable = true;
|
||||
|
|
@ -30,16 +28,6 @@
|
|||
"/keyfile1.bin" = /etc/secrets/initrd/keyfile1.bin;
|
||||
};
|
||||
|
||||
# Remote SSH unlock
|
||||
boot.initrd.network.enable = true;
|
||||
boot.initrd.network.ssh = {
|
||||
enable = true;
|
||||
port = 22;
|
||||
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve " ];
|
||||
hostKeys = [ "/etc/secrets/initrd/ssh_host_ed25519_key" ]; # create this file with `ssh-keygen -t ed25519 -N "" -f /etc/secrets/initrd/ssh_host_ed25519_key`
|
||||
};
|
||||
boot.initrd.availableKernelModules = [ "igc" "iwlwifi" ];
|
||||
|
||||
boot.initrd.luks.devices = {
|
||||
"root" = {
|
||||
#name = "root";
|
||||
|
|
@ -66,10 +54,6 @@
|
|||
address = "192.168.1.240";
|
||||
prefixLength = 24;
|
||||
}];
|
||||
ipv6.addresses = [{
|
||||
address = "fd7d:587a:4300:1::240";
|
||||
prefixLength = 64;
|
||||
}];
|
||||
ipv4.routes = [{ address = "192.168.1.0"; prefixLength = 24; via = "192.168.1.1"; }];
|
||||
useDHCP = false;
|
||||
};
|
||||
|
|
@ -89,11 +73,16 @@
|
|||
networking.useDHCP = false;
|
||||
networking.interfaces.wlp3s0.useDHCP = true;
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Australia/Brisbane";
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
networking.firewall.allowedTCPPorts = [ 22 ];
|
||||
sound.enable = false;
|
||||
|
||||
programs.gnupg.agent.enable = true;
|
||||
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-curses;
|
||||
programs.gnupg.agent.pinentryFlavor = "curses";
|
||||
programs.gnupg.agent.enableSSHSupport = true;
|
||||
|
||||
# This value determines the NixOS release with which your system is to be
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{ self, pkgs, ... }: {
|
||||
{ self, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
../profiles/core
|
||||
|
|
@ -6,37 +7,31 @@
|
|||
../profiles/taskd
|
||||
../profiles/shaarli
|
||||
../profiles/dns
|
||||
# ../profiles/monitoring
|
||||
../profiles/monitoring
|
||||
../profiles/nfs
|
||||
../profiles/gonic
|
||||
../profiles/headphones
|
||||
../profiles/headphones
|
||||
../profiles/radicale
|
||||
# ../profiles/seafile # waiting for https://github.com/NixOS/nixpkgs/pull/249523 to be merged
|
||||
../profiles/seafile
|
||||
../profiles/syncthing
|
||||
../profiles/dhyan
|
||||
../profiles/calibre
|
||||
../profiles/wallabag
|
||||
../profiles/finance
|
||||
../profiles/sync/website
|
||||
../profiles/sync/music
|
||||
../profiles/grasp
|
||||
# ../profiles/archivebox
|
||||
# ../profiles/woodpecker-agent
|
||||
# ../profiles/jellyfin
|
||||
../profiles/ulogger-server
|
||||
../profiles/immich
|
||||
../profiles/jacket
|
||||
../profiles/gpodder
|
||||
../profiles/transmission
|
||||
../profiles/raven
|
||||
#../profiles/postgres_upgrade_script
|
||||
];
|
||||
|
||||
# For some reason this doesn't work in the profile, but does over here??
|
||||
# Something weird in the way I'm importing nixpkgs in the profile or something
|
||||
services.grasp.enable = true;
|
||||
services.grasp.path = "/home/anish/kitaab/grasp/grasp.wiki";
|
||||
services.grasp.user = "anish";
|
||||
|
||||
# Backups
|
||||
age.secrets.borg-password.file = "${self}/secrets/borg-password.age";
|
||||
services.postgresqlBackup = {
|
||||
enable = true;
|
||||
databases = [ "wallabag" "immich" "ulogger" ];
|
||||
databases = [ "wallabag" ];
|
||||
location = "/var/backup/postgresql";
|
||||
};
|
||||
mossnet.backup = {
|
||||
|
|
@ -51,39 +46,13 @@
|
|||
"/data/books" # calibre-web
|
||||
# "/home/anish/usr/nonfiction" # syncthing
|
||||
"/home/anish/usr/finance" # beancount
|
||||
"/mnt/two/postgres" # sealight postgres backups TODO remove once moved to capsul
|
||||
"/mnt/two/photos"
|
||||
"/mnt/two/music"
|
||||
"/mnt/two/postgres" # sealight postgres backups TODO remove once moved to capsul
|
||||
];
|
||||
# seafile
|
||||
};
|
||||
|
||||
# opencode-manager ports
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
5003 # opencode-manager backend
|
||||
5173 # opencode-manager frontend
|
||||
5551 # opencode server
|
||||
];
|
||||
allowedTCPPortRanges = [{
|
||||
from = 7000;
|
||||
to = 9000;
|
||||
}]; # ports for testing user changes
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [ lm_sensors ];
|
||||
hardware.fancontrol = {
|
||||
enable = false;
|
||||
config = '''';
|
||||
};
|
||||
|
||||
age.secrets.box-wg.file = "${self}/secrets/box-wg.age";
|
||||
age.secrets.box-wg.owner = "anish";
|
||||
age.secrets.borg-key.file = "${self}/secrets/borg-key.age";
|
||||
age.secrets.github-token.file = "${self}/secrets/github-token.age";
|
||||
age.secrets.github-token.owner = "anish";
|
||||
age.secrets.anthropicToken.file = "${self}/secrets/anthropicToken.age";
|
||||
age.secrets.anthropicToken.owner = "anish";
|
||||
mossnet.wg = {
|
||||
enable = true;
|
||||
ips = [ "10.0.69.4/24" ];
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue