diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..077f0a0 --- /dev/null +++ b/flake.lock @@ -0,0 +1,2469 @@ +{ + "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772460678, + "narHash": "sha256-NYaWs8fYJ38IgFld0hGSdT2LEVhrgO8SiRReBjIH7YY=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "5d2cb726b16ee349df443f84b64cff53221b6983", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "host5-home": { + "flake": false, + "locked": { + "lastModified": 1775159078, + "narHash": "sha256-1wraZ5uu10vyVaeC6ry58sKTZie+BX9oQrqrZKe6POY=", + "ref": "refs/heads/main", + "rev": "a52e8674fd20e528d12d1467f2e4be29fad60c12", + "revCount": 9, + "type": "git", + "url": "https://git.atitlan.io/aiolabs/host5-home" + }, + "original": { + "type": "git", + "url": "https://git.atitlan.io/aiolabs/host5-home" + } + }, + "atitlanio-pitch": { + "flake": false, + "locked": { + "lastModified": 1771890974, + "narHash": "sha256-N2QZBEjSuvR7gH57qgYrLT8yVkhPjnZ3b+hbieDEprY=", + "ref": "main", + "rev": "4d44b3c91b6c75e5b3d668f015e7bb1d56536181", + "revCount": 21, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/atitlanio-pitch.git" + }, + "original": { + "ref": "main", + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/atitlanio-pitch.git" + } + }, + "authentik-go": { + "flake": false, + "locked": { + "lastModified": 1778672763, + "narHash": "sha256-K0dzj+GnajGz63Gp+NYyhanjhtDxpzCKpmdIZYMfz/M=", + "owner": "goauthentik", + "repo": "client-go", + "rev": "58f64509446aab6bc2d9b1fe36be19b5f2a3b4a8", + "type": "github" + }, + "original": { + "owner": "goauthentik", + "repo": "client-go", + "type": "github" + } + }, + "authentik-nix": { + "inputs": { + "authentik-go": "authentik-go", + "authentik-src": "authentik-src", + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts_2", + "flake-utils": "flake-utils_3", + "napalm": "napalm", + "nixpkgs": "nixpkgs_4", + "pyproject-build-systems": "pyproject-build-systems", + "pyproject-nix": "pyproject-nix", + "systems": "systems_5", + "uv2nix": "uv2nix" + }, + "locked": { + "lastModified": 1778858849, + "narHash": "sha256-EGnvtleQWfN95o5AwE1vkGVlH/J1uP4LstlW1OHLzSY=", + "owner": "nix-community", + "repo": "authentik-nix", + "rev": "451a9a1d27ca4f7a23145442e0f88ae9eb4e5651", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "authentik-nix", + "type": "github" + } + }, + "authentik-src": { + "flake": false, + "locked": { + "lastModified": 1778615640, + "narHash": "sha256-tTBGwajdtEPuk36va5HgnnqR8sTuSwIt/c48bIinRlA=", + "owner": "goauthentik", + "repo": "authentik", + "rev": "095e2897d52397962d153be2d689cedcdb71906c", + "type": "github" + }, + "original": { + "owner": "goauthentik", + "ref": "version/2026.2.3", + "repo": "authentik", + "type": "github" + } + }, + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1765809053, + "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1776754714, + "narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-schemes": { + "flake": false, + "locked": { + "lastModified": 1696158499, + "narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=", + "owner": "tinted-theming", + "repo": "base16-schemes", + "rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-schemes", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "blobs": { + "flake": false, + "locked": { + "lastModified": 1604995301, + "narHash": "sha256-wcLzgLec6SGJA8fx1OEN1yV/Py5b+U5iyYpksUY/yLw=", + "owner": "simple-nixos-mailserver", + "repo": "blobs", + "rev": "2cccdf1ca48316f2cfd1c9a0017e8de5a7156265", + "type": "gitlab" + }, + "original": { + "owner": "simple-nixos-mailserver", + "repo": "blobs", + "type": "gitlab" + } + }, + "borg-lnbits-module": { + "inputs": { + "nixpkgs": "nixpkgs_5" + }, + "locked": { + "lastModified": 1768478382, + "narHash": "sha256-XYHvpDd0nUB9ZR/nBMdmQp89bGVUoQ9ksajNYFTIAm4=", + "ref": "refs/heads/main", + "rev": "5acf4d0f5a3dc36c37ac49c5544baea1a614f3fd", + "revCount": 1, + "type": "git", + "url": "https://git.atitlan.io/padreug/borg-lnbits-module" + }, + "original": { + "type": "git", + "url": "https://git.atitlan.io/padreug/borg-lnbits-module" + } + }, + "build-system-pkgs": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "lnbits", + "nixpkgs" + ], + "pyproject-nix": [ + "server-deploy", + "lnbits", + "pyproject-nix" + ], + "uv2nix": "uv2nix_2" + }, + "locked": { + "lastModified": 1755484659, + "narHash": "sha256-2FfbqsaHVQd12XFFUAinIMAuGO3853LONmva1gT3vKw=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "9778e87c2361810ff15e287ca5895c9da4a0e900", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, + "build-system-pkgs_2": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "lnbits-dev", + "nixpkgs" + ], + "pyproject-nix": [ + "server-deploy", + "lnbits-dev", + "pyproject-nix" + ], + "uv2nix": "uv2nix_4" + }, + "locked": { + "lastModified": 1755484659, + "narHash": "sha256-2FfbqsaHVQd12XFFUAinIMAuGO3853LONmva1gT3vKw=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "9778e87c2361810ff15e287ca5895c9da4a0e900", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, + "elephant": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1781164160, + "narHash": "sha256-dxo3aPnfaQJt9K/3NhgKfu2Q9B42z4d4Or9Izoug+68=", + "owner": "abenz1267", + "repo": "elephant", + "rev": "3296842820d04d5ec774afc7528492fcbb3c01f2", + "type": "github" + }, + "original": { + "owner": "abenz1267", + "repo": "elephant", + "type": "github" + } + }, + "extra-container": { + "inputs": { + "flake-utils": [ + "nix-bitcoin", + "flake-utils" + ], + "nixpkgs": [ + "nix-bitcoin", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1766155727, + "narHash": "sha256-XGp4HHH6D6ZKiO5RnMzqYJYnZB538EnEflvlTsOKpvo=", + "owner": "erikarvstedt", + "repo": "extra-container", + "rev": "b450bdb24fca1076973c852d87bcb49b8eb5fd49", + "type": "github" + }, + "original": { + "owner": "erikarvstedt", + "ref": "0.14", + "repo": "extra-container", + "type": "github" + } + }, + "fava-module": { + "inputs": { + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1775102379, + "narHash": "sha256-5qO3jtGKhOBCiequ/B7I0pImosLNkpzaPQSIHNSB3ug=", + "ref": "refs/heads/main", + "rev": "49da594fec66178deae11437603416da09eab7d1", + "revCount": 7, + "type": "git", + "url": "https://git.atitlan.io/padreug/fava-module" + }, + "original": { + "type": "git", + "url": "https://git.atitlan.io/padreug/fava-module" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1779670703, + "narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": [ + "server-deploy", + "authentik-nix", + "systems" + ] + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_7" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "server-deploy", + "simple-nixos-mailserver", + "flake-compat" + ], + "gitignore": "gitignore_2", + "nixpkgs": [ + "server-deploy", + "simple-nixos-mailserver", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775585728, + "narHash": "sha256-8Psjt+TWvE4thRKktJsXfR6PA/fWWsZ04DVaY6PUhr4=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "580633fa3fe5fc0379905986543fd7495481913d", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "simple-nixos-mailserver", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "lastModified": 1767737596, + "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "ef02db02bf0ff342734d525b5767814770d85b49", + "type": "github" + }, + "original": { + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "ef02db02bf0ff342734d525b5767814770d85b49", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1782233665, + "narHash": "sha256-h/xOtrByoA/Ak1lWHn0O1lVZz4qWYbwOSLQ8YSwQO0I=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "062581938b4a378a82dfbb294b494808157153a1", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772461003, + "narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772461523, + "narHash": "sha256-mI6A51do+hEUzeJKk9YSWfVHdI/SEEIBi2tp5Whq5mI=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "7d63c04b4a2dd5e59ef943b4b143f46e713df804", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems_2", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1774635470, + "narHash": "sha256-dYVtjeSZgQzNNDmeSwBnp7gH/zOLsI2YTlv7hagY6gs=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "521ece463c4a9d3d128670688a34756805a4328f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "ref": "v0.54.3", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772467975, + "narHash": "sha256-kipyuDBxrZq+beYpZqWzGvFWm4QbayW9agAvi94vDXY=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "5e1c6b9025aaf4d578f3eff7c0eb1f0c197a9507", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, + "hyprland-plugins": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "hyprland-plugins", + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland-plugins", + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1781442805, + "narHash": "sha256-Kt56e6Bq2sfqN8yq1RHsS6z+8QKCZelmhaeQQRtZyqU=", + "owner": "hyprwm", + "repo": "hyprland-plugins", + "rev": "1f90c674d51a1ef83c725cd6d02280b4c969fdf7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-plugins", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772460177, + "narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772459629, + "narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "7615ee388de18239a4ab1400946f3d0e498a8186", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1772462885, + "narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "9af245a69fa6b286b88ddfc340afd288e00a6998", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772459870, + "narHash": "sha256-xxkK2Cvqxpf/4UGcJ/TyCwrvmiNWsKsJfFzHMp2bxis=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "e63f3a79334dec49f8eb1691f66f18115df04085", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772459835, + "narHash": "sha256-978jRz/y/9TKmZb/qD4lEYHCQGHpEXGqy+8X2lFZsak=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "0a692d4a645165eebd65f109146b8861e3a925e7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772463520, + "narHash": "sha256-GIjASzYnV4fK19HnyJKmHyqyxHxIpjusK9foEA4Yo+4=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "4e1933ae5602b350c5b6633f5c932549c9b8aca2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, + "lamassu-next": { + "flake": false, + "locked": { + "lastModified": 1778411114, + "narHash": "sha256-tw2/CLCTNdgX+myc1Fx42ZBBc9WqRZYhW/QmHUUTt04=", + "ref": "main", + "rev": "b147c7e5d705f3e884156d3e68c12f604014d915", + "revCount": 254, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/lamassu-next.git" + }, + "original": { + "ref": "main", + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/lamassu-next.git" + } + }, + "lazyvim": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775153251, + "narHash": "sha256-BpWhi1FMNM0ebr19s6NzbF0W9XkLYdtveYcTTBbpzWE=", + "owner": "pfassina", + "repo": "lazyvim-nix", + "rev": "b7c60dfef340af8f00bcdee256b1d586afdee116", + "type": "github" + }, + "original": { + "owner": "pfassina", + "ref": "v15.15.0", + "repo": "lazyvim-nix", + "type": "github" + } + }, + "lnbits": { + "inputs": { + "build-system-pkgs": "build-system-pkgs", + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_7", + "pyproject-nix": "pyproject-nix_2", + "uv2nix": "uv2nix_3" + }, + "locked": { + "lastModified": 1779443399, + "narHash": "sha256-kY4Nl7FmogoNZuJNIpxlcoAAIRXp+q/Wbn6/LupBSGA=", + "ref": "main", + "rev": "1542fc7da3560966c1916007c6e1d313df566e23", + "revCount": 7159, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/lnbits" + }, + "original": { + "ref": "main", + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/lnbits" + } + }, + "lnbits-dev": { + "inputs": { + "build-system-pkgs": "build-system-pkgs_2", + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_8", + "pyproject-nix": "pyproject-nix_3", + "uv2nix": "uv2nix_5" + }, + "locked": { + "lastModified": 1781132110, + "narHash": "sha256-ABo+buJmSK4/a90azvees0pPQxlubg2M7jzk093zGeI=", + "ref": "dev", + "rev": "2169c1b8c600aabd19400ec1a4f35327eba56623", + "revCount": 7233, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/lnbits" + }, + "original": { + "ref": "dev", + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/lnbits" + } + }, + "napalm": { + "inputs": { + "flake-utils": [ + "server-deploy", + "authentik-nix", + "flake-utils" + ], + "nixpkgs": [ + "server-deploy", + "authentik-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1725806412, + "narHash": "sha256-lGZjkjds0p924QEhm/r0BhAxbHBJE1xMOldB/HmQH04=", + "owner": "willibutz", + "repo": "napalm", + "rev": "b492440d9e64ae20736d3bec5c7715ffcbde83f5", + "type": "github" + }, + "original": { + "owner": "willibutz", + "ref": "avoid-foldl-stack-overflow", + "repo": "napalm", + "type": "github" + } + }, + "nix-bitcoin": { + "inputs": { + "extra-container": "extra-container", + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-25_05": "nixpkgs-25_05", + "nixpkgs-unstable": "nixpkgs-unstable" + }, + "locked": { + "lastModified": 1779253922, + "narHash": "sha256-k5DpYVfyy27ELuEiV+51EfVg7B6vKUW63NWeA6eKGd0=", + "owner": "fort-nix", + "repo": "nix-bitcoin", + "rev": "1496f842477976c085cd96f1837ea12444014088", + "type": "github" + }, + "original": { + "owner": "fort-nix", + "ref": "release", + "repo": "nix-bitcoin", + "type": "github" + } + }, + "nix-bitcoin-aio": { + "flake": false, + "locked": { + "lastModified": 1775330639, + "narHash": "sha256-KD3FHvi3ZuLi2ZVjq0tF6mGXZ39OCRlPP+x45FL97HY=", + "ref": "main", + "rev": "88007a9771bf4b6d17cb45a5df9c7c7e775fcbf9", + "revCount": 2225, + "type": "git", + "url": "https://git.atitlan.io/aiolabs/nix-bitcoin" + }, + "original": { + "ref": "main", + "type": "git", + "url": "https://git.atitlan.io/aiolabs/nix-bitcoin" + } + }, + "nix-bitcoin-castle": { + "flake": false, + "locked": { + "lastModified": 1775330639, + "narHash": "sha256-KD3FHvi3ZuLi2ZVjq0tF6mGXZ39OCRlPP+x45FL97HY=", + "ref": "main", + "rev": "88007a9771bf4b6d17cb45a5df9c7c7e775fcbf9", + "revCount": 2225, + "type": "git", + "url": "https://git.atitlan.io/aiolabs/nix-bitcoin" + }, + "original": { + "ref": "main", + "type": "git", + "url": "https://git.atitlan.io/aiolabs/nix-bitcoin" + } + }, + "nix-colors": { + "inputs": { + "base16-schemes": "base16-schemes", + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1707825078, + "narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=", + "owner": "misterio77", + "repo": "nix-colors", + "rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1", + "type": "github" + }, + "original": { + "owner": "misterio77", + "repo": "nix-colors", + "type": "github" + } + }, + "nixos-hardware": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1782166108, + "narHash": "sha256-/EtnQBcKbsaCAGQ5VRcplrHRkR4ryqyLMpBfkVuG9Xw=", + "owner": "NixOS", + "repo": "nixos-hardware", + "rev": "875776f0252fcb8618bb948640a0d1f7a5b362be", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1767892417, + "narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=", + "rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba", + "type": "tarball", + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" + } + }, + "nixpkgs-25_05": { + "locked": { + "lastModified": 1767313136, + "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1697935651, + "narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1777168982, + "narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1735563628, + "narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1778869304, + "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_2": { + "locked": { + "lastModified": 1782175435, + "narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "89570f24e97e614aa34aa9ab1c927b6578a43775", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1778869304, + "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1780749050, + "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a799d3e3886da994fa307f817a6bc705ae538eeb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1776877367, + "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1781577229, + "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1781577229, + "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1778869304, + "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1778869304, + "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1751274312, + "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1751274312, + "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1778869304, + "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nsecbunkerd-dev": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1780506443, + "narHash": "sha256-WCHH+atgmaqIZyLddju4aaXyBBnu3VzV9kpd5GDqPAQ=", + "ref": "dev", + "rev": "cb8dd0ceb0589c6cb8447e80dee3231551c6903d", + "revCount": 141, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/nsecbunkerd" + }, + "original": { + "ref": "dev", + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/nsecbunkerd" + } + }, + "nur": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1782329170, + "narHash": "sha256-gMGtMjj2fdRhCBxPu765r+yaEYjnSjz1Vf0NbefYH9A=", + "owner": "nix-community", + "repo": "NUR", + "rev": "b1433937566696d75abf1b7c7c6b57b93182df6a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nur_2": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1780281641, + "narHash": "sha256-M/+hUKoKbHXpV0xGVfELbN1Ds1aoe3pL5p5/t46YhVo=", + "owner": "nix-community", + "repo": "NUR", + "rev": "30f9ae2f04174de63ba8bcf3580ca90843b28a01", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772024342, + "narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "pyproject-build-systems": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "authentik-nix", + "nixpkgs" + ], + "pyproject-nix": [ + "server-deploy", + "authentik-nix", + "pyproject-nix" + ], + "uv2nix": [ + "server-deploy", + "authentik-nix", + "uv2nix" + ] + }, + "locked": { + "lastModified": 1776659114, + "narHash": "sha256-qapCOQmR++yZSY43dzrp3wCrkOTLpod+ONtJWBk6iKU=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "ffaa2161dd5d63e0e94591f86b54fc239660fb2e", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, + "pyproject-nix": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "authentik-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776715674, + "narHash": "sha256-Gs1VnEkCkkRZxJQAC/Dhz0Jbfi22mFXChbtNg9w/Ybg=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "69f57f27e52a87c54e28138a75ec741cd46663c9", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, + "pyproject-nix_2": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "lnbits", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754923840, + "narHash": "sha256-QSKpYg+Ts9HYF155ltlj40iBex39c05cpOF8gjoE2EM=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "023cd4be230eacae52635be09eef100c37ef78da", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, + "pyproject-nix_3": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "lnbits-dev", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754923840, + "narHash": "sha256-QSKpYg+Ts9HYF155ltlj40iBex39c05cpOF8gjoE2EM=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "023cd4be230eacae52635be09eef100c37ef78da", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, + "quartz-module": { + "inputs": { + "nixpkgs": "nixpkgs_10" + }, + "locked": { + "lastModified": 1768476672, + "narHash": "sha256-daZTNUCIlOv1DT2HapI2eGhMpzzRWl0QgTNygXayVSc=", + "ref": "refs/heads/main", + "rev": "dc94f9d5bc66fd379891fa29ad6e6f8215af87b7", + "revCount": 1, + "type": "git", + "url": "https://git.atitlan.io/padreug/quartz-module" + }, + "original": { + "type": "git", + "url": "https://git.atitlan.io/padreug/quartz-module" + } + }, + "root": { + "inputs": { + "elephant": "elephant", + "home-manager": "home-manager", + "hyprland": "hyprland", + "hyprland-plugins": "hyprland-plugins", + "lazyvim": "lazyvim", + "nix-bitcoin": "nix-bitcoin", + "nix-colors": "nix-colors", + "nixos-hardware": "nixos-hardware", + "nixpkgs": "nixpkgs_2", + "nixpkgs-stable": "nixpkgs-stable", + "nixpkgs-unstable": "nixpkgs-unstable_2", + "nur": "nur", + "server-deploy": "server-deploy", + "sops-nix": "sops-nix_2", + "stylix": "stylix", + "walker": "walker" + } + }, + "server-deploy": { + "inputs": { + "host5-home": "host5-home", + "atitlanio-pitch": "atitlanio-pitch", + "authentik-nix": "authentik-nix", + "borg-lnbits-module": "borg-lnbits-module", + "fava-module": "fava-module", + "lamassu-next": "lamassu-next", + "lnbits": "lnbits", + "lnbits-dev": "lnbits-dev", + "nix-bitcoin-aio": "nix-bitcoin-aio", + "nix-bitcoin-castle": "nix-bitcoin-castle", + "nixpkgs": "nixpkgs_9", + "nsecbunkerd-dev": "nsecbunkerd-dev", + "quartz-module": "quartz-module", + "shockwallet-vue": "shockwallet-vue", + "simple-nixos-mailserver": "simple-nixos-mailserver", + "sops-nix": "sops-nix", + "static-site-chateaudufaune": "static-site-chateaudufaune", + "static-site-earthwalker": "static-site-earthwalker", + "webapp": "webapp", + "webapp-dev": "webapp-dev", + "webapp-module": "webapp-module" + }, + "locked": { + "lastModified": 1781556930, + "narHash": "sha256-JHojnnZEG67thMjxdVyKdDV06hi/KLGWgzABos4gH9U=", + "ref": "refs/heads/main", + "rev": "f03f59296445e992f6016079063531be3501a4ae", + "revCount": 234, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/server-deploy" + }, + "original": { + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/server-deploy" + } + }, + "shockwallet-vue": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775908611, + "narHash": "sha256-Qp0cy4yZ/bGXOd+p1ct2cb24NGdJN92I5NtgCoVd2B0=", + "ref": "main", + "rev": "4733235b5adc4e889ee3ba2b89a11d5f158d2fd3", + "revCount": 67, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/shockwallet-vue.git" + }, + "original": { + "ref": "main", + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/shockwallet-vue.git" + } + }, + "simple-nixos-mailserver": { + "inputs": { + "blobs": "blobs", + "flake-compat": "flake-compat_3", + "git-hooks": "git-hooks", + "nixpkgs": [ + "server-deploy", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777287493, + "narHash": "sha256-Fj7S91TuZm6+DG/v6SFme/p+sWrYMQICGX6yQ5KD43Q=", + "owner": "simple-nixos-mailserver", + "repo": "nixos-mailserver", + "rev": "e33fbde199eaad513ef5d0746db19d5878150232", + "type": "gitlab" + }, + "original": { + "owner": "simple-nixos-mailserver", + "repo": "nixos-mailserver", + "type": "gitlab" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777944972, + "narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c591bf665727040c6cc5cb409079acb22dcce33c", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "sops-nix_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1782165805, + "narHash": "sha256-478kKQBvK6SYTOdN2h9jhKJv94nbXRbFMfuL1WshErg=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "56b24064fdcaedca53553b1a6d607fd23b613a24", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "static-site-chateaudufaune": { + "flake": false, + "locked": { + "lastModified": 1781551400, + "narHash": "sha256-422kr5mGH5cRXY+OmvzUhmss8QnElMDx+qFa3On3698=", + "ref": "main", + "rev": "998336a3667382386dde54b61188bf4c348cb7ef", + "revCount": 56, + "type": "git", + "url": "https://git.atitlan.io/padreug/chateaudufaune.ariege.io" + }, + "original": { + "ref": "main", + "type": "git", + "url": "https://git.atitlan.io/padreug/chateaudufaune.ariege.io" + } + }, + "static-site-earthwalker": { + "flake": false, + "locked": { + "lastModified": 1779908093, + "narHash": "sha256-Mr4m1swdGXBxI76ZhEL9H85SUToY4E8VcngSdn/GZZ4=", + "ref": "main", + "rev": "074ea23b1bd3d23e0a2770973f1c5a211f51f70c", + "revCount": 25, + "type": "git", + "url": "https://git.atitlan.io/padreug/nr-interior-design" + }, + "original": { + "ref": "main", + "type": "git", + "url": "https://git.atitlan.io/padreug/nr-interior-design" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-parts": "flake-parts_3", + "gnome-shell": "gnome-shell", + "nixpkgs": [ + "nixpkgs" + ], + "nur": "nur_2", + "systems": "systems_9", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1782310521, + "narHash": "sha256-vsxcG0i8e4EPfdnhMTKMVzD1825H2vG1BBslzom9wxg=", + "owner": "danth", + "repo": "stylix", + "rev": "e084d011e7ee9302aceaaf6c1fc28a9ace09e16a", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_10": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_9": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1777806186, + "narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1778379944, + "narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "fe0203a198690e71a5ff11e08812a4673de3678d", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1778378178, + "narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "9cd816033ff969415b190722cddf134e78a5665f", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, + "uv2nix": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "authentik-nix", + "nixpkgs" + ], + "pyproject-nix": [ + "server-deploy", + "authentik-nix", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1778664018, + "narHash": "sha256-ogNyNANNLo0SMFevIeUpbTMOL9uUDu/hXvp7JlOYbwQ=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "b48abe99ef639cd100c224898529370e5d935294", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } + }, + "uv2nix_2": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "lnbits", + "build-system-pkgs", + "nixpkgs" + ], + "pyproject-nix": [ + "server-deploy", + "lnbits", + "build-system-pkgs", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1755210905, + "narHash": "sha256-WnoFEk79ysjL85TNP7bvImzhxvQw9B6uNtnLd4oJntw=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "87bcba013ef304bbfd67c8e8a257aee634ed5a4c", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } + }, + "uv2nix_3": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "lnbits", + "nixpkgs" + ], + "pyproject-nix": [ + "server-deploy", + "lnbits", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1755485731, + "narHash": "sha256-k8kxwVs8Oze6q/jAaRa3RvZbb50I/K0b5uptlsh0HXI=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "bebbd80bf56110fcd20b425589814af28f1939eb", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } + }, + "uv2nix_4": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "lnbits-dev", + "build-system-pkgs", + "nixpkgs" + ], + "pyproject-nix": [ + "server-deploy", + "lnbits-dev", + "build-system-pkgs", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1755210905, + "narHash": "sha256-WnoFEk79ysjL85TNP7bvImzhxvQw9B6uNtnLd4oJntw=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "87bcba013ef304bbfd67c8e8a257aee634ed5a4c", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } + }, + "uv2nix_5": { + "inputs": { + "nixpkgs": [ + "server-deploy", + "lnbits-dev", + "nixpkgs" + ], + "pyproject-nix": [ + "server-deploy", + "lnbits-dev", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1755485731, + "narHash": "sha256-k8kxwVs8Oze6q/jAaRa3RvZbb50I/K0b5uptlsh0HXI=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "bebbd80bf56110fcd20b425589814af28f1939eb", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } + }, + "walker": { + "inputs": { + "elephant": [ + "elephant" + ], + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_10" + }, + "locked": { + "lastModified": 1781164128, + "narHash": "sha256-xPcYrHdDXWykIi5/XXkLvliBArRnfzvs+atB9El1qhI=", + "owner": "abenz1267", + "repo": "walker", + "rev": "aa1e4b7d59237e8c43dde58636bae476f23d9bfb", + "type": "github" + }, + "original": { + "owner": "abenz1267", + "repo": "walker", + "type": "github" + } + }, + "webapp": { + "flake": false, + "locked": { + "lastModified": 1781029106, + "narHash": "sha256-GWJkXW7NYxoBznoW9TybVyg/p2iugxQGQxVoACf8XY8=", + "ref": "main", + "rev": "5541d2bc7a4fbc813d522041426842cebbb3db37", + "revCount": 893, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/webapp.git" + }, + "original": { + "ref": "main", + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/webapp.git" + } + }, + "webapp-dev": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1781554333, + "narHash": "sha256-EHalRswjwCTqo0CJsWA472rl1ch8uqtXue9B2/rq4aw=", + "ref": "dev", + "rev": "d4d088fb503de0ec6ed0fa57b790c86d9469d430", + "revCount": 946, + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/webapp.git" + }, + "original": { + "ref": "dev", + "type": "git", + "url": "ssh://forgejo@git.atitlan.io/aiolabs/webapp.git" + } + }, + "webapp-module": { + "inputs": { + "nixpkgs": "nixpkgs_12" + }, + "locked": { + "lastModified": 1781104385, + "narHash": "sha256-WpB2qaZjgiEUAoEtjC/45nEKoN9VuWJ73lBYnF84fNw=", + "ref": "refs/heads/main", + "rev": "8d3c43b16032dccfd46d232abde1dea772e5244f", + "revCount": 17, + "type": "git", + "url": "https://git.atitlan.io/aiolabs/webapp-module" + }, + "original": { + "type": "git", + "url": "https://git.atitlan.io/aiolabs/webapp-module" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772476586, + "narHash": "sha256-N/ZwsRLULLpBP5ecvAUzNq8E/CgLRwPwSrHyY3xB5KM=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "eb6c02a2ead882f3474f3d7f2fbe966b64ed5110", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..edbf68d --- /dev/null +++ b/flake.nix @@ -0,0 +1,575 @@ +{ + description = "Omnixient - NixOS configuration for modern development"; + + inputs = { + # Nixpkgs + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-24.05"; + + # True bleeding-edge nixpkgs-unstable channel. omni's primary + # `nixpkgs` is nixos-unstable (tested unstable); this is the + # untested channel used by lib/overlays.nix to pin a handful of + # fast-moving packages (claude-code, gh, direnv). Unused until + # mkSystem is wired in (phase D). + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + + # Unified server-deploy flake. Source of truth for which refs + # ship to which host; dev-env walks this flake's inputs to + # auto-populate the project list (see modules/dev-env/config.nix) + # and resolves --override-input targets for `dev-deploy --local`. + # Named after the forgejo repo so DEVENV_DEPLOY_FLAKE_INPUT and + # the on-disk clone directory match. + server-deploy.url = "git+ssh://forgejo@git.atitlan.io/aiolabs/server-deploy"; + + # Home manager + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # nixos-hardware — per-model NixOS modules (kernel pins, GPU/CPU + # defaults, firmware tooling) for common hardware. bohm is a + # Framework Desktop (AMD Ryzen AI Max 300 series), so we import + # `nixosModules.framework-desktop-amd-ai-max-300-series` in + # hosts/omni/default.nix. gizmo is a Framework Laptop 12, but + # runs Arch — if it ever migrates to NixOS, the matching module + # is `nixosModules.framework-12-13th-gen-intel`. + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + + # Hyprland + # Pinned to v0.54.3 — v0.55.0 (rev 70fd412) crashes on `togglegroup` + # teardown: CGroup::destroy() throws an uncaught std::out_of_range. + # Remove the tag to track latest once the upstream group regression is fixed. + hyprland = { + url = "github:hyprwm/Hyprland/v0.54.3"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # Hyprland plugins + hyprland-plugins = { + url = "github:hyprwm/hyprland-plugins"; + inputs.hyprland.follows = "hyprland"; + }; + + # Nix colors for automatic color scheme generation + nix-colors = { + url = "github:misterio77/nix-colors"; + }; + + # Stylix for theming + stylix = { + url = "github:danth/stylix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # NUR for additional packages + nur.url = "github:nix-community/NUR"; + + # Walker app launcher + Elephant backend + elephant = { + url = "github:abenz1267/elephant"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + walker = { + url = "github:abenz1267/walker"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.elephant.follows = "elephant"; + }; + + # sops-nix — declarative secrets via age-encrypted YAML files. + # Decryption happens at activation time on the target host; secret + # values are exposed to services as files under /run/secrets/. + # The omni host's age key lives at + # ~/.config/sops/age/keys.txt (same `admin` recipient as + # ~/dev/deploy/server-deploy/.sops.yaml). See .sops.yaml + + # modules/secrets.nix for wiring. + sops-nix = { + url = "github:Mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # LazyVim packaged as a home-manager module. Tracks LazyVim + # releases upstream and pins every plugin via the nix store + # ("dev mode" symlinks) so there is no runtime download. We + # pin to a specific tag rather than tracking `main` so a + # broken upstream release can never silently break a fresh + # install. Bump intentionally on each LazyVim release. + lazyvim = { + url = "github:pfassina/lazyvim-nix/v15.15.0"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # nix-bitcoin — hardened Bitcoin/Lightning node modules, consumed by + # the default-disabled bitcoin pack. Follows our nixpkgs for a single + # package set; nix-bitcoin pins its own nixpkgs upstream for tested + # builds, so if a service fails to build once the pack is enabled, + # consider dropping this `follows`. + nix-bitcoin = { + url = "github:fort-nix/nix-bitcoin/release"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = + { + self, + nixpkgs, + home-manager, + ... + }@inputs: + let + system = "x86_64-linux"; + settings = import ./settings.nix; + + # Overlays applied uniformly to every host built via mkSystem. + # Combines the lib/overlays.nix nixpkgs-unstable pins with the + # nur overlay omni already used. The neovim-nightly-overlay + # was dropped because it cascade-rebuilds every neovim plugin + # from source (cache miss on cache.nixos.org), which surfaced + # broken upstream tests (fzf-lua screenshot test) and balloons + # build time. LazyVim is provided declaratively via the + # `lazyvim` flake input (a home-manager module) — see + # home.nix `programs.lazyvim` — so we don't need a system + # neovim with the full plugin set baked in. + overlays = (import ./lib/overlays.nix { inherit inputs; }) ++ [ + inputs.nur.overlays.default + ]; + + # Uniform host constructor. See lib/mksystem.nix for the shape. + mkSystem = import ./lib/mksystem.nix { inherit nixpkgs overlays inputs; }; + + # pkgs used for devShells, packages, and apps outputs below. + # The nixosConfigurations get their own pkgs via mksystem's + # `{ nixpkgs.overlays = overlays; }` module injection. + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + inherit overlays; + }; + + # Interactive regtest dev VM (`nix run .#regtest`). Shares the node + # config with the CI test (tests/regtest-node.nix); the interactive + # layer (SSH, operator login, helpers) is tests/regtest-interactive.nix. + regtestVm = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs settings; }; + modules = [ + { nixpkgs.hostPlatform = system; } + { nixpkgs.config.allowUnfree = true; } + # qemu-vm.nix provides `system.build.vm` plus the virtualisation.* + # options (cores/memorySize/graphics/forwardPorts) that the node + # and interactive modules set. The nixosTest framework imports it + # automatically; a plain nixosSystem must do so explicitly. + ( + { modulesPath, ... }: + { + imports = [ (modulesPath + "/virtualisation/qemu-vm.nix") ]; + } + ) + inputs.nix-bitcoin.nixosModules.default + ./tests/regtest-node.nix + ./tests/regtest-interactive.nix + ]; + }; + + # `nix run .#regtest` — boot the VM headless, drop into an operator + # SSH shell, tear the VM down on exit. Ephemeral disk in a tmp file. + regtestRunner = pkgs.writeShellApplication { + name = "regtest"; + runtimeInputs = with pkgs; [ + sshpass + openssh + coreutils + ]; + text = '' + vm_script=${regtestVm.config.system.build.vm}/bin/run-regtest-vm + img=$(mktemp -u --suffix=.qcow2) + log=$(mktemp) + export NIX_DISK_IMAGE="$img" + ssh_opts=(-p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR) + + cleanup() { + if [ -n "''${vm_pid:-}" ]; then kill "$vm_pid" 2>/dev/null || true; fi + rm -f "$img" "$log" + } + trap cleanup EXIT INT TERM + + echo "🥾 booting regtest VM (headless) — first boot generates node secrets + mines 110 blocks…" + "$vm_script" >"$log" 2>&1 & + vm_pid=$! + + echo "⏳ waiting for SSH on localhost:2222…" + ready= + for _ in $(seq 1 120); do + if ! kill -0 "$vm_pid" 2>/dev/null; then + echo "❌ VM exited early; last log lines:"; tail -n 20 "$log"; exit 1 + fi + if sshpass -p password ssh "''${ssh_opts[@]}" -o ConnectTimeout=2 operator@localhost true 2>/dev/null; then + ready=1; break + fi + sleep 2 + done + if [ "$ready" != 1 ]; then + echo "❌ SSH never came up; last log lines:"; tail -n 20 "$log"; exit 1 + fi + + echo "✅ connected — run 'regtest-fund' to set up a channel; 'exit' to shut down." + sshpass -p password ssh "''${ssh_opts[@]}" operator@localhost || true + ''; + }; + in + { + # NixOS configurations. + nixosConfigurations = { + # Main dev box. Uses the mksystem convention (hosts/omni/ + + # users/user/home-manager.nix shims — see commit dc9d70b). + # + # modules = [ ... ] is the escape hatch for host-specific + # home-manager options that mksystem doesn't expose directly, + # like sharedModules for nix-colors integration. + omni = mkSystem "omni" { + inherit system; + user = settings.user; + devEnv = true; + extraSpecialArgs = { inherit settings; }; + extraHmArgs = { inherit settings; }; + modules = [ + { + home-manager.sharedModules = [ + inputs.nix-colors.homeManagerModules.default + inputs.lazyvim.homeManagerModules.default + inputs.walker.homeManagerModules.default + ]; + } + ]; + }; + + # Copy-me template host (hosts/example/). Kept as a real, + # build-checked target so the template can't silently rot — its + # placeholder hardware-configuration.nix uses by-label devices + # that won't match real hardware, so don't `switch` to it. Adopters + # copy hosts/example → hosts/ and rename this block. See + # hosts/example/default.nix and docs/getting-started.md. + example = mkSystem "example" { + inherit system; + user = settings.user; + extraSpecialArgs = { inherit settings; }; + extraHmArgs = { inherit settings; }; + modules = [ + { + home-manager.sharedModules = [ + inputs.nix-colors.homeManagerModules.default + inputs.lazyvim.homeManagerModules.default + inputs.walker.homeManagerModules.default + ]; + } + ]; + }; + + # ISO image for live USB/DVD. This is a variant rather than a + # normal host, so it stays as a direct nixosSystem call — we + # don't force every variant through mksystem. It reuses + # omni's home.nix but under a "nixos" user that only exists + # in the ISO context. + omni-iso = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs; + settings = settings // { + user = "nixos"; + }; + currentSystemName = "omni-iso"; + currentSystemUser = "nixos"; + }; + modules = [ + { nixpkgs.hostPlatform = system; } + { nixpkgs.overlays = overlays; } + { nixpkgs.config.allowUnfree = true; } + ./iso.nix + home-manager.nixosModules.home-manager + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { + inherit inputs; + settings = settings // { + user = "nixos"; + }; + currentSystemName = "omni-iso"; + currentSystemUser = "nixos"; + }; + users.nixos = import ./home.nix; + sharedModules = [ + inputs.nix-colors.homeManagerModules.default + inputs.lazyvim.homeManagerModules.default + inputs.walker.homeManagerModules.default + ]; + }; + } + ]; + }; + }; + + # Reusable packs as importable NixOS modules (Misterio77-style, + # framework-free). A second host (gizmo) and third parties consume + # the same definitions with different subsets. The lnbits / aiolabs + # / bitcoin packs are standalone-importable — usable on a non-omni + # NixOS without enabling omni core. + nixosModules = { + lnbits = import ./modules/packs/lnbits.nix; + aiolabs = import ./modules/packs/aiolabs.nix; + bitcoin = import ./modules/packs/bitcoin.nix; + media = import ./modules/packs/media.nix; + development = import ./modules/packs/development.nix; + gaming = import ./modules/packs/gaming.nix; + office = import ./modules/packs/office.nix; + containers = import ./modules/packs/containers.nix; + }; + + # Flake checks — run by `nix flake check`. Lightweight targets + # that exercise the dev-env module schema end-to-end without + # loading the full omni system. Each check renders a small + # file (JSON or bash), so they build in a second or two even + # without a binary cache. See modules/dev-env/tests/smoke.nix + # for what is exercised. + checks.${system} = + let + devEnvSmoke = import ./modules/dev-env/tests/smoke.nix { + inherit nixpkgs; + home-manager = inputs.home-manager; + }; + in + { + dev-env-projects-json = devEnvSmoke.config.environment.etc."dev-env/projects.json".source; + dev-env-config-sh = devEnvSmoke.config.environment.etc."dev-env/config.sh".source; + dev-env-tmux-sessions = devEnvSmoke.config.environment.etc."dev-env/tmux-sessions.json".source; + + # Headless VM boot test — pass/fail signal for autonomous refactor + # runs in ~/nixos-refactor/. See tests/refactor-smoke.nix. + refactor-smoke = import ./tests/refactor-smoke.nix { + inherit nixpkgs system; + }; + + # NixOS-native Lightning regtest suite (aiolabs/omnixient#27): + # bitcoind(regtest) + Core Lightning + LND in one VM, driving a + # real fund → open-channel → pay → settle flow. See + # tests/regtest-core.nix. + regtest-core = import ./tests/regtest-core.nix { + inherit nixpkgs system; + nix-bitcoin = inputs.nix-bitcoin; + }; + }; + + # Development shells + devShells.${system} = { + default = pkgs.mkShell { + packages = with pkgs; [ + # Development tools + git + # neovim (configured via home-manager) + ripgrep + fd + bat + eza + fzf + zoxide + starship + lazygit + gh + + # Language servers and formatters + nil # Nix LSP + nixfmt + statix + deadnix + + # Build tools + gnumake + gcc + nodejs + python3 + rustc + cargo + go + ]; + + shellHook = '' + echo "🚀 Welcome to Omnixient development environment!" + echo "" + echo "Available commands:" + echo " omni-rebuild - Rebuild system configuration" + echo " omni-update - Update flake inputs" + echo " omni-clean - Garbage collect nix store" + echo "" + + # Setup aliases + alias omni-rebuild="sudo nixos-rebuild switch --flake .#omni" + alias omni-update="nix flake update" + alias omni-clean="nix-collect-garbage -d" + + # Initialize starship prompt + eval "$(starship init bash)" + ''; + }; + + # Python development + python = pkgs.mkShell { + packages = with pkgs; [ + python3 + python3Packages.pip + python3Packages.virtualenv + python3Packages.ipython + python3Packages.black + python3Packages.pylint + python3Packages.pytest + ruff + ]; + }; + + # Node.js development + node = pkgs.mkShell { + packages = with pkgs; [ + nodejs + pnpm + yarn + typescript + eslint + prettier + ]; + }; + + # Rust development + rust = pkgs.mkShell { + packages = with pkgs; [ + rustc + cargo + rustfmt + rust-analyzer + clippy + ]; + }; + }; + + # Packages that can be built + packages.${system} = { + # Omnixient scripts as packages + omni-scripts = pkgs.callPackage ./packages/scripts.nix { }; + + # Plymouth theme package + plymouth-theme-omni = pkgs.callPackage ./packages/plymouth-theme.nix { }; + + # ISO image + iso = self.nixosConfigurations.omni-iso.config.system.build.isoImage; + + # Interactive regtest dev VM run-script (booted by `nix run .#regtest`). + regtest-vm = regtestVm.config.system.build.vm; + + # Default package points to ISO + default = self.packages.${system}.iso; + }; + + # Apps that can be run + apps.${system} = { + # Interactive Lightning regtest dev VM — boots the stack headless + # and drops you into an operator SSH shell. See docs/regtest.md. + regtest = { + type = "app"; + program = "${regtestRunner}/bin/regtest"; + }; + + # Installer + installer = { + type = "app"; + program = "${pkgs.writeShellScriptBin "omni-install" '' + #!/usr/bin/env bash + set -e + + echo "🚀 Omnixient NixOS Installer" + echo "========================" + echo "" + + # Check if running on NixOS + if [ ! -f /etc/nixos/configuration.nix ]; then + echo "Error: This installer must be run on a NixOS system" + exit 1 + fi + + echo "This will install Omnixient configuration to your NixOS system." + read -p "Continue? (y/n) " -n 1 -r + echo + + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + exit 1 + fi + + # Backup existing configuration + echo "📦 Backing up existing configuration..." + sudo cp -r /etc/nixos /etc/nixos.backup.$(date +%Y%m%d-%H%M%S) + + # Copy new configuration + echo "📝 Installing Omnixient configuration..." + sudo cp -r ${self}/* /etc/nixos/ + + # Initialize flake + echo "🔧 Initializing flake..." + cd /etc/nixos + sudo git init + sudo git add -A + + # Rebuild + echo "🏗️ Rebuilding system..." + sudo nixos-rebuild switch --flake /etc/nixos#omni + + echo "" + echo "✅ Installation complete!" + echo "🎉 Welcome to Omnixient!" + ''}/bin/omni-install"; + }; + + # ISO builder + build-iso = { + type = "app"; + program = "${pkgs.writeShellScriptBin "omni-build-iso" '' + #!/usr/bin/env bash + set -e + + echo "🏗️ Building Omnixient ISO Image" + echo "============================" + echo "" + + echo "📦 Building ISO image..." + echo " This may take a while depending on your system..." + echo "" + + # Build the ISO + nix build .#iso + + # Check if build was successful + if [ -L "./result" ]; then + iso_path=$(readlink -f ./result) + iso_file=$(find "$iso_path" -name "*.iso" | head -1) + + if [ -n "$iso_file" ]; then + iso_size=$(du -h "$iso_file" | cut -f1) + echo "" + echo "✅ ISO build complete!" + echo "📁 Location: $iso_file" + echo "📏 Size: $iso_size" + echo "" + echo "🚀 You can now:" + echo " • Flash to USB: dd if='$iso_file' of=/dev/sdX bs=4M status=progress" + echo " • Burn to DVD: Use your favorite burning software" + echo " • Test in VM: qemu-system-x86_64 -cdrom '$iso_file' -m 4G -enable-kvm" + echo "" + else + echo "❌ ISO file not found in build result" + exit 1 + fi + else + echo "❌ Build failed - result symlink not found" + exit 1 + fi + ''}/bin/omni-build-iso"; + }; + }; + }; +} diff --git a/settings.nix b/settings.nix new file mode 100644 index 0000000..bafb06b --- /dev/null +++ b/settings.nix @@ -0,0 +1,39 @@ +# Omnixient User Settings +# +# This is the ONE file every adopter edits to make Omnixient their own. +# Everything machine- or person-specific is funnelled through here and +# threaded into the modules — you shouldn't need to hunt through the tree. +# +# (Your hardware scan is the only other per-machine piece: see +# hosts//hardware-configuration.nix and docs/getting-started.md.) +{ + # --- Identity --- + user = "padreug"; # your Linux username (the home dir, primary account) + gitName = "Padreug"; # git author name + gitEmail = "padreug@aiolabs.dev"; # git author email + hostName = "omni"; # machine hostname == hosts// directory + # Find yours with `timedatectl list-timezones`, or the "TZ identifier" + # column at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + timeZone = "Europe/Paris"; # e.g. "America/New_York", "Asia/Tokyo" + + # --- Desktop theme --- + # One of modules/themes/*.nix (without the .nix). Switch at runtime with + # `omni-theme `; this is just the default a fresh build boots with. + theme = "gruvbox"; + + # --- SSH public keys --- + # Authorized to log into this machine's `user` account over SSH. Paste + # the contents of your ~/.ssh/id_ed25519.pub (or .pub of choice). Empty + # list = no key-based SSH logins. + sshKeys = [ + # "ssh-ed25519 AAAAC3Nza... you@host" + ]; + + # --- NixOS state version --- + # CRITICAL: set this to the NixOS release you FIRST installed with, and + # then NEVER change it. It pins stateful defaults (databases, etc.) for + # backwards compatibility; bumping it on an existing system can silently + # break data. It is NOT your current NixOS version. On a fresh install, + # use the release you installed from (e.g. "24.05", "24.11", "25.05"). + stateVersion = "24.05"; +}