diff --git a/flake.lock b/flake.lock index 2560c30..e385fef 100644 --- a/flake.lock +++ b/flake.lock @@ -120,11 +120,11 @@ ] }, "locked": { - "lastModified": 1653594315, - "narHash": "sha256-kJ0ENmnQJ4qL2FeYKZba9kvv1KmIuB3NVpBwMeI7AJQ=", + "lastModified": 1659725433, + "narHash": "sha256-1ZxuK67TL29YLw88vQ18Y2Y6iYg8Jb7I6/HVzmNB6nM=", "owner": "serokell", "repo": "deploy-rs", - "rev": "184349d8149436748986d1bdba087e4149e9c160", + "rev": "41f15759dd8b638e7b4f299730d94d5aa46ab7eb", "type": "github" }, "original": { @@ -151,7 +151,7 @@ }, "devshell_2": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs" }, "locked": { @@ -201,6 +201,28 @@ } }, "discocss": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1657375072, + "narHash": "sha256-kaRGVoiJJOAAvqlO++1yNexJHCBtCK3ROkAtAAZKt2s=", + "owner": "fufexan", + "repo": "discocss", + "rev": "ca08c085637061366ed41c6f282d086e24dbf2ec", + "type": "github" + }, + "original": { + "owner": "fufexan", + "ref": "flake", + "repo": "discocss", + "type": "github" + } + }, + "discocss_2": { "inputs": { "flake-utils": [ "fufexan", @@ -426,15 +448,15 @@ }, "emacs-overlay": { "inputs": { - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1658833746, - "narHash": "sha256-bm/FXx7lH8xaM1excP4SLexVBdaTKE5tZS8PyuibnsA=", + "lastModified": 1659983351, + "narHash": "sha256-FsTn0f0t2B7AKAtCDOYd34ztKa+XOUtzRa4FtO8HgDw=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "4d03024af95e8338ccd4d238a46c4bbe01ecdb89", + "rev": "a3770a9a619f508a0828df30cb10858663d4538b", "type": "github" }, "original": { @@ -447,7 +469,7 @@ "inputs": { "fenix": "fenix", "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_4", "naersk": [ "fufexan", "naersk" @@ -458,11 +480,11 @@ ] }, "locked": { - "lastModified": 1658741308, - "narHash": "sha256-35ao8Xc1mEt8pPs6a0iI2NfKO7Dawq7+ZQ1jS64b1mU=", + "lastModified": 1658940629, + "narHash": "sha256-h5NoiiLolTjpeX73qU1j5fxscTIjN+BIo2bsaJY+Pts=", "owner": "elkowar", "repo": "eww", - "rev": "962c06c0ee33e968c60ef7b1682e9d365a72e74f", + "rev": "aac4c3aef4fa7dd42b3464be86d26debad66d7c1", "type": "github" }, "original": { @@ -527,6 +549,21 @@ } }, "flake-utils": { + "locked": { + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -541,13 +578,13 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_3": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -556,7 +593,7 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_4": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -571,7 +608,7 @@ "type": "github" } }, - "flake-utils_4": { + "flake-utils_5": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -586,7 +623,7 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_6": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -618,11 +655,11 @@ }, "fu": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -635,7 +672,7 @@ "inputs": { "deploy-rs": "deploy-rs", "devshell": "devshell_2", - "discocss": "discocss", + "discocss": "discocss_2", "emacs-overlay": "emacs-overlay", "eww": "eww", "fu": "fu", @@ -645,17 +682,19 @@ "hyprland-contrib": "hyprland-contrib", "kmonad": "kmonad", "naersk": "naersk", + "nil": "nil", "nix-colors": "nix-colors", "nix-gaming": "nix-gaming", "nixpkgs": "nixpkgs_4", - "rnix-lsp": "rnix-lsp" + "rnix-lsp": "rnix-lsp", + "spicetify-nix": "spicetify-nix" }, "locked": { - "lastModified": 1659195254, - "narHash": "sha256-+broiZolVYTgduj+r3tN+zo9K0aWkI32eMlHfgnjg6k=", + "lastModified": 1660172648, + "narHash": "sha256-aysHb+76bnmgscx3Jgsgtn/fxCLnaH0GYfB+aB2HXeA=", "owner": "fufexan", "repo": "dotfiles", - "rev": "c6296680001434b1d1f840b53324d31c5d5a7adc", + "rev": "d8ef562706bca897af2b7e0f178deffb02aa9c08", "type": "github" }, "original": { @@ -674,11 +713,11 @@ "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1658815512, - "narHash": "sha256-q65cN1JuhJOfFve2A8Jyfe+wzgcbHpiNbUPOgwJRpZ8=", + "lastModified": 1659892787, + "narHash": "sha256-G0+P2ktmCtX3zcE8Qfnwc717xSPYlbj87i2vwvq9IDA=", "owner": "helix-editor", "repo": "helix", - "rev": "3dd2196e4f42b23fd30b4e028b96d5b1862603d6", + "rev": "3e11017ade8b25e580b20dab5187374fa3338bae", "type": "github" }, "original": { @@ -693,14 +732,14 @@ "nixpkgs": [ "nixpkgs" ], - "rust-overlay": "rust-overlay_3" + "rust-overlay": "rust-overlay_4" }, "locked": { - "lastModified": 1659072681, - "narHash": "sha256-vvdQHhnJIxrIh8phbJRM/h8GgZBXj7Lc9yK05t52yCg=", + "lastModified": 1660168643, + "narHash": "sha256-1B/sWD7ltMs4k3DC6oxUD6mQYmKrCyrLVLIBK/5OL9w=", "owner": "helix-editor", "repo": "helix", - "rev": "a8b123fe177d8cd7f5a610a0a50c16c9f64069bd", + "rev": "d192d597535e50d3ce4a29fbd4dc13cb92320ea5", "type": "github" }, "original": { @@ -718,11 +757,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1658751516, - "narHash": "sha256-Y/3dHoTjbvYBtWd+TTBQJUIgDPO9d+Gqt05C5dyR7E4=", + "lastModified": 1659978484, + "narHash": "sha256-VkErPc8pXcuFQG7jkkaUOEMORe81oweRNlAYZJ2+aRI=", "owner": "nix-community", "repo": "home-manager", - "rev": "dbed4c794d20d51027fc1107f063ec5be027dafc", + "rev": "c1addfdad3825f75a66f8d73ec7d2f68c78ba6f8", "type": "github" }, "original": { @@ -736,14 +775,14 @@ "nixpkgs": [ "nixpkgs" ], - "utils": "utils_3" + "utils": "utils_2" }, "locked": { - "lastModified": 1657396086, - "narHash": "sha256-4cQ6hEuewWoFkTBlu211JGxPQQ1Zyli8oEq1cu7cVeA=", + "lastModified": 1659978484, + "narHash": "sha256-VkErPc8pXcuFQG7jkkaUOEMORe81oweRNlAYZJ2+aRI=", "owner": "nix-community", "repo": "home-manager", - "rev": "c645cc9f82c7753450d1fa4d1bc73b64960a9d7a", + "rev": "c1addfdad3825f75a66f8d73ec7d2f68c78ba6f8", "type": "github" }, "original": { @@ -787,11 +826,11 @@ "wlroots": "wlroots" }, "locked": { - "lastModified": 1659194367, - "narHash": "sha256-pxPBHj2B6EuljO0PekkHlKtWZLdDkjX4zF5sY7Q/lFk=", + "lastModified": 1660148977, + "narHash": "sha256-eR/qlC8eDY7A+bkkiF28xCG0cPJr4HilMcD3/QJ05TQ=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "59879e0bd1f30771b0dce57c324e1648a3ad1603", + "rev": "f64f94ca565a2ec9f174f57a20fcfbfddb762cb8", "type": "github" }, "original": { @@ -829,11 +868,11 @@ "wlroots": "wlroots_2" }, "locked": { - "lastModified": 1657572680, - "narHash": "sha256-NOy0iHEnOcL5yAA7fWXni++axbNSFaYDxLeAkmPtZaY=", + "lastModified": 1660168160, + "narHash": "sha256-dBfG89ugpHbWwqSexCtGqpHs4lZxO5zXWHAT5P2v06I=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "676e4c36c53c991f6950a0c51fbe7b41ee9a4db2", + "rev": "cd75606f4232787a9faf55db0835b29e3bb45ae9", "type": "github" }, "original": { @@ -873,11 +912,11 @@ ] }, "locked": { - "lastModified": 1655042882, - "narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=", + "lastModified": 1659610603, + "narHash": "sha256-LYgASYSPYo7O71WfeUOaEUzYfzuXm8c8eavJcel+pfI=", "owner": "nmattia", "repo": "naersk", - "rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f", + "rev": "c6a45e4277fa58abd524681466d3450f896dc094", "type": "github" }, "original": { @@ -886,28 +925,6 @@ "type": "github" } }, - "naersk_2": { - "inputs": { - "nixpkgs": [ - "fufexan", - "rnix-lsp", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1655042882, - "narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=", - "owner": "nix-community", - "repo": "naersk", - "rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, "nci": { "inputs": { "devshell": "devshell", @@ -932,6 +949,32 @@ "type": "github" } }, + "nil": { + "inputs": { + "flake-utils": [ + "fufexan", + "fu" + ], + "nixpkgs": [ + "fufexan", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1659996948, + "narHash": "sha256-f91TFtsKVoejb7rW9zRs7WozGMqzDgHMxO/Q/gQKFpU=", + "owner": "oxalica", + "repo": "nil", + "rev": "e222ab8363be9c02400eb94384837653930e4b8c", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "nil", + "type": "github" + } + }, "nix-colors": { "inputs": { "base16-schemes": "base16-schemes", @@ -956,11 +999,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1658662574, - "narHash": "sha256-NX3uQqN8kktKujIiQStqGZx9K+jJ5+M2a+GVrAe227w=", + "lastModified": 1659340932, + "narHash": "sha256-CEeGgZLN5ukOrbvwKTh66miEQ3cA2poH4tko6C7ULS4=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "065a6a44a301ba027d42b52d94db5bc39dd7ce6d", + "rev": "69b8118d92c5bd135f2d139d87fb01d34de9a244", "type": "github" }, "original": { @@ -1047,11 +1090,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1656933710, - "narHash": "sha256-SVG8EqY1OTJWBRY4hpct2ZR2Rk0L8hCFkug3m0ABoZE=", + "lastModified": 1660030916, + "narHash": "sha256-KeVTmST6vAS85uUaSYlzv6OWhveawfIGhqX1SMq+L30=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "3bf48d3587d3f34f745a19ebc968b002ef5b5c5a", + "rev": "3975d5158f00accda15a11180b2c08654cfb2807", "type": "github" }, "original": { @@ -1109,8 +1152,8 @@ "nixpkgs_2": { "locked": { "lastModified": 0, - "narHash": "sha256-MWyfCH9K3eVTXJUxBi67OQSAh9jJAnvWklM6qm4j8w8=", - "path": "/nix/store/qdsi66bin3h3yimbn35fxbj7fwdpi739-source", + "narHash": "sha256-7Ye59iW/DUWb8PzptEqdyYPlv6y+IhqKecaoZl3q68A=", + "path": "/nix/store/3a2j1ra0ymsmrmibafh96gryipxidyy7-source", "type": "path" }, "original": { @@ -1136,11 +1179,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1658644204, - "narHash": "sha256-MWyfCH9K3eVTXJUxBi67OQSAh9jJAnvWklM6qm4j8w8=", + "lastModified": 1659987637, + "narHash": "sha256-8l+5QiCkackVPu/F3vX7RCKHyYKxEsq/TKMuaG6UX5k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2f0c3be57c348f4cfd8820f2d189e29a685d9c41", + "rev": "a47896bf817e7324471e687fc2bb2312fff682ce", "type": "github" }, "original": { @@ -1152,27 +1195,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1656753965, - "narHash": "sha256-BCrB3l0qpJokOnIVc3g2lHiGhnjUi0MoXiw6t1o8H1E=", + "lastModified": 1660071133, + "narHash": "sha256-XX6T9wcvEZIVWY4TO5O1d2MgFyFrF2v4TpCFs7fjdn8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1657447684, - "narHash": "sha256-FCP9AuU1q6PE3vOeM5SFf58f/UKPBAsoSGDUGamNBbo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "5f43d8b088d3771274bcfb69d3c7435b1121ac88", + "rev": "36cc29d837e7232e3176e4651e8e117a6f231793", "type": "github" }, "original": { @@ -1184,11 +1211,11 @@ }, "nur": { "locked": { - "lastModified": 1657563923, - "narHash": "sha256-gvouxQe93ynZzlUWBxGbk7TJRzAQ5w3wiyNRYODiFJM=", + "lastModified": 1660140306, + "narHash": "sha256-AXtZqd2elOoqSd57Jr3E5f86H8h4e+iNPtMHuj2R0Ps=", "owner": "nix-community", "repo": "NUR", - "rev": "ba9415d7c8ad896048d4d54d770f2d0c45791d1a", + "rev": "5a911c0997ddec558b0da1588fe0e8af4cb8e769", "type": "github" }, "original": { @@ -1199,16 +1226,25 @@ }, "rnix-lsp": { "inputs": { - "naersk": "naersk_2", - "nixpkgs": "nixpkgs_5", - "utils": "utils_2" + "naersk": [ + "fufexan", + "naersk" + ], + "nixpkgs": [ + "fufexan", + "nixpkgs" + ], + "utils": [ + "fufexan", + "fu" + ] }, "locked": { - "lastModified": 1658492037, - "narHash": "sha256-i4TL1Tb/q7Y+Jk5JWk6FRWWei6yH0WtYVTnmmAr9B0c=", + "lastModified": 1658963292, + "narHash": "sha256-4OIpATLdPQvryyhRQPELeqNYC0n6PCyjD6LCPdwOztc=", "owner": "nix-community", "repo": "rnix-lsp", - "rev": "e6a41cbd317a21763ba61a19e594a3e1bf1023ca", + "rev": "ff18e04551a39ccdab0ff9c83926db3807b23478", "type": "github" }, "original": { @@ -1221,6 +1257,7 @@ "inputs": { "bernbot": "bernbot", "blog": "blog", + "discocss": "discocss", "fufexan": "fufexan", "helix": "helix_2", "home": "home", @@ -1228,7 +1265,7 @@ "nixinate": "nixinate", "nixos-hardware": "nixos-hardware", "nixos-persistence": "nixos-persistence", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_5", "nur": "nur" } }, @@ -1267,7 +1304,7 @@ }, "rust-overlay_2": { "inputs": { - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_5", "nixpkgs": [ "fufexan", "helix", @@ -1290,7 +1327,34 @@ }, "rust-overlay_3": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": [ + "fufexan", + "nil", + "flake-utils" + ], + "nixpkgs": [ + "fufexan", + "nil", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659599305, + "narHash": "sha256-htzFq5RffyoKSZxiLfpUq5CyhkQwycsXB5ptale5e78=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "28cedcb8dfea9f1b96b0635cf99fe6bdca163f4e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_4": { + "inputs": { + "flake-utils": "flake-utils_6", "nixpkgs": [ "helix", "nixpkgs" @@ -1310,6 +1374,27 @@ "type": "github" } }, + "spicetify-nix": { + "inputs": { + "nixpkgs": [ + "fufexan", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660056496, + "narHash": "sha256-m7hREOZD/A2NIP970NsNG65NRMg+qpKqhLqRvjL4Kgs=", + "owner": "the-argus", + "repo": "spicetify-nix", + "rev": "ba37a751fb8a8d8b29271b354b6abb5d709b280e", + "type": "github" + }, + "original": { + "owner": "the-argus", + "repo": "spicetify-nix", + "type": "github" + } + }, "utils": { "locked": { "lastModified": 1653893745, @@ -1326,21 +1411,6 @@ } }, "utils_2": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_3": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -1359,11 +1429,11 @@ "flake": false, "locked": { "host": "gitlab.freedesktop.org", - "lastModified": 1656865312, - "narHash": "sha256-xtQ0zwJZwN8sciruveM10CzKz6TWxBY8SyXa8E4jly4=", + "lastModified": 1659738224, + "narHash": "sha256-bV3TLiCgptpKoUKLiH/5RMtiIsfn0hawdaCEHQFB6WY=", "owner": "wlroots", "repo": "wlroots", - "rev": "5dc1d4671dd2ca3c1f0f09587c463fdbb542f0a4", + "rev": "3baf2a6bcfc4cb86c364f5724aaec80f28715a01", "type": "gitlab" }, "original": { @@ -1377,11 +1447,11 @@ "flake": false, "locked": { "host": "gitlab.freedesktop.org", - "lastModified": 1655824477, - "narHash": "sha256-1kskHOLsnisR3kqIL5IHrQbQG/4xoXxeEf1ExMV6/RU=", + "lastModified": 1659738224, + "narHash": "sha256-bV3TLiCgptpKoUKLiH/5RMtiIsfn0hawdaCEHQFB6WY=", "owner": "wlroots", "repo": "wlroots", - "rev": "5c4384a1330faedf975c8b8644881d50390f3613", + "rev": "3baf2a6bcfc4cb86c364f5724aaec80f28715a01", "type": "gitlab" }, "original": { diff --git a/flake.nix b/flake.nix index fce1095..7d907ad 100644 --- a/flake.nix +++ b/flake.nix @@ -23,6 +23,8 @@ blog.inputs.nixpkgs.follows = "nixpkgs"; bernbot.url = "github:yusdacra/bernbot"; bernbot.inputs.nixpkgs.follows = "nixpkgs"; + discocss.url = "github:fufexan/discocss/flake"; + discocss.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs: let diff --git a/hosts/tkaronto/default.nix b/hosts/tkaronto/default.nix index 55595ad..ba70a9f 100644 --- a/hosts/tkaronto/default.nix +++ b/hosts/tkaronto/default.nix @@ -17,8 +17,8 @@ in { common-gpu-amd common-cpu-amd ../../modules/persist + ../../modules/gamemode ../../modules/network/iwd.nix - #../../modules/develop/nixbuild ../../users/root ../../users/patriot ]; @@ -171,7 +171,6 @@ in { autoMount = true; }; flatpak.enable = false; - hardware.xow.enable = true; }; virtualisation = { diff --git a/lib/default.nix b/lib/default.nix index 124e793..8ed4f93 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -3,8 +3,11 @@ lib.makeExtensible (self: { defaultSystems = import ./systems.nix; genSystems = lib.genAttrs self.defaultSystems; - pkgBin = pkgs: id: - if lib.isString id - then "${pkgs.${id}}/bin/${id}" - else "${pkgs.${id.name}}/bin/${id.bin}"; + pkgBin = pkg: + if (pkg.meta or {}) ? mainProgram + then "${pkg}/bin/${pkg.meta.mainProgram}" + else "${pkg}/bin/${pkg.pname}"; + + prefixStrings = prefix: strings: + lib.forEach strings (string: "${prefix}${string}"); }) diff --git a/modules/base/default.nix b/modules/base/default.nix index 238d333..b53165c 100644 --- a/modules/base/default.nix +++ b/modules/base/default.nix @@ -10,7 +10,7 @@ coreBin = v: "${pkgs.coreutils}/bin/${v}"; nixBin = "${config.nix.package}/bin/nix"; - pkgBin = tlib.pkgBin pkgs; + pkgBin = tlib.pkgBin; in { imports = [ ./nix.nix @@ -58,19 +58,20 @@ in { ]; shellAliases = let ifSudo = string: mkIf config.security.sudo.enable string; + inherit (pkgs) git bat exa du-dust; in { - g = pkgBin "git"; - git-optimize = "${pkgBin "git"} gc --aggressive --prune=now"; - cat = "${pkgBin "bat"} -pp --theme=base16"; + g = pkgBin git; + git-optimize = "${pkgBin git} gc --aggressive --prune=now"; + cat = "${pkgBin bat} -pp --theme=base16"; c = "cat"; - du = "${pkgs.du-dust}/bin/dust"; + du = "${pkgBin du-dust}"; df = "${coreBin "df"} -h"; free = "${pkgs.procps}/bin/free -h"; - ls = pkgBin "exa"; - l = "${pkgBin "exa"} -lhg"; - la = "${pkgBin "exa"} -lhg -a"; - t = "${pkgBin "exa"} -lhg -T"; - ta = "${pkgBin "exa"} -lhg -a -T"; + ls = pkgBin exa; + l = "${pkgBin exa} -lhg"; + la = "${pkgBin exa} -lhg -a"; + t = "${pkgBin exa} -lhg -T"; + ta = "${pkgBin exa} -lhg -a -T"; n = nixBin; nf = "${nixBin} flake"; nfu = "${nixBin} flake update"; diff --git a/modules/base/hm-system-defaults.nix b/modules/base/hm-system-defaults.nix index f85b4c4..68bd1ea 100644 --- a/modules/base/hm-system-defaults.nix +++ b/modules/base/hm-system-defaults.nix @@ -1,17 +1,21 @@ { config, inputs, + tlib, ... }: { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.sharedModules = [ { - home.sessionVariables = {inherit (config.environment.sessionVariables) NIX_PATH;}; + home = { + inherit (config.environment) shellAliases sessionVariables; + stateVersion = config.system.stateVersion; + }; xdg.configFile."nix/registry.json".text = config.environment.etc."nix/registry.json".text; xdg.configFile."nix/nix.conf".source = config.environment.etc."nix/nix.conf".source; xdg.configFile."nix/netrc".source = config.environment.etc."nix/netrc".source; } ]; - home-manager.extraSpecialArgs = {inherit inputs;}; + home-manager.extraSpecialArgs = {inherit inputs tlib;}; } diff --git a/modules/gamemode/default.nix b/modules/gamemode/default.nix new file mode 100644 index 0000000..fad09a5 --- /dev/null +++ b/modules/gamemode/default.nix @@ -0,0 +1,31 @@ +{ + pkgs, + inputs, + ... +}: let + hyprland = inputs.fufexan.packages.${pkgs.system}.hyprland; + + startscript = pkgs.writeShellScript "gamemode-start" '' + export HYPRLAND_INSTANCE_SIGNATURE=$(ls /tmp/hypr | sort | tail -n 1) + ${hyprland}/bin/hyprctl --batch 'keyword decoration:blur 0 ; keyword animations:enabled 0 ; keyword misc:no_vfr 1' + ''; + + endscript = pkgs.writeShellScript "gamemode-end" '' + export HYPRLAND_INSTANCE_SIGNATURE=$(ls /tmp/hypr | sort | tail -n 1) + ${hyprland}/bin/hyprctl --batch 'keyword decoration:blur 1 ; keyword animations:enabled 1 ; keyword misc:no_vfr 0' + ''; +in { + programs.gamemode = { + enable = true; + settings = { + general = { + softrealtime = "auto"; + renice = 15; + }; + custom = { + start = "${startscript}"; + end = "${endscript}"; + }; + }; + }; +} diff --git a/pkgs-set/default.nix b/pkgs-set/default.nix index 10b5f30..1c9a513 100644 --- a/pkgs-set/default.nix +++ b/pkgs-set/default.nix @@ -2,6 +2,7 @@ inputs, system, lib, + tlib, ... }: let l = lib; @@ -23,7 +24,7 @@ ${l.removeSuffix ".nix" name} = prev.callPackage "${./pkgs}/${name}" - {inherit inputs;}; + {inherit inputs tlib;}; } ) (l.readDir ./pkgs); diff --git a/pkgs-set/overlays/hyprland.nix b/pkgs-set/overlays/hyprland.nix deleted file mode 100644 index 56fafe7..0000000 --- a/pkgs-set/overlays/hyprland.nix +++ /dev/null @@ -1,3 +0,0 @@ -{inputs}: final: prev: { - hyprland = inputs.fufexan.packages.${prev.system}.hyprland; -} diff --git a/pkgs-set/overlays/phantom.nix b/pkgs-set/overlays/phantom.nix deleted file mode 100644 index 921069a..0000000 --- a/pkgs-set/overlays/phantom.nix +++ /dev/null @@ -1,24 +0,0 @@ -final: prev: { - phantomstyle = - prev.stdenv.mkDerivation - { - pname = "phantomstyle"; - version = "6e9580b"; - src = - builtins.fetchGit - { - url = "https://github.com/randrew/phantomstyle.git"; - rev = "6e9580b72e372b5acecd616434eaf441bf73bcf4"; - }; - dontWrapQtApps = true; - buildInputs = [prev.libsForQt5.qt5.qtbase]; - buildPhase = '' - cd src/styleplugin - qmake && make - ''; - installPhase = '' - mkdir -p $out/$qtPluginPrefix/styles - mv libphantomstyleplugin.so $out/$qtPluginPrefix/styles - ''; - }; -} diff --git a/pkgs-set/pkgs/comic-mono.nix b/pkgs-set/pkgs/comic-mono.nix new file mode 100644 index 0000000..b49c914 --- /dev/null +++ b/pkgs-set/pkgs/comic-mono.nix @@ -0,0 +1,14 @@ +{ + fetchurl, + runCommand, + ... +}: let + ttf = fetchurl { + url = "https://dtinth.github.io/comic-mono-font/ComicMono.ttf"; + sha256 = "sha256-O8FCXpIqFqvw7HZ+/+TQJoQ5tMDc6YQy4H0V9drVcZY="; + }; +in + runCommand "comic-mono" {} '' + mkdir -p $out/share/fonts/truetype + ln -s ${ttf} $out/share/fonts/truetype + '' diff --git a/pkgs-set/pkgs/generate-firefox-addons.nix b/pkgs-set/pkgs/generate-firefox-addons.nix index bfb2b90..ed6338e 100644 --- a/pkgs-set/pkgs/generate-firefox-addons.nix +++ b/pkgs-set/pkgs/generate-firefox-addons.nix @@ -2,11 +2,12 @@ nur, treefmt, writers, + tlib, ... }: writers.writeBashBin "generate-firefox-addons" '' - ${nur.repos.rycee.firefox-addons-generator}/bin/nixpkgs-firefox-addons \ + ${tlib.pkgBin nur.repos.rycee.mozilla-addons-to-nix} \ users/modules/firefox/extensions.json \ users/modules/firefox/extensions.nix - ${treefmt}/bin/treefmt + ${tlib.pkgBin treefmt} '' diff --git a/users/modules/discord/default.nix b/users/modules/discord/default.nix new file mode 100644 index 0000000..c7903be --- /dev/null +++ b/users/modules/discord/default.nix @@ -0,0 +1,15 @@ +{ + inputs, + pkgs, + ... +}: { + imports = [inputs.discocss.hmModule]; + + programs.discocss = { + enable = true; + discord = + inputs.fufexan.packages.${pkgs.system}.discord-electron-openasar; + discordAlias = true; + css = builtins.readFile ./theme.css; + }; +} diff --git a/users/modules/discord/theme.css b/users/modules/discord/theme.css new file mode 100644 index 0000000..3102200 --- /dev/null +++ b/users/modules/discord/theme.css @@ -0,0 +1,215 @@ +.theme-dark, +.theme-light { + --brand-experiment: #f5e0dc; + --brand-experiment-560: #f5e0dc; + --brand-experiment-200: #cdd6f4; + --brand-experiment-15a: #585b70; + --brand-experiment-600: #efcec8; + --header-primary: #a6adc8; + --header-secondary: #bac2de; + --text-normal: #cdd6f4; + --text-muted: #a6adc8; + --text-link: #f5e0dc; + --text-positive: #a6e3a1; + --text-warning: #f9e2af; + --text-danger: #f38ba8; + --text-brand: #89b4fa; + --interactive-normal: #9399b2; + --interactive-hover: #9399b2; + --interactive-active: #cdd6f4; + --interactive-muted: #45475a; + --background-primary: #1e1e2e; + --background-secondary: #181825; + --background-secondary-alt: #11111b; + --background-tertiary: #11111b; + --background-accent: #45475a; + --background-floating: #181825; + --background-nested-floating: #2f3136; + --background-mobile-primary: #36393f; + --background-mobile-secondary: #2f3136; + --chat-background: #36393f; + --chat-border: #202225; + --chat-input-container-background: #36393f; + --background-modifier-hover: #45475a; + --background-modifier-active: #585b70; + --background-modifier-selected: #585b70; + --background-modifier-accent: rgba(79,84,92,0.48); + --info-warning-background: rgba(249,226,175,0.1); + --info-warning-foreground: #f9e2af; +/*--info-warning-text: #fff; + --info-danger-background: hsla(359,calc(var(--saturation-factor, 1)*82.6%),59.4%,0.1); + --info-danger-foreground: hsl(359,calc(var(--saturation-factor, 1)*82.6%),59.4%); + --info-danger-text: #fff; + --info-help-background: hsla(197,calc(var(--saturation-factor, 1)*100%),47.8%,0.1); + --info-help-foreground: hsl(197,calc(var(--saturation-factor, 1)*100%),47.8%); + --info-help-text: #fff; + --status-positive-background: hsl(139,calc(var(--saturation-factor, 1)*47.1%),33.3%); + --status-positive-text: #fff; + --status-warning-background: hsl(38,calc(var(--saturation-factor, 1)*95.7%),54.1%); + --status-warning-text: #000;*/ + --status-danger-background: #f38ba8; + --status-danger-text: #cdd6f4; + --status-danger: #f38ba8; + --status-positive: #a6e3a1; + --status-warning: #fab387; + --button-danger-background: #f38ba8; + --button-danger-background-hover: #f5a2b9; + --button-danger-background-active: #f17497; + --button-danger-background-disabled: #532c37; + --button-positive-background: #a6e3a1; + --button-positive-background-hover: #b9e9b5; + --button-positive-background-active: #93dd8d; + --button-positive-background-disabled: #404540; + --button-secondary-background: #313244; + --button-secondary-background-hover: #45475a; + --button-secondary-background-active: #585b70; + --button-secondary-background-disabled: #f00; + --button-outline-danger-text: #cdd6f4; + --button-outline-danger-border: #f38ba8; + --button-outline-danger-background: #f38ba8; + --button-outline-danger-background-hover: #f5a2b9; + --button-outline-danger-text-hover: #1e1e2e; + --button-outline-danger-border-hover: #f5a2b9; + --button-outline-danger-background-active: #f17497; + --button-outline-danger-text-active: #1e1e2e; + --button-outline-danger-border-active: #f17497; + --button-outline-positive-text: #fff; +/*--button-outline-positive-border: hsl(139,calc(var(--saturation-factor, 1)*47.3%),43.9%); + --button-outline-positive-background: hsla(0,0%,100%,0); + --button-outline-positive-background-hover: hsl(139,calc(var(--saturation-factor, 1)*47.1%),33.3%); + --button-outline-positive-text-hover: #fff; + --button-outline-positive-border-hover: hsl(139,calc(var(--saturation-factor, 1)*47.1%),33.3%); + --button-outline-positive-background-active: hsl(138,calc(var(--saturation-factor, 1)*46.8%),24.3%); + --button-outline-positive-text-active: #fff; + --button-outline-positive-border-active: hsl(138,calc(var(--saturation-factor, 1)*46.8%),24.3%); + --button-outline-brand-text: #fff; + --button-outline-brand-border: hsl(235,calc(var(--saturation-factor, 1)*85.6%),64.7%); + --button-outline-brand-background: hsla(0,0%,100%,0); + --button-outline-brand-background-hover: hsl(235,calc(var(--saturation-factor, 1)*85.6%),64.7%); + --button-outline-brand-text-hover: #fff; + --button-outline-brand-border-hover: hsl(235,calc(var(--saturation-factor, 1)*85.6%),64.7%); + --button-outline-brand-background-active: hsl(235,calc(var(--saturation-factor, 1)*51.4%),52.4%); + --button-outline-brand-text-active: #fff; + --button-outline-brand-border-active: hsl(235,calc(var(--saturation-factor, 1)*51.4%),52.4%);*/ + --button-outline-primary-text: #fff; + --button-outline-primary-border: #4f545c; + --button-outline-primary-background: rgba(255,255,255,0); + --button-outline-primary-background-hover: #4f545c; + --button-outline-primary-text-hover: #fff; + --button-outline-primary-border-hover: #4f545c; + --button-outline-primary-background-active: #686d73; + --button-outline-primary-text-active: #fff; + --button-outline-primary-border-active: #686d73; + --modal-background: #181825; + --modal-footer-background: #11111b; + --scrollbar-thin-thumb: #313244; + --scrollbar-thin-track: transparent; + --scrollbar-auto-thumb: #313244; + --scrollbar-auto-track: transparent; + --scrollbar-auto-scrollbar-color-thumb: #313244; + --scrollbar-auto-scrollbar-color-track: transparent; + --input-background: #313244; + --input-placeholder-text: #7f849c; + --elevation-stroke: 0 0 0 1px rgba(4,4,5,0.15); + --elevation-low: 0 1px 0 rgba(4,4,5,0.2), 0 1.5px 0 rgba(6,6,7,0.05), 0 2px 0 rgba(4,4,5,0.05); + --elevation-medium: 0 4px 4px rgba(0,0,0,0.16); + --elevation-high: 0 8px 16px rgba(0,0,0,0.24); + --logo-primary: #fff; + --background-mentioned: rgba(249,226,175,0.1); + --background-mentioned-hover: rgba(249,226,175,0.08); + --background-message-hover: rgba(24,24,37,0.25); + --channels-default: #7f849c; + --channel-icon: #a6adc8; + --channel-text-area-placeholder: #72767d; + --guild-header-text-shadow: 0 1px 1px rgba(0,0,0,0.4); + --channeltextarea-background: #313244; + --activity-card-background: #202225; + --textbox-markdown-syntax: #8e9297; + --spoiler-revealed-background: #292b2f; + --spoiler-hidden-background: #202225; + --android-navigation-bar-background: #121315; + --deprecated-card-bg: #181825; + --deprecated-card-editable-bg: rgba(32,34,37,0.3); + --deprecated-store-bg: #36393f; + --deprecated-quickswitcher-input-background: #72767d; + --deprecated-quickswitcher-input-placeholder: rgba(255,255,255,0.3); + --deprecated-text-input-bg: #202225; + --deprecated-text-input-border: rgba(0,0,0,0.3); + --deprecated-text-input-border-hover: #040405; + --deprecated-text-input-border-disabled: #202225; + --deprecated-text-input-prefix: #dcddde; +} +/* Reactions */ +.reaction-3vwAF2 { + background-color: #313244; +} +.reaction-3vwAF2:hover { + background-color: #45475a; +} +/* Buttons */ +.lookFilled-yCfaCM.colorBrand-I6CyqQ, +.lookFilled-yCfaCM.colorRed-rQXKgM, +.lookFilled-yCfaCM.colorGreen-3y-Z79, +.selected-2Uns2B, +.colorDefault-CDqZdO.focused-3qFvc8, +.barButtonBase-Sk2mdB { + color: #1e1e2e; +} +.colorDanger-3n-KnP:active:not(.hideInteraction-2jPGL_) { + background-color: #f38ba8; + color: #1e1e2e; +} +.lookFilled-yCfaCM.colorPrimary-2AuQVo { + background-color: #313244; + color: #cdd6f4; +} +/* Checkbox */ +.checked-25WXMf { + background-color: #a6e3a1 !important; +} +/* Bot tag */ +.botTagRegular-kpctgU { + color: #1e1e2e; +} +/* Message hover buttons */ +.wrapper-2vIMkT { + background-color: #313244; +} +/* DMs page */ +.container-2cd8Mz { + background-color: #1e1e2e !important; +} +/* Delete message pupup */ +.theme-dark .message-G6O-Wv { + background-color: #11111b; +} +.autocomplete-3NRXG8 { + background: #1e1e2e !important; +} +.categoryHeader-OpJ1Ly { + background: #181825; +} +rect[fill^="hsl(139"] { + fill: #a6e3a1; +} +rect[fill^="hsl(38"] { + fill: #f9e2af; +} +rect[fill^="hsl(359"] { + fill: #f38ba8; +} +rect[fill^="hsl(214"] { + fill: #a6adc8; +} +div[style^="background-color: hsl(139"] { + background-color: #a6e3a1 !important; +} +div[style^="background-color: hsl(38"] { + background-color: #f9e2af !important; +} +div[style^="background-color: hsl(359"] { + background-color: #f38ba8 !important; +} +div[style^="background-color: hsl(214"] { + background-color: #a6adc8 !important; +} \ No newline at end of file diff --git a/users/modules/firefox/extensions.nix b/users/modules/firefox/extensions.nix index 25f4e07..7b67b19 100644 --- a/users/modules/firefox/extensions.nix +++ b/users/modules/firefox/extensions.nix @@ -12,6 +12,7 @@ sha256 = "d9453ae265608d3a1b17c812d77422ab2aaf357365e527812268a407643efa25"; meta = with lib; { description = "Firefox theme based on https://github.com/catppuccin/catppuccin"; + license = licenses.cc-by-30; platforms = platforms.all; }; }; diff --git a/users/modules/fzf/default.nix b/users/modules/fzf/default.nix new file mode 100644 index 0000000..3ae5be1 --- /dev/null +++ b/users/modules/fzf/default.nix @@ -0,0 +1,6 @@ +{config, ...}: { + programs.fzf.enable = true; + home.sessionVariables = { + FZF_DEFAULT_OPTS = "--color=spinner:#F8BD96,hl:#F28FAD --color=fg:#D9E0EE,header:#F28FAD,info:#DDB6F2,pointer:#F8BD96 --color=marker:#F8BD96,fg+:#F2CDCD,prompt:#DDB6F2,hl+:#F28FAD"; + }; +} diff --git a/users/modules/hyprland/default.nix b/users/modules/hyprland/default.nix index e90a566..5b7feac 100644 --- a/users/modules/hyprland/default.nix +++ b/users/modules/hyprland/default.nix @@ -1,150 +1,159 @@ -{pkgs, ...}: { - systemd.user.targets.hyprland-session = { - Unit = { - Description = "hyprland compositor session"; - Documentation = ["man:systemd.special(7)"]; - BindsTo = ["graphical-session.target"]; - Wants = ["graphical-session-pre.target"]; - After = ["graphical-session-pre.target"]; - }; +{ + pkgs, + inputs, + ... +}: { + imports = [ + ../wayland + inputs.hyprland.homeManagerModules.default + ]; + + home.packages = + [ + (import "${inputs.fufexan}/home/wayland/screenshot.nix" {inherit pkgs;}) + ] + ++ ( + with pkgs; [ + wf-recorder + xorg.xprop + ] + ); + + wayland.windowManager.hyprland = { + enable = true; + package = inputs.fufexan.packages.${pkgs.system}.hyprland; + extraConfig = let + rofi = "${pkgs.rofi-wayland}/bin/rofi"; + launcher = "${rofi} -show drun"; + term = "${pkgs.wezterm}/bin/wezterm"; + + swaybg = "${pkgs.swaybg}/bin/swaybg"; + light = "${pkgs.light}/bin/light"; + playerctl = "${pkgs.playerctl}/bin/playerctl"; + pulsemixer = "${pkgs.pulsemixer}/bin/pulsemixer"; + wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy"; + notify-date = with pkgs; + writers.writeBash "notify-date" '' + ${libnotify}/bin/notify-send -t 1000 " $(${coreutils}/bin/date +'%H:%M %d/%m/%Y')" + ''; + in '' + # should be configured per-profile + monitor=,preferred,auto,1.6 + workspace=,1 + + exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY HYPRLAND_INSTANCE_SIGNATURE + exec-once=systemctl --user start hyprland-session.target + exec-once=${swaybg} -i ~/.config/wallpaper + + input { + kb_layout=tr + follow_mouse=1 + force_no_accel=1 + touchpad { + natural_scroll=1 + } + } + general { + sensitivity=1 + main_mod=SUPER + gaps_in=5 + gaps_out=5 + border_size=0 + damage_tracking=full + } + decoration { + rounding=16 + blur=1 + blur_size=3 + blur_passes=3 + blur_new_optimizations=1 + drop_shadow=1 + shadow_ignore_window=1 + shadow_offset=2 2 + shadow_range=2 + shadow_render_power=1 + col.shadow=0x55000000 + } + animations { + enabled=1 + animation=windows,1,3,default,popin 80% + animation=border,1,2,default + animation=fade,1,2,default + animation=workspaces,1,2,default,slide + } + dwindle { + pseudotile=0 # enable pseudotiling on dwindle + } + + bind=SUPER,RETURN,exec,${term} + bind=SUPER,D,exec,${launcher} + bind=SUPER,Q,killactive, + bind=SUPERSHIFT,E,exec,pkill Hyprland + bind=SUPER,F,fullscreen, + bind=SUPER,P,pseudo, + bind=SUPER,T,exec,${notify-date} + bind=SUPERSHIFT,T,togglefloating, + bind=,XF86AudioPlay,exec,${playerctl} play-pause + bind=,XF86AudioPrev,exec,${playerctl} previous + bind=,XF86AudioNext,exec,${playerctl} next + bind=,XF86AudioRaiseVolume,exec,${pulsemixer} --change-volume +6 + bind=,XF86AudioLowerVolume,exec,${pulsemixer} --change-volume -6 + bind=,XF86AudioMute,exec,${pulsemixer} --toggle-mute + bind=,XF86MonBrightnessUp,exec,${light} -A 5 + bind=,XF86MonBrightnessDown,exec,${light} -U 5 + + # move focus + bind=SUPER,left,movefocus,l + bind=SUPER,right,movefocus,r + bind=SUPER,up,movefocus,u + bind=SUPER,down,movefocus,d + + # go to workspace + bind=SUPER,1,workspace,1 + bind=SUPER,2,workspace,2 + bind=SUPER,3,workspace,3 + bind=SUPER,4,workspace,4 + bind=SUPER,5,workspace,5 + bind=SUPER,6,workspace,6 + bind=SUPER,7,workspace,7 + bind=SUPER,8,workspace,8 + bind=SUPER,9,workspace,9 + bind=SUPER,0,workspace,10 + + # cycle workspaces + bind=SUPER,bracketleft,workspace,m-1 + bind=SUPER,bracketright,workspace,m+1 + + # cycle monitors + bind=SUPERSHIFT,braceleft,focusmonitor,l + bind=SUPERSHIFT,braceright,focusmonitor,r + + # move to workspace + bind=SUPERSHIFT,1,movetoworkspace,1 + bind=SUPERSHIFT,2,movetoworkspace,2 + bind=SUPERSHIFT,3,movetoworkspace,3 + bind=SUPERSHIFT,4,movetoworkspace,4 + bind=SUPERSHIFT,5,movetoworkspace,5 + bind=SUPERSHIFT,6,movetoworkspace,6 + bind=SUPERSHIFT,7,movetoworkspace,7 + bind=SUPERSHIFT,8,movetoworkspace,8 + bind=SUPERSHIFT,9,movetoworkspace,9 + + ## screenshot ## + bind=,Print,exec,screenshot area + bind=SUPERSHIFT,R,exec,screenshot area + + # monitor + bind=CTRL,Print,exec,screenshot monitor + bind=SUPERSHIFTCTRL,R,exec,screenshot monitor + + # all-monitors + bind=ALT,Print,exec,screenshot all + bind=SUPERSHIFTALT,R,exec,screenshot all + + # screenrec + bind=ALT,Print,exec,screenshot rec area + bind=SUPERSHIFTALT,R,exec,screenshot rec area + ''; }; - - xdg.enable = true; - xdg.configFile."hypr/hyprland.conf".text = let - rofi = "${pkgs.rofi-wayland}/bin/rofi"; - launcher = "${rofi} -show drun"; - term = "${pkgs.wezterm}/bin/wezterm"; - - swaybg = "${pkgs.swaybg}/bin/swaybg"; - grim = "${pkgs.grim}/bin/grim"; - light = "${pkgs.light}/bin/light"; - playerctl = "${pkgs.playerctl}/bin/playerctl"; - pulsemixer = "${pkgs.pulsemixer}/bin/pulsemixer"; - slurp = "${pkgs.slurp}/bin/slurp"; - wl-copy = "${pkgs.wl-clipboard}/bin/wl-copy"; - notify-date = with pkgs; - writers.writeBash "notify-date" '' - ${libnotify}/bin/notify-send -t 1000 " $(${coreutils}/bin/date +'%H:%M %d/%m/%Y')" - ''; - in '' - # should be configured per-profile - monitor=,2560x1600@120,0x0,1.6 - workspace=,1 - exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY HYPRLAND_INSTANCE_SIGNATURE - exec-once=systemctl --user start graphical-session-pre.target - exec-once=systemctl --user start graphical-session.target - exec-once=${swaybg} -i ~/.config/wallpaper - exec-once=xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 1.6 - input { - kb_layout=tr - kb_variant= - kb_model= - kb_options= - kb_rules= - follow_mouse=1 - force_no_accel=1 - touchpad { - natural_scroll=1 - } - } - general { - sensitivity=1 - main_mod=SUPER - gaps_in=5 - gaps_out=5 - border_size=0 - damage_tracking=full - } - decoration { - rounding=16 - blur=1 - blur_size=3 # minimum 1 - blur_passes=3 # minimum 1, more passes = more resource intensive. - # Your blur "amount" is blur_size * blur_passes, but high blur_size (over around 5-ish) will produce artifacts. - # if you want heavy blur, you need to up the blur_passes. - # the more passes, the more you can up the blur_size without noticing artifacts. - } - animations { - enabled=1 - animation=windows,1,2,default - animation=borders,1,2,default - animation=fadein,1,2,default - animation=workspaces,1,2,slide - } - dwindle { - pseudotile=0 # enable pseudotiling on dwindle - } - # example window rules - # for windows named/classed as abc and xyz - #windowrule=move 69 420,abc - #windowrule=size 420 69,abc - #windowrule=tile,xyz - #windowrule=float,abc - #windowrule=pseudo,abc - #windowrule=monitor 0,xyz - bind=SUPER,RETURN,exec,${term} - bind=SUPER,D,exec,${launcher} - bind=SUPER,Q,killactive, - bind=SUPERSHIFT,E,exec,pkill Hyprland - bind=SUPER,F,fullscreen, - bind=SUPER,P,pseudo, - bind=SUPER,T,exec,${notify-date} - bind=SUPERSHIFT,T,togglefloating, - bind=,XF86AudioPlay,exec,${playerctl} play-pause - bind=,XF86AudioPrev,exec,${playerctl} previous - bind=,XF86AudioNext,exec,${playerctl} next - bind=,XF86AudioRaiseVolume,exec,${pulsemixer} --change-volume +6 - bind=,XF86AudioLowerVolume,exec,${pulsemixer} --change-volume -6 - bind=,XF86AudioMute,exec,${pulsemixer} --toggle-mute - bind=,XF86MonBrightnessUp,exec,${light} -A 5 - bind=,XF86MonBrightnessDown,exec,${light} -U 5 - # screenshot - # selection - $ssselection=${grim} -g "$(${slurp})" - | ${wl-copy} -t image/png - bind=,Print,exec,$ssselection - bind=SUPERSHIFT,R,exec,$ssselection - # monitor - $ssmonitor=${grim} -o "$(${slurp} -f %o -or)" - | ${wl-copy} -t image/png - bind=CTRL,Print,exec,$ssmonitor - bind=SUPERSHIFTCTRL,R,exec,$ssmonitor - # all-monitors - $ssall=${grim} - | ${wl-copy} -t image/png - bind=ALT,Print,exec,$ssall - bind=SUPERSHIFTALT,R,exec,$ssall - # move focus - bind=SUPER,left,movefocus,l - bind=SUPER,right,movefocus,r - bind=SUPER,up,movefocus,u - bind=SUPER,down,movefocus,d - # go to workspace - bind=SUPER,grave,togglespecialworkspace,eDP-1 - bind=SUPER,1,workspace,1 - bind=SUPER,2,workspace,2 - bind=SUPER,3,workspace,3 - bind=SUPER,4,workspace,4 - bind=SUPER,5,workspace,5 - bind=SUPER,6,workspace,6 - bind=SUPER,7,workspace,7 - bind=SUPER,8,workspace,8 - bind=SUPER,9,workspace,9 - bind=SUPER,0,workspace,10 - # cycle workspaces - bind=SUPER,bracketleft,workspace,m-1 - bind=SUPER,bracketright,workspace,m+1 - # cycle monitors - bind=SUPERSHIFT,braceleft,focusmonitor,l - bind=SUPERSHIFT,braceright,focusmonitor,r - # move to workspace - bind=SUPERSHIFT,asciitilde,movetoworkspace,special - bind=SUPERSHIFT,exclam,movetoworkspace,1 - bind=SUPERSHIFT,at,movetoworkspace,2 - bind=SUPERSHIFT,numbersign,movetoworkspace,3 - bind=SUPERSHIFT,dollar,movetoworkspace,4 - bind=SUPERSHIFT,percent,movetoworkspace,5 - bind=SUPERSHIFT,asciicircum,movetoworkspace,6 - bind=SUPERSHIFT,ampersand,movetoworkspace,7 - bind=SUPERSHIFT,asterisk,movetoworkspace,8 - bind=SUPERSHIFT,parenleft,movetoworkspace,9 - bind=SUPERSHIFT,parenright,movetoworkspace,10 - ''; } diff --git a/users/modules/ssh/default.nix b/users/modules/ssh/default.nix new file mode 100644 index 0000000..b764654 --- /dev/null +++ b/users/modules/ssh/default.nix @@ -0,0 +1,17 @@ +{...}: { + programs.ssh = { + enable = true; + compression = true; + hashKnownHosts = true; + userKnownHostsFile = "~/.local/share/ssh/known-hosts"; + # Only needed for darcs hub + # extraConfig = '' + # Host hub.darcs.net + # ControlMaster no + # ForwardAgent no + # ForwardX11 no + # Ciphers +aes256-cbc + # MACs +hmac-sha1 + # ''; + }; +} diff --git a/users/modules/wayland/default.nix b/users/modules/wayland/default.nix new file mode 100644 index 0000000..ef55ead --- /dev/null +++ b/users/modules/wayland/default.nix @@ -0,0 +1,20 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + wl-clipboard + ]; + + home.sessionVariables = { + NIXOS_OZONE_WL = "1"; + MOZ_ENABLE_WAYLAND = "1"; + SDL_VIDEODRIVER = "wayland"; + QT_QPA_PLATFORM = "wayland"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + }; + + services = { + gammastep = { + enable = true; + provider = "geoclue2"; + }; + }; +} diff --git a/users/modules/zsh/default.nix b/users/modules/zsh/default.nix new file mode 100644 index 0000000..817de45 --- /dev/null +++ b/users/modules/zsh/default.nix @@ -0,0 +1,56 @@ +{ + config, + tlib, + lib, + pkgs, + ... +}: let + pkgBin = tlib.pkgBin; +in { + programs.zsh = { + enable = true; + autocd = true; + enableVteIntegration = true; + enableAutosuggestions = true; + enableCompletion = true; + plugins = [ + { + name = "per-directory-history"; + src = pkgs.fetchFromGitHub { + owner = "jimhester"; + repo = "per-directory-history"; + rev = "d2e291dd6434e340d9be0e15e1f5b94f32771c06"; + hash = "sha256-VHRgrVCqzILqOes8VXGjSgLek38BFs9eijmp0JHtD5Q="; + }; + } + ]; + # xdg compliant + dotDir = ".config/zsh"; + history.path = "${config.home.homeDirectory}/.local/share/zsh/history"; + initExtra = '' + ${ + lib.optionalString + (config.programs.ssh.enable && config.services.gpg-agent.enable) + "export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)" + } + + function tomp4 () { + ${pkgBin pkgs.ffmpeg} -i $1 -c:v libx264 -preset slow -crf 30 -c:a aac -b:a 128k "$1.mp4" + } + + function topng () { + ${pkgBin pkgs.ffmpeg} -i $1 "$1.png" + } + + # fix some key stuff + bindkey "$terminfo[kRIT5]" forward-word + bindkey "$terminfo[kLFT5]" backward-word + + # makes completions pog + zstyle ':completion:*' menu select + + # which env we are in + ${pkgBin pkgs.any-nix-shell} zsh --info-right | source /dev/stdin + ''; + }; +} diff --git a/users/patriot/default.nix b/users/patriot/default.nix index 56707be..066eadf 100644 --- a/users/patriot/default.nix +++ b/users/patriot/default.nix @@ -6,17 +6,10 @@ inputs, ... } @ globalAttrs: let - inherit (lib) mapAttrs' nameValuePair; - inherit (builtins) readDir fetchGit; l = lib // builtins; - pkgBin = tlib.pkgBin pkgs; nixosConfig = globalAttrs.config; in { - imports = [ - inputs.hyprland.nixosModules.default - ]; - users.users.patriot = { isNormalUser = true; createHome = true; @@ -33,7 +26,7 @@ in { }; environment = { persistence.${config.system.persistDir}.directories = l.flatten [ - (lib.optional nixosConfig.programs.steam.enable "/home/patriot/.local/share/Steam") + (l.optional nixosConfig.programs.steam.enable "/home/patriot/.local/share/Steam") "/home/patriot/.cargo" "/home/patriot/proj" "/home/patriot/games" @@ -44,8 +37,10 @@ in { xdg.portal = { enable = true; wlr.enable = true; - gtkUsePortal = true; - extraPortals = with pkgs; [xdg-desktop-portal-gtk xdg-desktop-portal-wlr]; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + xdg-desktop-portal-wlr + ]; }; programs = { # this is needed for impermanence @@ -55,8 +50,6 @@ in { kdeconnect.enable = true; # gnome stuffs seahorse.enable = true; - hyprland.enable = true; - hyprland.extraPackages = []; }; # gnome keyring better fr fr security.pam.services.patriot = { @@ -80,28 +73,26 @@ in { name = personal.name; email = personal.emails.primary; in { - imports = [ - ../modules/direnv - ../modules/git - ../modules/starship - ../modules/helix - ../modules/zoxide - ../modules/wezterm - ../modules/hyprland - ../modules/rofi - ../modules/mako - ../modules/font - ../modules/firefox - ../../modules/persist - # ../modules/smos - inputs.nixos-persistence.nixosModules.home-manager.impermanence - ]; + imports = let + modulesToEnable = l.flatten [ + # desktop stuff + ["firefox" "hyprland" "wezterm" "font" "rofi" "mako" "discord"] + # cli stuff + ["zoxide" "zsh" "fzf" "starship" "direnv"] + # dev stuff + ["helix" "git" "ssh"] + ]; + in + l.flatten [ + ../../modules/persist + inputs.nixos-persistence.nixosModules.home-manager.impermanence + (tlib.prefixStrings "${inputs.self}/users/modules/" modulesToEnable) + ]; system.persistDir = nixosConfig.system.persistDir; home.persistence."${config.system.persistDir}${config.home.homeDirectory}" = let - mkPaths = prefix: paths: - builtins.map (n: "${prefix}/${n}") (l.flatten paths); + mkPaths = pfx: paths: tlib.prefixStrings "${pfx}/" (l.flatten paths); in { directories = l.flatten [ @@ -135,68 +126,40 @@ in { allowOther = true; }; - fonts.fontconfig.enable = lib.mkForce true; + fonts.fontconfig.enable = l.mkForce true; fonts.settings = { enable = true; name = "Comic Mono"; size = 13; - package = let - ttf = pkgs.fetchurl { - url = "https://dtinth.github.io/comic-mono-font/ComicMono.ttf"; - sha256 = "sha256-O8FCXpIqFqvw7HZ+/+TQJoQ5tMDc6YQy4H0V9drVcZY="; - }; - in - pkgs.runCommandNoCC "comic-mono" {} '' - mkdir -p $out/share/fonts/truetype - ln -s ${ttf} $out/share/fonts/truetype - ''; + package = pkgs.comic-mono; }; home = { - stateVersion = nixosConfig.system.stateVersion; homeDirectory = nixosConfig.users.users.patriot.home; - packages = with pkgs; - l.flatten [ - # Font stuff - noto-fonts-cjk - font-awesome - dejavu_fonts - # Programs - bitwarden - cargo-outdated - cargo-release - cargo-udeps - vulkan-tools - krita - cachix - gnupg - imv - mpv - ffmpeg - mupdf - xdg_utils - wl-clipboard - xclip - rust-analyzer - # polymc - cloudflared - lutris - discord-open-asar - gamescope - protontricks - genymotion - ]; - shellAliases = - nixosConfig.environment.shellAliases - // { - harmony-ssh = '' - ${pkgBin "mosh"} root@chat.harmonyapp.io - ''; - }; - sessionVariables = - nixosConfig.environment.sessionVariables - // l.optionalAttrs config.programs.fzf.enable { - FZF_DEFAULT_OPTS = "--color=spinner:#F8BD96,hl:#F28FAD --color=fg:#D9E0EE,header:#F28FAD,info:#DDB6F2,pointer:#F8BD96 --color=marker:#F8BD96,fg+:#F2CDCD,prompt:#DDB6F2,hl+:#F28FAD"; - }; + packages = with pkgs; [ + # Font stuff + noto-fonts-cjk + font-awesome + dejavu_fonts + # Programs + bitwarden + cargo-outdated + cargo-release + cargo-udeps + vulkan-tools + krita + cachix + gnupg + imv + mpv + ffmpeg + mupdf + xdg_utils + rust-analyzer + # polymc + cloudflared + lutris + protontricks + ]; }; programs = { command-not-found.enable = @@ -209,66 +172,11 @@ in { userName = name; userEmail = email; }; - ssh = { - enable = true; - compression = true; - hashKnownHosts = true; - userKnownHostsFile = "~/.local/share/ssh/known-hosts"; - # Only needed for darcs hub - # extraConfig = '' - # Host hub.darcs.net - # ControlMaster no - # ForwardAgent no - # ForwardX11 no - # Ciphers +aes256-cbc - # MACs +hmac-sha1 - # ''; - }; - zsh = { - enable = true; - autocd = true; - enableVteIntegration = true; - enableAutosuggestions = true; - enableCompletion = true; - plugins = [ - { - name = "per-directory-history"; - src = pkgs.fetchFromGitHub { - owner = "jimhester"; - repo = "per-directory-history"; - rev = "d2e291dd6434e340d9be0e15e1f5b94f32771c06"; - hash = "sha256-VHRgrVCqzILqOes8VXGjSgLek38BFs9eijmp0JHtD5Q="; - }; - } - ]; - # xdg compliant - dotDir = ".config/zsh"; - history.path = "${config.home.homeDirectory}/.local/share/zsh/history"; - initExtra = '' - export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) - - function tomp4 () { - ${pkgBin "ffmpeg"} -i $1 -c:v libx264 -preset slow -crf 30 -c:a aac -b:a 128k "$1.mp4" - } - - function topng () { - ${pkgBin "ffmpeg"} -i $1 "$1.png" - } - - # fix some key stuff - bindkey "$terminfo[kRIT5]" forward-word - bindkey "$terminfo[kLFT5]" backward-word - # makes completions pog - zstyle ':completion:*' menu select - ${pkgBin "any-nix-shell"} zsh --info-right | source /dev/stdin - ''; - loginExtra = '' - if [[ "$(tty)" == "/dev/tty1" ]]; then - exec Hyprland - fi - ''; - }; - fzf.enable = true; + zsh.loginExtra = '' + if [[ "$(tty)" == "/dev/tty1" ]]; then + exec Hyprland + fi + ''; }; services = { gpg-agent = let