diff --git a/TODO b/TODO index d91cb7b..f498088 100644 --- a/TODO +++ b/TODO @@ -17,15 +17,20 @@ Get hyprcursor working with Bibata-Modern-Ice Get a GRUB theme working Get SDDM and a theme working +Make a custom hyprlock screen - - -Get waybar (or another bar) working - +Get AGS working +Make an applauncher in AGS +Remove hyprland splash screen on init +Made lolcathost home modular Overtime just install more programs that I need regularly: ie - btop/htop/etc +Get GTK Bibata Cursors to be the same size as my system cursor (NOT SURE WHAT I DID...) + + +Get waybar (or another bar) working Get a QT theme @@ -35,12 +40,10 @@ Bind new terminal to SUPER+Enter instead of SUPER+Q Join Rio Terminal's discord and ask if they support nerdfonts or if I'm doing something wrong -Figure out how to modularise my dotfiles Change Dell loading screen (Boot Graphics Resource Table, aka BGRT) -Get GTK Bibata Cursors to be the same size as my system cursor diff --git a/TODO_UI b/TODO_UI new file mode 100644 index 0000000..34b5246 --- /dev/null +++ b/TODO_UI @@ -0,0 +1,3 @@ +1. Create more themes for my applauncher +2. Create more themes for hyprlock + check out: https://github.com/MrVivekRajan/Hyprlock-Styles diff --git a/flake.lock b/flake.lock index 4f9c813..1977cf0 100755 --- a/flake.lock +++ b/flake.lock @@ -2,15 +2,15 @@ "nodes": { "ags": { "inputs": { - "nixpkgs": "nixpkgs", - "systems": "systems" + "astal": "astal", + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1728326430, - "narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=", + "lastModified": 1738087375, + "narHash": "sha256-GLyNtU9A2VN22jNRHZ2OXuFfTJLh8uEVVt+ftsKUX0c=", "owner": "Aylur", "repo": "ags", - "rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d", + "rev": "a6a7a0adb17740f4c34a59902701870d46fbb6a4", "type": "github" }, "original": { @@ -21,19 +21,22 @@ }, "ags_2": { "inputs": { - "nixpkgs": "nixpkgs_4", - "systems": "systems_3" + "astal": "astal_2", + "nixpkgs": [ + "hyprpanel", + "nixpkgs" + ] }, "locked": { - "lastModified": 1728326430, - "narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=", - "owner": "Aylur", + "lastModified": 1736090999, + "narHash": "sha256-B5CJuHqfJrzPa7tObK0H9669/EClSHpa/P7B9EuvElU=", + "owner": "aylur", "repo": "ags", - "rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d", + "rev": "5527c3c07d92c11e04e7fd99d58429493dba7e3c", "type": "github" }, "original": { - "owner": "Aylur", + "owner": "aylur", "repo": "ags", "type": "github" } @@ -58,11 +61,11 @@ ] }, "locked": { - "lastModified": 1730968822, - "narHash": "sha256-NocDjINsh6ismkhb0Xr6xPRksmhuB2WGf8ZmXMhxu7Y=", + "lastModified": 1739103745, + "narHash": "sha256-c53dcRaw0F4Os9WD05HwIRs9kTDZw4Mxe1XK4edEALo=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "a49bc3583ff223f426cb3526fdaa4bcaa247ec14", + "rev": "a3dda0d10ce9aa1d1dfb7a6c139ea8c2872c74bd", "type": "github" }, "original": { @@ -71,6 +74,49 @@ "type": "github" } }, + "astal": { + "inputs": { + "nixpkgs": [ + "ags", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737670815, + "narHash": "sha256-ZCxxshGN7XooabArcoGkYSNx5yVunqjKJi2aTv6cznI=", + "owner": "aylur", + "repo": "astal", + "rev": "127e9cdcbf173846a3c40ddc0abfbb038df48042", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "astal", + "type": "github" + } + }, + "astal_2": { + "inputs": { + "nixpkgs": [ + "hyprpanel", + "ags", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735172721, + "narHash": "sha256-rtEAwGsHSppnkR3Qg3eRJ6Xh/F84IY9CrBBLzYabalY=", + "owner": "aylur", + "repo": "astal", + "rev": "6c84b64efc736e039a8a10774a4a1bf772c37aa2", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "astal", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -104,27 +150,11 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -160,11 +190,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1730004881, - "narHash": "sha256-8xVIqIW25o2uCL0fxAmP4Sj9sdebarQXmd1+64yMe8o=", + "lastModified": 1734412921, + "narHash": "sha256-JeMqc7lLowKn6klrCcOkcOg38yNqF7MPbN4Elh6Xvq0=", "owner": "vinceliuice", "repo": "grub2-themes", - "rev": "42c232dfb46bf93c17506cbc1a574e5e89b5e09f", + "rev": "f6ab2438e124f60a340a526543e498e5e33b3c53", "type": "github" }, "original": { @@ -180,15 +210,16 @@ ] }, "locked": { - "lastModified": 1730633670, - "narHash": "sha256-ZFJqIXpvVKvzOVFKWNRDyIyAo+GYdmEPaYi1bZB6uf0=", + "lastModified": 1736373539, + "narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=", "owner": "nix-community", "repo": "home-manager", - "rev": "8f6ca7855d409aeebe2a582c6fd6b6a8d0bf5661", + "rev": "bd65bc3cde04c16755955630b344bc9e35272c56", "type": "github" }, "original": { "owner": "nix-community", + "ref": "release-24.11", "repo": "home-manager", "type": "github" } @@ -209,11 +240,11 @@ ] }, "locked": { - "lastModified": 1728669738, - "narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=", + "lastModified": 1738664950, + "narHash": "sha256-xIeGNM+iivwVHkv9tHwOqoUP5dDrtees34bbFKKMZYs=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "0264e698149fcb857a66a53018157b41f8d97bb0", + "rev": "7c6d165e1eb9045a996551eb9f121b6d1b30adc3", "type": "github" }, "original": { @@ -222,25 +253,56 @@ "type": "github" } }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739049071, + "narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, "hyprland": { "inputs": { "aquamarine": "aquamarine", "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs_3", "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2", + "systems": "systems", "xdph": "xdph" }, "locked": { - "lastModified": 1730969692, - "narHash": "sha256-4Ly9zkqnRB6qLjMeddfUyd4iRLvq+RDspBWABS8DGN4=", + "lastModified": 1739211449, + "narHash": "sha256-zuNQu1w9xXWOBD+FlNSqmQticolSyLNp/iSkpE5BBNc=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "e58e97b0a38b8ccc87a4304c9e4e2b37c9966875", + "rev": "f2d43e5f2180adb81b3b7b51a7d0f39dace70b05", "type": "github" }, "original": { @@ -261,11 +323,11 @@ ] }, "locked": { - "lastModified": 1728345020, - "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", + "lastModified": 1738422629, + "narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "a7c183800e74f337753de186522b9017a07a8cee", + "rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed", "type": "github" }, "original": { @@ -274,6 +336,74 @@ "type": "github" } }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1737634706, + "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "8810df502cdee755993cb803eba7b23f189db795", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739048983, + "narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, "hyprlang": { "inputs": { "hyprutils": [ @@ -290,11 +420,11 @@ ] }, "locked": { - "lastModified": 1728168612, - "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", + "lastModified": 1739048914, + "narHash": "sha256-vd5rJBTmp2w7SDgfv23Zcd84ktI5eDA7e5UBzx+pKrU=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", + "rev": "a7334904d591f38757c46fbe2ab68651877d9099", "type": "github" }, "original": { @@ -306,14 +436,14 @@ "hyprpanel": { "inputs": { "ags": "ags_2", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1731270736, - "narHash": "sha256-N0unlLf/7BqkrYx3BO9svv1+oLzKpArgiqLzkmNpD3Q=", + "lastModified": 1739002652, + "narHash": "sha256-W83O9ASWUFaDAFY7H9vvW/Gm9PN5Lkh0McYW3bA/6aU=", "owner": "Jas-SinghFSU", "repo": "HyprPanel", - "rev": "a7855baf13c6abdd0b0e988e4390112cd7deda67", + "rev": "0d5f80ff5cd525b8f27adfb84cef67d90e3d7f10", "type": "github" }, "original": { @@ -334,11 +464,11 @@ ] }, "locked": { - "lastModified": 1730968903, - "narHash": "sha256-zFvzLXcSm0Ia4XI1SE4FQ9KE63hlGrRWhLtwMolWuR8=", + "lastModified": 1739048933, + "narHash": "sha256-ck6MaoYvISBQKqZR+HcxXnx0wOhyCauxfVMaV5zhJxQ=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "3ce0cde8709cdacbfba471f8e828433b58a561e9", + "rev": "e4e018a2ca6f5a9c33511973454199e1c7c85499", "type": "github" }, "original": { @@ -359,11 +489,11 @@ ] }, "locked": { - "lastModified": 1726874836, - "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=", + "lastModified": 1739049028, + "narHash": "sha256-RleJp7LYbr6s+M1xgbmhtBs+fYa3ZdIiF7+QalJ4D1g=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e", + "rev": "04146df74a8d5ec0b579657307be01f1e241125f", "type": "github" }, "original": { @@ -391,14 +521,16 @@ "nixcord": { "inputs": { "flake-compat": "flake-compat_2", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_5", + "systems": "systems_2", + "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1730720546, - "narHash": "sha256-5147A6X0MH6u/YDxLe+Nnva3oxfLQanC716LarG/uoo=", + "lastModified": 1739009891, + "narHash": "sha256-H3QgHEQhr8aAqrCTeJ2qZekAuzw2HhCnuzzeyxB0wbk=", "owner": "kaylorben", "repo": "nixcord", - "rev": "e3e27c77316f7526b1a846778ae9c759c9377611", + "rev": "677db34f35bdffcdca07246099ea3b22fc6688dc", "type": "github" }, "original": { @@ -409,43 +541,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1725634671, - "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", - "owner": "NixOS", + "lastModified": 1737469691, + "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", + "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1730741070, - "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_2": { "locked": { - "lastModified": 1730808093, - "narHash": "sha256-oOenwoxpzQsBNi7KltgnXqq6e0+CxlfNXKn3k27w6cQ=", + "lastModified": 1739240429, + "narHash": "sha256-pSpuHZvcvcWeRJwVpILrIjwFuFxsTVsHq6P470rOd/4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c1a390f74b2c93f69a6805142f11a215a689cec1", + "rev": "3f5198c541172f46867427d4160cc9a2918414a0", "type": "github" }, "original": { @@ -457,11 +573,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", + "lastModified": 1739020877, + "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", + "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547", "type": "github" }, "original": { @@ -473,15 +589,15 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1725634671, - "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", - "owner": "NixOS", + "lastModified": 1736344531, + "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", + "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -489,27 +605,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1729880355, - "narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "18536bf04cd71abd345f9579158841376fdd0c5a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1730768919, - "narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=", + "lastModified": 1737003892, + "narHash": "sha256-RCzJE9wKByLCXmRBp+z8LK9EgdW+K+W/DXnJS4S/NVo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc", + "rev": "ae06b9c2d83cb5c8b12d7d0e32692e93d1379713", "type": "github" }, "original": { @@ -519,29 +619,45 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_6": { "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", + "lastModified": 1735554305, + "narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", + "rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1739055578, + "narHash": "sha256-2MhC2Bgd06uI1A0vkdNUyDYsMD0SLNGKtD8600mZ69A=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a45fa362d887f4d4a7157d95c28ca9ce2899b70e", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-24.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_8": { "locked": { - "lastModified": 1730200266, - "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", + "lastModified": 1735471104, + "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=", "owner": "nixos", "repo": "nixpkgs", - "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", + "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4", "type": "github" }, "original": { @@ -558,15 +674,14 @@ "nixpkgs": [ "hyprland", "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" + ] }, "locked": { - "lastModified": 1730814269, - "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "d70155fdc00df4628446352fc58adc640cd705c2", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -591,17 +706,17 @@ }, "spicetify-nix": { "inputs": { - "flake-compat": "flake-compat_3", "nixpkgs": [ "nixpkgs" - ] + ], + "systems": "systems_3" }, "locked": { - "lastModified": 1730780158, - "narHash": "sha256-ZJkCFn4PL49rINz7xrjlBqw9nF8wWJE7fSVqbHlCWSA=", + "lastModified": 1739223162, + "narHash": "sha256-YrbYTM0CkZQG38Ysr2gF4BYdsQDNQtQ4YdQTDgw/zWM=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "2791c6662002731d3dfc00312307aef547e1c8be", + "rev": "dea717737d04a2a3e877c082bfd2c7f91c1a33ff", "type": "github" }, "original": { @@ -612,16 +727,16 @@ }, "swww": { "inputs": { - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_3", "nixpkgs": "nixpkgs_8", "utils": "utils" }, "locked": { - "lastModified": 1730424990, - "narHash": "sha256-+8YUJsNzvgAeZYLfbHYfYlad/iS+6Eec/LWzL1ZIGfY=", + "lastModified": 1737129944, + "narHash": "sha256-XBwgv80YfLZ70XYVEnR0nA7Rz5jP241D5FiwrTg7tDk=", "owner": "LGFae", "repo": "swww", - "rev": "0db3f4eb192f1c9bf914efcc1d2aba809da5d78a", + "rev": "3e2e2ba8f44469a1446138ee97d2988e22b093bf", "type": "github" }, "original": { @@ -647,31 +762,30 @@ }, "systems_2": { "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", - "type": "github" + "id": "systems", + "type": "indirect" } }, "systems_3": { "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" } }, @@ -690,16 +804,34 @@ "type": "github" } }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1737103437, + "narHash": "sha256-uPNWcYbhY2fjY3HOfRCR5jsfzdzemhfxLSxwjXYXqNc=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "d1ed3b385f8130e392870cfb1dbfaff8a63a1899", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "utils": { "inputs": { "systems": "systems_4" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -736,11 +868,11 @@ ] }, "locked": { - "lastModified": 1730743262, - "narHash": "sha256-iTLqj3lU8kFehPm5tXpctzkD274t/k1nwSSq3qCWXeg=", + "lastModified": 1737634991, + "narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "09b23cef06fe248e61cec8862c04b9bcb62f4b6d", + "rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 138b629..def51aa 100755 --- a/flake.nix +++ b/flake.nix @@ -3,10 +3,12 @@ inputs = { #nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + #nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { - url = "github:nix-community/home-manager"; + #url = "github:nix-community/home-manager"; + url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -72,6 +74,15 @@ grub2-themes.nixosModules.default ]; }; + + # my server (vps) + imbored = nixpkgs.lib.nixosSystem { + specialargs = {inherit inputs pkgs;}; # home-manager + + modules = [ + ./hosts/imbored + ]; + }; }; }; } diff --git a/homes/me/ags/applauncher.js b/homes/me/ags/applauncher.js index eb37759..c7e119b 100644 --- a/homes/me/ags/applauncher.js +++ b/homes/me/ags/applauncher.js @@ -39,8 +39,9 @@ const AppLauncher = ({ width = 500, height = 500, spacing = 12 }) => { } const entry = Widget.Entry({ + placeholder_text: "Search", hexpand: true, - css: `margin-bottom: ${spacing}px;`, + css: "min-height: 50px;", // launch first item when Enter is pressed on_accept: () => { @@ -48,7 +49,7 @@ const AppLauncher = ({ width = 500, height = 500, spacing = 12 }) => { const results = applications.filter((item) => item.visible); if (results[0]) { App.toggleWindow(WINDOW_NAME); - results[0].attribute.app.launcher() + results[0].attribute.app.launch() } }, @@ -59,29 +60,52 @@ const AppLauncher = ({ width = 500, height = 500, spacing = 12 }) => { }) return Widget.Box({ - vertical: true, - css: `margin: ${spacing * 2}px;`, + vertical: false, children: [ - entry, + // LEFT + Widget.Box({ + vertical: true, + css: `min-width: ${width}px;` + + `min-height: ${height}px;` + + "background-color: #947BF5;", + //+ "background-image: url('../../../wallpaper/kill-my-firstborn/astronaut-pink-blue.png');", + //+ "background-size: cover;" + //+ "background-position: center;" + //+ "background-repeat: no-repeat;", + children: [ + // align the entry field with the app list + Widget.Box({ + css: `margin: ${spacing * 2}px;`, + child: entry, + }), + ], + }), - // make scrollable - Widget.Scrollable({ - hscroll: "never", - css: `min-width: ${width}px; min-height: ${height}px;`, - child: list, + // RIGHT + Widget.Box({ + vertical: true, + css: `margin: ${spacing * 2}px;`, + child: + // make scrollable + Widget.Scrollable({ + hscroll: "never", + css: `min-width: ${width}px; min-height: ${height}px;`, + child: list, + }), + + setup: self => self.hook(App, (_, windowName, visible) => { + if (windowName !== WINDOW_NAME) + return + + // when the launcher becomes visible + if (visible) { + refresh() + entry.text = "" + entry.grab_focus() + } + }), }), ], - setup: self => self.hook(App, (_, windowName, visible) => { - if (windowName !== WINDOW_NAME) - return - - // when the launcher becomes visible - if (visible) { - repopulate() - entry.text = "" - entry.grab_focus() - } - }), }) } diff --git a/homes/me/ags/config.js b/homes/me/ags/config.js index 3ce169c..4cb5634 100644 --- a/homes/me/ags/config.js +++ b/homes/me/ags/config.js @@ -15,7 +15,7 @@ App.config({ style: "./style.css", // icons: "./assets", windows: [ - Bar(), + //Bar(), applauncher, ] // gtkTheme: "Adwaita-dark", diff --git a/homes/me/ags/fullscreen.js b/homes/me/ags/fullscreen.js new file mode 100644 index 0000000..a6c60f0 --- /dev/null +++ b/homes/me/ags/fullscreen.js @@ -0,0 +1,23 @@ +const WINDOW_NAME = "fullscreen"; + +const Fullscreen = (children) => Widget.Box({ + vertical: true, + css: "background-image: url('https://images2.alphacoders.com/135/1351579.png');" + + "background-size: cover;" + + "background-position: center;" + + "background-repeat: no-repeat;", + children: children, +}) + +export const fullscreen = Widget.Window({ + name: WINDOW_NAME, + setup: self => self.keybind("Escape", () => { + App.closeWindow(WINDOW_NAME) + }), + anchor: ["top", "bottom", "left", "right"], + visible: false, + keymode: "exclusive", + child: Fullscreen( + Widget.Label({"Hello World"}); + ) +}) diff --git a/homes/me/default.nix b/homes/me/default.nix index 19d85d8..15903b4 100755 --- a/homes/me/default.nix +++ b/homes/me/default.nix @@ -18,7 +18,7 @@ ../modules/rio.nix ../modules/firefox.nix - ../modules/nixcord.nix + #../modules/nixcord.nix ../modules/hypr/hypridle.nix ../modules/hypr/hyprlock.nix diff --git a/homes/modules/applauncher/app.in.vala b/homes/modules/applauncher/app.in.vala new file mode 100644 index 0000000..b04a1fa --- /dev/null +++ b/homes/modules/applauncher/app.in.vala @@ -0,0 +1,30 @@ +class App : Astal.Application { + public static App instance; + + public override void request (string msg, SocketConnection conn) { + print(@"$msg\n"); + AstalIO.write_sock.begin(conn, "ok"); + } + + public override void activate () { + foreach (var mon in this.monitors) + add_window(new Bar(mon)); + + apply_css("@STYLE@"); + } + + public static void main(string[] args) { + var instance_name = "vala"; + + App.instance = new App() { + instance_name = instance_name + }; + + try { + App.instance.acquire_socket(); + App.instance.run(null); + } catch (Error err) { + print(AstalIO.send_message(instance_name, string.joinv(" ", args))); + } + } +} diff --git a/homes/modules/applauncher/default.nix b/homes/modules/applauncher/default.nix new file mode 100644 index 0000000..fdd2087 --- /dev/null +++ b/homes/modules/applauncher/default.nix @@ -0,0 +1,39 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + astal = { + url = "github:aylur/astal"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { + self, + nixpkgs, + astal, + }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + packages.${system}.default = pkgs.stdenv.mkDerivation { + name = "Astal Applauncher"; + src = ./.; + + nativeBuildInputs = with pkgs; [ + meson + ninja + pkg-config + vala + gobject-introspection + dart-sass + ]; + + buildInputs = [ + astal.packages.${system}.io + astal.packages.${system}.astal3 + astal.packages.${system}.battery + # add extra packages + ]; + }; + }; +} diff --git a/homes/modules/applauncher/default.nix.bak b/homes/modules/applauncher/default.nix.bak new file mode 100644 index 0000000..fdd2087 --- /dev/null +++ b/homes/modules/applauncher/default.nix.bak @@ -0,0 +1,39 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + astal = { + url = "github:aylur/astal"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { + self, + nixpkgs, + astal, + }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + packages.${system}.default = pkgs.stdenv.mkDerivation { + name = "Astal Applauncher"; + src = ./.; + + nativeBuildInputs = with pkgs; [ + meson + ninja + pkg-config + vala + gobject-introspection + dart-sass + ]; + + buildInputs = [ + astal.packages.${system}.io + astal.packages.${system}.astal3 + astal.packages.${system}.battery + # add extra packages + ]; + }; + }; +} diff --git a/homes/modules/applauncher/meson.build b/homes/modules/applauncher/meson.build new file mode 100644 index 0000000..a3ec377 --- /dev/null +++ b/homes/modules/applauncher/meson.build @@ -0,0 +1,45 @@ +project('simple-bar', 'vala', 'c') + +bindir = get_option('prefix') / get_option('bindir') +libdir = get_option('prefix') / get_option('libdir') + +pkgconfig_deps = [ + dependency('glib-2.0'), + dependency('gobject-2.0'), + dependency('gtk+-3.0'), + dependency('libnm'), + dependency('astal-io-0.1'), + dependency('astal-3.0'), + dependency('astal-battery-0.1'), + dependency('astal-wireplumber-0.1'), + dependency('astal-network-0.1'), + dependency('astal-tray-0.1'), + dependency('astal-mpris-0.1'), + dependency('astal-hyprland-0.1'), +] + +# needed for GLib.Math +deps = pkgconfig_deps + meson.get_compiler('c').find_library('m') + +main = configure_file( + input: 'app.in.vala', + output: 'app.vala', + configuration: { + 'STYLE': run_command( + find_program('sass'), + meson.project_source_root() / 'style.scss', + ).stdout(), + }, +) + +sources = files( + 'widgets/bar.vala', +) + +executable( + 'simple-bar', + [sources, main], + dependencies: deps, + install: true, + install_dir: bindir, +) diff --git a/homes/modules/applauncher/style.scss b/homes/modules/applauncher/style.scss new file mode 100644 index 0000000..f5f771a --- /dev/null +++ b/homes/modules/applauncher/style.scss @@ -0,0 +1,106 @@ +@use "sass:color"; + +$bg: #212223; +$fg: #f1f1f1; +$accent: #378DF7; +$radius: 7px; + +window.Bar { + border: none; + box-shadow: none; + background-color: $bg; + color: $fg; + font-size: 1.1em; + font-weight: bold; + + label { + margin: 0 8px; + } + + .Workspaces { + button { + all: unset; + background-color: transparent; + + &:hover label { + background-color: color.adjust($fg, $alpha: -0.84); + border-color: color.adjust($accent, $alpha: -0.8); + } + + &:active label { + background-color: color.adjust($fg, $alpha: -0.8) + } + } + + label { + transition: 200ms; + padding: 0 8px; + margin: 2px; + border-radius: $radius; + border: 1pt solid transparent; + } + + .focused label { + color: $accent; + border-color: $accent; + } + } + + .SysTray { + margin-right: 8px; + + button { + padding: 0 4px; + } + } + + .FocusedClient { + color: $accent; + } + + .Media .Cover { + min-height: 1.2em; + min-width: 1.2em; + border-radius: $radius; + background-position: center; + background-size: contain; + } + + .Battery label { + padding-left: 0; + margin-left: 0; + } + + .AudioSlider { + * { + all: unset; + } + + icon { + margin-right: .6em; + } + + & { + margin: 0 1em; + } + + trough { + background-color: color.adjust($fg, $alpha: -0.8); + border-radius: $radius; + } + + highlight { + background-color: $accent; + min-height: .8em; + border-radius: $radius; + } + + slider { + background-color: $fg; + border-radius: $radius; + min-height: 1em; + min-width: 1em; + margin: -.2em; + } + } +} diff --git a/homes/modules/applauncher/widgets/bar.vala b/homes/modules/applauncher/widgets/bar.vala new file mode 100644 index 0000000..0746969 --- /dev/null +++ b/homes/modules/applauncher/widgets/bar.vala @@ -0,0 +1,253 @@ +class Workspaces : Gtk.Box { + AstalHyprland.Hyprland hypr = AstalHyprland.get_default(); + public Workspaces() { + Astal.widget_set_class_names(this, {"Workspaces"}); + hypr.notify["workspaces"].connect(sync); + sync(); + } + + void sync() { + foreach (var child in get_children()) + child.destroy(); + + foreach (var ws in hypr.workspaces) { + // filter out special workspaces + if (!(ws.id >= -99 && ws.id <= -2)) { + add(button(ws)); + } + } + } + + Gtk.Button button(AstalHyprland.Workspace ws) { + var btn = new Gtk.Button() { + visible = true, + label = ws.id.to_string() + }; + + hypr.notify["focused-workspace"].connect(() => { + var focused = hypr.focused_workspace == ws; + if (focused) { + Astal.widget_set_class_names(btn, {"focused"}); + } else { + Astal.widget_set_class_names(btn, {}); + } + }); + + btn.clicked.connect(ws.focus); + return btn; + } +} + +class FocusedClient : Gtk.Box { + public FocusedClient() { + Astal.widget_set_class_names(this, {"Focused"}); + AstalHyprland.get_default().notify["focused-client"].connect(sync); + sync(); + } + + void sync() { + foreach (var child in get_children()) + child.destroy(); + + var client = AstalHyprland.get_default().focused_client; + if (client == null) + return; + + var label = new Gtk.Label(client.title) { visible = true }; + client.bind_property("title", label, "label", BindingFlags.SYNC_CREATE); + add(label); + } +} + +class Media : Gtk.Box { + AstalMpris.Mpris mpris = AstalMpris.get_default(); + + public Media() { + Astal.widget_set_class_names(this, {"Media"}); + mpris.notify["players"].connect(sync); + sync(); + } + + void sync() { + foreach (var child in get_children()) + child.destroy(); + + if (mpris.players.length() == 0) { + add(new Gtk.Label("Nothing Playing")); + return; + } + + var player = mpris.players.nth_data(0); + var label = new Gtk.Label(null); + var cover = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0) { + valign = Gtk.Align.CENTER + }; + + Astal.widget_set_class_names(cover, {"Cover"}); + player.bind_property("metadata", label, "label", BindingFlags.SYNC_CREATE, (_, src, ref trgt) => { + var title = player.title; + var artist = player.artist; + trgt.set_string(@"$artist - $title"); + return true; + }); + + var id = player.notify["cover-art"].connect(() => { + var art = player.cover_art; + Astal.widget_set_css(cover, @"background-image: url('$art')"); + }); + + cover.destroy.connect(() => player.disconnect(id)); + add(cover); + add(label); + } +} + +class SysTray : Gtk.Box { + HashTable items = new HashTable(str_hash, str_equal); + AstalTray.Tray tray = AstalTray.get_default(); + + public SysTray() { + Astal.widget_set_class_names(this, { "SysTray" }); + tray.item_added.connect(add_item); + tray.item_removed.connect(remove_item); + } + + void add_item(string id) { + if (items.contains(id)) + return; + + var item = tray.get_item(id); + var btn = new Gtk.MenuButton() { use_popover = false, visible = true }; + var icon = new Astal.Icon() { visible = true }; + + item.bind_property("tooltip-markup", btn, "tooltip-markup", BindingFlags.SYNC_CREATE); + item.bind_property("gicon", icon, "gicon", BindingFlags.SYNC_CREATE); + item.bind_property("menu-model", btn, "menu-model", BindingFlags.SYNC_CREATE); + btn.insert_action_group("dbusmenu", item.action_group); + item.notify["action-group"].connect(() => { + btn.insert_action_group("dbusmenu", item.action_group); + }); + + btn.add(icon); + add(btn); + items.set(id, btn); + } + + void remove_item(string id) { + if (items.contains(id)) { + items.remove(id); + } + } +} + +class Wifi : Astal.Icon { + public Wifi() { + Astal.widget_set_class_names(this, {"Wifi"}); + var wifi = AstalNetwork.get_default().get_wifi(); + if (wifi != null) { + wifi.bind_property("ssid", this, "tooltip-text", BindingFlags.SYNC_CREATE); + wifi.bind_property("icon-name", this, "icon", BindingFlags.SYNC_CREATE); + } + } +} + +class AudioSlider : Gtk.Box { + Astal.Icon icon = new Astal.Icon(); + Astal.Slider slider = new Astal.Slider() { hexpand = true }; + + public AudioSlider() { + add(icon); + add(slider); + Astal.widget_set_class_names(this, {"AudioSlider"}); + Astal.widget_set_css(this, "min-width: 140px"); + + var speaker = AstalWp.get_default().audio.default_speaker; + speaker.bind_property("volume-icon", icon, "icon", BindingFlags.SYNC_CREATE); + speaker.bind_property("volume", slider, "value", BindingFlags.SYNC_CREATE); + slider.dragged.connect(() => speaker.volume = slider.value); + } +} + +class Battery : Gtk.Box { + Astal.Icon icon = new Astal.Icon(); + Astal.Label label = new Astal.Label(); + + public Battery() { + add(icon); + add(label); + Astal.widget_set_class_names(this, {"Battery"}); + + var bat = AstalBattery.get_default(); + bat.bind_property("is-present", this, "visible", BindingFlags.SYNC_CREATE); + bat.bind_property("battery-icon-name", icon, "icon", BindingFlags.SYNC_CREATE); + bat.bind_property("percentage", label, "label", BindingFlags.SYNC_CREATE, (_, src, ref trgt) => { + var p = Math.floor(src.get_double() * 100); + trgt.set_string(@"$p%"); + return true; + }); + } +} + +class Time : Astal.Label { + string format; + AstalIO.Time interval; + + void sync() { + label = new DateTime.now_local().format(format); + } + + public Time(string format = "%H:%M - %A %e.") { + this.format = format; + interval = AstalIO.Time.interval(1000, null); + interval.now.connect(sync); + destroy.connect(interval.cancel); + Astal.widget_set_class_names(this, {"Time"}); + } +} + +class Left : Gtk.Box { + public Left() { + Object(hexpand: true, halign: Gtk.Align.START); + add(new Workspaces()); + add(new FocusedClient()); + } +} + +class Center : Gtk.Box { + public Center() { + add(new Media()); + } +} + +class Right : Gtk.Box { + public Right() { + Object(hexpand: true, halign: Gtk.Align.END); + add(new SysTray()); + add(new Wifi()); + add(new AudioSlider()); + add(new Battery()); + add(new Time()); + } +} + +class Bar : Astal.Window { + public Bar(Gdk.Monitor monitor) { + Object( + anchor: Astal.WindowAnchor.TOP + | Astal.WindowAnchor.LEFT + | Astal.WindowAnchor.RIGHT, + exclusivity: Astal.Exclusivity.EXCLUSIVE, + gdkmonitor: monitor + ); + + Astal.widget_set_class_names(this, {"Bar"}); + + add(new Astal.CenterBox() { + start_widget = new Left(), + center_widget = new Center(), + end_widget = new Right(), + }); + + show_all(); + } +} diff --git a/homes/modules/hypr/hyprlock.nix b/homes/modules/hypr/hyprlock.nix index 3b592ba..ebff930 100644 --- a/homes/modules/hypr/hyprlock.nix +++ b/homes/modules/hypr/hyprlock.nix @@ -8,7 +8,7 @@ settings = { background = { monitor = ""; - path = "$HOME/downloads/wallpaper/kill-my-first/astronaut-pink-blue.png"; # only png supported for now + path = "$HOME/downloads/wallpaper/kill-my-firstborn/astronaut-pink-blue.png"; # only png supported for now # color = $color1 # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations @@ -81,7 +81,7 @@ # Degrees monitor = ""; # get temperature in Brisbane - text = ''cmd[update:18000000] echo "Feels like $(curl -s 'wttr.in/bne?format=%t' | tr -d '+') "''; + text = ''cmd[update:18000000] echo "Feels like $(curl -s 'wttr.in/bne?format=%t' | tr -d '+')"''; color = "rgb(255, 255, 255, 1)"; font_size = 18; font_family = "Geist Mono 10"; @@ -103,11 +103,11 @@ dots_rouding = -1; rounding = 22; - outer_color = "rgb(255, 0, 0, 1)"; - inner_color = "rgb(0, 255, 0, 1)"; - font_color = "rgb(0, 0, 255, 1)"; + outer_color = "rgb(0, 0, 0, 0)"; + inner_color = "rgb(100, 114, 125, 0.1)"; + font_color = "rgb(200, 200, 200)"; fade_on_empty = true; - placeholder_text = "!!Super Secret!!"; # Text rendered in the input box when it's empty. + placeholder_text = "Password..."; # Text rendered in the input box when it's empty. position = "0, 120"; halign = "center"; diff --git a/homes/modules/rio.nix b/homes/modules/rio.nix index 84ea3a2..bc06205 100644 --- a/homes/modules/rio.nix +++ b/homes/modules/rio.nix @@ -4,7 +4,6 @@ ... }: { # The terminal I use - # TODO: this is dependent on nvim being installed # TODO: make this into a module with a configurable editor option programs.rio = { enable = true; @@ -18,6 +17,11 @@ padding-x = 10; padding-y = [15 10]; # top, left + window = { + width = 600; + height = 400; + }; + # lines = (accumulated scroll * multiplier / divider) scroll = { multiplier = 3.0; @@ -60,7 +64,7 @@ }; renderer = { - performance = "High"; + performance = "Low"; # High: for my PC, Low: for integrated GPUs backend = "Automatic"; # Vulkan }; }; diff --git a/homes/modules/server/fail2ban.nix b/homes/modules/server/fail2ban.nix new file mode 100644 index 0000000..0681c68 --- /dev/null +++ b/homes/modules/server/fail2ban.nix @@ -0,0 +1,17 @@ +{...}: { + # simple fail2ban config (not production ready or anything though) + # refer to: https://nixos.wiki/wiki/Fail2Ban + services.fail2ban = { + enable = true; + + maxretry = 5; + bantime = "10m"; # 10 minute ban + bantime-increment = { + enable = true; + formula = "ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)"; + multipliers = "1 2 4 8 16 32 64"; + maxtime = "168h"; # dont ban for more than 1 week + overalljails = true; + }; + }; +} diff --git a/homes/modules/server/nginx.nix b/homes/modules/server/nginx.nix new file mode 100644 index 0000000..a11b65c --- /dev/null +++ b/homes/modules/server/nginx.nix @@ -0,0 +1,35 @@ +{...}: { + services = { + # use nginx as the reverse proxy + # (also will use certbot and Let's Encrypt) + # refer to: https://nixos.wiki/wiki/Nginx + nginx = { + enable = true; + + recommendedProxySettings = true; + recommendedTlsSettings = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + + # https://imbored.dev + virtualHosts = { + "imbored.dev" = { + forceSSL = true; + enableACME = true; + # config reverse proxy paths + locations = { + "/" = { + # TODO + proxyPass = "http://127.0.0.1:12345"; + }; + }; + }; + }; + }; + }; + + security.acme = { + acceptTerms = true; + defaults.email = "eclarkboman@gmail.com"; + }; +} diff --git a/homes/modules/server/ssh.nix b/homes/modules/server/ssh.nix new file mode 100644 index 0000000..b898468 --- /dev/null +++ b/homes/modules/server/ssh.nix @@ -0,0 +1,13 @@ +{...}: { + services.openssh = { + enable = true; + ports = [22]; + settings = { + PasswordAuthentication = true; + PermitRootLogin = "no"; + AllowUsers = null; # allow all users by default + UseDns = true; + X11Forwarding = false; + }; + }; +} diff --git a/hosts/imbored/default.nix b/hosts/imbored/default.nix new file mode 100644 index 0000000..df99d85 --- /dev/null +++ b/hosts/imbored/default.nix @@ -0,0 +1,83 @@ +{ + pkgs, + inputs, + lib, + ... +}: let + home-manager = builtins.fetchTarball { + url = "https://github.com/nix-community/home-manager/archive/master.tar.gz"; + sha256 = "19w63qccz78v0spx03911z98w1bvlxvd07hb0ma14a4vdzi4ninj"; + }; +in { + # TODO: + # - add github:charmbracelet/soft-serve + # - add forgejo + + imports = [ + ../modules/server/nginx.nix + ../modules/server/ssh.nix + ../modules/server/fail2ban.nix + ]; + + system.stateVersion = "24.05"; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + + time.timeZone = "Australia/Brisbane"; + + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; + + boot.loader = { + # TODO + }; + + networking = { + hostName = "imbored"; + networkmanager.enable = true; + firewall.allowedTCPPorts = [ + 22 # sshd + ] + }; + + users = { + defaultUserShell = pkgs.bash; + + users = { + # primary user + dev = { + isNormalUser = true; + extraGroups = ["wheel"]; + shell = pkgs.bash; + packages = with pkgs; [ + ]; + }; + + # user for friends to ssh into + friends = { + isNormalUser = true; + shell = pkgs.bash; + packages = with pkgs; [ + ]; + }; + }; + }; + + #home-manager = { + # users = { + # dev = import ../../homes/dev; + # friends = import ../../homes/friends; + # }; + #}; + + environment.SystemPackages = with pkgs; [ + ]; + + programs = { + }; +} diff --git a/hosts/lolcathost/default.nix b/hosts/lolcathost/default.nix index 172aa0f..025c9bb 100755 --- a/hosts/lolcathost/default.nix +++ b/hosts/lolcathost/default.nix @@ -4,19 +4,23 @@ lib, ... }: let + home-manager = inputs.home-manager; #home-manager = builtins.fetchTarball { - # url = "https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz"; + # url = "https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz"; # sha256 = "00wp0s9b5nm5rsbwpc1wzfrkyxxmqjwsc1kcibjdbfkh69arcpsn"; #}; - home-manager = builtins.fetchTarball { - url = "https://github.com/nix-community/home-manager/archive/master.tar.gz"; - sha256 = "19w63qccz78v0spx03911z98w1bvlxvd07hb0ma14a4vdzi4ninj"; - }; + #home-manager = builtins.fetchTarball { + # url = "https://github.com/nix-community/home-manager/archive/master.tar.gz"; + # sha256 = "19w63qccz78v0spx03911z98w1bvlxvd07hb0ma14a4vdzi4ninj"; + #}; in { imports = [ ./hardware-configuration.nix (import "${home-manager}/nixos") inputs.spicetify-nix.nixosModules.default + + ../modules/dotnet_8.nix + ../modules/tesseract.nix ]; programs.spicetify = let @@ -60,9 +64,6 @@ in { console = { font = "Lat2-Terminus16"; keyMap = "us"; - #packages = with pkgs; [ - # nerdfonts - #]; }; # ----- NETWORKING SECTION ----- @@ -73,7 +74,7 @@ in { # networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ]; # Or disable the firewall altogether. - networking.firewall.enable = true; + #networking.firewall.enable = true; # ----- SERVICES ----- services = { @@ -89,16 +90,15 @@ in { }; # Enable sound - #hardware.pulseaudio.enable = false; pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; - jack.enable = true; + #jack.enable = true; - wireplumber.enable = true; + #wireplumber.enable = true; }; # Enable touchpad support @@ -118,10 +118,10 @@ in { defaultUserShell = pkgs.bash; users = { - # literally me fr (personal account) + # literally me frfr (personal account) me = { isNormalUser = true; - extraGroups = ["wheel"]; + extraGroups = ["wheel" "audio"]; shell = pkgs.bash; #pkgs.fish packages = with pkgs; [ firefox @@ -176,20 +176,27 @@ in { environment.systemPackages = with pkgs; [ # User Environment inputs.swww.packages.${pkgs.system}.swww - #vesktop helvum easyeffects + pavucontrol ani-cli wl-clipboard # clipboard for wayland - kcalc # TEMP: (FOR TESTING) + hyprpicker + + obsidian + vencord (callPackage ./sddm-theme-corners.nix {}).sddm-theme-corners # dependencies for my sddm theme: - pkgs.libsForQt5.qt5.qtgraphicaleffects + #pkgs.libsForQt5.qt5.qtgraphicaleffects + libsForQt5.qt5.qtgraphicaleffects python311 # I use 3.11 since it's in a pretty stable state now poetry # python dependency management and packaging + cargo + rustc + # fish plugins grc # colorise command outputs diff --git a/hosts/modules/dotnet_8.nix b/hosts/modules/dotnet_8.nix new file mode 100644 index 0000000..e01156a --- /dev/null +++ b/hosts/modules/dotnet_8.nix @@ -0,0 +1,6 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + #dotnet-runtime_8 + dotnet-sdk_8 + ]; +} diff --git a/hosts/modules/tesseract.nix b/hosts/modules/tesseract.nix new file mode 100644 index 0000000..7619b3d --- /dev/null +++ b/hosts/modules/tesseract.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + tesseract + ]; +} diff --git a/out.data b/out.data deleted file mode 100644 index c58cc5c..0000000 --- a/out.data +++ /dev/null @@ -1,953 +0,0 @@ -warning: Git tree '/home/me/nixdots' is dirty -building the system configuration... -warning: Git tree '/home/me/nixdots' is dirty -error: - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1570:24: - 1569| let f = attrPath: - 1570| zipAttrsWith (n: values: - | ^ - 1571| let here = attrPath ++ [n]; in - - … while calling the 'head' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1574:11: - 1573| || pred here (elemAt values 1) (head values) then - 1574| head values - | ^ - 1575| else - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1204:18: - 1203| mapAttrs - 1204| (name: value: - | ^ - 1205| if isAttrs value && cond value - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1207:18: - 1206| then recurse (path ++ [ name ]) value - 1207| else f (path ++ [ name ]) value); - | ^ - 1208| in - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:254:72: - 253| # For definitions that have an associated option - 254| declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options; - | ^ - 255| - - … while evaluating the attribute 'value' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:816:9: - 815| in warnDeprecation opt // - 816| { value = addErrorContext "while evaluating the option `${showOption loc}':" value; - | ^ - 817| inherit (res.defsFinal') highestPrio; - - … while evaluating the option `system.build.toplevel': - - … while evaluating the attribute 'mergedValue' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:851:5: - 850| # Type-check the remaining definitions, and merge them. Or throw if no definitions. - 851| mergedValue = - | ^ - 852| if isDefined then - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:852:7: - 851| mergedValue = - 852| if isDefined then - | ^ - 853| if all (def: type.check def.value) defsFinal then type.merge loc defsFinal - - … while evaluating the attribute 'values' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:845:9: - 844| in { - 845| values = defs'''; - | ^ - 846| inherit (defs'') highestPrio; - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:841:11: - 840| # Avoid sorting if we don't have to. - 841| if any (def: def.value._type or "" == "order") defs''.values - | ^ - 842| then sortProperties defs''.values - - … while calling the 'any' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:841:14: - 840| # Avoid sorting if we don't have to. - 841| if any (def: def.value._type or "" == "order") defs''.values - | ^ - 842| then sortProperties defs''.values - - … while evaluating the attribute 'values' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:944:7: - 943| in { - 944| values = concatMap (def: if getPrio def == highestPrio then [(strip def)] else []) defs; - | ^ - 945| inherit highestPrio; - - … while calling the 'concatMap' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:944:16: - 943| in { - 944| values = concatMap (def: if getPrio def == highestPrio then [(strip def)] else []) defs; - | ^ - 945| inherit highestPrio; - - … while calling the 'concatMap' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:831:17: - 830| # Process mkMerge and mkIf properties. - 831| defs' = concatMap (m: - | ^ - 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:831:28: - 830| # Process mkMerge and mkIf properties. - 831| defs' = concatMap (m: - | ^ - 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) - - … while calling the 'map' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:832:11: - 831| defs' = concatMap (m: - 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) - | ^ - 833| ) defs; - - … while evaluating definitions from `/nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix': - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:832:128: - 831| defs' = concatMap (m: - 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) - | ^ - 833| ) defs; - - … while calling 'dischargeProperties' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:903:25: - 902| */ - 903| dischargeProperties = def: - | ^ - 904| if def._type or "" == "merge" then - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:904:5: - 903| dischargeProperties = def: - 904| if def._type or "" == "merge" then - | ^ - 905| concatMap dischargeProperties def.contents - - … while evaluating the attribute 'value' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:614:53: - 613| (n: value: - 614| [{ inherit (module) file; inherit value; }] - | ^ - 615| ) - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix:72:26: - 71| - 72| baseSystemAssertWarn = if failedAssertions != [] - | ^ - 73| then throw "\nFailed assertions:\n${concatStringsSep "\n" (map (x: "- ${x}") failedAssertions)}" - - … while calling the 'map' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix:70:22: - 69| - 70| failedAssertions = map (x: x.message) (filter (x: !x.assertion) config.assertions); - | ^ - 71| - - … while calling the 'filter' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix:70:42: - 69| - 70| failedAssertions = map (x: x.message) (filter (x: !x.assertion) config.assertions); - | ^ - 71| - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/nixos/modules/system/activation/top-level.nix:70:67: - 69| - 70| failedAssertions = map (x: x.message) (filter (x: !x.assertion) config.assertions); - | ^ - 71| - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1204:18: - 1203| mapAttrs - 1204| (name: value: - | ^ - 1205| if isAttrs value && cond value - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1207:18: - 1206| then recurse (path ++ [ name ]) value - 1207| else f (path ++ [ name ]) value); - | ^ - 1208| in - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:254:72: - 253| # For definitions that have an associated option - 254| declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options; - | ^ - 255| - - … while evaluating the attribute 'value' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:816:9: - 815| in warnDeprecation opt // - 816| { value = addErrorContext "while evaluating the option `${showOption loc}':" value; - | ^ - 817| inherit (res.defsFinal') highestPrio; - - … while evaluating the option `assertions': - - (10 duplicate frames omitted) - - … while evaluating definitions from `/nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/nixos/common.nix': - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:832:128: - 831| defs' = concatMap (m: - 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) - | ^ - 833| ) defs; - - … while calling 'dischargeProperties' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:903:25: - 902| */ - 903| dischargeProperties = def: - | ^ - 904| if def._type or "" == "merge" then - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:909:11: - 908| if def.condition then - 909| dischargeProperties def.content - | ^ - 910| else - - … while calling 'dischargeProperties' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:903:25: - 902| */ - 903| dischargeProperties = def: - | ^ - 904| if def._type or "" == "merge" then - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:904:5: - 903| dischargeProperties = def: - 904| if def._type or "" == "merge" then - | ^ - 905| concatMap dischargeProperties def.contents - - … while evaluating the attribute 'content' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:1008:25: - 1007| { _type = "if"; - 1008| inherit condition content; - | ^ - 1009| }; - - … from call site - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/nixos/common.nix:110:20: - 109| - 110| assertions = flatten (flip mapAttrsToList cfg.users (user: config: - | ^ - 111| flip map config.assertions (assertion: { - - … while calling 'flatten' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:431:13: - 430| */ - 431| flatten = x: - | ^ - 432| if isList x - - … while calling the 'concatMap' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:433:10: - 432| if isList x - 433| then concatMap (y: flatten y) x - | ^ - 434| else [x]; - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:433:21: - 432| if isList x - 433| then concatMap (y: flatten y) x - | ^ - 434| else [x]; - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:433:24: - 432| if isList x - 433| then concatMap (y: flatten y) x - | ^ - 434| else [x]; - - … while calling 'flatten' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:431:13: - 430| */ - 431| flatten = x: - | ^ - 432| if isList x - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:432:5: - 431| flatten = x: - 432| if isList x - | ^ - 433| then concatMap (y: flatten y) x - - … while calling the 'isList' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:432:8: - 431| flatten = x: - 432| if isList x - | ^ - 433| then concatMap (y: flatten y) x - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:10: - 1094| attrs: - 1095| map (name: f name attrs.${name}) (attrNames attrs); - | ^ - 1096| - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:16: - 1094| attrs: - 1095| map (name: f name attrs.${name}) (attrNames attrs); - | ^ - 1096| - - … while calling anonymous lambda - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/nixos/common.nix:110:66: - 109| - 110| assertions = flatten (flip mapAttrsToList cfg.users (user: config: - | ^ - 111| flip map config.assertions (assertion: { - - … from call site - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/nixos/common.nix:111:9: - 110| assertions = flatten (flip mapAttrsToList cfg.users (user: config: - 111| flip map config.assertions (assertion: { - | ^ - 112| inherit (assertion) assertion; - - … while calling 'flip' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/trivial.nix:317:16: - 316| */ - 317| flip = f: a: b: f b a; - | ^ - 318| - - … while calling the 'map' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/trivial.nix:317:19: - 316| */ - 317| flip = f: a: b: f b a; - | ^ - 318| - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:23: - 1094| attrs: - 1095| map (name: f name attrs.${name}) (attrNames attrs); - | ^ - 1096| - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:577:22: - 576| merge = loc: defs: - 577| mapAttrs (n: v: v.value) (filterAttrs (n: v: v ? value) (zipAttrsWith (name: defs: - | ^ - 578| (mergeDefinitions (loc ++ [name]) elemType defs).optionalValue - - … while evaluating the attribute 'value' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:864:27: - 863| optionalValue = - 864| if isDefined then { value = mergedValue; } - | ^ - 865| else {}; - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:853:59: - 852| if isDefined then - 853| if all (def: type.check def.value) defsFinal then type.merge loc defsFinal - | ^ - 854| else let allInvalid = filter (def: ! type.check def.value) defsFinal; - - … while calling 'merge' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:881:22: - 880| check = x: isAttrs x || isFunction x || path.check x; - 881| merge = loc: defs: - | ^ - 882| (base.extendModules { - - … while evaluating the attribute 'config' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:334:9: - 333| options = checked options; - 334| config = checked (removeAttrs config [ "_module" ]); - | ^ - 335| _module = checked (config._module); - - … while calling the 'seq' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:334:18: - 333| options = checked options; - 334| config = checked (removeAttrs config [ "_module" ]); - | ^ - 335| _module = checked (config._module); - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:273:9: - 272| checkUnmatched = - 273| if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then - | ^ - 274| let - - … in the right operand of the AND (&&) operator - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:273:72: - 272| checkUnmatched = - 273| if config._module.check && config._module.freeformType == null && merged.unmatchedDefns != [] then - | ^ - 274| let - - … while evaluating the attribute 'unmatchedDefns' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:695:7: - 694| # Transforms unmatchedDefnsByName into a list of definitions - 695| unmatchedDefns = - | ^ - 696| if configs == [] - - … while calling the 'concatLists' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:702:11: - 701| else - 702| concatLists (mapAttrsToList (name: defs: - | ^ - 703| map (def: def // { - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:10: - 1094| attrs: - 1095| map (name: f name attrs.${name}) (attrNames attrs); - | ^ - 1096| - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:16: - 1094| attrs: - 1095| map (name: f name attrs.${name}) (attrNames attrs); - | ^ - 1096| - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:702:46: - 701| else - 702| concatLists (mapAttrsToList (name: defs: - | ^ - 703| map (def: def // { - - … while calling the 'map' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:703:13: - 702| concatLists (mapAttrsToList (name: defs: - 703| map (def: def // { - | ^ - 704| # Set this so we know when the definition first left unmatched territory - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1095:23: - 1094| attrs: - 1095| map (name: f name attrs.${name}) (attrNames attrs); - | ^ - 1096| - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:688:22: - 687| # Propagate all unmatched definitions from nested option sets - 688| mapAttrs (n: v: v.unmatchedDefns) resultsByName - | ^ - 689| # Plus the definitions for the current prefix that don't have a matching option - - (16 duplicate frames omitted) - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:688:25: - 687| # Propagate all unmatched definitions from nested option sets - 688| mapAttrs (n: v: v.unmatchedDefns) resultsByName - | ^ - 689| # Plus the definitions for the current prefix that don't have a matching option - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:636:39: - 635| - 636| resultsByName = mapAttrs (name: decls: - | ^ - 637| # We're descending into attribute ‘name’. - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:650:11: - 649| in - 650| if length optionDecls == length decls then - | ^ - 651| let opt = fixupOptionType loc (mergeOptionDecls loc decls); - - … while calling the 'length' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:650:14: - 649| in - 650| if length optionDecls == length decls then - | ^ - 651| let opt = fixupOptionType loc (mergeOptionDecls loc decls); - - … while calling the 'filter' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:642:25: - 641| defns' = rawDefinitionsByName.${name} or []; - 642| optionDecls = filter - | ^ - 643| (m: m.options?_type - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:643:14: - 642| optionDecls = filter - 643| (m: m.options?_type - | ^ - 644| && (m.options._type == "option" - - … in the left operand of the AND (&&) operator - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:644:17: - 643| (m: m.options?_type - 644| && (m.options._type == "option" - | ^ - 645| || throwDeclarationTypeError loc m.options._type m._file - - … while evaluating the attribute 'options' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:566:82: - 565| (n: option: - 566| [{ inherit (module) _file; pos = unsafeGetAttrPos n subtree; options = option; }] - | ^ - 567| ) - - … from call site - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/programs/firefox/mkFirefoxModule.nix:317:28: - 316| - 317| nativeMessagingHosts = optionalAttrs (cfg.vendorPath != null) (mkOption { - | ^ - 318| inherit visible; - - … while calling 'optionalAttrs' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1351:5: - 1350| cond: - 1351| as: - | ^ - 1352| if cond then as else {}; - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1352:5: - 1351| as: - 1352| if cond then as else {}; - | ^ - 1353| - - … from call site - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/programs/firefox/mkFirefoxModule.nix:317:43: - 316| - 317| nativeMessagingHosts = optionalAttrs (cfg.vendorPath != null) (mkOption { - | ^ - 318| inherit visible; - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1204:18: - 1203| mapAttrs - 1204| (name: value: - | ^ - 1205| if isAttrs value && cond value - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1207:18: - 1206| then recurse (path ++ [ name ]) value - 1207| else f (path ++ [ name ]) value); - | ^ - 1208| in - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:254:72: - 253| # For definitions that have an associated option - 254| declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options; - | ^ - 255| - - … while evaluating the attribute 'value' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:816:9: - 815| in warnDeprecation opt // - 816| { value = addErrorContext "while evaluating the option `${showOption loc}':" value; - | ^ - 817| inherit (res.defsFinal') highestPrio; - - … while evaluating the option `home-manager.users.me.programs.firefox.vendorPath': - - … while evaluating the attribute 'mergedValue' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:851:5: - 850| # Type-check the remaining definitions, and merge them. Or throw if no definitions. - 851| mergedValue = - | ^ - 852| if isDefined then - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:852:7: - 851| mergedValue = - 852| if isDefined then - | ^ - 853| if all (def: type.check def.value) defsFinal then type.merge loc defsFinal - - … while evaluating the attribute 'values' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:845:9: - 844| in { - 845| values = defs'''; - | ^ - 846| inherit (defs'') highestPrio; - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:841:11: - 840| # Avoid sorting if we don't have to. - 841| if any (def: def.value._type or "" == "order") defs''.values - | ^ - 842| then sortProperties defs''.values - - … while calling the 'any' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:841:14: - 840| # Avoid sorting if we don't have to. - 841| if any (def: def.value._type or "" == "order") defs''.values - | ^ - 842| then sortProperties defs''.values - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:841:19: - 840| # Avoid sorting if we don't have to. - 841| if any (def: def.value._type or "" == "order") defs''.values - | ^ - 842| then sortProperties defs''.values - - … while evaluating the attribute 'value._type' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:942:73: - 941| highestPrio = foldl' (prio: def: min (getPrio def) prio) 9999 defs; - 942| strip = def: if def.value._type or "" == "override" then def // { value = def.value.content; } else def; - | ^ - 943| in { - - … while evaluating the attribute 'value.content' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:1023:24: - 1022| { _type = "override"; - 1023| inherit priority content; - | ^ - 1024| }; - - … while evaluating the attribute 'default' - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/programs/firefox/mkFirefoxModule.nix:298:7: - 297| type = with types; nullOr str; - 298| default = with platforms; - | ^ - 299| if isDarwin then - - … while evaluating a branch condition - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/programs/firefox/mkFirefoxModule.nix:299:9: - 298| default = with platforms; - 299| if isDarwin then - | ^ - 300| darwin.vendorPath or null - - … from call site - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/programs/firefox/mkFirefoxModule.nix:10:12: - 9| - 10| inherit (pkgs.stdenv.hostPlatform) isDarwin; - | ^ - 11| - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:513:35: - 512| context = name: ''while evaluating the module argument `${name}' in "${key}":''; - 513| extraArgs = mapAttrs (name: _: - | ^ - 514| addErrorContext (context name) - - … while evaluating the module argument `pkgs' in "/nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/programs/firefox.nix:anon-1": - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:515:28: - 514| addErrorContext (context name) - 515| (args.${name} or config._module.args.${name}) - | ^ - 516| ) (functionArgs f); - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:601:29: - 600| merge = loc: defs: - 601| zipAttrsWith (name: defs: - | ^ - 602| let merged = mergeDefinitions (loc ++ [name]) elemType defs; - - … while evaluating the attribute 'optionalValue.value' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:863:5: - 862| - 863| optionalValue = - | ^ - 864| if isDefined then { value = mergedValue; } - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:864:7: - 863| optionalValue = - 864| if isDefined then { value = mergedValue; } - | ^ - 865| else {}; - - (6 duplicate frames omitted) - - … from call site - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/misc/nixpkgs.nix:43:11: - 42| - 43| _pkgs = import pkgsPath (filterAttrs (n: v: v != null) config.nixpkgs); - | ^ - 44| - - … from call site - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/misc/nixpkgs.nix:43:28: - 42| - 43| _pkgs = import pkgsPath (filterAttrs (n: v: v != null) config.nixpkgs); - | ^ - 44| - - … while calling 'filterAttrs' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:646:5: - 645| pred: - 646| set: - | ^ - 647| removeAttrs set (filter (name: ! pred name set.${name}) (attrNames set)); - - … while calling the 'removeAttrs' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:647:5: - 646| set: - 647| removeAttrs set (filter (name: ! pred name set.${name}) (attrNames set)); - | ^ - 648| - - … while calling the 'filter' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:647:22: - 646| set: - 647| removeAttrs set (filter (name: ! pred name set.${name}) (attrNames set)); - | ^ - 648| - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:647:30: - 646| set: - 647| removeAttrs set (filter (name: ! pred name set.${name}) (attrNames set)); - | ^ - 648| - - … in the argument of the not operator - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:647:38: - 646| set: - 647| removeAttrs set (filter (name: ! pred name set.${name}) (attrNames set)); - | ^ - 648| - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:647:38: - 646| set: - 647| removeAttrs set (filter (name: ! pred name set.${name}) (attrNames set)); - | ^ - 648| - - … while calling anonymous lambda - at /nix/store/78sgjxjd6p9wns5mriffngcrvxp9sfaa-source/modules/misc/nixpkgs.nix:43:44: - 42| - 43| _pkgs = import pkgsPath (filterAttrs (n: v: v != null) config.nixpkgs); - | ^ - 44| - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:647:48: - 646| set: - 647| removeAttrs set (filter (name: ! pred name set.${name}) (attrNames set)); - | ^ - 648| - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1204:18: - 1203| mapAttrs - 1204| (name: value: - | ^ - 1205| if isAttrs value && cond value - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/attrsets.nix:1207:18: - 1206| then recurse (path ++ [ name ]) value - 1207| else f (path ++ [ name ]) value); - | ^ - 1208| in - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:254:72: - 253| # For definitions that have an associated option - 254| declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options; - | ^ - 255| - - … while evaluating the attribute 'value' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:816:9: - 815| in warnDeprecation opt // - 816| { value = addErrorContext "while evaluating the option `${showOption loc}':" value; - | ^ - 817| inherit (res.defsFinal') highestPrio; - - … while evaluating the option `home-manager.users.me.nixpkgs.overlays': - - … while evaluating the attribute 'mergedValue' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:851:5: - 850| # Type-check the remaining definitions, and merge them. Or throw if no definitions. - 851| mergedValue = - | ^ - 852| if isDefined then - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:853:59: - 852| if isDefined then - 853| if all (def: type.check def.value) defsFinal then type.merge loc defsFinal - | ^ - 854| else let allInvalid = filter (def: ! type.check def.value) defsFinal; - - … while calling 'merge' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:739:20: - 738| check = x: x == null || elemType.check x; - 739| merge = loc: defs: - | ^ - 740| let nrNulls = count (def: def.value == null) defs; in - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:744:14: - 743| throw "The option `${showOption loc}` is defined both null and not null, in ${showFiles (getFiles defs)}." - 744| else elemType.merge loc defs; - | ^ - 745| emptyValue = { value = null; }; - - … while calling 'merge' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:545:20: - 544| check = isList; - 545| merge = loc: defs: - | ^ - 546| map (x: x.value) (filter (x: x ? value) (concatLists (imap1 (n: def: - - … while calling the 'map' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:546:9: - 545| merge = loc: defs: - 546| map (x: x.value) (filter (x: x ? value) (concatLists (imap1 (n: def: - | ^ - 547| imap1 (m: def': - - … while calling the 'filter' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:546:27: - 545| merge = loc: defs: - 546| map (x: x.value) (filter (x: x ? value) (concatLists (imap1 (n: def: - | ^ - 547| imap1 (m: def': - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:546:35: - 545| merge = loc: defs: - 546| map (x: x.value) (filter (x: x ? value) (concatLists (imap1 (n: def: - | ^ - 547| imap1 (m: def': - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:546:38: - 545| merge = loc: defs: - 546| map (x: x.value) (filter (x: x ? value) (concatLists (imap1 (n: def: - | ^ - 547| imap1 (m: def': - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:334:29: - 333| */ - 334| imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list); - | ^ - 335| - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:334:32: - 333| */ - 334| imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list); - | ^ - 335| - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:547:21: - 546| map (x: x.value) (filter (x: x ? value) (concatLists (imap1 (n: def: - 547| imap1 (m: def': - | ^ - 548| (mergeDefinitions - - … while evaluating the attribute 'optionalValue' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:863:5: - 862| - 863| optionalValue = - | ^ - 864| if isDefined then { value = mergedValue; } - - (9 duplicate frames omitted) - - … while evaluating definitions from `/nix/store/ngbxcxj87yilwhpb0zzpqhy9jhv14nak-source/hosts/lolcathost': - - … from call site - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:832:128: - 831| defs' = concatMap (m: - 832| map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) - | ^ - 833| ) defs; - - … while calling 'dischargeProperties' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:903:25: - 902| */ - 903| dischargeProperties = def: - | ^ - 904| if def._type or "" == "merge" then - - … while evaluating a branch condition - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:904:5: - 903| dischargeProperties = def: - 904| if def._type or "" == "merge" then - | ^ - 905| concatMap dischargeProperties def.contents - - … while evaluating the attribute 'value' - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/types.nix:551:38: - 550| elemType - 551| [{ inherit (def) file; value = def'; }] - | ^ - 552| ).optionalValue - - … while calling the 'elemAt' builtin - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/lists.nix:334:43: - 333| */ - 334| imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list); - | ^ - 335| - - … from call site - at /nix/store/ngbxcxj87yilwhpb0zzpqhy9jhv14nak-source/homes/me/default.nix:12:7: - 11| overlays = [ - 12| inputs.hyprpanel.overlay - | ^ - 13| ]; - - … while calling anonymous lambda - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:513:35: - 512| context = name: ''while evaluating the module argument `${name}' in "${key}":''; - 513| extraArgs = mapAttrs (name: _: - | ^ - 514| addErrorContext (context name) - - … while evaluating the module argument `inputs' in ":anon-7:anon-1": - - error: attribute 'inputs' missing - at /nix/store/sh0v21n9zc03b94qjj4jkkg5mbsjkpzr-source/lib/modules.nix:515:28: - 514| addErrorContext (context name) - 515| (args.${name} or config._module.args.${name}) - | ^ - 516| ) (functionArgs f);