diff --git a/common/default.nix b/common/default.nix index 3f4de91..c41dd0f 100644 --- a/common/default.nix +++ b/common/default.nix @@ -41,11 +41,9 @@ trusted-users = ["xqtc"]; substituters = [ "https://nix-community.cachix.org" - "https://cache.saumon.network/proxmox-nixoshttps://cache.saumon.network/proxmox-nixos" ]; trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - "proxmox-nixos:nveXDuVVhFDRFx8Dn19f1WDEaNRJjPrF2CPD2D+m1ys=" ]; }; } diff --git a/flake.lock b/flake.lock index 6125877..5f04839 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1718588737, - "narHash": "sha256-06acqoMEYtc+/w5gWiIIuUFfdtdOBKlp1qrC/InRiBY=", + "lastModified": 1720977090, + "narHash": "sha256-O9S9kbZTAAeZz+R7cDY5FQsqsLD3SloD8eEg6BFx0G0=", "owner": "tpwrules", "repo": "nixos-apple-silicon", - "rev": "b0a2376f6c164a0af963d47386c064cc6fdcd5ea", + "rev": "6015c1e2f91896e0b7a983c2824c665af32f568a", "type": "github" }, "original": { @@ -24,14 +24,15 @@ "inputs": { "nixpkgs": [ "nixpkgs" - ] + ], + "onchg": "onchg" }, "locked": { - "lastModified": 1720032541, - "narHash": "sha256-PqBjivVCJS3qUXVBMeTLj03OlY2E5/TfJssd/p2m8js=", + "lastModified": 1720429515, + "narHash": "sha256-r73eyaZzaNgysusdaFmanOHcYMVnRxdAYzD4BvkBjmU=", "owner": "aksiksi", "repo": "compose2nix", - "rev": "923f6bc058118f76e69ed96332e40a472d8fd702", + "rev": "a55aea08f1eb34cc1681c9ea2d7b42b58730df5d", "type": "github" }, "original": { @@ -61,7 +62,7 @@ }, "devshell": { "inputs": { - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_5", "nixpkgs": [ "nixvim", "nixpkgs" @@ -83,16 +84,16 @@ }, "firefox-addons": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs_2" }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1720238603, - "narHash": "sha256-XWcTKM/uVy7GP7QT8skZ9ywPqIPLhb9Sw7qBH+ZF5YM=", + "lastModified": 1721016201, + "narHash": "sha256-Jk54PIyWbdYLsi5tTQ3SFG4RWOqA5ui6+I9hjthM63o=", "owner": "rycee", "repo": "nur-expressions", - "rev": "c8799be7f004121f87ad702d61980d738405a51a", + "rev": "41341e2fdeb70555c92ec7a4d3cd13a8498897fd", "type": "gitlab" }, "original": { @@ -132,22 +133,6 @@ } }, "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { "locked": { "lastModified": 1696426674, "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", @@ -170,11 +155,11 @@ ] }, "locked": { - "lastModified": 1719877454, - "narHash": "sha256-g5N1yyOSsPNiOlFfkuI/wcUjmtah+nxdImJqrSATjOU=", + "lastModified": 1719994518, + "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4e3583423212f9303aa1a6337f8dffb415920e4f", + "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", "type": "github" }, "original": { @@ -184,6 +169,21 @@ } }, "flake-utils": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { "locked": { "lastModified": 1629284811, "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", @@ -198,7 +198,7 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_3": { "inputs": { "systems": "systems" }, @@ -216,7 +216,7 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_4": { "inputs": { "systems": "systems_2" }, @@ -234,7 +234,7 @@ "type": "github" } }, - "flake-utils_4": { + "flake-utils_5": { "inputs": { "systems": "systems_3" }, @@ -252,7 +252,7 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_6": { "inputs": { "systems": "systems_5" }, @@ -287,7 +287,10 @@ }, "git-hooks": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": [ + "nixvim", + "flake-compat" + ], "gitignore": "gitignore", "nixpkgs": [ "nixvim", @@ -299,11 +302,11 @@ ] }, "locked": { - "lastModified": 1719259945, - "narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=", + "lastModified": 1720524665, + "narHash": "sha256-ni/87oHPZm6Gv0ECYxr1f6uxB0UKBWJ6HvS7lwLU6oY=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", + "rev": "8d6a17d0cdf411c55f12602624df6368ad86fac1", "type": "github" }, "original": { @@ -341,11 +344,11 @@ ] }, "locked": { - "lastModified": 1720188602, - "narHash": "sha256-lC3byBmhVZFzWl/dCic8+cKUEEAXAswWOYjq4paFmbo=", + "lastModified": 1720734513, + "narHash": "sha256-neWQ8eNtLTd+YMesb7WjKl1SVCbDyCm46LUgP/g/hdo=", "owner": "nix-community", "repo": "home-manager", - "rev": "e3582e5151498bc4d757e8361431ace8529e7bb7", + "rev": "90ae324e2c56af10f20549ab72014804a3064c7f", "type": "github" }, "original": { @@ -363,11 +366,11 @@ ] }, "locked": { - "lastModified": 1719827439, - "narHash": "sha256-tneHOIv1lEavZ0vQ+rgz67LPNCgOZVByYki3OkSshFU=", + "lastModified": 1720734513, + "narHash": "sha256-neWQ8eNtLTd+YMesb7WjKl1SVCbDyCm46LUgP/g/hdo=", "owner": "nix-community", "repo": "home-manager", - "rev": "59ce796b2563e19821361abbe2067c3bb4143a7d", + "rev": "90ae324e2c56af10f20549ab72014804a3064c7f", "type": "github" }, "original": { @@ -392,7 +395,7 @@ }, "lix-module": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_4", "flakey-profile": "flakey-profile", "lix": "lix", "nixpkgs": [ @@ -416,11 +419,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1718355099, - "narHash": "sha256-o4K6QHBjXrmcYkX9MIw9gZ+DHM3OaEVswswHRX9h8Is=", + "lastModified": 1720270372, + "narHash": "sha256-G5iteuo2gobI0Y5jHNEBc6UN9ixjwj6zopPKi7bJBE4=", "owner": "viperML", "repo": "nh", - "rev": "6fb30a4d490a98d08628ed93a90a9d23820ef9c8", + "rev": "7f8a1859ed6ea971fcf49b07ca8938e3000c3af4", "type": "github" }, "original": { @@ -437,11 +440,11 @@ ] }, "locked": { - "lastModified": 1719845423, - "narHash": "sha256-ZLHDmWAsHQQKnmfyhYSHJDlt8Wfjv6SQhl2qek42O7A=", + "lastModified": 1720845312, + "narHash": "sha256-yPhAsJTpyoIPQZJGC8Fw8W2lAXyhLoTn+HP20bmfkfk=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "ec12b88104d6c117871fad55e931addac4626756", + "rev": "5ce8503cf402cf76b203eba4b7e402bea8e44abc", "type": "github" }, "original": { @@ -450,6 +453,29 @@ "type": "github" } }, + "nix-pre-commit": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "compose2nix", + "onchg", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653259102, + "narHash": "sha256-XfCEu4zur/N2Dk4v8wFiQAgJ7bgNqPqwWp1vBXkeczM=", + "owner": "jmgilman", + "repo": "nix-pre-commit", + "rev": "6a99b2711c7eac9960939d8eb91e84322b22d50c", + "type": "github" + }, + "original": { + "owner": "jmgilman", + "repo": "nix-pre-commit", + "type": "github" + } + }, "nixos-aarch64-widevine": { "inputs": { "nixpkgs": "nixpkgs_4" @@ -470,11 +496,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1719895800, - "narHash": "sha256-xNbjISJTFailxass4LmdWeV4jNhAlmJPwj46a/GxE6M=", + "lastModified": 1720737798, + "narHash": "sha256-G/OtEAts7ZUvW5lrGMXSb8HqRp2Jr9I7reBuvCOL54w=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "6e253f12b1009053eff5344be5e835f604bb64cd", + "rev": "c5013aa7ce2c7ec90acee5d965d950c8348db751", "type": "github" }, "original": { @@ -486,27 +512,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718318537, - "narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=", + "lastModified": 1720542800, + "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420", + "rev": "feb2849fdeb70028c70d73b848214b00d324a497", "type": "github" }, "original": { "owner": "nixos", "repo": "nixpkgs", - "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420", + "rev": "feb2849fdeb70028c70d73b848214b00d324a497", "type": "github" } }, "nixpkgs-2405": { "locked": { - "lastModified": 1720110830, - "narHash": "sha256-E5dN9GDV4LwMEduhBLSkyEz51zM17XkWZ3/9luvNOPs=", + "lastModified": 1720954236, + "narHash": "sha256-1mEKHp4m9brvfQ0rjCca8P1WHpymK3TOr3v34ydv9bs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c0d0be00d4ecc4b51d2d6948e37466194c1e6c51", + "rev": "53e81e790209e41f0c1efa9ff26ff2fd7ab35e27", "type": "github" }, "original": { @@ -518,11 +544,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1720263701, - "narHash": "sha256-fKYOxXAXAv7zgfPVC1jWPJH6QrJ650IdJpFD9Mm5j0Y=", + "lastModified": 1721038144, + "narHash": "sha256-iIgCW53v4ai+Q7ZUmELXX2aA+gMrZpOMhCOzYenLUnI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "731dc15f156f9d28a60bf6b4629994d6bf883975", + "rev": "113763dc869d2dd4330f6f5614ec5400b0802c60", "type": "github" }, "original": { @@ -534,26 +560,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1719426051, - "narHash": "sha256-yJL9VYQhaRM7xs0M867ZFxwaONB9T2Q4LnGo1WovuR4=", + "lastModified": 1720915306, + "narHash": "sha256-6vuViC56+KSr+945bCV8akHK+7J5k6n/epYg/W3I5eQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "89c49874fb15f4124bf71ca5f42a04f2ee5825fd", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-24.05", - "type": "indirect" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1719720450, - "narHash": "sha256-57+R2Uj3wPeDeq8p8un19tzFFlgWiXJ8PbzgKtBgBX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "78f8641796edff3bfabbf1ef5029deadfe4a21d0", + "rev": "74348da2f3a312ee25cea09b98cdba4cb9fa5d5d", "type": "github" }, "original": { @@ -581,11 +592,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1716991068, - "narHash": "sha256-Av0UWCCiIGJxsZ6TFc+OiKCJNqwoxMNVYDBChmhjNpo=", + "lastModified": 1719663039, + "narHash": "sha256-tXlrgAQygNIy49LDVFuPXlWD2zTQV9/F8pfoqwwPJyo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "25cf937a30bf0801447f6bf544fc7486c6309234", + "rev": "4a1e673523344f6ccc84b37f4413ad74ea19a119", "type": "github" }, "original": { @@ -613,11 +624,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1720031269, - "narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=", + "lastModified": 1720768451, + "narHash": "sha256-EYekUHJE2gxeo2pM/zM9Wlqw1Uw2XTJXOSAO79ksc4Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev": "7e7c39ea35c5cdd002cd4588b03a3fb9ece6fad9", "type": "github" }, "original": { @@ -645,11 +656,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1720386169, - "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", + "lastModified": 1718208800, + "narHash": "sha256-US1tAChvPxT52RV8GksWZS415tTS7PV42KTc2PNDBmc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "rev": "cc54fb41d13736e92229c21627ea4f22199fee6b", "type": "github" }, "original": { @@ -688,11 +699,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1720222362, - "narHash": "sha256-3chuZmpQDhod758MzQJQQnoa08NalySx6gyv/T6LEIQ=", + "lastModified": 1721037488, + "narHash": "sha256-8sijRffJ4B6uzoKedXnNMZWZM4M0STV3kQEjZ6x7M3g=", "owner": "nix-community", "repo": "nixvim", - "rev": "edc8602d4723e172405ae00e778c7b407885d6c8", + "rev": "433d2f213c76945ae108d7a7c93e7b499d58680e", "type": "github" }, "original": { @@ -701,20 +712,42 @@ "type": "github" } }, + "onchg": { + "inputs": { + "nix-pre-commit": "nix-pre-commit", + "nixpkgs": [ + "compose2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1720368454, + "narHash": "sha256-NUSw3G2gsQX8/G64/pDBb1oitM+x13m7nFRvpiI4a+s=", + "owner": "aksiksi", + "repo": "onchg-rs", + "rev": "c42b693d10920874b3644ef1502e33318409d69c", + "type": "github" + }, + "original": { + "owner": "aksiksi", + "repo": "onchg-rs", + "type": "github" + } + }, "proxmox-nixos": { "inputs": { "crane": "crane", - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_3", "nixpkgs": "nixpkgs_7", - "nixpkgs-stable": "nixpkgs-stable", + "unstable": "unstable", "utils": "utils" }, "locked": { - "lastModified": 1719988415, - "narHash": "sha256-bUVo+LApRTJUUi1YIAQwtH2S521ZHYa8nwityjC2Few=", + "lastModified": 1720733826, + "narHash": "sha256-vceyHamwxJo3E71byjeHhhcXNmEKopV0bRLmVqXhpKE=", "owner": "SaumonNet", "repo": "proxmox-nixos", - "rev": "ff9bcfe67d34bf7ae25a065f2a732815904b4001", + "rev": "61b9547a97120b6091b6e919a195ebf92acb33ad", "type": "github" }, "original": { @@ -728,7 +761,7 @@ "apple-silicon": "apple-silicon", "compose2nix": "compose2nix", "firefox-addons": "firefox-addons", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "home-manager": "home-manager", "lix-module": "lix-module", "nh": "nh", @@ -764,14 +797,14 @@ "nixpkgs": [ "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable_2" + "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1720187017, - "narHash": "sha256-Zq+T1Bvd0ShZB9XM+bP0VJK3HjsSVQBLolkaCLBQnfQ=", + "lastModified": 1720926522, + "narHash": "sha256-eTpnrT6yu1vp8C0B5fxHXhgKxHoYMoYTEikQx///jxY=", "owner": "Mic92", "repo": "sops-nix", - "rev": "1b11e208cee97c47677439625dc22e5289dcdead", + "rev": "0703ba03fd9c1665f8ab68cc3487302475164617", "type": "github" }, "original": { @@ -782,7 +815,7 @@ }, "spicetify-nix": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_6", "nixpkgs": "nixpkgs_8" }, "locked": { @@ -882,11 +915,11 @@ ] }, "locked": { - "lastModified": 1719887753, - "narHash": "sha256-p0B2r98UtZzRDM5miGRafL4h7TwGRC4DII+XXHDHqek=", + "lastModified": 1720818892, + "narHash": "sha256-f52x9srIcqQm1Df3T+xYR5P6VfdnDFa2vkkcLhlTp6U=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "bdb6355009562d8f9313d9460c0d3860f525bc6c", + "rev": "5b002f8a53ed04c1a4177e7b00809d57bd2c696f", "type": "github" }, "original": { @@ -895,6 +928,21 @@ "type": "github" } }, + "unstable": { + "locked": { + "lastModified": 1718318537, + "narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, "utils": { "inputs": { "systems": "systems_4" diff --git a/home/config-files/maxfetch.sh b/home/config-files/maxfetch.sh index 539e233..791eb92 100755 --- a/home/config-files/maxfetch.sh +++ b/home/config-files/maxfetch.sh @@ -33,24 +33,111 @@ pkgs=$(nix-store --query --requisites /run/current-system | wc -l) arch=$(nix-instantiate --eval -E 'builtins.currentSystem') arch_sanitized=$(echo $arch | sed 's/^"//;s/"$//') + fetch() { - echo "${cyan}$(tput bold) _ ___ ____ ____ ${normal}$(tput sgr0)" - echo "${cyan}$(tput bold) / |/ (_)_ __/ __ \/ __/ ${normal}$(tput sgr0)" - echo "${cyan}$(tput bold) / / /\ \ / /_/ /\ \ ${normal}$(tput sgr0)" - echo "${cyan}$(tput bold) /_/|_/_//_\_"'\\'"____/___/ ${normal}$(tput sgr0)" - echo "" - echo " ╭─────────────╮ " - echo " │ ${red} ${normal} user │ ${red}$(whoami)${normal}" - echo " │ ${yellow} ${normal} distro │ ${yellow}$(sed -nE "s@PRETTY_NAME=\"([^\"]*)\"@\1@p" /etc/os-release)${normal} " - echo " │ ${green} ${normal} kernel │ ${green}$(uname -r)${normal} " - echo " │ ${cyan}󱂬 ${normal} de/wm │ ${cyan}$XDG_CURRENT_DESKTOP${normal} " - echo " │ ${blue} ${normal} uptime │ ${blue}${up}${normal} " - echo " │ ${magenta} ${normal} shell │ ${magenta}$(echo ${SHELL##*/})${normal} " - echo " │ ${red}󰏖 ${normal} pkgs │ ${red}${pkgs}${normal} " - echo " │ ${yellow} ${normal} arch │ ${yellow}${arch_sanitized}${normal} " - echo " ├─────────────┤ " - echo " │ ${_white} ${normal}colors │${_white}$unicode${normal}${red}$unicode${normal}${yellow}$unicode${normal}${green}$unicode${normal}${cyan}$unicode${normal}${blue}$unicode${normal}${magenta}$unicode${normal}${_black}$unicode${normal}" - echo " ╰─────────────╯ " + # echo "${cyan}$(tput bold) _ ___ ____ ____ ${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold) / |/ (_)_ __/ __ \/ __/ ${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold) / / /\ \ / /_/ /\ \ ${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold) /_/|_/_//_\_"'\\'"____/___/ ${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠞⠛⣦⠎⠁⠹⣆⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣄⣿⠀⠀⢸⠀⠀⢰⡏⢀⠿⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠁⠘⣿⡀⢀⣸⠀⡴⠋⠻⡏⠀⢘⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣤⣤⣤⣤⣀⣸⣇⠀⣼⣷⠞⣷⣾⡅⠀⢠⡗⢀⡼⠟⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⣀⣤⡀⠀⣀⠀⠀⠀⠀⠀⣀⣴⠖⠛⠉⠁⠀⠀⠀⠀⠀⠀⠉⠛⢮⣿⡏⣿⡾⣿⠃⢀⣼⡷⠞⠁⢀⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⢠⡟⠳⣄⡇⠀⢳⡄⠈⢳⡀⢀⣴⠾⠋⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀⠀⠀⠀⠀⣿⣷⣼⣷⣄⣦⣾⢿⣷⣶⣺⣍⣀⣀⠀⣀⣀⣀⣀⡀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠸⣇⠀⠘⣷⣄⠀⣧⣀⠀⣧⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣷⣄⣀⠀⠀⠹⠿⢿⣿⣿⣻⡾⠁⠀⣽⠋⠀⢸⠛⠁⠀⠀⠀⠀⠙⠒${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⢠⡶⠾⠷⣄⣈⣿⣷⣈⣷⣴⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠙⣿⣏⣻⣯⣆⠙⠶⣷⣿⣷⣿⡿⠁⢐⣾⠃⣀⡴⠿⣾⠉⢉⡿⠁⠀⡠⠂${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠈⢧⡤⢤⣤⡖⠻⣯⡟⣿⣿⣷⣷⠀⠀⠀⢀⣤⣤⣤⠤⠾⠛⠀⠀⠀⠉⡍⠘⠁⠀⠀⠩⠙⣛⣿⣿⣿⡿⢿⠟⣁⣀⣠⠟⠀⡾⠁⠀⡜⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠸⣇⠀⠙⢷⡿⠿⣓⢸⣿⡿⢿⡆⠠⠴⠞⠷⠿⠿⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⢀⣿⣉⠘⠙⢿⣆⠐⣾⠉⠀⠀⢸⠃⠀⠰⡁⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⡴⠞⠷⠦⠈⣳⣄⣹⣿⣿⠻⠾⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡞⣿⠳⢶⣄⣀⠀⢀⡾⠃⠙⣷⢶⠾⠉⠋⠁⠀⠀⠀⢸⡄⠀⠀⣇⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠳⣄⣀⣠⡾⠻⣯⡻⢿⣿⡍⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⡈⠆⠀⠈⠛⠛⠟⠓⠒⠾⢧⣤⡀⠀⠀⠀⠀⠀⠀⠈⣇⠀⠀⢸⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⢰⠞⠻⢦⣀⣈⣽⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠓⠒⠶⣤⡀⠀⠀⣿⠀⠀⢸⡇⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠈⠓⠦⡖⠋⢠⠏⢈⣹⣾⡏⠛⣶⣤⣄⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣼⠟⠀⣸⠋⠀⠀⣸⠁⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠁⠈⠙⠶⠟⠉⠋⠀⠸⣧⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⠞⢉⣠⡴⠚⠉⠀⠀⣰⠇⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠲⠦⠤⠤⠤⠤⢤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⡏⠉⠉⠉⠀⠀⠀⠀⣠⡼⠁⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠳⢦⣤⣀⠀⠀⠀⠀⠀⠘⣋⣀⣙⣿⠦⠤⠤⠴⠶⠛⠁⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠷⠶⠶⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ${normal}$(tput sgr0)"⠀ + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣿⣿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣶⣦⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡄⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣶⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⣀⡀⢀⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣷⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⡃⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⢿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⢹⣿⣿⣿⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⢸⣿⣿⣿⡆⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣆⣀⣼⣿⣿⣿⣧⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠏⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠉⠉⠛⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⣿⣿⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⠛⠛⠛⠛⠉⠋⠀⠀⠀⠀⠀⠀⠈⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⢸⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠻⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣿⣿⣿⠃${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠉⠙⠛⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⡿⠟⠋⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⠏⠙⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + if [[ $(($RANDOM % 2)) == 0 ]]; then + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠙⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⢺⣿⣿⡆⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⡇⠀⠀⠀⠀⠀⠀⣾⢡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣷⡦⠀⠀⠀⠀⢰⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠃⣠⣾⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣆⠀⠀⠀⣾⣿⣿⣿⣷⠄⠀⠰⠤⣀⠀⠀⣴⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠃⢺⣿⣿⣿⣿⡄⠀⠀⣿⣿⢿⣿⣿⣦⣦⣦⣶⣼⣭⣼⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣷⡆⠂⣿⣿⣞⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢙⣿⣿⣿⣿⣷⠸⣿⣿⣿⣿⣿⣿⠟⠻⣿⣿⣿⣿⡿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⢿⣿⣿⣿⣿⡄⣿⣿⣿⣿⣿⣿⡀⢀⣿⣿⣿⣿⠀⢸⣿⣿⠅⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢐⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⡀⣠⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡔⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⢁⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠠⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⣀⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⣻⣿⣿⣿⣿⣿⡟⠋⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠙⢿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⠿⢿⡿⠛⠋⠁⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣅⠀⠀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⣿⣿⣿⣿⡟⠃⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢻⣿⣿⣿⣿⣿⣤⡀⠀⠀⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠜⢠⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣦⠄⣠⠀${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠠⢸⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠛⣿⣿⣿⡿⠏⠀⠀⠀⠀⠀⠀⢳⣾⣿⣿⣿⣿⣿⣿⡶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⢨⠀⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⡿⡿⠿⠛⠙⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠏⠉⠻⠿⠟⠁${normal}$(tput sgr0)" + echo "${cyan}$(tput bold)⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ${normal}$(tput sgr0)" + echo "${cyan}$(tput bold) meow! ${normal}$(tput sgr0)" + else + # echo "${cyan}$(tput bold) _ へ ╱|、 ${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold) ૮ - ՛ ) つ(> < 7 ${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold) / ⁻ ៸ 、˜〵${normal}$(tput sgr0)" + # echo "${cyan}$(tput bold) 乀 (ˍ, ل じしˍ,)ノ${normal}$(tput sgr0)" + echo "" + echo " ╭─────────────╮ " + echo " │ ${red} ${normal} user │ ${red}$(whoami)${normal}" + echo " │ ${yellow} ${normal} distro │ ${yellow}$(sed -nE "s@PRETTY_NAME=\"([^\"]*)\"@\1@p" /etc/os-release)${normal} " + echo " │ ${green} ${normal} kernel │ ${green}$(uname -r)${normal} " + echo " │ ${cyan}󱂬 ${normal} de/wm │ ${cyan}$XDG_CURRENT_DESKTOP${normal} " + echo " │ ${blue} ${normal} uptime │ ${blue}${up}${normal} " + echo " │ ${magenta} ${normal} shell │ ${magenta}$(echo ${SHELL##*/})${normal} " + echo " │ ${red}󰏖 ${normal} pkgs │ ${red}${pkgs}${normal} " + echo " │ ${yellow} ${normal} arch │ ${yellow}${arch_sanitized}${normal} " + echo " ├─────────────┤ " + echo " │ ${_white} ${normal}colors │${_white}$unicode${normal}${red}$unicode${normal}${yellow}$unicode${normal}${green}$unicode${normal}${cyan}$unicode${normal}${blue}$unicode${normal}${magenta}$unicode${normal}${_black}$unicode${normal}" + echo " ╰─────────────╯ " + fi } fetch && exit 0 diff --git a/home/modules/firefox.nix b/home/modules/firefox.nix index 1505785..9b3350a 100644 --- a/home/modules/firefox.nix +++ b/home/modules/firefox.nix @@ -34,7 +34,7 @@ with inputs; { noscript ]; search = { - default = "SearX"; + default = "DuckDuckGo"; force = true; engines = { "SearX" = { @@ -49,6 +49,9 @@ with inputs; { ]; } ]; + + iconUpdateURL = "https://searx.org/favicon.ico"; + definedAliases = ["@sx"]; }; "Nix Packages" = { urls = [ diff --git a/home/modules/nixvim.nix b/home/modules/nixvim.nix index f2de004..ac35868 100644 --- a/home/modules/nixvim.nix +++ b/home/modules/nixvim.nix @@ -42,6 +42,23 @@ neocord.enable = true; rustaceanvim = { enable = true; + settings = { + dap.autoloadConfigurations = true; + dap.adapter = let + code-lldb = pkgs.vscode-extensions.vadimcn.vscode-lldb; + in { + executable.command = "${code-lldb}/share/vscode/extensions/vadimcn.vscode-lldb/adapter/codelldb"; + executable.args = [ + "--liblldb" + "${code-lldb}/share/vscode/extensions/vadimcn.vscode-lldb/lldb/lib/liblldb.dylib" + "--port" + "31337" + ]; + type = "server"; + port = "31337"; + host = "127.0.0.1"; + }; + }; server = { settings = { inlayHints = { @@ -77,6 +94,13 @@ nil_ls.enable = true; }; }; + dap = { + enable = true; + extensions = { + dap-virtual-text.enable = true; + dap-ui.enable = true; + }; + }; gitsigns.enable = true; fugitive.enable = true; nix-develop.enable = true; @@ -161,18 +185,45 @@ } { type = "text"; - val = [ - " ▒██ ██▒ █████ ▄▄▄█████▓ ▄████▄ " - " ▒▒ █ █ ▒░▒██▓ ██▒▓ ██▒ ▓▒▒██▀ ▀█ " - " ░░ █ ░▒██▒ ██░▒ ▓██░ ▒░▒▓█ ▄ " - " ░ █ █ ▒ ░██ █▀ ░░ ▓██▓ ░ ▒▓▓▄ ▄██▒ " - " ▒██▒ ▒██▒░▒███▒█▄ ▒██▒ ░ ▒ ▓███▀ ░ " - " ▒▒ ░ ░▓ ░░░ ▒▒░ ▒ ▒ ░░ ░ ░▒ ▒ ░ " - " ░░ ░▒ ░ ░ ▒░ ░ ░ ░ ▒ " - " ░ ░ ░ ░ ░ ░ " - " ░ ░ ░ ░ ░ " - " ░ " - ]; + # val = [ + # " ▒██ ██▒ █████ ▄▄▄█████▓ ▄████▄ " + # " ▒▒ █ █ ▒░▒██▓ ██▒▓ ██▒ ▓▒▒██▀ ▀█ " + # " ░░ █ ░▒██▒ ██░▒ ▓██░ ▒░▒▓█ ▄ " + # " ░ █ █ ▒ ░██ █▀ ░░ ▓██▓ ░ ▒▓▓▄ ▄██▒ " + # " ▒██▒ ▒██▒░▒███▒█▄ ▒██▒ ░ ▒ ▓███▀ ░ " + # " ▒▒ ░ ░▓ ░░░ ▒▒░ ▒ ▒ ░░ ░ ░▒ ▒ ░ " + # " ░░ ░▒ ░ ░ ▒░ ░ ░ ░ ▒ " + # " ░ ░ ░ ░ ░ ░ " + # " ░ ░ ░ ░ ░ " + # " ░ " + # ]; + val = [ +"⠀⠀⠀⠀⠀⠀⠀⠙⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ " +"⠀⠀⠀⠀⠀⠀⠀⠀⢺⣿⣿⡆⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⡇⠀⠀⠀⠀⠀⠀⣾⢡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣷⡦⠀⠀⠀⠀⢰⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠃⣠⣾⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣆⠀⠀⠀⣾⣿⣿⣿⣷⠄⠀⠰⠤⣀⠀⠀⣴⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠃⢺⣿⣿⣿⣿⡄⠀⠀⣿⣿⢿⣿⣿⣦⣦⣦⣶⣼⣭⣼⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣷⡆⠂⣿⣿⣞⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢙⣿⣿⣿⣿⣷⠸⣿⣿⣿⣿⣿⣿⠟⠻⣿⣿⣿⣿⡿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⢿⣿⣿⣿⣿⡄⣿⣿⣿⣿⣿⣿⡀⢀⣿⣿⣿⣿⠀⢸⣿⣿⠅⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣇⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢐⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⡀⣠⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡔⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠀⢁⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⠠⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⣀⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⠀⣻⣿⣿⣿⣿⣿⡟⠋⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠙⢿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀⠀⠀" +"⠀⠀⠀⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⠿⢿⡿⠛⠋⠁⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣅⠀⠀⠀⠀⠀" +"⠀⠀⠀⣿⣿⣿⣿⡟⠃⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢻⣿⣿⣿⣿⣿⣤⡀⠀⠀⠀" +"⠀⠜⢠⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣦⠄⣠⠀" +"⠠⢸⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿" +"⠀⠛⣿⣿⣿⡿⠏⠀⠀⠀⠀⠀⠀⢳⣾⣿⣿⣿⣿⣿⣿⡶⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿" +"⠀⢨⠀⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⡿⡿⠿⠛⠙⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠏⠉⠻⠿⠟⠁" +"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ " + ]; #val = [ # " ███████████████ ██████████████████" # " ███████████████ ██ " diff --git a/hosts/antivirus.nix b/hosts/antivirus.nix index 95f786d..b5b0336 100644 --- a/hosts/antivirus.nix +++ b/hosts/antivirus.nix @@ -4,10 +4,10 @@ pkgs, ... }: { - services.clamav = { - updater.enable = true; - updater.settings = {LogVerbose = true;}; - updater.interval = "hourly"; - daemon.enable = true; - }; + # services.clamav = { + # updater.enable = true; + # updater.settings = {LogVerbose = true;}; + # updater.interval = "hourly"; + # daemon.enable = true; + # }; } diff --git a/hosts/x86_64-linux/beleth/default.nix b/hosts/x86_64-linux/beleth/default.nix index 417fd3c..e52b44c 100644 --- a/hosts/x86_64-linux/beleth/default.nix +++ b/hosts/x86_64-linux/beleth/default.nix @@ -21,7 +21,7 @@ with lib; { ./docker.nix # ./borg.nix # ./nfs.nix - ../../gc.nix + # ../../gc.nix ../../../common ]; diff --git a/hosts/x86_64-linux/beleth/git.nix b/hosts/x86_64-linux/beleth/git.nix index 7e9a5b8..ec295d8 100644 --- a/hosts/x86_64-linux/beleth/git.nix +++ b/hosts/x86_64-linux/beleth/git.nix @@ -7,7 +7,7 @@ }: let gitea-actions-runner-custom = import ./services/gitea-runner.nix; in { - imports = [ gitea-actions-runner-custom ]; + imports = [gitea-actions-runner-custom]; # config = { services.gitea-actions-runner = gitea-actions-runner-custom.config.services.gitea-actions-runner; }; sops.secrets.forgejo_runner_token = { owner = "forgejo"; @@ -27,7 +27,9 @@ in { }; DEFAULT = { APP_NAME = "Git so good it could be heroin"; - APP_DESC = "For an account, contact me via Mastodon"; + }; + metrics = { + ENABLED = true; }; }; }; @@ -43,7 +45,7 @@ in { "ubuntu-22.04:docker://node:16-bullseye" "ubuntu-20.04:docker://node:16-bullseye" "ubuntu-18.04:docker://node:16-buster" - "native:host" + "native:host" ]; hostPackages = with pkgs; [ bash diff --git a/hosts/x86_64-linux/beleth/monitoring.nix b/hosts/x86_64-linux/beleth/monitoring.nix index 1047bbd..d55f120 100644 --- a/hosts/x86_64-linux/beleth/monitoring.nix +++ b/hosts/x86_64-linux/beleth/monitoring.nix @@ -61,6 +61,7 @@ targets = [ "127.0.0.1:${toString config.services.prometheus.exporters.node.port}" "127.0.0.1:${toString config.services.prometheus.exporters.nextcloud.port}" + "127.0.0.1:${toString config.services.forgejo.settings.server.HTTP_PORT}" ]; } ]; diff --git a/hosts/x86_64-linux/beleth/nextcloud.nix b/hosts/x86_64-linux/beleth/nextcloud.nix index 311da35..dbfcd5f 100644 --- a/hosts/x86_64-linux/beleth/nextcloud.nix +++ b/hosts/x86_64-linux/beleth/nextcloud.nix @@ -57,11 +57,11 @@ contacts calendar notes - previewgenerator + # previewgenerator ; recognize = pkgs.fetchNextcloudApp { - sha256 = "sha256-7qp9UbUcMwBNdGixaR0BAigMAtlyCAN39WxqHbsFVGE="; - url = "https://github.com/nextcloud/recognize/releases/download/v7.0.0/recognize-7.0.0.tar.gz"; + sha256 = "sha256-hg8uY7cvdYnmEh6vKC36vkORDC+MSZA8lFqGQK2RbkE="; + url = "https://github.com/nextcloud/recognize/releases/download/v7.0.2/recognize-7.0.2.tar.gz"; license = "agpl3Only"; }; }; diff --git a/hosts/x86_64-linux/beleth/services/gitea-runner.nix b/hosts/x86_64-linux/beleth/services/gitea-runner.nix index e433d09..274a65f 100644 --- a/hosts/x86_64-linux/beleth/services/gitea-runner.nix +++ b/hosts/x86_64-linux/beleth/services/gitea-runner.nix @@ -1,12 +1,12 @@ -{ config -, lib -, pkgs -, utils -, ... -}: - -let - inherit (lib) +{ + config, + lib, + pkgs, + utils, + ... +}: let + inherit + (lib) any attrValues concatStringsSep @@ -23,15 +23,16 @@ let mkIf nameValuePair types - ; + ; - inherit (utils) + inherit + (utils) escapeSystemdPath - ; + ; cfg = config.services.gitea-actions-runner-custom; - settingsFormat = pkgs.formats.yaml { }; + settingsFormat = pkgs.formats.yaml {}; # Check whether any runner instance label requires a container runtime # Empty label strings result in the upstream defined defaultLabels, which require docker @@ -47,16 +48,15 @@ let hasPodman = config.virtualisation.podman.enable; tokenXorTokenFile = instance: - (instance.token == null && instance.tokenFile != null) || - (instance.token != null && instance.tokenFile == null); -in -{ + (instance.token == null && instance.tokenFile != null) + || (instance.token != null && instance.tokenFile == null); +in { meta.maintainers = with lib.maintainers; [ hexa ]; options.services.gitea-actions-runner-custom = with types; { - package = mkPackageOption pkgs "gitea-actions-runner-custom" { }; + package = mkPackageOption pkgs "gitea-actions-runner-custom" {}; instances = mkOption { default = {}; @@ -131,7 +131,7 @@ in freeformType = settingsFormat.type; }; - default = { }; + default = {}; }; hostPackages = mkOption { @@ -169,13 +169,16 @@ in }; config = mkIf (cfg.instances != {}) { - assertions = [ { - assertion = any tokenXorTokenFile (attrValues cfg.instances); - message = "Instances of gitea-actions-runner-custom can have `token` or `tokenFile`, not both."; - } { - assertion = wantsContainerRuntime -> hasDocker || hasPodman; - message = "Label configuration on gitea-actions-runner-custom instance requires either docker or podman."; - } ]; + assertions = [ + { + assertion = any tokenXorTokenFile (attrValues cfg.instances); + message = "Instances of gitea-actions-runner-custom can have `token` or `tokenFile`, not both."; + } + { + assertion = wantsContainerRuntime -> hasDocker || hasPodman; + message = "Label configuration on gitea-actions-runner-custom instance requires either docker or podman."; + } + ]; systemd.services = let mkRunnerService = name: instance: let @@ -188,75 +191,90 @@ in nameValuePair "gitea-runner-${escapeSystemdPath name}" { inherit (instance) enable; description = "Gitea Actions Runner"; - wants = [ "network-online.target" ]; - after = [ - "network-online.target" - ] ++ optionals (wantsDocker) [ - "docker.service" - ] ++ optionals (wantsPodman) [ - "podman.service" - ]; + wants = ["network-online.target"]; + after = + [ + "network-online.target" + ] + ++ optionals wantsDocker [ + "docker.service" + ] + ++ optionals wantsPodman [ + "podman.service" + ]; wantedBy = [ "multi-user.target" ]; - environment = optionalAttrs (instance.token != null) { - TOKEN = "${instance.token}"; - } // optionalAttrs (wantsPodman) { - DOCKER_HOST = "unix:///run/podman/podman.sock"; - } // { - HOME = "/var/lib/gitea-runner/${name}"; - }; - path = with pkgs; [ - coreutils - ] ++ lib.optionals wantsHost instance.hostPackages; - serviceConfig = { - DynamicUser = true; - User = "gitea-runner"; - StateDirectory = "gitea-runner"; - WorkingDirectory = "-/var/lib/gitea-runner/${name}"; + environment = + optionalAttrs (instance.token != null) { + TOKEN = "${instance.token}"; + } + // optionalAttrs wantsPodman { + DOCKER_HOST = "unix:///run/podman/podman.sock"; + } + // { + HOME = "/var/lib/gitea-runner/${name}"; + }; + path = with pkgs; + [ + coreutils + ] + ++ lib.optionals wantsHost instance.hostPackages; + serviceConfig = + { + DynamicUser = true; + User = "gitea-runner"; + StateDirectory = "gitea-runner"; + WorkingDirectory = "-/var/lib/gitea-runner/${name}"; - # gitea-runner might fail when gitea is restarted during upgrade. - Restart = "on-failure"; - RestartSec = 2; + # gitea-runner might fail when gitea is restarted during upgrade. + Restart = "on-failure"; + RestartSec = 2; - ExecStartPre = [(pkgs.writeShellScript "gitea-register-runner-${name}" '' - export INSTANCE_DIR="$STATE_DIRECTORY/${name}" - export TOKEN=$(cat /run/secrets/forgejo_runner_token) - mkdir -vp "$INSTANCE_DIR" - cd "$INSTANCE_DIR" + ExecStartPre = [ + (pkgs.writeShellScript "gitea-register-runner-${name}" '' + export INSTANCE_DIR="$STATE_DIRECTORY/${name}" + export TOKEN=$(cat /run/secrets/forgejo_runner_token) + mkdir -vp "$INSTANCE_DIR" + cd "$INSTANCE_DIR" - # force reregistration on changed labels - export LABELS_FILE="$INSTANCE_DIR/.labels" - export LABELS_WANTED="$(echo ${escapeShellArg (concatStringsSep "\n" instance.labels)} | sort)" - export LABELS_CURRENT="$(cat $LABELS_FILE 2>/dev/null || echo 0)" + # force reregistration on changed labels + export LABELS_FILE="$INSTANCE_DIR/.labels" + export LABELS_WANTED="$(echo ${escapeShellArg (concatStringsSep "\n" instance.labels)} | sort)" + export LABELS_CURRENT="$(cat $LABELS_FILE 2>/dev/null || echo 0)" - if [ ! -e "$INSTANCE_DIR/.runner" ] || [ "$LABELS_WANTED" != "$LABELS_CURRENT" ]; then - # remove existing registration file, so that changing the labels forces a re-registration - rm -v "$INSTANCE_DIR/.runner" || true + if [ ! -e "$INSTANCE_DIR/.runner" ] || [ "$LABELS_WANTED" != "$LABELS_CURRENT" ]; then + # remove existing registration file, so that changing the labels forces a re-registration + rm -v "$INSTANCE_DIR/.runner" || true - # perform the registration - ${cfg.package}/bin/act_runner register --no-interactive \ - --instance ${escapeShellArg instance.url} \ - --token "$TOKEN" \ - --name ${escapeShellArg instance.name} \ - --labels ${escapeShellArg (concatStringsSep "," instance.labels)} \ - --config ${configFile} + # perform the registration + ${cfg.package}/bin/act_runner register --no-interactive \ + --instance ${escapeShellArg instance.url} \ + --token "$TOKEN" \ + --name ${escapeShellArg instance.name} \ + --labels ${escapeShellArg (concatStringsSep "," instance.labels)} \ + --config ${configFile} - # and write back the configured labels - echo "$LABELS_WANTED" > "$LABELS_FILE" - fi + # and write back the configured labels + echo "$LABELS_WANTED" > "$LABELS_FILE" + fi - '')]; - ExecStart = "${cfg.package}/bin/act_runner daemon --config ${configFile}"; - SupplementaryGroups = optionals (wantsDocker) [ - "docker" - ] ++ optionals (wantsPodman) [ - "podman" - ]; - } // optionalAttrs (instance.tokenFile != null) { - EnvironmentFile = instance.tokenFile; - }; + '') + ]; + ExecStart = "${cfg.package}/bin/act_runner daemon --config ${configFile}"; + SupplementaryGroups = + optionals wantsDocker [ + "docker" + ] + ++ optionals wantsPodman [ + "podman" + ]; + } + // optionalAttrs (instance.tokenFile != null) { + EnvironmentFile = instance.tokenFile; + }; }; - in mapAttrs' mkRunnerService cfg.instances; + in + mapAttrs' mkRunnerService cfg.instances; }; } diff --git a/hosts/x86_64-linux/beleth/wireguard.nix b/hosts/x86_64-linux/beleth/wireguard.nix index 7298472..40e05ad 100644 --- a/hosts/x86_64-linux/beleth/wireguard.nix +++ b/hosts/x86_64-linux/beleth/wireguard.nix @@ -22,17 +22,17 @@ privateKeyFile = "/home/xqtc/wireguard-keys/private"; peers = [ - { - #anner - publicKey = "5ar4lh3Ra4TRmUJeeBtPgDvZnAkGssJDUN53y9oa3So="; - allowedIPs = [ - "2a0f:be01:0:100::/64" - "2a0f:be01:0:200::/64" - "2a0f:be01:fe:f00::/56" - ]; - endpoint = "[2a0f:be01::1]:51822"; - # persistentKeepalive = 15; - } + # { + # #anner + # publicKey = "5ar4lh3Ra4TRmUJeeBtPgDvZnAkGssJDUN53y9oa3So="; + # allowedIPs = [ + # "2a0f:be01:0:100::/64" + # "2a0f:be01:0:200::/64" + # "2a0f:be01:fe:f00::/56" + # ]; + # endpoint = "[2a0f:be01::1]:51822"; + # # persistentKeepalive = 15; + # } ]; }; }; diff --git a/hosts/x86_64-linux/lilith/default.nix b/hosts/x86_64-linux/lilith/default.nix index 388515b..1e6dcc5 100644 --- a/hosts/x86_64-linux/lilith/default.nix +++ b/hosts/x86_64-linux/lilith/default.nix @@ -127,7 +127,7 @@ users.users.xqtc = { isNormalUser = true; extraGroups = ["wheel" "docker" "libvirtd" "adbusers"]; # Enable ‘sudo’ for the user. - packages = with pkgs; [nushell clamtk]; + packages = with pkgs; [nushell]; shell = pkgs.nushell; };