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 | ||||
|  | @ -4,27 +4,6 @@ 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') | ||||
| ) | ||||
| 
 | ||||
| D('sealight.xyz', REG_NONE, DnsProvider(DNS_HEDNS), | ||||
| 	DefaultTTL(86400), | ||||
| 	//SOA('@', 'ns1.he.net.', 'hostmaster.he.net.', 2022121008, 86400, 7200, 3600000, 172800, TTL(172800)),
 | ||||
|  | @ -34,14 +13,10 @@ 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: lituus
 | ||||
| 	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)), | ||||
|  |  | |||
							
								
								
									
										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" | ||||
							
								
								
									
										1589
									
								
								flake.lock
									
									
									
									
									
								
							
							
						
						
									
										1589
									
								
								flake.lock
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										338
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										338
									
								
								flake.nix
									
									
									
									
									
								
							|  | @ -1,17 +1,13 @@ | |||
| { | ||||
|   description = "Sealight NixOS Config"; | ||||
|   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"; | ||||
| 
 | ||||
|  | @ -20,69 +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"; | ||||
|     }; | ||||
| 
 | ||||
|     # 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"; | ||||
|  | @ -92,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, ... }@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" | ||||
|  | @ -109,126 +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" | ||||
|               ]; | ||||
|           }; | ||||
|           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; | ||||
|  | @ -250,12 +141,8 @@ | |||
|             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.users.anish = import ./home/gui; | ||||
|  | @ -266,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; | ||||
|             } | ||||
|           ]; | ||||
|         }; | ||||
|  | @ -291,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; | ||||
|  | @ -301,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"; | ||||
|  | @ -310,59 +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.users.anish = import ./home/dev; | ||||
|             } | ||||
|           ]; | ||||
|         }; | ||||
| 
 | ||||
|         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; | ||||
|               }; | ||||
|               home-manager.users.anish = import ./home/core; | ||||
|             } | ||||
|           ]; | ||||
|         }; | ||||
|  | @ -372,47 +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 = "sealight.xyz"; | ||||
|           autoRollback = false; | ||||
|           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,32 +0,0 @@ | |||
| { self, pkgs, ... }: | ||||
| { | ||||
|   imports = [ | ||||
|     ../profiles/nvim | ||||
|     ../profiles/cli | ||||
|     ../profiles/direnv | ||||
|     ../profiles/git | ||||
|     ../profiles/task | ||||
|     ../profiles/kitty | ||||
|     ../profiles/tmux | ||||
|     # ../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, ... }: { | ||||
|   imports = | ||||
|     [ ../profiles/cli ../profiles/nvim ../profiles/direnv ../profiles/git ]; | ||||
|   home.stateVersion = "22.05"; | ||||
| } | ||||
|  | @ -2,31 +2,9 @@ | |||
| { | ||||
|   imports = [ | ||||
|     ../core | ||||
|     ../profiles/nvim | ||||
|     ../profiles/firefox | ||||
|     ../profiles/desktop | ||||
|     ../profiles/email | ||||
|     ../profiles/cal | ||||
|     ../profiles/sync/kitaab | ||||
|     ../profiles/ssh | ||||
|     ../profiles/task | ||||
|   ]; | ||||
| 
 | ||||
|   # GPG configuration for user session | ||||
|   services.gpg-agent = { | ||||
|     enable = true; | ||||
|     pinentry.package = pkgs.pinentry-rofi;  # Use rofi for consistency with desktop theme | ||||
|     enableSshSupport = true; | ||||
|     defaultCacheTtl = 28800;  # 8 hours | ||||
|     maxCacheTtl = 86400;      # 24 hours | ||||
|     extraConfig = '' | ||||
|       pinentry-program ${pkgs.writeShellScript "pinentry-rofi-themed" '' | ||||
|         exec ${pkgs.pinentry-rofi}/bin/pinentry-rofi -theme ~/.config/rofi/theme/passmenu.rasi "$@" | ||||
|       ''} | ||||
|     ''; | ||||
|   }; | ||||
| 
 | ||||
|   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,10 +7,10 @@ | |||
|     dasht | ||||
|     dosfstools | ||||
|     #git | ||||
|     git-machete | ||||
|     bottom | ||||
|     gptfdisk | ||||
|     starship | ||||
|     iputils | ||||
|     jq | ||||
|     manix | ||||
|     moreutils | ||||
|  | @ -26,12 +26,10 @@ | |||
|     iftop | ||||
|     wget | ||||
|     curl | ||||
|     eza  | ||||
|     exa | ||||
|     bat | ||||
|     fd | ||||
|     ncdu | ||||
|     du-dust  | ||||
|     # dia-cli | ||||
|     duf | ||||
|     trash-cli | ||||
|     nix-index | ||||
|  | @ -41,6 +39,7 @@ | |||
|     file | ||||
|     lsof | ||||
|     atool | ||||
|     strace | ||||
|     zip | ||||
|     unzip | ||||
|     rsync | ||||
|  | @ -51,20 +50,17 @@ | |||
|     less | ||||
|     gdb | ||||
|     xxd | ||||
|     taskwarrior2 | ||||
|     taskwarrior | ||||
|     yt-dlp | ||||
|     gnupg | ||||
|     syncthing | ||||
|     dijo | ||||
|     #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 | ||||
|  | @ -74,90 +70,27 @@ | |||
| 
 | ||||
|       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 | ||||
|     ''; | ||||
|     sessionVariables = { | ||||
|  | @ -165,6 +98,15 @@ | |||
|       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 { | ||||
|  | @ -195,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"; | ||||
|         }; | ||||
|       } | ||||
|     ]; | ||||
|   }; | ||||
| 
 | ||||
