diff --git a/README.md b/README.md index 90191cd..6977516 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,6 @@ Now, lets add a file to define your home. Create a file at `homes/x86_64-linux/< dircolors = { enable = true; enableZshIntegration = true; - enableNushellIntegration = true; }; }; diff --git a/catpuccin.omp.json b/catpuccin.omp.json new file mode 100644 index 0000000..2accb92 --- /dev/null +++ b/catpuccin.omp.json @@ -0,0 +1,70 @@ +{ + "palette": { + "os": "#ACB0BE", + "pink": "#F5BDE6", + "lavender": "#B7BDF8", + "blue": "#8AADF4", + "wight": "#FFFFFF", + "text": "#494D64" + }, + "blocks": [ + { + "alignment": "left", + "segments": [ + { + "background": "p:blue", + "foreground": "p:wight", + "powerline_symbol": "\ue0b4", + "leading_diamond": "\ue0b6", + "style": "diamond", + "template": "{{.Icon}} ", + "type": "os" + }, + { + "background": "p:blue", + "foreground": "p:text", + "powerline_symbol": "\ue0b4", + "style": "diamond", + "template": "{{ .UserName }}@{{ .HostName }}", + "type": "session" + }, + { + "background": "p:pink", + "foreground": "p:text", + "properties": { + "folder_icon": "..\ue5fe..", + "home_icon": "~", + "style": "agnoster_short" + }, + "powerline_symbol": "\ue0b4", + "style": "powerline", + "template": " {{ .Path }}", + "type": "path" + }, + { + "background": "p:lavender", + "foreground": "p:text", + "style": "powerline", + "properties": { + "branch_icon": "\ue725 ", + "cherry_pick_icon": "\ue29b ", + "commit_icon": "\uf417 ", + "fetch_status": false, + "fetch_upstream_icon": false, + "merge_icon": "\ue727 ", + "no_commits_icon": "\uf0c3 ", + "rebase_icon": "\ue728 ", + "revert_icon": "\uf0e2 ", + "tag_icon": "\uf412 " + }, + "powerline_symbol": "\ue0b4", + "template": " {{ .HEAD }}", + "type": "git" + } + ], + "type": "prompt" + } + ], + "final_space": true, + "version": 2 +} diff --git a/flake.lock b/flake.lock index df5784e..d5860a1 100644 --- a/flake.lock +++ b/flake.lock @@ -2,7 +2,7 @@ "nodes": { "agenix": { "inputs": { - "darwin": "darwin", + "darwin": [], "home-manager": "home-manager", "nixpkgs": [ "nixpkgs" @@ -10,11 +10,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1747575206, - "narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=", + "lastModified": 1736955230, + "narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=", "owner": "ryantm", "repo": "agenix", - "rev": "4835b1dc898959d8547a871ef484930675cb47f1", + "rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c", "type": "github" }, "original": { @@ -45,6 +45,28 @@ "type": "github" } }, + "anyrun": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_3" + }, + "locked": { + "lastModified": 1735301051, + "narHash": "sha256-jU88Q9tP4vuvWYGQcmOdFwI9e2uMPVYJHbXdiklIH9o=", + "owner": "anyrun-org", + "repo": "anyrun", + "rev": "06017e753c8886d5296768dca80745ee09402a2d", + "type": "github" + }, + "original": { + "owner": "anyrun-org", + "repo": "anyrun", + "type": "github" + } + }, "aquamarine": { "inputs": { "hyprutils": [ @@ -65,11 +87,11 @@ ] }, "locked": { - "lastModified": 1745357003, - "narHash": "sha256-jYwzQkv1r7HN/4qrAuKp+NR4YYNp2xDrOX5O9YVqkWo=", + "lastModified": 1742213273, + "narHash": "sha256-0l0vDb4anfsBu1rOs94bC73Hub+xEivgBAo6QXl2MmU=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "a19cf76ee1a15c1c12083fa372747ce46387289f", + "rev": "484b732195cc53f4536ce4bd59a5c6402b1e7ccf", "type": "github" }, "original": { @@ -118,17 +140,20 @@ "inputs": { "nixpkgs": "nixpkgs_2", "pnpm2nix": "pnpm2nix", - "systems": "systems_5" + "systems": "systems_6" }, "locked": { - "lastModified": 1745808560, - "narHash": "sha256-tCEg7taEdCsZ+p1A3/nHbIsGR8ucuRW4HQ+d80VS508=", - "path": "/home/zoey/dev/web", - "type": "path" + "lastModified": 1738787341, + "narHash": "sha256-7vUNfr5hmqwisNSLAWBnrXaJROFvGqDKGmhfQnwuYS4=", + "ref": "refs/heads/main", + "rev": "2b2a2ff39f372a2c31e0af343a5bca8759e79492", + "revCount": 28, + "type": "git", + "url": "https://git.zoeys.cloud/zoey/web" }, "original": { - "path": "/home/zoey/dev/web", - "type": "path" + "type": "git", + "url": "https://git.zoeys.cloud/zoey/web" } }, "catppuccin": { @@ -136,11 +161,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1747519437, - "narHash": "sha256-uv9Wv59d+mckS2CkorOF484wp2G5TNGijdoBZ5RkAk0=", + "lastModified": 1742599566, + "narHash": "sha256-xr6ntmiUPXSh9o9mJ7og9vxALMQs1EQhIhWUAO2D1M0=", "owner": "catppuccin", "repo": "nix", - "rev": "3ba714046ee32373e88166e6e9474d6ae6a5b734", + "rev": "5e303e8d7e251868fa79f83bbda69da90aa62402", "type": "github" }, "original": { @@ -149,29 +174,6 @@ "type": "github" } }, - "chaotic": { - "inputs": { - "fenix": "fenix", - "flake-schemas": "flake-schemas", - "home-manager": "home-manager_2", - "jovian": "jovian", - "nixpkgs": "nixpkgs_5" - }, - "locked": { - "lastModified": 1747576719, - "narHash": "sha256-a+QFKYlsgWZyuCdFqjRout85mZjrtkq1dmMEPuB50qA=", - "owner": "chaotic-cx", - "repo": "nyx", - "rev": "a5137694fccd0a36dc0c578c3ce9b02278a8f198", - "type": "github" - }, - "original": { - "owner": "chaotic-cx", - "ref": "nyxpkgs-unstable", - "repo": "nyx", - "type": "github" - } - }, "crane": { "locked": { "lastModified": 1733016477, @@ -208,25 +210,18 @@ "type": "github" } }, - "darwin": { - "inputs": { - "nixpkgs": [ - "agenix", - "nixpkgs" - ] - }, + "crane_3": { "locked": { - "lastModified": 1744478979, - "narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=", - "owner": "lnl7", - "repo": "nix-darwin", - "rev": "43975d782b418ebf4969e9ccba82466728c2851b", + "lastModified": 1731098351, + "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=", + "owner": "ipetkov", + "repo": "crane", + "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28", "type": "github" }, "original": { - "owner": "lnl7", - "ref": "master", - "repo": "nix-darwin", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, @@ -237,11 +232,11 @@ ] }, "locked": { - "lastModified": 1747274630, - "narHash": "sha256-87RJwXbfOHyzTB9LYagAQ6vOZhszCvd8Gvudu+gf3qo=", + "lastModified": 1741786315, + "narHash": "sha256-VT65AE2syHVj6v/DGB496bqBnu1PXrrzwlw07/Zpllc=", "owner": "nix-community", "repo": "disko", - "rev": "ec7c109a4f794fce09aad87239eab7f66540b888", + "rev": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de", "type": "github" }, "original": { @@ -252,15 +247,15 @@ }, "emacs-overlay": { "inputs": { - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_5", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1747618089, - "narHash": "sha256-mbzwxQlxNamIMErEfwWRZ+ECmlQzxJ4eJvOM6/fxV5s=", + "lastModified": 1742663916, + "narHash": "sha256-aLpOsp8iyuHFO6fZfCn0xkssHCYyrPqANVJWx86yb1g=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "1b2bc802bbac29f4695e39fbf982944c0999b45d", + "rev": "19f9488c8af0a0572e610d1bbf9d9b833df57524", "type": "github" }, "original": { @@ -269,28 +264,6 @@ "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": [ - "chaotic", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1747392669, - "narHash": "sha256-zky3+lndxKRu98PAwVK8kXPdg+Q1NVAhaI7YGrboKYA=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c3c27e603b0d9b5aac8a16236586696338856fbb", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -358,11 +331,11 @@ "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -374,11 +347,11 @@ "flake-compat_5": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -452,6 +425,27 @@ } }, "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "anyrun", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, @@ -469,7 +463,7 @@ "type": "github" } }, - "flake-parts_2": { + "flake-parts_3": { "inputs": { "nixpkgs-lib": [ "lanzaboote", @@ -490,7 +484,7 @@ "type": "github" } }, - "flake-parts_3": { + "flake-parts_4": { "inputs": { "nixpkgs-lib": [ "neovim-nightly-overlay", @@ -498,11 +492,11 @@ ] }, "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", "type": "github" }, "original": { @@ -511,7 +505,7 @@ "type": "github" } }, - "flake-parts_4": { + "flake-parts_5": { "inputs": { "nixpkgs-lib": [ "neovim-nightly-overlay", @@ -520,11 +514,11 @@ ] }, "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", "type": "github" }, "original": { @@ -532,34 +526,16 @@ "type": "indirect" } }, - "flake-parts_5": { + "flake-parts_6": { "inputs": { "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_6": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" - }, - "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", "type": "github" }, "original": { @@ -570,7 +546,7 @@ }, "flake-parts_7": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_4" + "nixpkgs-lib": "nixpkgs-lib_3" }, "locked": { "lastModified": 1727826117, @@ -588,7 +564,7 @@ }, "flake-parts_8": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_5" + "nixpkgs-lib": "nixpkgs-lib_4" }, "locked": { "lastModified": 1719994518, @@ -604,23 +580,9 @@ "type": "github" } }, - "flake-schemas": { - "locked": { - "lastModified": 1721999734, - "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", - "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", - "revCount": 75, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" - } - }, "flake-utils": { "inputs": { - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1701680307, @@ -637,25 +599,6 @@ } }, "flake-utils-plus": { - "inputs": { - "flake-utils": "flake-utils_7" - }, - "locked": { - "lastModified": 1715533576, - "narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=", - "owner": "gytis-ivaskevicius", - "repo": "flake-utils-plus", - "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", - "type": "github" - }, - "original": { - "owner": "gytis-ivaskevicius", - "repo": "flake-utils-plus", - "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", - "type": "github" - } - }, - "flake-utils-plus_2": { "inputs": { "flake-utils": "flake-utils_8" }, @@ -674,9 +617,28 @@ "type": "github" } }, + "flake-utils-plus_2": { + "inputs": { + "flake-utils": "flake-utils_9" + }, + "locked": { + "lastModified": 1715533576, + "narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", + "type": "github" + }, + "original": { + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", + "type": "github" + } + }, "flake-utils_2": { "inputs": { - "systems": "systems_4" + "systems": "systems_5" }, "locked": { "lastModified": 1701680307, @@ -694,7 +656,7 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_6" + "systems": "systems_7" }, "locked": { "lastModified": 1731533236, @@ -712,7 +674,7 @@ }, "flake-utils_4": { "inputs": { - "systems": "systems_10" + "systems": "systems_11" }, "locked": { "lastModified": 1710146030, @@ -730,7 +692,7 @@ }, "flake-utils_5": { "inputs": { - "systems": "systems_11" + "systems": "systems_12" }, "locked": { "lastModified": 1726560853, @@ -748,7 +710,25 @@ }, "flake-utils_6": { "inputs": { - "systems": "systems_12" + "systems": "systems_13" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "inputs": { + "systems": "systems_14" }, "locked": { "lastModified": 1701680307, @@ -764,9 +744,9 @@ "type": "github" } }, - "flake-utils_7": { + "flake-utils_8": { "inputs": { - "systems": "systems_16" + "systems": "systems_18" }, "locked": { "lastModified": 1694529238, @@ -782,9 +762,9 @@ "type": "github" } }, - "flake-utils_8": { + "flake-utils_9": { "inputs": { - "systems": "systems_17" + "systems": "systems_19" }, "locked": { "lastModified": 1694529238, @@ -825,11 +805,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1747426608, - "narHash": "sha256-ygRFvCVdVEAU95tH2EMMacYH/T42tC3mtDkt5lBJT9U=", + "lastModified": 1742589311, + "narHash": "sha256-YCAEmOPDSHVKygFov2zOg3Fkb060SRgjiGi4P7y9+kc=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "b1af4a597f359491f4b3197a845b39ec86db475a", + "rev": "747c43ffa0047aa2ef550aa361ba63f4060a85ba", "type": "github" }, "original": { @@ -839,46 +819,20 @@ } }, "git-hooks": { - "inputs": { - "flake-compat": [ - "mailserver", - "flake-compat" - ], - "gitignore": "gitignore_3", - "nixpkgs": [ - "mailserver", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "git-hooks_2": { "inputs": { "flake-compat": "flake-compat_6", - "gitignore": "gitignore_4", + "gitignore": "gitignore_3", "nixpkgs": [ "neovim-nightly-overlay", "nixpkgs" ] }, "locked": { - "lastModified": 1747372754, - "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "lastModified": 1742300892, + "narHash": "sha256-QmF0proyjXI9YyZO9GZmc7/uEu5KVwCtcdLsKSoxPAI=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "rev": "ea26a82dda75bee6783baca6894040c8e6599728", "type": "github" }, "original": { @@ -932,28 +886,6 @@ } }, "gitignore_3": { - "inputs": { - "nixpkgs": [ - "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" - } - }, - "gitignore_4": { "inputs": { "nixpkgs": [ "neovim-nightly-overlay", @@ -977,18 +909,18 @@ }, "hercules-ci-effects": { "inputs": { - "flake-parts": "flake-parts_4", + "flake-parts": "flake-parts_5", "nixpkgs": [ "neovim-nightly-overlay", "nixpkgs" ] }, "locked": { - "lastModified": 1747284884, - "narHash": "sha256-lTSKhRrassMcJ1ZsuUVunyl/F04vvCKY80HB/4rvvm4=", + "lastModified": 1742014779, + "narHash": "sha256-I6fG1zrfdLFcp/imGZElig0BJO3YU0QEXLgvwWoOpJ8=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "7168f6002a6b48a9b6151e1e97e974a0722ecfdc", + "rev": "524637ef84c177661690b924bf64a1ce18072a2c", "type": "github" }, "original": { @@ -1005,11 +937,11 @@ ] }, "locked": { - "lastModified": 1745494811, - "narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=", + "lastModified": 1703113217, + "narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=", "owner": "nix-community", "repo": "home-manager", - "rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be", + "rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1", "type": "github" }, "original": { @@ -1021,57 +953,15 @@ "home-manager_2": { "inputs": { "nixpkgs": [ - "chaotic", "nixpkgs" ] }, "locked": { - "lastModified": 1747439237, - "narHash": "sha256-5rCGrnkglKKj4cav1U3HC+SIUNJh08pqOK4spQv9RjA=", + "lastModified": 1742670145, + "narHash": "sha256-xQ2F9f+ICAGBp/nNv3ddD2U4ZvzuLOci0u/5lyMXPvk=", "owner": "nix-community", "repo": "home-manager", - "rev": "ae755329092c87369b9e9a1510a8cf1ce2b1c708", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_3": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1747565775, - "narHash": "sha256-B6jmKHUEX1jxxcdoYHl7RVaeohtAVup8o3nuVkzkloA=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "97118a310eb8e13bc1b9b12d67267e55b7bee6c8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_4": { - "inputs": { - "nixpkgs": [ - "zen-browser", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1743604125, - "narHash": "sha256-ZD61DNbsBt1mQbinAaaEqKaJk2RFo9R/j+eYWeGMx7A=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "180fd43eea296e62ae68e079fcf56aba268b9a1a", + "rev": "63e77d09a133ac641a0c204e7cfb0c97e133706d", "type": "github" }, "original": { @@ -1096,11 +986,11 @@ ] }, "locked": { - "lastModified": 1745948457, - "narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=", + "lastModified": 1742215578, + "narHash": "sha256-zfs71PXVVPEe56WEyNi2TJQPs0wabU4WAlq0XV7GcdE=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "ac903e80b33ba6a88df83d02232483d99f327573", + "rev": "2fd36421c21aa87e2fe3bee11067540ae612f719", "type": "github" }, "original": { @@ -1125,11 +1015,11 @@ ] }, "locked": { - "lastModified": 1745015490, - "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", + "lastModified": 1739049071, + "narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "60754910946b4e2dc1377b967b7156cb989c5873", + "rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73", "type": "github" }, "original": { @@ -1147,14 +1037,14 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_7" + "systems": "systems_8" }, "locked": { - "lastModified": 1747052241, - "narHash": "sha256-X979gxgClu/MnL0vcBaKDkpFIWg2KhOZfAI8BFlNsEM=", + "lastModified": 1742397293, + "narHash": "sha256-WVREToubLhIlogCoNJzo+HdatLKkEushwStDU1uyRnc=", "owner": "hyprwm", "repo": "hypridle", - "rev": "ecf2a3649dfb2e8a45aa63757ed571f1bfedb320", + "rev": "71e875e49e583c7b8b1364b55dfe494375c4e3ea", "type": "github" }, "original": { @@ -1177,15 +1067,15 @@ "nixpkgs" ], "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_8", + "systems": "systems_9", "xdph": "xdph" }, "locked": { - "lastModified": 1747610850, - "narHash": "sha256-eGOtDlq3h+r/X/j4oSNo6cmQlt67TVolgUJMnGKTRt4=", + "lastModified": 1742664841, + "narHash": "sha256-+ENSZyoLdLIdHg/A49osnJq8tcsljCTDjGUXK9E7Eqo=", "ref": "refs/heads/main", - "rev": "eb3b38d40baca5c05ddbc1507b3d3f02a0ccb164", - "revCount": 6127, + "rev": "6ab5a0befb45e90eb45b8d6582e68d13147297dc", + "revCount": 5919, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -1233,11 +1123,11 @@ ] }, "locked": { - "lastModified": 1743714874, - "narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=", + "lastModified": 1738422629, + "narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2", + "rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed", "type": "github" }, "original": { @@ -1301,11 +1191,11 @@ ] }, "locked": { - "lastModified": 1745951494, - "narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=", + "lastModified": 1739048983, + "narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e", + "rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8", "type": "github" }, "original": { @@ -1359,11 +1249,11 @@ ] }, "locked": { - "lastModified": 1746655412, - "narHash": "sha256-kVQ0bHVtX6baYxRWWIh4u3LNJZb9Zcm2xBeDPOGz5BY=", + "lastModified": 1741191527, + "narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "557241780c179cf7ef224df392f8e67dab6cef83", + "rev": "72df3861f1197e41b078faa3e38eedd60e00018d", "type": "github" }, "original": { @@ -1409,11 +1299,11 @@ ] }, "locked": { - "lastModified": 1746635225, - "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", + "lastModified": 1741534688, + "narHash": "sha256-EV3945SnjOCuRVbGRghsWx/9D89FyshnSO1Q6/TuQ14=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", + "rev": "dd1f720cbc2dbb3c71167c9598045dd3261d27b3", "type": "github" }, "original": { @@ -1472,37 +1362,15 @@ "type": "github" } }, - "jovian": { - "inputs": { - "nix-github-actions": "nix-github-actions", - "nixpkgs": [ - "chaotic", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1747466853, - "narHash": "sha256-/evYltwuF8Kz1odgocWnguh/8VQV1i76VB4yMTU9m7k=", - "owner": "Jovian-Experiments", - "repo": "Jovian-NixOS", - "rev": "0ba1a34fa6d995fe433109f0ad66de8d5613d46e", - "type": "github" - }, - "original": { - "owner": "Jovian-Experiments", - "repo": "Jovian-NixOS", - "type": "github" - } - }, "kb-gui": { "inputs": { "crane": "crane", - "flake-parts": "flake-parts", + "flake-parts": "flake-parts_2", "nixpkgs": [ "nixpkgs" ], "rust-overlay": "rust-overlay", - "systems": "systems_9", + "systems": "systems_10", "treefmt-nix": "treefmt-nix" }, "locked": { @@ -1523,7 +1391,7 @@ "inputs": { "crane": "crane_2", "flake-compat": "flake-compat_3", - "flake-parts": "flake-parts_2", + "flake-parts": "flake-parts_3", "flake-utils": "flake-utils_4", "nixpkgs": [ "nixpkgs" @@ -1549,8 +1417,8 @@ "lexical": { "inputs": { "flake-parts": "flake-parts_8", - "nixpkgs": "nixpkgs_22", - "systems": "systems_21" + "nixpkgs": "nixpkgs_18", + "systems": "systems_22" }, "locked": { "lastModified": 1727126932, @@ -1605,16 +1473,15 @@ "inputs": { "blobs": "blobs", "flake-compat": "flake-compat_4", - "git-hooks": "git-hooks", - "nixpkgs": "nixpkgs_9", + "nixpkgs": "nixpkgs_8", "nixpkgs-24_11": "nixpkgs-24_11" }, "locked": { - "lastModified": 1747320434, - "narHash": "sha256-wOW99SCOovRlX5y8+W1cRrS3mEN1QA0XTHMRfr3NMB8=", + "lastModified": 1742413977, + "narHash": "sha256-NkhM9GVu3HL+MiXtGD0TjuPCQ4GFVJPBZ8KyI2cFDGU=", "owner": "simple-nixos-mailserver", "repo": "nixos-mailserver", - "rev": "433520257af7170824ab6e567d49b8e305e776e9", + "rev": "b4fbffe79c00f19be94b86b4144ff67541613659", "type": "gitlab" }, "original": { @@ -1623,22 +1490,43 @@ "type": "gitlab" } }, + "mc-honeypot": { + "inputs": { + "crane": "crane_3", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1732194526, + "narHash": "sha256-qgPm10THq0V3yc26TXU0RO2LFLAH3qpWKAbm9SNU66Q=", + "owner": "Duckulus", + "repo": "mc-honeypot", + "rev": "f0611215c6cea398736bbb2af4b5ad38c77d5c47", + "type": "github" + }, + "original": { + "owner": "Duckulus", + "repo": "mc-honeypot", + "type": "github" + } + }, "neovim-nightly-overlay": { "inputs": { "flake-compat": "flake-compat_5", - "flake-parts": "flake-parts_3", - "git-hooks": "git-hooks_2", + "flake-parts": "flake-parts_4", + "git-hooks": "git-hooks", "hercules-ci-effects": "hercules-ci-effects", "neovim-src": "neovim-src", - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_9", "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1747554936, - "narHash": "sha256-LBFEVTt3JISA/HDHznJanvlNvKllNfILr1nfI8KZmVM=", + "lastModified": 1742576680, + "narHash": "sha256-A9Yo0HZyANBdplEAVpY72Ml4EV32MCgk6Hlacz0/0Ak=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "5a732bf3edb47767a25c3b05436e4c21f91edf91", + "rev": "e0208ec30864247b6614e08051151a649044e93c", "type": "github" }, "original": { @@ -1650,11 +1538,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1747523215, - "narHash": "sha256-55RIMak4EwDaLdNTkM+4d3LjC90wlkNRaaG8DupK3AM=", + "lastModified": 1742426477, + "narHash": "sha256-MLlU8s/lVKHfYcl9g8Q4nOl3BVWc627fVII58qtL9d8=", "owner": "neovim", "repo": "neovim", - "rev": "5661f74ab2a6ef0c497ef2ea49bc58ea89b6ab6b", + "rev": "175c09bd660d0cea62288e74cea925a9b15bee55", "type": "github" }, "original": { @@ -1663,138 +1551,6 @@ "type": "github" } }, - "niri": { - "inputs": { - "niri-stable": "niri-stable", - "niri-unstable": "niri-unstable", - "nixpkgs": "nixpkgs_11", - "nixpkgs-stable": "nixpkgs-stable_4", - "xwayland-satellite-stable": "xwayland-satellite-stable", - "xwayland-satellite-unstable": "xwayland-satellite-unstable" - }, - "locked": { - "lastModified": 1747600015, - "narHash": "sha256-ztNwDGru5Z/wu5I5SgkU03cx3Vz9gwLeFwcmlzeDwiA=", - "owner": "sodiboo", - "repo": "niri-flake", - "rev": "1db4f11c1d3e30e29ef87162a6137bccbcf8e18f", - "type": "github" - }, - "original": { - "owner": "sodiboo", - "repo": "niri-flake", - "type": "github" - } - }, - "niri-src": { - "inputs": { - "nix-filter": "nix-filter", - "nixpkgs": [ - "nixpkgs" - ], - "rust-overlay": "rust-overlay_3" - }, - "locked": { - "lastModified": 1747486745, - "narHash": "sha256-ngQ+iTHmBJkEbsjYfCWTJdV8gHhOCTkV8K0at6Y+YHI=", - "owner": "YaLTeR", - "repo": "niri", - "rev": "ae89cb6017668f3a81ccd92461cbbc70ab8377d0", - "type": "github" - }, - "original": { - "owner": "YaLTeR", - "repo": "niri", - "type": "github" - } - }, - "niri-stable": { - "flake": false, - "locked": { - "lastModified": 1740117926, - "narHash": "sha256-mTTHA0RAaQcdYe+9A3Jx77cmmyLFHmRoZdd8RpWa+m8=", - "owner": "YaLTeR", - "repo": "niri", - "rev": "b94a5db8790339cf9134873d8b490be69e02ac71", - "type": "github" - }, - "original": { - "owner": "YaLTeR", - "ref": "v25.02", - "repo": "niri", - "type": "github" - } - }, - "niri-unstable": { - "flake": false, - "locked": { - "lastModified": 1747486745, - "narHash": "sha256-ngQ+iTHmBJkEbsjYfCWTJdV8gHhOCTkV8K0at6Y+YHI=", - "owner": "YaLTeR", - "repo": "niri", - "rev": "ae89cb6017668f3a81ccd92461cbbc70ab8377d0", - "type": "github" - }, - "original": { - "owner": "YaLTeR", - "repo": "niri", - "type": "github" - } - }, - "nix-filter": { - "locked": { - "lastModified": 1731533336, - "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", - "owner": "numtide", - "repo": "nix-filter", - "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "nix-filter", - "type": "github" - } - }, - "nix-gaming": { - "inputs": { - "flake-parts": "flake-parts_5", - "nixpkgs": "nixpkgs_12" - }, - "locked": { - "lastModified": 1746818569, - "narHash": "sha256-kFuLmXX/3zVCz0wlyN8ZfXdt3Ri/cOOqXYgDKwVi0lk=", - "path": "/home/zoey/dev/nix-gaming", - "type": "path" - }, - "original": { - "path": "/home/zoey/dev/nix-gaming", - "type": "path" - } - }, - "nix-github-actions": { - "inputs": { - "nixpkgs": [ - "chaotic", - "jovian", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1729697500, - "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", - "owner": "zhaofengli", - "repo": "nix-github-actions", - "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", - "type": "github" - }, - "original": { - "owner": "zhaofengli", - "ref": "matrix-name", - "repo": "nix-github-actions", - "type": "github" - } - }, "nixlib": { "locked": { "lastModified": 1736643958, @@ -1833,11 +1589,11 @@ }, "nixos-stable": { "locked": { - "lastModified": 1747485343, - "narHash": "sha256-YbsZyuRE1tobO9sv0PUwg81QryYo3L1F3R3rF9bcG38=", + "lastModified": 1742512142, + "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9b5ac7ad45298d58640540d0323ca217f32a6762", + "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", "type": "github" }, "original": { @@ -1849,11 +1605,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", + "lastModified": 1742422364, + "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", + "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", "type": "github" }, "original": { @@ -1863,18 +1619,17 @@ }, "nixpkgs-24_11": { "locked": { - "lastModified": 1747209494, - "narHash": "sha256-fLise+ys+bpyjuUUkbwqo5W/UyIELvRz9lPBPoB0fbM=", + "lastModified": 1734083684, + "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5d736263df906c5da72ab0f372427814de2f52f8", + "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84", "type": "github" }, "original": { - "owner": "NixOS", + "id": "nixpkgs", "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" + "type": "indirect" } }, "nixpkgs-lib": { @@ -1891,11 +1646,11 @@ }, "nixpkgs-lib_2": { "locked": { - "lastModified": 1743296961, - "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=", + "lastModified": 1740877520, + "narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa", + "rev": "147dee35aab2193b174e4c0868bd80ead5ce755c", "type": "github" }, "original": { @@ -1905,21 +1660,6 @@ } }, "nixpkgs-lib_3": { - "locked": { - "lastModified": 1743296961, - "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs-lib_4": { "locked": { "lastModified": 1727825735, "narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=", @@ -1931,7 +1671,7 @@ "url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz" } }, - "nixpkgs-lib_5": { + "nixpkgs-lib_4": { "locked": { "lastModified": 1719876945, "narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=", @@ -1945,11 +1685,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1747485343, - "narHash": "sha256-YbsZyuRE1tobO9sv0PUwg81QryYo3L1F3R3rF9bcG38=", + "lastModified": 1742512142, + "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9b5ac7ad45298d58640540d0323ca217f32a6762", + "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", "type": "github" }, "original": { @@ -1991,22 +1731,6 @@ "type": "github" } }, - "nixpkgs-stable_4": { - "locked": { - "lastModified": 1747485343, - "narHash": "sha256-YbsZyuRE1tobO9sv0PUwg81QryYo3L1F3R3rF9bcG38=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9b5ac7ad45298d58640540d0323ca217f32a6762", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-unstable": { "locked": { "lastModified": 1741865919, @@ -2025,27 +1749,27 @@ }, "nixpkgs_10": { "locked": { - "lastModified": 1747426788, - "narHash": "sha256-N4cp0asTsJCnRMFZ/k19V9akkxb7J/opG+K+jU57JGc=", - "owner": "NixOS", + "lastModified": 1742422364, + "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "12a55407652e04dcf2309436eb06fef0d3713ef3", + "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_11": { "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", + "lastModified": 1720031269, + "narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", "type": "github" }, "original": { @@ -2056,38 +1780,6 @@ } }, "nixpkgs_12": { - "locked": { - "lastModified": 1746269363, - "narHash": "sha256-Q0lKWway9OmZnkDTpAoAE9VLXHOHqCqdJ3N0tkSM99g=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b6aef6c3553f849e1e6c08f1bcd3061df2b69fc4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { "locked": { "lastModified": 1702151865, "narHash": "sha256-9VAt19t6yQa7pHZLDbil/QctAgVsA66DLnzdRGqDisg=", @@ -2103,7 +1795,7 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_13": { "locked": { "lastModified": 1736189585, "narHash": "sha256-GBC2LIBk9BuJR4HXfjuNlIWeY15U6jFvaqc7PeToGLw=", @@ -2119,7 +1811,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_14": { "locked": { "lastModified": 1712883908, "narHash": "sha256-icE1IJE9fHcbDfJ0+qWoDdcBXUoZCcIJxME4lMHwvSM=", @@ -2135,13 +1827,13 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_15": { "locked": { - "lastModified": 1744536153, - "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", + "lastModified": 1736320768, + "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", + "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", "type": "github" }, "original": { @@ -2151,23 +1843,7 @@ "type": "github" } }, - "nixpkgs_18": { - "locked": { - "lastModified": 1744868846, - "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { + "nixpkgs_16": { "locked": { "lastModified": 1740547748, "narHash": "sha256-Ly2fBL1LscV+KyCqPRufUBuiw+zmWrlJzpWOWbahplg=", @@ -2183,6 +1859,36 @@ "type": "github" } }, + "nixpkgs_17": { + "locked": { + "lastModified": 1742288794, + "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1719931832, + "narHash": "sha256-0LD+KePCKKEb4CcPsTBOwf019wDtZJanjoKm1S8q3Do=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0aeab749216e4c073cece5d34bc01b79e717c3e0", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1712883908, @@ -2199,52 +1905,6 @@ "type": "github" } }, - "nixpkgs_20": { - "locked": { - "lastModified": 1738142207, - "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9d3ae807ebd2981d593cddd0080856873139aa40", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_21": { - "locked": { - "lastModified": 1743448293, - "narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_22": { - "locked": { - "lastModified": 1719931832, - "narHash": "sha256-0LD+KePCKKEb4CcPsTBOwf019wDtZJanjoKm1S8q3Do=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0aeab749216e4c073cece5d34bc01b79e717c3e0", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, "nixpkgs_3": { "locked": { "lastModified": 1702151865, @@ -2263,11 +1923,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1744463964, - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "lastModified": 1742288794, + "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", + "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42", "type": "github" }, "original": { @@ -2279,11 +1939,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1747327360, - "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", + "lastModified": 1742422364, + "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46", + "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", "type": "github" }, "original": { @@ -2294,22 +1954,6 @@ } }, "nixpkgs_6": { - "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { "locked": { "lastModified": 1728538411, "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", @@ -2325,7 +1969,7 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_7": { "locked": { "lastModified": 1731890469, "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", @@ -2341,22 +1985,56 @@ "type": "github" } }, - "nixpkgs_9": { + "nixpkgs_8": { "locked": { - "lastModified": 1747179050, - "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=", + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1742395137, + "narHash": "sha256-WWNNjCSzQCtATpCFEijm81NNG1xqlLMVbIzXAiZysbs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2a725d40de138714db4872dc7405d86457aa17ad", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, + "opnix": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1733770284, + "narHash": "sha256-cZha5DPsmr1H007pn/95t2wIktEUSepjmLm0RL/bu50=", + "owner": "brizzbuzz", + "repo": "opnix", + "rev": "4696993a9ef5f37f7d75b8aa64db0053c85eaa10", + "type": "github" + }, + "original": { + "owner": "brizzbuzz", + "repo": "opnix", + "type": "github" + } + }, "pnpm2nix": { "inputs": { "flake-utils": "flake-utils_2", @@ -2378,8 +2056,8 @@ }, "pnpm2nix_2": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_14" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1706694632, @@ -2397,7 +2075,7 @@ }, "posting": { "inputs": { - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_13", "utils": "utils" }, "locked": { @@ -2424,11 +2102,11 @@ ] }, "locked": { - "lastModified": 1747372754, - "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "lastModified": 1742058297, + "narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a", "type": "github" }, "original": { @@ -2481,18 +2159,21 @@ }, "resume": { "inputs": { - "nixpkgs": "nixpkgs_16", - "systems": "systems_14" + "nixpkgs": "nixpkgs_14", + "systems": "systems_16" }, "locked": { - "lastModified": 1744680618, - "narHash": "sha256-sGJjcRalbMdWB5LjH21oQ5BIYG9t+8PkkrlSIFnSErc=", - "path": "/home/zoey/dev/resume", - "type": "path" + "lastModified": 1741033401, + "narHash": "sha256-VXEG88hZcNnWXkC9k9OHnYR20b0w8WnnhNVHhXfUtTs=", + "ref": "refs/heads/main", + "rev": "e2efd198fd0cb9202e1f034b71e26af20284ac8c", + "revCount": 31, + "type": "git", + "url": "https://git.zoeys.cloud/zoey/resume" }, "original": { - "path": "/home/zoey/dev/resume", - "type": "path" + "type": "git", + "url": "https://git.zoeys.cloud/zoey/resume" } }, "rio-term": { @@ -2501,15 +2182,15 @@ "nixpkgs": [ "nixpkgs" ], - "rust-overlay": "rust-overlay_4", - "systems": "systems_15" + "rust-overlay": "rust-overlay_3", + "systems": "systems_17" }, "locked": { - "lastModified": 1747559815, - "narHash": "sha256-8hVMUrue1shGUEqnJ/yWzbgxjy0390XgbQONo0YfUbA=", + "lastModified": 1742634895, + "narHash": "sha256-vWxkx9/dGzAzaVo177H2VO796pc3UTUqwOqH1J9xUyM=", "owner": "raphamorim", "repo": "rio", - "rev": "13434cbbb8f0fc74e71e6fbc66db35fe6698f2ac", + "rev": "d0ff00eca8d0a9f096d4245e4ec7af850d19d1a9", "type": "github" }, "original": { @@ -2522,64 +2203,44 @@ "inputs": { "agenix": "agenix", "ags": "ags", + "anyrun": "anyrun", "awsvpnclient": "awsvpnclient", "blog": "blog", "catppuccin": "catppuccin", - "chaotic": "chaotic", "disko": "disko", "emacs-overlay": "emacs-overlay", "ghostty": "ghostty", - "home-manager": "home-manager_3", + "home-manager": "home-manager_2", "hypridle": "hypridle", "hyprland": "hyprland", "kb-gui": "kb-gui", "lanzaboote": "lanzaboote", "lix-module": "lix-module", "mailserver": "mailserver", + "mc-honeypot": "mc-honeypot", "neovim-nightly-overlay": "neovim-nightly-overlay", - "niri": "niri", - "niri-src": "niri-src", - "nix-gaming": "nix-gaming", "nixos-generators": "nixos-generators", "nixos-stable": "nixos-stable", - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_10", + "opnix": "opnix", "pnpm2nix": "pnpm2nix_2", "posting": "posting", "resume": "resume", "rio-term": "rio-term", - "rust-overlay": "rust-overlay_5", + "rust-overlay": "rust-overlay_4", "snowfall-lib": "snowfall-lib", "solaar": "solaar", - "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", - "systems": "systems_19", + "systems": "systems_21", "umu": "umu", - "walker": "walker", "waybar": "waybar", "zen-browser": "zen-browser", "zoeycomputer": "zoeycomputer" } }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1747323949, - "narHash": "sha256-G4NwzhODScKnXqt2mEQtDFOnI0wU3L1WxsiHX3cID/0=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f8e784353bde7cbf9a9046285c1caf41ac484ebe", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, "rust-overlay": { "inputs": { - "nixpkgs": "nixpkgs_7" + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1733279627, @@ -2622,17 +2283,14 @@ }, "rust-overlay_3": { "inputs": { - "nixpkgs": [ - "niri-src", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_15" }, "locked": { - "lastModified": 1742697269, - "narHash": "sha256-Lpp0XyAtIl1oGJzNmTiTGLhTkcUjwSkEb0gOiNzYFGM=", + "lastModified": 1741400194, + "narHash": "sha256-tEpgT+q5KlGjHSm8MnINgTPErEl8YDzX3Eps8PVc09g=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "01973c84732f9275c50c5f075dd1f54cc04b3316", + "rev": "16b6045a232fea0e9e4c69e55a6e269607dd8e3f", "type": "github" }, "original": { @@ -2642,35 +2300,17 @@ } }, "rust-overlay_4": { - "inputs": { - "nixpkgs": "nixpkgs_17" - }, - "locked": { - "lastModified": 1747449297, - "narHash": "sha256-veyXchTz6eWwvuW5X49UluHkheHkFcqHJSwGuKBhrmQ=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "f44db7d7cea4528288780c6347756173a8248225", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_5": { "inputs": { "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1747535902, - "narHash": "sha256-rKWBtLcqQeu8PpfKIBn1ORXS2udSH/MwnQFwfSpFOLg=", + "lastModified": 1742610648, + "narHash": "sha256-9jWi3gw3fEIgEslnFjH/s1I+Iyf1+4t5B1Ed1FOiy8o=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b7a99615d26b82c39b73ccc9026545c3f3403b71", + "rev": "c60d41987df3c853e2a842de2c63ded40400979b", "type": "github" }, "original": { @@ -2748,37 +2388,19 @@ "type": "github" } }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_18" - }, - "locked": { - "lastModified": 1747603214, - "narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, "spicetify-nix": { "inputs": { "nixpkgs": [ "nixpkgs" ], - "systems": "systems_18" + "systems": "systems_20" }, "locked": { - "lastModified": 1747607404, - "narHash": "sha256-xj2Ji+rE+oYjf0BsTDT7K/StnYuZQK9MTbX8U1DUcC0=", + "lastModified": 1742512598, + "narHash": "sha256-nFPhSSxrPrpkmFR6vQq8OpUS+lGIAxDCUKg+5/qcnR8=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "8c1be0e5e9a7f35ccd6f7b10bcfa08f2734dad91", + "rev": "610654a0afe56766e639077d9d267148667a25e8", "type": "github" }, "original": { @@ -2878,7 +2500,6 @@ } }, "systems_15": { - "flake": false, "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2909,6 +2530,7 @@ } }, "systems_17": { + "flake": false, "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -2970,16 +2592,16 @@ }, "systems_20": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -3013,7 +2635,7 @@ "type": "github" } }, - "systems_3": { + "systems_23": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -3028,6 +2650,21 @@ "type": "github" } }, + "systems_3": { + "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_4": { "locked": { "lastModified": 1681028828, @@ -3075,16 +2712,16 @@ }, "systems_7": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -3105,22 +2742,22 @@ }, "systems_9": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, "treefmt-nix": { "inputs": { - "nixpkgs": "nixpkgs_8" + "nixpkgs": "nixpkgs_7" }, "locked": { "lastModified": 1733222881, @@ -3144,11 +2781,11 @@ ] }, "locked": { - "lastModified": 1747469671, - "narHash": "sha256-bo1ptiFoNqm6m1B2iAhJmWCBmqveLVvxom6xKmtuzjg=", + "lastModified": 1742370146, + "narHash": "sha256-XRE8hL4vKIQyVMDXykFh4ceo3KSpuJF3ts8GKwh5bIU=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "ab0378b61b0d85e73a8ab05d5c6029b5bd58c9fb", + "rev": "adc195eef5da3606891cedf80c0d9ce2d3190808", "type": "github" }, "original": { @@ -3159,15 +2796,15 @@ }, "umu": { "inputs": { - "nixpkgs": "nixpkgs_19" + "nixpkgs": "nixpkgs_16" }, "locked": { "dir": "packaging/nix", - "lastModified": 1747242981, - "narHash": "sha256-MFvG2fiPdmkNU88A7RzPjcHfexOiJxRwAX0SxeC0C5k=", + "lastModified": 1742441912, + "narHash": "sha256-8379sxse20nhUT6VcjjpsDmYoT8EJQCy0E8bLZZdos8=", "owner": "Open-Wine-Components", "repo": "umu-launcher", - "rev": "eff12416f0e8135031a62579910608e442d83d22", + "rev": "28eef5f5638d5660fb2d7c1811c8f2915a5e8c5b", "type": "github" }, "original": { @@ -3179,7 +2816,7 @@ }, "utils": { "inputs": { - "systems": "systems_13" + "systems": "systems_15" }, "locked": { "lastModified": 1726560853, @@ -3195,25 +2832,6 @@ "type": "github" } }, - "walker": { - "inputs": { - "nixpkgs": "nixpkgs_20", - "systems": "systems_20" - }, - "locked": { - "lastModified": 1746253489, - "narHash": "sha256-Lsegrsus7oZLLglhjYDUWKSh544Rylkc9y2GBnsD4TE=", - "owner": "abenz1267", - "repo": "walker", - "rev": "65fd786cf25c207efe0b5f2963d4cb5b2125bc22", - "type": "github" - }, - "original": { - "owner": "abenz1267", - "repo": "walker", - "type": "github" - } - }, "waybar": { "inputs": { "flake-compat": "flake-compat_10", @@ -3222,11 +2840,11 @@ ] }, "locked": { - "lastModified": 1745487176, - "narHash": "sha256-eF1l/KB8eXKTNf+CJ34gh5si3RZCZzme/W9StA+oTiw=", + "lastModified": 1740125099, + "narHash": "sha256-VpT3ePqmo75Ni6/02KFGV6ltnpiV70/ovG/p1f2wKkU=", "owner": "Alexays", "repo": "Waybar", - "rev": "0332d2ebf84392c82c86d615079f762f27de94ba", + "rev": "8490a1d9b9a5c8770dd63e9faca0a5e01acedcae", "type": "github" }, "original": { @@ -3263,11 +2881,11 @@ ] }, "locked": { - "lastModified": 1745871725, - "narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=", + "lastModified": 1741934139, + "narHash": "sha256-ZhTcTH9FoeAtbPfWGrhkH7RjLJZ7GeF18nygLAMR+WE=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e", + "rev": "150b0b6f52bb422a1b232a53698606fe0320dde0", "type": "github" }, "original": { @@ -3276,50 +2894,16 @@ "type": "github" } }, - "xwayland-satellite-stable": { - "flake": false, - "locked": { - "lastModified": 1739246919, - "narHash": "sha256-/hBM43/Gd0/tW+egrhlWgOIISeJxEs2uAOIYVpfDKeU=", - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "rev": "44590a416d4a3e8220e19e29e0b6efe64a80315d", - "type": "github" - }, - "original": { - "owner": "Supreeeme", - "ref": "v0.5.1", - "repo": "xwayland-satellite", - "type": "github" - } - }, - "xwayland-satellite-unstable": { - "flake": false, - "locked": { - "lastModified": 1747111562, - "narHash": "sha256-GAqhWoxaBIk0tgoecZPa8gTHDHxNc0JtlwWHZN2iOOo=", - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "rev": "ec9ff64c1e0cbec42710b580b7c0f759b1694e72", - "type": "github" - }, - "original": { - "owner": "Supreeeme", - "repo": "xwayland-satellite", - "type": "github" - } - }, "zen-browser": { "inputs": { - "home-manager": "home-manager_4", - "nixpkgs": "nixpkgs_21" + "nixpkgs": "nixpkgs_17" }, "locked": { - "lastModified": 1747592715, - "narHash": "sha256-2rq/h8xHOuGi+Vhi4cfioN1HA06qFssiIN2ZgMTITnM=", + "lastModified": 1742614294, + "narHash": "sha256-bZbYlP/xqGyW2aVle742dFbc0npFnwJBzcEnXNywJgY=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "16e095bf03d26fd26d22f589b96e7b8853a05b70", + "rev": "7fa9ec4e14d89e568ebaac302049980df7cf0cc9", "type": "github" }, "original": { @@ -3364,17 +2948,20 @@ "nixpkgs" ], "process-compose-flake": "process-compose-flake", - "systems": "systems_22" + "systems": "systems_23" }, "locked": { - "lastModified": 1744598309, - "narHash": "sha256-yjJnKlZSTmvmZddjgxntqmufCZwgZyuUSUZphh3jpRQ=", - "path": "/home/zoey/dev/zoeys.computer", - "type": "path" + "lastModified": 1731607548, + "narHash": "sha256-a0xLkdgQ4TIJVtY8fXnidtmsqlg63V9YYM7Hf32m7pk=", + "ref": "refs/heads/main", + "rev": "49677f2d9b2cb94c36fe7a9df2bd5e9a8c00b94f", + "revCount": 75, + "type": "git", + "url": "https://git.zoeys.cloud/zoey/zoeys.computer" }, "original": { - "path": "/home/zoey/dev/zoeys.computer", - "type": "path" + "type": "git", + "url": "https://git.zoeys.cloud/zoey/zoeys.computer" } }, "zon2nix": { diff --git a/flake.nix b/flake.nix index 89fc84c..1710869 100644 --- a/flake.nix +++ b/flake.nix @@ -28,16 +28,14 @@ inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; - walker.url = "github:abenz1267/walker"; - - resume.url = "path:/home/zoey/dev/resume"; + resume.url = "git+https://git.zoeys.cloud/zoey/resume"; + anyrun.url = "github:anyrun-org/anyrun"; + anyrun.inputs.nixpkgs.follows = "nixpkgs"; ags.url = "github:Aylur/ags/v1"; ags.inputs.nixpkgs.follows = "nixpkgs"; agenix.url = "github:ryantm/agenix"; agenix.inputs.nixpkgs.follows = "nixpkgs"; - - # to replace with sops-nix - sops-nix.url = "github:Mic92/sops-nix"; + agenix.inputs.darwin.follows = ""; pnpm2nix.url = "github:nzbr/pnpm2nix-nzbr"; @@ -51,7 +49,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - blog.url = "path:/home/zoey/dev/web"; + blog.url = "git+https://git.zoeys.cloud/zoey/web"; lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.1"; @@ -100,11 +98,12 @@ }; umu.url = "github:Open-Wine-Components/umu-launcher?dir=packaging/nix"; + # umu.inputs.nixpkgs.follows = "nixpkgs"; zen-browser.url = "github:0xc000022070/zen-browser-flake"; zoeycomputer = { - url = "path:/home/zoey/dev/zoeys.computer"; + url = "git+https://git.zoeys.cloud/zoey/zoeys.computer"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -129,14 +128,10 @@ disko.url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs"; - nix-gaming.url = "path:/home/zoey/dev/nix-gaming"; + opnix.url = "github:brizzbuzz/opnix"; - niri-src.url = "github:YaLTeR/niri"; - niri-src.inputs.nixpkgs.follows = "nixpkgs"; - - niri.url = "github:sodiboo/niri-flake"; - - chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + mc-honeypot.url = "github:Duckulus/mc-honeypot"; + mc-honeypot.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs @ {self, ...}: let @@ -144,10 +139,10 @@ inherit inputs; src = ./.; - overlays = with inputs; [ - rust-overlay.overlays.default + overlays = [ + inputs.rust-overlay.overlays.default (final: prev: { - ghostty = ghostty.packages."x86_64-linux".default; + ghostty = inputs.ghostty.packages."x86_64-linux".default; }) (final: prev: { shadps4 = prev.shadps4.overrideAttrs { @@ -161,7 +156,6 @@ patches = []; }; }) - niri.overlays.niri ]; snowfall = { @@ -177,9 +171,10 @@ homes.modules = with inputs; [ spicetify-nix.homeManagerModules.default - catppuccin.homeModules.default + catppuccin.homeManagerModules.catppuccin + anyrun.homeManagerModules.default ags.homeManagerModules.default - walker.homeManagerModules.default + opnix.homeManagerModules.default ]; systems.modules.nixos = with inputs; [ @@ -188,14 +183,13 @@ catppuccin.nixosModules.catppuccin blog.nixosModule agenix.nixosModules.default - sops-nix.nixosModules.sops solaar.nixosModules.default zoeycomputer.nixosModules.default lix-module.nixosModules.default mailserver.nixosModule disko.nixosModules.disko - niri.nixosModules.niri - chaotic.nixosModules.default + mc-honeypot.nixosModules.default + opnix.nixosModules.default ]; }; in diff --git a/genkey.sh b/genkey.sh new file mode 100755 index 0000000..cbb023b --- /dev/null +++ b/genkey.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Generate client keys +wg genkey | tee client-private.key | wg pubkey >client-public.key + +# Get the keys +CLIENT_PRIVATE_KEY=$(cat client-private.key) +CLIENT_PUBLIC_KEY=$(cat client-public.key) +SERVER_PUBLIC_KEY=$(sudo cat /home/zoey/wg-keys/private | wg pubkey) + +# Your server's public IP +SERVER_IP="66.227.177.15" + +# Create the client configuration +cat >wg0-client.conf <= zeroCode && charCode <= nineCode - then charCode - zeroCode - else if charCode >= aCode && charCode <= fCode - then charCode - aCode + 10 - else if charCode >= ACode && charCode <= FCode - then charCode - ACode + 10 - else builtins.throw "Invalid hex character: ${builtins.toString char}"; - - hexCompToInt = hexComp: let - trimmedStr = lib.strings.removePrefix "0x" hexComp; - - chars = lib.strings.stringToCharacters trimmedStr; - - op = acc: char: (acc * 16) + (hexCharToInt char); - in - if trimmedStr == "" - then 0 - else builtins.foldl' op 0 chars; - - intCompToHex = intComp: let - clampedInt = lib.max 0 (lib.min 255 (builtins.floor (intComp + 0.5))); - hexString = lib.trivial.toHexString clampedInt; - in - lib.strings.fixedWidthString 2 "0" hexString; - - hexToRgb = hexColor: let - hex = lib.strings.removePrefix "#" hexColor; - in { - r = hexCompToInt (lib.strings.substring 0 2 hex); - g = hexCompToInt (lib.strings.substring 2 2 hex); - b = hexCompToInt (lib.strings.substring 4 2 hex); - }; - - rgbToHex = rgbColor: "#${intCompToHex rgbColor.r}${intCompToHex rgbColor.g}${intCompToHex rgbColor.b}"; - - /** - * Linearly interpolates between two hex colors. - * - * @param color1Hex - The starting color hex string (e.g., "#RRGGBB"). - * @param color2Hex - The ending color hex string (e.g., "#RRGGBB"). - * @param t - The interpolation factor (float, typically 0.0 to 1.0). - * @return The blended color as a hex string "#RRGGBB". - */ - lerpColorFunc = color1Hex: color2Hex: t: let - rgb1 = hexToRgb color1Hex; - rgb2 = hexToRgb color2Hex; - lerpedR = (rgb1.r * (1.0 - t)) + (rgb2.r * t); - lerpedG = (rgb1.g * (1.0 - t)) + (rgb2.g * t); - lerpedB = (rgb1.b * (1.0 - t)) + (rgb2.b * t); - resultRgb = { - r = lerpedR; - g = lerpedG; - b = lerpedB; - }; - in - rgbToHex resultRgb; -in { +{ x = c: "#${c}"; + colors = { + "base" = "191724"; + "surface" = "1f1d2e"; + "overlay" = "26233a"; + "muted" = "6e6a86"; + "subtle" = "6e6a86"; + "text" = "e0def4"; + "love" = "eb6f92"; + "gold" = "f6c177"; + "rose" = "ebbcba"; + "pine" = "31748f"; + "foam" = "9ccfd8"; + "iris" = "c4a7e7"; + "highlightlow" = "21202e"; + "highlightmed" = "403d52"; + "highlighthigh" = "524f67"; + }; + fonts = { - mono = "Iosevka"; - ui = "SF Pro Display"; - }; - - colors = rec { - bg = crust; - fg = text; - primary = red; - - rosewater = { - hex = "#f5e0dc"; - rgb = "rgb(245, 224, 220)"; - hsl = "hsl(10, 56%, 91%)"; - }; - flamingo = { - hex = "#f2cdcd"; - rgb = "rgb(242, 205, 205)"; - hsl = "hsl(0, 59%, 88%)"; - }; - pink = { - hex = "#f5c2e7"; - rgb = "rgb(245, 194, 231)"; - hsl = "hsl(316, 72%, 86%)"; - }; - mauve = { - hex = "#cba6f7"; - rgb = "rgb(203, 166, 247)"; - hsl = "hsl(267, 84%, 81%)"; - }; - red = { - hex = "#f38ba8"; - rgb = "rgb(243, 139, 168)"; - hsl = "hsl(343, 81%, 75%)"; - }; - maroon = { - hex = "#eba0ac"; - rgb = "rgb(235, 160, 172)"; - hsl = "hsl(350, 65%, 77%)"; - }; - peach = { - hex = "#fab387"; - rgb = "rgb(250, 179, 135)"; - hsl = "hsl(25, 92%, 75%)"; - }; - yellow = { - hex = "#f9e2af"; - rgb = "rgb(249, 226, 175)"; - hsl = "hsl(41, 86%, 83%)"; - }; - green = { - hex = "#a6e3a1"; - rgb = "rgb(166, 227, 161)"; - hsl = "hsl(115, 54%, 76%)"; - }; - teal = { - hex = "#94e2d5"; - rgb = "rgb(148, 226, 213)"; - hsl = "hsl(170, 57%, 73%)"; - }; - sky = { - hex = "#89dceb"; - rgb = "rgb(137, 220, 235)"; - hsl = "hsl(190, 71%, 73%)"; - }; - sapphire = { - hex = "#74c7ec"; - rgb = "rgb(116, 199, 236)"; - hsl = "hsl(200, 77%, 69%)"; - }; - blue = { - hex = "#89b4fa"; - rgb = "rgb(137, 180, 250)"; - hsl = "hsl(217, 91%, 76%)"; - }; - lavender = { - hex = "#b4befe"; - rgb = "rgb(180, 190, 254)"; - hsl = "hsl(232, 97%, 85%)"; - }; - text = { - hex = "#cdd6f4"; - rgb = "rgb(205, 214, 244)"; - hsl = "hsl(226, 64%, 88%)"; - }; - subtext1 = { - hex = "#bac2de"; - rgb = "rgb(186, 194, 222)"; - hsl = "hsl(227, 36%, 80%)"; - }; - subtext0 = { - hex = "#a6adc8"; - rgb = "rgb(166, 173, 200)"; - hsl = "hsl(228, 26%, 72%)"; - }; - overlay2 = { - hex = "#9399b2"; - rgb = "rgb(147, 153, 178)"; - hsl = "hsl(228, 19%, 64%)"; - }; - overlay1 = { - hex = "#7f849c"; - rgb = "rgb(127, 132, 156)"; - hsl = "hsl(230, 15%, 55%)"; - }; - overlay0 = { - hex = "#6c7086"; - rgb = "rgb(108, 112, 134)"; - hsl = "hsl(232, 11%, 47%)"; - }; - surface2 = { - hex = "#585b70"; - rgb = "rgb(88, 91, 112)"; - hsl = "hsl(233, 12%, 39%)"; - }; - surface1 = { - hex = "#45475a"; - rgb = "rgb(69, 71, 90)"; - hsl = "hsl(234, 13%, 31%)"; - }; - surface0 = { - hex = "#313244"; - rgb = "rgb(49, 50, 68)"; - hsl = "hsl(237, 16%, 23%)"; - }; - base = { - hex = "#1e1e2e"; - rgb = "rgb(30, 30, 46)"; - hsl = "hsl(240, 21%, 15%)"; - }; - mantle = { - hex = "#181825"; - rgb = "rgb(24, 24, 37)"; - hsl = "hsl(240, 21%, 12%)"; - }; - crust = { - hex = "#11111b"; - rgb = "rgb(17, 17, 27)"; - hsl = "hsl(240, 23%, 9%)"; + mono = { + normal = "Iosevka Bold"; + bold = "Iosevka ExtraBold"; + italic = "Iosevka Bold Italic"; + bold_italic = "Iosevka ExtraBold Italic"; }; }; - wallpaper = ./svema_26_big.jpg; - - lerpColor = lerpColorFunc; + wallpaper = ./favs-98.png; } diff --git a/lib/theme/svema_26_big.jpg b/lib/theme/svema_26_big.jpg deleted file mode 100644 index d60ec4b..0000000 Binary files a/lib/theme/svema_26_big.jpg and /dev/null differ diff --git a/lib/theme/wall4p.jpg b/lib/theme/wall4p.jpg deleted file mode 100644 index ce8ef4f..0000000 Binary files a/lib/theme/wall4p.jpg and /dev/null differ diff --git a/lib/theme/wallp.jpg b/lib/theme/wallp.jpg deleted file mode 100644 index d7be673..0000000 Binary files a/lib/theme/wallp.jpg and /dev/null differ diff --git a/modules/home/apps/helpers/ags/default.nix b/modules/home/apps/helpers/ags/default.nix index 904d930..6db7f8e 100644 --- a/modules/home/apps/helpers/ags/default.nix +++ b/modules/home/apps/helpers/ags/default.nix @@ -48,43 +48,7 @@ in { programs.ags = { enable = true; - # Generate _colors.scss with our theme colors - configDir = pkgs.runCommand "ags-config" {} '' - cp -r ${./cfg} $out - chmod -R +w $out - cat > $out/scss/_colors.scss << EOF - /* Generated from lib/theme/default.nix */ - $rosewater: ${colors.rosewater.hex}; - $flamingo: ${colors.flamingo.hex}; - $pink: ${colors.pink.hex}; - $mauve: ${colors.mauve.hex}; - $red: ${colors.red.hex}; - $maroon: ${colors.maroon.hex}; - $peach: ${colors.peach.hex}; - $yellow: ${colors.yellow.hex}; - $green: ${colors.green.hex}; - $teal: ${colors.teal.hex}; - $sky: ${colors.sky.hex}; - $sapphire: ${colors.sapphire.hex}; - $blue: ${colors.blue.hex}; - $lavender: ${colors.lavender.hex}; - $text: ${colors.text.hex}; - $subtext1: ${colors.subtext1.hex}; - $subtext0: ${colors.subtext0.hex}; - $overlay2: ${colors.overlay2.hex}; - $overlay1: ${colors.overlay1.hex}; - $overlay0: ${colors.overlay0.hex}; - $surface2: ${colors.surface2.hex}; - $surface1: ${colors.surface1.hex}; - $surface0: ${colors.surface0.hex}; - $base: ${colors.base.hex}; - $mantle: ${colors.mantle.hex}; - $crust: ${colors.crust.hex}; - - /* Default accent color */ - $accent: ${colors.sapphire.hex}; - EOF - ''; + configDir = ./cfg; extraPackages = dependencies; }; diff --git a/modules/home/apps/helpers/anyrun/default.nix b/modules/home/apps/helpers/anyrun/default.nix index 0b7a44a..7de301c 100644 --- a/modules/home/apps/helpers/anyrun/default.nix +++ b/modules/home/apps/helpers/anyrun/default.nix @@ -14,102 +14,100 @@ in { enable = mkBoolOpt false "Enable Anyrun"; }; - config = - mkIf cfg.enable { + config = mkIf cfg.enable { + programs.anyrun = { + enable = true; + config = { + plugins = [ + inputs.anyrun.packages.${pkgs.system}.applications + inputs.anyrun.packages.${pkgs.system}.shell + inputs.anyrun.packages.${pkgs.system}.websearch + inputs.anyrun.packages.${pkgs.system}.rink + inputs.anyrun.packages.${pkgs.system}.stdin + ]; + x = {fraction = 0.5;}; + y = {absolute = 0;}; + hideIcons = false; + ignoreExclusiveZones = false; + layer = "overlay"; + hidePluginInfo = true; + closeOnClick = true; + showResultsImmediately = false; + maxEntries = null; + }; + extraCss = '' + *{ + all: unset; + color: #cdd6f4; + font-family: "JetBrainsMono Nerd Font"; + font-weight: bold; + } + #window{ + background-color: transparent; + } + #entry{ + background-color: #1e1e2e; + border-radius: 15px; + border: 3px solid #11111b; + font-size: 16px; + margin-top: 10px; + padding: 1px 15px; + } + #match { + margin-bottom: 2px; + margin-top: 2px; + padding: 1px 15px; + } + #match-desc{ + color: #bac2de; + font-size: 12px; + font-weight: normal; + } + #match:selected { + background: #313244; + border-radius: 15px; + } + #plugin{ + background-color: #1e1e2e; + border-radius: 15px; + border: 3px solid #11111b; + margin-top:10px; + padding: 10px 1px; + } + #plugin > *{ + all:unset; + } + ''; + + extraConfigFiles."applications.ron".text = '' + Config( + desktop_actions: false, + max_entries: 5, + terminal: Some("Kitty"), + ) + ''; + + extraConfigFiles."shell.ron".text = '' + Config( + prefix: ">", + ) + ''; + + extraConfigFiles."websearch.ron".text = '' + Config( + prefix: "", + // Options: Google, Ecosia, Bing, DuckDuckGo, Custom + // + // Custom engines can be defined as such: + // Custom( + // name: "Searx", + // url: "searx.be/?q={}", + // ) + // + // NOTE: `{}` is replaced by the search query and `https://` is automatically added in front. + engines: [DuckDuckGo] + ) + ''; }; - # programs.anyrun = { - # enable = true; - # config = { - # plugins = [ - # inputs.anyrun.packages.${pkgs.system}.applications - # inputs.anyrun.packages.${pkgs.system}.shell - # inputs.anyrun.packages.${pkgs.system}.websearch - # inputs.anyrun.packages.${pkgs.system}.rink - # inputs.anyrun.packages.${pkgs.system}.stdin - # ]; - # x = {fraction = 0.5;}; - # y = {absolute = 0;}; - # hideIcons = false; - # ignoreExclusiveZones = false; - # layer = "overlay"; - # hidePluginInfo = true; - # closeOnClick = true; - # showResultsImmediately = false; - # maxEntries = null; - # }; - # extraCss = '' - # *{ - # all: unset; - # color: #cdd6f4; - # font-family: "JetBrainsMono Nerd Font"; - # font-weight: bold; - # } - # #window{ - # background-color: transparent; - # } - # #entry{ - # background-color: #1e1e2e; - # border-radius: 15px; - # border: 3px solid #11111b; - # font-size: 16px; - # margin-top: 10px; - # padding: 1px 15px; - # } - # #match { - # margin-bottom: 2px; - # margin-top: 2px; - # padding: 1px 15px; - # } - # #match-desc{ - # color: #bac2de; - # font-size: 12px; - # font-weight: normal; - # } - # #match:selected { - # background: #313244; - # border-radius: 15px; - # } - # #plugin{ - # background-color: #1e1e2e; - # border-radius: 15px; - # border: 3px solid #11111b; - # margin-top:10px; - # padding: 10px 1px; - # } - # #plugin > *{ - # all:unset; - # } - # ''; - # - # extraConfigFiles."applications.ron".text = '' - # Config( - # desktop_actions: false, - # max_entries: 5, - # terminal: Some("Kitty"), - # ) - # ''; - # - # extraConfigFiles."shell.ron".text = '' - # Config( - # prefix: ">", - # ) - # ''; - # - # extraConfigFiles."websearch.ron".text = '' - # Config( - # prefix: "", - # // Options: Google, Ecosia, Bing, DuckDuckGo, Custom - # // - # // Custom engines can be defined as such: - # // Custom( - # // name: "Searx", - # // url: "searx.be/?q={}", - # // ) - # // - # // NOTE: `{}` is replaced by the search query and `https://` is automatically added in front. - # engines: [DuckDuckGo] - # ) - # ''; - # }; - # }; + }; } diff --git a/modules/home/apps/helpers/notifications/default.nix b/modules/home/apps/helpers/notifications/default.nix new file mode 100644 index 0000000..0727c94 --- /dev/null +++ b/modules/home/apps/helpers/notifications/default.nix @@ -0,0 +1,80 @@ +{ + options, + config, + lib, + inputs, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.helpers.snc; +in { + options.apps.helpers.snc = with types; { + enable = mkBoolOpt false "Enable Sway Notification Center"; + }; + + config = mkIf cfg.enable { + home = { + packages = with pkgs; [swaynotificationcenter]; + + # Copy the theme file to the correct location + file.".config/swaync/style.css".source = ./theme/ctp.css; + + # Create default config file + file.".config/swaync/config.json".text = builtins.toJSON { + "$schema" = "/etc/xdg/swaync/configSchema.json"; + "positionX" = "right"; + "positionY" = "top"; + "layer" = "overlay"; + "control-center-margin-top" = 0; + "control-center-margin-bottom" = 0; + "control-center-margin-right" = 0; + "control-center-margin-left" = 0; + "notification-icon-size" = 64; + "notification-body-image-height" = 100; + "notification-body-image-width" = 200; + "timeout" = 10; + "timeout-low" = 5; + "timeout-critical" = 0; + "fit-to-screen" = true; + "control-center-width" = 500; + "notification-window-width" = 500; + "keyboard-shortcuts" = true; + "image-visibility" = "when-available"; + "transition-time" = 200; + "hide-on-clear" = false; + "hide-on-action" = true; + "script-fail-notify" = true; + "scripts" = {}; + "notification-visibility" = {}; + "widgets" = [ + "title" + "dnd" + "notifications" + ]; + }; + }; + + # Add systemd user service + systemd.user.services.swaync = { + Unit = { + Description = "Sway Notification Center"; + PartOf = ["graphical-session.target"]; + After = ["graphical-session.target"]; + }; + + Service = { + Type = "simple"; + ExecStart = "${pkgs.swaynotificationcenter}/bin/swaync"; + ExecReload = "${pkgs.swaynotificationcenter}/bin/swaync-client --reload-config"; + Restart = "always"; + RestartSec = 3; + }; + + Install = { + WantedBy = ["graphical-session.target"]; + }; + }; + }; +} diff --git a/modules/home/apps/helpers/notifications/theme/ctp.css b/modules/home/apps/helpers/notifications/theme/ctp.css new file mode 100644 index 0000000..4a21929 --- /dev/null +++ b/modules/home/apps/helpers/notifications/theme/ctp.css @@ -0,0 +1,451 @@ +* { + all: unset; + font-size: 14px; + font-family: "Iosevka"; + transition: 200ms; +} + +trough highlight { + background: #cdd6f4; +} + +scale trough { + margin: 0rem 1rem; + background-color: #313244; + min-height: 8px; + min-width: 70px; +} + +slider { + background-color: #89b4fa; +} + +.floating-notifications.background .notification-row .notification-background { + box-shadow: + 0 0 8px 0 rgba(0, 0, 0, 0.8), + inset 0 0 0 1px #313244; + border-radius: 12.6px; + margin: 18px; + background-color: #1e1e2e; + color: #cdd6f4; + padding: 0; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification { + padding: 7px; + border-radius: 12.6px; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification.critical { + box-shadow: inset 0 0 7px 0 #f38ba8; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification + .notification-content { + margin: 7px; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification + .notification-content + .summary { + color: #cdd6f4; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification + .notification-content + .time { + color: #a6adc8; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification + .notification-content + .body { + color: #cdd6f4; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification + > *:last-child + > * { + min-height: 3.4em; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action { + border-radius: 7px; + color: #cdd6f4; + background-color: #313244; + box-shadow: inset 0 0 0 1px #45475a; + margin: 7px; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action:hover { + box-shadow: inset 0 0 0 1px #45475a; + background-color: #313244; + color: #cdd6f4; +} + +.floating-notifications.background + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action:active { + box-shadow: inset 0 0 0 1px #45475a; + background-color: #74c7ec; + color: #cdd6f4; +} + +.floating-notifications.background + .notification-row + .notification-background + .close-button { + margin: 7px; + padding: 2px; + border-radius: 6.3px; + color: #1e1e2e; + background-color: #f38ba8; +} + +.floating-notifications.background + .notification-row + .notification-background + .close-button:hover { + background-color: #eba0ac; + color: #1e1e2e; +} + +.floating-notifications.background + .notification-row + .notification-background + .close-button:active { + background-color: #f38ba8; + color: #1e1e2e; +} + +.control-center { + box-shadow: + 0 0 8px 0 rgba(0, 0, 0, 0.8), + inset 0 0 0 1px #313244; + border-radius: 12.6px; + margin: 18px; + background-color: #1e1e2e; + color: #cdd6f4; + padding: 14px; +} + +.control-center .widget-title > label { + color: #cdd6f4; + font-size: 1.3em; +} + +.control-center .widget-title button { + border-radius: 7px; + color: #cdd6f4; + background-color: #313244; + box-shadow: inset 0 0 0 1px #45475a; + padding: 8px; +} + +.control-center .widget-title button:hover { + box-shadow: inset 0 0 0 1px #45475a; + background-color: #585b70; + color: #cdd6f4; +} + +.control-center .widget-title button:active { + box-shadow: inset 0 0 0 1px #45475a; + background-color: #74c7ec; + color: #1e1e2e; +} + +.control-center .notification-row .notification-background { + border-radius: 7px; + color: #cdd6f4; + background-color: #313244; + box-shadow: inset 0 0 0 1px #45475a; + margin-top: 14px; +} + +.control-center .notification-row .notification-background .notification { + padding: 7px; + border-radius: 7px; +} + +.control-center + .notification-row + .notification-background + .notification.critical { + box-shadow: inset 0 0 7px 0 #f38ba8; +} + +.control-center + .notification-row + .notification-background + .notification + .notification-content { + margin: 7px; +} + +.control-center + .notification-row + .notification-background + .notification + .notification-content + .summary { + color: #cdd6f4; +} + +.control-center + .notification-row + .notification-background + .notification + .notification-content + .time { + color: #a6adc8; +} + +.control-center + .notification-row + .notification-background + .notification + .notification-content + .body { + color: #cdd6f4; +} + +.control-center + .notification-row + .notification-background + .notification + > *:last-child + > * { + min-height: 3.4em; +} + +.control-center + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action { + border-radius: 7px; + color: #cdd6f4; + background-color: #11111b; + box-shadow: inset 0 0 0 1px #45475a; + margin: 7px; +} + +.control-center + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action:hover { + box-shadow: inset 0 0 0 1px #45475a; + background-color: #313244; + color: #cdd6f4; +} + +.control-center + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action:active { + box-shadow: inset 0 0 0 1px #45475a; + background-color: #74c7ec; + color: #cdd6f4; +} + +.control-center .notification-row .notification-background .close-button { + margin: 7px; + padding: 2px; + border-radius: 6.3px; + color: #1e1e2e; + background-color: #eba0ac; +} + +.close-button { + border-radius: 6.3px; +} + +.control-center .notification-row .notification-background .close-button:hover { + background-color: #f38ba8; + color: #1e1e2e; +} + +.control-center + .notification-row + .notification-background + .close-button:active { + background-color: #f38ba8; + color: #1e1e2e; +} + +.control-center .notification-row .notification-background:hover { + box-shadow: inset 0 0 0 1px #45475a; + background-color: #7f849c; + color: #cdd6f4; +} + +.control-center .notification-row .notification-background:active { + box-shadow: inset 0 0 0 1px #45475a; + background-color: #74c7ec; + color: #cdd6f4; +} + +.notification.critical progress { + background-color: #f38ba8; +} + +.notification.low progress, +.notification.normal progress { + background-color: #89b4fa; +} + +.control-center-dnd { + margin-top: 5px; + border-radius: 8px; + background: #313244; + border: 1px solid #45475a; + box-shadow: none; +} + +.control-center-dnd:checked { + background: #313244; +} + +.control-center-dnd slider { + background: #45475a; + border-radius: 8px; +} + +.widget-dnd { + margin: 0px; + font-size: 1.1rem; +} + +.widget-dnd > switch { + font-size: initial; + border-radius: 8px; + background: #313244; + border: 1px solid #45475a; + box-shadow: none; +} + +.widget-dnd > switch:checked { + background: #313244; +} + +.widget-dnd > switch slider { + background: #45475a; + border-radius: 8px; + border: 1px solid #6c7086; +} + +.widget-mpris .widget-mpris-player { + background: #313244; + padding: 7px; +} + +.widget-mpris .widget-mpris-title { + font-size: 1.2rem; +} + +.widget-mpris .widget-mpris-subtitle { + font-size: 0.8rem; +} + +.widget-menubar > box > .menu-button-bar > button > label { + font-size: 3rem; + padding: 0.5rem 2rem; +} + +.widget-menubar > box > .menu-button-bar > :last-child { + color: #f38ba8; +} + +.power-buttons button:hover, +.powermode-buttons button:hover, +.screenshot-buttons button:hover { + background: #313244; +} + +.control-center .widget-label > label { + color: #cdd6f4; + font-size: 2rem; +} + +.widget-buttons-grid { + padding-top: 1rem; +} + +.widget-buttons-grid > flowbox > flowboxchild > button label { + font-size: 2.5rem; +} + +.widget-volume { + padding-top: 1rem; +} + +.widget-volume label { + font-size: 1.5rem; + color: #74c7ec; +} + +.widget-volume trough highlight { + background: #74c7ec; +} + +.widget-backlight trough highlight { + background: #f9e2af; +} + +.widget-backlight label { + font-size: 1.5rem; + color: #f9e2af; +} + +.widget-backlight .KB { + padding-bottom: 1rem; +} + +.image { + padding-right: 0.5rem; +} diff --git a/modules/home/apps/helpers/rofi/default.nix b/modules/home/apps/helpers/rofi/default.nix index f51b318..1657c82 100644 --- a/modules/home/apps/helpers/rofi/default.nix +++ b/modules/home/apps/helpers/rofi/default.nix @@ -51,12 +51,12 @@ in { inherit (config.lib.formats.rasi) mkLiteral; in { "*" = { - background = colors.mantle.hex; - prompt = colors.base.hex; - border = colors.surface0.hex; - text = colors.text.hex; - stext = colors.surface1.hex; - select = colors.base.hex; + background = "#181825"; + prompt = "#1e1e2e"; + border = "#313244"; + text = "#cdd6f4"; + stext = "#45475a"; + select = "#1e1e2e"; "background-color" = mkLiteral "transparent"; "text-color" = mkLiteral "@text"; margin = 0; @@ -143,42 +143,15 @@ in { }; }; - # Create the colors.rasi file with our theme colors + # Create the colors.rasi file xdg.configFile."rofi/colors.rasi".text = '' * { - background: ${colors.mantle.hex}; - prompt: ${colors.base.hex}; - border: ${colors.surface0.hex}; - text: ${colors.text.hex}; - stext: ${colors.surface1.hex}; - select: ${colors.base.hex}; - - /* Full color palette */ - rosewater: ${colors.rosewater.hex}; - flamingo: ${colors.flamingo.hex}; - pink: ${colors.pink.hex}; - mauve: ${colors.mauve.hex}; - red: ${colors.red.hex}; - maroon: ${colors.maroon.hex}; - peach: ${colors.peach.hex}; - yellow: ${colors.yellow.hex}; - green: ${colors.green.hex}; - teal: ${colors.teal.hex}; - sky: ${colors.sky.hex}; - sapphire: ${colors.sapphire.hex}; - blue: ${colors.blue.hex}; - lavender: ${colors.lavender.hex}; - subtext0: ${colors.subtext0.hex}; - subtext1: ${colors.subtext1.hex}; - overlay0: ${colors.overlay0.hex}; - overlay1: ${colors.overlay1.hex}; - overlay2: ${colors.overlay2.hex}; - surface0: ${colors.surface0.hex}; - surface1: ${colors.surface1.hex}; - surface2: ${colors.surface2.hex}; - base: ${colors.base.hex}; - mantle: ${colors.mantle.hex}; - crust: ${colors.crust.hex}; + background: #181825; + prompt: #1e1e2e; + border: #313244; + text: #cdd6f4; + stext: #45475a; + select: #1e1e2e; } ''; diff --git a/modules/home/apps/helpers/swaync/default.nix b/modules/home/apps/helpers/swaync/default.nix deleted file mode 100644 index fcefdf1..0000000 --- a/modules/home/apps/helpers/swaync/default.nix +++ /dev/null @@ -1,366 +0,0 @@ -{ - options, - config, - lib, - inputs, - pkgs, - ... -}: -with lib; -with lib.custom; let - cfg = config.apps.helpers.swaync; -in { - options.apps.helpers.swaync = with types; { - enable = mkBoolOpt false "Enable SwayNC"; - }; - - config = mkIf cfg.enable { - services.swaync = { - enable = true; - style = lib.mkForce '' - * { - all: unset; - font-size: 14px; - font-family: "Adwaita Sans", "JetBrains Mono Nerd Font"; - transition: 200ms; - } - - trough highlight { - background: ${colors.text.hex}; - } - - scale trough { - margin: 0rem 1rem; - background-color: ${colors.surface0.hex}; - min-height: 8px; - min-width: 70px; - } - - slider { - background-color: ${colors.blue.hex}; - } - - .floating-notifications.background .notification-row .notification-background { - box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px ${colors.surface0.hex}; - border-radius: 12.6px; - margin: 18px; - background-color: ${colors.base.hex}; - color: ${colors.text.hex}; - padding: 0; - } - - .floating-notifications.background .notification-row .notification-background .notification { - padding: 7px; - border-radius: 12.6px; - } - - .floating-notifications.background .notification-row .notification-background .notification.critical { - box-shadow: inset 0 0 7px 0 ${colors.red.hex}; - } - - .floating-notifications.background .notification-row .notification-background .notification .notification-content { - margin: 7px; - } - - .floating-notifications.background .notification-row .notification-background .notification .notification-content .summary { - color: ${colors.text.hex}; - } - - .floating-notifications.background .notification-row .notification-background .notification .notification-content .time { - color: ${colors.subtext0.hex}; - } - - .floating-notifications.background .notification-row .notification-background .notification .notification-content .body { - color: ${colors.text.hex}; - } - - .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * { - min-height: 3.4em; - } - - .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action { - border-radius: 7px; - color: ${colors.text.hex}; - background-color: ${colors.surface0.hex}; - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - margin: 7px; - } - - .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover { - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - background-color: ${colors.surface0.hex}; - color: ${colors.text.hex}; - } - - .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active { - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - background-color: ${colors.sky.hex}; - color: ${colors.text.hex}; - } - - .floating-notifications.background .notification-row .notification-background .close-button { - margin: 7px; - padding: 2px; - border-radius: 6.3px; - color: ${colors.base.hex}; - background-color: ${colors.red.hex}; - } - - .floating-notifications.background .notification-row .notification-background .close-button:hover { - background-color: ${colors.maroon.hex}; - color: ${colors.base.hex}; - } - - .floating-notifications.background .notification-row .notification-background .close-button:active { - background-color: ${colors.red.hex}; - color: ${colors.base.hex}; - } - - .control-center { - box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px ${colors.surface0.hex}; - border-radius: 12.6px; - margin: 18px; - background-color: ${colors.base.hex}; - color: ${colors.text.hex}; - padding: 14px; - } - - .control-center .widget-title > label { - color: ${colors.text.hex}; - font-size: 1.3em; - } - - .control-center .widget-title button { - border-radius: 7px; - color: ${colors.text.hex}; - background-color: ${colors.surface0.hex}; - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - padding: 8px; - } - - .control-center .widget-title button:hover { - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - background-color: ${colors.surface2.hex}; - color: ${colors.text.hex}; - } - - .control-center .widget-title button:active { - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - background-color: ${colors.sky.hex}; - color: ${colors.base.hex}; - } - - .control-center .notification-row .notification-background { - border-radius: 7px; - color: ${colors.text.hex}; - background-color: ${colors.surface0.hex}; - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - margin-top: 14px; - } - - .control-center .notification-row .notification-background .notification { - padding: 7px; - border-radius: 7px; - } - - .control-center .notification-row .notification-background .notification.critical { - box-shadow: inset 0 0 7px 0 ${colors.red.hex}; - } - - .control-center .notification-row .notification-background .notification .notification-content { - margin: 7px; - } - - .control-center .notification-row .notification-background .notification .notification-content .summary { - color: ${colors.text.hex}; - } - - .control-center .notification-row .notification-background .notification .notification-content .time { - color: ${colors.subtext0.hex}; - } - - .control-center .notification-row .notification-background .notification .notification-content .body { - color: ${colors.text.hex}; - } - - .control-center .notification-row .notification-background .notification > *:last-child > * { - min-height: 3.4em; - } - - .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action { - border-radius: 7px; - color: ${colors.text.hex}; - background-color: ${colors.crust.hex}; - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - margin: 7px; - } - - .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover { - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - background-color: ${colors.surface0.hex}; - color: ${colors.text.hex}; - } - - .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active { - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - background-color: ${colors.sky.hex}; - color: ${colors.text.hex}; - } - - .control-center .notification-row .notification-background .close-button { - margin: 7px; - padding: 2px; - border-radius: 6.3px; - color: ${colors.base.hex}; - background-color: ${colors.maroon.hex}; - } - - .close-button { - border-radius: 6.3px; - } - - .control-center .notification-row .notification-background .close-button:hover { - background-color: ${colors.red.hex}; - color: ${colors.base.hex}; - } - - .control-center .notification-row .notification-background .close-button:active { - background-color: ${colors.red.hex}; - color: ${colors.base.hex}; - } - - .control-center .notification-row .notification-background:hover { - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - background-color: ${colors.overlay1.hex}; - color: ${colors.text.hex}; - } - - .control-center .notification-row .notification-background:active { - box-shadow: inset 0 0 0 1px ${colors.surface1.hex}; - background-color: ${colors.sky.hex}; - color: ${colors.text.hex}; - } - - .notification.critical progress { - background-color: ${colors.red.hex}; - } - - .notification.low progress, - .notification.normal progress { - background-color: ${colors.blue.hex}; - } - - .control-center-dnd { - margin-top: 5px; - border-radius: 8px; - background: ${colors.surface0.hex}; - border: 1px solid ${colors.surface1.hex}; - box-shadow: none; - } - - .control-center-dnd:checked { - background: ${colors.surface0.hex}; - } - - .control-center-dnd slider { - background: ${colors.surface1.hex}; - border-radius: 8px; - } - - .widget-dnd { - margin: 0px; - font-size: 1.1rem; - } - - .widget-dnd > switch { - font-size: initial; - border-radius: 8px; - background: ${colors.surface0.hex}; - border: 1px solid ${colors.surface1.hex}; - box-shadow: none; - } - - .widget-dnd > switch:checked { - background: ${colors.surface0.hex}; - } - - .widget-dnd > switch slider { - background: ${colors.surface1.hex}; - border-radius: 8px; - border: 1px solid ${colors.overlay0.hex}; - } - - .widget-mpris .widget-mpris-player .widget-mpd { - background: ${colors.surface0.hex}; - padding: 7px; - } - - .widget-mpris .widget-mpris-title .widget-mpd .widget-mpd-title { - font-size: 1.2rem; - } - - .widget-mpris .widget-mpris-subtitle .widget-mpd .widget-mpd-subtitle { - font-size: 0.8rem; - } - - .widget-menubar > box > .menu-button-bar > button > label { - font-size: 3rem; - padding: 0.5rem 2rem; - } - - .widget-menubar > box > .menu-button-bar > :last-child { - color: ${colors.red.hex}; - } - - .power-buttons button:hover, - .powermode-buttons button:hover, - .screenshot-buttons button:hover { - background: ${colors.surface0.hex}; - } - - .control-center .widget-label > label { - color: ${colors.text.hex}; - font-size: 2rem; - } - - .widget-buttons-grid { - padding-top: 1rem; - } - - .widget-buttons-grid > flowbox > flowboxchild > button label { - font-size: 2.5rem; - } - - .widget-volume { - padding-top: 1rem; - } - - .widget-volume label { - font-size: 1.5rem; - color: ${colors.sky.hex}; - } - - .widget-volume trough highlight { - background: ${colors.sky.hex}; - } - - .widget-backlight trough highlight { - background: ${colors.yellow.hex}; - } - - .widget-backlight label { - font-size: 1.5rem; - color: ${colors.yellow.hex}; - } - - .widget-backlight .KB { - padding-bottom: 1rem; - } - - .image { - padding-right: 0.5rem; - } - ''; - }; - }; -} diff --git a/modules/home/apps/helpers/walker/default.nix b/modules/home/apps/helpers/walker/default.nix deleted file mode 100644 index 6c46e23..0000000 --- a/modules/home/apps/helpers/walker/default.nix +++ /dev/null @@ -1,611 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; -with lib.custom; let - cfg = config.apps.helpers.walker; -in { - options.apps.helpers.walker = with types; { - enable = mkBoolOpt false "Enable Walker"; - }; - - config = mkIf cfg.enable { - programs.walker = { - enable = true; - runAsService = true; - - theme = { - layout = { - ui = { - anchors = { - bottom = true; - left = true; - right = true; - top = true; - }; - - window = { - h_align = "fill"; - v_align = "fill"; - - box = { - h_align = "center"; - width = 450; - - bar = { - orientation = "horizontal"; - position = "end"; - - entry = { - h_align = "fill"; - h_expand = true; - - icon = { - h_align = "center"; - h_expand = true; - pixel_size = 24; - theme = ""; - }; - }; - }; - - margins = { - top = 450; - }; - - ai_scroll = { - name = "aiScroll"; - h_align = "fill"; - v_align = "fill"; - max_height = 300; - min_width = 400; - height = 300; - width = 400; - - margins = { - top = 8; - }; - - list = { - name = "aiList"; - orientation = "vertical"; - width = 400; - spacing = 10; - - item = { - name = "aiItem"; - h_align = "fill"; - v_align = "fill"; - x_align = 0; - y_align = 0; - wrap = true; - }; - }; - }; - - scroll = { - list = { - marker_color = "#1BFFE1"; - max_height = 300; - max_width = 400; - min_width = 400; - width = 400; - - item = { - activation_label = { - h_align = "fill"; - v_align = "fill"; - width = 20; - x_align = 0.5; - y_align = 0.5; - }; - - icon = { - pixel_size = 26; - theme = ""; - }; - }; - - margins = { - top = 8; - }; - }; - }; - - search = { - prompt = { - name = "prompt"; - icon = "edit-find"; - theme = ""; - pixel_size = 18; - h_align = "center"; - v_align = "center"; - }; - - clear = { - name = "clear"; - icon = "edit-clear"; - theme = ""; - pixel_size = 18; - h_align = "center"; - v_align = "center"; - }; - - input = { - h_align = "fill"; - h_expand = true; - icons = true; - }; - - spinner = { - hide = true; - }; - }; - }; - }; - }; - }; - - style = '' - @define-color foreground ${colors.fg.hex}; /* text */ - @define-color background ${colors.bg.hex}; /* base */ - @define-color cursor ${colors.primary.hex}; /* rosewater */ - - @define-color color0 ${colors.surface0.hex}; /* surface0 */ - @define-color color1 ${colors.red.hex}; /* red */ - @define-color color2 ${colors.green.hex}; /* green */ - @define-color color3 ${colors.yellow.hex}; /* yellow */ - @define-color color4 ${colors.blue.hex}; /* blue */ - @define-color color5 ${colors.pink.hex}; /* pink */ - @define-color color6 ${colors.teal.hex}; /* teal */ - @define-color color7 ${colors.subtext1.hex}; /* subtext1 */ - @define-color color8 ${colors.surface1.hex}; /* surface1 */ - @define-color color9 ${colors.red.hex}; /* red */ - @define-color color10 ${colors.green.hex}; /* green */ - @define-color color11 ${colors.yellow.hex}; /* yellow */ - @define-color color12 ${colors.blue.hex}; /* blue */ - @define-color color13 ${colors.pink.hex}; /* pink */ - @define-color color14 ${colors.teal.hex}; /* teal */ - @define-color color15 ${colors.subtext0.hex}; /* subtext0 */ - - #window, - #box, - #aiScroll, - #aiList, - #search, - #password, - #input, - #prompt, - #clear, - #typeahead, - #list, - child, - scrollbar, - slider, - #item, - #text, - #label, - #bar, - #sub, - #activationlabel { - all: unset; - } - - #cfgerr { - background: rgba(255, 0, 0, 0.4); - margin-top: 20px; - padding: 8px; - font-size: 1.2em; - } - - #window { - color: @foreground; - } - - #box { - border-radius: 2px; - background: @background; - padding: 32px; - border: 1px solid lighter(@background); - box-shadow: - 0 19px 38px rgba(0, 0, 0, 0.3), - 0 15px 12px rgba(0, 0, 0, 0.22); - } - - #search { - box-shadow: - 0 1px 3px rgba(0, 0, 0, 0.1), - 0 1px 2px rgba(0, 0, 0, 0.22); - background: lighter(@background); - padding: 8px; - } - - #prompt { - margin-left: 4px; - margin-right: 12px; - color: @foreground; - opacity: 0.2; - } - - #clear { - color: @foreground; - opacity: 0.8; - } - - #password, - #input, - #typeahead { - border-radius: 2px; - } - - #input { - background: none; - } - - #password { - } - - #spinner { - padding: 8px; - } - - #typeahead { - color: @foreground; - opacity: 0.8; - } - - #input placeholder { - opacity: 0.5; - } - - #list { - } - - child { - padding: 8px; - border-radius: 2px; - } - - child:selected, - child:hover { - background: alpha(@color1, 0.4); - } - - #item { - } - - #icon { - margin-right: 8px; - } - - #text { - } - - #label { - font-weight: 500; - } - - #sub { - opacity: 0.5; - font-size: 0.8em; - } - - #activationlabel { - } - - #bar { - } - - .barentry { - } - - .activation #activationlabel { - } - - .activation #text, - .activation #icon, - .activation #search { - opacity: 0.5; - } - - .aiItem { - padding: 10px; - border-radius: 2px; - color: @foreground; - background: @background; - } - - .aiItem.user { - padding-left: 0; - padding-right: 0; - } - - .aiItem.assistant { - background: lighter(@background); - } - ''; - }; - - config = { - app_launch_prefix = ""; - terminal_title_flag = ""; - locale = ""; - close_when_open = false; - theme = "nixos"; - monitor = ""; - hotreload_theme = false; - as_window = false; - timeout = 0; - disable_click_to_close = false; - force_keyboard_focus = false; - - keys = { - accept_typeahead = ["tab"]; - trigger_labels = "lalt"; - next = ["down"]; - prev = ["up"]; - close = ["esc"]; - remove_from_history = ["shift backspace"]; - resume_query = ["ctrl r"]; - toggle_exact_search = ["ctrl m"]; - - activation_modifiers = { - keep_open = "shift"; - alternate = "alt"; - }; - - ai = { - clear_session = ["ctrl x"]; - copy_last_response = ["ctrl c"]; - resume_session = ["ctrl r"]; - run_last_response = ["ctrl e"]; - }; - }; - - events = { - on_activate = ""; - on_selection = ""; - on_exit = ""; - on_launch = ""; - on_query_change = ""; - }; - - list = { - dynamic_sub = true; - keyboard_scroll_style = "emacs"; - max_entries = 50; - show_initial_entries = true; - single_click = true; - visibility_threshold = 20; - placeholder = "No Results"; - }; - - search = { - argument_delimiter = "#"; - placeholder = "Search..."; - delay = 0; - resume_last_query = false; - }; - - activation_mode = { - labels = "jkl;asdf"; - }; - - builtins = { - applications = { - weight = 5; - name = "applications"; - placeholder = "Applications"; - prioritize_new = true; - hide_actions_with_empty_query = true; - context_aware = true; - refresh = true; - show_sub_when_single = true; - show_icon_when_single = true; - show_generic = true; - history = true; - - actions = { - enabled = true; - hide_category = false; - hide_without_query = true; - }; - }; - - bookmarks = { - weight = 5; - placeholder = "Bookmarks"; - name = "bookmarks"; - icon = "bookmark"; - switcher_only = true; - - entries = [ - { - label = "Walker"; - url = "https://github.com/abenz1267/walker"; - keywords = ["walker" "github"]; - } - ]; - }; - - xdph_picker = { - hidden = true; - weight = 5; - placeholder = "Screen/Window Picker"; - show_sub_when_single = true; - name = "xdphpicker"; - switcher_only = true; - }; - - ai = { - weight = 5; - placeholder = "AI"; - name = "ai"; - icon = "help-browser"; - switcher_only = true; - show_sub_when_single = true; - - anthropic = { - prompts = [ - { - model = "claude-3-7-sonnet-20250219"; - temperature = 1; - max_tokens = 1000; - label = "General Assistant"; - prompt = "You are a helpful general assistant. Keep your answers short and precise."; - } - ]; - }; - }; - - calc = { - require_number = true; - weight = 5; - name = "calc"; - icon = "accessories-calculator"; - placeholder = "Calculator"; - min_chars = 4; - }; - - windows = { - weight = 5; - icon = "view-restore"; - name = "windows"; - placeholder = "Windows"; - show_icon_when_single = true; - }; - - clipboard = { - always_put_new_on_top = true; - exec = "wl-copy"; - weight = 5; - name = "clipboard"; - avoid_line_breaks = true; - placeholder = "Clipboard"; - image_height = 300; - max_entries = 10; - switcher_only = true; - }; - - commands = { - weight = 5; - icon = "utilities-terminal"; - switcher_only = true; - name = "commands"; - placeholder = "Commands"; - }; - - custom_commands = { - weight = 5; - icon = "utilities-terminal"; - name = "custom_commands"; - placeholder = "Custom Commands"; - }; - - emojis = { - exec = "wl-copy"; - weight = 5; - name = "emojis"; - placeholder = "Emojis"; - switcher_only = true; - history = true; - typeahead = true; - show_unqualified = false; - }; - - symbols = { - after_copy = ""; - weight = 5; - name = "symbols"; - placeholder = "Symbols"; - switcher_only = true; - history = true; - typeahead = true; - }; - - finder = { - use_fd = false; - fd_flags = "--ignore-vcs --type file"; - weight = 5; - icon = "file"; - name = "finder"; - placeholder = "Finder"; - switcher_only = true; - ignore_gitignore = true; - refresh = true; - concurrency = 8; - show_icon_when_single = true; - preview_images = false; - }; - - runner = { - eager_loading = true; - weight = 5; - icon = "utilities-terminal"; - name = "runner"; - placeholder = "Runner"; - typeahead = true; - history = true; - generic_entry = false; - refresh = true; - use_fd = false; - }; - - ssh = { - weight = 5; - icon = "preferences-system-network"; - name = "ssh"; - placeholder = "SSH"; - switcher_only = true; - history = true; - refresh = true; - }; - - switcher = { - weight = 5; - name = "switcher"; - placeholder = "Switcher"; - prefix = "/"; - }; - - websearch = { - keep_selection = true; - weight = 5; - icon = "applications-internet"; - name = "websearch"; - placeholder = "Websearch"; - - entries = [ - { - name = "searx"; - url = "https://search.zoeys.cloud/searx/search?q=%TERM%"; - } - ]; - }; - - dmenu = { - hidden = true; - weight = 5; - name = "dmenu"; - placeholder = "Dmenu"; - switcher_only = true; - show_icon_when_single = true; - }; - - translation = { - delay = 1000; - weight = 5; - name = "translation"; - icon = "accessories-dictionary"; - placeholder = "Translation"; - switcher_only = true; - provider = "googlefree"; - }; - }; - }; - }; - }; -} diff --git a/modules/home/apps/helpers/waybar/bar.sh b/modules/home/apps/helpers/waybar/bar.sh deleted file mode 100644 index 4510e01..0000000 --- a/modules/home/apps/helpers/waybar/bar.sh +++ /dev/null @@ -1,83 +0,0 @@ -#! /bin/bash - -# --- Configuration --- -bar="▁▂▃▄▅▆▇█" -# Number of bars Cava should output -num_bars=8 -# Max height for ASCII output (should match length of bar string - 1) -ascii_max_range=$((${#bar} - 1)) -# Temporary config file path (using PID $$ for uniqueness) -config_file="/tmp/polybar_cava_config_$$" - -# --- Argument Handling --- -if [ $# -lt 1 ]; then - # Print error message to stderr - echo "Error: Please provide the PulseAudio source name as an argument." >&2 - echo "Usage: $0 " >&2 - echo "Example: $0 alsa_output.pci-0000_00_1f.3.analog-stereo.monitor" >&2 - echo "You can find source names using: pactl list sources | grep 'Name:'" >&2 - exit 1 -fi - -# Assign the first argument to the pulse_source variable -pulse_source="$1" - -# --- Functions --- - -# Function to clean up the temporary config file on exit -cleanup() { - rm -f "$config_file" -} - -# --- Main Script --- - -# Set trap to call cleanup function on script exit (including Ctrl+C) -trap cleanup EXIT - -# Build the sed dictionary string to replace numbers with bar characters -dict="s/;//g;" -i=0 -# Use modern arithmetic expansion and loop condition -while ((i < ${#bar})); do - # Safely append to the dictionary string - dict="${dict}s/$i/${bar:$i:1}/g;" - # Use modern arithmetic increment - ((i++)) -done - -# Create the Cava configuration file using printf for safety -# Note: Using the pulse_source variable passed as an argument -printf '%s\n' " -[general] -bars = $num_bars -sleep_timer = 10 - -[input] -method = pulse -source = \"$pulse_source\" - -[output] -method = raw -raw_target = /dev/stdout -data_format = ascii -channels = mono -mono_option = average -ascii_max_range = $ascii_max_range - -[smoothing] -noise_reduction = 25 -" >"$config_file" || { - echo "Error: Failed to write Cava config." >&2 - exit 1 -} # Exit if write fails - -# Run Cava with the generated config and process its output -# Use 'exec cava' if you don't need the script to do anything after cava finishes -cava -p "$config_file" | while IFS= read -r line; do - # Translate numbers to bars using sed - echo "$line" | sed "$dict" -done - -# The trap will handle cleanup automatically here -# If 'exec cava' was used above, this part is unreachable -exit 0 diff --git a/modules/home/apps/helpers/waybar/default.nix b/modules/home/apps/helpers/waybar/default.nix index b1e1c82..719e39b 100644 --- a/modules/home/apps/helpers/waybar/default.nix +++ b/modules/home/apps/helpers/waybar/default.nix @@ -15,62 +15,479 @@ in { }; config = mkIf cfg.enable { + services.swaync = { + enable = true; + style = lib.mkForce '' + * { + all: unset; + font-size: 14px; + font-family: "Adwaita Sans", "JetBrains Mono Nerd Font"; + transition: 200ms; + } + + trough highlight { + background: #cad3f5; + } + + scale trough { + margin: 0rem 1rem; + background-color: #363a4f; + min-height: 8px; + min-width: 70px; + } + + slider { + background-color: #8aadf4; + } + + .floating-notifications.background .notification-row .notification-background { + box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #363a4f; + border-radius: 12.6px; + margin: 18px; + background-color: #24273a; + color: #cad3f5; + padding: 0; + } + + .floating-notifications.background .notification-row .notification-background .notification { + padding: 7px; + border-radius: 12.6px; + } + + .floating-notifications.background .notification-row .notification-background .notification.critical { + box-shadow: inset 0 0 7px 0 #ed8796; + } + + .floating-notifications.background .notification-row .notification-background .notification .notification-content { + margin: 7px; + } + + .floating-notifications.background .notification-row .notification-background .notification .notification-content .summary { + color: #cad3f5; + } + + .floating-notifications.background .notification-row .notification-background .notification .notification-content .time { + color: #a5adcb; + } + + .floating-notifications.background .notification-row .notification-background .notification .notification-content .body { + color: #cad3f5; + } + + .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * { + min-height: 3.4em; + } + + .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action { + border-radius: 7px; + color: #cad3f5; + background-color: #363a4f; + box-shadow: inset 0 0 0 1px #494d64; + margin: 7px; + } + + .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover { + box-shadow: inset 0 0 0 1px #494d64; + background-color: #363a4f; + color: #cad3f5; + } + + .floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active { + box-shadow: inset 0 0 0 1px #494d64; + background-color: #7dc4e4; + color: #cad3f5; + } + + .floating-notifications.background .notification-row .notification-background .close-button { + margin: 7px; + padding: 2px; + border-radius: 6.3px; + color: #24273a; + background-color: #ed8796; + } + + .floating-notifications.background .notification-row .notification-background .close-button:hover { + background-color: #ee99a0; + color: #24273a; + } + + .floating-notifications.background .notification-row .notification-background .close-button:active { + background-color: #ed8796; + color: #24273a; + } + + .control-center { + box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #363a4f; + border-radius: 12.6px; + margin: 18px; + background-color: #24273a; + color: #cad3f5; + padding: 14px; + } + + .control-center .widget-title > label { + color: #cad3f5; + font-size: 1.3em; + } + + .control-center .widget-title button { + border-radius: 7px; + color: #cad3f5; + background-color: #363a4f; + box-shadow: inset 0 0 0 1px #494d64; + padding: 8px; + } + + .control-center .widget-title button:hover { + box-shadow: inset 0 0 0 1px #494d64; + background-color: #5b6078; + color: #cad3f5; + } + + .control-center .widget-title button:active { + box-shadow: inset 0 0 0 1px #494d64; + background-color: #7dc4e4; + color: #24273a; + } + + .control-center .notification-row .notification-background { + border-radius: 7px; + color: #cad3f5; + background-color: #363a4f; + box-shadow: inset 0 0 0 1px #494d64; + margin-top: 14px; + } + + .control-center .notification-row .notification-background .notification { + padding: 7px; + border-radius: 7px; + } + + .control-center .notification-row .notification-background .notification.critical { + box-shadow: inset 0 0 7px 0 #ed8796; + } + + .control-center .notification-row .notification-background .notification .notification-content { + margin: 7px; + } + + .control-center .notification-row .notification-background .notification .notification-content .summary { + color: #cad3f5; + } + + .control-center .notification-row .notification-background .notification .notification-content .time { + color: #a5adcb; + } + + .control-center .notification-row .notification-background .notification .notification-content .body { + color: #cad3f5; + } + + .control-center .notification-row .notification-background .notification > *:last-child > * { + min-height: 3.4em; + } + + .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action { + border-radius: 7px; + color: #cad3f5; + background-color: #181926; + box-shadow: inset 0 0 0 1px #494d64; + margin: 7px; + } + + .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover { + box-shadow: inset 0 0 0 1px #494d64; + background-color: #363a4f; + color: #cad3f5; + } + + .control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active { + box-shadow: inset 0 0 0 1px #494d64; + background-color: #7dc4e4; + color: #cad3f5; + } + + .control-center .notification-row .notification-background .close-button { + margin: 7px; + padding: 2px; + border-radius: 6.3px; + color: #24273a; + background-color: #ee99a0; + } + + .close-button { + border-radius: 6.3px; + } + + .control-center .notification-row .notification-background .close-button:hover { + background-color: #ed8796; + color: #24273a; + } + + .control-center .notification-row .notification-background .close-button:active { + background-color: #ed8796; + color: #24273a; + } + + .control-center .notification-row .notification-background:hover { + box-shadow: inset 0 0 0 1px #494d64; + background-color: #8087a2; + color: #cad3f5; + } + + .control-center .notification-row .notification-background:active { + box-shadow: inset 0 0 0 1px #494d64; + background-color: #7dc4e4; + color: #cad3f5; + } + + .notification.critical progress { + background-color: #ed8796; + } + + .notification.low progress, + .notification.normal progress { + background-color: #8aadf4; + } + + .control-center-dnd { + margin-top: 5px; + border-radius: 8px; + background: #363a4f; + border: 1px solid #494d64; + box-shadow: none; + } + + .control-center-dnd:checked { + background: #363a4f; + } + + .control-center-dnd slider { + background: #494d64; + border-radius: 8px; + } + + .widget-dnd { + margin: 0px; + font-size: 1.1rem; + } + + .widget-dnd > switch { + font-size: initial; + border-radius: 8px; + background: #363a4f; + border: 1px solid #494d64; + box-shadow: none; + } + + .widget-dnd > switch:checked { + background: #363a4f; + } + + .widget-dnd > switch slider { + background: #494d64; + border-radius: 8px; + border: 1px solid #6e738d; + } + + .widget-mpris .widget-mpris-player .widget-mpd { + background: #363a4f; + padding: 7px; + } + + .widget-mpris .widget-mpris-title .widget-mpd .widget-mpd-title { + font-size: 1.2rem; + } + + .widget-mpris .widget-mpris-subtitle .widget-mpd .widget-mpd-subtitle { + font-size: 0.8rem; + } + + .widget-menubar > box > .menu-button-bar > button > label { + font-size: 3rem; + padding: 0.5rem 2rem; + } + + .widget-menubar > box > .menu-button-bar > :last-child { + color: #ed8796; + } + + .power-buttons button:hover, + .powermode-buttons button:hover, + .screenshot-buttons button:hover { + background: #363a4f; + } + + .control-center .widget-label > label { + color: #cad3f5; + font-size: 2rem; + } + + .widget-buttons-grid { + padding-top: 1rem; + } + + .widget-buttons-grid > flowbox > flowboxchild > button label { + font-size: 2.5rem; + } + + .widget-volume { + padding-top: 1rem; + } + + .widget-volume label { + font-size: 1.5rem; + color: #7dc4e4; + } + + .widget-volume trough highlight { + background: #7dc4e4; + } + + .widget-backlight trough highlight { + background: #eed49f; + } + + .widget-backlight label { + font-size: 1.5rem; + color: #eed49f; + } + + .widget-backlight .KB { + padding-bottom: 1rem; + } + + .image { + padding-right: 0.5rem; + } + ''; + }; + programs.waybar = { enable = true; systemd.enable = true; systemd.target = "graphical-session.target"; style = '' - /* Custom colors from lib/theme/default.nix */ - @define-color rosewater ${colors.rosewater.hex}; - @define-color flamingo ${colors.flamingo.hex}; - @define-color pink ${colors.pink.hex}; - @define-color mauve ${colors.mauve.hex}; - @define-color red ${colors.red.hex}; - @define-color maroon ${colors.maroon.hex}; - @define-color peach ${colors.peach.hex}; - @define-color yellow ${colors.yellow.hex}; - @define-color green ${colors.green.hex}; - @define-color teal ${colors.teal.hex}; - @define-color sky ${colors.sky.hex}; - @define-color sapphire ${colors.sapphire.hex}; - @define-color blue ${colors.blue.hex}; - @define-color lavender ${colors.lavender.hex}; - @define-color text ${colors.text.hex}; - @define-color subtext1 ${colors.subtext1.hex}; - @define-color subtext0 ${colors.subtext0.hex}; - @define-color overlay2 ${colors.overlay2.hex}; - @define-color overlay1 ${colors.overlay1.hex}; - @define-color overlay0 ${colors.overlay0.hex}; - @define-color surface2 ${colors.surface2.hex}; - @define-color surface1 ${colors.surface1.hex}; - @define-color surface0 ${colors.surface0.hex}; - @define-color base ${colors.base.hex}; - @define-color mantle ${colors.mantle.hex}; - @define-color crust ${colors.crust.hex}; + * { + min-height: 0; + min-width: 0; + font-family: Cantarell; + font-size: 16px; + font-weight: 600; + } - ${builtins.readFile ./mullvad-style.css} - ${builtins.readFile ./style.css} + window#waybar { + transition-property: background-color; + transition-duration: 0.5s; + /* background-color: #1e1e2e; */ + /* background-color: #181825; */ + background-color: #11111b; + /* background-color: rgba(24, 24, 37, 0.6); */ + } + + #workspaces button { + padding: 0.3rem 0.6rem; + margin: 0.4rem 0.25rem; + border-radius: 6px; + /* background-color: #181825; */ + background-color: #1e1e2e; + color: #cdd6f4; + } + + #workspaces button:hover { + color: #1e1e2e; + background-color: #cdd6f4; + } + + #workspaces button.active { + background-color: #1e1e2e; + color: #89b4fa; + } + + #workspaces button.urgent { + background-color: #1e1e2e; + color: #f38ba8; + } + + #clock, + #pulseaudio, + #custom-logo, + #custom-power, + #custom-spotify, + #custom-notification, + #cpu, + #tray, + #memory, + #window, + #mpd + #mpris { + padding: 0.3rem 0.6rem; + margin: 0.4rem 0.25rem; + border-radius: 6px; + /* background-color: #181825; */ + background-color: #1e1e2e; + } + + #mpris.playing { + color: #a6e3a1; + } + + #mpris.paused { + color: #9399b2; + } + + #custom-sep { + padding: 0px; + color: #585b70; + } + + window#waybar.empty #window { + background-color: transparent; + } + + #cpu { + color: #94e2d5; + } + + #memory { + color: #cba6f7; + } + + #clock { + color: #74c7ec; + } + + #clock.simpleclock { + color: #89b4fa; + } + + #window { + color: #cdd6f4; + } + + #pulseaudio { + color: #b4befe; + } + + #pulseaudio.muted { + color: #a6adc8; + } + + #custom-logo { + color: #89b4fa; + } + + #custom-power { + color: #f38ba8; + } + + tooltip { + background-color: #181825; + border: 2px solid #89b4fa; + } ''; - settings = let - # Import the Mullvad scripts - mullvad-status = import ./mullvad-status.nix {inherit pkgs;}; - mullvad-server-list = import ./mullvad-server-list.nix {inherit pkgs;}; - mullvad-menu = import ./mullvad-menu.nix {inherit pkgs;}; - # Script to toggle Mullvad connection - mullvad-toggle = pkgs.writeShellScriptBin "mullvad-toggle" '' - set -euo pipefail - if mullvad status | grep -q "Connected"; then - mullvad disconnect - else - mullvad connect - fi - # Optional: trigger a Waybar refresh if needed, though interval should handle it - # pkill -SIGRTMIN+8 waybar - ''; - - cava = pkgs.writeShellScriptBin "cava" "${builtins.readFile ./bar.sh}"; - in { + settings = { mainBar = { layer = "bottom"; position = "top"; @@ -80,18 +497,12 @@ in { "gtk-layer-shell" = true; passthrough = false; "fixed-center" = true; - "modules-left" = ["hyprland/workspaces" "hyprland/window" "niri/workspaces" "niri/window" "network#speed" "custom/cava-system" "custom/cava-tt"]; + "modules-left" = ["hyprland/workspaces" "hyprland/window"]; "modules-center" = ["mpris"]; "modules-right" = [ "cpu" "memory" - "temperature" - "custom/gpu-usage" - "custom/gpu-mem" - "custom/gpu-temp" "pulseaudio" - "custom/mullvad" - "custom/weather" "clock" "clock#simpleclock" "tray" @@ -100,7 +511,7 @@ in { ]; "custom/spotify" = { - format = "{}"; + format = " {}"; "return-type" = "json"; "on-click" = "playerctl -p spotify play-pause"; "on-click-right" = "spotifatius toggle-liked"; @@ -108,16 +519,6 @@ in { exec = "spotifatius monitor"; }; - "custom/mullvad" = { - format = "{}"; - return-type = "json"; - interval = 1; - exec = "${mullvad-status}/bin/mullvad-status-waybar"; - "on-click" = "${mullvad-toggle}/bin/mullvad-toggle"; - "on-click-right" = "${mullvad-menu}/bin/mullvad-menu"; - tooltip = true; - }; - mpd = { format = "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {title}"; "format-disconnected" = "Disconnected "; @@ -157,60 +558,6 @@ in { }; }; - "custom/cava-system" = { - format = "{}"; - exec = "${cava}/bin/cava alsa_output.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line1__sink.monitor"; - }; - - "custom/cava-tt" = { - format = "{}"; - exec = "${cava}/bin/cava cava-line-in.monitor"; - }; - - "custom/weather" = { - "format" = "{}°F"; - interval = 3600; - exec = "${lib.getExe pkgs.wttrbar} --location 'Holland,MI' --fahrenheit --mph"; - return-type = "json"; - }; - - "custom/gpu-temp" = { - interval = 10; - exec = "nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits"; - format = "{}°C "; - tooltip = false; - }; - - "custom/gpu-mem" = { - interval = 10; - exec = "nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits | awk '{printf \"%.1f\", $1/1024}'"; - format = "{}Gi"; - tooltip = false; - }; - - "custom/gpu-usage" = { - interval = 2; - exec = "nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits"; - format = "{}%"; - tooltip = false; - }; - - "network#speed" = { - interval = 1; - format = "{ifname}%%"; - format-wifi = " {bandwidthDownBytes} {bandwidthUpBytes}"; - format-ethernet = " {bandwidthDownBytes} {bandwidthUpBytes}"; - format-disconnected = "󰌙"; - tooltip-format = "{ipaddr}"; - format-linked = "󰈁 {ifname} (No IP)"; - tooltip-format-wifi = "{essid} {icon} {signalStrength}%"; - tooltip-format-ethernet = "{ifname} 󰌘"; - tooltip-format-disconnected = "󰌙 Disconnected"; - max-length = 22; - min-length = 20; - format-icons = ["󰤯" "󰤟" "󰤢" "󰤥" "󰤨"]; - }; - "hyprland/workspaces" = { "on-click" = "activate"; format = "{id}"; @@ -225,24 +572,16 @@ in { tray = { "show-passive-items" = true; - spacing = 2; + spacing = 10; }; "clock#simpleclock" = { tooltip = false; - format = "{:%H:%M}"; - }; - - "temperature" = { - hwmon-path-abs = "/sys/devices/platform/asus-ec-sensors/hwmon/hwmon3"; - input_filename = "temp2_input"; - critical-threshold = 70; - format = "{temperatureC}°C "; - format-critical = "󰸁 {temperatureC}°C"; + format = " {:%H:%M}"; }; clock = { - format = "{:L%a %d %b}"; + format = " {:L%a %d %b}"; calendar = { format = { days = "{}"; @@ -259,22 +598,21 @@ in { }; cpu = { - format = "{usage}%"; + format = " {usage}%"; tooltip = true; interval = 1; }; memory = { - interval = 1; - format = "{used:0.1f}Gi"; + format = " {used:0.1f}Gi"; }; pulseaudio = { - format = "{icon} {volume}%"; - "format-muted" = ""; + format = "{icon} {volume}%"; + "format-muted" = " muted"; "format-icons" = { headphone = ""; - default = ["" ""]; + default = [" " " " " "]; }; "on-click" = "pavucontrol"; }; diff --git a/modules/home/apps/helpers/waybar/mullvad-menu.nix b/modules/home/apps/helpers/waybar/mullvad-menu.nix deleted file mode 100644 index ec8c242..0000000 --- a/modules/home/apps/helpers/waybar/mullvad-menu.nix +++ /dev/null @@ -1,7 +0,0 @@ -{pkgs}: let - script = ./mullvad-menu.sh; -in - pkgs.writeScriptBin "mullvad-menu" '' - #!${pkgs.runtimeShell} - exec ${pkgs.bash}/bin/bash ${script} - '' diff --git a/modules/home/apps/helpers/waybar/mullvad-menu.sh b/modules/home/apps/helpers/waybar/mullvad-menu.sh deleted file mode 100755 index 5e647b6..0000000 --- a/modules/home/apps/helpers/waybar/mullvad-menu.sh +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Helper: pick a relay (country [city] [hostname]) via fuzzel + jq -pick_relay() { - local api="$API_RESPONSE" - local country_list country_sel country_code - local city_list city_sel city_code loc_key - local host_list host_sel - - # Build "Country Name (cc)" array - mapfile -t country_list < <( - jq -r ' - .locations - | to_entries[] - | "\(.value.country) (\(.key|split("-")[0]))" - ' <<<"$api" | sort -u - ) - country_sel=$(printf '%s\n' "${country_list[@]}" | - fuzzel --dmenu --prompt="Select country:") - [[ -z "$country_sel" ]] && return 1 - country_code=$(grep -oP '(?<=\()[^)]+(?=\))' <<<"$country_sel") - - # Build "City Name (ccc)" array for that country - mapfile -t city_list < <( - jq -r --arg cc "$country_code" ' - .locations - | to_entries[] - | select(.key|startswith("\($cc)-")) - | "\(.value.city) (\(.key|split("-")[1]))" - ' <<<"$api" | sort -u - ) - if ((${#city_list[@]})); then - city_sel=$(printf '%s\n' "${city_list[@]}" | - fuzzel --dmenu --prompt="Select city in $country_sel:") - [[ -z "$city_sel" ]] && return 1 - city_code=$(grep -oP '(?<=\()[^)]+(?=\))' <<<"$city_sel") - loc_key="$country_code-$city_code" - fi - - # Optional hostname picker - mapfile -t host_list < <( - jq -r --arg loc "${loc_key:-}" ' - ( .openvpn.relays[] - , .wireguard.relays[] - , .bridge.relays[] ) - | select(.location == $loc) - | .hostname - ' <<<"$api" | sort -u - ) - if ((${#host_list[@]})); then - host_sel=$(printf '%s\n' "${host_list[@]}" | - fuzzel --dmenu --prompt="Select hostname (optional):") - # if they pick a hostname, we switch to pure-hostname mode - [[ -n "$host_sel" ]] && { - RELAY_CMD_ARGS=("$host_sel") - return 0 - } - fi - - # Assemble country [city] - RELAY_CMD_ARGS=("$country_code") - [[ -n "${city_code-}" ]] && RELAY_CMD_ARGS+=("$city_code") - return 0 -} - -# Ensure mullvad CLI exists -if ! command -v mullvad >/dev/null 2>&1; then - echo "Mullvad CLI not found" | fuzzel --dmenu - exit 1 -fi - -# Fetch status and API once -STATUS_RAW=$(mullvad status 2>/dev/null || echo "Disconnected") -API_RESPONSE=$(curl -s "https://api.mullvad.net/app/v1/relays") - -# Determine state and current relay (if any) -if [[ $STATUS_RAW == Connecting* ]]; then - STATE=Connecting -elif grep -q "^Connected" <<<"$STATUS_RAW"; then - STATE=Connected -else - STATE=Disconnected -fi - -# Try to parse the current relay hostname for Connected/Connecting -if [[ $STATE != Disconnected ]]; then - CURRENT_RELAY=$(grep -E 'Relay:' <<<"$STATUS_RAW" | - sed -E 's/.*Relay:[[:space:]]*//') -fi - -# Main menu -case $STATE in -Connected | Connecting) - # Offer Disconnect or Change Location - CHOICE=$(printf "Disconnect\nChange Location" | - fuzzel --dmenu --prompt="$STATE ${CURRENT_RELAY:-}") - case "$CHOICE" in - Disconnect) - mullvad disconnect - ;; - "Change Location") - if pick_relay; then - mullvad relay set location "${RELAY_CMD_ARGS[@]}" - fi - ;; - esac - ;; -Disconnected) - # Offer Connect or Connect to Location - CHOICE=$(printf "Connect\nConnect to Location" | - fuzzel --dmenu --prompt="Disconnected") - case "$CHOICE" in - Connect) - mullvad connect - ;; - "Connect to Location") - if pick_relay; then - mullvad relay set location "${RELAY_CMD_ARGS[@]}" - mullvad connect - fi - ;; - esac - ;; -esac - diff --git a/modules/home/apps/helpers/waybar/mullvad-server-list.nix b/modules/home/apps/helpers/waybar/mullvad-server-list.nix deleted file mode 100644 index 1dc0a25..0000000 --- a/modules/home/apps/helpers/waybar/mullvad-server-list.nix +++ /dev/null @@ -1,57 +0,0 @@ -{pkgs}: -pkgs.writeShellScriptBin "mullvad-server-list" '' - #!${pkgs.runtimeShell} - set -euo pipefail - - # Check if mullvad is installed - if ! command -v mullvad >/dev/null 2>&1; then - echo "Mullvad CLI not found" | fuzzel --dmenu - exit 1 - fi - - # Get the list of countries - COUNTRIES=$(mullvad relay list | grep -E "^[[:space:]]+[[:alpha:]]" | sed 's/^[[:space:]]*//g') - - # If no argument is provided, show the list of countries - if [ $# -eq 0 ]; then - echo "$COUNTRIES" | sort | fuzzel --dmenu --prompt="Select country: " - exit 0 - fi - - COUNTRY="$1" - - # If country is provided but no city, show cities for that country - if [ $# -eq 1 ]; then - CITIES=$(mullvad relay list | grep -A 100 "^[[:space:]]*$COUNTRY" | grep -E "^[[:space:]]{4}[[:alpha:]]" | sed 's/^[[:space:]]*//g' | head -n $(mullvad relay list | grep -A 100 "^[[:space:]]*$COUNTRY" | grep -E "^[[:space:]]{4}[[:alpha:]]" | wc -l)) - - if [ -z "$CITIES" ]; then - # If no cities found, show servers for this country - SERVERS=$(mullvad relay list | grep -A 100 "^[[:space:]]*$COUNTRY" | grep -E "^[[:space:]]{8}[a-z0-9]+" | sed 's/^[[:space:]]*//g' | cut -d' ' -f1-2) - echo "$SERVERS" | fuzzel --dmenu --prompt="Select server in $COUNTRY: " - else - echo "$CITIES" | fuzzel --dmenu --prompt="Select city in $COUNTRY: " - fi - exit 0 - fi - - # If both country and city are provided, show servers in that city - CITY="$2" - SERVERS=$(mullvad relay list | grep -A 100 "^[[:space:]]*$COUNTRY" | grep -A 100 "^[[:space:]]*$CITY" | grep -E "^[[:space:]]{8}[a-z0-9]+" | sed 's/^[[:space:]]*//g') - - # Extract server information and load (where available) - SERVER_INFO="" - while read -r server; do - # Get server details - SERVER_NAME=$(echo "$server" | awk '{print $1}') - SERVER_TYPE=$(echo "$server" | awk '{print $2}') - - # Get server load if available (using 'mullvad relay list --location all') - LOAD_INFO=$(mullvad relay list --location all | grep "$SERVER_NAME" | grep -o '[0-9]\+%' || echo "N/A") - - # Add server with load info to the list - SERVER_INFO="${SERVER_INFO}${SERVER_NAME} (${SERVER_TYPE}) - Load: ${LOAD_INFO}"$'\n' - done <<< "$SERVERS" - - # Display the server list with load information - echo "$SERVER_INFO" | grep -v "^$" | fuzzel --dmenu --prompt="Select server in $CITY: " -'' diff --git a/modules/home/apps/helpers/waybar/mullvad-status.nix b/modules/home/apps/helpers/waybar/mullvad-status.nix deleted file mode 100644 index 5d2edcf..0000000 --- a/modules/home/apps/helpers/waybar/mullvad-status.nix +++ /dev/null @@ -1,4 +0,0 @@ -{pkgs}: -pkgs.writeShellScriptBin "mullvad-status-waybar" '' - exec ${pkgs.bash}/bin/bash ${./mullvad-status.sh} | jq -c -'' diff --git a/modules/home/apps/helpers/waybar/mullvad-status.sh b/modules/home/apps/helpers/waybar/mullvad-status.sh deleted file mode 100755 index bfc3438..0000000 --- a/modules/home/apps/helpers/waybar/mullvad-status.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Get status (fall back to “Disconnected” on error) -STATUS=$(mullvad status 2>/dev/null || echo "Disconnected") - -if echo "$STATUS" | grep -q "^Connected"; then - # Extract relay hostname - SERVER=$(echo "$STATUS" | - sed -n 's/^[[:space:]]*Relay:[[:space:]]*//p' | - sed 's/^[[:space:]]*//;s/[[:space:]]*$//') - - # Grab the entire Visible location line (location + IPs) - FULL_LOC=$(echo "$STATUS" | - sed -n 's/^[[:space:]]*Visible location:[[:space:]]*//p') - - # Split off the human‐readable location (before first dot) - LOCATION=${FULL_LOC%%.*} - - # The part after the first “. ” is the IP info - IPS=${FULL_LOC#*. } - - TOOLTIP="Connected via ${SERVER} (${IPS})" - - # Emit JSON for Waybar - echo '{"text": "'"${LOCATION}"'" - , "tooltip": "'"${TOOLTIP}"'" - , "class": "connected" - }' -else - echo '{"text": "Disconnected" - , "tooltip": "Mullvad: Disconnected" - , "class": "disconnected" - }' -fi diff --git a/modules/home/apps/helpers/waybar/mullvad-style.css b/modules/home/apps/helpers/waybar/mullvad-style.css deleted file mode 100644 index de1975c..0000000 --- a/modules/home/apps/helpers/waybar/mullvad-style.css +++ /dev/null @@ -1,14 +0,0 @@ -/* Mullvad specific styles */ -#custom-mullvad.connected { - color: @green; -} - -#custom-mullvad.disconnected { - color: @red; -} - -#custom-mullvad { - margin: 0 8px; - padding: 0 5px; - min-width: 100px; -} diff --git a/modules/home/apps/helpers/waybar/style.css b/modules/home/apps/helpers/waybar/style.css deleted file mode 100644 index 73e084f..0000000 --- a/modules/home/apps/helpers/waybar/style.css +++ /dev/null @@ -1,199 +0,0 @@ -* { - font-family: Iosevka Nerd Font, monospace; - min-height: 14px; - font-size: 14px; - border: none; - border-radius: 6px; - padding: 4px; - margin: 0; - box-shadow: none; - text-shadow: none; - background-color: transparent; -} - -window#waybar { - padding: 8px; - background-color: @crust; -} - -#custom-cava-system, #custom-cava-tt { - color: @mauve; - border-left: 0px; - border-right: 0px; - padding: 6px; - font-family: 'bargraph'; - background: @base; - margin: 0px 2px; -} - -#window { - padding: 0px 8px 0px 8px; - background-color: @base; -} - -#cpu { - color: @green; - padding: 0px 12px; - background: @base; - margin-left: 1px; - border-radius: 6px 0 0 6px; -} - -#memory { - color: @green; - padding: 0px 12px; - background: @base; - margin: 0; - border-radius: 0; -} - -#temperature { - color: @green; - padding: 0px 12px; - background: @base; - margin-right: 1px; - border-radius: 0 6px 6px 0; -} - -#custom-gpu-temp { - padding: 0px 12px; - margin-right: 2px; - color: @blue; - background: @base; - border-radius: 0 6px 6px 0; -} - -#custom-gpu-mem { - padding: 0px 12px; - margin: 0; - color: @blue; - background: @base; - border-radius: 0; -} - -#custom-gpu-usage { - padding: 0px 12px; - margin-left: 1px; - color: @blue; - background: @base; - border-radius: 6px 0 0 6px; -} - -#tray { - background: @base; - padding: 4px; -} - -/* General Styling */ -tooltip, -menu, -#workspaces, -#clock, -#pulseaudio, -#backlight, -#bluetooth, -#network, -#battery, -#custom-power, -#custom-notification, -#custom-mullvad, -#custom-weather { - background: @base; - padding: 8px 8px; - margin-left: 1px; - margin-right: 1px; - border-radius: 6px; -} - -#custom-mullvad, -#custom-notification { - padding-left: 12px; - padding-right: 18px; -} - -#custom-power { - color: @red; - padding-left: 12px; - padding-right: 18px; -} - -#workspaces { - background: @base; - margin: 0; - margin-left: 3px; - padding: 0; - font-weight: bold; - font-style: normal; - opacity: 1; - font-size: 16px; - color: @surface0; - border-radius: 6px; -} - -#workspaces button { - padding: 0px 5px; - margin: 3px; - border-radius: 6px; - border: none; - transition: all 0.3s ease-in-out; - opacity: 0.4; -} - -#workspaces button.active { - color: @base; - background: @mauve; - min-width: 20px; - opacity: 1; -} - -#workspaces button:hover { - color: @text; - background: @mantle; - opacity: 1; - animation: none; -} - -#clock { - padding: 0 15px; - color: @lavender; - border-radius: 6px; -} - -#custom-launcher { - font-size: 18px; - transition: none; - padding: 0px 10px; - margin-right: 2px; - background: @base; - color: @sky; - border-radius: 0 6px 6px 0; -} - -#pulseaudio { - padding: 0 8px; - margin-right: 1px; - color: @yellow; - border-radius: 6px 6px; -} - -#bluetooth, -#network { - color: @mauve; - border-radius: 6px; - margin: 0 1px; -} - -#network.speed { - background: @base; - padding: 0px 6px; - min-width: 10px; - color: @teal; - border-radius: 6px; -} - -#network { - min-width: 30px; - padding: 0 7px 0 2px; - border-radius: 6px; -} - diff --git a/modules/home/apps/term/alacritty/default.nix b/modules/home/apps/term/alacritty/default.nix index 726b0fc..20d8a1a 100644 --- a/modules/home/apps/term/alacritty/default.nix +++ b/modules/home/apps/term/alacritty/default.nix @@ -12,56 +12,22 @@ in { enable = mkBoolOpt false "Enable Alacritty Term"; fonts = { - # normal = { - # family = mkStringOpt "Cozette" "The Family of the font"; - # # style = mkStringOpt "ExtraBold" "The Style of the font"; - # }; - # bold = { - # family = mkStringOpt "Cozette" "The Family of the font"; - # # style = mkStringOpt "Heavy" "The Style of the font"; - # }; - # italic = { - # family = mkStringOpt "Cozette" "The Family of the font"; - # # style = mkStringOpt "ExtraBold Italic" "The Style of the font"; - # }; - # bold_italic = { - # family = mkStringOpt "Cozette" "The Family of the font"; - # # style = mkStringOpt "Heavy Italic" "The Style of the font"; - # }; - normal = { - family = mkStringOpt "Iosevka Nerd Font Mono" "The Family of the font"; - style = mkStringOpt "SemiBold" "The Style of the font"; + family = mkStringOpt "Iosevka" "The Family of the font"; + style = mkStringOpt "ExtraBold" "The Style of the font"; }; bold = { - family = mkStringOpt "Iosevka Nerd Font Mono" "The Family of the font"; - style = mkStringOpt "Bold" "The Style of the font"; + family = mkStringOpt "Iosevka" "The Family of the font"; + style = mkStringOpt "Heavy" "The Style of the font"; }; italic = { - family = mkStringOpt "Iosevka Nerd Font Mono" "The Family of the font"; - style = mkStringOpt "SemiBold Italic" "The Style of the font"; + family = mkStringOpt "Iosevka" "The Family of the font"; + style = mkStringOpt "ExtraBold Italic" "The Style of the font"; }; bold_italic = { - family = mkStringOpt "Iosevka Nerd Font Mono" "The Family of the font"; - style = mkStringOpt "Bold Italic" "The Style of the font"; + family = mkStringOpt "Iosevka" "The Family of the font"; + style = mkStringOpt "Heavy Italic" "The Style of the font"; }; - - # normal = { - # family = mkStringOpt "PragmataPro" "The Family of the font"; - # # style = mkStringOpt "" "The Style of the font"; - # }; - # bold = { - # family = mkStringOpt "PragmataPro" "The Family of the font"; - # style = mkStringOpt "Bold" "The Style of the font"; - # }; - # italic = { - # family = mkStringOpt "PragmataPro" "The Family of the font"; - # style = mkStringOpt "Italic" "The Style of the font"; - # }; - # bold_italic = { - # family = mkStringOpt "PragmataPro" "The Family of the font"; - # style = mkStringOpt "Bold Italic" "The Style of the font"; - # }; }; }; @@ -71,38 +37,18 @@ in { catppuccin.enable = true; settings = { - colors = { - primary.background = colors.crust.hex; - }; - env = { - term = "xterm-256color"; - }; - cursor = { - style = { - shape = "Beam"; - }; - vi_mode_style = { - shape = "Beam"; - }; - }; window = { - # opacity = 0.95; + opacity = 0.95; padding = { x = 20; y = 20; }; }; font = { - size = 16.0; - normal = fonts.mono; - bold = "${fonts.mono} Bold"; - italic = "${fonts.mono} Italic"; - bold_italic = "${fonts.mono} Bold Italic"; - - offset = { - x = 0; - y = 0; - }; + normal = cfg.fonts.normal; + bold = cfg.fonts.bold; + italic = cfg.fonts.italic; + bold_italic = cfg.fonts.bold_italic; }; }; }; diff --git a/modules/home/apps/term/foot/default.nix b/modules/home/apps/term/foot/default.nix index ad29f01..be05d62 100644 --- a/modules/home/apps/term/foot/default.nix +++ b/modules/home/apps/term/foot/default.nix @@ -17,34 +17,10 @@ in { enable = true; settings = { main = { - font = "${fonts.mono}:weight=bold:size=20"; + font = "Iosevka:weight=bold:size=20"; }; colors = { alpha = "0.9"; - - # Custom colors from lib/theme/default.nix - foreground = "${colors.text.hex}"; - background = "${colors.crust.hex}"; - - # Normal colors - regular0 = "${colors.surface1.hex}"; # black - regular1 = "${colors.red.hex}"; # red - regular2 = "${colors.green.hex}"; # green - regular3 = "${colors.yellow.hex}"; # yellow - regular4 = "${colors.blue.hex}"; # blue - regular5 = "${colors.mauve.hex}"; # magenta - regular6 = "${colors.teal.hex}"; # cyan - regular7 = "${colors.text.hex}"; # white - - # Bright colors - bright0 = "${colors.surface2.hex}"; # bright black - bright1 = "${colors.red.hex}"; # bright red - bright2 = "${colors.green.hex}"; # bright green - bright3 = "${colors.yellow.hex}"; # bright yellow - bright4 = "${colors.blue.hex}"; # bright blue - bright5 = "${colors.mauve.hex}"; # bright magenta - bright6 = "${colors.teal.hex}"; # bright cyan - bright7 = "${colors.text.hex}"; # bright white }; }; }; diff --git a/modules/home/apps/term/ghostty/default.nix b/modules/home/apps/term/ghostty/default.nix index 274d703..7dcc845 100644 --- a/modules/home/apps/term/ghostty/default.nix +++ b/modules/home/apps/term/ghostty/default.nix @@ -10,6 +10,17 @@ with lib.custom; let in { options.apps.term.ghostty = with types; { enable = mkBoolOpt false "Enable Ghostty Term"; + + fonts = { + # normal = mkStringOpt "JetBrainsMonoNL Nerd Font Mono Bold" "Normal Font"; + # bold = mkStringOpt "JetBrainsMonoNL Nerd Font Mono ExtraBold" "Bold Font"; + # italic = mkStringOpt "JetBrainsMonoNL Nerd Font Mono Bold Italic" "Italic Font"; + # bold_italic = mkStringOpt "JetBrainsMonoNL Nerd Font Mono ExtraBold Italic" "Bold Italic Font"; + normal = mkStringOpt "Pragmata Pro Mono" "Normal Font"; + bold = mkStringOpt "Iosevka ExtraBold" "Bold Font"; + italic = mkStringOpt "Iosevka Bold Italic" "Italic Font"; + bold_italic = mkStringOpt "Iosevka ExtraBold Italic" "Bold Italic Font"; + }; }; config = mkIf cfg.enable { @@ -17,19 +28,9 @@ in { enable = true; settings = { - font-family = fonts.mono; + font-family = cfg.fonts.normal; gtk-single-instance = true; gtk-titlebar = false; - - background = colors.crust.hex; - - window-padding-x = 20; - window-padding-y = 20; - window-padding-balance = true; - font-style = "SemiBold"; - font-style-bold = "Bold"; - font-style-italic = "SemiBold Italic"; - font-style-bold-italic = "Bold Italic"; }; }; }; diff --git a/modules/home/apps/term/kitty/default.nix b/modules/home/apps/term/kitty/default.nix index fd89b18..6f0bae0 100644 --- a/modules/home/apps/term/kitty/default.nix +++ b/modules/home/apps/term/kitty/default.nix @@ -1,6 +1,5 @@ { options, - pkgs, config, lib, ... @@ -11,51 +10,39 @@ with lib.custom; let in { options.apps.term.kitty = with types; { enable = mkBoolOpt false "Enable Kitty Term"; + + fonts = { + normal = mkStringOpt "JetBrainsMonoNL Nerd Font Mono Bold" "Normal Font"; + bold = mkStringOpt "JetBrainsMonoNL Nerd Font Mono ExtraBold" "Bold Font"; + italic = mkStringOpt "JetBrainsMonoNL Nerd Font Mono Bold Italic" "Italic Font"; + bold_italic = mkStringOpt "JetBrainsMonoNL Nerd Font Mono ExtraBold Italic" "Bold Italic Font"; + # normal = mkStringOpt "Iosevka Bold" "Normal Font"; + # bold = mkStringOpt "Iosevka ExtraBold" "Bold Font"; + # italic = mkStringOpt "Iosevka Bold Italic" "Italic Font"; + # bold_italic = mkStringOpt "Iosevka ExtraBold Italic" "Bold Italic Font"; + }; }; config = mkIf cfg.enable { programs.kitty = { enable = true; font = { - name = fonts.mono; - size = 16; + name = cfg.fonts.normal; + size = 14; }; extraConfig = '' - bold_font ${fonts.mono} Bold Italic - italic_font ${fonts.mono} Italic - bold_italic_font ${fonts.mono} Bold Italic - - shell ${lib.getExe pkgs.nushell} + bold_font ${cfg.fonts.bold} + italic_font ${cfg.fonts.italic} + bold_italic_font ${cfg.fonts.bold_italic} ''; catppuccin.enable = true; settings = { - window_padding_width = 20; - # background_opacity = "0.9"; - background = colors.crust.hex; - foreground = colors.text.hex; - - # Normal colors - color0 = colors.surface1.hex; # black - color1 = colors.red.hex; # red - color2 = colors.green.hex; # green - color3 = colors.yellow.hex; # yellow - color4 = colors.blue.hex; # blue - color5 = colors.mauve.hex; # magenta - color6 = colors.teal.hex; # cyan - color7 = colors.text.hex; # white - - # Bright colors - color8 = colors.surface2.hex; # bright black - color9 = colors.red.hex; # bright red - color10 = colors.green.hex; # bright green - color11 = colors.yellow.hex; # bright yellow - color12 = colors.blue.hex; # bright blue - color13 = colors.mauve.hex; # bright magenta - color14 = colors.teal.hex; # bright cyan - color15 = colors.text.hex; # bright white + window_padding_width = 12; + background_opacity = "0.9"; + # background = "#000000"; }; }; }; diff --git a/modules/home/apps/term/rio/default.nix b/modules/home/apps/term/rio/default.nix index 5d62949..72cd2a8 100644 --- a/modules/home/apps/term/rio/default.nix +++ b/modules/home/apps/term/rio/default.nix @@ -16,6 +16,7 @@ in { config = mkIf cfg.enable { programs.rio = { enable = true; + package = inputs.rio-term.packages.${pkgs.system}.default; settings = { window = { opacity = 0.9; @@ -31,27 +32,27 @@ in { fonts = { regular = { - family = fonts.mono; + family = "Iosevka"; style = "Normal"; - weight = 400; + weight = 700; }; bold = { - family = fonts.mono; + family = "Iosevka"; style = "Normal"; - weight = 700; + weight = 800; }; italic = { - family = fonts.mono; + family = "Iosevka"; style = "Italic"; - weight = 400; + weight = 700; }; bold-italic = { - family = fonts.mono; + family = "Iosevka"; style = "Italic"; - weight = 700; + weight = 800; }; }; }; diff --git a/modules/home/apps/tools/direnv/default.nix b/modules/home/apps/tools/direnv/default.nix index 6a2ca7b..5f77244 100644 --- a/modules/home/apps/tools/direnv/default.nix +++ b/modules/home/apps/tools/direnv/default.nix @@ -1,6 +1,8 @@ { + options, config, lib, + pkgs, ... }: with lib; @@ -16,12 +18,6 @@ in { direnv = { enable = true; nix-direnv.enable = true; - config = { - global = { - log_format = "-"; - log_filter = "^$"; - }; - }; }; }; home.sessionVariables = { diff --git a/modules/home/apps/tools/neovim/config/lazyvim.json b/modules/home/apps/tools/neovim/config/lazyvim.json index f2fecfc..044f553 100644 --- a/modules/home/apps/tools/neovim/config/lazyvim.json +++ b/modules/home/apps/tools/neovim/config/lazyvim.json @@ -14,7 +14,6 @@ "lazyvim.plugins.extras.lang.toml", "lazyvim.plugins.extras.lang.json", "lazyvim.plugins.extras.lang.clangd", - "lazyvim.plugins.extras.lang.rust", "lazyvim.plugins.extras.lang.markdown", "lazyvim.plugins.extras.lang.nix", "lazyvim.plugins.extras.lang.sql", @@ -33,9 +32,8 @@ "lazyvim.plugins.extras.coding.luasnip", "lazyvim.plugins.extras.coding.blink" ], - "install_version": 8, "news": { - "NEWS.md": "10960" + "NEWS.md": "6520" }, "version": 8 } diff --git a/modules/home/apps/tools/neovim/config/lua/config/lazy.lua b/modules/home/apps/tools/neovim/config/lua/config/lazy.lua index 580d5dd..7f21316 100644 --- a/modules/home/apps/tools/neovim/config/lua/config/lazy.lua +++ b/modules/home/apps/tools/neovim/config/lua/config/lazy.lua @@ -3,7 +3,34 @@ require("lazy").setup({ -- add LazyVim and import its plugins { "LazyVim/LazyVim", import = "lazyvim.plugins" }, -- import/override with your plugins + -- { import = "lazyvim.plugins.extras.lang.rust" }, + -- { import = "lazyvim.plugins.extras.lang.json" }, + -- { import = "lazyvim.plugins.extras.lang.astro" }, + -- { import = "lazyvim.plugins.extras.lang.git" }, + -- { import = "lazyvim.plugins.extras.lang.docker" }, + -- { import = "lazyvim.plugins.extras.lang.clangd" }, + -- { import = "lazyvim.plugins.extras.lang.cmake" }, + -- { import = "lazyvim.plugins.extras.lang.haskell" }, + -- { import = "lazyvim.plugins.extras.lang.java" }, + -- { import = "lazyvim.plugins.extras.lang.markdown" }, + -- { import = "lazyvim.plugins.extras.lang.nix" }, + -- { import = "lazyvim.plugins.extras.lang.sql" }, + -- { import = "lazyvim.plugins.extras.lang.svelte" }, + -- { import = "lazyvim.plugins.extras.lang.tailwind" }, + -- { import = "lazyvim.plugins.extras.lang.tex" }, + -- { import = "lazyvim.plugins.extras.lang.typescript" }, + -- { import = "lazyvim.plugins.extras.lang.toml" }, + -- { import = "lazyvim.plugins.extras.lang.angular" }, + -- + -- { import = "lazyvim.plugins.extras.formatting.prettier" }, + -- + -- { import = "lazyvim.plugins.extras.coding.luasnip" }, + -- { import = "lazyvim.plugins.extras.coding.yanky" }, + -- + -- { import = "lazyvim.plugins.extras.dap.core" }, { import = "plugins" }, + { import = "plugins.extras.rust" }, + -- { import = "plugins.extras.clangd" }, }, defaults = { -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. diff --git a/modules/home/apps/tools/neovim/config/lua/config/options.lua b/modules/home/apps/tools/neovim/config/lua/config/options.lua index 329fdd6..a2fd6f4 100644 --- a/modules/home/apps/tools/neovim/config/lua/config/options.lua +++ b/modules/home/apps/tools/neovim/config/lua/config/options.lua @@ -9,7 +9,3 @@ end -- in this case. vim.g.lazyvim_blink_main = true - -vim.o.termguicolors = true - -vim.g.lazyvim_python_lsp = "basedpyright" diff --git a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua index 436b23a..ef2df27 100644 --- a/modules/home/apps/tools/neovim/config/lua/plugins/core.lua +++ b/modules/home/apps/tools/neovim/config/lua/plugins/core.lua @@ -6,51 +6,61 @@ return { news = { lazyvim = false }, }, }, + { + "drewxs/ash.nvim", + lazy = false, + priority = 1000, + }, + { + "dgox16/oldworld.nvim", + lazy = false, + priority = 1000, + }, + { + "snacks.nvim", + opts = { + scroll = { + enabled = false, + }, + dashboard = { + preset = { + header = [[ + /l、 + (゚、 。 7 + l ~ヽ + じしf_,)ノ + ]], + }, + }, + }, + }, + -- { + -- "uZer/pywal16.nvim", + -- -- for local dev replace with: + -- -- dir = '~/your/path/pywal16.nvim', + -- config = function() + -- vim.cmd.colorscheme("pywal16") + -- end, + -- }, { "catppuccin", - config = function() - require("catppuccin").setup({ - transparent_background = false, - integrations = { - blink_cmp = true, - nvimtree = true, - }, - custom_highlights = function(colors) - return { - Normal = { bg = colors.crust }, - NormalFloat = { bg = colors.crust }, - - -- Completion menu (nvim-cmp) - Pmenu = { bg = colors.crust }, - PmenuSel = { bg = colors.surface0 }, - CmpItemAbbr = { bg = colors.crust }, - CmpItemAbbrMatch = { bg = colors.crust }, - - -- Tabs - TabLine = { bg = colors.crust }, - TabLineFill = { bg = colors.crust }, - TabLineSel = { bg = colors.crust }, - - -- Status line - StatusLine = { bg = colors.crust }, - StatusLineNC = { bg = colors.crust }, - - -- Line numbers - LineNr = { bg = colors.crust }, - SignColumn = { bg = colors.crust }, - } - end, - color_overrides = { - mocha = { - base = "#11111b", - mantle = "#11111b", - crust = "#11111b", - }, - }, - }) - end, + opts = { + transparent_background = true, + integrations = { + blink_cmp = true, + }, + -- color_overrides = { + -- mocha = { + -- base = "#000000", + -- mantle = "#000000", + -- crust = "#000000", + -- }, + -- }, + }, }, "f-person/git-blame.nvim", + { "nvim-lualine/lualine.nvim", enabled = false }, + { "echasnovski/mini.statusline", opts = {} }, { "stevearc/conform.nvim", opts = { @@ -66,47 +76,40 @@ return { }, }, { - "christoomey/vim-tmux-navigator", - cmd = { - "TmuxNavigateLeft", - "TmuxNavigateDown", - "TmuxNavigateUp", - "TmuxNavigateRight", - "TmuxNavigatePrevious", - "TmuxNavigatorProcessList", - }, + "folke/snacks.nvim", + priority = 1000, + lazy = false, keys = { - { "", "TmuxNavigateLeft" }, - { "", "TmuxNavigateDown" }, - { "", "TmuxNavigateUp" }, - { "", "TmuxNavigateRight" }, - { "", "TmuxNavigatePrevious" }, + { + "z", + function() + Snacks.zen() + end, + desc = "Toggle Zen Mode", + }, }, }, { - "m4xshen/hardtime.nvim", - lazy = false, - dependencies = { "MunifTanjim/nui.nvim" }, - opts = {}, + "lukas-reineke/indent-blankline.nvim", + main = "ibl", + tag = "v3.8.2", + ---@module "ibl" + ---@type ibl.config + -- opts = { + -- debounce = 100, + -- indent = { char = "|" }, + -- whitespace = { highlight = "Whitespace", "NonText" }, + -- }, }, { "neovim/nvim-lspconfig", - ---@class PluginLspOpts opts = { servers = { - jinja_lsp = {}, - emmet_ls = { - filetypes = { "html", "jinja" }, - }, - somesass_ls = {}, - slangd = { - settings = { - slangd = { - inlayHints = { - deducedTypes = true, - paramaterNames = true, - }, - }, + emmet_ls = {}, + slang = { + inlayHints = { + deducedTypes = true, + paramaterNames = true, }, }, nil_ls = { @@ -142,4 +145,10 @@ return { require("force-cul").setup() end, }, + -- { + -- "supermaven-inc/supermaven-nvim", + -- config = function() + -- require("supermaven-nvim").setup({}) + -- end, + -- }, } diff --git a/modules/home/apps/tools/starship/default.nix b/modules/home/apps/tools/starship/default.nix index 2b5f420..a68fd52 100644 --- a/modules/home/apps/tools/starship/default.nix +++ b/modules/home/apps/tools/starship/default.nix @@ -16,7 +16,6 @@ in { programs.starship = { enable = true; enableZshIntegration = config.programs.zsh.enable; - enableNushellIntegration = config.programs.nushell.enable; settings = { add_newline = false; format = "$username$directory$git_branch$git_status$python$rust$nodejs$nix_shell$cmd_duration$line_break$character"; diff --git a/modules/home/apps/tools/tmux/default.nix b/modules/home/apps/tools/tmux/default.nix index a2ef3c9..25b62ec 100644 --- a/modules/home/apps/tools/tmux/default.nix +++ b/modules/home/apps/tools/tmux/default.nix @@ -16,15 +16,15 @@ in { config = mkIf cfg.enable { catppuccin.tmux = { enable = true; - extraConfig = '' - set -g @catppuccin_window_status_style "basic" - set -g @catppuccin_status_background "#11111b" - ''; + # extraConfig = '' + # set -g @catppuccin_window_status_style "basic" + # set -g @catppuccin_status_background "#000000" + # ''; }; programs.tmux = { enable = true; - shell = "${lib.getExe pkgs.nushell}"; + shell = "${pkgs.zsh}/bin/zsh"; historyLimit = 100000; plugins = with pkgs; [ tmuxPlugins.sensible @@ -42,8 +42,7 @@ in { set-window-option -g pane-base-index 1 set-option -g renumber-windows on - set -g default-terminal "$TERM" - set -ag terminal-overrides ",$TERM:Tc" + set -g default-terminal "tmux-256color" set -g allow-passthrough on set -g status-right-length 100 diff --git a/modules/home/apps/web/librewolf/default.nix b/modules/home/apps/web/librewolf/default.nix index b6864c5..a96afd1 100644 --- a/modules/home/apps/web/librewolf/default.nix +++ b/modules/home/apps/web/librewolf/default.nix @@ -61,7 +61,7 @@ in { } ]; - icon = "https://www.openstreetmap.org/favicon.ico"; + iconUpdateURL = "https://www.openstreetmap.org/favicon.ico"; definedAliases = ["@openstreetmap" "@osm"]; }; @@ -72,7 +72,7 @@ in { } ]; - icon = "https://search.zoeys.computer/searx/static/themes/simple/img/favicon.svg"; + iconUpdateURL = "https://search.zoeys.computer/searx/static/themes/simple/img/favicon.svg"; definedAliases = ["@searx"]; }; @@ -83,7 +83,7 @@ in { } ]; - icon = "https://docs.rs/-/static/favicon.ico"; + iconUpdateURL = "https://docs.rs/-/static/favicon.ico"; definedAliases = ["@docs"]; }; @@ -94,7 +94,7 @@ in { } ]; - icon = "https://crates.io/assets/cargo.png"; + iconUpdateURL = "https://crates.io/assets/cargo.png"; definedAliases = ["@crates"]; }; }; diff --git a/modules/home/apps/web/zen/default.nix b/modules/home/apps/web/zen/default.nix deleted file mode 100644 index e61cb9a..0000000 --- a/modules/home/apps/web/zen/default.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; -with lib.custom; let - cfg = config.apps.web.zen; -in { - options.apps.web.zen = with types; { - enable = mkBoolOpt false "Enable or disable zen"; - - setDefault = mkBoolOpt false "Set zen as default browser"; - }; - - config = mkIf cfg.enable { - xdg.mimeApps.defaultApplications = mkIf cfg.setDefault { - "text/html" = "zen-beta.desktop"; - "x-scheme-handler/http" = "zen-beta.desktop"; - "x-scheme-handler/https" = "zen-beta.desktop"; - }; - }; -} diff --git a/modules/home/rice/gtk/default.nix b/modules/home/rice/gtk/default.nix index c584f05..e175b11 100644 --- a/modules/home/rice/gtk/default.nix +++ b/modules/home/rice/gtk/default.nix @@ -26,8 +26,8 @@ in { enable = true; font = { - name = fonts.ui; - size = 12; + name = "Adwaita Sans"; + size = 11; }; theme = { diff --git a/modules/home/services/hypridle/default.nix b/modules/home/services/hypridle/default.nix index 0d4d7ca..e2c70f7 100644 --- a/modules/home/services/hypridle/default.nix +++ b/modules/home/services/hypridle/default.nix @@ -21,7 +21,7 @@ in { package = pkgs.swaylock-effects; settings = with colors; { clock = true; - color = base.hex; + color = base; font = "Work Sans"; image = "${wallpaper}"; show-failed-attempts = false; @@ -33,21 +33,21 @@ in { inside-color = "00000000"; key-hl-color = "f2cdcd"; separator-color = "00000000"; - text-color = text.hex; + text-color = text; text-caps-lock-color = ""; - line-ver-color = rosewater.hex; - ring-ver-color = rosewater.hex; - inside-ver-color = base.hex; - text-ver-color = text.hex; - ring-wrong-color = teal.hex; - text-wrong-color = teal.hex; - inside-wrong-color = base.hex; - inside-clear-color = base.hex; - text-clear-color = text.hex; - ring-clear-color = lavender.hex; - line-clear-color = base.hex; - line-wrong-color = base.hex; - bs-hl-color = teal.hex; + line-ver-color = love; + ring-ver-color = rose; + inside-ver-color = base; + text-ver-color = text; + ring-wrong-color = foam; + text-wrong-color = foam; + inside-wrong-color = base; + inside-clear-color = base; + text-clear-color = text; + ring-clear-color = iris; + line-clear-color = base; + line-wrong-color = base; + bs-hl-color = foam; line-uses-ring = false; grace = 2; grace-no-mouse = true; diff --git a/modules/home/shells/fish/aliases.nix b/modules/home/shells/fish/aliases.nix new file mode 100644 index 0000000..f245343 --- /dev/null +++ b/modules/home/shells/fish/aliases.nix @@ -0,0 +1,49 @@ +{ + pkgs, + lib, + config, + ... +}: +with lib; +with pkgs; { + ytmp3 = '' + ${getExe yt-dlp} -x --continue --add-metadata --embed-thumbnail --audio-format mp3 --audio-quality 0 --metadata-from-title="%(artist)s - %(title)s" --prefer-ffmpeg -o "%(title)s.%(ext)s"''; + cat = "${getExe bat} --style=plain"; + vpn = "mullvad"; + uuid = "cat /proc/sys/kernel/random/uuid"; + grep = getExe ripgrep; + fzf = getExe skim; + untar = "tar -xvf"; + untargz = "tar -xzf"; + du = getExe du-dust; + ps = getExe procs; + lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\""; + deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo"; + m = "mkdir -p"; + fcd = "cd $(find -type d | fzf)"; + l = "ls -lF --time-style=long-iso --icons"; + sc = "sudo systemctl"; + scu = "systemctl --user "; + la = "${getExe eza} -lah --tree"; + ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension"; + tree = "${getExe eza} --tree --icons --tree"; + kys = "shutdown now"; + gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE"; + agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE"; + tsm = "transmission-remote"; + g = "git"; + n = "nix"; + r = "rebuild"; + vm = "nixos-rebuild build-vm --flake ~/nixos#earth"; + mnt = "udisksctl mount -b"; + umnt = "udisksctl unmount -b"; + burn = "pkill -9"; + diff = "diff --color=auto"; + wu = "vpn disconnect -w && awsvpnclient start --config ~/Downloads/cvpn-endpoint-085400ccc19bb4a17.ovpn"; + "v" = "nvim"; + ".." = "cd .."; + "..." = "cd ../../"; + "...." = "cd ../../../"; + "....." = "cd ../../../../"; + "......" = "cd ../../../../../"; +} diff --git a/modules/home/shells/fish/default.nix b/modules/home/shells/fish/default.nix index 77fda66..a14b78c 100644 --- a/modules/home/shells/fish/default.nix +++ b/modules/home/shells/fish/default.nix @@ -66,7 +66,7 @@ in { ''; }; - shellAliases = import ../aliases.nix {inherit pkgs lib config;}; + shellAliases = import ./aliases.nix {inherit pkgs lib config;}; }; home.packages = with pkgs; [ diff --git a/modules/home/shells/nu/aliases.nix b/modules/home/shells/nu/aliases.nix index f96d667..9066270 100644 --- a/modules/home/shells/nu/aliases.nix +++ b/modules/home/shells/nu/aliases.nix @@ -17,13 +17,16 @@ with pkgs; { untargz = "tar -xzf"; MANPAGER = "sh -c 'col -bx | bat -l man -p'"; du = getExe du-dust; + ps = getExe procs; lb = "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\""; deploy = "nixos-rebuild switch --flake ~/nixos#pluto --target-host zoeys.computer --use-remote-sudo"; - m = "mkdir"; - l = "exa -lF --time-style=long-iso --icons"; + m = "mkdir -p"; + fcd = "cd $(find -type d | fzf)"; + l = "ls -lF --time-style=long-iso --icons"; sc = "sudo systemctl"; scu = "systemctl --user "; la = "${getExe eza} -lah --tree"; + ls = "${getExe eza} -h --git --icons --color=auto --group-directories-first -s extension"; tree = "${getExe eza} --tree --icons --tree"; kys = "shutdown now"; lv = "nvim -c \"normal '\''0\""; @@ -34,8 +37,11 @@ with pkgs; { n = "nix"; r = "rebuild"; vm = "nixos-rebuild build-vm --flake ~/nixos#earth"; + mnt = "udisksctl mount -b"; + umnt = "udisksctl unmount -b"; burn = "pkill -9"; diff = "diff --color=auto"; + wu = "vpn disconnect -w && awsvpnclient start --config ~/Downloads/cvpn-endpoint-085400ccc19bb4a17.ovpn"; "v" = "nvim"; ".." = "cd .."; "..." = "cd ../../"; diff --git a/modules/home/shells/nu/default.nix b/modules/home/shells/nu/default.nix index 3b6fa8d..30dcc29 100644 --- a/modules/home/shells/nu/default.nix +++ b/modules/home/shells/nu/default.nix @@ -17,35 +17,47 @@ in { programs.nushell = { enable = true; + # Nushell doesn't need generateCompletions like fish + extraConfig = '' - $env.config.show_banner = false - - if ('TMUX' in $env == false) { - exec tmux - } - - fastfetch --config minimal - ''; - - extraEnv = '' # Environment variables - $env.LC_ALL = "en_US.UTF-8" - - $env.SSH_AUTH_SOCK = "/run/user/1000/keyring/ssh" - $env.FLAKE = "/home/zoey/nixos/" + let-env LC_ALL = "en_US.UTF-8" + let-env SSH_AUTH_SOCK = "/run/user/1000/keyring/ssh" + let-env FLAKE = "/home/zoey/nixos/" # FZF settings - $env.FZF_PREVIEW_FILE_CMD = "head -n 10" - $env.FZF_PREVIEW_DIR_CMD = "ls" + let-env FZF_PREVIEW_FILE_CMD = "head -n 10" + let-env FZF_PREVIEW_DIR_CMD = "ls" + + def pf [] { + fzf --bind ctrl-y:preview-up,ctrl-e:preview-down \ + --bind ctrl-b:preview-page-up,ctrl-f:preview-page-down \ + --bind ctrl-u:preview-half-page-up,ctrl-d:preview-half-page-down \ + --bind ctrl-k:up,ctrl-j:down \ + --preview='bat --style=numbers --color=always --line-range :100 {}' + } + + def ff [] { + let files = (pf) + for file in $files { + let cmd = $"v ($file)" + echo $cmd + nu -c $cmd + } + } + ''; + + # Nushell handles plugins differently, you might want to use modules instead + # or configure external tools directly + + extraEnv = '' + # Add any environment-specific configuration here ''; # Import aliases (you'll need to convert fish aliases to Nushell format) shellAliases = import ./aliases.nix {inherit pkgs lib config;}; }; - programs.carapace.enable = true; - programs.carapace.enableNushellIntegration = true; - home.packages = with pkgs; [ gnumake comma diff --git a/modules/home/shells/aliases.nix b/modules/home/shells/zsh/aliases.nix similarity index 100% rename from modules/home/shells/aliases.nix rename to modules/home/shells/zsh/aliases.nix diff --git a/modules/home/shells/zsh/default.nix b/modules/home/shells/zsh/default.nix index fe91f21..8e12e8c 100644 --- a/modules/home/shells/zsh/default.nix +++ b/modules/home/shells/zsh/default.nix @@ -22,7 +22,7 @@ in { LC_ALL = "en_US.UTF-8"; ZSH_AUTOSUGGEST_USE_ASYNC = "true"; SSH_AUTH_SOCK = "/run/user/1000/keyring/ssh"; - NH_FLAKE = "/home/zoey/nixos/"; + FLAKE = "/home/zoey/nixos/"; }; # zprof.enable = true; history = { @@ -33,7 +33,7 @@ in { ignoreSpace = true; }; - initContent = let + initExtra = let sources = with pkgs; [ "${zsh-nix-shell}/share/zsh-nix-shell/nix-shell.plugin.zsh" "${zsh-history}/share/zsh/init.zsh" @@ -77,7 +77,7 @@ in { media = "/run/media/$USER"; }; - shellAliases = import ../aliases.nix {inherit pkgs lib config;}; + shellAliases = import ./aliases.nix {inherit pkgs lib config;}; }; home.packages = with pkgs; [ diff --git a/modules/home/wms/hyprland/default.nix b/modules/home/wms/hyprland/default.nix index 2602d18..1d6d28d 100644 --- a/modules/home/wms/hyprland/default.nix +++ b/modules/home/wms/hyprland/default.nix @@ -54,7 +54,10 @@ in { wayland.windowManager.hyprland.settings = with colors; { exec-once = [ - "zen" + # "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"" + # "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + # "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "librewolf" "thunderbird" "vesktop" "spotify" @@ -62,31 +65,20 @@ in { "signal-desktop" ]; - # env = [ - # "XDG_SESSION_TYPE,wayland" - # "XDG_SESSION_DESKTOP,Hyprland" - # "XDG_CURRENT_DESKTOP,Hyprland" - # ]; + env = [ + "XDG_SESSION_TYPE,wayland" + "XDG_SESSION_DESKTOP,Hyprland" + "XDG_CURRENT_DESKTOP,Hyprland" + ]; bind = [ - "${mod},RETURN,exec,${lib.getExe pkgs.kitty}" + ''${mod},RETURN,exec,${lib.getExe pkgs.kitty}'' - "${mod},D,exec,fuzzel" + "${mod},D,exec,rofi -show drun" "${mod},Q,killactive" "${mod},M,exit" "${mod},P,pseudo" - "${mod},Z,exec,${pkgs.writeShellScriptBin "zen-launcher" '' - ZEN_RESULT=$(${inputs.hyprland.packages.${pkgs.system}.default}/bin/hyprctl clients -j | ${lib.getExe pkgs.jq} '.[] | select(.class | contains("zen"))') - - if [ -z "$ZEN_RESULT" ]; then - ${lib.getExe inputs.zen-browser.packages.${pkgs.system}.beta} & - disown - else - ZEN_WORKSPACE=$(echo "$ZEN_RESULT" | ${lib.getExe pkgs.jq} '.workspace.id') - ${pkgs.hyprland}/bin/hyprctl dispatch workspace "$ZEN_WORKSPACE" - fi - ''}/bin/zen-launcher" "${mod},J,togglesplit," @@ -124,13 +116,13 @@ in { gaps_out = 8; # border thiccness - border_size = 4; + border_size = 2; allow_tearing = true; # active border color - "col.active_border" = "${colors.lavender.rgb}"; - "col.inactive_border" = "${colors.base.rgb}"; + "col.active_border" = "rgb(${rose})"; + "col.inactive_border" = "rgb(${muted})"; }; input = { @@ -146,7 +138,7 @@ in { decoration = { # fancy corners - rounding = 0; + rounding = 4; # blur blur = { enabled = true; @@ -199,7 +191,7 @@ in { }; # for 10 bit color: DP-3,2560x1440@240,0x0,1,bitdepth,10,cm,hdr,sdrbrightness,1.2,sdrsaturation,1.0 - monitor = ["DP-1,2560x1440@240,0x0,1" "HDMI-A-1,disable"]; + monitor = ["DP-3,2560x1440@240,0x0,1" "HDMI-A-1,disable" "DP-1,disable"]; layerrule = [ "blur, ^(gtk-layer-shell)$" @@ -257,14 +249,14 @@ in { # }; # }; - # systemd.user.services = { - # swaybg = mkService { - # Unit.Description = "Wallpaper chooser"; - # Service = { - # ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}"; - # Restart = "always"; - # }; - # }; - # }; + systemd.user.services = { + swaybg = mkService { + Unit.Description = "Wallpaper chooser"; + Service = { + ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}"; + Restart = "always"; + }; + }; + }; }; } diff --git a/modules/home/wms/niri/default.nix b/modules/home/wms/niri/default.nix deleted file mode 100644 index 45a2d72..0000000 --- a/modules/home/wms/niri/default.nix +++ /dev/null @@ -1,515 +0,0 @@ -{ - lib, - config, - pkgs, - inputs, - ... -}: -with lib; -with lib.custom; let - cfg = config.wms.niri; - - mkService = recursiveUpdate { - Unit.PartOf = ["graphical-session.target"]; - Unit.After = ["graphical-session.target"]; - Install.WantedBy = ["graphical-session.target"]; - }; - - actions = config.lib.niri.actions; - - niri = "${config.programs.niri.package}/bin/niri"; - - mkColor = color: {inherit color;}; - mkGradient = from: to: { - angle ? 180, - relative-to ? "window", - in' ? null, - }: { - gradient = {inherit from to angle relative-to in';}; - }; - - spawnSlackOnWeekday = pkgs.writeShellScriptBin "spawn-slack-on-weekday" '' - # Get the day of the week (1=Monday, ..., 7=Sunday) - DAY_OF_WEEK=$(${pkgs.coreutils}/bin/date +%u) - - # Check if it's a weekday (between 1 and 5 inclusive) - if [ "$DAY_OF_WEEK" -ge 1 ] && [ "$DAY_OF_WEEK" -le 5 ]; then - # Execute Slack. Use the full path for robustness. - # Ensure pkgs.slack is available (e.g., via environment.systemPackages) - exec ${pkgs.slack}/bin/slack - fi - # Exit successfully if not a weekday or after exec replaces the process - exit 0 - ''; -in { - options.wms.niri = with types; { - enable = mkBoolOpt false "Enable niri"; - }; - - config = mkIf cfg.enable { - programs.niri = { - package = pkgs.niri; - - settings = { - # Input device configuration - input = { - keyboard = { - # xkb settings are empty in KDL, using defaults/empty strings - xkb = { - rules = ""; - model = ""; - layout = ""; - variant = ""; - options = null; # Or "" if you prefer explicit empty - }; - }; - - touchpad = { - enable = true; # Not explicitly 'off' in KDL - tap = true; - dwt = false; # Commented out in KDL - dwtp = false; # Commented out in KDL - natural-scroll = true; - # accel-speed = 0.2; # Commented out - # accel-profile = "flat"; # Commented out - # scroll-method = "two-finger"; # Commented out - disabled-on-external-mouse = true; - }; - - mouse = { - enable = true; # Not explicitly 'off' in KDL - natural-scroll = false; # Commented out in KDL - accel-speed = 0.2; - accel-profile = "flat"; - # scroll-method = "no-scroll"; # Commented out - }; - - trackpoint = { - enable = true; # Not explicitly 'off' in KDL - natural-scroll = false; # Commented out - # accel-speed = 0.2; # Commented out - # accel-profile = "flat"; # Commented out - # scroll-method = "on-button-down"; # Commented out - # scroll-button = 273; # Commented out - middle-emulation = false; # Commented out - }; - - warp-mouse-to-focus = true; - - focus-follows-mouse = { - enable = false; # Commented out in KDL - # max-scroll-amount = "0%"; # Only relevant if enabled - }; - }; - - # Output configuration - outputs."DP-1" = { - enable = true; # Not explicitly 'off' - mode = { - width = 2560; - height = 1440; - refresh = 239.972; - }; - scale = 1; - transform = { - # "normal" - rotation = 0; - flipped = false; - }; - position = { - x = 0; - y = 0; - }; - }; - - # Environment variables - environment = { - DISPLAY = ":0"; # for applications using xwayland-satillite - }; - - hotkey-overlay = { - skip-at-startup = true; - }; - - # Layout settings - layout = { - gaps = 16; - center-focused-column = "never"; - - preset-column-widths = [ - {proportion = 0.33333;} - {proportion = 0.5;} - {proportion = 0.66667;} - # { fixed = 1920; } # Example if needed - ]; - - # preset-window-heights = []; # Empty in KDL - - default-column-width = {proportion = 0.5;}; - # default-column-width = {}; # Alternative from KDL comments - - focus-ring = { - enable = true; # Not explicitly 'off' - width = 4; - active = mkGradient colors.blue.hex colors.sky.hex {angle = 45;}; - # active = mkColor "#7fc8ff"; # Alternative solid color from KDL - inactive = mkGradient colors.surface1.hex colors.surface2.hex { - angle = 45; - relative-to = "workspace-view"; - }; - # inactive = mkColor "#505050"; # Alternative solid color from KDL - }; - - border = { - enable = true; # Explicitly 'off' in KDL - width = 0; - active = mkColor colors.blue.hex; - inactive = mkColor colors.base.hex; - # active-gradient = ... # Commented out in KDL - # inactive-gradient = ... # Commented out in KDL - }; - - struts = { - # left = 64; # Commented out - # right = 64; # Commented out - # top = 64; # Commented out - # bottom = 64; # Commented out - }; - }; - - # Spawn processes at startup - spawn-at-startup = [ - {command = ["xwayland-satellite"];} - {command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];} - {command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];} - {command = ["vesktop"];} - {command = ["spotify"];} - - {command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];} - ]; - - # Prefer server-side decorations - prefer-no-csd = true; - - # Screenshot path - screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; - # screenshot-path = null; # Alternative from KDL comments - - # Animation settings - animations = { - enable = true; # Not explicitly 'off' - # slowdown = 3.0; # Commented out - # Individual animation settings can be added here if needed - }; - - debug = { - wait-for-frame-completion-in-pipewire = []; - }; - - layer-rules = [ - { - matches = [ - {namespace = "notifications$";} - ]; - - block-out-from = "screen-capture"; - } - ]; - - # Window rules - window-rules = [ - # Password manager rule (example from KDL comments) - { - matches = [ - {app-id = "^org\\.keepassxc\\.KeePassXC$";} - {app-id = "^org\\.gnome\\.World\\.Secrets$";} - {app-id = "^1Password$";} - {app-id = "^thunderbird$";} - {app-id = "^signal$";} - {app-id = "^vesktop$";} - {app-id = "^slack$";} - ]; - block-out-from = "screen-capture"; - } - # Rounded corners rule (example from KDL comments) - { - # No matches means apply to all windows - geometry-corner-radius = { - top-left = 12.0; - top-right = 12.0; - bottom-left = 12.0; - bottom-right = 12.0; - }; - clip-to-geometry = true; - } - # Window cast target rule - { - matches = [{is-window-cast-target = true;}]; - focus-ring = { - active = mkColor colors.red.hex; - inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); - }; - shadow = { - # Only color is specified in KDL rule - color = "#7d0d2d70"; - }; - tab-indicator = { - active = mkColor colors.red.hex; - inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5); - }; - } - - # fix steam popups holy fuck they're annoying - { - matches = [ - {app-id = "^steam$";} - ]; - - excludes = [{title = "^Steam$";}]; - - open-floating = true; - - open-focused = false; - - default-floating-position = { - relative-to = "bottom-right"; - x = 16; - y = 16; - }; - } - - { - matches = [ - { - at-startup = true; - app-id = "^zen$"; - } - ]; - - open-maximized = true; - - open-on-workspace = "browser"; - } - { - matches = [ - { - at-startup = true; - app-id = "^spotify$"; - } - { - at-startup = true; - app-id = "^vesktop$"; - } - ]; - - open-on-workspace = "chat"; - } - { - matches = [ - { - at-startup = true; - app-id = "^Slack$"; - } - { - at-startup = true; - app-id = "^thunderbird$"; - } - ]; - - open-on-workspace = "work"; - } - ]; - - workspaces."01-browser" = { - name = "browser"; - }; - workspaces."02-code" = { - name = "code"; - }; - workspaces."03-chat" = { - name = "chat"; - }; - workspaces."04-work" = { - name = "work"; - }; - - # Keybindings - binds = - { - "Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;}; - - "Mod+Return" = {action = actions.spawn "kitty";}; - "Mod+D" = {action = actions.spawn "fuzzel";}; - "Super+Alt+L" = {action = actions.spawn "swaylock";}; - # "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; }; - - # "Mod+S" = {action = actions.set-dynamic-cast-window;}; - # - # "Mod+Shift+S" = {action = actions.set-dynamic-cast-monitor;}; - # - # "Mod+Z" = {action = actions.clear-dynamic-cast-target;}; - - "XF86AudioRaiseVolume" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; - }; - "XF86AudioLowerVolume" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; - }; - "XF86AudioMute" = { - allow-when-locked = true; - action = actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; - }; - "XF86AudioMicMute" = { - allow-when-locked = true; - action = - actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; - }; - - "Mod+Q" = {action = actions.close-window;}; - - "Mod+Left" = {action = actions.focus-column-left;}; - "Mod+Down" = {action = actions.focus-window-down;}; - "Mod+Up" = {action = actions.focus-window-up;}; - "Mod+Right" = {action = actions.focus-column-right;}; - "Mod+H" = {action = actions.focus-column-left;}; - "Mod+J" = {action = actions.focus-window-down;}; - "Mod+K" = {action = actions.focus-window-up;}; - "Mod+L" = {action = actions.focus-column-right;}; - - "Mod+Ctrl+Left" = {action = actions.move-column-left;}; - "Mod+Ctrl+Down" = {action = actions.move-window-down;}; - "Mod+Ctrl+Up" = {action = actions.move-window-up;}; - "Mod+Ctrl+Right" = {action = actions.move-column-right;}; - "Mod+Ctrl+H" = {action = actions.move-column-left;}; - "Mod+Ctrl+J" = {action = actions.move-window-down;}; - "Mod+Ctrl+K" = {action = actions.move-window-up;}; - "Mod+Ctrl+L" = {action = actions.move-column-right;}; - - # Alternative commands (commented out in KDL) - # "Mod+J" = { action = actions.focus-window-or-workspace-down; }; - # "Mod+K" = { action = actions.focus-window-or-workspace-up; }; - # "Mod+Ctrl+J" = { action = actions.move-window-down-or-to-workspace-down; }; - # "Mod+Ctrl+K" = { action = actions.move-window-up-or-to-workspace-up; }; - - "Mod+Home" = {action = actions.focus-column-first;}; - "Mod+End" = {action = actions.focus-column-last;}; - "Mod+Ctrl+Home" = {action = actions.move-column-to-first;}; - "Mod+Ctrl+End" = {action = actions.move-column-to-last;}; - - "Mod+Shift+Left" = {action = actions.focus-monitor-left;}; - "Mod+Shift+Down" = {action = actions.focus-monitor-down;}; - "Mod+Shift+Up" = {action = actions.focus-monitor-up;}; - "Mod+Shift+Right" = {action = actions.focus-monitor-right;}; - "Mod+Shift+H" = {action = actions.focus-monitor-left;}; - "Mod+Shift+J" = {action = actions.focus-workspace-down;}; - "Mod+Shift+K" = {action = actions.focus-workspace-up;}; - "Mod+Shift+L" = {action = actions.focus-monitor-right;}; - - "Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;}; - - "Mod+Shift+Ctrl+Left" = {action = actions.move-column-to-monitor-left;}; - "Mod+Shift+Ctrl+Down" = {action = actions.move-column-to-monitor-down;}; - "Mod+Shift+Ctrl+Up" = {action = actions.move-column-to-monitor-up;}; - "Mod+Shift+Ctrl+Right" = {action = actions.move-column-to-monitor-right;}; - "Mod+Shift+Ctrl+H" = {action = actions.move-column-to-monitor-left;}; - "Mod+Shift+Ctrl+J" = {action = actions.move-column-to-monitor-down;}; - "Mod+Shift+Ctrl+K" = {action = actions.move-column-to-monitor-up;}; - "Mod+Shift+Ctrl+L" = {action = actions.move-column-to-monitor-right;}; - - "Mod+Page_Down" = {action = actions.focus-workspace-down;}; - "Mod+Page_Up" = {action = actions.focus-workspace-up;}; - "Mod+U" = {action = actions.focus-workspace-down;}; - "Mod+I" = {action = actions.focus-workspace-up;}; - "Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;}; - "Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;}; - "Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;}; - "Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;}; - - "Mod+Shift+Page_Down" = {action = actions.move-workspace-down;}; - "Mod+Shift+Page_Up" = {action = actions.move-workspace-up;}; - "Mod+Shift+U" = {action = actions.move-workspace-down;}; - "Mod+Shift+I" = {action = actions.move-workspace-up;}; - - "Mod+WheelScrollDown" = { - cooldown-ms = 150; - action = actions.focus-workspace-down; - }; - "Mod+WheelScrollUp" = { - cooldown-ms = 150; - action = actions.focus-workspace-up; - }; - "Mod+Ctrl+WheelScrollDown" = { - cooldown-ms = 150; - action = actions.move-column-to-workspace-down; - }; - "Mod+Ctrl+WheelScrollUp" = { - cooldown-ms = 150; - action = actions.move-column-to-workspace-up; - }; - - "Mod+WheelScrollRight" = {action = actions.focus-column-right;}; - "Mod+WheelScrollLeft" = {action = actions.focus-column-left;}; - "Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;}; - "Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;}; - - "Mod+Shift+WheelScrollDown" = {action = actions.focus-column-right;}; - "Mod+Shift+WheelScrollUp" = {action = actions.focus-column-left;}; - "Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-column-right;}; - "Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-column-left;}; - - "Mod+Comma" = {action = actions.consume-window-into-column;}; - "Mod+Period" = {action = actions.expel-window-from-column;}; - - "Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;}; - "Mod+BracketRight" = {action = actions.consume-or-expel-window-right;}; - - "Mod+R" = {action = actions.switch-preset-column-width;}; - "Mod+Shift+R" = {action = actions.switch-preset-window-height;}; - "Mod+Ctrl+R" = {action = actions.reset-window-height;}; - "Mod+F" = {action = actions.maximize-column;}; - "Mod+Shift+F" = {action = actions.fullscreen-window;}; - "Mod+C" = {action = actions.center-column;}; - "Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;}; - - "Mod+V" = {action = actions.toggle-window-floating;}; - - "Mod+Minus" = {action = actions.set-column-width "-10%";}; - "Mod+Equal" = {action = actions.set-column-width "+10%";}; - - "Mod+Shift+Minus" = {action = actions.set-window-height "-10%";}; - "Mod+Shift+Equal" = {action = actions.set-window-height "+10%";}; - - "Print" = {action = actions.screenshot {};}; # Empty attrset for default args - "Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation - "Ctrl+Alt+Delete" = {action = actions.quit {};}; - - "Mod+Shift+P" = {action = actions.power-off-monitors;}; - } - // lib.attrsets.listToAttrs (builtins.concatMap (i: - with actions; [ - { - name = "Mod+${toString i}"; - value.action = focus-workspace i; - } - # FIXME: use this action directly untril sodiboo/niri-flake#1018 is fixed. - { - name = "Mod+Shift+${toString i}"; - value.action = spawn [niri "msg" "action" "move-column-to-workspace" (toString i)]; - } - ]) (lib.range 1 9)); - }; - }; - - systemd.user.services = { - swaybg = mkService { - Unit.Description = "Wallpaper Chooser"; - Service = { - ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}"; - Restart = "always"; - }; - }; - }; - }; -} diff --git a/modules/home/work/vpn/default.nix b/modules/home/work/vpn/default.nix index d3ceba9..42432a9 100644 --- a/modules/home/work/vpn/default.nix +++ b/modules/home/work/vpn/default.nix @@ -16,6 +16,8 @@ in { config = mkIf cfg.enable { xdg.configFile."vpn/work.ovpn" = { text = '' + conifg /home/zoey/cvpn-client.ovpn + up ${pkgs.update-resolv-conf}/libexec/openvpn/update-resolv-conf down ${pkgs.update-resolv-conf}/libexec/openvpn/update-resolv-conf ''; diff --git a/modules/nixos/hardware/audio/default.nix b/modules/nixos/hardware/audio/default.nix index dae04eb..23b9e8d 100644 --- a/modules/nixos/hardware/audio/default.nix +++ b/modules/nixos/hardware/audio/default.nix @@ -13,7 +13,7 @@ in { }; config = mkIf cfg.enable { - services.pulseaudio.enable = false; + hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; @@ -22,42 +22,100 @@ in { pulse.enable = true; wireplumber.enable = true; jack.enable = true; - }; - systemd.user.services.cava-combine-inputs = { - description = "Combine MOTU M4 Line Inputs L/R for Cava"; + # extraConfig.pipewire.adjust-sample-rate = { + # "context.properties" = { + # "default.clock.rate" = 41000; + # "default.clock.allowed-rates" = [44100]; + # }; + # }; - # Ensure this runs after pipewire-pulse is started - after = ["pipewire-pulse.service"]; - wants = ["pipewire-pulse.service"]; # Start pipewire-pulse if not already running + # wireplumber.extraConfig = { + # "custom" = { + # "monitor.alsa.rules" = [ + # { + # matches = [ + # { + # "node.name" = "alsa_output.usb-Focusrite_Scarlett_Solo_USB_Y76P5M4160A866-00.HiFi__Line1__sink"; + # } + # ]; + # actions = { + # update-props = { + # "audio.format" = "S32LE"; + # "audio.rate" = 192000; + # "api.alsa.period-size" = 1024; + # }; + # }; + # } + # { + # matches = [ + # { + # "node.name" = "alsa_input.pci-0000_0d_00.4.analog-stereo"; + # } + # ]; + # actions = { + # update-props = { + # "audio.format" = "S32LE"; + # "audio.rate" = 192000; + # "api.alsa.period-size" = 1024; + # }; + # }; + # } + # { + # matches = [ + # { + # "node.name" = "~alsa_output.*"; + # } + # ]; + # actions = { + # update-props = { + # "api.alsa.period-size" = 1024; + # "api.alsa.headroom" = 8192; + # }; + # }; + # } + # ]; + # }; + # + # "99-connect-tt" = { + # "wireplumber.components" = [ + # { + # name = "auto-connect-tt.lua"; + # type = "script/lua"; + # provides = "custom.connect-tt"; + # } + # ]; + # + # "wireplumber.profiles" = { + # main = { + # "custom.connect-tt" = "required"; + # }; + # }; + # }; + # }; - # Make it part of the default user session target - wantedBy = ["default.target"]; - - # Service configuration details - serviceConfig = { - Type = "oneshot"; # Run the command once and exit - # Use RemainAfterExit if you want the service to show as 'active' after running - # RemainAfterExit = true; - - # Command to execute. Use full paths for robustness. - # We use sh -c to run multiple commands sequentially. - # pactl is provided by the pulseaudio package. - ExecStart = "${pkgs.writeShellScriptBin "cava-start" '' - echo "Attempting to load Cava combine modules..." - # Load null sink (returns non-zero if it fails AND module doesn't exist) - ${pkgs.pulseaudio}/bin/pactl load-module module-null-sink sink_name=cava-line-in sink_properties=device.description="Cava_Combined_LineIn" - # Load loopbacks (returns non-zero on failure) - ${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line3__source" sink=cava-line-in latency_msec=10 - ${pkgs.pulseaudio}/bin/pactl load-module module-loopback source="alsa_input.usb-MOTU_M4_M4MA03F7DV-00.HiFi__Line4__source" sink=cava-line-in latency_msec=10 - echo "Finished loading Cava combine modules (ignore errors if already loaded)." - # Exit successfully even if modules were already loaded (pactl might return 0) - exit 0 - ''}/bin/cava-start"; - - # Prevent service from restarting automatically - Restart = "no"; - }; + # wireplumber.extraScripts = { + # "auto-connect-tt.lua" = builtins.readFile ./auto-connect-tt.lua; + # }; + # }; + # + # # PulseAudio compatibility layer configuration for 44.1kHz + # services.pipewire.extraConfig.pipewire-pulse."92-steam-config" = { + # context.modules = [ + # { + # name = "libpipewire-module-protocol-pulse"; + # args = { + # pulse.min.req = "32/44100"; + # pulse.default.req = "32/44100"; + # pulse.min.quantum = "32/44100"; + # pulse.max.quantum = "8192/44100"; + # }; + # } + # ]; + # }; + # + # environment.sessionVariables = { + # PIPEWIRE_LATENCY = "1024/44100"; }; }; } diff --git a/modules/nixos/hardware/gpu-passthru/default.nix b/modules/nixos/hardware/gpu-passthru/default.nix index fd24086..12a22de 100644 --- a/modules/nixos/hardware/gpu-passthru/default.nix +++ b/modules/nixos/hardware/gpu-passthru/default.nix @@ -8,132 +8,15 @@ with lib; with lib.custom; let cfg = config.hardware.gpu-passthru; - - startScript = '' - #!/run/current-system/sw/bin/bash - - # Debugging - exec 19>/home/zoey/Desktop/startlogfile - BASH_XTRACEFD=19 - set -x - - # Load variables we defined - source "/etc/libvirt/hooks/kvm.conf" - - # Change to performance governor - echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor - - # Isolate host to core 0 - systemctl set-property --runtime -- user.slice AllowedCPUs=0-8 - systemctl set-property --runtime -- system.slice AllowedCPUs=0-8 - systemctl set-property --runtime -- init.scope AllowedCPUs=0-8 - - # disable vpn - mullvad disconnect -w - - # Logout - # source "/home/owner/Desktop/Sync/Files/Tools/logout.sh" - - # Stop display manager - systemctl stop display-manager.service - killall gdm-wayland-session - killall niri - killall niri-session - - # Unbind VTconsoles - echo 0 > /sys/class/vtconsole/vtcon0/bind - echo 0 > /sys/class/vtconsole/vtcon1/bind - - # Unbind EFI Framebuffer - echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind - - # Avoid race condition - sleep 5 - - # Unload NVIDIA kernel modules - modprobe -r nvidia_drm nvidia_modeset nvidia_uvm nvidia - - # Detach GPU devices from host - virsh nodedev-detach $VIRSH_GPU_VIDEO - virsh nodedev-detach $VIRSH_GPU_AUDIO - - # Load vfio module - modprobe vfio-pci - ''; - - stopScript = '' - #!/run/current-system/sw/bin/bash - - # Debugging - exec 19>/home/zoey/Desktop/stoplogfile - BASH_XTRACEFD=19 - set -x - - # Load variables we defined - source "/etc/libvirt/hooks/kvm.conf" - - # Unload vfio module - modprobe -r vfio-pci - - # Attach GPU devices from host - virsh nodedev-reattach $VIRSH_GPU_VIDEO - virsh nodedev-reattach $VIRSH_GPU_AUDIO - - # Read nvidia x config - nvidia-xconfig --query-gpu-info > /dev/null 2>&1 - - # Load NVIDIA kernel modules - modprobe nvidia_drm nvidia_modeset nvidia_uvm nvidia - - # Avoid race condition - sleep 5 - - # Bind EFI Framebuffer - echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind - - # Bind VTconsoles - echo 1 > /sys/class/vtconsole/vtcon0/bind - echo 1 > /sys/class/vtconsole/vtcon1/bind - - # Start display manager - systemctl start display-manager.service - - # Return host to all cores - systemctl set-property --runtime -- user.slice AllowedCPUs=0-31 - systemctl set-property --runtime -- system.slice AllowedCPUs=0-31 - systemctl set-property --runtime -- init.scope AllowedCPUs=0-31 - - # Change to powersave governor - echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor - ''; in { options.hardware.gpu-passthru = with types; { enable = mkBoolOpt false "Enable support for single gpu-passthru"; }; config = mkIf cfg.enable { - boot.kernelParams = ["intel_iommu=on" "iommu=pt" "transparent_hugepage=always"]; + boot.kernelParams = ["intel_iommu=on" "iommu=pt"]; boot.kernelModules = ["vfio-pci"]; - # CachyOS-inspired system performance tweaks - boot.kernel.sysctl = { - # Virtual memory tweaks - "vm.swappiness" = 10; - "vm.dirty_background_ratio" = 5; - "vm.dirty_ratio" = 10; - "vm.vfs_cache_pressure" = 50; - "vm.max_map_count" = 16777216; - - # Network optimizations - "net.core.netdev_max_backlog" = 16384; - "net.ipv4.tcp_fastopen" = 3; - "net.ipv4.tcp_max_syn_backlog" = 8192; - "net.core.somaxconn" = 8192; - - # IO scheduler optimizations - "kernel.sched_autogroup_enabled" = 0; - }; - virtualisation.libvirtd = { enable = true; onBoot = "ignore"; @@ -173,10 +56,6 @@ in { in [env]; }; - systemd.services.libvirtd-config = { - enable = lib.mkForce false; - }; - system.activationScripts.libvirt-hooks.text = '' ln -Tfs /etc/libvirt/hooks /var/lib/libvirt/hooks ''; @@ -234,12 +113,104 @@ in { }; "libvirt/hooks/qemu.d/win10/prepare/begin/start.sh" = { - text = startScript; + text = '' + #!/run/current-system/sw/bin/bash + + # Debugging + exec 19>/home/zoey/Desktop/startlogfile + BASH_XTRACEFD=19 + set -x + + # Load variables we defined + source "/etc/libvirt/hooks/kvm.conf" + + # Change to performance governor + echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + + # Isolate host to core 0 + systemctl set-property --runtime -- user.slice AllowedCPUs=0-8 + systemctl set-property --runtime -- system.slice AllowedCPUs=0-8 + systemctl set-property --runtime -- init.scope AllowedCPUs=0-8 + + # disable vpn + mullvad disconnect -w + + # Logout + # source "/home/owner/Desktop/Sync/Files/Tools/logout.sh" + + # Stop display manager + systemctl stop display-manager.service + killall gdm-wayland-session + + # Unbind VTconsoles + echo 0 > /sys/class/vtconsole/vtcon0/bind + echo 0 > /sys/class/vtconsole/vtcon1/bind + + # Unbind EFI Framebuffer + echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind + + # Avoid race condition + sleep 5 + + # Unload NVIDIA kernel modules + modprobe -r nvidia_drm nvidia_modeset nvidia_uvm nvidia + + # Detach GPU devices from host + virsh nodedev-detach $VIRSH_GPU_VIDEO + virsh nodedev-detach $VIRSH_GPU_AUDIO + + # Load vfio module + modprobe vfio-pci + ''; mode = "0755"; }; "libvirt/hooks/qemu.d/win10/release/end/stop.sh" = { - text = stopScript; + text = '' + #!/run/current-system/sw/bin/bash + + # Debugging + exec 19>/home/zoey/Desktop/stoplogfile + BASH_XTRACEFD=19 + set -x + + # Load variables we defined + source "/etc/libvirt/hooks/kvm.conf" + + # Unload vfio module + modprobe -r vfio-pci + + # Attach GPU devices from host + virsh nodedev-reattach $VIRSH_GPU_VIDEO + virsh nodedev-reattach $VIRSH_GPU_AUDIO + + # Read nvidia x config + nvidia-xconfig --query-gpu-info > /dev/null 2>&1 + + # Load NVIDIA kernel modules + modprobe nvidia_drm nvidia_modeset nvidia_uvm nvidia + + # Avoid race condition + sleep 5 + + # Bind EFI Framebuffer + echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/bind + + # Bind VTconsoles + echo 1 > /sys/class/vtconsole/vtcon0/bind + echo 1 > /sys/class/vtconsole/vtcon1/bind + + # Start display manager + systemctl start display-manager.service + + # Return host to all cores + systemctl set-property --runtime -- user.slice AllowedCPUs=0-31 + systemctl set-property --runtime -- system.slice AllowedCPUs=0-31 + systemctl set-property --runtime -- init.scope AllowedCPUs=0-31 + + # Change to powersave governor + echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor + ''; mode = "0755"; }; }; diff --git a/modules/nixos/hardware/nvidia/default.nix b/modules/nixos/hardware/nvidia/default.nix index 90a75ce..c27d05b 100644 --- a/modules/nixos/hardware/nvidia/default.nix +++ b/modules/nixos/hardware/nvidia/default.nix @@ -44,43 +44,7 @@ in { nvidiaSettings = false; # Optionally, you may need to select the appropriate driver version for your specific GPU. - package = config.boot.kernelPackages.nvidiaPackages.stable; - # package = config.boot.kernelPackages.nvidiaPackages.beta.overrideAttrs { - # patchesOpen = with pkgs; [ - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0001-Enable-atomic-kernel-modesetting-by-default.patch"; - # hash = "sha256-tvdm8nxxXslPUun33zj1kkYZOiWKK3F4nwcCkdzPW9s="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0002-Add-IBT-support.patch"; - # hash = "sha256-JUT8FwBhyRhOWxwET7Zw/xkIl8g6UCLMXSTofr0OuSg="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0003-Kbuild-Convert-EXTRA_CFLAGS-to-ccflags-y.patch"; - # hash = "sha256-W+yyiK6TpEs9IACMr/0V7EIP++u7MPOfa9ko3w8Gqtc="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0004-kernel-open-nvidia-Use-new-timer-functions-for-6.15.patch"; - # hash = "sha256-T3SY2O6Pmc8BA0oana5xGGDhBxCizwmRqMyPvgF3j8A="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0005-nvidia-uvm-Use-__iowrite64_hi_lo.patch"; - # hash = "sha256-T8BNr1H1vgEQoKB0S5cqcbq6fSQxiDK9bb/MCvMtzTI"; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0006-nvidia-uvm-Use-page_pgmap.patch"; - # hash = "sha256-YucFZ2Z7YSgUiah82uLOmd4Z/c5YLOXxzEZNO6ZvQQg="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0007-nvidia-uvm-Convert-make_device_exclusive_range-to-ma.patch"; - # hash = "sha256-AehV7D+yYBmE8FWsUiagnjB8V7S8RJSTNcVMwZIgw/I="; - # }) - # (fetchpatch { - # url = "https://raw.githubusercontent.com/CachyOS/kernel-patches/master/6.14/misc/nvidia/0008-kbuild-Add-workaround-for-GCC-15-Compilation.patch"; - # hash = "sha256-HrYBiAFy62Jll+ceVnGuJKGKDoaRObjAGIYa+yrAogA="; - # }) - # ]; - # }; + package = config.boot.kernelPackages.nvidiaPackages.beta; }; environment.variables = { diff --git a/modules/nixos/protocols/wayland/default.nix b/modules/nixos/protocols/wayland/default.nix index 5fd0e3a..cb1c1b8 100644 --- a/modules/nixos/protocols/wayland/default.nix +++ b/modules/nixos/protocols/wayland/default.nix @@ -15,35 +15,35 @@ in { }; config = mkIf cfg.enable { - services.greetd = { - enable = false; - settings = { - default_session = { - command = "niri-session"; - user = "zoey"; + environment.etc."greetd/environments".text = '' + sway + ''; + + services = { + greetd = { + enable = false; + settings = rec { + initial_session = { + # command = "sway --unsupported-gpu"; + command = "Hyprland"; + user = "zoey"; + }; + default_session = initial_session; }; }; }; services.xserver.displayManager.gdm.enable = true; - services.xserver.displayManager.gdm.wayland = true; - - # services.displayManager.sddm.enable = true; - # services.displayManager.sddm.package = lib.mkForce pkgs.kdePackages.sddm; programs.uwsm = { - waylandCompositors = { - # "mwc" = { - # prettyName = "MWC"; - # binPath = "/run/current-system/sw/bin/mwc"; - # comment = "previously owl"; - # }; - # niri = { - # prettyName = "niri"; - # binPath = "/run/current-system/sw/bin/niri"; - # comment = "niri"; - # }; - }; + enable = true; + # waylandCompositors = { + # "mwc" = { + # prettyName = "MWC"; + # binPath = "/run/current-system/sw/bin/mwc"; + # comment = "previously owl"; + # }; + # }; }; # environment.systemPackages = [ @@ -51,15 +51,14 @@ in { # ]; programs.hyprland = { - withUWSM = false; - enable = false; + withUWSM = true; + enable = true; xwayland.enable = true; package = inputs.hyprland.packages.${pkgs.system}.hyprland; portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland; }; - programs.niri.enable = true; - programs.niri.package = inputs.niri-src.packages.${pkgs.system}.niri; + programs.niri.enable = false; environment = { variables = { @@ -79,31 +78,26 @@ in { WLR_BACKEND = "wayland"; WLR_RENDERER = "wayland"; XDG_SESSION_TYPE = "wayland"; - SDL_VIDEODRIVER = "wayland,x11"; + SDL_VIDEODRIVER = "wayland"; XDG_CACHE_HOME = "/home/zoey/.cache"; CLUTTER_BACKEND = "wayland"; - - # # CachyOS-inspired Nvidia optimizations for gaming - # __GL_THREADED_OPTIMIZATIONS = "1"; - # __GL_SHADER_DISK_CACHE = "1"; - # __GL_SHADER_DISK_CACHE_SIZE = "1000000000"; - # __GL_MaxFramesAllowed = "1"; # Reduces input latency - # __GL_YIELD = "USLEEP"; # Better CPU usage when GPU-bound - # DXVK_ASYNC = "1"; - # DXVK_FRAME_RATE = "0"; # No frame rate cap from DXVK - # PROTON_ENABLE_NVAPI = "1"; - # PROTON_HIDE_NVIDIA_GPU = "0"; - # WINE_FULLSCREEN_FSR = "1"; # Enable FSR upscaling for Wine/Proton games - # MANGOHUD = "1"; # Enable MangoHud by default - # MANGOHUD_CONFIG = "cpu_temp,gpu_temp,vram,ram,position=top-left,height=500,font_size=20"; + DEFAULT_BROWSER = "${pkgs.firefox}/bin/firefox"; }; + loginShellInit = '' + dbus-update-activation-environment --systemd DISPLAY + eval $(gnome-keyring-daemon --start --components=ssh,secrets) + eval $(ssh-agent) + ''; }; - services.pulseaudio.support32Bit = true; + hardware.pulseaudio.support32Bit = true; xdg.portal = { enable = true; + wlr.enable = false; + config.common.default = "*"; extraPortals = [ + pkgs.xdg-desktop-portal-gtk # pkgs.xwaylandvideobridge ]; }; diff --git a/modules/nixos/services/gdm-fuckery/default.nix b/modules/nixos/services/gdm-fuckery/default.nix deleted file mode 100644 index f2ba4b8..0000000 --- a/modules/nixos/services/gdm-fuckery/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: -with lib; -with lib.custom; let - cfg = config.services.gdm-monitors; - - montiorsXmlContent = builtins.readFile ./monitors.xml; - monitorsConfig = pkgs.writeText "gdm_monitors.xml" montiorsXmlContent; -in { - options.services.gdm-monitors = with types; { - enable = mkBoolOpt false "Enable Monitors config for GDM"; - }; - - config = mkIf cfg.enable { - systemd.tmpfiles.rules = [ - "L+ /run/gdm/.config/monitors.xml - - - - ${monitorsConfig}" - ]; - }; -} diff --git a/modules/nixos/services/gdm-fuckery/monitors.xml b/modules/nixos/services/gdm-fuckery/monitors.xml deleted file mode 100644 index bc50b84..0000000 --- a/modules/nixos/services/gdm-fuckery/monitors.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - physical - - 0 - 0 - 1 - yes - - - DP-1 - AUS - PG27AQDM - R5LMRS022182 - - - 2560 - 1440 - 239.972 - - - - - diff --git a/modules/nixos/services/mail/default.nix b/modules/nixos/services/mail/default.nix index 5afc4ef..21e6929 100644 --- a/modules/nixos/services/mail/default.nix +++ b/modules/nixos/services/mail/default.nix @@ -27,10 +27,6 @@ in { }; zach-pw.file = ./sec/zach-pw.age; emily-pw.file = ./sec/emily-piccat.age; - - smtp-password.file = ./sec/smtpPassword.age; - - gitlab-email-pw-hashed.file = ./sec/gitlab-email-pw-hashed.age; }; mailserver = { @@ -41,7 +37,7 @@ in { loginAccounts = { "zoey@zoeys.email" = { hashedPasswordFile = sec.webmaster-pw.path; - aliases = ["zoey@zoeys.cloud" "errors@zoeys.cloud" "admin@zoeys.cloud" "postmaster@zoeys.email" "abuse@zoeys.email"]; + aliases = ["zoey@zoeys.cloud" "postmaster@zoeys.email" "abuse@zoeys.email"]; }; "hi@zoeys.computer" = { hashedPasswordFile = sec.zoeycomputer-pw.path; @@ -55,13 +51,6 @@ in { hashedPasswordFile = sec.emily-pw.path; aliases = ["emily@pictureofcat.com"]; }; - "gitlab@zoeys.cloud" = { - hashedPasswordFile = sec.gitlab-email-pw-hashed.path; - aliases = ["noreply@zoeys.cloud"]; - }; - "no-reply@code.zoeys.cloud" = { - hashedPasswordFile = sec.smtp-password.path; - }; }; certificateScheme = "acme-nginx"; diff --git a/modules/nixos/services/mail/sec/gitlab-email-pw-hashed.age b/modules/nixos/services/mail/sec/gitlab-email-pw-hashed.age deleted file mode 100644 index b5210b0..0000000 Binary files a/modules/nixos/services/mail/sec/gitlab-email-pw-hashed.age and /dev/null differ diff --git a/modules/nixos/services/mail/sec/smtpPassword.age b/modules/nixos/services/mail/sec/smtpPassword.age deleted file mode 100644 index a8959b0..0000000 --- a/modules/nixos/services/mail/sec/smtpPassword.age +++ /dev/null @@ -1,7 +0,0 @@ -age-encryption.org/v1 --> ssh-ed25519 CtmR6w 5VDFuttJ1VBYa4fBxMv/Ws96h3lQMtDtt4kift5TggY -iHhoBRnhFOG7AYWAWcgEbX0ABUNgIWHHUpterkkMunc --> ssh-ed25519 +be3hg zpo9T3n1X5PipJjEgOqgSJSwhIZu19rLcQP3zPILWRM -SJp+lVPB997tCMucqfGgqXOougiSoMoGMd/tozTTT0Q ---- /uEWB/Q4G4hy0t+hEIeID0Ymqy+qGrnrK5AgwPhs82Y -I?袐._Q}l3/˳398J KřaJ:k*-;5%7y \ No newline at end of file diff --git a/modules/nixos/services/vpn/default.nix b/modules/nixos/services/vpn/default.nix index f2c4be0..97c630e 100644 --- a/modules/nixos/services/vpn/default.nix +++ b/modules/nixos/services/vpn/default.nix @@ -19,6 +19,24 @@ in { enable = cfg.mullvad; package = nixos-stable.mullvad; }; + # + # # Create a specific network namespace for VPN traffic + # systemd.services.mullvad-daemon = { + # serviceConfig = { + # NetworkNamespacePath = "/run/netns/mullvad"; + # }; + # }; + # + # # Configure transmission to use Mullvad's SOCKS5 proxy + # # Configure transmission to use the Mullvad network namespace + # systemd.services.transmission = mkIf config.services.transmission.enable { + # serviceConfig = { + # NetworkNamespacePath = "/run/netns/mullvad"; + # }; + # # Make sure Mullvad is running before transmission starts + # requires = ["mullvad-daemon.service"]; + # after = ["mullvad-daemon.service"]; + # }; services.openvpn = { servers = { @@ -30,5 +48,22 @@ in { }; systemd.services.openvpn-work.wantedBy = lib.mkForce []; + + # # Add necessary networking tools + # environment.systemPackages = with pkgs; [ + # iproute2 # for ip netns commands + # ]; + # + # # Setup network namespace + # systemd.services.setup-mullvad-netns = { + # description = "Setup Mullvad Network Namespace"; + # before = ["mullvad-daemon.service"]; + # serviceConfig = { + # Type = "oneshot"; + # RemainAfterExit = true; + # ExecStart = "${pkgs.iproute2}/bin/ip netns add mullvad"; + # ExecStop = "${pkgs.iproute2}/bin/ip netns delete mullvad"; + # }; + # }; }; } diff --git a/modules/nixos/sites/cache/default.nix b/modules/nixos/sites/cache/default.nix index 623ca99..1a3c8ba 100644 --- a/modules/nixos/sites/cache/default.nix +++ b/modules/nixos/sites/cache/default.nix @@ -24,7 +24,6 @@ in { services.nix-serve = { enable = true; secretKeyFile = sec.cache_key.path; - port = 12024; }; services.nginx.virtualHosts."cache.zoeys.computer" = { diff --git a/modules/nixos/sites/code/default.nix b/modules/nixos/sites/code/default.nix deleted file mode 100644 index 57cd0b3..0000000 --- a/modules/nixos/sites/code/default.nix +++ /dev/null @@ -1,107 +0,0 @@ -{ - lib, - config, - pkgs, - inputs, - ... -}: -with lib; -with lib.custom; let - cfg = config.sites.forgejo; - frg = config.services.forgejo; - srv = frg.settings.server; -in { - options.sites.forgejo = with types; { - enable = mkBoolOpt false "Enable Forgejo site"; - - domain = mkStringOpt "code.zoeys.cloud" "The domain for the site"; - }; - - config = mkIf cfg.enable { - services.nginx.virtualHosts.${frg.settings.server.DOMAIN} = { - forceSSL = true; - enableACME = true; - extraConfig = '' - client_max_body_size 512M; - ''; - locations."/".proxyPass = "http://localhost:${toString srv.HTTP_PORT}"; - }; - - catppuccin.forgejo.enable = true; - - services.gitea-actions-runner = { - package = pkgs.forgejo-actions-runner; - instances.default = { - enable = true; - name = "monolith"; - url = "https://code.zoeys.cloud"; - # Obtaining the path to the runner token file may differ - # tokenFile should be in format TOKEN=, since it's EnvironmentFile for systemd - tokenFile = config.age.secrets.forgejo-runner-token.path; - labels = [ - "ubuntu-latest:docker://node:16-bullseye" - "ubuntu-22.04:docker://node:16-bullseye" - "ubuntu-20.04:docker://node:16-bullseye" - "ubuntu-18.04:docker://node:16-buster" - ## optionally provide native execution on the host: - # "native:host" - ]; - }; - }; - - services.forgejo = { - enable = true; - database.type = "postgres"; - - lfs.enable = true; - settings = { - server = { - DOMAIN = cfg.domain; - ROOT_URL = "https://${srv.DOMAIN}"; - HTTP_PORT = 7201; - }; - service.DISABLE_REGISTRATION = true; - actions = { - ENABLED = true; - DEFAULT_ACTIONS_URL = "github"; - }; - mailer = { - ENABLED = true; - SMTP_ADDR = "mail.zoeys.cloud"; - FROM = "no-reply@${srv.DOMAIN}"; - USER = "no-reply@${srv.DOMAIN}"; - }; - }; - secrets = { - mailer = { - PASSWD = config.age.secrets.forgejo-mailer-password.path; - }; - }; - }; - - systemd.services.forgejo.preStart = let - adminCmd = "${lib.getExe frg.package} admin user"; - pwd = config.age.secrets.forgejo-pw; - user = "zoey"; - in '' - ${adminCmd} create --admin --email "hi@zoeys.computer" --username ${user} --password "$(tr -d '\n' < ${pwd.path})" || true''; - - age.secrets = { - forgejo-mailer-password = { - file = ../sourcehut/sec/smtpPassword.age; - mode = "400"; - owner = "forgejo"; - }; - forgejo-pw = { - file = ./forgejoPw.age; - mode = "400"; - owner = "forgejo"; - }; - forgejo-runner-token = { - file = ./forgejoRunner.age; - mode = "400"; - owner = "forgejo"; - }; - }; - }; -} diff --git a/modules/nixos/sites/code/forgejoPw.age b/modules/nixos/sites/code/forgejoPw.age deleted file mode 100644 index afa3af0..0000000 Binary files a/modules/nixos/sites/code/forgejoPw.age and /dev/null differ diff --git a/modules/nixos/sites/code/forgejoRunner.age b/modules/nixos/sites/code/forgejoRunner.age deleted file mode 100644 index d605aae..0000000 --- a/modules/nixos/sites/code/forgejoRunner.age +++ /dev/null @@ -1,7 +0,0 @@ -age-encryption.org/v1 --> ssh-ed25519 CtmR6w oShhq0zXjjMoDW0+AZx/ro5x3XZ/Smf//Han2rZdA0o -ucJn5M9x66gxKPmkVg1E4F/PsZ7rBTA8MlUAbmIC+2s --> ssh-ed25519 RMNffg GBNcFhRuZyme2t/yrWDS/lrQzpm1wHUkAhjLz86ZG3I -bpsZdqqP205zT9F7Ca5jtCn/qfKcI/gTxANQOPLWnnA ---- JbJQpU8FaE6TPHMyX4SmDQLEI8b67SaFG73nUc+Ud3s -"'xtophh5]|j1_e#mD~mvȢosRffoՁ"Rf8uuU? \ No newline at end of file diff --git a/modules/nixos/sites/gitlab/default.nix b/modules/nixos/sites/gitlab/default.nix index 7039bc8..33495d1 100644 --- a/modules/nixos/sites/gitlab/default.nix +++ b/modules/nixos/sites/gitlab/default.nix @@ -48,15 +48,48 @@ in { gitlab_runner = { file = ./sec/gitlab_runner.age; }; - gitlab_email_pw = { - file = ./sec/gitlab-email-pw.age; - owner = user; - group = group; - }; }; boot.kernel.sysctl."net.ipv4.ip_forward" = true; # 1 + services.gitlab-runner = { + enable = true; + services = { + nix = with lib; { + authenticationTokenConfigFile = sec.gitlab_runner.path; + dockerImage = "alpine"; + dockerVolumes = [ + "/nix/store:/nix/store:ro" + "/nix/var/nix/db:/nix/var/nix/db:ro" + "/nix/var/nix/daemon-socket:/nix/var/nix/daemon-socket:ro" + ]; + dockerDisableCache = true; + preBuildScript = pkgs.writeScript "setup-container" '' + mkdir -p -m 0755 /nix/var/log/nix/drvs + mkdir -p -m 0755 /nix/var/nix/gcroots + mkdir -p -m 0755 /nix/var/nix/profiles + mkdir -p -m 0755 /nix/var/nix/temproots + mkdir -p -m 0755 /nix/var/nix/userpool + mkdir -p -m 1777 /nix/var/nix/gcroots/per-user + mkdir -p -m 1777 /nix/var/nix/profiles/per-user + mkdir -p -m 0755 /nix/var/nix/profiles/per-user/root + mkdir -p -m 0700 "$HOME/.nix-defexpr" + . ${pkgs.nix}/etc/profile.d/nix-daemon.sh + ${pkgs.nix}/bin/nix-channel --add https://nixos.org/channels/nixos-24.11 nixpkgs # 3 + ${pkgs.nix}/bin/nix-channel --update nixpkgs + ${pkgs.nix}/bin/nix-env -i ${concatStringsSep " " (with pkgs; [nix cacert git openssh])} + ''; + environmentVariables = { + ENV = "/etc/profile"; + USER = "root"; + NIX_REMOTE = "daemon"; + PATH = "/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/bin:/sbin:/usr/bin:/usr/sbin"; + NIX_SSL_CERT_FILE = "/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt"; + }; + }; + }; + }; + services.gitlab = { enable = true; databasePasswordFile = sec.gitlab_db.path; @@ -64,15 +97,6 @@ in { port = 443; https = true; host = cfg.domain; - - smtp = { - enable = true; - address = "mail.zoeys.cloud"; - username = "gitlab@zoeys.cloud"; - passwordFile = sec.gitlab_email_pw.path; - port = 465; - }; - secrets = { secretFile = sec.gitlab_sec.path; otpFile = sec.gitlab_otp.path; diff --git a/modules/nixos/sites/gitlab/sec/gitlab-email-pw.age b/modules/nixos/sites/gitlab/sec/gitlab-email-pw.age deleted file mode 100644 index 50a7cb8..0000000 --- a/modules/nixos/sites/gitlab/sec/gitlab-email-pw.age +++ /dev/null @@ -1,8 +0,0 @@ -age-encryption.org/v1 --> ssh-ed25519 CtmR6w wfPgH83/+qjITFELir/Q/zjH+wjlgrU+HNC5eOsFhg8 -orHZwCQOmlK9TFHOEOb/K2FszXoMbQfwHdYAbKIOnR0 --> ssh-ed25519 RMNffg E7mah8eqt9cDw2SKQTah25M4j/iIWhPHtrtmJpSPDgo -eeoo3cfoiVh8xF9TVy9cKUlAw6NBhMg1iFs8JlpquPA ---- NB2RNduULAMPoBmfRByWGL1hdK5/b5kDe4vnzdW1Hb0 -H"y=,е5|V01qAsNIɗRqNY!l׮b\LGe{En'͔Fh ssh-ed25519 CtmR6w sWwNYqQ3g9UMu35p8kvAXj4uEy35g0///7gpHFO69zs -1lQ0r74sGR+K/ynikwClNB5UZ3ZD1fTpxSdJE5Dk0nM --> ssh-ed25519 RMNffg vqaQVHXN7yjv10wz2xZCpJ6O7fqXaNYCPqKEdufkdCc -FLFvodvpQGPYbjv8yoyjHE2+a+YyZkBGZZbOx33GpRo ---- H3zEDss69sqnW3LM5GlWR11xx9E8u04/id6jlZqNgfg -J^s=YЭ_Œ/ ȤZi#?Lu3~vHc9^Cup[cCSSvS \ No newline at end of file diff --git a/modules/nixos/sites/sourcehut/sec/pgpPrivKey.age b/modules/nixos/sites/sourcehut/sec/pgpPrivKey.age deleted file mode 100644 index c2ef9ca..0000000 Binary files a/modules/nixos/sites/sourcehut/sec/pgpPrivKey.age and /dev/null differ diff --git a/modules/nixos/sites/sourcehut/sec/pgpPubKey.age b/modules/nixos/sites/sourcehut/sec/pgpPubKey.age deleted file mode 100644 index 3f88d00..0000000 Binary files a/modules/nixos/sites/sourcehut/sec/pgpPubKey.age and /dev/null differ diff --git a/modules/nixos/sites/sourcehut/sec/serviceKey.age b/modules/nixos/sites/sourcehut/sec/serviceKey.age deleted file mode 100644 index 3f4b935..0000000 Binary files a/modules/nixos/sites/sourcehut/sec/serviceKey.age and /dev/null differ diff --git a/modules/nixos/sites/sourcehut/sec/smtpPassword.age b/modules/nixos/sites/sourcehut/sec/smtpPassword.age deleted file mode 100644 index 4c2dd14..0000000 --- a/modules/nixos/sites/sourcehut/sec/smtpPassword.age +++ /dev/null @@ -1,7 +0,0 @@ -age-encryption.org/v1 --> ssh-ed25519 CtmR6w ExpktzFWkofB1qmGIexwu0UAnUeGzQIeeEMHiZNXQkY -YDNPPLtB8N7A0NB0VwVkQAN3DNeknLo3rv+WdcUdLD0 --> ssh-ed25519 RMNffg GFHzl2/nPuIVH4RzUnbUl/LHFmkXQ+pPUGuQzcEZi3o -Z6iMUjgD0K7LCYWV0qZMbyzWmUsbhp0anr3niecdyPs ---- wjP9Fn9/VIrsgwbTVZv/vzbEskwMKmQbHohtNyfF02w -ݞsz KQb #&T3v/gը%f\^jQqh \ No newline at end of file diff --git a/modules/nixos/sites/sourcehut/sec/webhookKey.age b/modules/nixos/sites/sourcehut/sec/webhookKey.age deleted file mode 100644 index 45cfc24..0000000 Binary files a/modules/nixos/sites/sourcehut/sec/webhookKey.age and /dev/null differ diff --git a/modules/nixos/ui/fonts/default.nix b/modules/nixos/ui/fonts/default.nix index f860026..48ea195 100644 --- a/modules/nixos/ui/fonts/default.nix +++ b/modules/nixos/ui/fonts/default.nix @@ -29,117 +29,35 @@ in { lexend jost dejavu_fonts - # iosevka + iosevka cantarell-fonts - (iosevka.override - { - set = "Custom"; - privateBuildPlan = '' - # [buildPlans.IosevkaCustom] - # family = "Iosevka" - # spacing = "fontconfig-mono" - # serifs = "sans" - # noCvSs = true - # exportGlyphNames = true - # - # [buildPlans.IosevkaCustom.variants] - # inherits = "ss08" - # - # [buildPlans.IosevkaCustom.widths.Normal] - # shape = 500 - # menu = 5 - # css = "normal" - # - # [buildPlans.IosevkaCustom.widths.Extended] - # shape = 600 - # menu = 7 - # css = "expanded" - - [buildPlans.IosevkaCustom] - family = "Iosevka" - spacing = "normal" - serifs = "sans" - noCvSs = true - exportGlyphNames = true - - [buildPlans.IosevkaCustom.variants.design] - one = "base-flat-top-serif" - two = "straight-neck-serifless" - four = "closed-serifless" - five = "oblique-arched-serifless" - six = "closed-contour" - seven = "bend-serifless" - eight = "crossing-asymmetric" - nine = "closed-contour" - zero = "oval-dotted" - capital-d = "more-rounded-serifless" - capital-g = "toothless-corner-serifless-hooked" - a = "double-storey-serifless" - g = "double-storey" - i = "hooky" - l = "serifed-semi-tailed" - r = "hookless-serifless" - t = "bent-hook-short-neck" - w = "straight-flat-top-serifless" - y = "straight-turn-serifless" - capital-eszet = "rounded-serifless" - long-s = "bent-hook-middle-serifed" - eszet = "longs-s-lig-serifless" - lower-lambda = "straight-turn" - lower-tau = "short-tailed" - lower-phi = "straight" - partial-derivative = "closed-contour" - cyrl-capital-u = "straight-turn-serifless" - cyrl-u = "straight-turn-serifless" - cyrl-ef = "split-serifless" - asterisk = "penta-low" - caret = "high" - guillemet = "straight" - number-sign = "slanted" - dollar = "open" - cent = "through-cap" - bar = "force-upright" - micro-sign = "tailed-serifless" - lig-ltgteq = "slanted" - lig-neq = "more-slanted-dotted" - lig-equal-chain = "without-notch" - lig-hyphen-chain = "without-notch" - lig-plus-chain = "with-notch" - - [buildPlans.IosevkaCustom.weights.Regular] - shape = 400 - menu = 400 - css = 400 - - [buildPlans.IosevkaCustom.weights.Bold] - shape = 700 - menu = 700 - css = 700 - - [buildPlans.IosevkaCustom.slopes.Upright] - angle = 0 - shape = "upright" - menu = "upright" - css = "normal" - - [buildPlans.IosevkaCustom.slopes.Italic] - angle = 9.4 - shape = "italic" - menu = "italic" - css = "italic" - ''; - }) + # (iosevka.override + # { + # set = "Custom"; + # privateBuildPlan = '' + # [buildPlans.IosevkaCustom] + # family = "Iosevka" + # spacing = "normal" + # serifs = "sans" + # noCvSs = true + # exportGlyphNames = true + # + # [buildPlans.IosevkaCustom.variants] + # inherits = "ss08" + # + # [buildPlans.IosevkaCustom.widths.Normal] + # shape = 500 + # menu = 5 + # css = "normal" + # ''; + # }) noto-fonts noto-fonts-cjk-sans noto-fonts-emoji jetbrains-mono nerd-fonts.iosevka nerd-fonts.zed-mono - nerd-fonts.fira-code - nerd-fonts.jetbrains-mono adwaita-fonts - cozette - scientifica # (nerdfonts.override {fonts = ["ZedMono" "Iosevka"];}) ]; @@ -149,11 +67,12 @@ in { fontconfig = { defaultFonts = { monospace = [ - fonts.mono + # "Pragmata Pro Mono" + "Iosevka" "Noto Color Emoji" ]; - sansSerif = [fonts.ui "Noto Color Emoji"]; - serif = [fonts.ui "Noto Color Emoji"]; + sansSerif = ["Adwaita Sans" "Noto Color Emoji"]; + serif = ["Noto Serif" "Noto Color Emoji"]; emoji = ["Noto Color Emoji"]; }; }; diff --git a/overlays/libvirt-hooks/defualt.nix b/overlays/libvirt-hooks/defualt.nix deleted file mode 100644 index 07c8caa..0000000 --- a/overlays/libvirt-hooks/defualt.nix +++ /dev/null @@ -1,23 +0,0 @@ -self: super: { - nixosModules = - super.nixosModules - // { - libvirtd = { - config, - lib, - pkgs, - ... - } @ args: let - originalModule = import super.nixosModules.libvirtd args; - in - lib.mkMerge [ - originalModule - - { - config = lib.mkIf config.virtualisation.libvirtd.enable { - virtualisation.libvirtd.hooks = lib.mkForce {}; - }; - } - ]; - }; -} diff --git a/packages/zen-browser-unwrapped/default.nix b/packages/zen-browser-unwrapped/default.nix new file mode 100644 index 0000000..3f26e00 --- /dev/null +++ b/packages/zen-browser-unwrapped/default.nix @@ -0,0 +1,430 @@ +{ + buildNpmPackage, + buildPackages, + fetchFromGitHub, + fetchurl, + lib, + overrideCC, + stdenv, + # build time + autoconf, + cargo, + dump_syms, + git, + gnum4, + nodejs, + patchelf, + pkg-config, + pkgsBuildBuild, + pkgsCross, + python3, + runCommand, + rsync, + rustc, + rust-cbindgen, + rustPlatform, + unzip, + vips, + wrapGAppsHook3, + writeShellScript, + # runtime + alsa-lib, + atk, + cairo, + cups, + dbus, + dbus-glib, + ffmpeg, + fontconfig, + freetype, + gdk-pixbuf, + gtk3, + glib, + icu73, + jemalloc, + libGL, + libGLU, + libdrm, + libevent, + libffi, + libglvnd, + libjack2, + libjpeg, + libkrb5, + libnotify, + libpng, + libpulseaudio, + libstartup_notification, + libva, + libvpx, + libwebp, + libxkbcommon, + libxml2, + makeWrapper, + mesa, + nasm, + nspr, + nss_latest, + pango, + pciutils, + pipewire, + sndio, + udev, + xcb-util-cursor, + xorg, + zlib, + # Generic changes the compatibility mode of the final binaries. + # + # Enabling generic will make the browser compatible with more devices at the + # cost of disabling hardware-specific optimizations. It is highly recommended + # to leave `generic` disabled. + generic ? false, + debugBuild ? false, + # On 32bit platforms, we disable adding "-g" for easier linking. + enableDebugSymbols ? !stdenv.hostPlatform.is32bit, + alsaSupport ? stdenv.hostPlatform.isLinux, + ffmpegSupport ? true, + gssSupport ? true, + jackSupport ? stdenv.hostPlatform.isLinux, + jemallocSupport ? !stdenv.hostPlatform.isMusl, + pipewireSupport ? waylandSupport && webrtcSupport, + pulseaudioSupport ? stdenv.hostPlatform.isLinux, + sndioSupport ? stdenv.hostPlatform.isLinux, + waylandSupport ? true, + privacySupport ? false, + # WARNING: NEVER set any of the options below to `true` by default. + # Set to `!privacySupport` or `false`. + crashreporterSupport ? !privacySupport && !stdenv.hostPlatform.isRiscV && !stdenv.hostPlatform.isMusl, + geolocationSupport ? !privacySupport, + webrtcSupport ? !privacySupport, +}: let + surfer = buildNpmPackage { + pname = "surfer"; + version = "1.5.0"; + + src = fetchFromGitHub { + owner = "zen-browser"; + repo = "surfer"; + rev = "50af7094ede6e9f0910f010c531f8447876a6464"; + hash = "sha256-wmAWg6hoICNHfoXJifYFHmyFQS6H22u3GSuRW4alexw="; + }; + + patches = [./surfer-dont-check-update.patch]; + + npmDepsHash = "sha256-p0RVqn0Yfe0jxBcBa/hYj5g9XSVMFhnnZT+au+bMs18="; + makeCacheWritable = true; + + SHARP_IGNORE_GLOBAL_LIBVIPS = false; + nativeBuildInputs = [pkg-config]; + buildInputs = [vips]; + }; + + llvmPackages0 = rustc.llvmPackages; + llvmPackagesBuildBuild0 = pkgsBuildBuild.rustc.llvmPackages; + + llvmPackages = llvmPackages0.override { + bootBintoolsNoLibc = null; + bootBintools = null; + }; + llvmPackagesBuildBuild = llvmPackagesBuildBuild0.override { + bootBintoolsNoLibc = null; + bootBintools = null; + }; + + buildStdenv = overrideCC llvmPackages.stdenv ( + llvmPackages.stdenv.cc.override {bintools = buildPackages.rustc.llvmPackages.bintools;} + ); + + inherit (pkgsCross) wasi32; + + wasiSysRoot = runCommand "wasi-sysroot" {} '' + mkdir -p "$out"/lib/wasm32-wasi + for lib in ${wasi32.llvmPackages.libcxx}/lib/*; do + ln -s "$lib" "$out"/lib/wasm32-wasi + done + ''; + + firefox-l10n = fetchFromGitHub { + owner = "mozilla-l10n"; + repo = "firefox-l10n"; + rev = "9d639cd79d6b73081fadb3474dd7d73b89732e7b"; + hash = "sha256-+2JCaPp+c2BRM60xFCeY0pixIyo2a3rpTPaSt1kTfDw="; + }; +in + buildStdenv.mkDerivation (finalAttrs: { + pname = "zen-browser-unwrapped"; + version = "1.0.2-b.0"; + + src = fetchFromGitHub { + owner = "zen-browser"; + repo = "desktop"; + rev = "df4ea8794f957c8e409adef9b2c3325be710c626"; + hash = "sha256-vPe/hTJozJdCbq5GK87MGBh+Nybs8et+6ukm0Fdz3uA="; + fetchSubmodules = true; + }; + + # DO NOT UPDATE THE FIREFOX VERSION MANUALLY! + # + # Both `firefoxVersion` and `firefoxSrc` are managed by the `update.sh` script. + # The Firefox version is specified by `zen-browser` in the `surfer.json` file. + # + # We need to manually set the version here to avoid IFD. + firefoxVersion = "133.0.3"; + firefoxSrc = fetchurl { + url = "mirror://mozilla/firefox/releases/${finalAttrs.firefoxVersion}/source/firefox-${finalAttrs.firefoxVersion}.source.tar.xz"; + hash = "sha256-8TSlQgIAuwOrRg+dKGdQfA7bIiznP69AZM2+oCoKyhs="; + }; + + SURFER_COMPAT = generic; + + nativeBuildInputs = + [ + autoconf + cargo + git + gnum4 + llvmPackagesBuildBuild.bintools + makeWrapper + nasm + nodejs + pkg-config + python3 + rsync + rust-cbindgen + rustPlatform.bindgenHook + rustc + surfer + unzip + wrapGAppsHook3 + xorg.xvfb + ] + ++ lib.optionals crashreporterSupport [ + dump_syms + patchelf + ]; + + buildInputs = + [ + atk + cairo + cups + dbus + dbus-glib + ffmpeg + fontconfig + freetype + gdk-pixbuf + gtk3 + glib + icu73 + libGL + libGLU + libevent + libffi + libglvnd + libjpeg + libnotify + libpng + libstartup_notification + libva + libvpx + libwebp + libxml2 + mesa + nspr + nss_latest + pango + pciutils + pipewire + udev + xcb-util-cursor + xorg.libX11 + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXft + xorg.libXi + xorg.libXrender + xorg.libXt + xorg.libXtst + xorg.pixman + xorg.xorgproto + xorg.libxcb + xorg.libXrandr + xorg.libXcomposite + xorg.libXfixes + xorg.libXScrnSaver + zlib + ] + ++ lib.optional alsaSupport alsa-lib + ++ lib.optional jackSupport libjack2 + ++ lib.optional pulseaudioSupport libpulseaudio + ++ lib.optional sndioSupport sndio + ++ lib.optional gssSupport libkrb5 + ++ lib.optional jemallocSupport jemalloc + ++ lib.optionals waylandSupport [ + libdrm + libxkbcommon + ]; + + configureFlags = + [ + "--disable-bootstrap" + "--disable-updater" + "--enable-default-toolkit=cairo-gtk3${lib.optionalString waylandSupport "-wayland"}" + "--enable-system-pixman" + "--with-distribution-id=org.nixos" + "--with-libclang-path=${llvmPackagesBuildBuild.libclang.lib}/lib" + "--with-system-ffi" + "--with-system-icu" + "--with-system-jpeg" + "--with-system-libevent" + "--with-system-libvpx" + "--with-system-nspr" + "--with-system-nss" + "--with-system-png" # needs APNG support + "--with-system-webp" + "--with-system-zlib" + "--with-wasi-sysroot=${wasiSysRoot}" + "--host=${buildStdenv.buildPlatform.config}" + "--target=${buildStdenv.hostPlatform.config}" + (lib.enableFeature alsaSupport "alsa") + (lib.enableFeature ffmpegSupport "ffmpeg") + (lib.enableFeature geolocationSupport "necko-wifi") + (lib.enableFeature gssSupport "negotiateauth") + (lib.enableFeature jackSupport "jack") + (lib.enableFeature jemallocSupport "jemalloc") + (lib.enableFeature pulseaudioSupport "pulseaudio") + (lib.enableFeature sndioSupport "sndio") + (lib.enableFeature webrtcSupport "webrtc") + # --enable-release adds -ffunction-sections & LTO that require a big amount + # of RAM, and the 32-bit memory space cannot handle that linking + (lib.enableFeature (!debugBuild && !stdenv.hostPlatform.is32bit) "release") + (lib.enableFeature enableDebugSymbols "debug-symbols") + ] + ++ lib.optional stdenv.hostPlatform.isAarch "--disable-wasm-avx"; + + configureScript = writeShellScript "configureMozconfig" ( + (lib.optionalString stdenv.hostPlatform.isAarch '' + echo "ac_add_options --with-libclang-path=/usr/lib64" >> ./configs/linux/mozconfig + + # linux mozconfig + sed -i 's/x86-\(64\|64-v3\)/native/g' ./configs/linux/mozconfig + sed -i 's/x86_64-pc-linux/aarch64-linux-gnu/g' ./configs/linux/mozconfig + + # eme/widevine must be disabled on arm64 (thx google) + sed -i '/--enable-eme/s/^/# /' ./configs/common/mozconfig + sed -i 's/-msse3//g' ./configs/linux/mozconfig + sed -i 's/-mssse3//g' ./configs/linux/mozconfig + sed -i 's/-msse4.1//g' ./configs/linux/mozconfig + sed -i 's/-msse4.2//g' ./configs/linux/mozconfig + sed -i 's/-mavx2//g' ./configs/linux/mozconfig + sed -i 's/-mavx//g' ./configs/linux/mozconfig + sed -i 's/-mfma//g' ./configs/linux/mozconfig + sed -i 's/-maes//g' ./configs/linux/mozconfig + sed -i 's/-mpopcnt//g' ./configs/linux/mozconfig + sed -i 's/-mpclmul//g' ./configs/linux/mozconfig + sed -i 's/+avx2//g' ./configs/linux/mozconfig + sed -i 's/+sse4.1//g' ./configs/linux/mozconfig + + '') + + '' + for flag in $@; do + echo "ac_add_options $flag" >> mozconfig + done + '' + ); + + # To the person reading this wondering what is going on here, this is what + # happens when a build process relies on Git. Normally you would use `fetchgit` + # with `leaveDotGit = true`, however that leads to reproducibility issues, so + # instead we create our own Git repo with a single commit. + # + # `surfer` (the build tool made for zen-browser) uses git to read the latest + # HEAD commit, `git apply`, and likely a few other operations. + preConfigure = '' + export HOME="$TMPDIR" + git config --global user.email "nixbld@localhost" + git config --global user.name "nixbld" + git init + git add --all + git commit -m 'nixpkgs' + + export LLVM_PROFDATA=llvm-profdata + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system + export WASM_CC=${wasi32.stdenv.cc}/bin/${wasi32.stdenv.cc.targetPrefix}cc + export WASM_CXX=${wasi32.stdenv.cc}/bin/${wasi32.stdenv.cc.targetPrefix}c++ + + export ZEN_RELEASE=1 + surfer ci --brand beta --display-version ${finalAttrs.version} + + install -D ${finalAttrs.firefoxSrc} .surfer/engine/firefox-${finalAttrs.firefoxVersion}.source.tar.xz + surfer download + surfer import + patchShebangs engine/mach engine/build engine/tools + ''; + + preBuild = '' + cp -r ${firefox-l10n} l10n/firefox-l10n + + for lang in $(cat ./l10n/supported-languages); do + rsync -av --progress l10n/firefox-l10n/"$lang"/ l10n/"$lang" --exclude .git + done + + sh scripts/copy-language-pack.sh en-US + + for lang in $(cat ./l10n/supported-languages); do + sh scripts/copy-language-pack.sh "$lang" + done + + Xvfb :2 -screen 0 1024x768x24 & + export DISPLAY=:2 + ''; + + buildPhase = '' + runHook preBuild + + surfer build + + runHook postBuild + ''; + + preInstall = '' + cd engine/obj-* + ''; + + meta = { + mainProgram = "zen"; + description = "Firefox based browser with a focus on privacy and customization"; + homepage = "https://www.zen-browser.app/"; + license = lib.licenses.mpl20; + maintainers = with lib.maintainers; [ + matthewpi + titaniumtown + ]; + platforms = [ + "aarch64-linux" + "x86_64-linux" + ]; + }; + + enableParallelBuilding = true; + requiredSystemFeatures = ["big-parallel"]; + + passthru = { + updateScript = ./update.sh; + + # These values are used by `wrapFirefox`. + # ref; `pkgs/applications/networking/browsers/firefox/wrapper.nix' + binaryName = finalAttrs.meta.mainProgram; + inherit alsaSupport; + inherit jackSupport; + inherit pipewireSupport; + inherit sndioSupport; + inherit nspr; + inherit ffmpegSupport; + inherit gssSupport; + inherit gtk3; + inherit wasiSysRoot; + }; + }) diff --git a/packages/zen-browser-unwrapped/surfer-dont-check-update.patch b/packages/zen-browser-unwrapped/surfer-dont-check-update.patch new file mode 100644 index 0000000..355e7c9 --- /dev/null +++ b/packages/zen-browser-unwrapped/surfer-dont-check-update.patch @@ -0,0 +1,19 @@ +diff --git a/src/index.ts b/src/index.ts +index 3d41389..f6bfb95 100644 +--- a/src/index.ts ++++ b/src/index.ts +@@ -19,7 +19,6 @@ import { resolve } from 'node:path' + import { errorHandler, config as configInited, versionFormatter } from './utils' + import { commands } from './cmds' + import { BIN_NAME, ENGINE_DIR } from './constants' +-import { updateCheck } from './middleware/update-check' + import { registerCommand } from './middleware/register-command' + import { log } from './log' + +@@ -83,7 +82,6 @@ async function middleware(command: commander.Command) { + // If the program is verbose, store that fact within the logger + log.isDebug = program.opts().verbose + +- await updateCheck() + registerCommand(command.name()) + } diff --git a/packages/zen-browser-unwrapped/update.sh b/packages/zen-browser-unwrapped/update.sh new file mode 100755 index 0000000..1a4c004 --- /dev/null +++ b/packages/zen-browser-unwrapped/update.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq common-updater-scripts nix-prefetch-git nix-prefetch-github + +# Define the package file +PACKAGE_FILE="default.nix" + +# Function to get the latest version of zen-browser/desktop +get_latest_version() { + curl --silent "https://api.github.com/repos/zen-browser/desktop/releases" | + jq -r '[.[] | select(.prerelease==false)][0].tag_name' +} + +# Get the latest version +latest_version=$(get_latest_version) + +if [ -z "$latest_version" ] || [ "$latest_version" == "null" ]; then + echo "Failed to get the latest version." + exit 1 +fi + +echo "Latest version: $latest_version" + +# Update the 'version' variable in the Nix expression +sed -i "/pname = \"zen-browser-unwrapped\";/,/version = \".*\";/s/version = \".*\";/version = \"$latest_version\";/" "$PACKAGE_FILE" + +# Fetch the new 'src' hash +echo "Fetching new source hash..." +src_info=$(nix-prefetch-github zen-browser desktop --rev "$latest_version" --fetch-submodules) +src_hash=$(echo "$src_info" | jq -r .sha256) + +echo "New source hash: $src_hash" + +# Update 'rev' and 'hash' in the 'src' fetchFromGitHub +sed -i "/src = fetchFromGitHub {/,/};/{ + /owner = \"zen-browser\";/,/};/{ + s/rev = \".*\";/rev = \"$latest_version\";/ + s/hash = \".*\";/hash = \"$src_hash\";/ + } +}" "$PACKAGE_FILE" + +# Clone the repository to extract 'firefoxVersion' +tmpdir=$(mktemp -d) +trap 'rm -rf "$tmpdir"' EXIT + +git clone --depth 1 --branch "$latest_version" https://github.com/zen-browser/desktop.git "$tmpdir" + +# Extract 'firefoxVersion' from 'surfer.json' +firefoxVersion=$(jq --raw-output '.version.version' "$tmpdir/surfer.json") +echo "Firefox version: $firefoxVersion" + +# Update the 'firefoxVersion' in the Nix expression +sed -i "s/firefoxVersion = \".*\";/firefoxVersion = \"$firefoxVersion\";/" "$PACKAGE_FILE" + +# Fetch the new 'firefoxSrc' hash +firefox_url="mirror://mozilla/firefox/releases/$firefoxVersion/source/firefox-$firefoxVersion.source.tar.xz" +echo "Fetching Firefox source hash..." +firefox_hash=$(nix-prefetch-url --unpack "$firefox_url") + +echo "Firefox source hash: $firefox_hash" + +# Update the 'firefoxSrc' hash in the Nix expression +sed -i "/firefoxSrc = fetchurl {/,/};/{ + s/hash = \".*\";/hash = \"$firefox_hash\";/ +}" "$PACKAGE_FILE" + +echo "Update complete!" diff --git a/packages/zen-browser/default.nix b/packages/zen-browser/default.nix new file mode 100644 index 0000000..91c71fb --- /dev/null +++ b/packages/zen-browser/default.nix @@ -0,0 +1,8 @@ +{ + wrapFirefox, + custom, +}: +wrapFirefox custom.zen-browser-unwrapped { + pname = "zen-browser"; + libName = "zen"; +} diff --git a/systems/x86_64-linux/earth/default.nix b/systems/x86_64-linux/earth/default.nix index 3cb2eee..9becc76 100644 --- a/systems/x86_64-linux/earth/default.nix +++ b/systems/x86_64-linux/earth/default.nix @@ -30,6 +30,11 @@ hardware.keyboard.qmk.enable = true; programs.nix-ld.enable = true; + # services.monero.mining.enable = true; + # services.monero.enable = true; + # services.monero.mining.address = "485XKPKG38bSJBUa4SPenAEFt8Wgj2hWC97PNBpFHniwNXnDNZ9xar5hHb6qLQeyK2Kk3Fw2cxxPSLjgyqr5CxXAUkUsDDx"; + # services.monero.mining.threads = 4; + hardware.march = { arch = "znver3"; enableNativeOptimizations = true; @@ -37,27 +42,10 @@ memory.total = 32; }; - # CachyOS-inspired additional native optimizations - nixpkgs.config.packageOverrides = pkgs: { - # Override performance-critical packages with native optimizations - steam = pkgs.steam.override { - extraPkgs = pkgs: - with pkgs; [ - libva - mesa - vulkan-loader - ]; - }; - }; - - services.gdm-monitors.enable = true; - specialisation = { plasma6 = { configuration = { - services.desktopManager.plasma6.enable = true; - services.displayManager.sddm.enable = true; - services.xserver.displayManager.gdm.enable = lib.mkForce false; + services.xserver.desktopManager.plasma6.enable = true; programs.seahorse.enable = lib.mkForce false; }; @@ -74,29 +62,7 @@ localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers }; programs.steam.gamescopeSession.enable = true; - # programs.gamemode = { - # enable = true; - # settings = { - # general = { - # renice = 10; # Higher process priority for games - # ioprio = 0; # Highest I/O priority - # inhibit_screensaver = 1; # Prevent screensaver - # }; - # - # gpu = { - # gpu_device = 0; # GPU device index to use - # apply_gpu_optimisations = 1; # Apply GPU optimizations - # gpu_core_clock_mhz = 0; # Don't override core clock - # gpu_mem_clock_mhz = 0; # Don't override memory clock - # gpu_powermizer_mode = 1; # Maximum performance mode - # }; - # - # custom = { - # start = "${pkgs.libnotify}/bin/notify-send 'GameMode enabled' 'System optimizations activated'"; - # end = "${pkgs.libnotify}/bin/notify-send 'GameMode disabled' 'System returned to normal'"; - # }; - # }; - # }; + programs.gamemode.enable = true; ui.fonts.enable = true; @@ -151,28 +117,23 @@ # insertNameservers = ["1.1.1.1" "1.0.0.1"]; }; - services.scx.enable = true; - services.scx.scheduler = "scx_rusty"; - services.scx.package = pkgs.scx_git.full; - - boot.kernelPackages = pkgs.linuxPackages_cachyos-lto; - # CachyOS-inspired kernel parameters for better desktop responsiveness and gaming - boot.kernelParams = [ - "nowatchdog" - "preempt=full" - "threadirqs" - "tsc=reliable" - "clocksource=tsc" - "preempt=voluntary" - "futex.futex2_interface=1" # Better Wine/Proton compatibility - "NVreg_UsePageAttributeTable=1" # Improved GPU memory management - "io_uring.sqpoll=2" # Modern I/O scheduler polling - "transparent_hugepage=madvise" # Better memory management - "elevator=bfq" # Better I/O scheduling for gaming + boot.kernelPackages = pkgs.linuxPackages_zen; + boot.kernelPatches = [ + { + name = "bsb-patches"; + patch = pkgs.fetchpatch { + url = "https://gist.githubusercontent.com/galister/08cddf10ac18929647d5fb6308df3e4b/raw/0f6417b6cb069f19d6c28b730499c07de06ec413/combined-bsb-6-10.patch"; + hash = "sha256-u8O4foBHhU+T3yYkguBZ14EyCKujPzHh1TwFRg6GMsA="; + }; + } ]; boot.supportedFilesystems = ["ntfs"]; services.dlna.enable = false; + # services.openssh = { + # enable = true; + # PasswordAuthentication = true; + # }; time.timeZone = "America/Detroit"; @@ -189,13 +150,9 @@ environment.systemPackages = [ pkgs.sbctl + lib.custom.nixos-stable.vesktop pkgs.mangohud - (pkgs.lutris.override { - extraPkgs = pkgs: [ - inputs.nix-gaming.packages.${pkgs.system}.wine-tkg-zoey - pkgs.winetricks - ]; - }) + pkgs.lutris pkgs.bottles pkgs.file-roller pkgs.podman-tui @@ -205,17 +162,60 @@ pkgs.transmission_4 pkgs.protonup-qt pkgs.restic + inputs.opnix.packages.${system}.default pkgs.qt5.qtwayland - pkgs.vkBasalt # Vulkan post-processing layer for better visuals - pkgs.goverlay # MangoHud and vkBasalt GUI configurator - pkgs.cpupower-gui # CPU frequency control GUI - pkgs.ananicy-cpp # Process priority daemon - (inputs.umu.packages.${system}.umu-launcher.override { - withTruststore = true; - withDeltaUpdates = true; + (inputs.umu.packages.${system}.umu.override { + version = inputs.umu.shortRev; + truststore = true; + cbor2 = true; }) inputs.agenix.packages.${system}.agenix inputs.awsvpnclient.packages.${system}.awsvpnclient + + pkgs.nautilus-python + (pkgs.writeTextFile { + name = "nautilus-open-kitty-here"; + destination = "/share/nautilus-python/extensions/open-kitty-here.py"; + text = '' + import os + import gi + gi.require_version('Nautilus', '3.0') + from gi.repository import Nautilus, GObject + + class OpenKittyTerminalExtension(GObject.GObject, Nautilus.MenuProvider): + def __init__(self): + pass + + def menu_activate_cb(self, menu, file): + if file.is_directory(): + path = file.get_location().get_path() + else: + path = file.get_parent_location().get_path() + os.system(f'kitty --directory "{path}" &') + + def get_file_items(self, window, files): + if len(files) != 1: + return + + file = files[0] + item = Nautilus.MenuItem( + name='OpenKittyTerminalExtension::OpenKitty', + label='Open in Kitty', + tip='Opens Kitty terminal in this location' + ) + item.connect('activate', self.menu_activate_cb, file) + return [item] + + def get_background_items(self, window, file): + item = Nautilus.MenuItem( + name='OpenKittyTerminalExtension::OpenKitty', + label='Open in Kitty', + tip='Opens Kitty terminal in this location' + ) + item.connect('activate', self.menu_activate_cb, file) + return [item] + ''; + }) ]; programs.zsh.enable = true; @@ -253,7 +253,7 @@ services.samba = { enable = true; openFirewall = true; - settings = { + shares = { "SteamLibrary" = { path = "/mnt/bk"; # Update this path to your drive's mount point browseable = true; @@ -269,18 +269,6 @@ catppuccin.enable = true; programs.virt-manager.enable = true; - # Enable Ananicy for automatic process priority management - services.ananicy = { - enable = true; - package = pkgs.ananicy-cpp; - rulesProvider = pkgs.ananicy-rules-cachyos; - }; - - # CPU frequency governor always set to performance for desktop - powerManagement.cpuFreqGovernor = "performance"; - - systemd.services.NetworkManager-wait-online.enable = false; - sites.jellyfin.enable = true; sites.mealie.enable = false; @@ -290,6 +278,7 @@ dockerCompat = true; defaultNetwork.settings.dns_enabled = true; }; + virtualisation.waydroid.enable = true; hardware.gpu-passthru.enable = true; system.stateVersion = "24.05"; diff --git a/systems/x86_64-linux/pluto/default.nix b/systems/x86_64-linux/pluto/default.nix index 79db280..67e0b91 100644 --- a/systems/x86_64-linux/pluto/default.nix +++ b/systems/x86_64-linux/pluto/default.nix @@ -2,12 +2,9 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). { - lib, pkgs, inputs, config, - specialArgs, - system, ... }: { imports = [ @@ -15,8 +12,6 @@ ./hardware-configuration.nix ]; - # nixpkgs.pkgs = lib.mkForce inputs.nixos-stable.legacyPackages.${system}; - nix.settings = { trusted-users = ["zoey"]; }; @@ -102,8 +97,6 @@ minio.enable = true; immich.enable = true; polaris.enable = false; - sourcehut.enable = false; - forgejo.enable = true; zoeycomputer = { enable = true; domain = "zoeys.computer"; @@ -119,8 +112,6 @@ }; }; - catppuccin.flavor = "mocha"; - zmio.blog.enable = true; zmio.blog.domain = "zackmyers.io"; diff --git a/systems/x86_64-linux/venus/default.nix b/systems/x86_64-linux/venus/default.nix index 790b834..fee5213 100644 --- a/systems/x86_64-linux/venus/default.nix +++ b/systems/x86_64-linux/venus/default.nix @@ -10,17 +10,6 @@ ./disk-config.nix ]; - nix.optimise = { - automatic = true; - dates = ["03:45"]; - }; - - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 14d"; - }; - boot.loader.grub = { efiSupport = true; efiInstallAsRemovable = true; @@ -75,6 +64,16 @@ }; }; + services.mc-honeypot = { + enable = true; + + openFirewall = true; + + settings = { + "webhook-url" = "https://discord.com/api/webhooks/1348850542398410834/1fqV4QLh4uTTuwZ0DjOczZa6gkDjsYECSlmWBwTXHWcYTHhwsE1ZLTP17z5v-vh6nn7H"; + }; + }; + networking.firewall.allowedTCPPorts = [80 443]; system.stateVersion = "24.05";