mirror of
				https://github.com/nmasur/dotfiles
				synced 2025-11-04 05:53:16 +00:00 
			
		
		
		
	Compare commits
	
		
			29 Commits
		
	
	
		
			nixd
			...
			28ffa10a59
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					28ffa10a59 | ||
| 
						 | 
					006554f545 | ||
| 
						 | 
					1b04f9a883 | ||
| 
						 | 
					00f23f4b9c | ||
| 
						 | 
					9b948f45ee | ||
| 
						 | 
					1f0ee6b27f | ||
| 
						 | 
					3348bd0b39 | ||
| 
						 | 
					780ff152c8 | ||
| 
						 | 
					d61ac18707 | ||
| 
						 | 
					bee5631fab | ||
| 
						 | 
					78d34d9177 | ||
| 
						 | 
					100eedc8cd | ||
| 
						 | 
					ce298b9600 | ||
| 
						 | 
					7128cd8d0d | ||
| 
						 | 
					7007577176 | ||
| 
						 | 
					ca1c7cc23f | ||
| 
						 | 
					ae43d24f62 | ||
| 
						 | 
					c6de176b0b | ||
| 
						 | 
					a36df414c1 | ||
| 
						 | 
					1022a3998f | ||
| 
						 | 
					67727954ec | ||
| 
						 | 
					cf8fc2ac56 | ||
| 
						 | 
					4c38ae86a9 | ||
| 
						 | 
					4b3bc8a216 | ||
| 
						 | 
					e9a2ce6df3 | ||
| 
						 | 
					875054aa2c | ||
| 
						 | 
					4b9eea276b | ||
| 
						 | 
					fc5ed5e892 | ||