|  | @ -222,6 +164,7 @@ | |||
|     enable = true; | ||||
|     enableZshIntegration = true; | ||||
|     nix-direnv.enable = true; | ||||
|     # nix-direnv.enableFlakes = true; always enabled | ||||
|   }; | ||||
| 
 | ||||
|   programs.zoxide = { | ||||
|  | @ -229,7 +172,7 @@ | |||
|     enableZshIntegration = true; | ||||
|   }; | ||||
| 
 | ||||
|   services.kdeconnect.enable = pkgs.stdenv.isLinux; | ||||
|   services.kdeconnect.enable = true; | ||||
| 
 | ||||
|   home.shellAliases = { | ||||
|     # quick cd | ||||
|  | @ -238,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/"; | ||||
|  | @ -299,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 --flake  --impure '/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 | ||||
|     ''; | ||||
|  | @ -336,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; } | ||||
|  |  | |||
|  | @ -12,10 +12,7 @@ | |||
|     userName = "Anish Lakhwara"; | ||||
|     userEmail = "anish+git@lakhwara.com"; | ||||
|     delta.enable = true; | ||||
|     signing = { | ||||
|       signByDefault = true; | ||||
|       key = "7FC5DF072EF7B716"; | ||||
|     }; | ||||
|     # TODO enable signing | ||||
| 
 | ||||
