From c51a8e9fe0f48855eb951a0a23c8be131b12b45d Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:27:45 +0200 Subject: [PATCH 01/50] feat: update flake.nix with caelestia-cli and caelestia-shell URLs; add result symlink for nixos manual --- flake.lock | 317 ++++++++++++++++++++++++++++++++++++++++------------- flake.nix | 4 + result | 1 + 3 files changed, 246 insertions(+), 76 deletions(-) create mode 120000 result diff --git a/flake.lock b/flake.lock index b37dd76..6054e75 100755 --- a/flake.lock +++ b/flake.lock @@ -24,11 +24,11 @@ ] }, "locked": { - "lastModified": 1755946532, - "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", + "lastModified": 1753216019, + "narHash": "sha256-zik7WISrR1ks2l6T1MZqZHb/OqroHdJnSnAehkE0kCk=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", + "rev": "be166e11d86ba4186db93e10c54a141058bdce49", "type": "github" }, "original": { @@ -37,20 +37,108 @@ "type": "github" } }, + "caelestia-cli": { + "inputs": { + "caelestia-shell": "caelestia-shell", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1757210367, + "narHash": "sha256-9FeNHGZ2reB2jQ6USdUXNlME7c8sURuzHlvwellc2yM=", + "owner": "caelestia-dots", + "repo": "cli", + "rev": "d7b7d2ae048abb4e4d987e3e96717779b4a21388", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "cli", + "type": "github" + } + }, + "caelestia-cli_2": { + "inputs": { + "caelestia-shell": [ + "caelestia-shell" + ], + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1757123223, + "narHash": "sha256-WE20W7OTKxw+Tvmthpy0CEV0KOvLWuvaW+bceTZ8yhk=", + "owner": "caelestia-dots", + "repo": "cli", + "rev": "12abcf2336e9277c47d745ac3cae04effa28d674", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "cli", + "type": "github" + } + }, + "caelestia-shell": { + "inputs": { + "caelestia-cli": [ + "caelestia-cli" + ], + "nixpkgs": [ + "caelestia-cli", + "nixpkgs" + ], + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1757207876, + "narHash": "sha256-JgwRcx4mJmVV00aeKuzsxNEHlze33HZInlznKgbTic8=", + "owner": "caelestia-dots", + "repo": "shell", + "rev": "139c36ba5a0fa07efc58d9cc683d7b0ff73d7d75", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "shell", + "type": "github" + } + }, + "caelestia-shell_2": { + "inputs": { + "caelestia-cli": "caelestia-cli_2", + "nixpkgs": "nixpkgs_2", + "quickshell": "quickshell_2" + }, + "locked": { + "lastModified": 1757207876, + "narHash": "sha256-JgwRcx4mJmVV00aeKuzsxNEHlze33HZInlznKgbTic8=", + "owner": "caelestia-dots", + "repo": "shell", + "rev": "139c36ba5a0fa07efc58d9cc683d7b0ff73d7d75", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "shell", + "type": "github" + } + }, "chaotic": { "inputs": { "flake-schemas": "flake-schemas", "home-manager": "home-manager", "jovian": "jovian", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_3", "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1756606761, - "narHash": "sha256-lcHMwq0LVcS1mP9o0pq00Von8PsXMsFPPo3ZXGWa7DU=", + "lastModified": 1757011047, + "narHash": "sha256-y4cFEDZ7Mmz4vLPSc2pDF7OXJ9ylW3cOU2Tztx/ApI0=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "9e9e58125b4ba190658235106858f9733b25a1b4", + "rev": "7b9fd94dccd3a22f32dff8560f248991300f8c16", "type": "github" }, "original": { @@ -63,11 +151,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -157,11 +245,11 @@ ] }, "locked": { - "lastModified": 1756261190, - "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", + "lastModified": 1756954499, + "narHash": "sha256-Pg4xBHzvzNY8l9x/rLWoJMnIR8ebG+xeU+IyqThIkqU=", "owner": "nix-community", "repo": "home-manager", - "rev": "77f348da3176dc68b20a73dab94852a417daf361", + "rev": "ed1a98c375450dfccf427adacd2bfd1a7b22eb25", "type": "github" }, "original": { @@ -178,11 +266,11 @@ ] }, "locked": { - "lastModified": 1756261190, - "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", + "lastModified": 1754365350, + "narHash": "sha256-NLWIkn1qM0wxtZu/2NXRaujWJ4Y1PSZlc7h0y6pOzOQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "77f348da3176dc68b20a73dab94852a417daf361", + "rev": "c5d7e957397ecb7d48b99c928611c6e780db1b56", "type": "github" }, "original": { @@ -322,11 +410,11 @@ ] }, "locked": { - "lastModified": 1755678602, - "narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=", + "lastModified": 1752149140, + "narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "157cc52065a104fc3b8fa542ae648b992421d1c7", + "rev": "340494a38b5ec453dfc542c6226481f736cc8a9a", "type": "github" }, "original": { @@ -341,15 +429,15 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_4", "systems": "systems" }, "locked": { - "lastModified": 1756291201, - "narHash": "sha256-YzRWE3rCnsY0WDRJcn4KvyWUoe+5zdkUYNIaHGP9BZ4=", + "lastModified": 1752164251, + "narHash": "sha256-v/FnmgSkOypGkpDHQW8KK0uVIyh2njVgEa7hOpWW9ZM=", "owner": "hyprwm", "repo": "hypridle", - "rev": "5430b73ddf148651bcf35fa39ed4d757c7534028", + "rev": "dda793b66a79e5602675fa370dd9a93f1d70a60e", "type": "github" }, "original": { @@ -368,17 +456,17 @@ "hyprlang": "hyprlang_2", "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner_2", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_5", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems_2", "xdph": "xdph" }, "locked": { - "lastModified": 1756656879, - "narHash": "sha256-QCNUXw1J0BaykSKSb9jp5h1v4YVBLVcekhrxnivlgY4=", + "lastModified": 1754516867, + "narHash": "sha256-Vlh2o3NqI6a9H/b1aY8uCUsJyJdhwvJZExxnteadLCU=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "5bb8adbc3228901d199e8d22d6f712bd1d7d4e15", + "rev": "a4529beb7c0be3980ce857c60b284a90f2ea6eb6", "type": "github" }, "original": { @@ -621,11 +709,11 @@ ] }, "locked": { - "lastModified": 1756117388, - "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", + "lastModified": 1753800567, + "narHash": "sha256-W0xgXsaqGa/5/7IBzKNhf0+23MqGPymYYfqT7ECqeTE=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", + "rev": "c65d41d4f4e6ded6fdb9d508a73e2fe90e55cdf7", "type": "github" }, "original": { @@ -675,11 +763,11 @@ ] }, "locked": { - "lastModified": 1755184602, - "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", + "lastModified": 1751897909, + "narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", + "rev": "fcca0c61f988a9d092cbb33e906775014c61579d", "type": "github" }, "original": { @@ -725,11 +813,11 @@ ] }, "locked": { - "lastModified": 1756201372, - "narHash": "sha256-bK5j5cwJgO5AZXlDl5AgISzpOv9YV1Fcv2nDr9RW/5o=", + "lastModified": 1756638688, + "narHash": "sha256-ddxbPTnIchM6tgxb6fRrCvytlPE2KLifckTnde/irVQ=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "9f6745bd704ab7f2617d41c2b02f4fd5f9ed0e89", + "rev": "e7b8679cba79f4167199f018b05c82169249f654", "type": "github" }, "original": { @@ -741,14 +829,14 @@ "nix-gaming": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1756604975, - "narHash": "sha256-qLvZwPsuUUL2B/yqFJBeWmz6fdsloQyMAWK/6dYDXMU=", + "lastModified": 1757037153, + "narHash": "sha256-C/7KPJln4yL5au1ivOJOEgAFbMVAw/cFmQp80O8friA=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "4c92760b8d12d0d36e8e189d890d1c01a7ae646e", + "rev": "c1376c823e440c159c0bde9fc22a6cee19c25b24", "type": "github" }, "original": { @@ -788,11 +876,11 @@ ] }, "locked": { - "lastModified": 1756008611, - "narHash": "sha256-rfTBWuTXi9/X7GhtF562FKNXKh2kvKb6dwI5lV1SjPE=", + "lastModified": 1754195341, + "narHash": "sha256-YL71IEf2OugH3gmAsxQox6BJI0KOcHKtW2QqT/+s2SA=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "52dec1cb33a614accb9e01307e17816be974d24d", + "rev": "b7fcd4e26d67fca48e77de9b0d0f954b18ae9562", "type": "github" }, "original": { @@ -831,11 +919,11 @@ "sops-nix": "sops-nix" }, "locked": { - "lastModified": 1756640992, - "narHash": "sha256-iNfoqZyShPzXcARe6lMXR9OM/b3uykgpEtyD983hH8Q=", + "lastModified": 1757079709, + "narHash": "sha256-ECO4wb3iGHBiYZLu9+wBiMoWoc+gF4+yFfVGAX7y7FE=", "owner": "Tarow", "repo": "nix-podman-stacks", - "rev": "b84320f19bb906644be85aeab717dcf4870df2e6", + "rev": "b313d28ca02cbea256688aa697af923dd623e1cd", "type": "github" }, "original": { @@ -846,11 +934,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1756245047, - "narHash": "sha256-9bHzrVbjAudbO8q4vYFBWlEkDam31fsz0J7GB8k4AsI=", + "lastModified": 1754316476, + "narHash": "sha256-Ry1gd1BQrNVJJfT11cpVP0FY8XFMx4DJV2IDp01CH9w=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "a65b650d6981e23edd1afa1f01eb942f19cdcbb7", + "rev": "9368056b73efb46eb14fd4667b99e0f81b805f28", "type": "github" }, "original": { @@ -862,15 +950,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", - "owner": "NixOS", + "lastModified": 1757068644, + "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -893,11 +981,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1756650686, - "narHash": "sha256-kgf2GzjNcyZ9A68+NuRTiYOGgB3Ux8Bw4KU5WjjYk1A=", + "lastModified": 1757087884, + "narHash": "sha256-GyAFRnxL57u5GPvVvfL/U23CoxcpNFndnHO/7SLrMfM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c8f89b1c7ce876a7d0a7f172f8fc78c63176ab2b", + "rev": "63f58a53c08610dbfb75b8aec2ea9d290f1c0848", "type": "github" }, "original": { @@ -908,6 +996,38 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1756787288, + "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1756989294, + "narHash": "sha256-vh3F0p7pGvj9tItYjlqiZ3zTJCuw9+d74RhYCYLuaBQ=", + "owner": "PedroHLC", + "repo": "nixpkgs", + "rev": "f04ea9d87566cfe950cf45d7311a9964dcf3bf38", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1748929857, "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", @@ -923,13 +1043,13 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_5": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1753939845, + "narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "94def634a20494ee057c76998843c015909d6311", "type": "github" }, "original": { @@ -939,7 +1059,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_6": { "locked": { "lastModified": 1756536218, "narHash": "sha256-ynQxPVN2FIPheUgTFhv01gYLbaiSOS7NgWJPm9LF9D0=", @@ -955,13 +1075,13 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_7": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1756787288, + "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", "type": "github" }, "original": { @@ -982,11 +1102,11 @@ ] }, "locked": { - "lastModified": 1755960406, - "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", + "lastModified": 1750779888, + "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", + "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", "type": "github" }, "original": { @@ -995,14 +1115,59 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "caelestia-cli", + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756981260, + "narHash": "sha256-GhuD9QVimjynHI0OOyZsqJsnlXr2orowh9H+HYz4YMs=", + "ref": "refs/heads/master", + "rev": "6eb12551baf924f8fdecdd04113863a754259c34", + "revCount": 672, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, + "quickshell_2": { + "inputs": { + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756981260, + "narHash": "sha256-GhuD9QVimjynHI0OOyZsqJsnlXr2orowh9H+HYz4YMs=", + "ref": "refs/heads/master", + "rev": "6eb12551baf924f8fdecdd04113863a754259c34", + "revCount": 672, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, "root": { "inputs": { + "caelestia-cli": "caelestia-cli", + "caelestia-shell": "caelestia-shell_2", "chaotic": "chaotic", "hydenix": "hydenix", "nix-gaming": "nix-gaming", "nix-index-database": "nix-index-database_2", "nix-podman-stacks": "nix-podman-stacks", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_7", "nixpkgs-stable": "nixpkgs-stable" } }, @@ -1014,11 +1179,11 @@ ] }, "locked": { - "lastModified": 1756434910, - "narHash": "sha256-5UJRyxZ8QCm+pgh5pNHXFJMmopMqHVraUhRA1g2AmA0=", + "lastModified": 1756953131, + "narHash": "sha256-alhjsmCdJDNZCP824NB21ZfqepVsGwpIiRBmSHUvp7U=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "86e5140961c91a9ee1dde1c17d18a787d44ceef8", + "rev": "c2e69d21d6a1c83de3326c975d484c4c79893896", "type": "github" }, "original": { @@ -1150,11 +1315,11 @@ ] }, "locked": { - "lastModified": 1755354946, - "narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=", + "lastModified": 1753633878, + "narHash": "sha256-js2sLRtsOUA/aT10OCDaTjO80yplqwOIaLUqEe0nMx0=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0", + "rev": "371b96bd11ad2006ed4f21229dbd1be69bed3e8a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index e5ed61c..c1827aa 100755 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,10 @@ # Hydenix and its nixpkgs - kept separate to avoid conflicts hydenix.url = "github:richen604/hydenix/v4.9.0"; + caelestia-shell.url = "github:caelestia-dots/shell"; + caelestia-cli.url = "github:caelestia-dots/cli"; + + # Nix-index-database - for comma and command-not-found nix-index-database = { url = "github:nix-community/nix-index-database"; diff --git a/result b/result new file mode 120000 index 0000000..243d2a4 --- /dev/null +++ b/result @@ -0,0 +1 @@ +/nix/store/cpfnmymcn47k9bd8y0nidh2iih1npsd5-nixos-manual-html \ No newline at end of file From fe08675bebfa9455f1fe31160a6218b8eeb5771e Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:27:54 +0200 Subject: [PATCH 02/50] feat: add caelestia module with upower service and system packages --- modules/wrapper/caelestia.nix | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 modules/wrapper/caelestia.nix diff --git a/modules/wrapper/caelestia.nix b/modules/wrapper/caelestia.nix new file mode 100644 index 0000000..f573f6a --- /dev/null +++ b/modules/wrapper/caelestia.nix @@ -0,0 +1,37 @@ +{ pkgs, inputs, ... }: { + + services.upower.enable = true; + + environment.systemPackages = with pkgs; [ + inputs.caelestia-shell.packages.${system}.default + inputs.caelestia-cli.packages.${system}.default + + # Not sure if all these dependencies are necessary or not + xdg-desktop-portal-hyprland + xdg-desktop-portal-gtk + hyprpicker + hypridle + wl-clipboard + cliphist + bluez + bluez-tools + inotify-tools + app2unit + wireplumber + trash-cli + foot + fish + fastfetch + starship + btop + jq + socat + imagemagick + curl + adw-gtk3 + papirus-icon-theme + kdePackages.qt6ct + libsForQt5.qt5ct + nerd-fonts.jetbrains-mono + ]; +} \ No newline at end of file From 5d83d3a52631160819254328786b867537670376 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:28:04 +0200 Subject: [PATCH 03/50] fix: update homepage URL for hayase application to correct repository --- modules/wrapper/hayase.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/wrapper/hayase.nix b/modules/wrapper/hayase.nix index 0a3fede..dcae361 100644 --- a/modules/wrapper/hayase.nix +++ b/modules/wrapper/hayase.nix @@ -31,7 +31,7 @@ appimageTools.wrapType2 rec { meta = with lib; { description = "A bittorrent streaming application for anime"; - homepage = "https://github.com/ThaUnknown/miru"; + homepage = "https://github.com/hayase-app/ui"; license = licenses.gpl3Only; maintainers = with maintainers; [ ]; platforms = [ "x86_64-linux" ]; From 277c0761fb344d3e04c909d9e829c20febf3b095 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:28:09 +0200 Subject: [PATCH 04/50] feat: add default.nix wrapper module with necessary imports --- modules/wrapper/default.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 modules/wrapper/default.nix diff --git a/modules/wrapper/default.nix b/modules/wrapper/default.nix new file mode 100644 index 0000000..63f68f1 --- /dev/null +++ b/modules/wrapper/default.nix @@ -0,0 +1,12 @@ +{ ... }: + +{ + imports = [ + ./safing/module.nix + ./safing/package.nix + ./caelestia.nix + ./hayase.nix + ./scalar.nix + ./wrkflw.nix + ]; +} \ No newline at end of file From 8186ec2fcf1d64a84c2d5e8fd9b26749291abc7d Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:28:14 +0200 Subject: [PATCH 05/50] feat: add forgejo service module with configuration options --- .../server/storage/{gitea.nix => forgejo.nix} | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename modules/system/common/server/storage/{gitea.nix => forgejo.nix} (59%) diff --git a/modules/system/common/server/storage/gitea.nix b/modules/system/common/server/storage/forgejo.nix similarity index 59% rename from modules/system/common/server/storage/gitea.nix rename to modules/system/common/server/storage/forgejo.nix index 34950e7..7dee3da 100644 --- a/modules/system/common/server/storage/gitea.nix +++ b/modules/system/common/server/storage/forgejo.nix @@ -3,31 +3,31 @@ with lib; let - cfg = config.modules.system.server.storage.gitea; + cfg = config.modules.system.server.storage.forgejo; in { - options.modules.system.server.storage.gitea = { + options.modules.system.server.storage.forgejo = { enable = mkOption { type = types.bool; default = false; - description = "Enable Gitea service"; + description = "Enable Forgejo service"; }; httpPort = mkOption { type = types.port; default = 3000; - description = "HTTP port for Gitea"; + description = "HTTP port for Forgejo"; }; stateDir = mkOption { type = types.path; - default = "/var/lib/gitea"; - description = "Gitea state directory"; + default = "/var/lib/forgejo"; + description = "Forgejo state directory"; }; }; config = mkIf cfg.enable { - services.gitea = { + services.forgejo = { enable = true; stateDir = cfg.stateDir; From 2e63d6cd90b95a8044affae8da238850b42f9b6c Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:28:20 +0200 Subject: [PATCH 06/50] fix: correct description for vaultwarden custom settings option --- modules/system/common/server/password-manager/vaultwarden.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/common/server/password-manager/vaultwarden.nix b/modules/system/common/server/password-manager/vaultwarden.nix index 257e597..2dc3d07 100644 --- a/modules/system/common/server/password-manager/vaultwarden.nix +++ b/modules/system/common/server/password-manager/vaultwarden.nix @@ -18,7 +18,7 @@ in settings = lib.mkOption { type = lib.types.attrsOf lib.types.anything; default = {}; - description = "Custom settings for photoprism configuration"; + description = "Custom settings for vaultwarden configuration"; }; }; From 41b302f58f552b298067314708a154b833d30170 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:28:25 +0200 Subject: [PATCH 07/50] fix: add TODO comment for enabling matrix-hookshot integration --- modules/system/common/server/communication/matrix.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/system/common/server/communication/matrix.nix b/modules/system/common/server/communication/matrix.nix index a7f15fe..b9612fb 100644 --- a/modules/system/common/server/communication/matrix.nix +++ b/modules/system/common/server/communication/matrix.nix @@ -177,6 +177,7 @@ in }; # Integration for matrix + # TODO: Enable matrix-hookshot integration once required configuration and dependencies are in place. #services = { #matrix-hookshot.enable = true; #}; From 70ab54d91ea464b8ead733764f44c68e1f5416dc Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:28:32 +0200 Subject: [PATCH 08/50] fix: improve locale handling and enhance runtime PM settings backup in power scripts --- .../hardware/powersave/power-benchmark.sh | 34 +++++++++++-------- .../common/hardware/powersave/power-tuning.sh | 21 ++++++++---- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/modules/system/common/hardware/powersave/power-benchmark.sh b/modules/system/common/hardware/powersave/power-benchmark.sh index 5891f17..f409952 100644 --- a/modules/system/common/hardware/powersave/power-benchmark.sh +++ b/modules/system/common/hardware/powersave/power-benchmark.sh @@ -9,7 +9,7 @@ LOGFILE="/tmp/power-benchmark-$(date +%Y%m%d-%H%M%S).log" DURATION=${1:-60} # Default benchmark duration in seconds # Force US locale for consistent number formatting -export LC_NUMERIC="en_US.UTF-8" +export LC_ALL=C log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOGFILE" @@ -39,8 +39,10 @@ get_power_usage() { if [[ $power_uw -eq 0 ]]; then for bat_path in "${battery_paths[@]}"; do if [[ -f "${bat_path}/current_now" && -f "${bat_path}/voltage_now" ]]; then - local current_ua=$(cat "${bat_path}/current_now" 2>/dev/null || echo 0) - local voltage_uv=$(cat "${bat_path}/voltage_now" 2>/dev/null || echo 0) + local current_ua + current_ua=$(cat "${bat_path}/current_now" 2>/dev/null || echo 0) + local voltage_uv + voltage_uv=$(cat "${bat_path}/voltage_now" 2>/dev/null || echo 0) power_uw=$(( (current_ua * voltage_uv) / 1000000 )) [[ $power_uw -gt 0 ]] && break fi @@ -54,9 +56,9 @@ get_power_usage() { # Method 4: Try other AC power supply names if [[ $power_uw -eq 0 ]]; then - for ac_path in /sys/class/power_supply/ACAD/* /sys/class/power_supply/ADP*; do - if [[ -f "${ac_path}/power_now" ]]; then - power_uw=$(cat "${ac_path}/power_now" 2>/dev/null || echo 0) + for ac_dir in /sys/class/power_supply/ACAD /sys/class/power_supply/ADP*; do + if [[ -f "${ac_dir}/power_now" ]]; then + power_uw=$(cat "${ac_dir}/power_now" 2>/dev/null || echo 0) [[ $power_uw -gt 0 ]] && break fi done @@ -76,7 +78,8 @@ get_cpu_freq() { local count=0 for freq_file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq; do if [[ -f "$freq_file" ]]; then - local freq=$(cat "$freq_file" 2>/dev/null || echo 0) + local freq + freq=$(cat "$freq_file" 2>/dev/null || echo 0) total=$((total + freq)) count=$((count + 1)) fi @@ -108,9 +111,10 @@ benchmark_current_settings() { local samples=0 for ((i=0; i> "$SETTINGS_FILE" fi - # Backup runtime PM settings for some common devices + # Backup runtime PM settings (store as path|value pairs) for device in /sys/bus/pci/devices/*/power/control; do if [[ -f "$device" ]]; then - local device_path=$(dirname "$device") - local device_id=$(basename "$(dirname "$device_path")") - echo "runtime_pm_${device_id}=$(cat "$device")" >> "$SETTINGS_FILE" + local device_path + device_path=$(dirname "$device") + echo "runtime_pm:${device}|$(cat "$device")" >> "$SETTINGS_FILE" fi done } @@ -51,6 +51,15 @@ restore_settings() { set_cpu_governor "$cpu_governor" fi + # Restore runtime PM paths + while IFS= read -r line; do + [[ $line == runtime_pm:* ]] || continue + local payload=${line#runtime_pm:} + local path=${payload%%|*} + local val=${payload#*|} + echo "$val" | sudo tee "$path" >/dev/null || true + done < "$SETTINGS_FILE" + log "Settings restored" } @@ -59,7 +68,7 @@ set_cpu_governor() { local available_governors available_governors=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 2>/dev/null || echo "") - if [[ ! "$available_governors" =~ $governor ]]; then + if ! grep -Eq "(^|[[:space:]])${governor}([[:space:]]|$)" <<< "$available_governors"; then log "Error: Governor '$governor' not available. Available: $available_governors" return 1 fi @@ -67,7 +76,7 @@ set_cpu_governor() { log "Setting CPU governor to: $governor" for cpu_dir in /sys/devices/system/cpu/cpu*/cpufreq/; do if [[ -f "${cpu_dir}scaling_governor" ]]; then - echo "$governor" > "${cpu_dir}scaling_governor" + echo "$governor" | sudo tee "${cpu_dir}scaling_governor" >/dev/null fi done } From a03fa50102982d555fa01d18aa2666ad8d219404 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:28:50 +0200 Subject: [PATCH 09/50] feat: enhance Hydenix desktop configuration with new keybindings and scripts --- modules/hm/desktops/configHydenix.nix | 2 +- modules/hm/desktops/hydenix.nix | 11 +++++ modules/hm/desktops/mirage-waybar.jsonc | 64 +++++++++++++++++++++++++ modules/hm/desktops/nvidia-run.sh | 2 + modules/hm/desktops/random-theme.sh | 5 +- 5 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 modules/hm/desktops/mirage-waybar.jsonc create mode 100644 modules/hm/desktops/nvidia-run.sh diff --git a/modules/hm/desktops/configHydenix.nix b/modules/hm/desktops/configHydenix.nix index d3e9f04..0965de6 100644 --- a/modules/hm/desktops/configHydenix.nix +++ b/modules/hm/desktops/configHydenix.nix @@ -20,9 +20,9 @@ let null; startupCmds = [ - (lib.optionalString (randomCommand != null) randomCommand) "sleep 1" (lib.optionalString kandoEnabled "kando") + (lib.optionalString (randomCommand != null) randomCommand) ]; filteredCmds = lib.filter (x: x != "") startupCmds; execCmd = lib.concatStringsSep " && " filteredCmds; diff --git a/modules/hm/desktops/hydenix.nix b/modules/hm/desktops/hydenix.nix index d7c5d60..66f9af4 100644 --- a/modules/hm/desktops/hydenix.nix +++ b/modules/hm/desktops/hydenix.nix @@ -168,6 +168,10 @@ in bind = $mainMod+Ctrl, F, exec, rog-control-center bind = $mainMod Alt, G, exec, powermode-toggle.sh + bind = $mainMod Alt, R, exec, random-theme.sh -all + + bind = $mainMod, M, exec, spotify + ${configHydenix.exec-once} ''; force = true; @@ -177,10 +181,17 @@ in source = ./powermode-toggle.sh; executable = true; }; + ".local/bin/nvidia-run" = { + source = ./nvidia-run.sh; + executable = true; + }; ".local/bin/random-theme.sh" = mkIf cfg.randomOnBoot.theme { source = ./random-theme.sh; executable = true; }; + ".local/share/waybar/layouts/mirage.jsonc" = { + source = ./mirage-waybar.jsonc; + }; }; }; } \ No newline at end of file diff --git a/modules/hm/desktops/mirage-waybar.jsonc b/modules/hm/desktops/mirage-waybar.jsonc new file mode 100644 index 0000000..3eed4a9 --- /dev/null +++ b/modules/hm/desktops/mirage-waybar.jsonc @@ -0,0 +1,64 @@ +// --// waybar config generated by old the wbarconfgen script //-- // +{ + // sourced from header module // + "layer": "top", + "output": [ + "*" + ], + "height": 10, + "exclusive": true, + "passthrough": false, + "reload_style_on_change": true, + "include": [ + "$XDG_CONFIG_HOME/waybar/modules/*json*", + "$XDG_CONFIG_HOME/waybar/includes/includes.json" + ], + // positions generated based on config.ctl // + "modules-left": [ + "group/pill#left" + ], + "group/pill#left": { + "orientation": "inherit", + "modules": [ + "hyprland/workspaces", + "wlr/taskbar" + ] + }, + "modules-center": [ + "group/pill#center" + ], + "group/pill#center": { + "orientation": "inherit", + "modules": [ + "keyboard-state", + "custom/hyprsunset", + "idle_inhibitor", + "clock", + "custom/updates", + "custom/keybindhint", + "custom/gamemode", + "custom/weather" + ] + }, + "modules-right": [ + "group/pill#right" + ], + "group/pill#right": { + "orientation": "inherit", + "modules": [ + "privacy", + "backlight", + "tray", + "network", + "custom/bluetooth", + "pulseaudio", + "pulseaudio#microphone", + "battery", + "custom/gpuinfo", + "custom/sensorsinfo", + "custom/swaync", + "custom/dunst", + "custom/hyde-menu" + ] + } +} \ No newline at end of file diff --git a/modules/hm/desktops/nvidia-run.sh b/modules/hm/desktops/nvidia-run.sh new file mode 100644 index 0000000..70597ab --- /dev/null +++ b/modules/hm/desktops/nvidia-run.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +exec __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia "$@" \ No newline at end of file diff --git a/modules/hm/desktops/random-theme.sh b/modules/hm/desktops/random-theme.sh index c9f8aa1..721465d 100644 --- a/modules/hm/desktops/random-theme.sh +++ b/modules/hm/desktops/random-theme.sh @@ -63,10 +63,13 @@ fi # Apply theme if set if [ -n "$THEME_TO_APPLY" ]; then - echo "Applying theme: $THEME_TO_APPLY" + notify-send "Applying theme: $THEME_TO_APPLY" "$HOME/.local/lib/hyde/theme.switch.sh" -s "$THEME_TO_APPLY" fi +# wait 3 seconds to ensure theme is applied before changing wallpaper +sleep 3 + # Apply random wallpaper if requested if [ "$APPLY_RANDOM_WALLPAPER" = true ]; then echo "Applying random wallpaper..." From 7f1a00f97b9d949974da948fc316ea5b7c5e9783 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:28:56 +0200 Subject: [PATCH 10/50] fix: refactor Thunderbird configuration to use mkIf for conditional enabling --- modules/hm/common/communication/mail.nix | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/modules/hm/common/communication/mail.nix b/modules/hm/common/communication/mail.nix index d83aa54..eaca57c 100644 --- a/modules/hm/common/communication/mail.nix +++ b/modules/hm/common/communication/mail.nix @@ -26,15 +26,13 @@ in config = { home.packages = packagesToInstall; - programs.thunderbird = { - enable = lib.elem "thunderbird" serviceList; - profiles = { - default = { - isDefault = true; - settings = { - "mail.spellcheck.inline" = true; - "browser.display.use_system_colors" = true; - }; + programs.thunderbird = lib.mkIf (lib.elem "thunderbird" serviceList) { + enable = true; + profiles.default = { + isDefault = lib.mkDefault true; + settings = { + "mail.spellcheck.inline" = true; + "browser.display.use_system_colors" = true; }; }; }; From 85e7ac546fd730066bb59487ce211d4d2f88b6df Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:29:02 +0200 Subject: [PATCH 11/50] fix: ensure unique IDE packages and improve description for IDE installation options --- modules/hm/common/dev/environments/editor.nix | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/modules/hm/common/dev/environments/editor.nix b/modules/hm/common/dev/environments/editor.nix index ca39d9e..417506b 100644 --- a/modules/hm/common/dev/environments/editor.nix +++ b/modules/hm/common/dev/environments/editor.nix @@ -24,13 +24,13 @@ let allIDEs = jetbrainsIDEs // otherIDEs; # Get packages for enabled IDEs (excluding vs-code which is handled separately) - idePackages = lib.concatMap (ide: + idePackages = lib.unique (lib.concatMap (ide: let pkg = allIDEs.${ide}; in if pkg == null then [] else if lib.isList pkg then pkg else [ pkg ] - ) cfg.ides; + ) cfg.ides); # Get just the JetBrains packages for remote support jetbrainsPackages = lib.concatMap (ide: @@ -45,7 +45,7 @@ in type = lib.types.listOf (lib.types.enum (lib.attrNames allIDEs)); default = []; example = [ "webstorm" "android-studio" "datagrip" "vs-code" ]; - description = "List of IDEs to install"; + description = "List of IDEs to install. Note: 'vs-code' is enabled via programs.vscode; others are added to home.packages."; }; }; @@ -58,10 +58,7 @@ in ides = jetbrainsPackages; }; - vscode = { - enable = lib.elem "vs-code" cfg.ides; - package = pkgs.vscode; - }; + vscode.enable = lib.elem "vs-code" cfg.ides; }; }; } \ No newline at end of file From a11acd14b1e66bf6ebb61f0897974050fd083b40 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:29:07 +0200 Subject: [PATCH 12/50] fix: add example values to documentation option for editors --- modules/hm/common/documentation/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/hm/common/documentation/default.nix b/modules/hm/common/documentation/default.nix index 00d2b2c..00ff1d1 100644 --- a/modules/hm/common/documentation/default.nix +++ b/modules/hm/common/documentation/default.nix @@ -19,6 +19,7 @@ in editors = lib.mkOption { type = lib.types.listOf (lib.types.enum (lib.attrNames editorsToPackage)); default = []; + example = [ "onlyoffice" "okular" ]; description = "List of document editors to install"; }; }; From 8b6a281dc1f8dec90539f10e8368a42e7b834104 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:29:11 +0200 Subject: [PATCH 13/50] feat: add GeForce Now client to available games --- modules/hm/common/games/games.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/hm/common/games/games.nix b/modules/hm/common/games/games.nix index e42b507..f633f43 100644 --- a/modules/hm/common/games/games.nix +++ b/modules/hm/common/games/games.nix @@ -25,6 +25,10 @@ let packages = [ inputs.nix-gaming.packages.${pkgs.system}.star-citizen pkgs.lug-helper ]; description = "Star Citizen Launcher"; }; + geforce-now = { + packages = with pkgs; [ gfn-electron]; + description = "NVIDIA GeForce Now Client"; + }; }; gameNames = builtins.attrNames availableGames; From 7a237781db1dfef0a16ffdef69e38c37da1ad3d0 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:29:18 +0200 Subject: [PATCH 14/50] feat: enhance MangoHud configuration with new options for session-wide enablement, FPS limit, appearance, and hotkeys --- modules/hm/common/games/mangohud.nix | 260 ++++++++++++++++++--------- 1 file changed, 175 insertions(+), 85 deletions(-) diff --git a/modules/hm/common/games/mangohud.nix b/modules/hm/common/games/mangohud.nix index e0fe939..3103ede 100644 --- a/modules/hm/common/games/mangohud.nix +++ b/modules/hm/common/games/mangohud.nix @@ -4,22 +4,93 @@ let cfg = config.modules.hm.games.mangohud; in { - options.modules.hm.games.mangohud = { - enable = lib.mkEnableOption "Enable MangoHud, a Vulkan and OpenGL overlay layer for monitoring performance"; - cpu_text = lib.mkOption { - type = lib.types.str; - default = ""; - description = "Custom CPU text to display (leave empty for auto-detection)"; + options.modules.hm.games.mangohud = { + enable = lib.mkEnableOption "MangoHud - Vulkan/OpenGL overlay for performance monitoring and FPS counter"; + + enableSessionWide = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Enable MangoHud globally for all applications. When disabled, + MangoHud must be launched per-application using the mangohud + wrapper command (e.g., `mangohud game`). + ''; }; - gpu_text = lib.mkOption { - type = lib.types.str; - default = ""; - description = "Custom GPU text to display (leave empty for auto-detection)"; + + fpsLimit = lib.mkOption { + type = lib.types.ints.positive; + default = 144; + example = 120; + description = "Global FPS limit applied when FPS limiting is enabled via hotkey"; }; - enableSessionWide = lib.mkOption { - type = lib.types.bool; - default = false; - description = "Enable mangohud session-wide"; + + position = lib.mkOption { + type = lib.types.enum [ "top-left" "top-right" "bottom-left" "bottom-right" "top-center" "bottom-center" ]; + default = "top-left"; + description = "Screen position where the performance overlay will be displayed"; + }; + + # CPU monitoring category + cpu.text = lib.mkOption { + type = lib.types.nullOr (lib.types.listOf lib.types.str); + default = null; + example = [ "AMD Ryzen 7 5800X" "AMD Rembrandt" ]; + description = '' + Custom CPU identifier texts to display in the overlay, one per CPU. + Leave as null for automatic detection based on your CPU models. + ''; + }; + + # GPU monitoring category + gpu.text = lib.mkOption { + type = lib.types.nullOr (lib.types.listOf lib.types.str); + default = null; + example = [ "NVIDIA RTX 4070" "AMD Radeon Integrated" ]; + description = '' + Custom GPU identifier texts to display in the overlay, one per GPU. + Leave as null for automatic detection based on your GPU models. + ''; + }; + + # Appearance category + appearance = { + backgroundAlpha = lib.mkOption { + type = lib.types.float; + default = 0.5; + example = 0.7; + description = "Transparency level of the overlay background (0.0 = fully transparent, 1.0 = fully opaque)"; + }; + + fontSize = lib.mkOption { + type = lib.types.ints.positive; + default = 14; + example = 16; + description = "Font size in pixels for all overlay text elements"; + }; + + textColor = lib.mkOption { + type = lib.types.str; + default = "ffffff"; + example = "00ff00"; + description = "Hexadecimal color code for text (without # prefix)"; + }; + }; + + # Hotkeys category + hotkeys = { + toggleHud = lib.mkOption { + type = lib.types.str; + default = "Shift_L+F1"; + example = "F3"; + description = "Key combination to toggle the overlay visibility"; + }; + + toggleFpsLimit = lib.mkOption { + type = lib.types.str; + default = "Shift_L+F2"; + example = "F4"; + description = "Key combination to toggle FPS limiting"; + }; }; }; @@ -32,76 +103,95 @@ in enableSessionWide = cfg.enableSessionWide; # Configure general mangohud settings - settings = { - fps_limit = 144; - toggle_fps_limit = "Shift_L+F2"; - legacy_layout = false; - - gpu_stats = true; - gpu_temp = true; - gpu_core_clock = true; - gpu_mem_clock = true; - gpu_power = true; - gpu_load_change = true; - gpu_load_value = [ 50 90 ]; - gpu_load_color = [ "FFFFFF" "FFAA7F" "CC0000" ]; - - cpu_stats = true; - cpu_temp = true; - core_load = true; - cpu_power = true; - cpu_mhz = true; - cpu_load_change = true; - core_load_change = true; - cpu_load_value = [ 50 90 ]; - cpu_load_color = [ "FFFFFF" "FFAA7F" "CC0000" ]; - cpu_color = "2e97cb"; - cpu_text = if cfg.cpu_text != "" then cfg.cpu_text else null; - - io_color = "a491d3"; - swap = true; - vram = true; - vram_color = "ad64c1"; - ram = true; - ram_color = "c26693"; - - fps = true; - engine_version = true; - engine_color = "eb5b5b"; - - gpu_name = true; - gpu_text = if cfg.gpu_text != "" then cfg.gpu_text else ""; - gpu_color = "2e9762"; - - vulkan_driver = true; - wine = true; - wine_color = "eb5b5b"; - - frame_timing = 1; - frametime_color = "00ff00"; - throttling_status = true; - show_fps_limit = true; - gamemode = true; - - time = true; - table_columns = 3; - - background_alpha = 0.5; - background_color = "020202"; - position = "top-left"; - text_color = "ffffff"; - round_corners = 10; - - font_size = 14; - toggle_hud = "Shift_L+F1"; - toggle_logging = "Shift_L+F4"; - upload_log = "Shift_L+F5"; - reload_cfg = "Super_L+Alt_L+M"; - - output_folder = "$HOME/.mangologs"; - media_player_name = "spotify"; - media_player_color = "ffffff"; - }; + settings = let + # Base settings without cpu_text and gpu_text + baseSettings = { + no_display = false; + + # Performance monitoring + fps = true; + fps_limit = cfg.fpsLimit; + show_fps_limit = true; + frame_timing = 1; + frametime_color = "00ff00"; + throttling_status = true; + gamemode = true; + + # CPU monitoring + cpu_stats = true; + cpu_temp = true; + cpu_power = true; + cpu_mhz = true; + core_load = true; + cpu_load_change = true; + core_load_change = true; + cpu_load_value = [ 50 90 ]; + cpu_load_color = [ "FFFFFF" "FFAA7F" "CC0000" ]; + cpu_color = "2e97cb"; + + # GPU monitoring + gpu_stats = true; + gpu_temp = true; + gpu_core_clock = true; + gpu_mem_clock = true; + gpu_power = true; + gpu_load_change = true; + gpu_load_value = [ 50 90 ]; + gpu_load_color = [ "FFFFFF" "FFAA7F" "CC0000" ]; + gpu_name = true; + gpu_color = "2e9762"; + show_all_gpus = true; + + # Memory monitoring + ram = true; + ram_color = "c26693"; + vram = true; + vram_color = "ad64c1"; + swap = true; + io_stats = true; + io_color = "a491d3"; + + # System information + engine_version = true; + engine_color = "eb5b5b"; + vulkan_driver = true; + wine = true; + wine_color = "eb5b5b"; + time = true; + + # Overlay appearance + legacy_layout = false; + background_alpha = cfg.appearance.backgroundAlpha; + background_color = "020202"; + position = cfg.position; + text_color = cfg.appearance.textColor; + round_corners = 10; + font_size = cfg.appearance.fontSize; + table_columns = 3; + + # Hotkeys + toggle_hud = cfg.hotkeys.toggleHud; + toggle_fps_limit = cfg.hotkeys.toggleFpsLimit; + toggle_logging = "Shift_L+F4"; + upload_log = "Shift_L+F5"; + reload_cfg = "Super_L+Alt_L+R"; + + # Logging + output_folder = "$HOME/.mangologs"; + media_player_name = "spotify"; + media_player_color = "ffffff"; + }; + + # Helper function to convert list to MangoHud's comma-separated format + listToCsv = list: lib.concatStringsSep "," list; + + # Conditionally add cpu_text and gpu_text if they're not null + optionalSettings = lib.optionalAttrs (cfg.cpu.text != null) { + cpu_text = listToCsv cfg.cpu.text; + } // lib.optionalAttrs (cfg.gpu.text != null) { + gpu_text = listToCsv cfg.gpu.text; + }; + in baseSettings // optionalSettings; # Configure mangohud settings per application settingsPerApplication = { @@ -112,4 +202,4 @@ in }; }; }; -} +} \ No newline at end of file From 7428752c21a5dee459c67a39d0a338a4aab436b8 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:29:23 +0200 Subject: [PATCH 15/50] fix: refactor shell tools configuration to use default options for better clarity and maintainability --- modules/hm/common/shell/tools.nix | 34 +++++++++++++++++++------------ 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/modules/hm/common/shell/tools.nix b/modules/hm/common/shell/tools.nix index 1633283..0fed9f8 100644 --- a/modules/hm/common/shell/tools.nix +++ b/modules/hm/common/shell/tools.nix @@ -6,42 +6,50 @@ in { options.modules.hm.shell.tools = { enable = lib.mkEnableOption "Enable common shell tools"; + shellAliases = lib.mkOption { + type = lib.types.attrsOf lib.types.str; + default = {}; + description = "Shell aliases to set up"; + example = { ll = "ls -la"; gs = "git status"; }; + }; }; config = lib.mkIf cfg.enable { # Install shell tools via home-manager - home.packages = (with pkgs; [ - tree - ]); + home = { + packages = (with pkgs; [ + tree + ]); + shellAliases = cfg.shellAliases; + }; programs = { - ranger.enable = true; + ranger.enable = lib.mkDefault true; navi = { # Enable navi - enable = true; - enableZshIntegration = true; + enable = lib.mkDefault true; + enableZshIntegration = lib.mkDefault true; }; fzf = { - enable = true; - enableZshIntegration = true; - tmux.enableShellIntegration = true; + enable = lib.mkDefault true; + enableZshIntegration = lib.mkDefault true; }; btop = { # Enable btop - enable = true; + enable = lib.mkDefault true; # Configuration for btop settings = { # Use default terminal background - theme_background = false; + theme_background = lib.mkDefault false; # Use vim keys - vim_keys = true; + vim_keys = lib.mkDefault true; # Organise processes as a tree by default - proc_tree = true; + proc_tree = lib.mkDefault true; }; }; }; From a770d6d65c675314d4c34c4dee93f0dd4f09f9fc Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:29:29 +0200 Subject: [PATCH 16/50] fix: sanitize theme name in fetchOfficialTheme function for improved safety and error handling --- modules/hm/common/utilities/app-launcher.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/hm/common/utilities/app-launcher.nix b/modules/hm/common/utilities/app-launcher.nix index 5e07ee1..ac239fd 100644 --- a/modules/hm/common/utilities/app-launcher.nix +++ b/modules/hm/common/utilities/app-launcher.nix @@ -51,6 +51,7 @@ let fetchOfficialTheme = name: let theme = officialThemes.${name}; + sanitizedName = lib.strings.sanitizeDerivationName name; src = pkgs.fetchzip { url = "https://github.com/${themeRepo.owner}/${themeRepo.repo}/releases/download/${themeRepo.tag}/${theme.file}"; sha256 = theme.sha256; @@ -58,8 +59,9 @@ let }; themeDir = "${src}/${lib.removeSuffix ".zip" theme.file}"; in - pkgs.runCommand "kando-theme-${name}" {} '' - mkdir -p $out + pkgs.runCommand "kando-theme-${sanitizedName}" {} '' + mkdir -p "$out" + set -eu if [ ! -d "${themeDir}" ]; then echo "Error: Theme directory not found: ${themeDir}" @@ -68,11 +70,11 @@ let exit 1 fi - cp -r "${themeDir}"/* $out/ + cp -r "${themeDir}"/* "$out/" if [ ! -f "$out/theme.json5" ]; then echo "Error: Required file theme.json5 missing in theme" - ls -la $out + ls -la "$out" exit 1 fi ''; From 7a43d2ee7495ebd3263abb8866eb36878e1abae1 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:29:35 +0200 Subject: [PATCH 17/50] fix: update preset file creation to respect cfg.presets and add assertions for configuration validation --- modules/hm/common/utilities/safety/ianny.nix | 23 ++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/modules/hm/common/utilities/safety/ianny.nix b/modules/hm/common/utilities/safety/ianny.nix index 9273cd5..90fd1d5 100644 --- a/modules/hm/common/utilities/safety/ianny.nix +++ b/modules/hm/common/utilities/safety/ianny.nix @@ -32,12 +32,13 @@ let minimum_update_delay = ${toString settings.notification.minimumUpdateDelay} ''; - # Create preset files + # Create preset files (respect cfg.presets) + selectedPresets = lib.filterAttrs (name: _: lib.elem name cfg.presets) presets; presetFiles = lib.mapAttrs' (name: preset: lib.nameValuePair ".config/io.github.zefr0x.ianny/preset/${name}.toml" { text = generateToml name preset; } - ) presets; + ) selectedPresets; # Custom configuration file content customConfig = generateToml "custom" cfg.settings; @@ -205,6 +206,21 @@ in }; config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = cfg.mode != "preset" || cfg.presets != []; + message = "ianny: when mode = \"preset\", at least one preset must be listed in ianny.presets."; + } + { + assertion = cfg.defaultPreset == null || lib.elem cfg.defaultPreset cfg.presets; + message = "ianny: defaultPreset must be one of ianny.presets (or null)."; + } + { + assertion = lib.all (p: lib.hasAttr p presets) cfg.presets; + message = "ianny: every preset in ianny.presets must exist in config.json."; + } + ]; + home.packages = [ pkgs.ianny ]; @@ -218,8 +234,6 @@ in ".local/bin/ianny-preset-selector" = { text = selectorScriptContent; executable = true; - force = true; - mutable = true; }; } ]; @@ -238,6 +252,7 @@ in Description = "ianny - Safety net for Hydenix desktop"; After = [ "graphical-session.target" ]; PartOf = [ "graphical-session.target" ]; + ConditionPathExists = "%h/.config/io.github.zefr0x.ianny/config.toml"; }; Service = { ExecStart = "${pkgs.ianny}/bin/ianny"; From 195166a68a03c8e513bdaa769a6e1f021d934347 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:29:44 +0200 Subject: [PATCH 18/50] fix: enhance power saving configuration options and descriptions for clarity and usability --- .../common/hardware/powersave/default.nix | 93 +++++++++++++++---- 1 file changed, 76 insertions(+), 17 deletions(-) diff --git a/modules/system/common/hardware/powersave/default.nix b/modules/system/common/hardware/powersave/default.nix index 4e2f698..c5a9472 100644 --- a/modules/system/common/hardware/powersave/default.nix +++ b/modules/system/common/hardware/powersave/default.nix @@ -2,7 +2,6 @@ let cfg = config.modules.system.hardware.powersave; - kernelVersion = config.boot.kernelPackages.kernel.version; # Import scripts as derivations power-benchmark = pkgs.writeShellScript "power-benchmark" (builtins.readFile ./power-benchmark.sh); @@ -40,32 +39,57 @@ let ''; in { options.modules.system.hardware.powersave = { - enable = lib.mkEnableOption "Enable power saving configuration"; + enable = lib.mkEnableOption "Enable comprehensive power saving configuration for laptops"; architecture = lib.mkOption { type = lib.types.enum [ "intel" "amd" ]; default = "amd"; - description = "Select the architecture for power saving optimizations"; + description = '' + Select the CPU architecture for power saving optimizations. + + This determines which specific power management features and kernel parameters + are applied for your processor type. + ''; + example = "intel"; }; enableBenchmarkTools = lib.mkOption { type = lib.types.bool; default = true; - description = "Install power benchmarking and tuning tools"; + description = '' + Install power benchmarking and tuning tools including: + - power-tools: Comprehensive power management utility + - power-benchmark: Power consumption measurement script + - power-tuning: System power tuning script + ''; }; batteryHealth = { - enable = lib.mkEnableOption "Enable battery health preservation features"; + enable = lib.mkEnableOption "Enable battery health preservation features including charge thresholds"; + chargeThresholds = { start = lib.mkOption { type = lib.types.int; - default = cfg.batteryHealth.chargeThresholds.stop - 5; - description = "Start charging when battery falls below this percentage"; + default = lib.max 0 (cfg.batteryHealth.chargeThresholds.stop - 5); + description = '' + Start charging when battery level falls below this percentage. + + Recommended to keep 5-10% below the stop threshold for optimal + battery health preservation. + ''; + example = 75; }; + stop = lib.mkOption { type = lib.types.int; default = 80; - description = "Stop charging when battery reaches this percentage"; + description = '' + Stop charging when battery reaches this percentage. + + Keeping maximum charge level at 80-85% significantly extends + battery lifespan. + ''; + example = 80; }; }; }; @@ -73,21 +97,40 @@ in { forcePerfOnAC = lib.mkOption { type = lib.types.bool; default = true; - description = "Force performance mode when on AC power (overrides power profile daemon)"; + description = '' + Force performance mode when connected to AC power. + + This overrides power profile daemon settings to ensure maximum + performance when plugged in, while maintaining power savings + on battery. + ''; }; disk = lib.mkOption { type = lib.types.listOf lib.types.str; default = []; - description = "List of disks for power management"; + description = '' + List of disk devices for power management. + + Example: ["sda" "nvme0n1"] + These disks will have advanced power management features applied + including APM levels and spindown timeouts. + ''; + example = [ "nvme0n1" ]; }; nvidiaPowerManagement = { - enable = lib.mkEnableOption "Enable NVIDIA power management features"; + enable = lib.mkEnableOption "Enable NVIDIA GPU power management features"; + dynamicBoost = lib.mkOption { type = lib.types.bool; default = true; - description = "Enable dynamic boost for NVIDIA GPUs"; + description = '' + Enable NVIDIA Dynamic Boost technology. + + Dynamically balances power between CPU, GPU, and GPU memory + for optimal performance in gaming and creative workloads. + ''; }; }; @@ -96,7 +139,10 @@ in { default = true; description = '' Enable basic power profile management through kernel parameters. + Note: For advanced control (fan curves, lighting, etc.) use asusctl instead. + This provides system-level power management while asusctl offers + hardware-specific features. ''; }; @@ -104,18 +150,32 @@ in { enable = lib.mkOption { type = lib.types.bool; default = false; - description = "Enable ASUS hardware support for power management."; + description = '' + Enable ASUS-specific hardware support for power management. + + This enables asusctl and supergfxctl services for comprehensive + control over ASUS laptop features including: + - GPU mode switching (Integrated, Hybrid, Dedicated) + - Fan curve control + - Keyboard lighting + - Performance profiles + ''; }; armouryCrate = lib.mkOption { type = lib.types.bool; default = cfg.asus.enable; - description = "Enable Armoury Crate for ASUS hardware management."; + description = '' + Enable Armoury Crate functionality for ASUS hardware management. + + Provides GUI-like control over system performance profiles and + hardware features through the asusctl service. + ''; }; }; override = { - thermald = lib.mkEnableOption "Overide thermald params"; + thermald = lib.mkEnableOption "Override default thermald parameters with custom thermal management settings"; }; }; @@ -135,7 +195,6 @@ in { # Enable power management powerManagement = { enable = true; - cpuFreqGovernor = lib.mkDefault "powersave"; powertop.enable = true; }; @@ -218,7 +277,7 @@ in { turbo = "never"; }; charger = { - governor = if cfg.architecture == "amd" then "ondemand" else "performance"; + governor = if cfg.architecture == "amd" then "schedutil" else "performance"; turbo = "auto"; }; }; From b32dfaa36c1c96ab5ce6e15cc5b0eae04e2e7922 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:30:04 +0200 Subject: [PATCH 19/50] fix: update MangoHud configuration to use array format for CPU and GPU text descriptions --- hosts/oak/default.nix | 10 +--------- modules/hm/hosts/oak/default.nix | 3 ++- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/hosts/oak/default.nix b/hosts/oak/default.nix index 0e77887..d6f872d 100644 --- a/hosts/oak/default.nix +++ b/hosts/oak/default.nix @@ -10,9 +10,6 @@ let config = { android_sdk.accept_license = true; allowUnfree = true; - permittedInsecurePackages = [ - "qtwebengine-5.15.19" - ]; }; overlays = [ inputs.hydenix.lib.overlays @@ -22,9 +19,6 @@ let config = { android_sdk.accept_license = true; allowUnfree = true; - permittedInsecurePackages = [ - "qtwebengine-5.15.19" - ]; }; }; }) @@ -100,9 +94,7 @@ in shell = pkgs.zsh; }; - hardware.nvidia = { - prime.amdgpuBusId = lib.mkForce "PCI:36:0:0"; - }; + hardware.nvidia.prime.amdgpuBusId = lib.mkForce "PCI:36:0:0"; #boot.kernel.sysctl."net.ipv4.ip_unprivileged_port_start" = 0; } diff --git a/modules/hm/hosts/oak/default.nix b/modules/hm/hosts/oak/default.nix index f1b4927..f2c2acf 100644 --- a/modules/hm/hosts/oak/default.nix +++ b/modules/hm/hosts/oak/default.nix @@ -18,7 +18,8 @@ games = { mangohud = { enable = true; - cpu_text = "Ryzen 7 7435HS"; + cpu.text = ["Ryzen 7 7435HS"]; + gpu.text = [ "AMD Rembrandt" "RTX 4060 Laptop" ]; }; enabledGames = ["minecraft"]; }; From 267e8efa2495fcb4191d6946e36afca447d84570 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:30:08 +0200 Subject: [PATCH 20/50] fix: update storage module reference from gitea to forgejo --- modules/system/common/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/common/default.nix b/modules/system/common/default.nix index dbd63ac..be8ce5a 100644 --- a/modules/system/common/default.nix +++ b/modules/system/common/default.nix @@ -31,7 +31,7 @@ ./server/media/paperless.nix ./server/media/photoprism.nix ./server/password-manager/vaultwarden.nix - ./server/storage/gitea.nix + ./server/storage/forgejo.nix ./server/storage/syncthing.nix ./server/meal.nix ./server/print.nix From 0604145d8aae600620ac57e4ec09f538df98665c Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 10 Sep 2025 20:10:02 +0200 Subject: [PATCH 21/50] fix: refactor Scalar application configuration by moving to api.nix and removing scalar.nix --- modules/hm/common/default.nix | 2 +- modules/hm/common/utilities/api.nix | 19 +++++++++++++++++++ modules/hm/common/utilities/scalar.nix | 17 ----------------- modules/hm/hosts/oak/default.nix | 5 ++++- 4 files changed, 24 insertions(+), 19 deletions(-) create mode 100644 modules/hm/common/utilities/api.nix delete mode 100644 modules/hm/common/utilities/scalar.nix diff --git a/modules/hm/common/default.nix b/modules/hm/common/default.nix index 7419427..39dcf29 100644 --- a/modules/hm/common/default.nix +++ b/modules/hm/common/default.nix @@ -48,10 +48,10 @@ in ./shell/tools.nix ./utilities/safety/ianny.nix + ./utilities/api.nix ./utilities/app-launcher.nix ./utilities/filezilla.nix ./utilities/kde-connect.nix - ./utilities/scalar.nix ./utilities/stacer.nix inputs.nix-podman-stacks.homeModules.nps diff --git a/modules/hm/common/utilities/api.nix b/modules/hm/common/utilities/api.nix new file mode 100644 index 0000000..8037723 --- /dev/null +++ b/modules/hm/common/utilities/api.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.modules.hm.utilities.api; + scalarApp = (import ../../../wrapper/scalar.nix { inherit pkgs lib config; }).scalarApp; +in { + options.modules.hm.utilities.api = { + scalar.enable = mkEnableOption "Scalar desktop application"; + }; + + config = { + home.packages = [ + (lib.mkIf cfg.scalar.enable scalarApp) + ]; + xdg.enable = true; + }; +} \ No newline at end of file diff --git a/modules/hm/common/utilities/scalar.nix b/modules/hm/common/utilities/scalar.nix deleted file mode 100644 index 8236104..0000000 --- a/modules/hm/common/utilities/scalar.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let - cfg = config.modules.hm.utilities.scalar; - scalarApp = (import ../../../wrapper/scalar.nix { inherit pkgs lib config; }).scalarApp; -in { - options.modules.hm.utilities.scalar = { - enable = mkEnableOption "Scalar desktop application"; - }; - - config = mkIf cfg.enable { - home.packages = [ scalarApp ]; - xdg.enable = true; - }; -} \ No newline at end of file diff --git a/modules/hm/hosts/oak/default.nix b/modules/hm/hosts/oak/default.nix index f2c2acf..e72f384 100644 --- a/modules/hm/hosts/oak/default.nix +++ b/modules/hm/hosts/oak/default.nix @@ -72,7 +72,10 @@ matrix.clients = ["element"]; }; utilities = { - scalar.enable = true; + api = { + scalar.enable = true; + autoswagger.enable = true; + }; safety.ianny = { enable = true; presets = ["dev" "game"]; From bf95308b19b14bec68fdba71fad67cbdfa5d0866 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 10 Sep 2025 20:10:25 +0200 Subject: [PATCH 22/50] fix: enhance documentation for gaming clients, CUPS options, Ollama service, and Portmaster configuration --- modules/system/common/games.nix | 114 +++++++++++++++-- modules/system/common/server/print.nix | 34 ++++- .../system/common/virtualisation/default.nix | 119 ++++++++++++++++-- .../system/common/virtualisation/ollama.nix | 84 ++++++++++++- modules/wrapper/safing/module.nix | 50 +++++++- 5 files changed, 370 insertions(+), 31 deletions(-) diff --git a/modules/system/common/games.nix b/modules/system/common/games.nix index 50cd343..0d3ffab 100755 --- a/modules/system/common/games.nix +++ b/modules/system/common/games.nix @@ -20,46 +20,142 @@ in { type = lib.types.listOf (lib.types.enum (lib.attrNames clientToPackage)); default = []; description = '' - List of gaming clients to enable. Supported options are "steam", "lutris", - "heroic", and "nexus". This allows you to specify which gaming clients should be - configured in your NixOS setup. + List of gaming clients to install and configure. + + Supported options: + - "steam": Valve's Steam gaming platform with Proton compatibility + - "lutris": Open gaming platform that manages games from different sources + - "heroic": Alternative game launcher for Epic Games Store and GOG + - "nexus": Nexus Mods application for managing game modifications + + Note: Enabling "steam" automatically configures additional components + like gamescope and Proton compatibility tools. ''; }; steam.compatToolsPath = lib.mkOption { type = lib.types.path; default = "${builtins.getEnv "HOME"}/.steam/root/compatibilitytools.d"; - description = "Path for Steam compatibility tools"; + example = "/home/user/.local/share/Steam/compatibilitytools.d"; + description = '' + Path where Steam compatibility tools (like Proton-GE) should be installed. + + This directory is used by Steam to find custom Proton versions and + other compatibility tools. The path is exposed via the + STEAM_EXTRA_COMPAT_TOOLS_PATHS environment variable. + + Defaults to the standard Steam installation location. + ''; }; gamemode = { - enable = lib.mkEnableOption "Enable GameMode support"; + enable = lib.mkEnableOption '' + Feral Interactive's GameMode optimization daemon + + GameMode is a tool that optimizes Linux system performance on demand. + When activated, it applies various optimizations like: + - CPU governor tuning + - Process priority (nice level) adjustment + - I/O priority tuning + - Kernel scheduler adjustment + - GPU performance mode setting (for supported GPUs) + + Games and applications can request GameMode through the libgamemode library. + ''; + enableRenice = lib.mkOption { type = lib.types.bool; default = true; - description = "Enable renice support in GameMode"; + description = '' + Enable process priority (renice) optimization in GameMode. + + When enabled, GameMode will adjust the nice level of the game process + and its children to give them higher scheduling priority. + + This generally improves game performance but may affect system + responsiveness for other applications while gaming. + ''; }; + notificationCommands = lib.mkOption { type = lib.types.attrsOf lib.types.str; default = { start = "notify-send 'GameMode started'"; end = "notify-send 'GameMode ended'"; }; - description = "Custom notification commands for GameMode start and end events"; + example = lib.literalExpression '' + { + start = "notify-send -u critical 'GameMode' 'Optimizations activated'"; + end = "notify-send -u normal 'GameMode' 'Optimizations deactivated'"; + } + ''; + description = '' + Custom shell commands to execute when GameMode starts and stops. + + These commands are executed as the user who launched the game. + The default configuration uses notify-send to display desktop + notifications. + + You can customize these to: + - Change notification appearance + - Log GameMode events + - Trigger other automation scripts + - Control RGB lighting or other peripherals + ''; }; + generalSettings = lib.mkOption { type = lib.types.attrsOf (lib.types.oneOf [ lib.types.int lib.types.bool lib.types.str ]); default = { inhibit_screensaver = 1; }; - description = "General GameMode settings"; + example = lib.literalExpression '' + { + inhibit_screensaver = 1; + desiredgov = "performance"; + softrealtime = "auto"; + } + ''; + description = '' + General GameMode configuration settings. + + Common settings include: + - inhibit_screensaver: Prevent screen blanking during gameplay (0/1) + - desiredgov: CPU governor to use ("performance", "powersave", etc.) + - softrealtime: Enable soft real-time scheduling ("auto", "on", "off") + - ioprio: I/O priority for game processes + - renice: Nice level adjustment value + + See the GameMode documentation for a complete list of available options. + ''; }; + gpuSettings = lib.mkOption { type = lib.types.attrsOf lib.types.str; default = { apply_gpu_optimisations = "accept-responsibility"; }; - description = "GPU-related GameMode settings"; + example = lib.literalExpression '' + { + apply_gpu_optimisations = "accept-responsibility"; + gpu_device = "0"; + amd_performance_level = "high"; + } + ''; + description = '' + GPU-specific optimization settings for GameMode. + + These settings control GPU performance states and optimizations. + The "accept-responsibility" value is required to acknowledge that + GPU overclocking/optimizations may potentially damage hardware. + + GPU vendor-specific options: + - AMD: amd_performance_level, amd_power_profile + - NVIDIA: nvidia_clock_offset, nvidia_mem_offset + - Intel: intel_max_perf, intel_min_perf + + Use with caution and ensure proper cooling for your GPU. + ''; }; }; }; diff --git a/modules/system/common/server/print.nix b/modules/system/common/server/print.nix index e50abab..ecd2892 100644 --- a/modules/system/common/server/print.nix +++ b/modules/system/common/server/print.nix @@ -12,6 +12,14 @@ in { drivers = mkOption { type = types.listOf types.package; default = [ pkgs.cnijfilter2 ]; + example = literalExpression '' + with pkgs; [ + cnijfilter2 + gutenprint + hplip + samsung-unified-linux-driver + ] + ''; description = '' List of printer drivers to use. Defaults to [ pkgs.cnijfilter2 ], which is an unfree package for Canon printers. @@ -20,21 +28,32 @@ in { listenAddresses = mkOption { type = types.listOf types.str; default = [ "localhost:631" ]; - description = '' - List of addresses to listen on for incoming print jobs. Defaults to - [ "localhost:631" ]. + example = [ "*:631" "192.168.1.100:631" ]; + description = mdDoc '' + Network addresses and ports where CUPS should listen for connections. + + Format: [ "address:port" ] or [ "port" ] for all interfaces + Examples: + - ["localhost:631"]: Listen only on localhost (default, most secure) + - ["*:631"]: Listen on all network interfaces + - ["192.168.1.100:631"]: Listen on specific IP address + - ["631"]: Listen on all interfaces (legacy format) + + For network printing, you may want to use ["*:631"] to allow + connections from other computers on your network. ''; }; allowFrom = mkOption { type = types.listOf types.str; default = [ "localhost" ]; + example = [ "localhost" "192.168.1.0/24" "*.example.com" ]; description = '' List of addresses allowed to send print jobs. Defaults to [ "localhost" ]. You can add more addresses or networks as needed. ''; }; logLevel = mkOption { - type = types.str; + type = types.enum [ "debug" "info" "warn" "error" "fatal" "none" ]; default = "info"; description = '' Log level for CUPS. Can be set to "debug", "info", "warn", or "error". @@ -63,6 +82,13 @@ in { packages = mkOption { type = types.listOf types.package; default = [ pkgs.system-config-printer ]; + example = literalExpression '' + with pkgs; [ + system-config-printer + print-manager + gtklp + ] + ''; description = '' List of GUI tools for managing printers. Defaults to [ pkgs.system-config-printer ]. diff --git a/modules/system/common/virtualisation/default.nix b/modules/system/common/virtualisation/default.nix index 09c759f..6af1f5f 100644 --- a/modules/system/common/virtualisation/default.nix +++ b/modules/system/common/virtualisation/default.nix @@ -46,41 +46,144 @@ let ++ lib.optionals (lib.elem "docker" cfg.engines) [ docker-compose ]; in { options.modules.system.virtualisation = { - enable = mkEnableOption "system virtualization support"; + enable = mkEnableOption '' + System virtualization and emulation support + + This module provides comprehensive virtualization support including: + - Container engines (Docker, Podman, LXD) + - Virtual machine managers (libvirt/QEMU, VirtualBox) + - Compatibility layers (Wine, Proton) + - Android emulation (Waydroid) + - Various system emulators + + Enabling this module will configure the necessary system services and + user permissions for running virtual machines and containers. + ''; engines = mkOption { type = types.listOf (types.enum supportedEngines); default = []; - description = "List of virtualization engines to enable"; + example = [ "libvirtd" "docker" "podman" ]; + description = '' + List of virtualization engines to enable and configure. + + Supported engines: + - libvirtd: KVM/QEMU virtual machine management with libvirt + - podman: Daemonless container engine (rootless containers) + - docker: Docker container platform with daemon + - waydroid: Android containerization for running Android apps + - lxd: System container and virtual machine manager + + Each enabled engine will: + - Start necessary system services + - Configure required kernel modules + - Add the user to appropriate groups + - Set up default configurations + ''; }; gui.clients = mkOption { type = types.listOf (types.enum supportedClients); default = []; - description = "List of virtualization GUI clients to install"; + example = [ "virt-manager" "quickemu" ]; + description = '' + Graphical user interfaces for virtualization management. + + Available clients: + - virt-manager: GUI for managing libvirt virtual machines + - droidcam: Android camera virtualization for use as webcam + - quickemu: Quick GUI for creating and managing VMs + + These packages provide user-friendly interfaces for managing + virtual machines and containers without using command-line tools. + ''; }; emulators = mkOption { type = types.listOf (types.enum (builtins.attrNames emulatorToPackage)); default = []; - description = "List of emulators to install"; + example = [ "qemu" "dosbox" "bottles" ]; + description = '' + System emulators and compatibility tools. + + Available emulators: + - playonlinux: GUI for managing Wine prefixes and Windows applications + - bottles: Sandboxed Windows application environment + - dosbox: DOS emulator for running classic DOS games and applications + - qemu: Generic machine emulator and virtualizer + - virtualbox: Oracle VirtualBox virtualization platform + + Note: Some emulators may require additional configuration or + kernel modules to function properly. + ''; }; wine = { - enable = mkEnableOption "Wine compatibility layer"; + enable = mkEnableOption '' + Wine Windows compatibility layer + + Wine (Wine Is Not an Emulator) allows running Windows applications + on Linux systems. When enabled, this provides: + - Windows API implementation on Unix + - Application binary interface translation + - Windows program loader and utilities + + This is useful for running Windows games and applications without + a full virtual machine. Wine works best with older applications + and games that don't require advanced DirectX features. + ''; + version = mkOption { type = types.enum (builtins.attrNames winePackages); default = "stable"; - description = "Wine version to use"; + example = "staging"; + description = '' + Wine version to install and configure. + + Available versions: + - stable: Most tested and reliable version + - staging: Includes experimental patches and features + - wayland: Experimental Wayland support + - fonts: Wine with additional font support + + The staging version often has better compatibility with newer + games and applications but may be less stable. + ''; }; }; proton = { - enable = mkEnableOption "Proton compatibility layer"; + enable = mkEnableOption '' + Proton Steam compatibility layer + + Proton is Valve's compatibility tool for running Windows games + on Linux through Steam. It's based on Wine with additional + gaming-specific enhancements: + - DirectX 11 and 12 support through DXVK/VKD3D + - Improved game controller support + - Better fullscreen and overlay handling + - Steam integration + + Proton provides significantly better gaming performance than + standard Wine for many modern Windows games. + ''; }; spiceUSBRedirection = { - enable = mkEnableOption "SPICE USB redirection"; + enable = mkEnableOption '' + SPICE USB redirection support + + SPICE (Simple Protocol for Independent Computing Environments) + USB redirection allows USB devices to be passed through to + virtual machines. This enables: + - USB storage devices in VMs + - USB peripherals (keyboards, mice, game controllers) + - Specialized USB hardware access + - Smart card readers and security devices + + This is particularly useful for virtual desktop infrastructure + and remote VM access scenarios. + ''; }; }; diff --git a/modules/system/common/virtualisation/ollama.nix b/modules/system/common/virtualisation/ollama.nix index c9891db..8727ff3 100644 --- a/modules/system/common/virtualisation/ollama.nix +++ b/modules/system/common/virtualisation/ollama.nix @@ -1,29 +1,101 @@ { config, lib, pkgs, vars, ... }: let - inherit (lib) mkEnableOption mkOption types; + inherit (lib) mkEnableOption mkOption types literalExpression; cfg = config.modules.system.virtualisation.ollama; in { options.modules.system.virtualisation.ollama = { - enable = mkEnableOption "Enable Ollama (AI model server)"; + enable = mkEnableOption '' + Ollama - Local LLM (Large Language Model) server + + Ollama allows you to run, create, and share large language models locally. + It provides a simple API for running models like Llama, Mistral, CodeLlama, + and other publicly available models. + + When enabled, this service: + - Runs the Ollama server as a systemd service + - Manages model storage in the specified directory + - Provides a REST API for model interactions + - Can be used with various clients and applications + + Official website: https://ollama.ai + ''; + path = mkOption { type = types.str; default = "/var/lib/ollama"; - description = "Path to Ollama data directory"; + example = "/home/user/.ollama"; + description = '' + Storage path for Ollama models and data. + + This directory will contain: + - Downloaded model files (can be several GB each) + - Model configurations and metadata + - Temporary files during model operations + + Ensure this location has sufficient storage space for your intended models. + Larger models like Llama2 70B may require 40+ GB of space. + ''; }; + settings = mkOption { type = types.attrsOf types.str; default = {}; - description = "Additional environment variables for Ollama service"; + example = literalExpression '' + { + OLLAMA_NUM_PARALLEL = "2"; + OLLAMA_MAX_LOADED_MODELS = "3"; + OLLAMA_ORIGINS = "*"; + } + ''; + description = '' + Environment variables to configure Ollama behavior. + + Common configuration options: + - OLLAMA_NUM_PARALLEL: Number of parallel model executions (default: 1) + - OLLAMA_MAX_LOADED_MODELS: Maximum number of models to keep loaded (default: 1) + - OLLAMA_ORIGINS: CORS origins allowed to access the API (default: "*") + - OLLAMA_HOST: Interface to bind to (default: 127.0.0.1:11434) + - OLLAMA_MODELS: Path to models directory (overrides the path option) + + See the Ollama documentation for a complete list of environment variables. + ''; }; + port = mkOption { type = types.int; default = 11434; - description = "Port for Ollama service"; + example = 8080; + description = '' + TCP port for the Ollama API server. + + The Ollama server provides: + - REST API endpoints at /api/~ + - Model management operations + - Chat completions and embeddings + - Model streaming support + + Change this if the default port conflicts with other services on your system. + ''; }; - gui.enable = mkEnableOption "Enable Ollama LLM UI (Next.js frontend)"; + gui.enable = mkEnableOption '' + Next.js LLM UI - Web-based interface for Ollama + + A modern web interface for interacting with your local Ollama models. + Provides a chat-based UI similar to commercial AI assistants but running + entirely locally on your hardware. + + Features: + - Chat interface with conversation history + - Model selection and switching + - Response streaming + - Prompt templates + - Multiple conversation threads + + GitHub: https://github.com/ollama/ollama-ui + ''; }; config = { diff --git a/modules/wrapper/safing/module.nix b/modules/wrapper/safing/module.nix index f73ac53..032be6f 100644 --- a/modules/wrapper/safing/module.nix +++ b/modules/wrapper/safing/module.nix @@ -7,24 +7,66 @@ let portmasterPkg = pkgs.callPackage ./package.nix {}; in { options.services.portmaster = { - enable = mkEnableOption "Portmaster application firewall"; + enable = mkEnableOption (mdDoc '' + Portmaster application firewall and network monitoring tool + + The Portmaster is a free and open-source application firewall that + puts you back in charge over your device's network traffic. It + automatically blocks thousands of trackers, protects against + malware, and gives you deep insights into which apps are doing what. + + **Warning**: Enabling this service will modify your system's + firewall rules. Make sure to understand the implications before + enabling. + ''); package = mkOption { type = types.package; default = portmasterPkg; - description = "Portmaster package to use"; + example = literalExpression "pkgs.portmaster"; + description = mdDoc '' + The Portmaster package to use. This allows overriding the default + package with a custom version or build. + + Defaults to the Portmaster package defined in this module. + ''; }; devmode.enable = mkOption { type = types.bool; default = false; - description = "Enable development mode (makes UI available at 127.0.0.1:817)"; + example = true; + description = mdDoc '' + Enable development mode for Portmaster. + + When enabled, this makes the Portmaster UI available at + `http://127.0.0.1:817` instead of the usual integration with + the system's browser extension. This is useful for debugging + and development purposes. + + **Note**: Enabling this will open TCP port 817 in the firewall. + ''; }; extraArgs = mkOption { type = types.listOf types.str; default = []; - description = "Extra command-line arguments for portmaster-core"; + example = [ "--verbose" "--no-autostart" ]; + description = mdDoc '' + Extra command-line arguments to pass to the portmaster-core process. + + These arguments are appended after the default arguments and any + development mode arguments. For a complete list of available + arguments, refer to the Portmaster documentation. + + Common arguments include: + - `--verbose`: Enable verbose logging + - `--log-level=debug`: Set specific log level + - `--no-autostart`: Don't autostart components + + **Warning**: Use caution when adding arguments as they may affect + the stability or security of the Portmaster service. + ''; }; }; From 1661b2100381a372c1fa56f56524e57af5e75a02 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 10 Sep 2025 20:26:35 +0200 Subject: [PATCH 23/50] fix: simplify api configuration by flattening scalar settings --- flake.lock | 102 +++++++++++++++---------------- modules/hm/hosts/oak/default.nix | 5 +- 2 files changed, 52 insertions(+), 55 deletions(-) diff --git a/flake.lock b/flake.lock index 6054e75..0908101 100755 --- a/flake.lock +++ b/flake.lock @@ -43,11 +43,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1757210367, - "narHash": "sha256-9FeNHGZ2reB2jQ6USdUXNlME7c8sURuzHlvwellc2yM=", + "lastModified": 1757468917, + "narHash": "sha256-mm3oEiFaJMbn4iYcqZxOCp8pcSzxEGcF4o/FEkYtCnE=", "owner": "caelestia-dots", "repo": "cli", - "rev": "d7b7d2ae048abb4e4d987e3e96717779b4a21388", + "rev": "ad962cb57224fec55a98ca7046d45e92df421908", "type": "github" }, "original": { @@ -92,11 +92,11 @@ "quickshell": "quickshell" }, "locked": { - "lastModified": 1757207876, - "narHash": "sha256-JgwRcx4mJmVV00aeKuzsxNEHlze33HZInlznKgbTic8=", + "lastModified": 1757415744, + "narHash": "sha256-D93LlvZFBEaW3o63NXA+WbG4VzN6aESSPfhEzrdLB64=", "owner": "caelestia-dots", "repo": "shell", - "rev": "139c36ba5a0fa07efc58d9cc683d7b0ff73d7d75", + "rev": "5b81104ffa22465e8f97a4d625e1a151c5d50c2f", "type": "github" }, "original": { @@ -112,11 +112,11 @@ "quickshell": "quickshell_2" }, "locked": { - "lastModified": 1757207876, - "narHash": "sha256-JgwRcx4mJmVV00aeKuzsxNEHlze33HZInlznKgbTic8=", + "lastModified": 1757520432, + "narHash": "sha256-tlSPVN9pprFEh0wZd44FHhn1JQIK2Ms1niq4SZLDYa0=", "owner": "caelestia-dots", "repo": "shell", - "rev": "139c36ba5a0fa07efc58d9cc683d7b0ff73d7d75", + "rev": "6f147b21cc5a5611dbee11c838565d93a2466786", "type": "github" }, "original": { @@ -134,11 +134,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1757011047, - "narHash": "sha256-y4cFEDZ7Mmz4vLPSc2pDF7OXJ9ylW3cOU2Tztx/ApI0=", + "lastModified": 1757505806, + "narHash": "sha256-n9/XRT0g6ucBpq2r1NUGDVwI6CTqg45sdljjAJdvWwc=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "7b9fd94dccd3a22f32dff8560f248991300f8c16", + "rev": "0e34b767650b5b71a9c2b2caf4270f50a66a9305", "type": "github" }, "original": { @@ -169,11 +169,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1754487366, - "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -245,11 +245,11 @@ ] }, "locked": { - "lastModified": 1756954499, - "narHash": "sha256-Pg4xBHzvzNY8l9x/rLWoJMnIR8ebG+xeU+IyqThIkqU=", + "lastModified": 1757503661, + "narHash": "sha256-bBh9sAJn0x/EdCVA6NYj/hXpcW1YBLCRMgn8A2T1l2E=", "owner": "nix-community", "repo": "home-manager", - "rev": "ed1a98c375450dfccf427adacd2bfd1a7b22eb25", + "rev": "3c97248d6f896232355735e34bb518ae9f130c5d", "type": "github" }, "original": { @@ -813,11 +813,11 @@ ] }, "locked": { - "lastModified": 1756638688, - "narHash": "sha256-ddxbPTnIchM6tgxb6fRrCvytlPE2KLifckTnde/irVQ=", + "lastModified": 1757230583, + "narHash": "sha256-4uqu7sFPOaVTCogsxaGMgbzZ2vK40GVGMfUmrvK3/LY=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "e7b8679cba79f4167199f018b05c82169249f654", + "rev": "fc3960e6c32c9d4f95fff2ef84444284d24d3bea", "type": "github" }, "original": { @@ -832,11 +832,11 @@ "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1757037153, - "narHash": "sha256-C/7KPJln4yL5au1ivOJOEgAFbMVAw/cFmQp80O8friA=", + "lastModified": 1757382624, + "narHash": "sha256-4oYKTUl4B53W8EJ8EOc6F205TCFKCfzAXkS2f8pfZkc=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "c1376c823e440c159c0bde9fc22a6cee19c25b24", + "rev": "cae14b9ee74180bda2c1f312958fe710b4267fce", "type": "github" }, "original": { @@ -896,11 +896,11 @@ ] }, "locked": { - "lastModified": 1756612744, - "narHash": "sha256-/glV6VAq8Va3ghIbmhET3S1dzkbZqicsk5h+FtvwiPE=", + "lastModified": 1757218147, + "narHash": "sha256-IwOwN70HvoBNB2ckaROxcaCvj5NudNc52taPsv5wtLk=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "3fe768e1f058961095b4a0d7a2ba15dc9736bdc6", + "rev": "9b144dc3ef6e42b888c4190e02746aab13b0e97f", "type": "github" }, "original": { @@ -919,11 +919,11 @@ "sops-nix": "sops-nix" }, "locked": { - "lastModified": 1757079709, - "narHash": "sha256-ECO4wb3iGHBiYZLu9+wBiMoWoc+gF4+yFfVGAX7y7FE=", + "lastModified": 1757484458, + "narHash": "sha256-krwktY5XhG3eHiihWoAA3M1EBoUs61iOjadkzFk38rs=", "owner": "Tarow", "repo": "nix-podman-stacks", - "rev": "b313d28ca02cbea256688aa697af923dd623e1cd", + "rev": "2dfd842fa6aa817fe2b32c6a56b12056950e2b83", "type": "github" }, "original": { @@ -950,11 +950,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757068644, - "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", + "lastModified": 1757347588, + "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", + "rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe", "type": "github" }, "original": { @@ -966,11 +966,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1753579242, - "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", "type": "github" }, "original": { @@ -981,11 +981,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1757087884, - "narHash": "sha256-GyAFRnxL57u5GPvVvfL/U23CoxcpNFndnHO/7SLrMfM=", + "lastModified": 1757525529, + "narHash": "sha256-V7Or0w+TckbsSBqYrh3NAr4auCTloHCLlk0NlmMuc24=", "owner": "nixos", "repo": "nixpkgs", - "rev": "63f58a53c08610dbfb75b8aec2ea9d290f1c0848", + "rev": "4bed3c8ef7b2669d96ef6716bcf689176fdee60f", "type": "github" }, "original": { @@ -1013,11 +1013,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1756989294, - "narHash": "sha256-vh3F0p7pGvj9tItYjlqiZ3zTJCuw9+d74RhYCYLuaBQ=", + "lastModified": 1757420003, + "narHash": "sha256-SPaZFFDt7CzE+BdNyh3HGfUKmttle/yN+ELIl6ZhEeE=", "owner": "PedroHLC", "repo": "nixpkgs", - "rev": "f04ea9d87566cfe950cf45d7311a9964dcf3bf38", + "rev": "b4fc8b5dcc7c1a4dab87d6dc35048cb188e49289", "type": "github" }, "original": { @@ -1061,11 +1061,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1756536218, - "narHash": "sha256-ynQxPVN2FIPheUgTFhv01gYLbaiSOS7NgWJPm9LF9D0=", + "lastModified": 1756911493, + "narHash": "sha256-6n/n1GZQ/vi+LhFXMSyoseKdNfc2QQaSBXJdgamrbkE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a918bb3594dd243c2f8534b3be01b3cb4ed35fd1", + "rev": "c6a788f552b7b7af703b1a29802a7233c0067908", "type": "github" }, "original": { @@ -1077,11 +1077,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1756787288, - "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "lastModified": 1757347588, + "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe", "type": "github" }, "original": { @@ -1179,11 +1179,11 @@ ] }, "locked": { - "lastModified": 1756953131, - "narHash": "sha256-alhjsmCdJDNZCP824NB21ZfqepVsGwpIiRBmSHUvp7U=", + "lastModified": 1757471515, + "narHash": "sha256-0+rSzNsYindDWjO9VVULKGjXlPsQV6IDjRU5G3SwI9U=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c2e69d21d6a1c83de3326c975d484c4c79893896", + "rev": "aecf31120156fe47a7d1992aa814052910178fca", "type": "github" }, "original": { diff --git a/modules/hm/hosts/oak/default.nix b/modules/hm/hosts/oak/default.nix index e72f384..0e90150 100644 --- a/modules/hm/hosts/oak/default.nix +++ b/modules/hm/hosts/oak/default.nix @@ -72,10 +72,7 @@ matrix.clients = ["element"]; }; utilities = { - api = { - scalar.enable = true; - autoswagger.enable = true; - }; + api.scalar.enable = true; safety.ianny = { enable = true; presets = ["dev" "game"]; From 4e9507b37fec96a5b399bd498bccb3085df107a3 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:40:42 +0200 Subject: [PATCH 24/50] refactor: streamline flake.nix configuration and remove deprecated deployment scripts - Removed chaotic input and updated hydenix input to point to the latest version. - Consolidated nix-podman-stacks and home-manager inputs for clarity. - Simplified mkHost function to directly use inputs.nixpkgs. - Removed the host configuration mapping and deployment scripts (rb, deploy-remote, deploy-local, deploy-cross) to clean up the codebase. - Added a default host configuration for easier access. --- flake.lock | 928 ++++++++++------------------------------------------- flake.nix | 178 +--------- 2 files changed, 178 insertions(+), 928 deletions(-) diff --git a/flake.lock b/flake.lock index 0908101..aa4ca52 100755 --- a/flake.lock +++ b/flake.lock @@ -1,53 +1,16 @@ { "nodes": { - "aquamarine": { - "inputs": { - "hyprutils": [ - "hydenix", - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hydenix", - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hydenix", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1753216019, - "narHash": "sha256-zik7WISrR1ks2l6T1MZqZHb/OqroHdJnSnAehkE0kCk=", - "owner": "hyprwm", - "repo": "aquamarine", - "rev": "be166e11d86ba4186db93e10c54a141058bdce49", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "aquamarine", - "type": "github" - } - }, "caelestia-cli": { "inputs": { "caelestia-shell": "caelestia-shell", "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1757468917, - "narHash": "sha256-mm3oEiFaJMbn4iYcqZxOCp8pcSzxEGcF4o/FEkYtCnE=", + "lastModified": 1760579631, + "narHash": "sha256-tbVkahmVPiPB/Ukcq7LH4DCVok+K5FEKIaS5cTMeeDk=", "owner": "caelestia-dots", "repo": "cli", - "rev": "ad962cb57224fec55a98ca7046d45e92df421908", + "rev": "40fbf3bd68668e72f224c02b784b9932a902d2a0", "type": "github" }, "original": { @@ -67,11 +30,11 @@ ] }, "locked": { - "lastModified": 1757123223, - "narHash": "sha256-WE20W7OTKxw+Tvmthpy0CEV0KOvLWuvaW+bceTZ8yhk=", + "lastModified": 1760147156, + "narHash": "sha256-ad+1gnp7Lm7jVSzqvGjMiwnA0P61dFZmp6HcRMXicWY=", "owner": "caelestia-dots", "repo": "cli", - "rev": "12abcf2336e9277c47d745ac3cae04effa28d674", + "rev": "e9668d58f51e935094e50090b99301df8344f590", "type": "github" }, "original": { @@ -92,11 +55,11 @@ "quickshell": "quickshell" }, "locked": { - "lastModified": 1757415744, - "narHash": "sha256-D93LlvZFBEaW3o63NXA+WbG4VzN6aESSPfhEzrdLB64=", + "lastModified": 1760497394, + "narHash": "sha256-/4Hf/irgPh+gRQAcCNjXyXFcUGOrXMX8+OtOwbscbXk=", "owner": "caelestia-dots", "repo": "shell", - "rev": "5b81104ffa22465e8f97a4d625e1a151c5d50c2f", + "rev": "4cb1048fdd6fa281baa0efa36c8c82ddd2cc43a3", "type": "github" }, "original": { @@ -112,11 +75,11 @@ "quickshell": "quickshell_2" }, "locked": { - "lastModified": 1757520432, - "narHash": "sha256-tlSPVN9pprFEh0wZd44FHhn1JQIK2Ms1niq4SZLDYa0=", + "lastModified": 1760497394, + "narHash": "sha256-/4Hf/irgPh+gRQAcCNjXyXFcUGOrXMX8+OtOwbscbXk=", "owner": "caelestia-dots", "repo": "shell", - "rev": "6f147b21cc5a5611dbee11c838565d93a2466786", + "rev": "4cb1048fdd6fa281baa0efa36c8c82ddd2cc43a3", "type": "github" }, "original": { @@ -125,55 +88,16 @@ "type": "github" } }, - "chaotic": { - "inputs": { - "flake-schemas": "flake-schemas", - "home-manager": "home-manager", - "jovian": "jovian", - "nixpkgs": "nixpkgs_3", - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1757505806, - "narHash": "sha256-n9/XRT0g6ucBpq2r1NUGDVwI6CTqg45sdljjAJdvWwc=", - "owner": "chaotic-cx", - "repo": "nyx", - "rev": "0e34b767650b5b71a9c2b2caf4270f50a66a9305", - "type": "github" - }, - "original": { - "owner": "chaotic-cx", - "ref": "nyxpkgs-unstable", - "repo": "nyx", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "lastModified": 1759362264, + "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", + "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", "type": "github" }, "original": { @@ -182,23 +106,9 @@ "type": "github" } }, - "flake-schemas": { - "locked": { - "lastModified": 1721999734, - "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", - "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", - "revCount": 75, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" - } - }, "flake-utils": { "inputs": { - "systems": "systems_3" + "systems": "systems" }, "locked": { "lastModified": 1731533236, @@ -214,42 +124,36 @@ "type": "github" } }, - "gitignore": { + "flake-utils_2": { "inputs": { - "nixpkgs": [ - "hydenix", - "hyprland", - "pre-commit-hooks", - "nixpkgs" - ] + "systems": "systems_2" }, "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, "home-manager": { "inputs": { "nixpkgs": [ - "chaotic", "nixpkgs" ] }, "locked": { - "lastModified": 1757503661, - "narHash": "sha256-bBh9sAJn0x/EdCVA6NYj/hXpcW1YBLCRMgn8A2T1l2E=", + "lastModified": 1760500983, + "narHash": "sha256-zfY4F4CpeUjTGgecIJZ+M7vFpwLc0Gm9epM/iMQd4w8=", "owner": "nix-community", "repo": "home-manager", - "rev": "3c97248d6f896232355735e34bb518ae9f130c5d", + "rev": "c53e65ec92f38d30e3c14f8d628ab55d462947aa", "type": "github" }, "original": { @@ -262,15 +166,15 @@ "inputs": { "nixpkgs": [ "hydenix", - "hydenix-nixpkgs" + "nixpkgs" ] }, "locked": { - "lastModified": 1754365350, - "narHash": "sha256-NLWIkn1qM0wxtZu/2NXRaujWJ4Y1PSZlc7h0y6pOzOQ=", + "lastModified": 1760130406, + "narHash": "sha256-GKMwBaFRw/C1p1VtjDz4DyhyzjKUWyi1K50bh8lgA2E=", "owner": "nix-community", "repo": "home-manager", - "rev": "c5d7e957397ecb7d48b99c928611c6e780db1b56", + "rev": "d305eece827a3fe317a2d70138f53feccaf890a1", "type": "github" }, "original": { @@ -304,475 +208,129 @@ "hyde": { "flake": false, "locked": { - "lastModified": 1752889605, - "narHash": "sha256-hT7xLsfqsVwcYS/YscRwVOPqK8ZpubhGdpK58INkdJ0=", + "lastModified": 1758290412, + "narHash": "sha256-fXW+yxDQ0iLFX2YuKDpv82lIPbGDgii5kpsWCDp3m4s=", "owner": "HyDE-Project", "repo": "HyDE", - "rev": "168287f2f10e95a4a9a623c955c7e08147c48472", + "rev": "f246f2a89b8e862b96042cb2b291b191289c2fde", "type": "github" }, "original": { "owner": "HyDE-Project", "repo": "HyDE", - "rev": "168287f2f10e95a4a9a623c955c7e08147c48472", - "type": "github" - } - }, - "hydenix": { - "inputs": { - "home-manager": "home-manager_2", - "hyde": "hyde", - "hydenix-nixpkgs": "hydenix-nixpkgs", - "hypridle": "hypridle", - "hyprland": "hyprland", - "nix-index-database": "nix-index-database", - "nixos-hardware": "nixos-hardware" - }, - "locked": { - "lastModified": 1755961878, - "narHash": "sha256-t6M3TU5+4ZzqUSEk+KBv0mREtQ3UiR933YNRkDMHWBM=", - "owner": "richen604", - "repo": "hydenix", - "rev": "9836f27996b1eee38a6da3a04ad783943941bbce", - "type": "github" - }, - "original": { - "owner": "richen604", - "ref": "v4.9.0", - "repo": "hydenix", - "type": "github" - } - }, - "hydenix-nixpkgs": { - "locked": { - "lastModified": 1750122687, - "narHash": "sha256-zcGClfkXh4pckf4aGOZ18GFv73n1xHbdMWl17cPLouE=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c539ae8d21e49776966d714f82fba33b1fca78bc", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c539ae8d21e49776966d714f82fba33b1fca78bc", - "type": "github" - } - }, - "hyprcursor": { - "inputs": { - "hyprlang": [ - "hydenix", - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hydenix", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1753964049, - "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprcursor", - "type": "github" - } - }, - "hyprgraphics": { - "inputs": { - "hyprutils": [ - "hydenix", - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hydenix", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1752149140, - "narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=", - "owner": "hyprwm", - "repo": "hyprgraphics", - "rev": "340494a38b5ec453dfc542c6226481f736cc8a9a", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprgraphics", - "type": "github" - } - }, - "hypridle": { - "inputs": { - "hyprland-protocols": "hyprland-protocols", - "hyprlang": "hyprlang", - "hyprutils": "hyprutils", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_4", - "systems": "systems" - }, - "locked": { - "lastModified": 1752164251, - "narHash": "sha256-v/FnmgSkOypGkpDHQW8KK0uVIyh2njVgEa7hOpWW9ZM=", - "owner": "hyprwm", - "repo": "hypridle", - "rev": "dda793b66a79e5602675fa370dd9a93f1d70a60e", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hypridle", - "type": "github" - } - }, - "hyprland": { - "inputs": { - "aquamarine": "aquamarine", - "hyprcursor": "hyprcursor", - "hyprgraphics": "hyprgraphics", - "hyprland-protocols": "hyprland-protocols_2", - "hyprland-qtutils": "hyprland-qtutils", - "hyprlang": "hyprlang_2", - "hyprutils": "hyprutils_2", - "hyprwayland-scanner": "hyprwayland-scanner_2", - "nixpkgs": "nixpkgs_5", - "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1754516867, - "narHash": "sha256-Vlh2o3NqI6a9H/b1aY8uCUsJyJdhwvJZExxnteadLCU=", - "owner": "hyprwm", - "repo": "Hyprland", - "rev": "a4529beb7c0be3980ce857c60b284a90f2ea6eb6", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "Hyprland", - "type": "github" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hydenix", - "hypridle", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hypridle", - "systems" - ] - }, - "locked": { - "lastModified": 1749046714, - "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprland-protocols_2": { - "inputs": { - "nixpkgs": [ - "hydenix", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1749046714, - "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprland-qt-support": { - "inputs": { - "hyprlang": [ - "hydenix", - "hyprland", - "hyprland-qtutils", - "hyprlang" - ], - "nixpkgs": [ - "hydenix", - "hyprland", - "hyprland-qtutils", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "hyprland-qtutils", - "systems" - ] - }, - "locked": { - "lastModified": 1749154592, - "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "type": "github" - } - }, - "hyprland-qtutils": { - "inputs": { - "hyprland-qt-support": "hyprland-qt-support", - "hyprlang": [ - "hydenix", - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hydenix", - "hyprland", - "hyprland-qtutils", - "hyprlang", - "hyprutils" - ], - "nixpkgs": [ - "hydenix", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1753819801, - "narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=", - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qtutils", + "rev": "f246f2a89b8e862b96042cb2b291b191289c2fde", "type": "github" } }, - "hyprlang": { + "hyde-config": { "inputs": { - "hyprutils": [ - "hydenix", - "hypridle", - "hyprutils" - ], "nixpkgs": [ "hydenix", - "hypridle", "nixpkgs" - ], - "systems": [ - "hydenix", - "hypridle", - "systems" ] }, "locked": { - "lastModified": 1749145882, - "narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprlang_2": { - "inputs": { - "hyprutils": [ - "hydenix", - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hydenix", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1753622892, - "narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809", + "lastModified": 1754889600, + "narHash": "sha256-kn35QcO7OxZxcYyaZNxQ4tBsLdeSi1u2kbWdPg/pky0=", + "owner": "richen604", + "repo": "hyde-config", + "rev": "59dc0659e0cfb72552616553f5b2635cf40c2184", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "hyprlang", + "owner": "richen604", + "repo": "hyde-config", "type": "github" } }, - "hyprutils": { + "hyde-ipc": { "inputs": { "nixpkgs": [ "hydenix", - "hypridle", "nixpkgs" ], - "systems": [ - "hydenix", - "hypridle", - "systems" - ] + "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1749135356, - "narHash": "sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb", + "lastModified": 1754887268, + "narHash": "sha256-TsiA83Gd16VfIMatHa6o56Rvf7Vi2Lr/9ch9T6+n/qg=", + "owner": "richen604", + "repo": "hyde-ipc", + "rev": "016b6e7bd5959a18c2cefeb4a952098468f6bb8f", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "hyprutils", + "owner": "richen604", + "repo": "hyde-ipc", "type": "github" } }, - "hyprutils_2": { + "hydectl": { "inputs": { "nixpkgs": [ "hydenix", - "hyprland", "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" ] }, "locked": { - "lastModified": 1753800567, - "narHash": "sha256-W0xgXsaqGa/5/7IBzKNhf0+23MqGPymYYfqT7ECqeTE=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "c65d41d4f4e6ded6fdb9d508a73e2fe90e55cdf7", + "lastModified": 1755057332, + "narHash": "sha256-TVLjDL4+SdoXJrNu5TLiUSDD73CdVWfAn3aE2c4aShg=", + "owner": "richen604", + "repo": "hydectl", + "rev": "a19610347de2230175e5d8807584db65d0588134", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "hyprutils", + "owner": "richen604", + "repo": "hydectl", "type": "github" } }, - "hyprwayland-scanner": { + "hydenix": { "inputs": { - "nixpkgs": [ - "hydenix", - "hypridle", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hypridle", - "systems" - ] + "home-manager": "home-manager_2", + "hyde": "hyde", + "hyde-config": "hyde-config", + "hyde-ipc": "hyde-ipc", + "hydectl": "hydectl", + "hyq": "hyq", + "nix-index-database": "nix-index-database", + "nixos-hardware": "nixos-hardware", + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1749145760, - "narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6", + "lastModified": 1760228745, + "narHash": "sha256-HREHDON4AJZKFzpee14g1ooqSJ+Z6pA+sDH9n4Nbqf8=", + "owner": "richen604", + "repo": "hydenix", + "rev": "a387ed3b0e0e94d188610882b1da65d3e9e24026", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", + "owner": "richen604", + "repo": "hydenix", "type": "github" } }, - "hyprwayland-scanner_2": { + "hyq": { "inputs": { + "flake-utils": "flake-utils", "nixpkgs": [ "hydenix", - "hyprland", "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" ] }, "locked": { - "lastModified": 1751897909, - "narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "fcca0c61f988a9d092cbb33e906775014c61579d", + "lastModified": 1758587209, + "narHash": "sha256-fcsxLi/1MMNZvyaQ3LZEtIgSe2UMqg/4Ghj0rYszFdM=", + "owner": "richen604", + "repo": "hyprquery", + "rev": "a2934ca4a551b130c3e3076990774d17678a1b4e", "type": "github" }, "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", + "owner": "richen604", + "repo": "hyprquery", "type": "github" } }, @@ -804,39 +362,17 @@ "type": "github" } }, - "jovian": { - "inputs": { - "nix-github-actions": "nix-github-actions", - "nixpkgs": [ - "chaotic", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1757230583, - "narHash": "sha256-4uqu7sFPOaVTCogsxaGMgbzZ2vK40GVGMfUmrvK3/LY=", - "owner": "Jovian-Experiments", - "repo": "Jovian-NixOS", - "rev": "fc3960e6c32c9d4f95fff2ef84444284d24d3bea", - "type": "github" - }, - "original": { - "owner": "Jovian-Experiments", - "repo": "Jovian-NixOS", - "type": "github" - } - }, "nix-gaming": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1757382624, - "narHash": "sha256-4oYKTUl4B53W8EJ8EOc6F205TCFKCfzAXkS2f8pfZkc=", + "lastModified": 1760579393, + "narHash": "sha256-YuXbuaJ/2EZ1FePhz1eTyo/b+kpiEmw4lj6wX0u0Q/0=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "cae14b9ee74180bda2c1f312958fe710b4267fce", + "rev": "7d002241668a738df3973a6c07ef5d79e5508b24", "type": "github" }, "original": { @@ -845,62 +381,19 @@ "type": "github" } }, - "nix-github-actions": { - "inputs": { - "nixpkgs": [ - "chaotic", - "jovian", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1729697500, - "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", - "owner": "zhaofengli", - "repo": "nix-github-actions", - "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", - "type": "github" - }, - "original": { - "owner": "zhaofengli", - "ref": "matrix-name", - "repo": "nix-github-actions", - "type": "github" - } - }, "nix-index-database": { "inputs": { "nixpkgs": [ "hydenix", - "hydenix-nixpkgs" - ] - }, - "locked": { - "lastModified": 1754195341, - "narHash": "sha256-YL71IEf2OugH3gmAsxQox6BJI0KOcHKtW2QqT/+s2SA=", - "owner": "nix-community", - "repo": "nix-index-database", - "rev": "b7fcd4e26d67fca48e77de9b0d0f954b18ae9562", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nix-index-database", - "type": "github" - } - }, - "nix-index-database_2": { - "inputs": { - "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1757218147, - "narHash": "sha256-IwOwN70HvoBNB2ckaROxcaCvj5NudNc52taPsv5wtLk=", + "lastModified": 1759637156, + "narHash": "sha256-8NI1SqntLfKl6Q0Luemc3aIboezSJElofUrqipF5g78=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "9b144dc3ef6e42b888c4190e02746aab13b0e97f", + "rev": "0ca69684091aa3a6b1fe994c4afeff305b15e915", "type": "github" }, "original": { @@ -919,11 +412,11 @@ "sops-nix": "sops-nix" }, "locked": { - "lastModified": 1757484458, - "narHash": "sha256-krwktY5XhG3eHiihWoAA3M1EBoUs61iOjadkzFk38rs=", + "lastModified": 1760603878, + "narHash": "sha256-4x3zNxwM9iwMbxJFH02eVTIVpS4ZXZaPfQPCekyQCBg=", "owner": "Tarow", "repo": "nix-podman-stacks", - "rev": "2dfd842fa6aa817fe2b32c6a56b12056950e2b83", + "rev": "61c185547d73dc12e632ea5455a4fd1b26ab9b89", "type": "github" }, "original": { @@ -934,15 +427,31 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1754316476, - "narHash": "sha256-Ry1gd1BQrNVJJfT11cpVP0FY8XFMx4DJV2IDp01CH9w=", - "owner": "NixOS", + "lastModified": 1760106635, + "narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", + "owner": "nixos", "repo": "nixos-hardware", - "rev": "9368056b73efb46eb14fd4667b99e0f81b805f28", + "rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, + "nixos-hardware_2": { + "locked": { + "lastModified": 1760106635, + "narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", + "owner": "nixos", + "repo": "nixos-hardware", + "rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", + "type": "github" + }, + "original": { + "owner": "nixos", "ref": "master", "repo": "nixos-hardware", "type": "github" @@ -950,11 +459,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757347588, - "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", + "lastModified": 1760524057, + "narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe", + "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", "type": "github" }, "original": { @@ -981,11 +490,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1757525529, - "narHash": "sha256-V7Or0w+TckbsSBqYrh3NAr4auCTloHCLlk0NlmMuc24=", + "lastModified": 1760625687, + "narHash": "sha256-dYs4YRt+8Pl9iKiaHHyDmQVuVV/UF3iZZ4TK8drwTVE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4bed3c8ef7b2669d96ef6716bcf689176fdee60f", + "rev": "b7902c4646e82d9bf8415ea84cd30db01c4f69ce", "type": "github" }, "original": { @@ -997,11 +506,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1756787288, - "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "lastModified": 1760038930, + "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", "type": "github" }, "original": { @@ -1013,59 +522,43 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1757420003, - "narHash": "sha256-SPaZFFDt7CzE+BdNyh3HGfUKmttle/yN+ELIl6ZhEeE=", - "owner": "PedroHLC", + "lastModified": 1744536153, + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "b4fc8b5dcc7c1a4dab87d6dc35048cb188e49289", + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_4": { "locked": { - "lastModified": 1748929857, - "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", - "owner": "NixOS", + "lastModified": 1760038930, + "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", + "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", + "owner": "nixos", "repo": "nixpkgs", + "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", "type": "github" } }, "nixpkgs_5": { "locked": { - "lastModified": 1753939845, - "narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "94def634a20494ee057c76998843c015909d6311", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1756911493, - "narHash": "sha256-6n/n1GZQ/vi+LhFXMSyoseKdNfc2QQaSBXJdgamrbkE=", + "lastModified": 1760103332, + "narHash": "sha256-BMsGVfKl4Q80Pr9T1AkCRljO1bpwCmY8rTBVj8XGuhA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c6a788f552b7b7af703b1a29802a7233c0067908", + "rev": "870493f9a8cb0b074ae5b411b2f232015db19a65", "type": "github" }, "original": { @@ -1075,13 +568,13 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_6": { "locked": { - "lastModified": 1757347588, - "narHash": "sha256-tLdkkC6XnsY9EOZW9TlpesTclELy8W7lL2ClL+nma8o=", + "lastModified": 1760524057, + "narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b599843bad24621dcaa5ab60dac98f9b0eb1cabe", + "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", "type": "github" }, "original": { @@ -1091,30 +584,6 @@ "type": "github" } }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", - "nixpkgs": [ - "hydenix", - "hyprland", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1750779888, - "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, "quickshell": { "inputs": { "nixpkgs": [ @@ -1124,11 +593,11 @@ ] }, "locked": { - "lastModified": 1756981260, - "narHash": "sha256-GhuD9QVimjynHI0OOyZsqJsnlXr2orowh9H+HYz4YMs=", + "lastModified": 1760228179, + "narHash": "sha256-4Z6k7lv3Zcgk3K+4h60LpqB9wCkR+utkYERU735U068=", "ref": "refs/heads/master", - "rev": "6eb12551baf924f8fdecdd04113863a754259c34", - "revCount": 672, + "rev": "c9d3ffb6043c5bf3f3009202bad7e0e5132c4a25", + "revCount": 693, "type": "git", "url": "https://git.outfoxxed.me/outfoxxed/quickshell" }, @@ -1145,11 +614,11 @@ ] }, "locked": { - "lastModified": 1756981260, - "narHash": "sha256-GhuD9QVimjynHI0OOyZsqJsnlXr2orowh9H+HYz4YMs=", + "lastModified": 1760228179, + "narHash": "sha256-4Z6k7lv3Zcgk3K+4h60LpqB9wCkR+utkYERU735U068=", "ref": "refs/heads/master", - "rev": "6eb12551baf924f8fdecdd04113863a754259c34", - "revCount": 672, + "rev": "c9d3ffb6043c5bf3f3009202bad7e0e5132c4a25", + "revCount": 693, "type": "git", "url": "https://git.outfoxxed.me/outfoxxed/quickshell" }, @@ -1162,28 +631,25 @@ "inputs": { "caelestia-cli": "caelestia-cli", "caelestia-shell": "caelestia-shell_2", - "chaotic": "chaotic", + "home-manager": "home-manager", "hydenix": "hydenix", "nix-gaming": "nix-gaming", - "nix-index-database": "nix-index-database_2", "nix-podman-stacks": "nix-podman-stacks", - "nixpkgs": "nixpkgs_7", + "nixos-hardware": "nixos-hardware_2", + "nixpkgs": "nixpkgs_6", "nixpkgs-stable": "nixpkgs-stable" } }, "rust-overlay": { "inputs": { - "nixpkgs": [ - "chaotic", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1757471515, - "narHash": "sha256-0+rSzNsYindDWjO9VVULKGjXlPsQV6IDjRU5G3SwI9U=", + "lastModified": 1754880555, + "narHash": "sha256-tG6l0wiX8V8IvG4HFYY8IYN5vpNAxQ+UWunjjpE6SqU=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "aecf31120156fe47a7d1992aa814052910178fca", + "rev": "17c591a44e4eb77f05f27cd37e1cfc3f219c7fc4", "type": "github" }, "original": { @@ -1194,7 +660,7 @@ }, "search": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "ixx": "ixx", "nixpkgs": [ "nix-podman-stacks", @@ -1238,35 +704,20 @@ }, "systems": { "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" } }, "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1280,53 +731,6 @@ "repo": "default", "type": "github" } - }, - "xdph": { - "inputs": { - "hyprland-protocols": [ - "hydenix", - "hyprland", - "hyprland-protocols" - ], - "hyprlang": [ - "hydenix", - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hydenix", - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hydenix", - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hydenix", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hydenix", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1753633878, - "narHash": "sha256-js2sLRtsOUA/aT10OCDaTjO80yplqwOIaLUqEe0nMx0=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "371b96bd11ad2006ed4f21229dbd1be69bed3e8a", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index c1827aa..d7877e3 100755 --- a/flake.nix +++ b/flake.nix @@ -2,28 +2,25 @@ description = "template for hydenix"; inputs = { - chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; - # User's nixpkgs - for user packages nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:nixos/nixpkgs/release-25.05"; nix-gaming.url = "github:fufexan/nix-gaming"; # Hydenix and its nixpkgs - kept separate to avoid conflicts - hydenix.url = "github:richen604/hydenix/v4.9.0"; + hydenix.url = "github:richen604/hydenix"; + nixos-hardware.url = "github:nixos/nixos-hardware/master"; caelestia-shell.url = "github:caelestia-dots/shell"; caelestia-cli.url = "github:caelestia-dots/cli"; - - # Nix-index-database - for comma and command-not-found - nix-index-database = { - url = "github:nix-community/nix-index-database"; + nix-podman-stacks = { + url = "github:Tarow/nix-podman-stacks"; inputs.nixpkgs.follows = "nixpkgs"; }; - nix-podman-stacks = { - url = "github:Tarow/nix-podman-stacks"; + home-manager = { + url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; }; @@ -33,14 +30,13 @@ vars = { user = "mirage"; }; + system = "x86_64-linux"; # Create a function to generate host configurations - mkHost = - hostname: - inputs.hydenix.inputs.hydenix-nixpkgs.lib.nixosSystem { - inherit (inputs.hydenix.lib) system; + mkHost = hostname: inputs.nixpkgs.lib.nixosSystem { + inherit system; specialArgs = { - inherit inputs vars; + inherit inputs vars system; hostname = hostname; }; modules = [ @@ -49,8 +45,7 @@ }; # Create VM variant function - mkVm = - hostname: + mkVm = hostname: (import ./hosts/vm.nix { inherit inputs hostname vars; nixosConfiguration = mkHost hostname; @@ -61,17 +56,7 @@ flake = inputs.self.outPath; }; - system = inputs.hydenix.lib.system; pkgs = import inputs.nixpkgs { inherit system; }; - - # Host configuration mapping - hostConfigs = { - fern = { hostname = "fern"; ip = "fern"; }; - oak = { hostname = "oak"; ip = "oak"; }; - pine = { hostname = "pine"; ip = "pine"; }; - cedar = { hostname = "cedar"; ip = "cedar"; }; - }; - in { nixosConfigurations = { @@ -79,6 +64,7 @@ oak = mkHost "oak"; pine = mkHost "pine"; cedar = mkHost "cedar"; + default = mkHost "oak"; }; packages.${system} = { @@ -89,146 +75,6 @@ fern = self.nixosConfigurations.fern.config.system.build.toplevel; oak = self.nixosConfigurations.oak.config.system.build.toplevel; cedar = self.nixosConfigurations.cedar.config.system.build.toplevel; - - # Replacement for deploy-rs: nixos-rebuild based deployment script - rb = pkgs.writeShellScriptBin "rb" '' - set -euo pipefail - - host=$1 - shift # Remove the first argument (hostname) - - # Parse additional flags - build_host="" - extra_args=() - - while [[ $# -gt 0 ]]; do - case "$1" in - --build-host=*) - build_host="''${1#*=}" - shift - ;; - --build-host) - build_host="$2" - shift 2 - ;; - --remote-build) - build_host="''${hostConfigs[$host]:-$host}" - shift - ;; - --local-build) - build_host="localhost" - shift - ;; - *) - extra_args+=("$1") - shift - ;; - esac - done - - # Get host configuration - case "$host" in - "oak"|"fern"|"pine"|"cedar") - target_host="''${hostConfigs[$host]}" - ;; - "all") - # Deploy to all hosts sequentially - echo "Deploying to all hosts..." - for h in oak fern pine cedar; do - echo "=== Deploying to $h ===" - ${pkgs.nix}/bin/nixos-rebuild switch \ - --flake ".#$h" \ - --target-host "$h" \ - --sudo \ - "''${extra_args[@]}" - done - exit 0 - ;; - *) - echo "Usage: rb [oak|fern|pine|cedar|all] [OPTIONS] [-- nixos-rebuild-args]" - echo "" - echo "Options:" - echo " --build-host=HOST Build on specified host" - echo " --remote-build Build on target host (default)" - echo " --local-build Build on local machine" - echo " -- nixos-rebuild-args Additional arguments to nixos-rebuild" - echo "" - echo "Examples:" - echo " rb cedar # Build on cedar, deploy to cedar" - echo " rb cedar --local-build # Build locally, deploy to cedar" - echo " rb cedar --build-host=fern # Build on fern, deploy to cedar" - echo " rb cedar -- --show-trace # Pass --show-trace to nixos-rebuild" - exit 1 - ;; - esac - - # Build the nixos-rebuild command - cmd=( - ${pkgs.nix}/bin/nixos-rebuild - switch - --flake ".#$host" - --target-host "$target_host" - --sudo - ) - - # Add build-host if specified - if [[ -n "$build_host" ]]; then - cmd+=(--build-host "$build_host") - fi - - # Add extra arguments - cmd+=("''${extra_args[@]}") - - echo "Running: ''${cmd[@]}" - "''${cmd[@]}" - ''; - - # Helper scripts for common deployment patterns - deploy-remote = pkgs.writeShellScriptBin "deploy-remote" '' - # Build on target host (remote build) - ${self.packages.${system}.rb}/bin/rb "$1" --remote-build "''${@:2}" - ''; - - deploy-local = pkgs.writeShellScriptBin "deploy-local" '' - # Build on local machine - ${self.packages.${system}.rb}/bin/rb "$1" --local-build "''${@:2}" - ''; - - deploy-cross = pkgs.writeShellScriptBin "deploy-cross" '' - # Build on different host than target - if [ $# -lt 3 ]; then - echo "Usage: deploy-cross TARGET_HOST BUILD_HOST [EXTRA_ARGS]" - exit 1 - fi - target_host=$1 - build_host=$2 - ${self.packages.${system}.rb}/bin/rb "$target_host" --build-host="$build_host" "''${@:3}" - ''; - }; - - # Development shell with deployment tools - devShells.${system}.default = pkgs.mkShell { - buildInputs = [ - self.packages.${system}.rb - self.packages.${system}.deploy-remote - self.packages.${system}.deploy-local - self.packages.${system}.deploy-cross - pkgs.nix - ]; - - shellHook = '' - echo "Available deployment commands:" - echo " rb [host] [options] - Flexible deployment (replacement for deploy-rs)" - echo " deploy-remote [host] - Build on target host" - echo " deploy-local [host] - Build on local machine" - echo " deploy-cross [target] [build] - Cross-host deployment" - echo "" - echo "Examples:" - echo " rb cedar --local-build -- --show-trace" - echo " deploy-remote oak" - echo " deploy-local fern" - echo " deploy-cross pine oak" - ''; }; }; } \ No newline at end of file From 857646fd34cda4259b29934b6741987958d1b005 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:40:49 +0200 Subject: [PATCH 25/50] docs: update README.md with enhanced project description, features, and installation instructions --- README.md | 200 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 192 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 44192a8..078715d 100755 --- a/README.md +++ b/README.md @@ -1,15 +1,199 @@ -# richendots 🌿 +# 🧊 flakeHypr (aka richendots) -my personal dotfiles from the flake template of [hydenix](https://github.com/richen604/hydenix) +My personal dotfiles from the flake template of hydenix -some modules are specific to my system, feel free to use what you can as a reference. +--- -![screenshot](./assets/screenshot.png) +## Table of Contents -## TODO +* [About](#about) +* [Features](#features) +* [Contents / Structure](#contents--structure) +* [Requirements](#requirements) +* [Installation](#installation) +* [Configuration](#configuration) +* [Usage](#usage) +* [Customization](#customization) +* [Modules](#modules) +* [Contributing](#contributing) +* [License](#license) +* [Roadmap / TODO](#roadmap--todo) -see [TODO.md](TODO.md) +--- -## license 📄 +## About + +flakeHypr is a personal setup for managing dotfiles and system configuration using **Nix flakes**. +It is heavily inspired by / based on the flake template by *hydenix*, with adaptations specific to my workflow and machine(s). +Some modules are specific to my system; you’re welcome to use parts of what you need as a reference. + +--- + +## 🚀 Project Description + +flakeHypr is an advanced Nix Flake configuration for the Hyprland Wayland compositor that enables highly customizable and reproducible desktop environments. + +Hyprland is known for its dynamic tiling and eye-catching visual effects, while NixOS brings immutable infrastructure and declarative configuration to the desktop. This project blends both to provide a powerful, maintainable, and visually stunning setup. + +--- + +## ✨ Key Features + +| Feature | Description | +| --- | --- | +| 🔧 Modular Structure | Organized configuration modules for easy customization and maintenance | +| 🎨 Hyprland Integration | Pre-configured with optimized Hyprland settings and visual enhancements | +| ⚡ Performance Optimized | Lightweight and fast with efficient defaults | +| 🔄 Multi-System Support | Works consistently across different NixOS systems | +| 🧩 Dependency Management | Nix handles all dependencies and versioning | +| 🔐 Secure Defaults | Privacy-conscious and security-hardened settings | + +--- + +## 📁 Contents / Structure + +Here’s a breakdown of what the repository contains: + +``` +├── .github/ # GitHub-specific configs (CI, templates, etc.) +├── hosts/ # Host-specific configurations +├── modules/ # Reusable modules (services, UI, etc.) +├── flake.nix # Main entry point / flake configuration +├── flake.lock # Locked versions of all dependencies +├── info.txt # Auxiliary information (purpose/details) +├── CHANGELOG.md # Release notes & version history +├── TODO.md # Planned changes / to-dos +├── .gitignore # Files/folders ignored by git +├── releaserc.json # Release tooling configuration +└── LICENSE # Project license +``` + +--- + +## 💻 Requirements + +To use flakeHypr, you’ll typically need: + +- 🐧 Nix with flakes enabled + +- 🧠 Basic understanding of NixOS and Hyprland + +- 💾 System compatible with the modules used + +- 🛠️ Ability to manage your system config (root/admin) + +--- + +## 📦 Installation + +Enable Flakes (if not already enabled): + +```bash + +echo "experimental-features = nix-command flakes" | sudo tee -a /etc/nixos/configuration.nix +sudo nixos-rebuild switch + +``` + +Clone the Repository: + +```bash + +git clone https://github.com/ClementBobin/flakeHypr.git +cd flakeHypr +``` + +Review Configuration (optional but recommended): +Examine the flake.nix and adjust system-specific settings as needed. + +Install the Configuration: + +```bash + +sudo nixos-rebuild switch --flake .#your-hostname + +``` + +Replace your-hostname with your actual system hostname. +Adjust the host name / module names to your particular setup. + +--- + +## ⚙️ Configuration + +* Each host has its own configuration under `hosts/` +* Shared modules are in `modules/` +* Settings / options for modules can be found in those module directories + +You can enable, disable or modify modules for your machine by editing the appropriate host flake input(s). + +--- + +## Usage + +* To update dependencies: run `nix flake update` (this will update `flake.lock`) +* To switch system configuration or regenerate dotfiles: rebuild via the flake (using `nix build` / `nixos-rebuild` / `home-manager` etc., depending on target) +* For debugging: check logs for module failures / conflicts + +--- + +## Customization + +You’re welcome to: + +* Use parts of this configuration for your setup +* Copy modules you like +* Adapt host configurations +* Extend modules with your own custom scripts, options, etc. + +If you repurpose or redistribute, please retain or credit authorship where relevant. + +--- + +## Modules + +Some example modules included: + +* Host-specific settings under `hosts/` +* UI, service, or environment modules under `modules/` +* Possibly modules for window manager, display, fonts, networking, etc. (depending on what’s in `modules/`) + +--- + +## 🤝 Contributing + +We welcome contributions to flakeHypr! Here's how you can help: + +### 🐛 Reporting Bugs + +Open an issue via GitHub +Include: + - Your NixOS version + - Relevant hardware details + - Logs and config snippets + +### 💡 Suggesting Features + +Create an issue and label it enhancement + +Clearly describe: + - The use case + - Suggested implementation or configuration options + +--- + +## 📄 License + +This project is licensed under the **GPL‑3.0 License**. + +--- + +## Roadmap / TODO + +Some upcoming or desired items include (see `TODO.md` for fuller list): + +* Clean up / refactor host‑specific modules to be more generic +* Expand documentation for using / customizing modules +* Add testing or CI verification of configuration for different hosts +* Possibly package more modules for reuse by others -this project is licensed under the GPL-3.0 License - see the [LICENSE](LICENSE) file for details From a37ff902f71b5084dce6dc4bf0262fc27db3e342 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:40:55 +0200 Subject: [PATCH 26/50] fix: remove obsolete result symlink for NixOS manual HTML --- result | 1 - 1 file changed, 1 deletion(-) delete mode 120000 result diff --git a/result b/result deleted file mode 120000 index 243d2a4..0000000 --- a/result +++ /dev/null @@ -1 +0,0 @@ -/nix/store/cpfnmymcn47k9bd8y0nidh2iih1npsd5-nixos-manual-html \ No newline at end of file From ac68070d8592029df354f9497813a76f3f69b63f Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:41:06 +0200 Subject: [PATCH 27/50] feat: add hyprDisplays and winboat modules for enhanced display management and Windows app support --- modules/wrapper/default.nix | 3 +++ modules/wrapper/hyprDisplays.nix | 38 +++++++++++++++++++++++++++++++ modules/wrapper/winboat.nix | 39 ++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 modules/wrapper/hyprDisplays.nix create mode 100644 modules/wrapper/winboat.nix diff --git a/modules/wrapper/default.nix b/modules/wrapper/default.nix index 63f68f1..ca9c7d4 100644 --- a/modules/wrapper/default.nix +++ b/modules/wrapper/default.nix @@ -6,7 +6,10 @@ ./safing/package.nix ./caelestia.nix ./hayase.nix + ./hyprDisplays.nix + ./hyprpaper.nix ./scalar.nix + ./winboat.nix ./wrkflw.nix ]; } \ No newline at end of file diff --git a/modules/wrapper/hyprDisplays.nix b/modules/wrapper/hyprDisplays.nix new file mode 100644 index 0000000..1b3fe2b --- /dev/null +++ b/modules/wrapper/hyprDisplays.nix @@ -0,0 +1,38 @@ +{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, qt6, wayland, hyprland, vulkan-headers }: + +stdenv.mkDerivation rec { + pname = "hyprdisplays"; + version = "0.1.240"; + + src = fetchFromGitHub { + owner = "ryzendew"; + repo = "HyprDisplays"; + rev = "v${version}"; + sha256 = "sha256-BvJSU+FHCD6MsBkxgP/P/sQe/mFNJ9ClV9UKLWart1s="; + }; + + nativeBuildInputs = [ + cmake + pkg-config + qt6.wrapQtAppsHook + ]; + + buildInputs = [ + qt6.qtbase + qt6.qttools + vulkan-headers + ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + ]; + + meta = with lib; { + description = "Qt6-based graphical utility for arranging and configuring monitors for Hyprland"; + homepage = "https://github.com/ryzendew/HyprDisplays"; + license = licenses.mit; + maintainers = with maintainers; []; + platforms = platforms.linux; + mainProgram = "hyprdisplays"; + }; +} \ No newline at end of file diff --git a/modules/wrapper/winboat.nix b/modules/wrapper/winboat.nix new file mode 100644 index 0000000..5319562 --- /dev/null +++ b/modules/wrapper/winboat.nix @@ -0,0 +1,39 @@ +{ lib +, fetchurl +, appimageTools +}: + +let + pname = "winboat"; + version = "0.8.7"; + hash = "sha256-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX="; +in + +appimageTools.wrapType2 rec { + inherit pname version; + + src = fetchurl { + url = "https://github.com/TibixDev/winboat/releases/download/v${version}/Winboat-${version}.AppImage"; + name = "${pname}-${version}.AppImage"; + inherit hash; + }; + + extraInstallCommands = let + contents = appimageTools.extractType2 { inherit pname version src; }; + in '' + mkdir -p "$out/share/applications" + mkdir -p "$out/share/lib/${pname}" + cp -r ${contents}/{locales,resources} "$out/share/lib/${pname}" || true + cp -r ${contents}/usr/* "$out" || true + cp "${contents}/${pname}.desktop" "$out/share/applications/" 2>/dev/null || true + substituteInPlace "$out/share/applications/${pname}.desktop" --replace 'Exec=AppRun' 'Exec=${pname}' 2>/dev/null || true + ''; + + meta = with lib; { + description = "A lightweight application to run Windows applications on Linux using Wine"; + homepage = "https://github.com/TibixDev/winboat"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ ]; + platforms = [ "x86_64-linux" ]; + }; +} \ No newline at end of file From d95ac148623b6cb34b0d7834f296ab4125c782c1 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:41:13 +0200 Subject: [PATCH 28/50] fix: update sha256 checksum for scalar-deb package --- modules/wrapper/scalar.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/wrapper/scalar.nix b/modules/wrapper/scalar.nix index 8d1d131..cc7d200 100644 --- a/modules/wrapper/scalar.nix +++ b/modules/wrapper/scalar.nix @@ -3,7 +3,7 @@ let scalar-deb = pkgs.fetchurl { url = "https://download.scalar.com/linux/deb/x64"; - sha256 = "sha256-25TbihHJ6cVQvktI8MW/upP46tEYX7/9DJiS3qPBIk0="; + sha256 = "sha256-G+opvZ6AIeFGaSRRrNQwTyIKqvINhhTqmsVyG4QQca0="; }; scalar-app = pkgs.stdenv.mkDerivation { From ba99253f885e55f95e02ecc7c2abf19029f40c98 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:41:26 +0200 Subject: [PATCH 29/50] fix: remove linux-cachyos module to streamline system configuration --- modules/system/common/nix/linux-cachyos.nix | 34 --------------------- 1 file changed, 34 deletions(-) delete mode 100755 modules/system/common/nix/linux-cachyos.nix diff --git a/modules/system/common/nix/linux-cachyos.nix b/modules/system/common/nix/linux-cachyos.nix deleted file mode 100755 index 0b10b97..0000000 --- a/modules/system/common/nix/linux-cachyos.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - lib, - pkgs, - inputs, - config, - ... -}: - -let - cfg = config.modules.system.nix.linux-cachyos; -in -{ - imports = [ inputs.chaotic.nixosModules.default ]; - options.modules.system.nix.linux-cachyos = { - enable = lib.mkEnableOption "Enable Chaotic-AUR (CachyOS) support"; - enableSCX = lib.mkEnableOption "Enable SCX service when using Chaotic-AUR (CachyOS)"; - }; - - config = lib.mkIf cfg.enable { - - boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos; - - nix.settings = { - substituters = [ - "https://chaotic-nyx.cachix.org" - ]; - trusted-public-keys = [ - "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" - ]; - }; - - services.scx.enable = cfg.enableSCX; - }; -} From a3cef4b8f5df10ae74b6bda9711e7df8f0558e44 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:41:38 +0200 Subject: [PATCH 30/50] feat: add JetBrains IDEs support and update .NET SDK version to 9 --- modules/hm/common/dev/environments/editor.nix | 4 ++++ modules/hm/common/dev/languages/dotnet.nix | 2 +- modules/hm/common/dev/languages/kotlin.nix | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 modules/hm/common/dev/languages/kotlin.nix diff --git a/modules/hm/common/dev/environments/editor.nix b/modules/hm/common/dev/environments/editor.nix index 417506b..ec9a87f 100644 --- a/modules/hm/common/dev/environments/editor.nix +++ b/modules/hm/common/dev/environments/editor.nix @@ -12,6 +12,10 @@ let phpstorm = jetbrains.phpstorm; rider = jetbrains.rider; webstorm = jetbrains.webstorm; + pycharm = jetbrains.pycharm-community; + idea = jetbrains.idea-ultimate; + clion = jetbrains.clion; + goland = jetbrains.goland; }; otherIDEs = with pkgs; { diff --git a/modules/hm/common/dev/languages/dotnet.nix b/modules/hm/common/dev/languages/dotnet.nix index bd7ba90..5481b2b 100644 --- a/modules/hm/common/dev/languages/dotnet.nix +++ b/modules/hm/common/dev/languages/dotnet.nix @@ -18,7 +18,7 @@ in enable = lib.mkEnableOption "Enable .NET development environment"; sdk-versions = lib.mkOption { type = lib.types.listOf lib.types.str; - default = [ "8" ]; + default = [ "9" ]; description = "List of .NET SDK versions to install (e.g. ["6" "7" "8"])"; }; extraPackages = lib.mkOption { diff --git a/modules/hm/common/dev/languages/kotlin.nix b/modules/hm/common/dev/languages/kotlin.nix new file mode 100644 index 0000000..1e9fbb5 --- /dev/null +++ b/modules/hm/common/dev/languages/kotlin.nix @@ -0,0 +1,14 @@ +{ pkgs, lib, config, ... }: + +let + cfg = config.modules.hm.dev.languages.kotlin; +in +{ + options.modules.hm.dev.languages.kotlin = { + enable = lib.mkEnableOption "Enable kotlin development environment"; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ kotlin ]; + }; +} From 5b5d93676ec49011dc1c0d9cb65c93b551d6114a Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:41:50 +0200 Subject: [PATCH 31/50] feat: add audio and management utility modules; update video and streaming configurations --- .../hm/common/multimedia/editing/audio.nix | 16 ++++++++++ .../hm/common/multimedia/editing/video.nix | 4 +-- .../common/multimedia/management-utility.nix | 32 +++++++++++++++++++ .../hm/common/multimedia/remote-desktop.nix | 3 +- modules/hm/common/multimedia/streaming.nix | 18 ++++++----- 5 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 modules/hm/common/multimedia/editing/audio.nix create mode 100644 modules/hm/common/multimedia/management-utility.nix diff --git a/modules/hm/common/multimedia/editing/audio.nix b/modules/hm/common/multimedia/editing/audio.nix new file mode 100644 index 0000000..0a33a46 --- /dev/null +++ b/modules/hm/common/multimedia/editing/audio.nix @@ -0,0 +1,16 @@ +{ pkgs, lib, config, ... }: + +let + cfg = config.modules.hm.multimedia.editing.audio; +in +{ + options.modules.hm.multimedia.editing.audio = { + enable = lib.mkEnableOption "Enable audio editor"; + }; + + config = lib.mkIf cfg.enable { + home.packages = (with pkgs; [ + audacity + ]); + }; +} diff --git a/modules/hm/common/multimedia/editing/video.nix b/modules/hm/common/multimedia/editing/video.nix index 3f0a8bf..afb15fe 100644 --- a/modules/hm/common/multimedia/editing/video.nix +++ b/modules/hm/common/multimedia/editing/video.nix @@ -5,12 +5,12 @@ let in { options.modules.hm.multimedia.editing.video = { - enable = lib.mkEnableOption "Enable OpenShot video editor"; + enable = lib.mkEnableOption "Enable video editor"; }; config = lib.mkIf cfg.enable { home.packages = (with pkgs; [ - openshot-qt + lightworks ]); }; } diff --git a/modules/hm/common/multimedia/management-utility.nix b/modules/hm/common/multimedia/management-utility.nix new file mode 100644 index 0000000..e8a38b9 --- /dev/null +++ b/modules/hm/common/multimedia/management-utility.nix @@ -0,0 +1,32 @@ +{ pkgs, lib, config, ... }: + +let + cfg = config.modules.hm.multimedia.management-utility; + hyprdisplays = pkgs.callPackage ../../../wrapper/hyprDisplays.nix {}; + + clientsList = cfg.clients; + + # Map service names to their corresponding packages or list of packages + clientsToPackage = { + hyprdisplays = [ hyprdisplays ]; + nwg-displays = [ pkgs.nwg-displays ]; + wdisplays = [ pkgs.wdisplays ]; + wlay = [ pkgs.wlay ]; + }; + + # Flatten the list of packages from all enabled clients + packagesToInstall = lib.unique (lib.concatMap (s: clientsToPackage.${s}) clientsList); +in +{ + options.modules.hm.multimedia.management-utility = { + clients = lib.mkOption { + type = lib.types.listOf (lib.types.enum (lib.attrNames clientsToPackage)); + default = [ ]; + description = "List of display management utilities to enable"; + }; + }; + + config = { + home.packages = packagesToInstall; + }; +} diff --git a/modules/hm/common/multimedia/remote-desktop.nix b/modules/hm/common/multimedia/remote-desktop.nix index e23e69e..f3e00ba 100644 --- a/modules/hm/common/multimedia/remote-desktop.nix +++ b/modules/hm/common/multimedia/remote-desktop.nix @@ -6,7 +6,8 @@ let # Map clients to their packages clientsToPackage = with pkgs; { parsec = [ parsec-bin ]; - rustdesk = [ rustdesk ]; + rustdesk = [ rustdesk-flutter ]; + remmina = [ remmina ]; }; # Get packages for enabled clients diff --git a/modules/hm/common/multimedia/streaming.nix b/modules/hm/common/multimedia/streaming.nix index d972804..83a5f58 100755 --- a/modules/hm/common/multimedia/streaming.nix +++ b/modules/hm/common/multimedia/streaming.nix @@ -1,19 +1,21 @@ { pkgs, config, lib, ... }: let - cfg = config.modules.hm.multimedia.obs; + cfg = config.modules.hm.multimedia.streaming; in { - options.modules.hm.multimedia.obs = { - enable = lib.mkEnableOption "Enable OBS Studio for video recording and streaming"; + options.modules.hm.multimedia.streaming = { + obs.enable = lib.mkEnableOption "Enable OBS Studio for video recording and streaming"; + kooha.enable = lib.mkEnableOption "Enable Kooha for simple screen recording"; }; - config = lib.mkIf cfg.enable { - home.packages = (with pkgs; [ - v4l-utils - ]); + config = { + home.packages = (with pkgs; [] + ++ (lib.optional cfg.kooha.enable kooha) + ++ (lib.optional cfg.obs.enable v4l-utils) + ); - programs.obs-studio = { + programs.obs-studio = lib.mkIf cfg.obs.enable { enable = true; plugins = with pkgs.obs-studio-plugins; [ wlrobs From 3976e1ec5d5ff9a319a01a9442cc63e82f394359 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:42:01 +0200 Subject: [PATCH 32/50] feat: remove ngrok configuration and add Burp Suite module for security management --- modules/hm/common/network/tunnel.nix | 13 ------------- modules/hm/common/security/burp.nix | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 modules/hm/common/security/burp.nix diff --git a/modules/hm/common/network/tunnel.nix b/modules/hm/common/network/tunnel.nix index 87cbc68..fe26db4 100644 --- a/modules/hm/common/network/tunnel.nix +++ b/modules/hm/common/network/tunnel.nix @@ -42,13 +42,6 @@ let }; }; - ngrokConfig = lib.mkIf (builtins.elem "ngrok" cfg.services && cfg.ngrok.configPath != null) { - home.file.".config/ngrok/ngrok.yml" = { - source = cfg.ngrok.configPath; - target.recursive = true; - }; - }; - in { options.modules.hm.network.tunnel = { services = lib.mkOption { @@ -84,11 +77,6 @@ in { default = 3000; description = "Default port for ngrok"; }; - configPath = lib.mkOption { - type = lib.types.nullOr lib.types.str; - default = null; - description = "Path to ngrok config file"; - }; }; }; @@ -99,6 +87,5 @@ in { } cloudflareTokenConfig - ngrokConfig ]; } \ No newline at end of file diff --git a/modules/hm/common/security/burp.nix b/modules/hm/common/security/burp.nix new file mode 100644 index 0000000..4f53271 --- /dev/null +++ b/modules/hm/common/security/burp.nix @@ -0,0 +1,16 @@ +{ pkgs, lib, config, ... }: + +let + cfg = config.modules.hm.security.burp; +in +{ + options.modules.hm.security.burp = { + enable = lib.mkEnableOption "Enable Burp Suite Community Edition"; + }; + + config = lib.mkIf cfg.enable { + home.packages = (with pkgs; [ + burpsuite + ]); + }; +} From 498d2e9bcc985c1ba381cc5da113fd7c3e8539a3 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:42:08 +0200 Subject: [PATCH 33/50] feat: refactor Android configuration by removing Flutter support and streamlining environment setup --- .../system/common/dev/languages/flutter.nix | 61 +++---------------- 1 file changed, 8 insertions(+), 53 deletions(-) diff --git a/modules/system/common/dev/languages/flutter.nix b/modules/system/common/dev/languages/flutter.nix index 7ada6e5..4883954 100755 --- a/modules/system/common/dev/languages/flutter.nix +++ b/modules/system/common/dev/languages/flutter.nix @@ -1,68 +1,23 @@ { pkgs, lib, config, vars, ... }: let - cfg = config.modules.system.dev.languages.flutter; - - # Android SDK configuration - androidEnv = pkgs.androidenv.override { licenseAccepted = true; }; - androidComposition = androidEnv.composeAndroidPackages { - buildToolsVersions = cfg.android.buildToolsVersions; - platformVersions = cfg.android.platformVersions; - abiVersions = cfg.android.abiVersions; - }; - androidSdk = androidComposition.androidsdk; + cfg = config.modules.system.dev.languages.android; in { - options.modules.system.dev.languages.flutter = { - enable = lib.mkEnableOption "Flutter development environment"; - - withAndroid = lib.mkEnableOption "Include Android SDK tooling"; - - jdkPackage = lib.mkOption { - type = lib.types.package; - default = pkgs.jdk17; - description = "Java Development Kit package to use for Flutter development"; - }; - - android = { - buildToolsVersions = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ "34.0.0" "28.0.3" ]; - description = "List of Android build tools versions to include."; - }; - - platformVersions = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ "34" "28" ]; - description = "List of Android platform versions to include."; - }; - - abiVersions = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ "armeabi-v7a" "arm64-v8a" ]; - description = "List of Android ABI versions to include."; - }; - }; + options.modules.system.dev.languages.android = { + enable = lib.mkEnableOption "Android development environment"; }; config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + android-studio + ]; - environment.systemPackages = - [ - pkgs.flutter - cfg.jdkPackage - ] - ++ lib.optional cfg.withAndroid androidSdk; - - # Environment variables - environment.variables = lib.mkIf cfg.withAndroid { - ANDROID_HOME = "${androidSdk}/libexec/android-sdk"; - }; - - programs = lib.mkIf cfg.withAndroid { adb.enable = true; }; + programs.adb.enable = true; users.users.${vars.user}.extraGroups = [ "adbusers" + "kvm" ]; }; } \ No newline at end of file From f45ea81acca100ccdd56eca84d30c4afc14d8ef6 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 20 Oct 2025 22:42:15 +0200 Subject: [PATCH 34/50] feat: update NixOS configurations for oak and seed-birch hosts; streamline imports and add management utilities --- hosts/oak/default.nix | 53 ++++++++-------- hosts/seed-birch/default.nix | 68 +++++++++++++++++++++ modules/hm/common/default.nix | 9 ++- modules/hm/desktops/hydenix.nix | 11 ++-- modules/hm/hosts/oak/default.nix | 7 ++- modules/hm/hosts/seed-birch/default.nix | 51 ++++++++++++++++ modules/system/common/default.nix | 1 - modules/system/hosts/oak/default.nix | 5 +- modules/system/hosts/seed-birch/default.nix | 48 +++++++++++++++ 9 files changed, 209 insertions(+), 44 deletions(-) create mode 100644 hosts/seed-birch/default.nix create mode 100644 modules/hm/hosts/seed-birch/default.nix create mode 100644 modules/system/hosts/seed-birch/default.nix diff --git a/hosts/oak/default.nix b/hosts/oak/default.nix index d6f872d..f6facb2 100644 --- a/hosts/oak/default.nix +++ b/hosts/oak/default.nix @@ -2,26 +2,17 @@ inputs, vars, lib, + system, ... }: let - pkgs = import inputs.hydenix.inputs.hydenix-nixpkgs { - inherit (inputs.hydenix.lib) system; + pkgs = import inputs.nixpkgs { + inherit system; config = { - android_sdk.accept_license = true; allowUnfree = true; }; overlays = [ - inputs.hydenix.lib.overlays - (final: prev: { - userPkgs = import inputs.nixpkgs { - inherit (inputs.hydenix.lib) system; - config = { - android_sdk.accept_license = true; - allowUnfree = true; - }; - }; - }) + inputs.hydenix.overlays.default ]; }; in @@ -29,8 +20,8 @@ in nixpkgs.pkgs = pkgs; imports = [ - inputs.hydenix.inputs.home-manager.nixosModules.home-manager - inputs.hydenix.lib.nixOsModules + inputs.home-manager.nixosModules.home-manager + inputs.hydenix.nixosModules.default ./hardware-configuration.nix ../../modules/system/hosts/oak @@ -44,13 +35,12 @@ in #! EDIT THIS SECTION # === Other common modules === - inputs.hydenix.inputs.nixos-hardware.nixosModules.common-pc - inputs.hydenix.inputs.nixos-hardware.nixosModules.common-pc-ssd - inputs.hydenix.inputs.nixos-hardware.nixosModules.asus-fa507nv + inputs.nixos-hardware.nixosModules.asus-fa507nv + inputs.nixos-hardware.nixosModules.common-pc-ssd + inputs.nixos-hardware.nixosModules.common-hidpi # High-DPI displays + inputs.nixos-hardware.nixosModules.common-pc-laptop # Laptops ]; - #boot.kernelParams = [ "video=HDMI-A-1:e" ]; - home-manager = { useGlobalPkgs = true; useUserPackages = true; @@ -73,14 +63,6 @@ in }; }; - hydenix = { - enable = true; - hostname = "oak"; - timezone = "Europe/Paris"; - locale = "fr_FR.UTF-8"; - gaming.enable = false; - }; - users.users.${vars.user} = { isNormalUser = true; #initialPassword = "${vars.user}"; @@ -94,7 +76,20 @@ in shell = pkgs.zsh; }; - hardware.nvidia.prime.amdgpuBusId = lib.mkForce "PCI:36:0:0"; + hydenix = { + enable = true; + hostname = "oak"; + timezone = "Europe/Paris"; + locale = "fr_FR.UTF-8"; + gaming.enable = false; + }; + + hardware = { + asus.battery.chargeUpto = 60; + nvidia.prime.amdgpuBusId = lib.mkForce "PCI:36:0:0"; + }; #boot.kernel.sysctl."net.ipv4.ip_unprivileged_port_start" = 0; + + system.stateVersion = "25.05"; } diff --git a/hosts/seed-birch/default.nix b/hosts/seed-birch/default.nix new file mode 100644 index 0000000..dacb14d --- /dev/null +++ b/hosts/seed-birch/default.nix @@ -0,0 +1,68 @@ +{ + inputs, + vars, + lib, + system, + ... +}: +let + pkgs = import inputs.nixpkgs { + inherit system; + config = { + allowUnfree = true; + }; + }; +in +{ + nixpkgs.pkgs = pkgs; + + imports = [ + ./hardware-configuration.nix + ../../modules/system/hosts/seed-birch + + + # === GPU-specific configurations === + + /* + For drivers, we are leveraging nixos-hardware + Most common drivers are below, but you can see more options here: https://github.com/NixOS/nixos-hardware + */ + + #! EDIT THIS SECTION + # === Other common modules === + inputs.nixos-hardware.nixosModules.common-pc-ssd + inputs.nixos-hardware.nixosModules.common-hidpi # High-DPI displays + inputs.nixos-hardware.nixosModules.common-pc-laptop # Laptops + ]; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { + inherit inputs; + }; + users."${vars.user}" = + { ... }: + { + # hm import + imports = [ + ../../modules/hm/hosts/seed-birch + ]; + }; + }; + + users.users.${vars.user} = { + isNormalUser = true; + #initialPassword = "${vars.user}"; + extraGroups = [ + "wheel" + "networkmanager" + "video" + "lp" + "scanner" + ]; + shell = pkgs.zsh; + }; + + system.stateVersion = "25.05"; +} diff --git a/modules/hm/common/default.nix b/modules/hm/common/default.nix index 39dcf29..f7e81f3 100644 --- a/modules/hm/common/default.nix +++ b/modules/hm/common/default.nix @@ -1,4 +1,4 @@ -{ inputs, lib, config, ... }: +{ inputs, lib, config, pkgs, ... }: let cfg = config.modules.hm.nh; in @@ -14,6 +14,7 @@ in ./dev/environments/containers.nix ./dev/environments/editor.nix ./dev/languages/dotnet.nix + ./dev/languages/kotlin.nix ./dev/languages/node.nix ./dev/languages/python.nix ./dev/languages/rust.nix @@ -35,8 +36,10 @@ in ./games/joystick.nix ./games/mangohud.nix + ./multimedia/editing/audio.nix ./multimedia/editing/image.nix ./multimedia/editing/video.nix + ./multimedia/management-utility.nix ./multimedia/player.nix ./multimedia/rambox.nix ./multimedia/remote-desktop.nix @@ -44,6 +47,8 @@ in ./network/tunnel.nix + ./security/burp.nix + ./shell/disk-usage.nix ./shell/tools.nix @@ -77,7 +82,7 @@ in config = { programs = { - home-manager.enable = true; + #home-manager.enable = true; nh = { enable = cfg.enable; clean = { diff --git a/modules/hm/desktops/hydenix.nix b/modules/hm/desktops/hydenix.nix index 66f9af4..a2fe4c7 100644 --- a/modules/hm/desktops/hydenix.nix +++ b/modules/hm/desktops/hydenix.nix @@ -19,8 +19,7 @@ in imports = [ ../common - inputs.hydenix.lib.homeModules - inputs.nix-index-database.homeModules.nix-index + inputs.hydenix.homeModules.default ]; options.desktops.hydenix = { @@ -165,12 +164,12 @@ in bind = ALT, Tab, cyclenext bind = ALT, Tab, bringactivetotop - bind = $mainMod+Ctrl, F, exec, rog-control-center bind = $mainMod Alt, G, exec, powermode-toggle.sh bind = $mainMod Alt, R, exec, random-theme.sh -all bind = $mainMod, M, exec, spotify + bind = $mainMod, O, exec, obsidian ${configHydenix.exec-once} ''; @@ -189,9 +188,9 @@ in source = ./random-theme.sh; executable = true; }; - ".local/share/waybar/layouts/mirage.jsonc" = { - source = ./mirage-waybar.jsonc; - }; + # ".local/share/waybar/layouts/mirage.jsonc" = { + # source = ./mirage-waybar.jsonc; + # }; }; }; } \ No newline at end of file diff --git a/modules/hm/hosts/oak/default.nix b/modules/hm/hosts/oak/default.nix index 0e90150..5edf3ab 100644 --- a/modules/hm/hosts/oak/default.nix +++ b/modules/hm/hosts/oak/default.nix @@ -26,10 +26,12 @@ multimedia = { editing.image.enable = true; player = { - clients = ["mpv" "jellyfin" "miru"]; + clients = ["mpv" "miru"]; jellyfin.rpc = true; }; rambox.enable = true; + #remote-desktop.clients = ["remmina"]; + management-utility.clients = ["nwg-displays"]; }; browser.clients = ["firefox"]; documentation = { @@ -38,7 +40,7 @@ }; dev = { environments = { - ides = ["vs-code" "android-studio" "datagrip" "webstorm" "phpstorm" "rider"]; + ides = ["vs-code" "datagrip" "rider"]; containers = { engine = ["podman"]; enableSocket = true; @@ -83,6 +85,7 @@ enable = true; excludedDirs = ["node_modules" "vendor" "storage" ".idea"]; }; + security.burp.enable = true; }; }; } diff --git a/modules/hm/hosts/seed-birch/default.nix b/modules/hm/hosts/seed-birch/default.nix new file mode 100644 index 0000000..f2d63d9 --- /dev/null +++ b/modules/hm/hosts/seed-birch/default.nix @@ -0,0 +1,51 @@ +{ + config, + ... +}: + +{ + imports = [ + ../../common + ]; + + config = { + modules.hm = { + #nh.flakePath = "~/Documents/dev/multi-stack-project/nixos/flakeHypr"; + shell = { + tools.enable = true; + disk-usage.tools = ["gdu"]; + }; + games = { + mangohud.enable = true; + enabledGames = ["minecraft"]; + }; + multimedia = { + editing.image.enable = true; + editing.audio.enable = true; + player = { + clients = ["mpv" "miru"]; + }; + remote-desktop.clients = ["rustdesk"]; + }; + browser.clients = ["firefox"]; + documentation = { + editors = ["onlyoffice"]; + obsidian.enable = true; + }; + dev = { + environments.ides = ["vs-code"]; + tools.nix.enable = true; + }; + communication = { + teams.enable = true; + mail.services = ["bluemail"]; + }; + utilities.safety.ianny = { + enable = true; + presets = ["safety" "game"]; + defaultPreset = "safety"; + }; + extra.syncthing-ignore.enable = true; + }; + }; +} diff --git a/modules/system/common/default.nix b/modules/system/common/default.nix index be8ce5a..4dbd5ac 100644 --- a/modules/system/common/default.nix +++ b/modules/system/common/default.nix @@ -14,7 +14,6 @@ ./networks/wol.nix ./nix - ./nix/linux-cachyos.nix ./nix/nix-garbage.nix ./nix/polkit.nix diff --git a/modules/system/hosts/oak/default.nix b/modules/system/hosts/oak/default.nix index ddf1487..5498b7e 100644 --- a/modules/system/hosts/oak/default.nix +++ b/modules/system/hosts/oak/default.nix @@ -27,10 +27,7 @@ security.passwordManager.backend = ["bitwarden"]; dev.languages = { php.enable = true; - flutter = { - enable = true; - withAndroid = true; - }; + android.enable = true; }; hardware.powersave = { enable = true; diff --git a/modules/system/hosts/seed-birch/default.nix b/modules/system/hosts/seed-birch/default.nix new file mode 100644 index 0000000..9f93705 --- /dev/null +++ b/modules/system/hosts/seed-birch/default.nix @@ -0,0 +1,48 @@ +{ vars, ... }: +{ + imports = [ + ../../common + ../../../wrapper/safing/module.nix + ]; + + modules.system = { + nix = { + nix-garbage = { + enable = true; + autoOptimiseStore = true; + }; + polkit.enable = true; + }; + games = { + clients = ["steam"]; + gamemode.enable = true; + }; + networks.vpn = ["tailscale"]; + server.storage.syncthing = { + enable = true; + dirSync = "/home/${vars.user}"; + subDir = "Documents"; + }; + security.passwordManager.backend = ["bitwarden"]; + hardware.powersave = { + enable = true; + architecture = "intel"; + enableBenchmarkTools = true; + forcePerfOnAC = false; + batteryHealth = { + enable = true; + chargeThresholds = { + start = 55; + stop = 60; + }; + }; + managePowerProfiles = false; + disk = [ ]; + }; + }; + +# services.portmaster = { +# enable = true; +# devmode.enable = true; +# }; +} From 4f4fcef2d008a0255339c1443e3748b86a98be60 Mon Sep 17 00:00:00 2001 From: Mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 22 Oct 2025 11:37:47 +0200 Subject: [PATCH 35/50] Update bug reporting and enhancement guidelines Added details for reporting bugs and enhancements. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 078715d..67f844d 100755 --- a/README.md +++ b/README.md @@ -168,6 +168,7 @@ We welcome contributions to flakeHypr! Here's how you can help: Open an issue via GitHub Include: + - Your NixOS version - Relevant hardware details - Logs and config snippets @@ -177,6 +178,7 @@ Include: Create an issue and label it enhancement Clearly describe: + - The use case - Suggested implementation or configuration options From 5219dfc63b8db519e29704f018cbdbfb14adfd91 Mon Sep 17 00:00:00 2001 From: Mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 22 Oct 2025 11:49:30 +0200 Subject: [PATCH 36/50] Delete TODO.md --- TODO.md | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100755 TODO.md diff --git a/TODO.md b/TODO.md deleted file mode 100755 index 9a9e815..0000000 --- a/TODO.md +++ /dev/null @@ -1,27 +0,0 @@ -# TODO - -- [ ] multi system for other hosts (laptop, desktop, vm, install liveusbs, etc) Host naming scheme: - -- 🌿 Desktop: fern -- 🌳 Laptop: oak -- 🌲 Media: pine -- 🪵 Server: cedar -- VMs: [hostname]-vm (fern-vm, oak-vm, cedar-vm) - -- [x] hydenix: some yubikey touch detection for hyprlock and waybar -- [x] bluemail -- [x] scalar -- [x] rust -- [x] ClamAV UI -- [ ] Navi default nix template -- [x] find replacement for diskonaut -- [x] Flutter -- [x] create own module for act-github -- [ ] Update flake -- [ ] Test workflows -- [x] Prisma module -- [x] Matrix Server -- [x] Deskflow -- [x] ping module -- [x] db module -- [x] nginx module From 8cb343a8d25123575110aa84b8e121f551ac2386 Mon Sep 17 00:00:00 2001 From: Mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:40:46 +0200 Subject: [PATCH 37/50] Update flake.nix --- flake.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index d7877e3..3d47a70 100755 --- a/flake.nix +++ b/flake.nix @@ -76,5 +76,11 @@ oak = self.nixosConfigurations.oak.config.system.build.toplevel; cedar = self.nixosConfigurations.cedar.config.system.build.toplevel; }; + + nixosModules = { + common = import ./modules/system/common; + hm = import ./modules/hm/common; + wrapper = import ./modules/wrapper; + }; }; -} \ No newline at end of file +} From eb48a7759362a651d23d882e30bbc67ef54c8762 Mon Sep 17 00:00:00 2001 From: Mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 22 Oct 2025 16:29:08 +0200 Subject: [PATCH 38/50] Refactor API configuration to support multiple clients --- modules/hm/common/utilities/api.nix | 31 ++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/modules/hm/common/utilities/api.nix b/modules/hm/common/utilities/api.nix index 8037723..44511d5 100644 --- a/modules/hm/common/utilities/api.nix +++ b/modules/hm/common/utilities/api.nix @@ -1,19 +1,32 @@ -{ config, lib, pkgs, ... }: - -with lib; +{ pkgs, lib, config, ... }: let cfg = config.modules.hm.utilities.api; - scalarApp = (import ../../../wrapper/scalar.nix { inherit pkgs lib config; }).scalarApp; + + # Map client to their packages + clientToPackage = { + scalar = (import ../../../wrapper/scalar.nix { inherit pkgs lib config; }).scalarApp; + yaak = pkgs.yaak; + }; + + # Get packages for enabled clients + clientPackages = lib.filter (pkg: pkg != null) + (map (client: clientToPackage.${client} or null) cfg.clients); + in { options.modules.hm.utilities.api = { - scalar.enable = mkEnableOption "Scalar desktop application"; + clients = lib.mkOption { + type = lib.types.listOf (lib.types.enum (lib.attrNames clientToPackage)); + default = []; + description = '' + Select which utilities (clients API) to install on your system. + You can choose one or multiple clients. + ''; + }; }; config = { - home.packages = [ - (lib.mkIf cfg.scalar.enable scalarApp) - ]; + home.packages = clientPackages; xdg.enable = true; }; -} \ No newline at end of file +} From db92d048c7f6d25ecf1aa8b1703c6b464ea08dfb Mon Sep 17 00:00:00 2001 From: Mirage <119869686+ClementBobin@users.noreply.github.com> Date: Thu, 23 Oct 2025 08:50:25 +0200 Subject: [PATCH 39/50] Update API configuration for scalar and yaak clients --- modules/hm/hosts/oak/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/hm/hosts/oak/default.nix b/modules/hm/hosts/oak/default.nix index 5edf3ab..291f5bd 100644 --- a/modules/hm/hosts/oak/default.nix +++ b/modules/hm/hosts/oak/default.nix @@ -74,7 +74,7 @@ matrix.clients = ["element"]; }; utilities = { - api.scalar.enable = true; + api.clients = ["scalar" "yaak"]; safety.ianny = { enable = true; presets = ["dev" "game"]; From dd22452339ea4cb5567e54e6d06804076212f9a0 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 27 Oct 2025 08:56:03 +0100 Subject: [PATCH 40/50] Remove caelestia dependencies from flake.nix and comment out its import in default.nix --- flake.nix | 3 --- modules/wrapper/default.nix | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index 3d47a70..458db62 100755 --- a/flake.nix +++ b/flake.nix @@ -11,9 +11,6 @@ hydenix.url = "github:richen604/hydenix"; nixos-hardware.url = "github:nixos/nixos-hardware/master"; - caelestia-shell.url = "github:caelestia-dots/shell"; - caelestia-cli.url = "github:caelestia-dots/cli"; - nix-podman-stacks = { url = "github:Tarow/nix-podman-stacks"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/wrapper/default.nix b/modules/wrapper/default.nix index ca9c7d4..a3b42bf 100644 --- a/modules/wrapper/default.nix +++ b/modules/wrapper/default.nix @@ -4,7 +4,7 @@ imports = [ ./safing/module.nix ./safing/package.nix - ./caelestia.nix + #./caelestia.nix ./hayase.nix ./hyprDisplays.nix ./hyprpaper.nix From 6c20c1804c7579f05e0f130e49f19c38f23e2e9a Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 27 Oct 2025 08:56:08 +0100 Subject: [PATCH 41/50] Remove caelestia-related entries from flake.lock and delete info.txt --- flake.lock | 259 ++++++++++------------------------------------------- info.txt | 112 ----------------------- 2 files changed, 47 insertions(+), 324 deletions(-) delete mode 100644 info.txt diff --git a/flake.lock b/flake.lock index aa4ca52..5c3d445 100755 --- a/flake.lock +++ b/flake.lock @@ -1,103 +1,15 @@ { "nodes": { - "caelestia-cli": { - "inputs": { - "caelestia-shell": "caelestia-shell", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1760579631, - "narHash": "sha256-tbVkahmVPiPB/Ukcq7LH4DCVok+K5FEKIaS5cTMeeDk=", - "owner": "caelestia-dots", - "repo": "cli", - "rev": "40fbf3bd68668e72f224c02b784b9932a902d2a0", - "type": "github" - }, - "original": { - "owner": "caelestia-dots", - "repo": "cli", - "type": "github" - } - }, - "caelestia-cli_2": { - "inputs": { - "caelestia-shell": [ - "caelestia-shell" - ], - "nixpkgs": [ - "caelestia-shell", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1760147156, - "narHash": "sha256-ad+1gnp7Lm7jVSzqvGjMiwnA0P61dFZmp6HcRMXicWY=", - "owner": "caelestia-dots", - "repo": "cli", - "rev": "e9668d58f51e935094e50090b99301df8344f590", - "type": "github" - }, - "original": { - "owner": "caelestia-dots", - "repo": "cli", - "type": "github" - } - }, - "caelestia-shell": { - "inputs": { - "caelestia-cli": [ - "caelestia-cli" - ], - "nixpkgs": [ - "caelestia-cli", - "nixpkgs" - ], - "quickshell": "quickshell" - }, - "locked": { - "lastModified": 1760497394, - "narHash": "sha256-/4Hf/irgPh+gRQAcCNjXyXFcUGOrXMX8+OtOwbscbXk=", - "owner": "caelestia-dots", - "repo": "shell", - "rev": "4cb1048fdd6fa281baa0efa36c8c82ddd2cc43a3", - "type": "github" - }, - "original": { - "owner": "caelestia-dots", - "repo": "shell", - "type": "github" - } - }, - "caelestia-shell_2": { - "inputs": { - "caelestia-cli": "caelestia-cli_2", - "nixpkgs": "nixpkgs_2", - "quickshell": "quickshell_2" - }, - "locked": { - "lastModified": 1760497394, - "narHash": "sha256-/4Hf/irgPh+gRQAcCNjXyXFcUGOrXMX8+OtOwbscbXk=", - "owner": "caelestia-dots", - "repo": "shell", - "rev": "4cb1048fdd6fa281baa0efa36c8c82ddd2cc43a3", - "type": "github" - }, - "original": { - "owner": "caelestia-dots", - "repo": "shell", - "type": "github" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1759362264, - "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", + "lastModified": 1760813311, + "narHash": "sha256-lbHQ7FXGzt6/IygWvJ1lCq+Txcut3xYYd6VIpF1ojkg=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", + "rev": "4e627ac2e1b8f1de7f5090064242de9a259dbbc8", "type": "github" }, "original": { @@ -149,11 +61,11 @@ ] }, "locked": { - "lastModified": 1760500983, - "narHash": "sha256-zfY4F4CpeUjTGgecIJZ+M7vFpwLc0Gm9epM/iMQd4w8=", + "lastModified": 1761235135, + "narHash": "sha256-cux9xeceLIER1lBxUa1gMafkz7gg5ntcUmJBynWdBWI=", "owner": "nix-community", "repo": "home-manager", - "rev": "c53e65ec92f38d30e3c14f8d628ab55d462947aa", + "rev": "0adf9ba3f567da2d53af581a857aacf671aaa547", "type": "github" }, "original": { @@ -170,11 +82,11 @@ ] }, "locked": { - "lastModified": 1760130406, - "narHash": "sha256-GKMwBaFRw/C1p1VtjDz4DyhyzjKUWyi1K50bh8lgA2E=", + "lastModified": 1760809591, + "narHash": "sha256-OxGcFcQdfOK8veZkPdQuqXIotFYiy4sBQB58dMNLeHY=", "owner": "nix-community", "repo": "home-manager", - "rev": "d305eece827a3fe317a2d70138f53feccaf890a1", + "rev": "870883ba11ba1c84f756c0c1f9fa74cdb2a16c1e", "type": "github" }, "original": { @@ -296,14 +208,14 @@ "hyq": "hyq", "nix-index-database": "nix-index-database", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1760228745, - "narHash": "sha256-HREHDON4AJZKFzpee14g1ooqSJ+Z6pA+sDH9n4Nbqf8=", + "lastModified": 1760939773, + "narHash": "sha256-4GmUuKRj7GXi4uyMQ9FzFrUgeNhOp9qtDlaz+oBHGXE=", "owner": "richen604", "repo": "hydenix", - "rev": "a387ed3b0e0e94d188610882b1da65d3e9e24026", + "rev": "4d6a7cb846cdc9c651f5d55b3e1f3356cff305b0", "type": "github" }, "original": { @@ -365,14 +277,14 @@ "nix-gaming": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1760579393, - "narHash": "sha256-YuXbuaJ/2EZ1FePhz1eTyo/b+kpiEmw4lj6wX0u0Q/0=", + "lastModified": 1761184286, + "narHash": "sha256-yK/XQSwkOlgljcxNhlu08Zyp96DzF4eIU1leyWjyNZE=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "7d002241668a738df3973a6c07ef5d79e5508b24", + "rev": "8ac5469d67b8c197832575db87f6bde38032a947", "type": "github" }, "original": { @@ -389,11 +301,11 @@ ] }, "locked": { - "lastModified": 1759637156, - "narHash": "sha256-8NI1SqntLfKl6Q0Luemc3aIboezSJElofUrqipF5g78=", + "lastModified": 1760241904, + "narHash": "sha256-OD7QnaGEVNdukYEbJbUNWPsvnDrpbZOZxVIk6Pt9Jhw=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "0ca69684091aa3a6b1fe994c4afeff305b15e915", + "rev": "c9f5ea45f25652ec2f771f9426ccacb21cbbaeaa", "type": "github" }, "original": { @@ -412,11 +324,11 @@ "sops-nix": "sops-nix" }, "locked": { - "lastModified": 1760603878, - "narHash": "sha256-4x3zNxwM9iwMbxJFH02eVTIVpS4ZXZaPfQPCekyQCBg=", + "lastModified": 1761238537, + "narHash": "sha256-OvddkXLZNigKCdI8syAiMn6fk2U+78Uwv08QUtO2iHo=", "owner": "Tarow", "repo": "nix-podman-stacks", - "rev": "61c185547d73dc12e632ea5455a4fd1b26ab9b89", + "rev": "3f26d3aed0e65688741a0e259d5df492d1f29087", "type": "github" }, "original": { @@ -443,11 +355,11 @@ }, "nixos-hardware_2": { "locked": { - "lastModified": 1760106635, - "narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", + "lastModified": 1760958188, + "narHash": "sha256-2m1S4jl+GEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", + "rev": "d6645c340ef7d821602fd2cd199e8d1eed10afbc", "type": "github" }, "original": { @@ -459,16 +371,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1760524057, - "narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", - "owner": "nixos", + "lastModified": 1744536153, + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -490,11 +402,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1760625687, - "narHash": "sha256-dYs4YRt+8Pl9iKiaHHyDmQVuVV/UF3iZZ4TK8drwTVE=", + "lastModified": 1761240007, + "narHash": "sha256-ra44LuR+0KX9xkGV5UBDDbY/G15wEHfKs5RgtrwVGjU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b7902c4646e82d9bf8415ea84cd30db01c4f69ce", + "rev": "3adb06cb306a191a7ec4bbafc8702315fab2d0b3", "type": "github" }, "original": { @@ -506,27 +418,27 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1760038930, - "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", + "lastModified": 1760524057, + "narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", + "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", "repo": "nixpkgs", + "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", "type": "github" } }, "nixpkgs_3": { "locked": { - "lastModified": 1744536153, - "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", + "lastModified": 1760596604, + "narHash": "sha256-J/i5K6AAz/y5dBePHQOuzC7MbhyTOKsd/GLezSbEFiM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", + "rev": "3cbe716e2346710d6e1f7c559363d14e11c32a43", "type": "github" }, "original": { @@ -538,43 +450,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1760038930, - "narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1760103332, - "narHash": "sha256-BMsGVfKl4Q80Pr9T1AkCRljO1bpwCmY8rTBVj8XGuhA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "870493f9a8cb0b074ae5b411b2f232015db19a65", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1760524057, - "narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", + "lastModified": 1761114652, + "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", + "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", "type": "github" }, "original": { @@ -584,65 +464,20 @@ "type": "github" } }, - "quickshell": { - "inputs": { - "nixpkgs": [ - "caelestia-cli", - "caelestia-shell", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1760228179, - "narHash": "sha256-4Z6k7lv3Zcgk3K+4h60LpqB9wCkR+utkYERU735U068=", - "ref": "refs/heads/master", - "rev": "c9d3ffb6043c5bf3f3009202bad7e0e5132c4a25", - "revCount": 693, - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - }, - "original": { - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - } - }, - "quickshell_2": { - "inputs": { - "nixpkgs": [ - "caelestia-shell", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1760228179, - "narHash": "sha256-4Z6k7lv3Zcgk3K+4h60LpqB9wCkR+utkYERU735U068=", - "ref": "refs/heads/master", - "rev": "c9d3ffb6043c5bf3f3009202bad7e0e5132c4a25", - "revCount": 693, - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - }, - "original": { - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - } - }, "root": { "inputs": { - "caelestia-cli": "caelestia-cli", - "caelestia-shell": "caelestia-shell_2", "home-manager": "home-manager", "hydenix": "hydenix", "nix-gaming": "nix-gaming", "nix-podman-stacks": "nix-podman-stacks", "nixos-hardware": "nixos-hardware_2", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_4", "nixpkgs-stable": "nixpkgs-stable" } }, "rust-overlay": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1754880555, diff --git a/info.txt b/info.txt deleted file mode 100644 index 262e2f0..0000000 --- a/info.txt +++ /dev/null @@ -1,112 +0,0 @@ - /* - ! Below are defaults - - comma.enable = true; # useful nix tool to run software without installing it first - dolphin.enable = true; # file manager - editors = { - enable = true; # enable editors module - neovim.enable = true; # enable neovim module - vscode = { - enable = true; # enable vscode module - wallbash = true; # enable wallbash extension for vscode - }; - vim.enable = true; # enable vim module - default = "vim"; # default text editor - }; - fastfetch.enable = true; # fastfetch configuration - firefox = { - enable = true; # enable firefox module - useHydeConfig = false; # use hyde firefox configuration and extensions - useUserChrome = true; # if useHydeConfig is true, apply hyde userChrome CSS customizations - useUserJs = true; # if useHydeConfig is true, apply hyde user.js preferences - useExtensions = true; # if useHydeConfig is true, install hyde firefox extensions - }; - git = { - enable = true; # enable git module - name = null; # git user name eg "John Doe" - email = null; # git user email eg "john.doe@example.com" - }; - hyde.enable = true; # enable hyde module - hyprland.enable = true; # enable hyprland module - lockscreen = { - enable = true; # enable lockscreen module - hyprlock = true; # enable hyprlock lockscreen - swaylock = false; # enable swaylock lockscreen - }; - notifications.enable = true; # enable notifications module - qt.enable = true; # enable qt module - rofi.enable = true; # enable rofi module - screenshots = { - enable = true; # enable screenshots module - grim.enable = true; # enable grim screenshot tool - slurp.enable = true; # enable slurp region selection tool - satty.enable = true; # enable satty screenshot annotation tool - swappy.enable = false; # enable swappy screenshot editor - }; - shell = { - enable = true; # enable shell module - zsh.enable = true; # enable zsh shell - zsh.configText = ""; # zsh config text - bash.enable = false; # enable bash shell - fish.enable = false; # enable fish shell - pokego.enable = true; # enable Pokemon ASCII art scripts - }; - social = { - enable = true; # enable social module - discord.enable = true; # enable discord module - webcord.enable = true; # enable webcord module - vesktop.enable = true; # enable vesktop module - }; - spotify.enable = true; # enable spotify module - swww.enable = true; # enable swww wallpaper daemon - terminals = { - enable = true; # enable terminals module - kitty = { - enable = true; # enable kitty terminal - configText = ""; # kitty config text - }; - }; - theme = { - enable = true; # enable theme module - active = "Catppuccin Mocha"; # active theme name - themes = [ - "Another World" - "Cat Latte" - "Catppuccin Mocha" - "Catppuccin Latte" - "Crimson Blade" - "Ever Blushing" - "Green Lush" - "Greenify" - "Ice Age" - "Moonlight" - "One Dark" - "Oxo Carbon" - "Paranoid Sweet" - "Pixel Dream" - "Rain Dark" - "Red Stone" - "Rosé Pine" - "Sci-fi" - "Tokyo Night" - ]; # default enabled themes, full list in https://github.com/richen604/hydenix/tree/main/hydenix/sources/themes - }; - waybar.enable = true; # enable waybar module - wlogout.enable = true; # enable wlogout module - xdg.enable = true; # enable xdg module - */ - - - tarow.podman = { - hostIP4Address = "127.0.0.1"; - # This is the UID of the user that will own the podman containers - # and volumes created by tarow.podman. - # It should match the UID of the user running the tarow.podman service. - # If you are not sure, you can find it by running `id -u` in the terminal. - hostUid = 1000; - externalStorageBaseDir = "${config.home.homeDirectory}/podman-stoorage"; - - stacks = { - homepage.enable = true; - }; - }; \ No newline at end of file From 308f278b94fb5418eba134fb0cdccef1c2e2f9b4 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 27 Oct 2025 08:56:15 +0100 Subject: [PATCH 42/50] Add Modrinth Launcher for Minecraft and clean up Star Citizen packages --- modules/hm/common/games/games.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/hm/common/games/games.nix b/modules/hm/common/games/games.nix index f633f43..b073121 100644 --- a/modules/hm/common/games/games.nix +++ b/modules/hm/common/games/games.nix @@ -9,6 +9,10 @@ let packages = with pkgs; [ prismlauncher jdk17 gcc glibc ]; description = "Minecraft Launcher with PrismLauncher"; }; + minecraft-modrinth = { + packages = with pkgs; [ modrinth-app jdk17 gcc glibc ]; + description = "Minecraft Launcher with Modrinth Launcher"; + }; titanfall2 = { packages = with inputs.nix-gaming.packages.${pkgs.system}; [ viper (lib.hiPrio northstar-proton) ]; description = "Titanfall 2 via nix-gaming"; @@ -22,7 +26,7 @@ let description = "Rocket League via nix-gaming"; }; star-citizen = { - packages = [ inputs.nix-gaming.packages.${pkgs.system}.star-citizen pkgs.lug-helper ]; + packages = [ inputs.nix-gaming.packages.${pkgs.system}.star-citizen ]; #pkgs.lug-helper ]; description = "Star Citizen Launcher"; }; geforce-now = { From dd521a3ff6d85879e6acfc118de8a2b1cff20479 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Mon, 27 Oct 2025 08:56:19 +0100 Subject: [PATCH 43/50] Add requestly package to clientToPackage mapping in api.nix --- modules/hm/common/utilities/api.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/hm/common/utilities/api.nix b/modules/hm/common/utilities/api.nix index 44511d5..f19aa58 100644 --- a/modules/hm/common/utilities/api.nix +++ b/modules/hm/common/utilities/api.nix @@ -7,6 +7,7 @@ let clientToPackage = { scalar = (import ../../../wrapper/scalar.nix { inherit pkgs lib config; }).scalarApp; yaak = pkgs.yaak; + requestly = pkgs.requestly; }; # Get packages for enabled clients From dca0efb84eaa63d4b2b5501af0d58ea04dbb9957 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:24:52 +0100 Subject: [PATCH 44/50] Update flake.lock with new revisions and hashes for dependencies --- flake.lock | 98 +++++++++++++++++++++++++++--------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/flake.lock b/flake.lock index 5c3d445..e60aa1d 100755 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1760813311, - "narHash": "sha256-lbHQ7FXGzt6/IygWvJ1lCq+Txcut3xYYd6VIpF1ojkg=", + "lastModified": 1762440070, + "narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4e627ac2e1b8f1de7f5090064242de9a259dbbc8", + "rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8", "type": "github" }, "original": { @@ -61,11 +61,11 @@ ] }, "locked": { - "lastModified": 1761235135, - "narHash": "sha256-cux9xeceLIER1lBxUa1gMafkz7gg5ntcUmJBynWdBWI=", + "lastModified": 1762964643, + "narHash": "sha256-RYHN8O/Aja59XDji6WSJZPkJpYVUfpSkyH+PEupBJqM=", "owner": "nix-community", "repo": "home-manager", - "rev": "0adf9ba3f567da2d53af581a857aacf671aaa547", + "rev": "827f2a23373a774a8805f84ca5344654c31f354b", "type": "github" }, "original": { @@ -82,11 +82,11 @@ ] }, "locked": { - "lastModified": 1760809591, - "narHash": "sha256-OxGcFcQdfOK8veZkPdQuqXIotFYiy4sBQB58dMNLeHY=", + "lastModified": 1762041416, + "narHash": "sha256-rmJKABRXnhFjjI6RB/MnEvLTQa569zu684Th9y6UlOI=", "owner": "nix-community", "repo": "home-manager", - "rev": "870883ba11ba1c84f756c0c1f9fa74cdb2a16c1e", + "rev": "c0016dd14773f4ca0b467b74c7cdcc501570df4b", "type": "github" }, "original": { @@ -164,11 +164,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1754887268, - "narHash": "sha256-TsiA83Gd16VfIMatHa6o56Rvf7Vi2Lr/9ch9T6+n/qg=", + "lastModified": 1762476031, + "narHash": "sha256-cyCRPPqpSwjh4XN2RzCmlpOMBC2p9/GP4CCdBCS9Rww=", "owner": "richen604", "repo": "hyde-ipc", - "rev": "016b6e7bd5959a18c2cefeb4a952098468f6bb8f", + "rev": "324839b4b4d45ed2760e4fca6a796a47a0704b2a", "type": "github" }, "original": { @@ -211,11 +211,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1760939773, - "narHash": "sha256-4GmUuKRj7GXi4uyMQ9FzFrUgeNhOp9qtDlaz+oBHGXE=", + "lastModified": 1762539222, + "narHash": "sha256-XCE8t8FWjo7eQeuGUHevSaFHtmXCLm6fD0AKFl7DYWQ=", "owner": "richen604", "repo": "hydenix", - "rev": "4d6a7cb846cdc9c651f5d55b3e1f3356cff305b0", + "rev": "53230b2bb8dc633ea367c196e9e14d337e5435a3", "type": "github" }, "original": { @@ -280,11 +280,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1761184286, - "narHash": "sha256-yK/XQSwkOlgljcxNhlu08Zyp96DzF4eIU1leyWjyNZE=", + "lastModified": 1762826226, + "narHash": "sha256-M4rbwlO4peCHRvA+WNYCmg8je4YBF7kSY9tG+p1kEKo=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "8ac5469d67b8c197832575db87f6bde38032a947", + "rev": "eefca17cb40462878ee1c46ac6910b2ec21adaa8", "type": "github" }, "original": { @@ -301,11 +301,11 @@ ] }, "locked": { - "lastModified": 1760241904, - "narHash": "sha256-OD7QnaGEVNdukYEbJbUNWPsvnDrpbZOZxVIk6Pt9Jhw=", + "lastModified": 1761451000, + "narHash": "sha256-qBJL6xEIjqYq9zOcG2vf2nPTeVBppNJzvO0LuQWMwMo=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "c9f5ea45f25652ec2f771f9426ccacb21cbbaeaa", + "rev": "ed6b293161b378a7368cda38659eb8d3d9a0dac4", "type": "github" }, "original": { @@ -324,11 +324,11 @@ "sops-nix": "sops-nix" }, "locked": { - "lastModified": 1761238537, - "narHash": "sha256-OvddkXLZNigKCdI8syAiMn6fk2U+78Uwv08QUtO2iHo=", + "lastModified": 1762951475, + "narHash": "sha256-dJN5dTk4hPIm1J+hxhcv+eKWFbW19DZRvwqrTBga7Ss=", "owner": "Tarow", "repo": "nix-podman-stacks", - "rev": "3f26d3aed0e65688741a0e259d5df492d1f29087", + "rev": "4868df952dfa37742f705a188b77a795cdace88b", "type": "github" }, "original": { @@ -339,11 +339,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1760106635, - "narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", + "lastModified": 1761933221, + "narHash": "sha256-rNHeoG3ZrA94jczyLSjxCtu67YYPYIlXXr0uhG3wNxM=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", + "rev": "7467f155fcba189eb088a7601f44fbef7688669b", "type": "github" }, "original": { @@ -355,11 +355,11 @@ }, "nixos-hardware_2": { "locked": { - "lastModified": 1760958188, - "narHash": "sha256-2m1S4jl+GEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU=", + "lastModified": 1762847253, + "narHash": "sha256-BWWnUUT01lPwCWUvS0p6Px5UOBFeXJ8jR+ZdLX8IbrU=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "d6645c340ef7d821602fd2cd199e8d1eed10afbc", + "rev": "899dc449bc6428b9ee6b3b8f771ca2b0ef945ab9", "type": "github" }, "original": { @@ -387,11 +387,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1754788789, - "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", + "lastModified": 1761765539, + "narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", + "rev": "719359f4562934ae99f5443f20aa06c2ffff91fc", "type": "github" }, "original": { @@ -402,11 +402,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1761240007, - "narHash": "sha256-ra44LuR+0KX9xkGV5UBDDbY/G15wEHfKs5RgtrwVGjU=", + "lastModified": 1762969366, + "narHash": "sha256-t3tgTf39fDhlB/OK9qLCrWIollHLUxvSgSCq4EPXvuA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3adb06cb306a191a7ec4bbafc8702315fab2d0b3", + "rev": "13bf1bae0eb389c7b593ccbbe44f37cd49095eca", "type": "github" }, "original": { @@ -418,27 +418,27 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1760524057, - "narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=", + "lastModified": 1761907660, + "narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=", "owner": "nixos", "repo": "nixpkgs", - "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", + "rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15", "type": "github" }, "original": { "owner": "nixos", "repo": "nixpkgs", - "rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5", + "rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15", "type": "github" } }, "nixpkgs_3": { "locked": { - "lastModified": 1760596604, - "narHash": "sha256-J/i5K6AAz/y5dBePHQOuzC7MbhyTOKsd/GLezSbEFiM=", + "lastModified": 1762361079, + "narHash": "sha256-lz718rr1BDpZBYk7+G8cE6wee3PiBUpn8aomG/vLLiY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3cbe716e2346710d6e1f7c559363d14e11c32a43", + "rev": "ffcdcf99d65c61956d882df249a9be53e5902ea5", "type": "github" }, "original": { @@ -450,11 +450,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1761114652, - "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "lastModified": 1762844143, + "narHash": "sha256-SlybxLZ1/e4T2lb1czEtWVzDCVSTvk9WLwGhmxFmBxI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", + "rev": "9da7f1cf7f8a6e2a7cb3001b048546c92a8258b4", "type": "github" }, "original": { @@ -480,11 +480,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1754880555, - "narHash": "sha256-tG6l0wiX8V8IvG4HFYY8IYN5vpNAxQ+UWunjjpE6SqU=", + "lastModified": 1762396738, + "narHash": "sha256-BarSecuxtzp1boERdABLkkoxQTi6s/V33lJwUbWLrLY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "17c591a44e4eb77f05f27cd37e1cfc3f219c7fc4", + "rev": "c63598992afd54d215d54f2b764adc0484c2b159", "type": "github" }, "original": { From dde8b4d8a02ca8b93ba0c63e1718896ce24b3fbc Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:24:57 +0100 Subject: [PATCH 45/50] Add result symlink for NixOS system --- result | 1 + 1 file changed, 1 insertion(+) create mode 120000 result diff --git a/result b/result new file mode 120000 index 0000000..c3de6eb --- /dev/null +++ b/result @@ -0,0 +1 @@ +/nix/store/pcqgdvd7f2mbil1px790856fnjnz2wgr-nixos-system-oak-25.11.20251022.01f116e \ No newline at end of file From c40d000e56c1bac6962e848de2e9428005db083c Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:25:05 +0100 Subject: [PATCH 46/50] Update hayase version to 6.4.37 and fix download URL --- modules/wrapper/hayase.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/wrapper/hayase.nix b/modules/wrapper/hayase.nix index dcae361..6b240ff 100644 --- a/modules/wrapper/hayase.nix +++ b/modules/wrapper/hayase.nix @@ -5,15 +5,15 @@ let pname = "hayase"; - version = "6.4.23"; - hash = "sha256-lP1F1jFXenFDyLX04YZZ00KhG21LUU2OaI0OvHxpgNo="; + version = "6.4.37"; + hash = "sha256-7fXu8ySC8FioLA1PlyorS6F7Kv34nlo8Djhj54kCEOI="; in appimageTools.wrapType2 rec { inherit pname version; src = fetchurl { - url = "https://github.com/hayase-app/ui/releases/download/v${version}/linux-hayase-${version}-linux.AppImage"; + url = "https://github.com/hayase-app/docs/releases/download/v${version}/linux-hayase-${version}-linux.AppImage"; name = "${pname}-${version}.AppImage"; inherit hash; }; From 88769f2621b406280bf0ffb710b62366585471e9 Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:25:17 +0100 Subject: [PATCH 47/50] Refactor hardware configuration for improved Btrfs support and kernel module settings --- hosts/oak/hardware-configuration.nix | 84 +++++++++++++++++++++++----- 1 file changed, 71 insertions(+), 13 deletions(-) diff --git a/hosts/oak/hardware-configuration.nix b/hosts/oak/hardware-configuration.nix index e14fba8..81fd531 100644 --- a/hosts/oak/hardware-configuration.nix +++ b/hosts/oak/hardware-configuration.nix @@ -9,28 +9,86 @@ ]; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" ]; - boot.initrd.kernelModules = [ ]; + boot.initrd.kernelModules = [ "dm-snapshot" ]; boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; fileSystems."/" = - { device = "/dev/disk/by-uuid/9db27eac-7c19-48c0-bdbf-028bbe611afc"; - fsType = "ext4"; + { device = "/dev/mapper/vg--system-root"; + fsType = "btrfs"; + options = [ + "subvol=@" + "compress=zstd:1" + "noatime" + "ssd" + ]; }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/A3A3-0005"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/5A63-E7F1"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + fileSystems."/nix" = + { device = "/dev/mapper/vg--system-nix"; + fsType = "btrfs"; + options = [ + "subvol=@nix" + "compress=zstd:1" + "noatime" + "ssd" + ]; }; - fileSystems."/home/${vars.user}/mnt" = { - device = "/dev/disk/by-uuid/cd70c50f-c6c2-49c1-935a-854ba3e8c153"; - fsType = "ext4"; - options = [ "defaults" "noatime" "discard" "nofail" "errors=remount-ro" ]; - }; + fileSystems."/var/log" = + { device = "/dev/mapper/vg--system-log"; + fsType = "btrfs"; + options = [ + "subvol=@log" + "compress=zstd:3" + "noatime" + "ssd" + ]; + }; + + fileSystems."/home" = + { device = "/dev/mapper/vg--home-home"; + fsType = "btrfs"; + options = [ + "subvol=@home" + "compress=zstd:1" + "noatime" + "ssd" + "space_cache=v2" + ]; + }; + + fileSystems."/home/${vars.user}/games" = + { device = "/dev/mapper/vg--home-home"; + fsType = "btrfs"; + options = [ + "subvol=@games" + "compress=zstd:1" + "noatime" + "ssd" + ]; + neededForBoot = false; + }; + + fileSystems."/home/${vars.user}/Documents" = + { device = "/dev/mapper/vg--home-home"; + fsType = "btrfs"; + options = [ + "subvol=@Documents" + "compress=zstd:3" + "noatime" + "ssd" + ]; + neededForBoot = false; + }; - swapDevices = [ ]; + swapDevices = [{ device = "/dev/disk/by-uuid/ef2296c9-8615-4d43-88cf-cd82171ec49b"; }]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's From 5df74a69949e9d71dda036864492a209b788b88f Mon Sep 17 00:00:00 2001 From: mirage <119869686+ClementBobin@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:25:20 +0100 Subject: [PATCH 48/50] Update permitted insecure packages and set initial password for user --- hosts/oak/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hosts/oak/default.nix b/hosts/oak/default.nix index f6facb2..ff01aac 100644 --- a/hosts/oak/default.nix +++ b/hosts/oak/default.nix @@ -10,6 +10,9 @@ let inherit system; config = { allowUnfree = true; + permittedInsecurePackages = [ + "jitsi-meet-1.0.8792" + ]; }; overlays = [ inputs.hydenix.overlays.default @@ -23,6 +26,7 @@ in inputs.home-manager.nixosModules.home-manager inputs.hydenix.nixosModules.default ./hardware-configuration.nix + #./temp.nix ../../modules/system/hosts/oak @@ -65,7 +69,7 @@ in users.users.${vars.user} = { isNormalUser = true; - #initialPassword = "${vars.user}"; + initialPassword = "epsilon21C"; extraGroups = [ "wheel" "networkmanager" From 4718a3fad900850160610ba69bcf7104b584ab75 Mon Sep 17 00:00:00 2001 From: Mirage <119869686+ClementBobin@users.noreply.github.com> Date: Fri, 14 Nov 2025 10:27:11 +0100 Subject: [PATCH 49/50] Comment out initialPassword for user configuration --- hosts/oak/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/oak/default.nix b/hosts/oak/default.nix index ff01aac..6be436c 100644 --- a/hosts/oak/default.nix +++ b/hosts/oak/default.nix @@ -69,7 +69,7 @@ in users.users.${vars.user} = { isNormalUser = true; - initialPassword = "epsilon21C"; + #initialPassword = "mirage"; extraGroups = [ "wheel" "networkmanager" From ec69e8b13c412edf3630c7801c05aa2208647493 Mon Sep 17 00:00:00 2001 From: Mirage <119869686+ClementBobin@users.noreply.github.com> Date: Fri, 14 Nov 2025 10:27:26 +0100 Subject: [PATCH 50/50] Change initial password to use username variable --- hosts/oak/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/oak/default.nix b/hosts/oak/default.nix index 6be436c..ba4858f 100644 --- a/hosts/oak/default.nix +++ b/hosts/oak/default.nix @@ -69,7 +69,7 @@ in users.users.${vars.user} = { isNormalUser = true; - #initialPassword = "mirage"; + #initialPassword = "${vars.user}"; extraGroups = [ "wheel" "networkmanager"