| 
						 | 
					1d01ddbbbc | 
							
								
								
									
										299
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										299
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							@@ -51,11 +51,11 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "cl-nix-lite": {
 | 
					    "cl-nix-lite": {
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1717972076,
 | 
					        "lastModified": 1728174978,
 | 
				
			||||||
        "narHash": "sha256-hnZEsDInTcsVSL5LBGDAZegAxVLBus/wiJh+sNM15zU=",
 | 
					        "narHash": "sha256-Grqqg+xuicANB85j0gNEXxi9SBKY7bzGeTuyi95eGcY=",
 | 
				
			||||||
        "owner": "hraban",
 | 
					        "owner": "hraban",
 | 
				
			||||||
        "repo": "cl-nix-lite",
 | 
					        "repo": "cl-nix-lite",
 | 
				
			||||||
        "rev": "cc920bfb0a6402d3871f470c98d65266126973e4",
 | 
					        "rev": "31cfe6275c341eb3120a99f4b1c8516c49a29d87",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -87,11 +87,11 @@
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728385805,
 | 
					        "lastModified": 1732603785,
 | 
				
			||||||
        "narHash": "sha256-mUd38b0vhB7yzgAjNOaFz7VY9xIVzlbn3P2wjGBcVV0=",
 | 
					        "narHash": "sha256-AEjWTJwOmSnVYsSJCojKgoguGfFfwel6z/6ud6UFMU8=",
 | 
				
			||||||
        "owner": "lnl7",
 | 
					        "owner": "lnl7",
 | 
				
			||||||
        "repo": "nix-darwin",
 | 
					        "repo": "nix-darwin",
 | 
				
			||||||
        "rev": "48b50b3b137be5cfb9f4d006835ce7c3fe558ccc",
 | 
					        "rev": "6ab87b7c84d4ee873e937108c4ff80c015a40c7a",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -108,11 +108,11 @@
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728687662,
 | 
					        "lastModified": 1732919362,
 | 
				
			||||||
        "narHash": "sha256-D9TChzb00eTG1YWBx8eN2s6lJJnBjB5Y7RpxkAzGvyQ=",
 | 
					        "narHash": "sha256-3SxlMD3nSI90+pHOF27SuLEt3+wew8xl+sUJaJMeHOI=",
 | 
				
			||||||
        "owner": "nix-community",
 | 
					        "owner": "nix-community",
 | 
				
			||||||
        "repo": "disko",
 | 
					        "repo": "disko",
 | 
				
			||||||
        "rev": "bdbdb725d632863bdedb80baabf21327614dd237",
 | 
					        "rev": "b71e3faca99b40fb801f03fd950fbefbbba691a4",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -145,11 +145,11 @@
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728694479,
 | 
					        "lastModified": 1732928331,
 | 
				
			||||||
        "narHash": "sha256-NFFW6RrOTBuIk29LKtAO3MU5Y0ll7zAp9Skd9HvCGfs=",
 | 
					        "narHash": "sha256-MNeVQdjQIURSxe+yJtnPpVKIaIB+TMn6Mjw8eYY1ZwE=",
 | 
				
			||||||
        "owner": "bandithedoge",
 | 
					        "owner": "bandithedoge",
 | 
				
			||||||
        "repo": "nixpkgs-firefox-darwin",
 | 
					        "repo": "nixpkgs-firefox-darwin",
 | 
				
			||||||
        "rev": "8a3143c1ce147481db4463e71bc3b7002e6ebc56",
 | 
					        "rev": "7b091902ef4ad7d2fff4201b1b9471c1b4243f83",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -161,11 +161,11 @@
 | 
				
			|||||||
    "flake-compat": {
 | 
					    "flake-compat": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1697816753,
 | 
					        "lastModified": 1730663653,
 | 
				
			||||||
        "narHash": "sha256-40to80AEIyKCQI0xMKCeF5ePoIKTYgjVVCZeu4CnTxM=",
 | 
					        "narHash": "sha256-kFCUWettiFHDIqxCWWQ9qY8pVh+Lj+XL0Giyy/kdomg=",
 | 
				
			||||||
        "owner": "hraban",
 | 
					        "owner": "hraban",
 | 
				
			||||||
        "repo": "flake-compat",
 | 
					        "repo": "flake-compat",
 | 
				
			||||||
        "rev": "6025bade1336a36014639bc3f67eacc853dab78f",
 | 
					        "rev": "e5b16676185cb7548581c852f51ce7f3a49bba5e",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -196,11 +196,32 @@
 | 
				
			|||||||
        "systems": "systems"
 | 
					        "systems": "systems"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1710146030,
 | 
					        "lastModified": 1731533236,
 | 
				
			||||||
        "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
 | 
					        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
 | 
				
			||||||
        "owner": "numtide",
 | 
					        "owner": "numtide",
 | 
				
			||||||
        "repo": "flake-utils",
 | 
					        "repo": "flake-utils",
 | 
				
			||||||
        "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
 | 
					        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "numtide",
 | 
				
			||||||
 | 
					        "repo": "flake-utils",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "flake-utils_2": {
 | 
				
			||||||
 | 
					      "inputs": {
 | 
				
			||||||
 | 
					        "systems": [
 | 
				
			||||||
 | 
					          "mac-app-util",
 | 
				
			||||||
 | 
					          "systems"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1731533236,
 | 
				
			||||||
 | 
					        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
 | 
				
			||||||
 | 
					        "owner": "numtide",
 | 
				
			||||||
 | 
					        "repo": "flake-utils",
 | 
				
			||||||
 | 
					        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -208,9 +229,9 @@
 | 
				
			|||||||
        "type": "indirect"
 | 
					        "type": "indirect"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "flake-utils_2": {
 | 
					    "flake-utils_3": {
 | 
				
			||||||
      "inputs": {
 | 
					      "inputs": {
 | 
				
			||||||
        "systems": "systems_2"
 | 
					        "systems": "systems_3"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1705309234,
 | 
					        "lastModified": 1705309234,
 | 
				
			||||||
@@ -226,9 +247,9 @@
 | 
				
			|||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "flake-utils_3": {
 | 
					    "flake-utils_4": {
 | 
				
			||||||
      "inputs": {
 | 
					      "inputs": {
 | 
				
			||||||
        "systems": "systems_3"
 | 
					        "systems": "systems_4"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1726560853,
 | 
					        "lastModified": 1726560853,
 | 
				
			||||||
@@ -263,11 +284,11 @@
 | 
				
			|||||||
    "hmts-nvim-src": {
 | 
					    "hmts-nvim-src": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1727357627,
 | 
					        "lastModified": 1729786258,
 | 
				
			||||||
        "narHash": "sha256-8FJlLw5LApQs7S8xEh2UE9wdYCAweZTbvgozCGPfQJc=",
 | 
					        "narHash": "sha256-V5dwIJdxBulFVKk1iSlf4H5NRz1UH7uYQeMvwtgkpIs=",
 | 
				
			||||||
        "owner": "calops",
 | 
					        "owner": "calops",
 | 
				
			||||||
        "repo": "hmts.nvim",
 | 
					        "repo": "hmts.nvim",
 | 
				
			||||||
        "rev": "1ecb68b9f89abdb23d2754f9d69f90eab2d33eaa",
 | 
					        "rev": "c7ff4c3ad96cd05664b18fb5bbbe2abbd7682dd2",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -283,11 +304,11 @@
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728685293,
 | 
					        "lastModified": 1732884235,
 | 
				
			||||||
        "narHash": "sha256-1WowL96pksT/XCi+ZXHgqiQ9NiU5oxWuNIQYWqOoEYc=",
 | 
					        "narHash": "sha256-r8j6R3nrvwbT1aUp4EPQ1KC7gm0pu9VcV1aNaB+XG6Q=",
 | 
				
			||||||
        "owner": "nix-community",
 | 
					        "owner": "nix-community",
 | 
				
			||||||
        "repo": "home-manager",
 | 
					        "repo": "home-manager",
 | 
				
			||||||
        "rev": "2b13611eaed8326789f76f70d21d06fbb14e3e47",
 | 
					        "rev": "819f682269f4e002884702b87e445c82840c68f2",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -297,21 +318,44 @@
 | 
				
			|||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "jujutsu": {
 | 
				
			||||||
 | 
					      "inputs": {
 | 
				
			||||||
 | 
					        "flake-utils": "flake-utils",
 | 
				
			||||||
 | 
					        "nixpkgs": [
 | 
				
			||||||
 | 
					          "nixpkgs"
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "rust-overlay": "rust-overlay"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1732929643,
 | 
				
			||||||
 | 
					        "narHash": "sha256-5+jR08C37hrwSZucav0pqarKHyn0Xma+F+HVy2p++C0=",
 | 
				
			||||||
 | 
					        "owner": "martinvonz",
 | 
				
			||||||
 | 
					        "repo": "jj",
 | 
				
			||||||
 | 
					        "rev": "0ca6f00421f6f893e974e0f5349e126abd41a812",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "martinvonz",
 | 
				
			||||||
 | 
					        "repo": "jj",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "mac-app-util": {
 | 
					    "mac-app-util": {
 | 
				
			||||||
      "inputs": {
 | 
					      "inputs": {
 | 
				
			||||||
        "cl-nix-lite": "cl-nix-lite",
 | 
					        "cl-nix-lite": "cl-nix-lite",
 | 
				
			||||||
        "flake-compat": "flake-compat",
 | 
					        "flake-compat": "flake-compat",
 | 
				
			||||||
        "flake-utils": "flake-utils",
 | 
					        "flake-utils": "flake-utils_2",
 | 
				
			||||||
        "nixpkgs": [
 | 
					        "nixpkgs": [
 | 
				
			||||||
          "nixpkgs"
 | 
					          "nixpkgs"
 | 
				
			||||||
        ]
 | 
					        ],
 | 
				
			||||||
 | 
					        "systems": "systems_2"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1727470707,
 | 
					        "lastModified": 1732920695,
 | 
				
			||||||
        "narHash": "sha256-BqkwZ2mvzn+COdfIuzllSzWmiaBwQktt4sw9slfwM70=",
 | 
					        "narHash": "sha256-1fxvJZUznwrmEtYqpPuWi2tPcL9kj6v7p1J7ZZncAPE=",
 | 
				
			||||||
        "owner": "hraban",
 | 
					        "owner": "hraban",
 | 
				
			||||||
        "repo": "mac-app-util",
 | 
					        "repo": "mac-app-util",
 | 
				
			||||||
        "rev": "9c6bbe2a6a7ec647d03f64f0fadb874284f59eac",
 | 
					        "rev": "548672d0cb661ce11d08ee8bde92b87d2a75c872",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -323,68 +367,68 @@
 | 
				
			|||||||
    "nextcloud-cookbook": {
 | 
					    "nextcloud-cookbook": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1719431638,
 | 
					        "lastModified": 1726214817,
 | 
				
			||||||
        "narHash": "sha256-a8ekMnEzudHGiqHF53jPtgsVTOTc2QLuPg6YtTw5h68=",
 | 
					        "narHash": "sha256-Pfa+Xbopg20os+pnGgg+wpEX1MI5fz5JMb0K4a8rBhs=",
 | 
				
			||||||
        "type": "tarball",
 | 
					        "type": "tarball",
 | 
				
			||||||
        "url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.1/cookbook-0.11.1.tar.gz"
 | 
					        "url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.2/cookbook-0.11.2.tar.gz"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
        "type": "tarball",
 | 
					        "type": "tarball",
 | 
				
			||||||
        "url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.1/cookbook-0.11.1.tar.gz"
 | 
					        "url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.2/cookbook-0.11.2.tar.gz"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "nextcloud-external": {
 | 
					    "nextcloud-external": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1710338675,
 | 
					        "lastModified": 1729501349,
 | 
				
			||||||
        "narHash": "sha256-bJJ/dVmE1o04QCyrxD0sko0okRsnxJmT6sOTOmBiifs=",
 | 
					        "narHash": "sha256-OV6HhFBzmnQBO5btGEnqmKlaUMY7/t2Qm3XebclpBlM=",
 | 
				
			||||||
        "type": "tarball",
 | 
					        "type": "tarball",
 | 
				
			||||||
        "url": "https://github.com/nextcloud-releases/external/releases/download/v5.4.0/external-v5.4.0.tar.gz"
 | 
					        "url": "https://github.com/nextcloud-releases/external/releases/download/v5.5.2/external-v5.5.2.tar.gz"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
        "type": "tarball",
 | 
					        "type": "tarball",
 | 
				
			||||||
        "url": "https://github.com/nextcloud-releases/external/releases/download/v5.4.0/external-v5.4.0.tar.gz"
 | 
					        "url": "https://github.com/nextcloud-releases/external/releases/download/v5.5.2/external-v5.5.2.tar.gz"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "nextcloud-news": {
 | 
					    "nextcloud-news": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1718102703,
 | 
					        "lastModified": 1729667621,
 | 
				
			||||||
        "narHash": "sha256-XNGjf7SWgJYFdVNOh3ED0jxSG0GJwWImVQq4cJT1Lo4=",
 | 
					        "narHash": "sha256-pnvyMZQ+NYMgH0Unfh5S19HdZSjnghgoUDAoi2KIXNI=",
 | 
				
			||||||
        "type": "tarball",
 | 
					        "type": "tarball",
 | 
				
			||||||
        "url": "https://github.com/nextcloud/news/releases/download/25.0.0-alpha7/news.tar.gz"
 | 
					        "url": "https://github.com/nextcloud/news/releases/download/25.0.0-alpha12/news.tar.gz"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
        "type": "tarball",
 | 
					        "type": "tarball",
 | 
				
			||||||
        "url": "https://github.com/nextcloud/news/releases/download/25.0.0-alpha7/news.tar.gz"
 | 
					        "url": "https://github.com/nextcloud/news/releases/download/25.0.0-alpha12/news.tar.gz"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "nextcloud-snappymail": {
 | 
					    "nextcloud-snappymail": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728704544,
 | 
					        "lastModified": 1732938511,
 | 
				
			||||||
        "narHash": "sha256-WwCRAZzxYWUpOy6iVTDpVIr/DrkJkQGjgIdVWNfCH3Q=",
 | 
					        "narHash": "sha256-oCw6Brs85rINBHvz3UJXheyLVqvA3RgPXG03b30Fx7E=",
 | 
				
			||||||
        "type": "tarball",
 | 
					        "type": "tarball",
 | 
				
			||||||
        "url": "https://snappymail.eu/repository/nextcloud/snappymail-2.37.2-nextcloud.tar.gz"
 | 
					        "url": "https://snappymail.eu/repository/nextcloud/snappymail-2.38.2-nextcloud.tar.gz"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
        "type": "tarball",
 | 
					        "type": "tarball",
 | 
				
			||||||
        "url": "https://snappymail.eu/repository/nextcloud/snappymail-2.37.2-nextcloud.tar.gz"
 | 
					        "url": "https://snappymail.eu/repository/nextcloud/snappymail-2.38.2-nextcloud.tar.gz"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "nix2vim": {
 | 
					    "nix2vim": {
 | 
				
			||||||
      "inputs": {
 | 
					      "inputs": {
 | 
				
			||||||
        "flake-utils": "flake-utils_2",
 | 
					        "flake-utils": "flake-utils_3",
 | 
				
			||||||
        "nixpkgs": [
 | 
					        "nixpkgs": [
 | 
				
			||||||
          "nixpkgs"
 | 
					          "nixpkgs"
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1727867024,
 | 
					        "lastModified": 1732820845,
 | 
				
			||||||
        "narHash": "sha256-yimXLupF3hG57imRMpqWho/Wstcj7P8Yh8t0SBiX+dQ=",
 | 
					        "narHash": "sha256-YPXk41l4PzKb5rtcxkYhymwjHJG95fxl4iXIzXnftr8=",
 | 
				
			||||||
        "owner": "gytis-ivaskevicius",
 | 
					        "owner": "gytis-ivaskevicius",
 | 
				
			||||||
        "repo": "nix2vim",
 | 
					        "repo": "nix2vim",
 | 
				
			||||||
        "rev": "da26caae6c7776eedbc6514a0f57f1ccd6a759ed",
 | 
					        "rev": "e2c511ea553418dd432005875c649b09d56b7e58",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -395,11 +439,11 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "nixlib": {
 | 
					    "nixlib": {
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728176478,
 | 
					        "lastModified": 1732410305,
 | 
				
			||||||
        "narHash": "sha256-px3Q0W//c+mZ4kPMXq4poztsjtXM1Ja1rN+825YMDUQ=",
 | 
					        "narHash": "sha256-/hxIKRTBsdrnudJWDGaBN8wIjHovqVAVxXdi8ByVtck=",
 | 
				
			||||||
        "owner": "nix-community",
 | 
					        "owner": "nix-community",
 | 
				
			||||||
        "repo": "nixpkgs.lib",
 | 
					        "repo": "nixpkgs.lib",
 | 
				
			||||||
        "rev": "b61309c3c1b6013d36299bc8285612865b3b9e4c",
 | 
					        "rev": "87b6978992e2eb605732fba842cad0a7e14b2047",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -416,11 +460,11 @@
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728522165,
 | 
					        "lastModified": 1732496924,
 | 
				
			||||||
        "narHash": "sha256-UQpsJ0Ev6JBGsCYRlS2oOVvb+eWcDD0xTV3RVlqbeVU=",
 | 
					        "narHash": "sha256-/MNhZLR0eh9z/d3l+ammq+F5XxHln0RHgO4Bhtjr0IM=",
 | 
				
			||||||
        "owner": "nix-community",
 | 
					        "owner": "nix-community",
 | 
				
			||||||
        "repo": "nixos-generators",
 | 
					        "repo": "nixos-generators",
 | 
				
			||||||
        "rev": "40c8d30c490414910fc63626ad1b67af7db40cd3",
 | 
					        "rev": "098e8b6ff72c86944a8d54b64ddd7b7e6635830a",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -431,11 +475,11 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "nixpkgs": {
 | 
					    "nixpkgs": {
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728492678,
 | 
					        "lastModified": 1732521221,
 | 
				
			||||||
        "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
 | 
					        "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
 | 
				
			||||||
        "owner": "nixos",
 | 
					        "owner": "nixos",
 | 
				
			||||||
        "repo": "nixpkgs",
 | 
					        "repo": "nixpkgs",
 | 
				
			||||||
        "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
 | 
					        "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -463,11 +507,11 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "nixpkgs-stable": {
 | 
					    "nixpkgs-stable": {
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728627514,
 | 
					        "lastModified": 1732749044,
 | 
				
			||||||
        "narHash": "sha256-r+SF9AnHrTg+bk6YszoKfV9lgyw+yaFUQe0dOjI0Z2o=",
 | 
					        "narHash": "sha256-T38FQOg0BV5M8FN1712fovzNakSOENEYs+CSkg31C9Y=",
 | 
				
			||||||
        "owner": "nixos",
 | 
					        "owner": "nixos",
 | 
				
			||||||
        "repo": "nixpkgs",
 | 
					        "repo": "nixpkgs",
 | 
				
			||||||
        "rev": "c505ebf777526041d792a49d5f6dd4095ea391a7",
 | 
					        "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -479,11 +523,11 @@
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    "nur": {
 | 
					    "nur": {
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728704557,
 | 
					        "lastModified": 1732938183,
 | 
				
			||||||
        "narHash": "sha256-HnYBB+oE+03rNDzTTVazBcysPOu5udRpTOGpP7/A5Ow=",
 | 
					        "narHash": "sha256-Gs3fB2JCLFPR5IAXRrZ40fzBIkXclDgdOv/LQFcz1ag=",
 | 
				
			||||||
        "owner": "nix-community",
 | 
					        "owner": "nix-community",
 | 
				
			||||||
        "repo": "nur",
 | 
					        "repo": "nur",
 | 
				
			||||||
        "rev": "1d143f52b0a046924ee7fe74bce0bd2e10e07c3d",
 | 
					        "rev": "954f3b73ddae61755abe0e9bbc40ba6d68a6a22d",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -495,11 +539,11 @@
 | 
				
			|||||||
    "nvim-lint-src": {
 | 
					    "nvim-lint-src": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728582620,
 | 
					        "lastModified": 1732288955,
 | 
				
			||||||
        "narHash": "sha256-wfui4kE3oxveCJPjJfkJSbE69zVTeAsasDdfJkElmn8=",
 | 
					        "narHash": "sha256-oRVyd2UtmVafoc8TEov+1Hlln6/AFnVokoiENh45X74=",
 | 
				
			||||||
        "owner": "mfussenegger",
 | 
					        "owner": "mfussenegger",
 | 
				
			||||||
        "repo": "nvim-lint",
 | 
					        "repo": "nvim-lint",
 | 
				
			||||||
        "rev": "f707b3ae50417067fa63fdfe179b0bff6b380da1",
 | 
					        "rev": "6b46370d02cd001509a765591a3ffc481b538794",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -528,11 +572,11 @@
 | 
				
			|||||||
    "nvim-tree-lua-src": {
 | 
					    "nvim-tree-lua-src": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728614821,
 | 
					        "lastModified": 1732428058,
 | 
				
			||||||
        "narHash": "sha256-WYtu+jtsQSFqruTxdzkHE9UQJBE2TGoNoFar36AAoqo=",
 | 
					        "narHash": "sha256-HHgC7aH2m3gv2FtOK1jhjBgJOGWrdc+FQOEpMiEWe74=",
 | 
				
			||||||
        "owner": "kyazdani42",
 | 
					        "owner": "kyazdani42",
 | 
				
			||||||
        "repo": "nvim-tree.lua",
 | 
					        "repo": "nvim-tree.lua",
 | 
				
			||||||
        "rev": "5ad87620ec9d1190d15c88171a3f0122bc16b0fe",
 | 
					        "rev": "ca7c4c33cac2ad66ec69d45e465379716ef0cc97",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -558,6 +602,23 @@
 | 
				
			|||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "osc": {
 | 
				
			||||||
 | 
					      "flake": false,
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1732197203,
 | 
				
			||||||
 | 
					        "narHash": "sha256-xL9mqwb+C6WbuJ/qk0lNbi9xd24PbKi5G0FlwaH5XPk=",
 | 
				
			||||||
 | 
					        "owner": "theimpostor",
 | 
				
			||||||
 | 
					        "repo": "osc",
 | 
				
			||||||
 | 
					        "rev": "87b316b3f96a22fd85654cd7bd091f2cac1c6691",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "theimpostor",
 | 
				
			||||||
 | 
					        "ref": "v0.4.6",
 | 
				
			||||||
 | 
					        "repo": "osc",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "ren": {
 | 
					    "ren": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
@@ -603,6 +664,7 @@
 | 
				
			|||||||
        "gh-collaborators": "gh-collaborators",
 | 
					        "gh-collaborators": "gh-collaborators",
 | 
				
			||||||
        "hmts-nvim-src": "hmts-nvim-src",
 | 
					        "hmts-nvim-src": "hmts-nvim-src",
 | 
				
			||||||
        "home-manager": "home-manager",
 | 
					        "home-manager": "home-manager",
 | 
				
			||||||
 | 
					        "jujutsu": "jujutsu",
 | 
				
			||||||
        "mac-app-util": "mac-app-util",
 | 
					        "mac-app-util": "mac-app-util",
 | 
				
			||||||
        "nextcloud-cookbook": "nextcloud-cookbook",
 | 
					        "nextcloud-cookbook": "nextcloud-cookbook",
 | 
				
			||||||
        "nextcloud-external": "nextcloud-external",
 | 
					        "nextcloud-external": "nextcloud-external",
 | 
				
			||||||
@@ -618,6 +680,7 @@
 | 
				
			|||||||
        "nvim-lspconfig-src": "nvim-lspconfig-src",
 | 
					        "nvim-lspconfig-src": "nvim-lspconfig-src",
 | 
				
			||||||
        "nvim-tree-lua-src": "nvim-tree-lua-src",
 | 
					        "nvim-tree-lua-src": "nvim-tree-lua-src",
 | 
				
			||||||
        "nvim-treesitter-src": "nvim-treesitter-src",
 | 
					        "nvim-treesitter-src": "nvim-treesitter-src",
 | 
				
			||||||
 | 
					        "osc": "osc",
 | 
				
			||||||
        "ren": "ren",
 | 
					        "ren": "ren",
 | 
				
			||||||
        "rep": "rep",
 | 
					        "rep": "rep",
 | 
				
			||||||
        "snipe-nvim-src": "snipe-nvim-src",
 | 
					        "snipe-nvim-src": "snipe-nvim-src",
 | 
				
			||||||
@@ -637,14 +700,35 @@
 | 
				
			|||||||
        "zenyd-mpv-scripts": "zenyd-mpv-scripts"
 | 
					        "zenyd-mpv-scripts": "zenyd-mpv-scripts"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "rust-overlay": {
 | 
				
			||||||
 | 
					      "inputs": {
 | 
				
			||||||
 | 
					        "nixpkgs": [
 | 
				
			||||||
 | 
					          "jujutsu",
 | 
				
			||||||
 | 
					          "nixpkgs"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1732242723,
 | 
				
			||||||
 | 
					        "narHash": "sha256-NWI8csIK0ujFlFuEXKnoc+7hWoCiEtINK9r48LUUMeU=",
 | 
				
			||||||
 | 
					        "owner": "oxalica",
 | 
				
			||||||
 | 
					        "repo": "rust-overlay",
 | 
				
			||||||
 | 
					        "rev": "a229311fcb45b88a95fdfa5cecd8349c809a272a",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "oxalica",
 | 
				
			||||||
 | 
					        "repo": "rust-overlay",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "snipe-nvim-src": {
 | 
					    "snipe-nvim-src": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1724418876,
 | 
					        "lastModified": 1732490186,
 | 
				
			||||||
        "narHash": "sha256-G4g/OzyXhDhX84HkxlhFSy6E+EAGxH+HL1Bw5s5FWHE=",
 | 
					        "narHash": "sha256-/4mkMXNZrVVExMfMUshXXEijXCkk2LapB/TPtTn7rv0=",
 | 
				
			||||||
        "owner": "leath-dub",
 | 
					        "owner": "leath-dub",
 | 
				
			||||||
        "repo": "snipe.nvim",
 | 
					        "repo": "snipe.nvim",
 | 
				
			||||||
        "rev": "f1abd4aaaef6398b45dcddc9f1a40dd982f732b0",
 | 
					        "rev": "3d560dcac1cda409f5f6adf17b8003df3ab85eee",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -669,6 +753,21 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "systems_2": {
 | 
					    "systems_2": {
 | 
				
			||||||
 | 
					      "locked": {
 | 
				
			||||||
 | 
					        "lastModified": 1689347925,
 | 
				
			||||||
 | 
					        "narHash": "sha256-ozenz5bFe1UUqOn7f60HRmgc01BgTGIKZ4Xl+HbocGQ=",
 | 
				
			||||||
 | 
					        "owner": "nix-systems",
 | 
				
			||||||
 | 
					        "repo": "default-darwin",
 | 
				
			||||||
 | 
					        "rev": "2235d7e6cc29ae99878133c95e9fe5e157661ffb",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "original": {
 | 
				
			||||||
 | 
					        "owner": "nix-systems",
 | 
				
			||||||
 | 
					        "repo": "default-darwin",
 | 
				
			||||||
 | 
					        "type": "github"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "systems_3": {
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1681028828,
 | 
					        "lastModified": 1681028828,
 | 
				
			||||||
        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
					        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
				
			||||||
@@ -683,7 +782,7 @@
 | 
				
			|||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "systems_3": {
 | 
					    "systems_4": {
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1681028828,
 | 
					        "lastModified": 1681028828,
 | 
				
			||||||
        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
					        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
				
			||||||
@@ -718,11 +817,11 @@
 | 
				
			|||||||
    "telescope-project-nvim-src": {
 | 
					    "telescope-project-nvim-src": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1725880250,
 | 
					        "lastModified": 1732660843,
 | 
				
			||||||
        "narHash": "sha256-wO/cm5PT1L0hFr/CX466w0UimoFg/tWrDK8T0QeKZMU=",
 | 
					        "narHash": "sha256-H4IMj/eyhTZtt2+mFWokcIRFDOLCLpkJNNe61O3JpWU=",
 | 
				
			||||||
        "owner": "nvim-telescope",
 | 
					        "owner": "nvim-telescope",
 | 
				
			||||||
        "repo": "telescope-project.nvim",
 | 
					        "repo": "telescope-project.nvim",
 | 
				
			||||||
        "rev": "796200876bb0fe8157b8eb1ce03d927d3827a052",
 | 
					        "rev": "9fc8428e2ccae167c36ad7cff72798bbd8e35836",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -734,11 +833,11 @@
 | 
				
			|||||||
    "tiny-inline-diagnostic-nvim-src": {
 | 
					    "tiny-inline-diagnostic-nvim-src": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1726582328,
 | 
					        "lastModified": 1732895718,
 | 
				
			||||||
        "narHash": "sha256-NBcUVUSnk2TlbSr/vFTbp3Rh35ms8lAcfDqpmE1KTq4=",
 | 
					        "narHash": "sha256-bkH9dqui4acLef53QCLgzipCjsqAc5dlm7pmGuROEfw=",
 | 
				
			||||||
        "owner": "rachartier",
 | 
					        "owner": "rachartier",
 | 
				
			||||||
        "repo": "tiny-inline-diagnostic.nvim",
 | 
					        "repo": "tiny-inline-diagnostic.nvim",
 | 
				
			||||||
        "rev": "1a83e7ce5c9d0ae4d89fc5c812b55ff8ed1d39e7",
 | 
					        "rev": "cd8e56dd88709e05ecd0036ca2a821d265379bfa",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -767,11 +866,11 @@
 | 
				
			|||||||
    "tree-sitter-bash": {
 | 
					    "tree-sitter-bash": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1725407033,
 | 
					        "lastModified": 1731338420,
 | 
				
			||||||
        "narHash": "sha256-xqiUJhl7nfOlS6wBYWpmrGLCvWoJCA5fz8DCX85Lxog=",
 | 
					        "narHash": "sha256-JW+30zIyq8Xc7NG9V+YoFqC+57BjZXIbAvWPD2lqvIE=",
 | 
				
			||||||
        "owner": "tree-sitter",
 | 
					        "owner": "tree-sitter",
 | 
				
			||||||
        "repo": "tree-sitter-bash",
 | 
					        "repo": "tree-sitter-bash",
 | 
				
			||||||
        "rev": "c8713e50f0bd77d080832fc61ad128bc8f2934e9",
 | 
					        "rev": "49c31006d8307dcb12bc5770f35b6d5b9e2be68e",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -800,11 +899,11 @@
 | 
				
			|||||||
    "tree-sitter-lua": {
 | 
					    "tree-sitter-lua": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1725894603,
 | 
					        "lastModified": 1729494737,
 | 
				
			||||||
        "narHash": "sha256-Q2LtrifoKf16N1dRBf2xLi12kpMkcFncZL4jaVbtK3M=",
 | 
					        "narHash": "sha256-v+fFcIOv+bu+2IGI/Lh/Xbqd5BzbBjaa51ECd0hG7Ow=",
 | 
				
			||||||
        "owner": "MunifTanjim",
 | 
					        "owner": "MunifTanjim",
 | 
				
			||||||
        "repo": "tree-sitter-lua",
 | 
					        "repo": "tree-sitter-lua",
 | 
				
			||||||
        "rev": "99fc677e6971c425e8d407f59c77ab897e585c92",
 | 
					        "rev": "34e60e7f45fc313463c68090d88d742a55d1bd7a",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -833,11 +932,11 @@
 | 
				
			|||||||
    "tree-sitter-python": {
 | 
					    "tree-sitter-python": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1725324041,
 | 
					        "lastModified": 1731308116,
 | 
				
			||||||
        "narHash": "sha256-8mdBN1vP64PJKxN2y0GoaObLs6j/lcsU47sr+8/8oTQ=",
 | 
					        "narHash": "sha256-/jYGi2yksifMGPitlS8oM/g3YrR7RJ57imBhEyow/jc=",
 | 
				
			||||||
        "owner": "tree-sitter",
 | 
					        "owner": "tree-sitter",
 | 
				
			||||||
        "repo": "tree-sitter-python",
 | 
					        "repo": "tree-sitter-python",
 | 
				
			||||||
        "rev": "8c65e256f971812276ff2a69a2f515c218ed7f82",
 | 
					        "rev": "6d14e44ea217bc5bb1c1804180e9818d7d1b8d91",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -866,11 +965,11 @@
 | 
				
			|||||||
    "tree-sitter-vimdoc": {
 | 
					    "tree-sitter-vimdoc": {
 | 
				
			||||||
      "flake": false,
 | 
					      "flake": false,
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1717834376,
 | 
					        "lastModified": 1729686839,
 | 
				
			||||||
        "narHash": "sha256-v+XSWGm2Wdn9/rxNFMqXYACkGn6AvxZdxkClLuKnWGU=",
 | 
					        "narHash": "sha256-Vrl4/cZL+TWlUMEeWZoHCAWhvlefcl3ajGcwyTNKOhI=",
 | 
				
			||||||
        "owner": "neovim",
 | 
					        "owner": "neovim",
 | 
				
			||||||
        "repo": "tree-sitter-vimdoc",
 | 
					        "repo": "tree-sitter-vimdoc",
 | 
				
			||||||
        "rev": "2249c44ecd3f5cf22da3dcccfb74f816ddb29245",
 | 
					        "rev": "d2e4b5c172a109966c2ce0378f73df6cede39400",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
@@ -898,17 +997,17 @@
 | 
				
			|||||||
    "wsl": {
 | 
					    "wsl": {
 | 
				
			||||||
      "inputs": {
 | 
					      "inputs": {
 | 
				
			||||||
        "flake-compat": "flake-compat_2",
 | 
					        "flake-compat": "flake-compat_2",
 | 
				
			||||||
        "flake-utils": "flake-utils_3",
 | 
					        "flake-utils": "flake-utils_4",
 | 
				
			||||||
        "nixpkgs": [
 | 
					        "nixpkgs": [
 | 
				
			||||||
          "nixpkgs"
 | 
					          "nixpkgs"
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "locked": {
 | 
					      "locked": {
 | 
				
			||||||
        "lastModified": 1728588346,
 | 
					        "lastModified": 1731682434,
 | 
				
			||||||
        "narHash": "sha256-P1j+Nf+pzxPYK2Qe7lF2yB0vR3YvW8Td5sD0ZvrKIq8=",
 | 
					        "narHash": "sha256-HnZFPB7akVIy0KuPq/tEkiB+Brt1qi0DUIDzR8z25qI=",
 | 
				
			||||||
        "owner": "nix-community",
 | 
					        "owner": "nix-community",
 | 
				
			||||||
        "repo": "NixOS-WSL",
 | 
					        "repo": "NixOS-WSL",
 | 
				
			||||||
        "rev": "0fc8d9bb51cc46b31d950513df6d088905c8fe55",
 | 
					        "rev": "a6b9cf0b7805e2c50829020a73e7bde683fd36dd",
 | 
				
			||||||
        "type": "github"
 | 
					        "type": "github"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "original": {
 | 
					      "original": {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								flake.nix
									
									
									
									
									
								
							@@ -175,6 +175,13 @@
 | 
				
			|||||||
      flake = false;
 | 
					      flake = false;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Git alternative
 | 
				
			||||||
 | 
					    # Fixes: https://github.com/martinvonz/jj/issues/4784
 | 
				
			||||||
 | 
					    jujutsu = {
 | 
				
			||||||
 | 
					      url = "github:martinvonz/jj";
 | 
				
			||||||
 | 
					      inputs.nixpkgs.follows = "nixpkgs";
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Ren and rep - CLI find and replace
 | 
					    # Ren and rep - CLI find and replace
 | 
				
			||||||
    rep = {
 | 
					    rep = {
 | 
				
			||||||
      url = "github:robenkleene/rep-grep";
 | 
					      url = "github:robenkleene/rep-grep";
 | 
				
			||||||
@@ -190,26 +197,32 @@
 | 
				
			|||||||
      flake = false;
 | 
					      flake = false;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Clipboard over SSH
 | 
				
			||||||
 | 
					    osc = {
 | 
				
			||||||
 | 
					      url = "github:theimpostor/osc/v0.4.6";
 | 
				
			||||||
 | 
					      flake = false;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Nextcloud Apps
 | 
					    # Nextcloud Apps
 | 
				
			||||||
    nextcloud-news = {
 | 
					    nextcloud-news = {
 | 
				
			||||||
      # https://github.com/nextcloud/news/releases
 | 
					      # https://github.com/nextcloud/news/releases
 | 
				
			||||||
      url = "https://github.com/nextcloud/news/releases/download/25.0.0-alpha7/news.tar.gz";
 | 
					      url = "https://github.com/nextcloud/news/releases/download/25.0.0-alpha12/news.tar.gz";
 | 
				
			||||||
      flake = false;
 | 
					      flake = false;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    nextcloud-external = {
 | 
					    nextcloud-external = {
 | 
				
			||||||
      # https://github.com/nextcloud-releases/external/releases
 | 
					      # https://github.com/nextcloud-releases/external/releases
 | 
				
			||||||
      url = "https://github.com/nextcloud-releases/external/releases/download/v5.4.0/external-v5.4.0.tar.gz";
 | 
					      url = "https://github.com/nextcloud-releases/external/releases/download/v5.5.2/external-v5.5.2.tar.gz";
 | 
				
			||||||
      flake = false;
 | 
					      flake = false;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    nextcloud-cookbook = {
 | 
					    nextcloud-cookbook = {
 | 
				
			||||||
      # https://github.com/christianlupus-nextcloud/cookbook-releases/releases/
 | 
					      # https://github.com/christianlupus-nextcloud/cookbook-releases/releases/
 | 
				
			||||||
      url = "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.1/cookbook-0.11.1.tar.gz";
 | 
					      url = "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.2/cookbook-0.11.2.tar.gz";
 | 
				
			||||||
      flake = false;
 | 
					      flake = false;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    nextcloud-snappymail = {
 | 
					    nextcloud-snappymail = {
 | 
				
			||||||
      # https://github.com/the-djmaze/snappymail/releases
 | 
					      # https://github.com/the-djmaze/snappymail/releases
 | 
				
			||||||
      # https://snappymail.eu/repository/nextcloud
 | 
					      # https://snappymail.eu/repository/nextcloud
 | 
				
			||||||
      url = "https://snappymail.eu/repository/nextcloud/snappymail-2.37.2-nextcloud.tar.gz";
 | 
					      url = "https://snappymail.eu/repository/nextcloud/snappymail-2.38.2-nextcloud.tar.gz";
 | 
				
			||||||
      # url = "https://github.com/nmasur/snappymail-nextcloud/releases/download/v2.36.3/snappymail-2.36.3-nextcloud.tar.gz";
 | 
					      # url = "https://github.com/nmasur/snappymail-nextcloud/releases/download/v2.36.3/snappymail-2.36.3-nextcloud.tar.gz";
 | 
				
			||||||
      flake = false;
 | 
					      flake = false;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
@@ -246,6 +259,7 @@
 | 
				
			|||||||
            notifications = "ntfy.${baseName}";
 | 
					            notifications = "ntfy.${baseName}";
 | 
				
			||||||
            prometheus = "prom.${baseName}";
 | 
					            prometheus = "prom.${baseName}";
 | 
				
			||||||
            paperless = "paper.${baseName}";
 | 
					            paperless = "paper.${baseName}";
 | 
				
			||||||
 | 
					            photos = "photos.${baseName}";
 | 
				
			||||||
            secrets = "vault.${baseName}";
 | 
					            secrets = "vault.${baseName}";
 | 
				
			||||||
            stream = "stream.${baseName}";
 | 
					            stream = "stream.${baseName}";
 | 
				
			||||||
            content = "cloud.${baseName}";
 | 
					            content = "cloud.${baseName}";
 | 
				
			||||||
@@ -260,6 +274,7 @@
 | 
				
			|||||||
      overlays = [
 | 
					      overlays = [
 | 
				
			||||||
        inputs.nur.overlay
 | 
					        inputs.nur.overlay
 | 
				
			||||||
        inputs.nix2vim.overlay
 | 
					        inputs.nix2vim.overlay
 | 
				
			||||||
 | 
					        inputs.jujutsu.overlays.default # Fix: https://github.com/martinvonz/jj/issues/4784
 | 
				
			||||||
        (import ./overlays/neovim-plugins.nix inputs)
 | 
					        (import ./overlays/neovim-plugins.nix inputs)
 | 
				
			||||||
        (import ./overlays/disko.nix inputs)
 | 
					        (import ./overlays/disko.nix inputs)
 | 
				
			||||||
        (import ./overlays/tree-sitter.nix inputs)
 | 
					        (import ./overlays/tree-sitter.nix inputs)
 | 
				
			||||||
@@ -267,6 +282,7 @@
 | 
				
			|||||||
        (import ./overlays/nextcloud-apps.nix inputs)
 | 
					        (import ./overlays/nextcloud-apps.nix inputs)
 | 
				
			||||||
        (import ./overlays/betterlockscreen.nix)
 | 
					        (import ./overlays/betterlockscreen.nix)
 | 
				
			||||||
        (import ./overlays/gh-collaborators.nix inputs)
 | 
					        (import ./overlays/gh-collaborators.nix inputs)
 | 
				
			||||||
 | 
					        (import ./overlays/osc.nix inputs)
 | 
				
			||||||
        (import ./overlays/ren-rep.nix inputs)
 | 
					        (import ./overlays/ren-rep.nix inputs)
 | 
				
			||||||
      ];
 | 
					      ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,6 +82,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
 | 
				
			|||||||
      services.minecraft-server.enable = true; # Setup Minecraft server
 | 
					      services.minecraft-server.enable = true; # Setup Minecraft server
 | 
				
			||||||
      services.n8n.enable = true;
 | 
					      services.n8n.enable = true;
 | 
				
			||||||
      services.ntfy-sh.enable = true;
 | 
					      services.ntfy-sh.enable = true;
 | 
				
			||||||
 | 
					      services.postgresql.enable = true;
 | 
				
			||||||
      services.uptime-kuma.enable = true;
 | 
					      services.uptime-kuma.enable = true;
 | 
				
			||||||
      system.autoUpgrade.enable = true;
 | 
					      system.autoUpgrade.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -109,6 +109,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
 | 
				
			|||||||
      services.audiobookshelf.enable = true;
 | 
					      services.audiobookshelf.enable = true;
 | 
				
			||||||
      services.bind.enable = true;
 | 
					      services.bind.enable = true;
 | 
				
			||||||
      services.caddy.enable = true;
 | 
					      services.caddy.enable = true;
 | 
				
			||||||
 | 
					      services.immich.enable = true;
 | 
				
			||||||
      services.jellyfin.enable = true;
 | 
					      services.jellyfin.enable = true;
 | 
				
			||||||
      services.nextcloud.enable = true;
 | 
					      services.nextcloud.enable = true;
 | 
				
			||||||
      services.calibre-web.enable = true;
 | 
					      services.calibre-web.enable = true;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@
 | 
				
			|||||||
    ];
 | 
					    ];
 | 
				
			||||||
    home-manager.users.${config.user} = {
 | 
					    home-manager.users.${config.user} = {
 | 
				
			||||||
      home.packages = [
 | 
					      home.packages = [
 | 
				
			||||||
        pkgs._1password
 | 
					        pkgs._1password-cli
 | 
				
			||||||
      ] ++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]);
 | 
					      ] ++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]);
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -102,135 +102,183 @@
 | 
				
			|||||||
            };
 | 
					            };
 | 
				
			||||||
          };
 | 
					          };
 | 
				
			||||||
          extraConfig = ''
 | 
					          extraConfig = ''
 | 
				
			||||||
            return {
 | 
					            local wezterm = require("wezterm")
 | 
				
			||||||
                color_scheme = "myTheme",
 | 
					            local config = wezterm.config_builder()
 | 
				
			||||||
 | 
					            config.check_for_updates = false
 | 
				
			||||||
 | 
					            config.color_scheme = "myTheme"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                -- Scrollback
 | 
					            -- Scrollback
 | 
				
			||||||
                scrollback_lines = 10000,
 | 
					            config.scrollback_lines = 10000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                -- Window
 | 
					            -- Window
 | 
				
			||||||
                window_padding = {
 | 
					            config.window_padding = {
 | 
				
			||||||
                  left = 10,
 | 
					              left = 10,
 | 
				
			||||||
                  right = 10,
 | 
					              right = 10,
 | 
				
			||||||
                  top = 10,
 | 
					              top = 10,
 | 
				
			||||||
                  bottom = 10,
 | 
					              bottom = 10,
 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                font = wezterm.font('${font}', { weight = 'Bold'}),
 | 
					 | 
				
			||||||
                font_size = ${if pkgs.stdenv.isLinux then "14.0" else "18.0"},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                -- Fix color blocks instead of text
 | 
					 | 
				
			||||||
                front_end = "WebGpu",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                -- Tab Bar
 | 
					 | 
				
			||||||
                hide_tab_bar_if_only_one_tab = true,
 | 
					 | 
				
			||||||
                window_frame = {
 | 
					 | 
				
			||||||
                  font = wezterm.font('${font}', { weight = 'Bold'}),
 | 
					 | 
				
			||||||
                  font_size = ${if pkgs.stdenv.isLinux then "12.0" else "16.0"},
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                colors = {
 | 
					 | 
				
			||||||
                  tab_bar = {
 | 
					 | 
				
			||||||
                    active_tab = {
 | 
					 | 
				
			||||||
                      bg_color = '${config.theme.colors.base00}',
 | 
					 | 
				
			||||||
                      fg_color = '${config.theme.colors.base04}',
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                -- Disable audio
 | 
					 | 
				
			||||||
                audible_bell = "Disabled",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                initial_rows = 80,
 | 
					 | 
				
			||||||
                initial_cols = 200,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                keys = {
 | 
					 | 
				
			||||||
                  -- sends completion string for fish autosuggestions
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                    key = 'Enter',
 | 
					 | 
				
			||||||
                    mods = 'SHIFT',
 | 
					 | 
				
			||||||
                    action = wezterm.action.SendString '\x1F'
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                  -- ctrl-shift-h was "hide"
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                    key = 'H',
 | 
					 | 
				
			||||||
                    mods = 'SHIFT|CTRL',
 | 
					 | 
				
			||||||
                    action = wezterm.action.DisableDefaultAssignment
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                  -- alt-enter was "fullscreen"
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                    key = 'Enter',
 | 
					 | 
				
			||||||
                    mods = 'ALT',
 | 
					 | 
				
			||||||
                    action = wezterm.action.DisableDefaultAssignment
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                  -- make super-f "fullscreen"
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                    key = 'f',
 | 
					 | 
				
			||||||
                    mods = 'SUPER',
 | 
					 | 
				
			||||||
                    action = wezterm.action.ToggleFullScreen
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                  -- super-t open new tab in new dir
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                    key = 't',
 | 
					 | 
				
			||||||
                    mods = ${if pkgs.stdenv.isDarwin then "'SUPER'" else "'ALT'"},
 | 
					 | 
				
			||||||
                    action = wezterm.action.SpawnCommandInNewTab {
 | 
					 | 
				
			||||||
                      cwd = wezterm.home_dir,
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                  -- shift-super-t open new tab in same dir
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                    key = 't',
 | 
					 | 
				
			||||||
                    mods = 'SUPER|SHIFT',
 | 
					 | 
				
			||||||
                    action = wezterm.action.SpawnTab 'CurrentPaneDomain'
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                  -- project switcher
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                     key = 'P',
 | 
					 | 
				
			||||||
                     mods = 'SUPER',
 | 
					 | 
				
			||||||
                     action = wezterm.action_callback(function(window, pane)
 | 
					 | 
				
			||||||
                       local choices = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                       wezterm.log_info "working?"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                       function scandir(directory)
 | 
					 | 
				
			||||||
                           local i, t, popen = 0, {}, io.popen
 | 
					 | 
				
			||||||
                           local pfile = popen('${pkgs.fd}/bin/fd --search-path "'..directory..'" --type directory --exact-depth 2 | ${pkgs.proximity-sort}/bin/proximity-sort "'..os.getenv("HOME").."/dev/work"..'"')
 | 
					 | 
				
			||||||
                           for filename in pfile:lines() do
 | 
					 | 
				
			||||||
                               i = i + 1
 | 
					 | 
				
			||||||
                               t[i] = filename
 | 
					 | 
				
			||||||
                           end
 | 
					 | 
				
			||||||
                           pfile:close()
 | 
					 | 
				
			||||||
                           return t
 | 
					 | 
				
			||||||
                       end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                       for _, v in pairs(scandir(os.getenv("HOME").."/dev")) do
 | 
					 | 
				
			||||||
                         table.insert(choices, { label = v })
 | 
					 | 
				
			||||||
                       end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                       window:perform_action(
 | 
					 | 
				
			||||||
                         wezterm.action.InputSelector {
 | 
					 | 
				
			||||||
                           action = wezterm.action_callback(function(window, pane, id, label)
 | 
					 | 
				
			||||||
                             if not id and not label then
 | 
					 | 
				
			||||||
                               wezterm.log_info "cancelled"
 | 
					 | 
				
			||||||
                             else
 | 
					 | 
				
			||||||
                               window:perform_action(
 | 
					 | 
				
			||||||
                                 wezterm.action.SpawnCommandInNewTab {
 | 
					 | 
				
			||||||
                                   cwd = label,
 | 
					 | 
				
			||||||
                                 },
 | 
					 | 
				
			||||||
                                 pane
 | 
					 | 
				
			||||||
                               )
 | 
					 | 
				
			||||||
                             end
 | 
					 | 
				
			||||||
                           end),
 | 
					 | 
				
			||||||
                           fuzzy = true,
 | 
					 | 
				
			||||||
                           title = "Select Project",
 | 
					 | 
				
			||||||
                           choices = choices,
 | 
					 | 
				
			||||||
                         },
 | 
					 | 
				
			||||||
                         pane
 | 
					 | 
				
			||||||
                       )
 | 
					 | 
				
			||||||
                     end),
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            config.font = wezterm.font('${font}', { weight = 'Bold'})
 | 
				
			||||||
 | 
					            config.font_size = ${if pkgs.stdenv.isLinux then "14.0" else "18.0"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            -- Fix color blocks instead of text
 | 
				
			||||||
 | 
					            config.front_end = "WebGpu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            -- Tab Bar
 | 
				
			||||||
 | 
					            config.hide_tab_bar_if_only_one_tab = true
 | 
				
			||||||
 | 
					            config.window_frame = {
 | 
				
			||||||
 | 
					              font = wezterm.font('${font}', { weight = 'Bold'}),
 | 
				
			||||||
 | 
					              font_size = ${if pkgs.stdenv.isLinux then "12.0" else "16.0"},
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            config.colors = {
 | 
				
			||||||
 | 
					              tab_bar = {
 | 
				
			||||||
 | 
					                active_tab = {
 | 
				
			||||||
 | 
					                  bg_color = '${config.theme.colors.base00}',
 | 
				
			||||||
 | 
					                  fg_color = '${config.theme.colors.base04}',
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            -- Disable audio
 | 
				
			||||||
 | 
					            config.audible_bell = "Disabled"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            config.initial_rows = 80
 | 
				
			||||||
 | 
					            config.initial_cols = 200
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            config.unix_domains = {
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                name = 'unix',
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            -- This causes `wezterm` to act as though it was started as
 | 
				
			||||||
 | 
					            -- `wezterm connect unix` by default, connecting to the unix
 | 
				
			||||||
 | 
					            -- domain on startup.
 | 
				
			||||||
 | 
					            -- If you prefer to connect manually, leave out this line.
 | 
				
			||||||
 | 
					            config.default_gui_startup_args = { 'connect', 'unix' }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            config.leader = {
 | 
				
			||||||
 | 
					              key = 'a',
 | 
				
			||||||
 | 
					              mods = 'CTRL',
 | 
				
			||||||
 | 
					              timeout_milliseconds = 2000,
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            config.keys = {
 | 
				
			||||||
 | 
					              -- Attach to muxer
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                key = 'a',
 | 
				
			||||||
 | 
					                mods = 'LEADER',
 | 
				
			||||||
 | 
					                action = wezterm.action.AttachDomain 'unix',
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              -- Detach from muxer
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                key = 'd',
 | 
				
			||||||
 | 
					                mods = 'LEADER',
 | 
				
			||||||
 | 
					                action = wezterm.action.DetachDomain { DomainName = 'unix' },
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              -- sends completion string for fish autosuggestions
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                key = 'Enter',
 | 
				
			||||||
 | 
					                mods = 'SHIFT',
 | 
				
			||||||
 | 
					                action = wezterm.action.SendString '\x1F'
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              -- ctrl-shift-h was "hide"
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                key = 'H',
 | 
				
			||||||
 | 
					                mods = 'SHIFT|CTRL',
 | 
				
			||||||
 | 
					                action = wezterm.action.DisableDefaultAssignment
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              -- alt-enter was "fullscreen"
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                key = 'Enter',
 | 
				
			||||||
 | 
					                mods = 'ALT',
 | 
				
			||||||
 | 
					                action = wezterm.action.DisableDefaultAssignment
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              -- make super-f "fullscreen"
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                key = 'f',
 | 
				
			||||||
 | 
					                mods = 'SUPER',
 | 
				
			||||||
 | 
					                action = wezterm.action.ToggleFullScreen
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              -- super-t open new tab in new dir
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                key = 't',
 | 
				
			||||||
 | 
					                mods = ${if pkgs.stdenv.isDarwin then "'SUPER'" else "'ALT'"},
 | 
				
			||||||
 | 
					                action = wezterm.action.SpawnCommandInNewTab {
 | 
				
			||||||
 | 
					                  cwd = wezterm.home_dir,
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              -- shift-super-t open new tab in same dir
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                key = 't',
 | 
				
			||||||
 | 
					                mods = 'SUPER|SHIFT',
 | 
				
			||||||
 | 
					                action = wezterm.action.SpawnTab 'CurrentPaneDomain'
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              -- project switcher
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                 key = 'P',
 | 
				
			||||||
 | 
					                 mods = 'SUPER',
 | 
				
			||||||
 | 
					                 action = wezterm.action_callback(function(window, pane)
 | 
				
			||||||
 | 
					                   local choices = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                   wezterm.log_info "working?"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                   function scandir(directory)
 | 
				
			||||||
 | 
					                       local i, t, popen = 0, {}, io.popen
 | 
				
			||||||
 | 
					                       local pfile = popen('${pkgs.fd}/bin/fd --search-path "'..directory..'" --type directory --exact-depth 2 | ${pkgs.proximity-sort}/bin/proximity-sort "'..os.getenv("HOME").."/dev/work"..'"')
 | 
				
			||||||
 | 
					                       for filename in pfile:lines() do
 | 
				
			||||||
 | 
					                           i = i + 1
 | 
				
			||||||
 | 
					                           t[i] = filename
 | 
				
			||||||
 | 
					                       end
 | 
				
			||||||
 | 
					                       pfile:close()
 | 
				
			||||||
 | 
					                       return t
 | 
				
			||||||
 | 
					                   end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                   for _, v in pairs(scandir(os.getenv("HOME").."/dev")) do
 | 
				
			||||||
 | 
					                     table.insert(choices, { label = v })
 | 
				
			||||||
 | 
					                   end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                   window:perform_action(
 | 
				
			||||||
 | 
					                     wezterm.action.InputSelector {
 | 
				
			||||||
 | 
					                       action = wezterm.action_callback(function(window, pane, id, label)
 | 
				
			||||||
 | 
					                         if not id and not label then
 | 
				
			||||||
 | 
					                           wezterm.log_info "cancelled"
 | 
				
			||||||
 | 
					                         else
 | 
				
			||||||
 | 
					                           window:perform_action(
 | 
				
			||||||
 | 
					                             wezterm.action.SpawnCommandInNewTab {
 | 
				
			||||||
 | 
					                               cwd = label,
 | 
				
			||||||
 | 
					                             },
 | 
				
			||||||
 | 
					                             pane
 | 
				
			||||||
 | 
					                           )
 | 
				
			||||||
 | 
					                         end
 | 
				
			||||||
 | 
					                       end),
 | 
				
			||||||
 | 
					                       fuzzy = true,
 | 
				
			||||||
 | 
					                       title = "Select Project",
 | 
				
			||||||
 | 
					                       choices = choices,
 | 
				
			||||||
 | 
					                     },
 | 
				
			||||||
 | 
					                     pane
 | 
				
			||||||
 | 
					                   )
 | 
				
			||||||
 | 
					                 end),
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            -- print the workspace name at the upper right
 | 
				
			||||||
 | 
					            wezterm.on("update-right-status", function(window, pane)
 | 
				
			||||||
 | 
					              window:set_right_status(window:active_workspace())
 | 
				
			||||||
 | 
					            end)
 | 
				
			||||||
 | 
					            -- load plugin
 | 
				
			||||||
 | 
					            local workspace_switcher = wezterm.plugin.require("https://github.com/MLFlexer/smart_workspace_switcher.wezterm")
 | 
				
			||||||
 | 
					            -- set path to zoxide
 | 
				
			||||||
 | 
					            workspace_switcher.zoxide_path = "${pkgs.zoxide}/bin/zoxide"
 | 
				
			||||||
 | 
					            -- keymaps
 | 
				
			||||||
 | 
					            table.insert(config.keys, { key = "s", mods = "CTRL|SHIFT", action = workspace_switcher.switch_workspace() })
 | 
				
			||||||
 | 
					            -- table.insert(config.keys, { key = "t", mods = "CTRL|SHIFT", action = wezterm.action.ShowLauncherArgs({ flags = "FUZZY|WORKSPACES" }) })
 | 
				
			||||||
 | 
					            table.insert(config.keys, { key = "[", mods = "CTRL|SHIFT", action = wezterm.action.SwitchWorkspaceRelative(1) })
 | 
				
			||||||
 | 
					            table.insert(config.keys, { key = "]", mods = "CTRL|SHIFT", action = wezterm.action.SwitchWorkspaceRelative(-1) })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return config
 | 
				
			||||||
          '';
 | 
					          '';
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,6 +77,10 @@
 | 
				
			|||||||
      default = [ ];
 | 
					      default = [ ];
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    hostnames = {
 | 
					    hostnames = {
 | 
				
			||||||
 | 
					      audiobooks = lib.mkOption {
 | 
				
			||||||
 | 
					        type = lib.types.str;
 | 
				
			||||||
 | 
					        description = "Hostname for audiobook server (Audiobookshelf).";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
      files = lib.mkOption {
 | 
					      files = lib.mkOption {
 | 
				
			||||||
        type = lib.types.str;
 | 
					        type = lib.types.str;
 | 
				
			||||||
        description = "Hostname for files server (Filebrowser).";
 | 
					        description = "Hostname for files server (Filebrowser).";
 | 
				
			||||||
@@ -97,6 +101,10 @@
 | 
				
			|||||||
        type = lib.types.str;
 | 
					        type = lib.types.str;
 | 
				
			||||||
        description = "Hostname for document server (paperless-ngx).";
 | 
					        description = "Hostname for document server (paperless-ngx).";
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					      photos = lib.mkOption {
 | 
				
			||||||
 | 
					        type = lib.types.str;
 | 
				
			||||||
 | 
					        description = "Hostname for photo management (Immich).";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
      prometheus = lib.mkOption {
 | 
					      prometheus = lib.mkOption {
 | 
				
			||||||
        type = lib.types.str;
 | 
					        type = lib.types.str;
 | 
				
			||||||
        description = "Hostname for Prometheus server.";
 | 
					        description = "Hostname for Prometheus server.";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -192,7 +192,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      xdg.desktopEntries.aerc = lib.mkIf pkgs.stdenv.isLinux {
 | 
					      xdg.desktopEntries.aerc = lib.mkIf pkgs.stdenv.isLinux {
 | 
				
			||||||
        name = "aerc";
 | 
					        name = "aerc";
 | 
				
			||||||
        exec = "kitty aerc %u";
 | 
					        exec = "${config.home-manager.users.${config.user}.programs.rofi.terminal} aerc %u";
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
      xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
 | 
					      xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
 | 
				
			||||||
        "${
 | 
					        "${
 | 
				
			||||||
@@ -203,7 +203,9 @@
 | 
				
			|||||||
            pkgs.writeShellScript "focus-mail.sh" ''
 | 
					            pkgs.writeShellScript "focus-mail.sh" ''
 | 
				
			||||||
              count=$(ps aux | grep -c aerc)
 | 
					              count=$(ps aux | grep -c aerc)
 | 
				
			||||||
              if [ "$count" -eq 1 ]; then
 | 
					              if [ "$count" -eq 1 ]; then
 | 
				
			||||||
                  i3-msg "exec --no-startup-id kitty --class aerc aerc"
 | 
					                  i3-msg "exec --no-startup-id ${
 | 
				
			||||||
 | 
					                    config.home-manager.users.${config.user}.programs.rofi.terminal
 | 
				
			||||||
 | 
					                  } --class aerc aerc"
 | 
				
			||||||
                  sleep 0.25
 | 
					                  sleep 0.25
 | 
				
			||||||
              fi
 | 
					              fi
 | 
				
			||||||
              i3-msg "[class=aerc] focus"
 | 
					              i3-msg "[class=aerc] focus"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ function TERM_TOGGLE()
 | 
				
			|||||||
    basicterminal:toggle()
 | 
					    basicterminal:toggle()
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local nixpkgs = terminal:new({ cmd = "nix repl '<nixpkgs>'" })
 | 
					local nixpkgs = terminal:new({ cmd = "nix repl --expr 'import <nixpkgs>{}'" })
 | 
				
			||||||
function NIXPKGS_TOGGLE()
 | 
					function NIXPKGS_TOGGLE()
 | 
				
			||||||
    nixpkgs:toggle()
 | 
					    nixpkgs:toggle()
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								modules/common/shell/bash/scripts/jqr.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										23
									
								
								modules/common/shell/bash/scripts/jqr.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Adapted from: https://gist.github.com/reegnz/b9e40993d410b75c2d866441add2cb55
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -z $1 ]] || [[ $1 == "-" ]]; then
 | 
				
			||||||
 | 
					    input=$(mktemp)
 | 
				
			||||||
 | 
					    trap 'rm -f $input' EXIT
 | 
				
			||||||
 | 
					    cat /dev/stdin >"$input"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    input=$1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo '' |
 | 
				
			||||||
 | 
					    fzf --phony \
 | 
				
			||||||
 | 
					        --height 100% \
 | 
				
			||||||
 | 
					        --preview-window='up:80%' \
 | 
				
			||||||
 | 
					        --query '.' \
 | 
				
			||||||
 | 
					        --print-query \
 | 
				
			||||||
 | 
					        --header $'CTRL-O: jq output\nCTRL-Y: copy output\nALT-Y: copy query' \
 | 
				
			||||||
 | 
					        --preview "jq --color-output -r {q} $input" \
 | 
				
			||||||
 | 
					        --bind "ctrl-o:execute(jq -r {q} $input)+clear-query+accept" \
 | 
				
			||||||
 | 
					        --bind "alt-y:execute(echo {q} | pbcopy)" \
 | 
				
			||||||
 | 
					        --bind "ctrl-y:execute(jq -r {q} $input | pbcopy)"
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
set vimfile (fzf)
 | 
					set vimfile (fzf)
 | 
				
			||||||
and set vimfile (echo $vimfile | tr -d '\r')
 | 
					and set vimfile (echo $vimfile | tr -d '\r')
 | 
				
			||||||
and commandline -r "vim $vimfile"
 | 
					and commandline -r "vim \"$vimfile\""
 | 
				
			||||||
and commandline -f execute
 | 
					and commandline -f execute
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,5 +41,16 @@
 | 
				
			|||||||
        FZF_CTRL_T_COMMAND = fzfCommand;
 | 
					        FZF_CTRL_T_COMMAND = fzfCommand;
 | 
				
			||||||
        FZF_DEFAULT_OPTS = "-m --height 50% --border";
 | 
					        FZF_DEFAULT_OPTS = "-m --height 50% --border";
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    home.packages = [
 | 
				
			||||||
 | 
					      (pkgs.writeShellApplication {
 | 
				
			||||||
 | 
					        name = "jqr";
 | 
				
			||||||
 | 
					        runtimeInputs = [
 | 
				
			||||||
 | 
					          pkgs.jq
 | 
				
			||||||
 | 
					          pkgs.fzf
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					        text = builtins.readFile ./bash/scripts/jqr.sh;
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,8 @@
 | 
				
			|||||||
}:
 | 
					}:
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  unfreePackages = [ "gh-copilot" ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  home-manager.users.${config.user} = {
 | 
					  home-manager.users.${config.user} = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    programs.gh = lib.mkIf config.home-manager.users.${config.user}.programs.git.enable {
 | 
					    programs.gh = lib.mkIf config.home-manager.users.${config.user}.programs.git.enable {
 | 
				
			||||||
@@ -15,6 +17,7 @@
 | 
				
			|||||||
      extensions = [
 | 
					      extensions = [
 | 
				
			||||||
        pkgs.gh-collaborators
 | 
					        pkgs.gh-collaborators
 | 
				
			||||||
        pkgs.gh-dash
 | 
					        pkgs.gh-dash
 | 
				
			||||||
 | 
					        pkgs.gh-copilot
 | 
				
			||||||
      ];
 | 
					      ];
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,10 +13,12 @@
 | 
				
			|||||||
        ns = "nix-shell -p";
 | 
					        ns = "nix-shell -p";
 | 
				
			||||||
        nsf = "nix-shell --run fish -p";
 | 
					        nsf = "nix-shell --run fish -p";
 | 
				
			||||||
        nsr = "nix-shell-run";
 | 
					        nsr = "nix-shell-run";
 | 
				
			||||||
        nps = "nix repl '<nixpkgs>'";
 | 
					        nps = "nix repl --expr 'import <nixpkgs>{}'";
 | 
				
			||||||
        nixo = "man configuration.nix";
 | 
					        nixo = "man configuration.nix";
 | 
				
			||||||
        nixh = "man home-configuration.nix";
 | 
					        nixh = "man home-configuration.nix";
 | 
				
			||||||
        nr = "rebuild-nixos";
 | 
					        nr = {
 | 
				
			||||||
 | 
					          function = "rebuild-nixos";
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
        nro = "rebuild-nixos offline";
 | 
					        nro = "rebuild-nixos offline";
 | 
				
			||||||
        hm = "rebuild-home";
 | 
					        hm = "rebuild-home";
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
@@ -43,18 +45,16 @@
 | 
				
			|||||||
        rebuild-nixos = {
 | 
					        rebuild-nixos = {
 | 
				
			||||||
          body = ''
 | 
					          body = ''
 | 
				
			||||||
            if test "$argv[1]" = "offline"
 | 
					            if test "$argv[1]" = "offline"
 | 
				
			||||||
                set option "--option substitute false"
 | 
					                set option "--option substitute false "
 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
            git -C ${config.dotfilesPath} add --intent-to-add --all
 | 
					            git -C ${config.dotfilesPath} add --intent-to-add --all
 | 
				
			||||||
            commandline -r "doas nixos-rebuild switch $option --flake ${config.dotfilesPath}#${config.networking.hostName}"
 | 
					            echo "doas nixos-rebuild switch $option--flake ${config.dotfilesPath}#${config.networking.hostName}"
 | 
				
			||||||
            commandline --function execute
 | 
					 | 
				
			||||||
          '';
 | 
					          '';
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        rebuild-home = {
 | 
					        rebuild-home = {
 | 
				
			||||||
          body = ''
 | 
					          body = ''
 | 
				
			||||||
            git -C ${config.dotfilesPath} add --intent-to-add --all
 | 
					            git -C ${config.dotfilesPath} add --intent-to-add --all
 | 
				
			||||||
            commandline -r "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#${config.networking.hostName}";
 | 
					            echo "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#${config.networking.hostName}";
 | 
				
			||||||
            commandline --function execute
 | 
					 | 
				
			||||||
          '';
 | 
					          '';
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ in
 | 
				
			|||||||
        jo # JSON output
 | 
					        jo # JSON output
 | 
				
			||||||
        jq # JSON manipulation
 | 
					        jq # JSON manipulation
 | 
				
			||||||
        lf # File viewer
 | 
					        lf # File viewer
 | 
				
			||||||
 | 
					        osc # Clipboard over SSH
 | 
				
			||||||
        qrencode # Generate qr codes
 | 
					        qrencode # Generate qr codes
 | 
				
			||||||
        rsync # Copy folders
 | 
					        rsync # Copy folders
 | 
				
			||||||
        ren # Rename files
 | 
					        ren # Rename files
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,11 @@
 | 
				
			|||||||
      let
 | 
					      let
 | 
				
			||||||
        ldap_scheme = "ldaps";
 | 
					        ldap_scheme = "ldaps";
 | 
				
			||||||
        magic_prefix = "take";
 | 
					        magic_prefix = "take";
 | 
				
			||||||
        ldap_port = 636;
 | 
					        ldap_port = 3269;
 | 
				
			||||||
 | 
					        jq_parse = pkgs.writeShellScriptBin "ljq" ''
 | 
				
			||||||
 | 
					          jq --slurp \
 | 
				
			||||||
 | 
					            --raw-input 'split("\n\n")|map(split("\n")|map(select(.[0:1]!="#" and length>0)) |select(length > 0)|map(capture("^(?<key>[^:]*:?): *(?<value>.*)") |if .key[-1:.key|length] == ":" then .key=.key[0:-1]|.value=(.value|@base64d) else . end)| group_by(.key) | map({key:.[0].key,value:(if .|length > 1 then [.[].value] else .[].value end)}) | from_entries)' | jq -r 'del(.[].thumbnailPhoto)'
 | 
				
			||||||
 | 
					        '';
 | 
				
			||||||
        ldap_script = pkgs.writeShellScriptBin "ldap" ''
 | 
					        ldap_script = pkgs.writeShellScriptBin "ldap" ''
 | 
				
			||||||
          if ! [ "$LDAP_HOST" ]; then
 | 
					          if ! [ "$LDAP_HOST" ]; then
 | 
				
			||||||
              echo "No LDAP_HOST specified!"
 | 
					              echo "No LDAP_HOST specified!"
 | 
				
			||||||
@@ -22,13 +26,13 @@
 | 
				
			|||||||
          SEARCH_FILTER="$@"
 | 
					          SEARCH_FILTER="$@"
 | 
				
			||||||
          ldapsearch -LLL \
 | 
					          ldapsearch -LLL \
 | 
				
			||||||
              -B -o ldif-wrap=no \
 | 
					              -B -o ldif-wrap=no \
 | 
				
			||||||
 | 
					              -E pr=5000/prompt \
 | 
				
			||||||
              -H "${ldap_scheme}://''${LDAP_HOST}:${builtins.toString ldap_port}" \
 | 
					              -H "${ldap_scheme}://''${LDAP_HOST}:${builtins.toString ldap_port}" \
 | 
				
			||||||
              -D "${pkgs.lib.toUpper magic_prefix}2\\${pkgs.lib.toLower config.user}" \
 | 
					              -D "${pkgs.lib.toUpper magic_prefix}2\\${pkgs.lib.toLower config.user}" \
 | 
				
			||||||
              -w "$(${pkgs._1password}/bin/op item get T2 --fields label=password)" \
 | 
					              -w "$(${pkgs._1password-cli}/bin/op item get T2 --fields label=password --reveal)" \
 | 
				
			||||||
              -b "dc=''${LDAP_HOST//./,dc=}" \
 | 
					              -b "dc=''${LDAP_HOST//./,dc=}" \
 | 
				
			||||||
              -s "sub" -x "(cn=''${SEARCH_FILTER})" \
 | 
					              -s "sub" -x "(cn=''${SEARCH_FILTER})" \
 | 
				
			||||||
              | jq --slurp \
 | 
					              | ${jq_parse}/bin/ljq
 | 
				
			||||||
                  --raw-input 'split("\n\n")|map(split("\n")|map(select(.[0:1]!="#" and length>0)) |select(length > 0)|map(capture("^(?<key>[^:]*:?): *(?<value>.*)") |if .key[-1:.key|length] == ":" then .key=.key[0:-1]|.value=(.value|@base64d) else . end)| group_by(.key) | map({key:.[0].key,value:(if .|length > 1 then [.[].value] else .[].value end)}) | from_entries)' | jq -r 'del(.[].thumbnailPhoto)'
 | 
					 | 
				
			||||||
        '';
 | 
					        '';
 | 
				
			||||||
        ldapm_script = pkgs.writeShellScriptBin "ldapm" ''
 | 
					        ldapm_script = pkgs.writeShellScriptBin "ldapm" ''
 | 
				
			||||||
          if ! [ "$LDAP_HOST" ]; then
 | 
					          if ! [ "$LDAP_HOST" ]; then
 | 
				
			||||||
@@ -49,6 +53,7 @@
 | 
				
			|||||||
        ldap_script
 | 
					        ldap_script
 | 
				
			||||||
        ldapm_script
 | 
					        ldapm_script
 | 
				
			||||||
        ldapg_script
 | 
					        ldapg_script
 | 
				
			||||||
 | 
					        jq_parse
 | 
				
			||||||
      ];
 | 
					      ];
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,7 +36,7 @@
 | 
				
			|||||||
    homebrew.casks = [ "hammerspoon" ];
 | 
					    homebrew.casks = [ "hammerspoon" ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    system.activationScripts.postUserActivation.text = ''
 | 
					    system.activationScripts.postUserActivation.text = ''
 | 
				
			||||||
      defaults write org.hammerspoon.Hammerspoon MJConfigFile "~/.config/hammerspoon/init.lua"
 | 
					      defaults write org.hammerspoon.Hammerspoon MJConfigFile "${config.homePath}/.config/hammerspoon/init.lua"
 | 
				
			||||||
      sudo killall Dock
 | 
					      sudo killall Dock
 | 
				
			||||||
    '';
 | 
					    '';
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    programs.fish = {
 | 
					    programs.fish = {
 | 
				
			||||||
      shellAbbrs = {
 | 
					      shellAbbrs = {
 | 
				
			||||||
        nr = lib.mkForce "rebuild-darwin";
 | 
					        nr = {
 | 
				
			||||||
 | 
					          function = lib.mkForce "rebuild-darwin";
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
        nro = lib.mkForce "rebuild-darwin offline";
 | 
					        nro = lib.mkForce "rebuild-darwin offline";
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
      functions = {
 | 
					      functions = {
 | 
				
			||||||
@@ -20,15 +22,13 @@
 | 
				
			|||||||
                set option "--option substitute false"
 | 
					                set option "--option substitute false"
 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
            git -C ${config.dotfilesPath} add --intent-to-add --all
 | 
					            git -C ${config.dotfilesPath} add --intent-to-add --all
 | 
				
			||||||
            commandline -r "darwin-rebuild switch $option --flake ${config.dotfilesPath}#lookingglass"
 | 
					            echo "darwin-rebuild switch $option--flake ${config.dotfilesPath}#lookingglass"
 | 
				
			||||||
            commandline --function execute
 | 
					 | 
				
			||||||
          '';
 | 
					          '';
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        rebuild-home = lib.mkForce {
 | 
					        rebuild-home = lib.mkForce {
 | 
				
			||||||
          body = ''
 | 
					          body = ''
 | 
				
			||||||
            git -C ${config.dotfilesPath} add --intent-to-add --all
 | 
					            git -C ${config.dotfilesPath} add --intent-to-add --all
 | 
				
			||||||
            commandline -r "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#lookingglass";
 | 
					            echo "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#lookingglass";
 | 
				
			||||||
            commandline --function execute
 | 
					 | 
				
			||||||
          '';
 | 
					          '';
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@
 | 
				
			|||||||
      "steam-original"
 | 
					      "steam-original"
 | 
				
			||||||
      "steamcmd"
 | 
					      "steamcmd"
 | 
				
			||||||
      "steam-run"
 | 
					      "steam-run"
 | 
				
			||||||
 | 
					      "steam-unwrapped"
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    programs.steam = {
 | 
					    programs.steam = {
 | 
				
			||||||
@@ -27,7 +28,7 @@
 | 
				
			|||||||
    environment.systemPackages = with pkgs; [
 | 
					    environment.systemPackages = with pkgs; [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # Enable terminal interaction
 | 
					      # Enable terminal interaction
 | 
				
			||||||
      steamPackages.steamcmd
 | 
					      steamcmd
 | 
				
			||||||
      steam-tui
 | 
					      steam-tui
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # Overlay with performance monitoring
 | 
					      # Overlay with performance monitoring
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,6 +56,10 @@ in
 | 
				
			|||||||
      # Graphical volume notifications
 | 
					      # Graphical volume notifications
 | 
				
			||||||
      services.volnoti.enable = true;
 | 
					      services.volnoti.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Fix: Volnoti binary not found
 | 
				
			||||||
 | 
					      # Broken by https://github.com/nix-community/home-manager/pull/5725/commits/98bf8de65dc1ed12c6443b18f6f24d36e9c438d6
 | 
				
			||||||
 | 
					      systemd.user.services.volnoti.Service.ExecStart = lib.mkForce "${pkgs.volnoti}/bin/volnoti -v -n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      xsession.windowManager.i3.config = {
 | 
					      xsession.windowManager.i3.config = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Make sure that Volnoti actually starts (home-manager doesn't start
 | 
					        # Make sure that Volnoti actually starts (home-manager doesn't start
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,6 @@
 | 
				
			|||||||
{ config, lib, ... }:
 | 
					{ config, lib, ... }:
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  options = {
 | 
					 | 
				
			||||||
    hostnames.audiobooks = lib.mkOption {
 | 
					 | 
				
			||||||
      type = lib.types.str;
 | 
					 | 
				
			||||||
      description = "Hostname for audiobook server (Audiobookshelf).";
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  config = lib.mkIf config.services.audiobookshelf.enable {
 | 
					  config = lib.mkIf config.services.audiobookshelf.enable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    services.audiobookshelf = {
 | 
					    services.audiobookshelf = {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@
 | 
				
			|||||||
    ./cloudflare.nix
 | 
					    ./cloudflare.nix
 | 
				
			||||||
    ./filebrowser.nix
 | 
					    ./filebrowser.nix
 | 
				
			||||||
    ./identity.nix
 | 
					    ./identity.nix
 | 
				
			||||||
 | 
					    ./immich.nix
 | 
				
			||||||
    ./irc.nix
 | 
					    ./irc.nix
 | 
				
			||||||
    ./gitea-runner.nix
 | 
					    ./gitea-runner.nix
 | 
				
			||||||
    ./gitea.nix
 | 
					    ./gitea.nix
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										42
									
								
								modules/nixos/services/immich.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								modules/nixos/services/immich.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					{ config, lib, ... }:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  config = lib.mkIf config.services.immich.enable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    services.immich = {
 | 
				
			||||||
 | 
					      port = 2283;
 | 
				
			||||||
 | 
					      group = "shared";
 | 
				
			||||||
 | 
					      database.enable = true;
 | 
				
			||||||
 | 
					      redis.enable = true;
 | 
				
			||||||
 | 
					      machine-learning.enable = true;
 | 
				
			||||||
 | 
					      machine-learning.environment = { };
 | 
				
			||||||
 | 
					      mediaLocation = "/data/images";
 | 
				
			||||||
 | 
					      secretsFile = null;
 | 
				
			||||||
 | 
					      settings.server.externalDomain = "https://${config.hostnames.photos}";
 | 
				
			||||||
 | 
					      environment = {
 | 
				
			||||||
 | 
					        IMMICH_ENV = "production";
 | 
				
			||||||
 | 
					        IMMICH_LOG_LEVEL = "log";
 | 
				
			||||||
 | 
					        NO_COLOR = "false";
 | 
				
			||||||
 | 
					        IMMICH_TRUSTED_PROXIES = "127.0.0.1";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    caddy.routes = [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        match = [ { host = [ config.hostnames.photos ]; } ];
 | 
				
			||||||
 | 
					        handle = [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            handler = "reverse_proxy";
 | 
				
			||||||
 | 
					            upstreams = [ { dial = "localhost:${builtins.toString config.services.immich.port}"; } ];
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Configure Cloudflare DNS to point to this machine
 | 
				
			||||||
 | 
					    services.cloudflare-dyndns.domains = [ config.hostnames.photos ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
  config = lib.mkIf config.services.nextcloud.enable {
 | 
					  config = lib.mkIf config.services.nextcloud.enable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    services.nextcloud = {
 | 
					    services.nextcloud = {
 | 
				
			||||||
      package = pkgs.nextcloud29; # Required to specify
 | 
					      package = pkgs.nextcloud30; # Required to specify
 | 
				
			||||||
      configureRedis = true;
 | 
					      configureRedis = true;
 | 
				
			||||||
      datadir = "/data/nextcloud";
 | 
					      datadir = "/data/nextcloud";
 | 
				
			||||||
      database.createLocally = true;
 | 
					      database.createLocally = true;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -91,8 +91,6 @@ in
 | 
				
			|||||||
    services.vmagent = {
 | 
					    services.vmagent = {
 | 
				
			||||||
      package = pkgs-stable.vmagent;
 | 
					      package = pkgs-stable.vmagent;
 | 
				
			||||||
      prometheusConfig = prometheusConfig;
 | 
					      prometheusConfig = prometheusConfig;
 | 
				
			||||||
      # https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5567
 | 
					 | 
				
			||||||
      extraArgs = [ "-promscrape.maxScrapeSize 450000000" ];
 | 
					 | 
				
			||||||
      remoteWrite = {
 | 
					      remoteWrite = {
 | 
				
			||||||
        url = "https://${config.hostnames.prometheus}/api/v1/write";
 | 
					        url = "https://${config.hostnames.prometheus}/api/v1/write";
 | 
				
			||||||
        basicAuthUsername = username;
 | 
					        basicAuthUsername = username;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,7 @@
 | 
				
			|||||||
    ./auto-upgrade.nix
 | 
					    ./auto-upgrade.nix
 | 
				
			||||||
    ./doas.nix
 | 
					    ./doas.nix
 | 
				
			||||||
    ./journald.nix
 | 
					    ./journald.nix
 | 
				
			||||||
 | 
					    ./shared.nix
 | 
				
			||||||
    ./user.nix
 | 
					    ./user.nix
 | 
				
			||||||
    ./timezone.nix
 | 
					    ./timezone.nix
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								modules/nixos/system/shared.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								modules/nixos/system/shared.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					{ config, lib, ... }:
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  config = lib.mkIf config.server {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Create a shared group for many services
 | 
				
			||||||
 | 
					    users.groups.shared = { };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Give the human user access to the shared group
 | 
				
			||||||
 | 
					    users.users.${config.user}.extraGroups = [ config.users.groups.shared.name ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								overlays/osc.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								overlays/osc.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					inputs: _final: prev: {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  osc = prev.buildGoModule {
 | 
				
			||||||
 | 
					    pname = "osc";
 | 
				
			||||||
 | 
					    version = "v0.4.6";
 | 
				
			||||||
 | 
					    src = inputs.osc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    vendorHash = "sha256-POtQWIjPObsfa3YZ1dLZgedZFUcc4HeTWjU20AucoKc=";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ldflags = [
 | 
				
			||||||
 | 
					      "-s"
 | 
				
			||||||
 | 
					      "-w"
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user