|     ignores = [ | ||||
|       "*~" | ||||
|  | @ -52,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 = { | ||||
|  | @ -98,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 @@ | |||
| { lib, pkgs, ... }: | ||||
| { pkgs, ... }: | ||||
| let | ||||
|   customPlugins = { | ||||
|     vim-zettel = pkgs.vimUtils.buildVimPlugin { | ||||
|  | @ -10,27 +10,16 @@ let | |||
|         sha256 = "1fzKmknfVlEYwqeXgbKITbb2/PJ023iJyMz6vak3qh4="; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     amp-nvim = pkgs.vimUtils.buildVimPlugin { | ||||
|       name = "amp-nvim"; | ||||
|     lsp-format = pkgs.vimUtils.buildVimPlugin { | ||||
|       name = "lsp-format"; | ||||
|       src = pkgs.fetchFromGitHub { | ||||
|         owner = "sourcegraph"; | ||||
|         repo = "amp.nvim"; | ||||
|         rev = "main"; | ||||
|         sha256 = "Sm/SQEIZlnqu/sD+MhZzgGm3bf+HnADOOimZ2Q++MXU="; | ||||
|         owner = "lukas-reineke"; | ||||
|         repo = "lsp-format.nvim"; | ||||
|         rev = "84e117b99bb2bc0d0c8122e2b256046f046f8aff"; | ||||
|         sha256 = "rs3NTZwWdsmBGXnrgUeVxUiNjbN/ULxJHifPYJD9mT4="; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     my-lspsaga = pkgs.vimUtils.buildVimPlugin { | ||||
|       name = "lspsaga.nvim"; | ||||
|       src = pkgs.fetchFromGitHub { | ||||
|         owner = "glepnir"; | ||||
|         repo = "lspsaga.nvim"; | ||||
|         rev = "b7b4777369b441341b2dcd45c738ea4167c11c9e"; | ||||
|         sha256 = "sciX/fMxzY1YOxXxjj1+ymrdMi451avcFFu+14R+/pk="; | ||||
|       }; | ||||
|     }; | ||||
|     nvim-luapad = pkgs.vimUtils.buildVimPlugin { | ||||
|     nvim-luapad = pkgs.vimUtils.buildVimPluginFrom2Nix { | ||||
|       name = "nvim-luapad"; | ||||
|       src = pkgs.fetchFromGitHub { | ||||
|         owner = "rafcamlet"; | ||||
|  | @ -39,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 { | ||||
|  | @ -50,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 { | ||||
|  | @ -60,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 { | ||||
|  | @ -70,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 { | ||||
|  | @ -80,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 { | ||||
|  | @ -90,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 { | ||||
|  | @ -100,25 +127,17 @@ let | |||
|         sha256 = "czKjJgCpvRSdtR7rNGlJrluDgPIdx94KUyx33op5gdY="; | ||||
|       }; | ||||
|     }; | ||||
|     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; | ||||
|  | @ -127,21 +146,12 @@ 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 | ||||
|   ''; | ||||
| 
 | ||||
|   #environment.systemPackages = with customPlugins; [ tidal ]; | ||||
|  | @ -150,7 +160,7 @@ in | |||
| 
 | ||||
|     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 | ||||
|  | @ -187,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. | ||||
|  | @ -196,7 +206,6 @@ in | |||
|       set signcolumn=yes | ||||
|       " highlight row | ||||
|       set cursorline | ||||
|       set autoread | ||||
| 
 | ||||
|       let mapleader = "\<Space>" | ||||
|       let maplocalleader = "," | ||||
|  | @ -211,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> | ||||
|  | @ -233,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> | ||||
|  | @ -241,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> | ||||
|  | @ -285,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 | ||||
|  | @ -300,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" | ||||
|  | @ -327,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 = [ | ||||
|  | @ -419,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 }) | ||||
|  | @ -470,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{} | ||||
| 
 | ||||
|  | @ -511,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 = { | ||||
|  | @ -562,174 +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', 'nil_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 | ||||
| 
 | ||||
|       -- fennel-ls doesn't support navic | ||||
|       lspconfig['fennel-ls'].setup { | ||||
|       -- rnix doesn't support gps | ||||
|       require('lspconfig').rnix.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) | ||||
|  | @ -759,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 }, | ||||
|       } | ||||
|  | @ -778,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 | ||||
|  | @ -804,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() | ||||
|  | @ -841,36 +727,15 @@ 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() | ||||
|        | ||||
|       ${lib.optionalString (customPlugins.amp-nvim != null) '' | ||||
|       -- Setup amp.nvim | ||||
|       require('amp').setup({ | ||||
|         auto_start = true, | ||||
|         log_level = "info", | ||||
|         completion_enabled = true | ||||
|       }) | ||||
|       -- require('amp.completion').setup({ | ||||
|       --   keymaps = { | ||||
|       --     accept = "<C-y>", | ||||
|       --     dismiss = "<C-n>", | ||||
|       --   } | ||||
|       -- }) | ||||
|       ''} | ||||
|        | ||||
|       -- supercollider | ||||
|       local scnvim = require 'scnvim' | ||||
|       local map = scnvim.map | ||||
|  | @ -894,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 = { | ||||
|  | @ -1005,175 +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>') | ||||
| 
 | ||||
|       -- Disable Ctrl+V in nvim so Kitty can handle paste | ||||
|       vim.keymap.set({'v', 'i'}, '<C-v>', '<Nop>', {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}) | ||||
| 
 | ||||
|       -- 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 | ||||
| 
 | ||||
|       -- Setup amp.nvim | ||||
|       require('amp').setup({  | ||||
|         auto_start = true,  | ||||
|         log_level = "info"  | ||||
|       }) | ||||
| 
 | ||||
|       -- Amp commands | ||||
|       vim.api.nvim_create_user_command("AmpSend", function(opts) | ||||
|         local message = opts.args | ||||
|         if message == "" then | ||||
|           print("Please provide a message to send") | ||||
|           return | ||||
|         end | ||||
|         local amp_message = require("amp.message") | ||||
|         amp_message.send_message(message) | ||||
|       end, { | ||||
|         nargs = "*", | ||||
|         desc = "Send a message to Amp", | ||||
|       }) | ||||
| 
 | ||||
|       vim.api.nvim_create_user_command("AmpSendBuffer", function(opts) | ||||
|         local buf = vim.api.nvim_get_current_buf() | ||||
|         local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false) | ||||
|         local content = table.concat(lines, "\n") | ||||
|         local amp_message = require("amp.message") | ||||
|         amp_message.send_message(content) | ||||
|       end, { | ||||
|         nargs = "?", | ||||
|         desc = "Send current buffer contents to Amp", | ||||
|       }) | ||||
| 
 | ||||
|       vim.api.nvim_create_user_command("AmpPromptSelection", function(opts) | ||||
|         local lines = vim.api.nvim_buf_get_lines(0, opts.line1 - 1, opts.line2, false) | ||||
|         local text = table.concat(lines, "\n") | ||||
|         local amp_message = require("amp.message") | ||||
|         amp_message.send_to_prompt(text) | ||||
|       end, { | ||||
|         range = true, | ||||
|         desc = "Add selected text to Amp prompt", | ||||
|       }) | ||||
| 
 | ||||
|       vim.api.nvim_create_user_command("AmpPromptRef", function(opts) | ||||
|         local bufname = vim.api.nvim_buf_get_name(0) | ||||
|         if bufname == "" then | ||||
|           print("Current buffer has no filename") | ||||
|           return | ||||
|         end | ||||
|         local relative_path = vim.fn.fnamemodify(bufname, ":.") | ||||
|         local ref = "@" .. relative_path | ||||
|         if opts.line1 ~= opts.line2 then | ||||
|           ref = ref .. "#L" .. opts.line1 .. "-" .. opts.line2 | ||||
|         elseif opts.line1 > 1 then | ||||
|           ref = ref .. "#L" .. opts.line1 | ||||
|         end | ||||
|         local amp_message = require("amp.message") | ||||
|         amp_message.send_to_prompt(ref) | ||||
|       end, { | ||||
|         range = true, | ||||
|         desc = "Add file reference (with selection) to Amp prompt", | ||||
|       }) | ||||
| 
 | ||||
|       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 | ||||
|  | @ -1183,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 | ||||
|  | @ -1193,8 +855,7 @@ in | |||
|       nvim-peekup | ||||
|       zen-mode-nvim | ||||
|       twilight-nvim | ||||
|       my-lspsaga | ||||
|       vim-dasht | ||||
|       lspsaga-nvim | ||||
| 
 | ||||
|       # language | ||||
|       vim-nix | ||||
|  | @ -1209,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 | ||||
|  | @ -1226,7 +886,7 @@ in | |||
|       nvim-autopairs | ||||
|       cmp_luasnip | ||||
|       luasnip | ||||
|       conform-nvim | ||||
|       lsp-format | ||||
|       friendly-snippets | ||||
|       lspkind-nvim | ||||
| 
 | ||||
|  | @ -1234,7 +894,6 @@ in | |||
|       vim-fugitive | ||||
|       gitsigns-nvim | ||||
|       fzf-checkout-vim | ||||
|       diffview-nvim | ||||
| 
 | ||||
|       # Clojure stuff | ||||
|       # conjure | ||||
|  | @ -1242,27 +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 | ||||
|       amp-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,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,88 +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/ | ||||
| set -g default-terminal "xterm-256color" | ||||
| set -ga terminal-overrides ",*256col*:Tc" | ||||
| set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' | ||||
| set-environment -g COLORTERM "truecolor" | ||||
| 
 | ||||
| # 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}" | ||||
| 
 | ||||
| # 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 | ||||
| 
 | ||||
| # 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,12 +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,36 +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/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 = { | ||||
|  | @ -50,22 +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 | ||||
|   }; | ||||
| 
 | ||||
|   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"; | ||||
|   mossnet.wg = { | ||||
|     enable = true; | ||||
|     ips = [ "10.0.69.4/24" ]; | ||||
|  |  | |||
|  | @ -30,33 +30,18 @@ | |||
|     { | ||||
|       device = "/dev/disk/by-uuid/0f857c6e-509d-436f-9e78-bc25f1b0d23b"; | ||||
|       fsType = "ext4"; | ||||
|       options = [ | ||||
|         "noatime" | ||||
|         "nodiratime" | ||||
|         "nofail" | ||||
|       ]; | ||||
|     }; | ||||
| 
 | ||||
|   fileSystems."/mnt/two" = | ||||
|     { | ||||
|       device = "/dev/disk/by-uuid/5bc894bf-ed87-4c30-aab4-87e154e0cd08"; | ||||
|       fsType = "ext4"; | ||||
|       options = [ | ||||
|         "noatime" | ||||
|         "nodiratime" | ||||
|         "nofail" | ||||
|       ]; | ||||
|     }; | ||||
| 
 | ||||
|   fileSystems."/mnt/three" = | ||||
|     { | ||||
|       device = "/dev/disk/by-uuid/0be3ded1-9c8b-40aa-94ca-dc2297d5988e"; | ||||
|       fsType = "ext4"; | ||||
|       options = [ | ||||
|         "noatime" | ||||
|         "nodiratime" | ||||
|         "nofail" | ||||
|       ]; | ||||
|     }; | ||||
| 
 | ||||
|   swapDevices = | ||||
|  |  | |||
|  | @ -8,9 +8,11 @@ | |||
|     ]; | ||||
| 
 | ||||
|   boot.loader.grub.enable = true; | ||||
|   boot.loader.grub.version = 2; | ||||
|   boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only | ||||
| 
 | ||||
|   networking.hostName = "cube"; # Define your hostname. | ||||
|   time.timeZone = "Australia/Brisbane"; | ||||
| 
 | ||||
|   networking.useDHCP = false; | ||||
|   networking.interfaces.ens3.useDHCP = true; | ||||
|  |  | |||
|  | @ -6,11 +6,4 @@ | |||
|     ../profiles/server | ||||
|     ../profiles/site | ||||
|   ]; | ||||
| 
 | ||||
|   services.nginx.enable = true; | ||||
|   services.nginx.virtualHosts."coaching.lakhwara.com" = { | ||||
|     forceSSL = true; | ||||
|     enableACME = true; | ||||
|     locations."/" = { root = "/var/lib/coaching"; index = "/index.html"; }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| { | ||||
|   imports = [ ./hardware-configuration.nix ]; | ||||
|   boot.loader.grub.enable = true; | ||||
|   boot.loader.grub.version = 2; | ||||
|   # Define on which hard drive you want to install Grub. | ||||
|   boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only | ||||
| 
 | ||||
|  | @ -27,6 +28,8 @@ | |||
|   networking.hostName = "curve"; | ||||
|   #networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant. | ||||
| 
 | ||||
|   time.timeZone = "Australia/Brisbane"; | ||||
| 
 | ||||
|   # Select internationalisation properties. | ||||
|   i18n.defaultLocale = "en_US.UTF-8"; | ||||
|   # console = { | ||||
|  | @ -34,5 +37,7 @@ | |||
|   #   keyMap = "us"; | ||||
|   # }; | ||||
| 
 | ||||
|   services.libinput.enable = true; | ||||
|   sound.enable = true; | ||||
| 
 | ||||
|   services.xserver.libinput.enable = true; | ||||
| } | ||||
|  |  | |||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
		Reference in a new issue