From 80feae205a866ed807f8425b355152f194e952d0 Mon Sep 17 00:00:00 2001 From: muon Date: Fri, 20 Mar 2026 12:40:46 +0000 Subject: [PATCH 01/13] Update freetube --- _sources/generated.json | 160 ++++++++++++--------- _sources/generated.nix | 99 +++++++------ flake.lock | 36 ++--- hosts/muon/configuration.nix | 3 +- modules/home/desktop/productivity.nix | 2 +- modules/home/desktop/social.nix | 12 +- modules/home/terminal/opencode/default.nix | 2 +- nvfetcher.toml | 5 + 8 files changed, 184 insertions(+), 135 deletions(-) diff --git a/_sources/generated.json b/_sources/generated.json index ebf115a..bc5918f 100644 --- a/_sources/generated.json +++ b/_sources/generated.json @@ -1,34 +1,54 @@ { + "freetube": { + "cargoLock": null, + "date": "2026-03-18", + "extract": null, + "name": "freetube", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "rev": "d5cf1d713ba9348b13d94c122ba0fb72694e51d3", + "sha256": "sha256-g9bMYIxHXcL8+apBD682sZHeifLfyVhI5oTNoPPNs5o=", + "sparseCheckout": [], + "type": "git", + "url": "https://github.com/ddogfoodd/nixpkgs.git" + }, + "version": "d5cf1d713ba9348b13d94c122ba0fb72694e51d3" + }, "valheim.aaacrafting": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.aaacrafting", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-YcKuJKSuhOYZVRNTfp1fYW+STecRYn/IrNVdOeC+rIE=", + "sha256": "sha256-XdVVDXU/YfXHnpgjfDixFvRRIn+liunVSXqmGMLXGKY=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/2.1.5/" + "url": "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/2.1.6/" }, - "version": "2.1.5" + "version": "2.1.6" }, "valheim.architect": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.architect", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-osxAsTjTyVH2qG69vMxr3LH1p1Y+8g6acGHqbfdz8fs=", + "sha256": "sha256-tNlufmp8rMKBzcRWSp0o8FbtrPOpS5OZJACnG7N1Iqc=", "type": "tarball", - "url": "https://thunderstore.io/package/download/OdinPlus/OdinArchitect/1.6.4/" + "url": "https://thunderstore.io/package/download/OdinPlus/OdinArchitect/1.6.5/" }, - "version": "1.6.4" + "version": "1.6.5" }, "valheim.arearepair": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.arearepair", @@ -42,35 +62,35 @@ "version": "1.1.6" }, "valheim.autostore": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.autostore", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-h75EnPCQSXMrpDTNaxBHnG4hjYLzICYdU+sE0i/Hud4=", + "sha256": "sha256-ZSGQTxWtTBLrGU9oRPrXgLAauiwWVQQ2gv0Rzq7FHw4=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.11/" + "url": "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.14/" }, - "version": "3.0.11" + "version": "3.0.14" }, "valheim.backpacks": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.backpacks", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-xSfcLisLLPALx6l1Rtbt10YFUo112HV2I6BO/zCjr5w=", + "sha256": "sha256-ZHvN8J6DsRXRSzVZ3K12WSRtdKt40hMtzHMkYxl0ttU=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Smoothbrain/Backpacks/1.3.6/" + "url": "https://thunderstore.io/package/download/Smoothbrain/Backpacks/1.3.8/" }, - "version": "1.3.6" + "version": "1.3.8" }, "valheim.betternetworking": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.betternetworking", @@ -84,7 +104,7 @@ "version": "2.3.2" }, "valheim.boneappetit": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.boneappetit", @@ -98,21 +118,21 @@ "version": "3.3.1" }, "valheim.campsite": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.campsite", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-hQzKXIVxbdq73E0NZlNX+aYLS5Mg6uczX8F8GKFUtec=", + "sha256": "sha256-vioZ7NoIWLfO0XlRCe/BEyRaouy1Kl+cPl0QXSyqjC8=", "type": "tarball", - "url": "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.6.1/" + "url": "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.6.3/" }, - "version": "1.6.1" + "version": "1.6.3" }, "valheim.cartography": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.cartography", @@ -126,21 +146,21 @@ "version": "3.1.1" }, "valheim.craftyboxes": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.craftyboxes", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-+EKD+kBj7JHrwDi/yMPus8MZRtBApX7bOqPRrA3iXoY=", + "sha256": "sha256-P7NucjydUf9TMJi8ObfTBA+WQsxKxeaM7N8N7mSDELY=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.12/" + "url": "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.14/" }, - "version": "1.8.12" + "version": "1.8.14" }, "valheim.customships": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.customships", @@ -154,21 +174,21 @@ "version": "0.4.1" }, "valheim.extendedinv": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.extendedinv", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-PDmlJw4hfMg1fqO/hPrT6Oss0Czci/Chvr+vz79m5JI=", + "sha256": "sha256-mua5nD0BLzkBFIfkfOIAUPQGlOP4sTQ9eqBqrJJJG3w=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/2.2.2/" + "url": "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/2.4.1/" }, - "version": "2.2.2" + "version": "2.4.1" }, "valheim.foodmove": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.foodmove", @@ -182,21 +202,21 @@ "version": "1.0.1" }, "valheim.jotunn": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.jotunn", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-AfiWmmoCsDtmvjTPw7AdiPYQZ055dTwq5GFvDD93e2M=", + "sha256": "sha256-6Qh5hcXM886OiOpcg73EU35kvnyvTtyJ1+7CSPzBsSA=", "type": "tarball", - "url": "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.27.1/" + "url": "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.28.0/" }, - "version": "2.27.1" + "version": "2.28.0" }, "valheim.jsondotnet": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.jsondotnet", @@ -210,7 +230,7 @@ "version": "13.0.4" }, "valheim.lazyvikings": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.lazyvikings", @@ -224,21 +244,21 @@ "version": "1.2.3" }, "valheim.mining": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.mining", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-SxQ+Z4T5Hg5w4X4+L++eArWZXhoXuarecKl6gdpcpNQ=", + "sha256": "sha256-zWSIDugJchxIfzAt9Ktc37L6ez09iK77pUowUWTndgE=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Smoothbrain/Mining/1.1.5/" + "url": "https://thunderstore.io/package/download/Smoothbrain/Mining/1.1.6/" }, - "version": "1.1.5" + "version": "1.1.6" }, "valheim.missingpieces": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.missingpieces", @@ -252,7 +272,7 @@ "version": "2.2.2" }, "valheim.multiuserchest": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.multiuserchest", @@ -266,21 +286,21 @@ "version": "0.6.1" }, "valheim.planteasily": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.planteasily", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-HvjwiVBWs723LhHR7Xk6knugOU8eQewGiV+mZaAN5YU=", + "sha256": "sha256-A7WIMjNkkZoUD9xf5gswOv00/4j/NGkE+yD4gM+bAsY=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Advize/PlantEasily/2.0.3/" + "url": "https://thunderstore.io/package/download/Advize/PlantEasily/2.1.0/" }, - "version": "2.0.3" + "version": "2.1.0" }, "valheim.quickteleport": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.quickteleport", @@ -294,21 +314,21 @@ "version": "1.1.0" }, "valheim.reclaim": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.reclaim", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-MnaJ7ulZdDemBrSzKnsgL0BN7UfRfRueFJRiL0iwjB8=", + "sha256": "sha256-MIWKc6cdibXbFXKdMDdNsj7a1L6+jAMzJvhm79JQn/E=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.3.10/" + "url": "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.4.0/" }, - "version": "1.3.10" + "version": "1.4.0" }, "valheim.savecrossbow": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.savecrossbow", @@ -322,7 +342,7 @@ "version": "1.0.2" }, "valheim.seedbed": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.seedbed", @@ -336,7 +356,7 @@ "version": "1.2.8" }, "valheim.servercharacters": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.servercharacters", @@ -350,7 +370,7 @@ "version": "1.4.16" }, "valheim.smoothsave": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.smoothsave", @@ -364,7 +384,7 @@ "version": "1.0.5" }, "valheim.spearfishing": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.spearfishing", @@ -378,21 +398,21 @@ "version": "1.0.4" }, "valheim.swim": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.swim", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-ZNGOZDwLqZ+AisdQKvSU2imqdCQ84jgzT38L1Fp4g4g=", + "sha256": "sha256-3BsC+cFLMtuW9pat5vTqHPt1Ak6fbXStaq6Kk9CdU3c=", "type": "tarball", - "url": "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.4.0/" + "url": "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.4.1/" }, - "version": "1.4.0" + "version": "1.4.1" }, "valheim.swimequip": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.swimequip", @@ -406,21 +426,21 @@ "version": "1.1.3" }, "valheim.targetportal": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "valheim.targetportal", "passthru": null, "pinned": false, "src": { - "sha256": "sha256-qjeihonPwlja7sCRyKhJL53fWX4w1qfuFoOA6FAA7mw=", + "sha256": "sha256-mW73PrH+AwZGTYk2zr2/MOTa5RsP5rDr/HKIeKqo9DI=", "type": "tarball", - "url": "https://thunderstore.io/package/download/Smoothbrain/TargetPortal/1.2.1/" + "url": "https://thunderstore.io/package/download/Smoothbrain/TargetPortal/1.2.3/" }, - "version": "1.2.1" + "version": "1.2.3" }, "vesktop.micfix": { - "cargoLocks": null, + "cargoLock": null, "date": null, "extract": null, "name": "vesktop.micfix", diff --git a/_sources/generated.nix b/_sources/generated.nix index 25ffeef..e3833c5 100644 --- a/_sources/generated.nix +++ b/_sources/generated.nix @@ -1,20 +1,39 @@ # This file was generated by nvfetcher, please do not modify it manually. -{ fetchgit, fetchurl, fetchFromGitHub, dockerTools }: { + fetchgit, + fetchurl, + fetchFromGitHub, + dockerTools, +}: +{ + freetube = { + pname = "freetube"; + version = "d5cf1d713ba9348b13d94c122ba0fb72694e51d3"; + src = fetchgit { + url = "https://github.com/ddogfoodd/nixpkgs.git"; + rev = "d5cf1d713ba9348b13d94c122ba0fb72694e51d3"; + fetchSubmodules = false; + deepClone = false; + leaveDotGit = false; + sparseCheckout = [ ]; + sha256 = "sha256-g9bMYIxHXcL8+apBD682sZHeifLfyVhI5oTNoPPNs5o="; + }; + date = "2026-03-18"; + }; "valheim.aaacrafting" = { pname = "valheim.aaacrafting"; - version = "2.1.5"; + version = "2.1.6"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/2.1.5/"; - sha256 = "sha256-YcKuJKSuhOYZVRNTfp1fYW+STecRYn/IrNVdOeC+rIE="; + url = "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/2.1.6/"; + sha256 = "sha256-XdVVDXU/YfXHnpgjfDixFvRRIn+liunVSXqmGMLXGKY="; }; }; "valheim.architect" = { pname = "valheim.architect"; - version = "1.6.4"; + version = "1.6.5"; src = fetchTarball { - url = "https://thunderstore.io/package/download/OdinPlus/OdinArchitect/1.6.4/"; - sha256 = "sha256-osxAsTjTyVH2qG69vMxr3LH1p1Y+8g6acGHqbfdz8fs="; + url = "https://thunderstore.io/package/download/OdinPlus/OdinArchitect/1.6.5/"; + sha256 = "sha256-tNlufmp8rMKBzcRWSp0o8FbtrPOpS5OZJACnG7N1Iqc="; }; }; "valheim.arearepair" = { @@ -27,18 +46,18 @@ }; "valheim.autostore" = { pname = "valheim.autostore"; - version = "3.0.11"; + version = "3.0.14"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.11/"; - sha256 = "sha256-h75EnPCQSXMrpDTNaxBHnG4hjYLzICYdU+sE0i/Hud4="; + url = "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.14/"; + sha256 = "sha256-ZSGQTxWtTBLrGU9oRPrXgLAauiwWVQQ2gv0Rzq7FHw4="; }; }; "valheim.backpacks" = { pname = "valheim.backpacks"; - version = "1.3.6"; + version = "1.3.8"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Smoothbrain/Backpacks/1.3.6/"; - sha256 = "sha256-xSfcLisLLPALx6l1Rtbt10YFUo112HV2I6BO/zCjr5w="; + url = "https://thunderstore.io/package/download/Smoothbrain/Backpacks/1.3.8/"; + sha256 = "sha256-ZHvN8J6DsRXRSzVZ3K12WSRtdKt40hMtzHMkYxl0ttU="; }; }; "valheim.betternetworking" = { @@ -59,10 +78,10 @@ }; "valheim.campsite" = { pname = "valheim.campsite"; - version = "1.6.1"; + version = "1.6.3"; src = fetchTarball { - url = "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.6.1/"; - sha256 = "sha256-hQzKXIVxbdq73E0NZlNX+aYLS5Mg6uczX8F8GKFUtec="; + url = "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.6.3/"; + sha256 = "sha256-vioZ7NoIWLfO0XlRCe/BEyRaouy1Kl+cPl0QXSyqjC8="; }; }; "valheim.cartography" = { @@ -75,10 +94,10 @@ }; "valheim.craftyboxes" = { pname = "valheim.craftyboxes"; - version = "1.8.12"; + version = "1.8.14"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.12/"; - sha256 = "sha256-+EKD+kBj7JHrwDi/yMPus8MZRtBApX7bOqPRrA3iXoY="; + url = "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.14/"; + sha256 = "sha256-P7NucjydUf9TMJi8ObfTBA+WQsxKxeaM7N8N7mSDELY="; }; }; "valheim.customships" = { @@ -91,10 +110,10 @@ }; "valheim.extendedinv" = { pname = "valheim.extendedinv"; - version = "2.2.2"; + version = "2.4.1"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/2.2.2/"; - sha256 = "sha256-PDmlJw4hfMg1fqO/hPrT6Oss0Czci/Chvr+vz79m5JI="; + url = "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/2.4.1/"; + sha256 = "sha256-mua5nD0BLzkBFIfkfOIAUPQGlOP4sTQ9eqBqrJJJG3w="; }; }; "valheim.foodmove" = { @@ -107,10 +126,10 @@ }; "valheim.jotunn" = { pname = "valheim.jotunn"; - version = "2.27.1"; + version = "2.28.0"; src = fetchTarball { - url = "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.27.1/"; - sha256 = "sha256-AfiWmmoCsDtmvjTPw7AdiPYQZ055dTwq5GFvDD93e2M="; + url = "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.28.0/"; + sha256 = "sha256-6Qh5hcXM886OiOpcg73EU35kvnyvTtyJ1+7CSPzBsSA="; }; }; "valheim.jsondotnet" = { @@ -131,10 +150,10 @@ }; "valheim.mining" = { pname = "valheim.mining"; - version = "1.1.5"; + version = "1.1.6"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Smoothbrain/Mining/1.1.5/"; - sha256 = "sha256-SxQ+Z4T5Hg5w4X4+L++eArWZXhoXuarecKl6gdpcpNQ="; + url = "https://thunderstore.io/package/download/Smoothbrain/Mining/1.1.6/"; + sha256 = "sha256-zWSIDugJchxIfzAt9Ktc37L6ez09iK77pUowUWTndgE="; }; }; "valheim.missingpieces" = { @@ -155,10 +174,10 @@ }; "valheim.planteasily" = { pname = "valheim.planteasily"; - version = "2.0.3"; + version = "2.1.0"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Advize/PlantEasily/2.0.3/"; - sha256 = "sha256-HvjwiVBWs723LhHR7Xk6knugOU8eQewGiV+mZaAN5YU="; + url = "https://thunderstore.io/package/download/Advize/PlantEasily/2.1.0/"; + sha256 = "sha256-A7WIMjNkkZoUD9xf5gswOv00/4j/NGkE+yD4gM+bAsY="; }; }; "valheim.quickteleport" = { @@ -171,10 +190,10 @@ }; "valheim.reclaim" = { pname = "valheim.reclaim"; - version = "1.3.10"; + version = "1.4.0"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.3.10/"; - sha256 = "sha256-MnaJ7ulZdDemBrSzKnsgL0BN7UfRfRueFJRiL0iwjB8="; + url = "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.4.0/"; + sha256 = "sha256-MIWKc6cdibXbFXKdMDdNsj7a1L6+jAMzJvhm79JQn/E="; }; }; "valheim.savecrossbow" = { @@ -219,10 +238,10 @@ }; "valheim.swim" = { pname = "valheim.swim"; - version = "1.4.0"; + version = "1.4.1"; src = fetchTarball { - url = "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.4.0/"; - sha256 = "sha256-ZNGOZDwLqZ+AisdQKvSU2imqdCQ84jgzT38L1Fp4g4g="; + url = "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.4.1/"; + sha256 = "sha256-3BsC+cFLMtuW9pat5vTqHPt1Ak6fbXStaq6Kk9CdU3c="; }; }; "valheim.swimequip" = { @@ -235,10 +254,10 @@ }; "valheim.targetportal" = { pname = "valheim.targetportal"; - version = "1.2.1"; + version = "1.2.3"; src = fetchTarball { - url = "https://thunderstore.io/package/download/Smoothbrain/TargetPortal/1.2.1/"; - sha256 = "sha256-qjeihonPwlja7sCRyKhJL53fWX4w1qfuFoOA6FAA7mw="; + url = "https://thunderstore.io/package/download/Smoothbrain/TargetPortal/1.2.3/"; + sha256 = "sha256-mW73PrH+AwZGTYk2zr2/MOTa5RsP5rDr/HKIeKqo9DI="; }; }; "vesktop.micfix" = { diff --git a/flake.lock b/flake.lock index 5ed46c3..2c4bcff 100644 --- a/flake.lock +++ b/flake.lock @@ -233,11 +233,11 @@ ] }, "locked": { - "lastModified": 1773367248, - "narHash": "sha256-FFMc1uAwy2GYasd0rdNDVxKyAgzuoJH2M+GglBQbqf0=", + "lastModified": 1773681856, + "narHash": "sha256-+bRqxoFCJFO9ZTFhcCkzNXbDT3b8AEk88fyjB7Is6eo=", "owner": "nix-community", "repo": "home-manager", - "rev": "be0c641a6a5564caa33982faa1fe2c60d92131c7", + "rev": "57d5560ee92a424fb71fde800acd6ed2c725dfce", "type": "github" }, "original": { @@ -275,11 +275,11 @@ ] }, "locked": { - "lastModified": 1772330611, - "narHash": "sha256-UZjPc/d5XRxvjDbk4veAO4XFdvx6BUum2l40V688Xq8=", + "lastModified": 1773422513, + "narHash": "sha256-MPjR48roW7CUMU6lu0+qQGqj92Kuh3paIulMWFZy+NQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "58fd7ff0eec2cda43e705c4c0585729ec471d400", + "rev": "ef12a9a2b0f77c8fa3dda1e7e494fca668909056", "type": "github" }, "original": { @@ -471,11 +471,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1773282481, - "narHash": "sha256-b/GV2ysM8mKHhinse2wz+uP37epUrSE+sAKXy/xvBY4=", + "lastModified": 1773646010, + "narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fe416aaedd397cacb33a610b33d60ff2b431b127", + "rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", "type": "github" }, "original": { @@ -538,11 +538,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1773343795, - "narHash": "sha256-0+HEuOytpwyPt7i1jj6v2QJ+NXXisCYnL2XNwPBltvg=", + "lastModified": 1773579076, + "narHash": "sha256-GRuK5zh0Z68YXIoTpHQW2CFdpZRhGJRxpYh4vPOqjt4=", "owner": "NotAShelf", "repo": "nvf", - "rev": "83b44eaf50b96bd5d06b1a56a3a51f1b2362db52", + "rev": "baf207654ca613173e9d4b5255dba52f8c0c5577", "type": "github" }, "original": { @@ -573,11 +573,11 @@ ] }, "locked": { - "lastModified": 1773096132, - "narHash": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=", + "lastModified": 1773550941, + "narHash": "sha256-wa/++bL2QeMUreNFBZEWluQfOYB0MnQIeGNMuaX9sfs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784", + "rev": "c469b6885f0dcd5c7c56bd935a0f08dbcd9e79e1", "type": "github" }, "original": { @@ -794,11 +794,11 @@ ] }, "locked": { - "lastModified": 1773290887, - "narHash": "sha256-L1yMYmFffHfZNP+hKJGRBmrFKkn/VDhu7jEbVftBQuM=", + "lastModified": 1773661718, + "narHash": "sha256-MYm1EKp/gbBi9wMEf7Lx0agIVnej/P61sg97EruWzrU=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "9346698c4562819f61b4e5097151ec0b17729fab", + "rev": "3ac6ea223b32ff63c45e3577712df991a35aaf33", "type": "github" }, "original": { diff --git a/hosts/muon/configuration.nix b/hosts/muon/configuration.nix index 5166155..8948fa6 100644 --- a/hosts/muon/configuration.nix +++ b/hosts/muon/configuration.nix @@ -16,7 +16,6 @@ in { with pkgs; [ nix-alien r2modman - lutris godot rustdesk-flutter motion @@ -81,7 +80,7 @@ in { }; }; }; - networking.firewall.allowedTCPPorts = [ 80 ]; + networking.firewall.allowedTCPPorts = [80]; virtualisation.virtualbox.host.enable = true; users.extraGroups.vboxusers.members = ["user-with-access-to-virtualbox"]; diff --git a/modules/home/desktop/productivity.nix b/modules/home/desktop/productivity.nix index cb240d4..58ccf0b 100644 --- a/modules/home/desktop/productivity.nix +++ b/modules/home/desktop/productivity.nix @@ -28,7 +28,7 @@ in # mullvad-browser # password manager - bitwarden-desktop + # bitwarden-desktop # file management libsForQt5.breeze-icons diff --git a/modules/home/desktop/social.nix b/modules/home/desktop/social.nix index 544059f..6e6d330 100644 --- a/modules/home/desktop/social.nix +++ b/modules/home/desktop/social.nix @@ -8,6 +8,12 @@ vesktop-nogain = pkgs.vesktop.overrideAttrs (previousAttrs: { patches = previousAttrs.patches ++ [sources."vesktop.micfix".src]; }); + + freetube-custom = + (import sources.freetube.src { + inherit (pkgs) system; + config = pkgs.config; + }).freetube; in { options.mods.social.enable = lib.mkEnableOption "enables social media clients"; @@ -17,13 +23,13 @@ in { # Communication # kotatogram-desktop signal-desktop - abaddon - vesktop-nogain + # abaddon + # vesktop-nogain # (callPackage ./packages/librediscord.nix {}) jami # Video - freetube + freetube-custom # Security gcr diff --git a/modules/home/terminal/opencode/default.nix b/modules/home/terminal/opencode/default.nix index 4448cfc..d3dc9ff 100644 --- a/modules/home/terminal/opencode/default.nix +++ b/modules/home/terminal/opencode/default.nix @@ -19,7 +19,7 @@ programs.opencode = { enable = true; settings = { - "plugin" = ["opencode-gemini-auth"]; + "plugin" = ["opencode-gemini-auth" "opencode-anthropic-oauth"]; "permission" = { "bash" = { diff --git a/nvfetcher.toml b/nvfetcher.toml index cbb695a..e1eb258 100644 --- a/nvfetcher.toml +++ b/nvfetcher.toml @@ -1,3 +1,8 @@ +["freetube"] +src.git = "https://github.com/ddogfoodd/nixpkgs.git" +src.branch = "update-freetube" +fetch.git = "https://github.com/ddogfoodd/nixpkgs.git" + ["vesktop.micfix"] src.manual = "1.0.2" fetch.url = "https://codeberg.org/muon/gists/raw/branch/main/micfix.patch" From bf93912b397a984200fcf69edebfbb526e69422d Mon Sep 17 00:00:00 2001 From: muon Date: Fri, 20 Mar 2026 13:38:58 +0000 Subject: [PATCH 02/13] Update nix --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 2c4bcff..61fc5a3 100644 --- a/flake.lock +++ b/flake.lock @@ -233,11 +233,11 @@ ] }, "locked": { - "lastModified": 1773681856, - "narHash": "sha256-+bRqxoFCJFO9ZTFhcCkzNXbDT3b8AEk88fyjB7Is6eo=", + "lastModified": 1774007980, + "narHash": "sha256-FOnZjElEI8pqqCvB6K/1JRHTE8o4rer8driivTpq2uo=", "owner": "nix-community", "repo": "home-manager", - "rev": "57d5560ee92a424fb71fde800acd6ed2c725dfce", + "rev": "9670de2921812bc4e0452f6e3efd8c859696c183", "type": "github" }, "original": { @@ -471,11 +471,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1773646010, - "narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", + "lastModified": 1773821835, + "narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", + "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", "type": "github" }, "original": { @@ -538,11 +538,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1773579076, - "narHash": "sha256-GRuK5zh0Z68YXIoTpHQW2CFdpZRhGJRxpYh4vPOqjt4=", + "lastModified": 1773970322, + "narHash": "sha256-xyO9ZV+cZk+HVmjS6P5Jzwl6ioRCKgeLQSSbUFtPrZk=", "owner": "NotAShelf", "repo": "nvf", - "rev": "baf207654ca613173e9d4b5255dba52f8c0c5577", + "rev": "8aad181ec9057c56b6fe5d6081a399427e1d1dec", "type": "github" }, "original": { @@ -573,11 +573,11 @@ ] }, "locked": { - "lastModified": 1773550941, - "narHash": "sha256-wa/++bL2QeMUreNFBZEWluQfOYB0MnQIeGNMuaX9sfs=", + "lastModified": 1773889674, + "narHash": "sha256-+ycaiVAk3MEshJTg35cBTUa0MizGiS+bgpYw/f8ohkg=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c469b6885f0dcd5c7c56bd935a0f08dbcd9e79e1", + "rev": "29b6519f3e0780452bca0ac0be4584f04ac16cc5", "type": "github" }, "original": { @@ -626,11 +626,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1772296853, - "narHash": "sha256-pAtzPsgHRKw/2Kv8HgAjSJg450FDldHPWsP3AKG/Xj0=", + "lastModified": 1773792048, + "narHash": "sha256-Oy9PCLG3vtflFBWcJd8c/EB3h5RU7ABAIDWn6JrGf6o=", "owner": "danth", "repo": "stylix", - "rev": "c4b8e80a1020e09a1f081ad0f98ce804a6e85acf", + "rev": "3f2f9d307fe58c6abe2a16eb9b62c42d53ef5ee1", "type": "github" }, "original": { @@ -794,11 +794,11 @@ ] }, "locked": { - "lastModified": 1773661718, - "narHash": "sha256-MYm1EKp/gbBi9wMEf7Lx0agIVnej/P61sg97EruWzrU=", + "lastModified": 1773737882, + "narHash": "sha256-P6k0BtT1/idYveVRdcwAZk8By9UjZW8XOMhSoS6wTBY=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "3ac6ea223b32ff63c45e3577712df991a35aaf33", + "rev": "a7f1db35d74faf04e5189b3a32f890186ace5c28", "type": "github" }, "original": { From 2d02ac206f39a718ce2a820c50c77c5f709e3cba Mon Sep 17 00:00:00 2001 From: muon Date: Fri, 20 Mar 2026 14:44:24 +0000 Subject: [PATCH 03/13] Add vendor fetch --- _sources/generated.json | 17 +- _sources/generated.nix | 20 +- hosts/murk/home.nix | 1 - modules/home/desktop/social.nix | 14 +- modules/home/terminal/hr/default.nix | 5 + .../home/terminal/hr}/mender-cli.nix | 25 +- nvfetcher.toml | 12 +- pkgs/nvft/README.md | 55 ++++ pkgs/nvft/default.nix | 250 ++++++++++++++++++ shell.nix | 7 +- 10 files changed, 360 insertions(+), 46 deletions(-) rename {hosts/murk/packages => modules/home/terminal/hr}/mender-cli.nix (73%) create mode 100644 pkgs/nvft/README.md create mode 100644 pkgs/nvft/default.nix diff --git a/_sources/generated.json b/_sources/generated.json index bc5918f..17cfd37 100644 --- a/_sources/generated.json +++ b/_sources/generated.json @@ -1,9 +1,9 @@ { - "freetube": { + "mender-cli": { "cargoLock": null, - "date": "2026-03-18", + "date": null, "extract": null, - "name": "freetube", + "name": "mender-cli", "passthru": null, "pinned": false, "src": { @@ -11,13 +11,14 @@ "fetchSubmodules": false, "leaveDotGit": false, "name": null, - "rev": "d5cf1d713ba9348b13d94c122ba0fb72694e51d3", - "sha256": "sha256-g9bMYIxHXcL8+apBD682sZHeifLfyVhI5oTNoPPNs5o=", + "owner": "mendersoftware", + "repo": "mender-cli", + "rev": "2.0.0", + "sha256": "sha256-jFWC1g/ebgMIqgBFgotBDwPcGNmAK3VsvfjiuRCN1ws=", "sparseCheckout": [], - "type": "git", - "url": "https://github.com/ddogfoodd/nixpkgs.git" + "type": "github" }, - "version": "d5cf1d713ba9348b13d94c122ba0fb72694e51d3" + "version": "2.0.0" }, "valheim.aaacrafting": { "cargoLock": null, diff --git a/_sources/generated.nix b/_sources/generated.nix index e3833c5..68f3e7b 100644 --- a/_sources/generated.nix +++ b/_sources/generated.nix @@ -6,19 +6,17 @@ dockerTools, }: { - freetube = { - pname = "freetube"; - version = "d5cf1d713ba9348b13d94c122ba0fb72694e51d3"; - src = fetchgit { - url = "https://github.com/ddogfoodd/nixpkgs.git"; - rev = "d5cf1d713ba9348b13d94c122ba0fb72694e51d3"; + mender-cli = { + pname = "mender-cli"; + version = "2.0.0"; + vendorHash = "sha256-vlcq9HGezJsorwsaVwvIKxi1pSoo4wTPmc6qCCVDdfI="; + src = fetchFromGitHub { + owner = "mendersoftware"; + repo = "mender-cli"; + rev = "2.0.0"; fetchSubmodules = false; - deepClone = false; - leaveDotGit = false; - sparseCheckout = [ ]; - sha256 = "sha256-g9bMYIxHXcL8+apBD682sZHeifLfyVhI5oTNoPPNs5o="; + sha256 = "sha256-jFWC1g/ebgMIqgBFgotBDwPcGNmAK3VsvfjiuRCN1ws="; }; - date = "2026-03-18"; }; "valheim.aaacrafting" = { pname = "valheim.aaacrafting"; diff --git a/hosts/murk/home.nix b/hosts/murk/home.nix index fc55663..6276198 100644 --- a/hosts/murk/home.nix +++ b/hosts/murk/home.nix @@ -46,7 +46,6 @@ in { go rainfrog tealdeer - (callPackage ./packages/mender-cli.nix {}) ] # Non-free `modules/home/terminal/hr/mender-cli.nix` + +To add more Go packages, edit `pkgs/nvft/default.nix` and add entries to the `GO_PACKAGES` array. + +## How it Works + +For each Go package: +1. Compares old vs new source hash to detect updates +2. If source unchanged, keeps existing vendorHash (fast) +3. If source changed, creates a temporary build with `lib.fakeHash` +4. Attempts to build, which fails with the correct hash +5. Extracts the correct hash from the error message +6. Updates `vendorHash` directly in `_sources/generated.nix` alongside the source information + +## Package Usage + +Go packages read vendorHash from the sources: + +```nix +let + src = sources.mender-cli; +in +buildGoModule { + inherit (src) pname version src vendorHash; + # ... rest of package +} +``` + +The vendorHash is stored in `_sources/generated.nix` alongside the version and source hash, keeping all auto-generated values in one place. diff --git a/pkgs/nvft/default.nix b/pkgs/nvft/default.nix new file mode 100644 index 0000000..0767c39 --- /dev/null +++ b/pkgs/nvft/default.nix @@ -0,0 +1,250 @@ +{ + lib, + writeShellApplication, + nvfetcher, + nix, + gnused, + coreutils, +}: +writeShellApplication { + name = "nvft"; + + runtimeInputs = [ + nvfetcher + nix + gnused + coreutils + ]; + + text = '' + set -euo pipefail + + # Determine the config directory + if [[ -n "''${NVFETCHER_CONFIG_DIR:-}" ]]; then + CONFIG_DIR="$NVFETCHER_CONFIG_DIR" + elif [[ -f "nvfetcher.toml" ]]; then + CONFIG_DIR="$(pwd)" + else + CONFIG_DIR="''${HOME}/.config/home" + fi + + if [[ ! -f "$CONFIG_DIR/nvfetcher.toml" ]]; then + echo "❌ Error: nvfetcher.toml not found in $CONFIG_DIR" + exit 1 + fi + + echo "🚀 Updating sources in $CONFIG_DIR" + echo "" + + SOURCES_FILE="$CONFIG_DIR/_sources/generated.nix" + + # Read Go packages from nvfetcher.toml that need vendorHash updates + declare -A GO_PACKAGES + # For now, hardcode the known Go packages + # TODO: Could parse nvfetcher.toml to auto-detect these + GO_PACKAGES["mender-cli"]="modules/home/terminal/hr/mender-cli.nix" + + # Step 0: Save existing hashes before nvfetcher wipes them + echo "💾 Saving existing hashes..." + declare -A SAVED_VENDOR_HASHES + declare -A SAVED_SOURCE_HASHES + + if [[ -f "$SOURCES_FILE" ]]; then + for source_name in "''${!GO_PACKAGES[@]}"; do + # Save vendorHash + saved_vendor=$(grep -A20 "^ $source_name = " "$SOURCES_FILE" | grep -oP 'vendorHash = "\K[^"]+' || echo "") + if [[ -n "$saved_vendor" ]]; then + SAVED_VENDOR_HASHES["$source_name"]="$saved_vendor" + echo " Saved $source_name vendorHash: $saved_vendor" + fi + + # Save source sha256 to detect if source changed + saved_source=$(grep -A20 "^ $source_name = " "$SOURCES_FILE" | grep -oP 'sha256 = "\K[^"]+' || echo "") + if [[ -n "$saved_source" ]]; then + SAVED_SOURCE_HASHES["$source_name"]="$saved_source" + echo " Saved $source_name sourceHash: $saved_source" + fi + done + fi + echo "" + + # Step 1: Run nvfetcher + echo "đŸ“Ļ Step 1: Running nvfetcher..." + cd "$CONFIG_DIR" + if nvfetcher; then + echo "" + echo "✅ nvfetcher completed" + echo "" + else + echo "" + echo "âš ī¸ nvfetcher had some errors, but continuing with vendor hash updates..." + echo "" + fi + + # Step 2: Restore saved vendorHash values + echo "đŸ“Ļ Step 2: Restoring saved vendorHash values..." + for source_name in "''${!SAVED_VENDOR_HASHES[@]}"; do + saved_hash="''${SAVED_VENDOR_HASHES[$source_name]}" + echo " Restoring $source_name: $saved_hash" + + # Add vendorHash back after version line using awk + awk -v source="$source_name" -v hash="$saved_hash" ' + /^ / && $0 ~ source" = " {in_block=1} + in_block && /version = / {print; print " vendorHash = \"" hash "\";"; next} + in_block && /^ };/ {in_block=0} + {print} + ' "$SOURCES_FILE" > "$SOURCES_FILE.tmp" && mv "$SOURCES_FILE.tmp" "$SOURCES_FILE" + done + echo "" + + # Step 3: Update Go vendor hashes + echo "đŸ“Ļ Step 3: Checking for Go packages that need vendor hash updates..." + + if [[ ! -f "$SOURCES_FILE" ]]; then + echo "❌ Error: Generated sources file not found at $SOURCES_FILE" + exit 1 + fi + + if [[ ''${#GO_PACKAGES[@]} -eq 0 ]]; then + echo "â„šī¸ No Go packages configured for vendor hash updates" + echo "" + echo "🎉 All updates complete!" + exit 0 + fi + + for source_name in "''${!GO_PACKAGES[@]}"; do + package_path="''${GO_PACKAGES[$source_name]}" + full_path="$CONFIG_DIR/$package_path" + + if [[ ! -f "$full_path" ]]; then + echo "âš ī¸ Package file not found: $full_path" + continue + fi + + echo "" + echo "đŸ“Ļ Processing $source_name..." + + # Check if vendorHash already exists in generated.nix + current_vendor=$(grep -A20 "^ $source_name = " "$SOURCES_FILE" | grep -oP 'vendorHash = "\K[^"]+' || echo "") + + if [[ -n "$current_vendor" ]]; then + echo " Current vendorHash: $current_vendor" + else + echo " No vendorHash found" + fi + + # Check if source hash changed (indicates version/source update) + new_source_hash=$(grep -A20 "^ $source_name = " "$SOURCES_FILE" | grep -oP 'sha256 = "\K[^"]+' || echo "") + old_source_hash="''${SAVED_SOURCE_HASHES[$source_name]:-}" + + if [[ -n "$old_source_hash" ]] && [[ "$old_source_hash" == "$new_source_hash" ]]; then + echo " Source unchanged (hash: ''${new_source_hash:0:16}...)" + echo " ✨ Skipping vendorHash recalculation" + continue + elif [[ -n "$old_source_hash" ]]; then + echo " Source changed!" + echo " Old: ''${old_source_hash:0:16}..." + echo " New: ''${new_source_hash:0:16}..." + echo " → Need to recalculate vendorHash" + else + echo " New package, calculating vendorHash..." + fi + + # Get version from generated sources + new_version=$(nix-instantiate --eval --strict --expr " + let pkgs = import {}; + sources = pkgs.callPackage $SOURCES_FILE {}; + in sources.''${source_name}.version + " 2>/dev/null | tr -d '"' || echo "") + + if [[ -z "$new_version" ]]; then + echo "âš ī¸ Could not determine version from generated sources" + continue + fi + + echo " Version: $new_version" + + # Create temporary build directory + temp_build=$(mktemp -d) + trap 'rm -rf "$temp_build"' EXIT + + # Copy necessary files + cp -r "$CONFIG_DIR/_sources" "$temp_build/" + cp "$full_path" "$temp_build/package.nix" + + # Create build expression + cat > "$temp_build/default.nix" << 'NIXEOF' + { pkgs ? import {} }: + let + sources = pkgs.callPackage ./_sources/generated.nix {}; + in + pkgs.callPackage ./package.nix { inherit sources; } + NIXEOF + + # Temporarily replace hash with fakeHash + # Replace both inherited vendorHash and explicit vendorHash assignments + sed -i 's|inherit (src) pname version src vendorHash|inherit (src) pname version src;\n vendorHash = lib.fakeHash|g' "$temp_build/package.nix" + sed -i 's|vendorHash = "[^"]*";|vendorHash = lib.fakeHash;|g' "$temp_build/package.nix" + + echo " Calculating correct vendor hash..." + + # Build and extract the correct hash from error message + vendor_hash=$(nix-build "$temp_build/default.nix" 2>&1 | \ + grep -oP 'got:\s+\K(sha256-[A-Za-z0-9+/=]+)' | \ + head -1 || echo "") + + if [[ -z "$vendor_hash" ]]; then + echo "âš ī¸ Could not calculate vendor hash" + echo " The package may have built successfully (current hash is correct)" + echo " Or there may be a build error unrelated to vendorHash" + continue + fi + + echo " New hash: $vendor_hash" + + # Update the generated.nix file to include vendorHash + # Find the entry and add/update vendorHash after version + if grep -q "^ $source_name = " "$SOURCES_FILE"; then + # Check if vendorHash already exists + if grep -A20 "^ $source_name = " "$SOURCES_FILE" | grep -q "vendorHash"; then + # Update existing vendorHash using awk for better multiline handling + awk -v source="$source_name" -v hash="$vendor_hash" ' + /^ / && $0 ~ source" = " {in_block=1} + in_block && /vendorHash = / {sub(/vendorHash = "[^"]*"/, "vendorHash = \"" hash "\"")} + in_block && /^ };/ {in_block=0} + {print} + ' "$SOURCES_FILE" > "$SOURCES_FILE.tmp" && mv "$SOURCES_FILE.tmp" "$SOURCES_FILE" + echo "✅ Updated vendorHash in generated.nix" + else + # Add vendorHash after version line using awk + awk -v source="$source_name" -v hash="$vendor_hash" ' + /^ / && $0 ~ source" = " {in_block=1} + in_block && /version = / {print; print " vendorHash = \"" hash "\";"; next} + in_block && /^ };/ {in_block=0} + {print} + ' "$SOURCES_FILE" > "$SOURCES_FILE.tmp" && mv "$SOURCES_FILE.tmp" "$SOURCES_FILE" + echo "✅ Added vendorHash to generated.nix" + fi + else + echo "âš ī¸ Could not find $source_name entry in generated.nix" + fi + done + + echo "" + echo "🎉 All updates complete!" + echo "" + echo "Summary:" + echo " - Source versions and hashes updated by nvfetcher" + echo " - Go vendor hashes recalculated and updated" + echo "" + echo "Next steps:" + echo " - Review changes: git diff" + echo " - Test build: home-manager switch or similar" + echo " - Commit if everything works" + ''; + + meta = { + description = "Update nvfetcher sources and Go vendor hashes"; + mainProgram = "nvft"; + }; +} diff --git a/shell.nix b/shell.nix index ffc8955..1da75bc 100644 --- a/shell.nix +++ b/shell.nix @@ -1,4 +1,8 @@ -{pkgs ? import {}, ...}: { +{pkgs ? import {}, ...}: +let + nvft = pkgs.callPackage ./pkgs/nvft {}; +in +{ default = pkgs.mkShell { NIX_CONFIG = "extra-experimental-features = nix-command flakes ca-derivations"; nativeBuildInputs = with pkgs; [ @@ -8,6 +12,7 @@ sops age nvfetcher + nvft ]; }; } From c6b342526194cdfe2c28661db62348b85acc11a1 Mon Sep 17 00:00:00 2001 From: muon Date: Mon, 23 Mar 2026 11:35:12 +0000 Subject: [PATCH 04/13] Update nix --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 61fc5a3..6c9b6fc 100644 --- a/flake.lock +++ b/flake.lock @@ -233,11 +233,11 @@ ] }, "locked": { - "lastModified": 1774007980, - "narHash": "sha256-FOnZjElEI8pqqCvB6K/1JRHTE8o4rer8driivTpq2uo=", + "lastModified": 1774210133, + "narHash": "sha256-yeiWCY9aAUUJ3ebMVjs0UZXRnT5x90MCtpbpOWiXrvM=", "owner": "nix-community", "repo": "home-manager", - "rev": "9670de2921812bc4e0452f6e3efd8c859696c183", + "rev": "c6fe2944ad9f2444b2d767c4a5edee7c166e8a95", "type": "github" }, "original": { @@ -471,11 +471,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1773821835, - "narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", + "lastModified": 1774106199, + "narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", + "rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655", "type": "github" }, "original": { @@ -538,11 +538,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1773970322, - "narHash": "sha256-xyO9ZV+cZk+HVmjS6P5Jzwl6ioRCKgeLQSSbUFtPrZk=", + "lastModified": 1774224548, + "narHash": "sha256-g45WZAZHNc7wJBkK4IdB5dq0Bh0JE7G0gcY2H5DFi44=", "owner": "NotAShelf", "repo": "nvf", - "rev": "8aad181ec9057c56b6fe5d6081a399427e1d1dec", + "rev": "edfb73fa4ced576f587d259a70a513b4152f8cea", "type": "github" }, "original": { @@ -573,11 +573,11 @@ ] }, "locked": { - "lastModified": 1773889674, - "narHash": "sha256-+ycaiVAk3MEshJTg35cBTUa0MizGiS+bgpYw/f8ohkg=", + "lastModified": 1774154798, + "narHash": "sha256-zsTuloDSdKf+PrI1MsWx5z/cyGEJ8P3eERtAfdP8Bmg=", "owner": "Mic92", "repo": "sops-nix", - "rev": "29b6519f3e0780452bca0ac0be4584f04ac16cc5", + "rev": "3e0d543e6ba6c0c48117a81614e90c6d8c425170", "type": "github" }, "original": { @@ -626,11 +626,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1773792048, - "narHash": "sha256-Oy9PCLG3vtflFBWcJd8c/EB3h5RU7ABAIDWn6JrGf6o=", + "lastModified": 1774124764, + "narHash": "sha256-Poz9WTjiRlqZIf197CrMMJfTifZhrZpbHFv0eU1Nhtg=", "owner": "danth", "repo": "stylix", - "rev": "3f2f9d307fe58c6abe2a16eb9b62c42d53ef5ee1", + "rev": "e31c79f571c5595a155f84b9d77ce53a84745494", "type": "github" }, "original": { @@ -794,11 +794,11 @@ ] }, "locked": { - "lastModified": 1773737882, - "narHash": "sha256-P6k0BtT1/idYveVRdcwAZk8By9UjZW8XOMhSoS6wTBY=", + "lastModified": 1774242250, + "narHash": "sha256-pchbnY7KVnH26g4O3LZO8vpshInqNj937gAqlPob1Mk=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "a7f1db35d74faf04e5189b3a32f890186ace5c28", + "rev": "f19c3e6683c2d2f3fcfcb88fb691931a104bc47c", "type": "github" }, "original": { From d837281e1239f25c6d431ad0cfeb1c33f5dc903c Mon Sep 17 00:00:00 2001 From: Sage Date: Wed, 25 Mar 2026 10:38:04 +0000 Subject: [PATCH 05/13] Update to opencode config --- hosts/murk/configuration.nix | 1 - hosts/musk/configuration.nix | 1 - hosts/musk/home.nix | 1 + hosts/muvo/home.nix | 2 -- 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/hosts/murk/configuration.nix b/hosts/murk/configuration.nix index b2beb5e..8723d8f 100644 --- a/hosts/murk/configuration.nix +++ b/hosts/murk/configuration.nix @@ -37,7 +37,6 @@ in { pkgs.qmk pkgs.jq pkgs.wireguard-tools - pkgs.opencode ]; boot.binfmt = { diff --git a/hosts/musk/configuration.nix b/hosts/musk/configuration.nix index 01c73a2..23db205 100644 --- a/hosts/musk/configuration.nix +++ b/hosts/musk/configuration.nix @@ -37,7 +37,6 @@ in { pkgs.qmk pkgs.jq pkgs.wireguard-tools - pkgs.opencode ]; boot.binfmt = { diff --git a/hosts/musk/home.nix b/hosts/musk/home.nix index b72bcdd..efb547a 100644 --- a/hosts/musk/home.nix +++ b/hosts/musk/home.nix @@ -25,6 +25,7 @@ in { mods.desktop.productivity.enable = false; mods.zen.enable = true; mods.octo.enable = true; + mods.opencode.enable = true; home.packages = with pkgs; [ diff --git a/hosts/muvo/home.nix b/hosts/muvo/home.nix index 27ec74f..9140639 100644 --- a/hosts/muvo/home.nix +++ b/hosts/muvo/home.nix @@ -27,8 +27,6 @@ in { pulseaudio pavucontrol alsa-utils - - opencode ]; # Hardware preferences From 0e00821e0e94007c274b107046c9131a006ea29d Mon Sep 17 00:00:00 2001 From: Sage Date: Wed, 25 Mar 2026 10:44:29 +0000 Subject: [PATCH 06/13] Remove mender-cli from packages --- hosts/musk/home.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/musk/home.nix b/hosts/musk/home.nix index efb547a..8bdfde8 100644 --- a/hosts/musk/home.nix +++ b/hosts/musk/home.nix @@ -45,7 +45,7 @@ in { go rainfrog tealdeer - (callPackage ./packages/mender-cli.nix {}) + # (callPackage ./packages/mender-cli.nix {}) ] # Non-free Date: Sat, 28 Mar 2026 16:16:08 +0000 Subject: [PATCH 07/13] Add dcts --- _sources/generated.json | 21 +++++ _sources/generated.nix | 11 +++ modules/home/desktop/social.nix | 2 + nvfetcher.toml | 4 + pkgs/dcts-client-shipping/package.nix | 120 ++++++++++++++++++++++++++ 5 files changed, 158 insertions(+) create mode 100644 pkgs/dcts-client-shipping/package.nix diff --git a/_sources/generated.json b/_sources/generated.json index 17cfd37..e8ba227 100644 --- a/_sources/generated.json +++ b/_sources/generated.json @@ -1,4 +1,25 @@ { + "dcts-client-shipping": { + "cargoLock": null, + "date": null, + "extract": null, + "name": "dcts-client-shipping", + "passthru": null, + "pinned": false, + "src": { + "deepClone": false, + "fetchSubmodules": false, + "leaveDotGit": false, + "name": null, + "owner": "hackthedev", + "repo": "dcts-client-shipping", + "rev": "v2.5", + "sha256": "sha256-fmU/rUIyHV/+GSgDuot3mDaZrYmxfhF3RXSAwE6HqPU=", + "sparseCheckout": [], + "type": "github" + }, + "version": "v2.5" + }, "mender-cli": { "cargoLock": null, "date": null, diff --git a/_sources/generated.nix b/_sources/generated.nix index 68f3e7b..0c44cb5 100644 --- a/_sources/generated.nix +++ b/_sources/generated.nix @@ -6,6 +6,17 @@ dockerTools, }: { + dcts-client-shipping = { + pname = "dcts-client-shipping"; + version = "v2.5"; + src = fetchFromGitHub { + owner = "hackthedev"; + repo = "dcts-client-shipping"; + rev = "v2.5"; + fetchSubmodules = false; + sha256 = "sha256-fmU/rUIyHV/+GSgDuot3mDaZrYmxfhF3RXSAwE6HqPU="; + }; + }; mender-cli = { pname = "mender-cli"; version = "2.0.0"; diff --git a/modules/home/desktop/social.nix b/modules/home/desktop/social.nix index e9e1c54..90585e1 100644 --- a/modules/home/desktop/social.nix +++ b/modules/home/desktop/social.nix @@ -13,6 +13,7 @@ # inherit (pkgs) system; # config = pkgs.config; # }).freetube; + dcts-client-shipping = pkgs.callPackage ../../../pkgs/dcts-client-shipping/package.nix { inherit sources; }; in { options.mods.social.enable = lib.mkEnableOption "enables social media clients"; @@ -26,6 +27,7 @@ in { # vesktop-nogain # (callPackage ./packages/librediscord.nix {}) jami + dcts-client-shipping # Video # freetube-custom diff --git a/nvfetcher.toml b/nvfetcher.toml index 6aa7914..a10a48d 100644 --- a/nvfetcher.toml +++ b/nvfetcher.toml @@ -161,3 +161,7 @@ fetch.tarball = "https://thunderstore.io/package/download/BentoG/MissingPieces/$ src.github = "mendersoftware/mender-cli" fetch.github = "mendersoftware/mender-cli" +["dcts-client-shipping"] +src.github = "hackthedev/dcts-client-shipping" +fetch.github = "hackthedev/dcts-client-shipping" + diff --git a/pkgs/dcts-client-shipping/package.nix b/pkgs/dcts-client-shipping/package.nix new file mode 100644 index 0000000..6f7c640 --- /dev/null +++ b/pkgs/dcts-client-shipping/package.nix @@ -0,0 +1,120 @@ +{ + lib, + stdenv, + stdenvNoCC, + bun, + electron, + fetchFromGitHub, + makeWrapper, + makeBinaryWrapper, + makeDesktopItem, + copyDesktopItems, + sources, + writableTmpDirAsHomeHook, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "dcts-client-shipping"; + version = sources.dcts-client-shipping.version; + src = sources.dcts-client-shipping.src; + + node_modules = stdenvNoCC.mkDerivation { + pname = "${finalAttrs.pname}-node_modules"; + inherit (finalAttrs) version src; + + impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [ + "GIT_PROXY_COMMAND" + "SOCKS_SERVER" + ]; + + nativeBuildInputs = [ + bun + writableTmpDirAsHomeHook + ]; + + dontConfigure = true; + + buildPhase = '' + runHook preBuild + + cd electron + bun install \ + --cpu="*" \ + --frozen-lockfile \ + --ignore-scripts \ + --no-progress \ + --os="*" + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/electron + cp -R node_modules $out/electron/ + + runHook postInstall + ''; + + # NOTE: Required else we get errors that our fixed-output derivation references store paths + dontFixup = true; + + outputHash = "sha256-TwfxQeK1KkKY1n/735sTxcAQfR5hUrONJcWeIaM47SE="; + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + }; + + nativeBuildInputs = [ + bun + makeBinaryWrapper + copyDesktopItems + writableTmpDirAsHomeHook + ]; + + desktopItems = [ + (makeDesktopItem { + name = "dcts"; + desktopName = "DCTS"; + comment = "DCTS Desktop Client - Secure messaging"; + exec = "dcts"; + icon = "dcts"; + categories = [ "Network" "InstantMessaging" ]; + }) + ]; + + buildPhase = '' + runHook preBuild + + # Copy node_modules from the separate derivation + cp -R ${finalAttrs.node_modules}/electron/node_modules electron/ + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib/dcts + cp -R electron/* $out/lib/dcts/ + + # Create wrapper script + makeWrapper ${electron}/bin/electron $out/bin/dcts \ + --add-flags $out/lib/dcts \ + --set ELECTRON_OVERRIDE_DIST_PATH ${electron}/bin/ + + # Install icon + install -Dm644 electron/icon.png $out/share/icons/hicolor/256x256/apps/dcts.png + + runHook postInstall + ''; + + meta = { + description = "DCTS Desktop Client - Electron app for secure messaging"; + homepage = "https://github.com/hackthedev/dcts-client-shipping"; + license = lib.licenses.isc; + maintainers = [ ]; + platforms = lib.platforms.linux; + mainProgram = "dcts"; + }; +}) From bbc1b6f794bcc49c69cd61979df3af08a9e39d0b Mon Sep 17 00:00:00 2001 From: muon Date: Sun, 29 Mar 2026 07:45:19 +0000 Subject: [PATCH 08/13] Fix mups --- flake.lock | 82 ++++++---------------------------- flake.nix | 27 +++++++---- hosts/mups/configuration.nix | 12 ++++- hosts/mups/home.nix | 11 +++-- hosts/ports.nix | 4 ++ modules/home/desktop/zen.nix | 2 +- modules/nixos/core/network.nix | 14 +++--- modules/nixos/impermanence.nix | 8 ++-- 8 files changed, 66 insertions(+), 94 deletions(-) diff --git a/flake.lock b/flake.lock index 6c9b6fc..4575f05 100644 --- a/flake.lock +++ b/flake.lock @@ -291,7 +291,9 @@ "impermanence": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1769548169, @@ -348,7 +350,9 @@ "inputs": { "flake-compat": "flake-compat", "nix-index-database": "nix-index-database", - "nixpkgs": "nixpkgs_2" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1771150922, @@ -405,7 +409,9 @@ "inputs": { "flake-compat": "flake-compat_2", "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_3" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1750164803, @@ -422,54 +428,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1768564909, - "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1771008912, - "narHash": "sha256-gf2AmWVTs8lEq7z/3ZAsgnZDhWIckkb+ZnAo5RzSxJg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a82ccc39b39b621151d6732718e3e250109076fa", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1748929857, - "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { "locked": { "lastModified": 1774106199, "narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=", @@ -485,22 +443,6 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1767767207, - "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5912c1772a44e31bf1c63c0390b90501e5026886", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nur": { "inputs": { "flake-parts": [ @@ -558,7 +500,7 @@ "nix-alien": "nix-alien", "nix-flatpak": "nix-flatpak", "nix-minecraft": "nix-minecraft", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs", "nvf": "nvf", "sops-nix": "sops-nix", "stylix": "stylix", @@ -616,7 +558,9 @@ "firefox-gnome-theme": "firefox-gnome-theme", "flake-parts": "flake-parts_2", "gnome-shell": "gnome-shell", - "nixpkgs": "nixpkgs_5", + "nixpkgs": [ + "nixpkgs" + ], "nur": "nur", "systems": "systems_3", "tinted-foot": "tinted-foot", diff --git a/flake.nix b/flake.nix index a84ead5..6618c30 100644 --- a/flake.nix +++ b/flake.nix @@ -9,9 +9,13 @@ sops-nix.inputs.nixpkgs.follows = "nixpkgs"; impermanence.url = "github:nix-community/impermanence"; + impermanence.inputs.nixpkgs.follows = "nixpkgs"; stylix.url = "github:danth/stylix"; + stylix.inputs.nixpkgs.follows = "nixpkgs"; + nix-alien.url = "github:thiagokokada/nix-alien"; + nix-alien.inputs.nixpkgs.follows = "nixpkgs"; nvf = { url = "github:NotAShelf/nvf"; @@ -24,11 +28,14 @@ }; nix-minecraft.url = "git+https://codeberg.org/nix-astral/nix-minecraft.git"; + nix-minecraft.inputs.nixpkgs.follows = "nixpkgs"; + # nix-minecraft.url = "github:Infinidoge/nix-minecraft"; valheim-server.url = "github:kmjayadeep/valheim-server-flake"; valheim-server.inputs.nixpkgs.follows = "nixpkgs"; nix-flatpak.url = "github:gmodena/nix-flatpak?ref=latest"; + nix-flatpak.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs @ { @@ -53,9 +60,10 @@ (builtins.readDir ./hosts)); nixosConfigs = builtins.listToAttrs (map (host: { - name = host; - value = utils.mkHost ./hosts/${host}/configuration.nix; - }) hosts); + name = host; + value = utils.mkHost ./hosts/${host}/configuration.nix; + }) + hosts); in { nixosConfigurations = nixosConfigs; @@ -65,12 +73,13 @@ # osConfig is injected so all modules using it continue to work. # Use: home-manager switch --flake '.#muon@' homeConfigurations = builtins.listToAttrs (map (host: { - name = "muon@${host}"; - value = utils.mkHome { - hostConfig = nixosConfigs.${host}; - homeFile = ./hosts/${host}/home.nix; - }; - }) hosts); + name = "muon@${host}"; + value = utils.mkHome { + hostConfig = nixosConfigs.${host}; + homeFile = ./hosts/${host}/home.nix; + }; + }) + hosts); colmena = { meta = { diff --git a/hosts/mups/configuration.nix b/hosts/mups/configuration.nix index 99008dd..ad7dfcb 100644 --- a/hosts/mups/configuration.nix +++ b/hosts/mups/configuration.nix @@ -24,7 +24,7 @@ in { # Modules mods.desktop.enable = false; - mods.theme.enable = true; + mods.theme.enable = false; mods.theme.scheme = "woodland"; mods.theme.wallpaper = ./wallpaper.png; @@ -42,6 +42,16 @@ in { mods.server.wireguard.enable = true; mods.server.nginx.enable = true; + documentation = { + enable = false; + nixos.enable = false; + man.enable = false; + info.enable = false; + doc.enable = false; + }; + + i18n.supportedLocales = ["en_US.UTF-8/UTF-8"]; + # Use the GRUB 2 boot loader. boot.loader.grub.enable = true; boot.loader.grub.device = "/dev/vda"; diff --git a/hosts/mups/home.nix b/hosts/mups/home.nix index af78173..4198439 100644 --- a/hosts/mups/home.nix +++ b/hosts/mups/home.nix @@ -1,8 +1,13 @@ -{ pkgs, lib, osConfig,... }: { +{ + pkgs, + lib, + osConfig, + ... +}: { # Modules mods.terminal.zsh.enable = true; - mods.terminal.development.enable = true; - mods.terminal.tools.enable = true; + # mods.terminal.development.enable = true; + # mods.terminal.tools.enable = true; # Version of first install home.stateVersion = "24.05"; diff --git a/hosts/ports.nix b/hosts/ports.nix index b9da945..78dec27 100644 --- a/hosts/ports.nix +++ b/hosts/ports.nix @@ -30,6 +30,10 @@ search = 8081; videos = 8082; reddit = 8083; + + # docker compose + discord = 2052; + livekit = 7880; }; mods.server.local.ports = { # grav = 5001 diff --git a/modules/home/desktop/zen.nix b/modules/home/desktop/zen.nix index dda7170..a41edc6 100644 --- a/modules/home/desktop/zen.nix +++ b/modules/home/desktop/zen.nix @@ -237,6 +237,6 @@ with lib; { }; }; }; - stylix.targets.zen-browser.profileNames = ["default"]; + # stylix.targets.zen-browser.profileNames = ["default"]; }; } diff --git a/modules/nixos/core/network.nix b/modules/nixos/core/network.nix index abce4bf..1478fbf 100644 --- a/modules/nixos/core/network.nix +++ b/modules/nixos/core/network.nix @@ -103,13 +103,13 @@ in 127.0.0.1 word.local ''; - # Wildcard DNS: *.word.local -> 127.0.0.1 via NetworkManager's built-in dnsmasq - networking.networkmanager.dns = "dnsmasq"; - # Force resolv.conf to use local dnsmasq so wildcard DNS is actually queried - networking.resolvconf.useLocalResolver = true; - environment.etc."NetworkManager/dnsmasq.d/word-local.conf".text = '' - address=/.word.local/127.0.0.1 - ''; + # # Wildcard DNS: *.word.local -> 127.0.0.1 via NetworkManager's built-in dnsmasq + # networking.networkmanager.dns = "dnsmasq"; + # # Force resolv.conf to use local dnsmasq so wildcard DNS is actually queried + # networking.resolvconf.useLocalResolver = true; + # environment.etc."NetworkManager/dnsmasq.d/word-local.conf".text = '' + # address=/.word.local/127.0.0.1 + # ''; # gateway = # "${pkgs.networkmanager}/bin/nmcli dev show ${interface} | ${pkgs.gnugrep}/bin/fgrep IP4.GATEWAY | ${pkgs.awk}/bin/awk {print $2}"; diff --git a/modules/nixos/impermanence.nix b/modules/nixos/impermanence.nix index 2b65dc8..3710826 100644 --- a/modules/nixos/impermanence.nix +++ b/modules/nixos/impermanence.nix @@ -8,10 +8,10 @@ with lib; { options.mods.impermanence.enable = mkEnableOption "enables impermanence"; config = mkIf config.mods.impermanence.enable { - environment.persistence."/persist" = { - directories = ["/var/lib/nixos" "/var/lib/systemd/coredump"]; - files = ["/var/lib/sops-nix/key.txt" "/etc/machine-id"]; - }; + # environment.persistence."/persist" = { + # directories = ["/var/lib/nixos" "/var/lib/systemd/coredump"]; + # files = ["/var/lib/sops-nix/key.txt" "/etc/machine-id"]; + # }; boot.initrd.postResumeCommands = lib.mkAfter # sh From fc96ccde8d349eb89c7a208cfde19a684f1a7ffc Mon Sep 17 00:00:00 2001 From: muon Date: Sun, 29 Mar 2026 08:13:54 +0000 Subject: [PATCH 09/13] Fix build uncommented --- flake.nix | 1 + hosts/muon/configuration.nix | 8 ++++++++ hosts/mups/home.nix | 2 -- modules/home/desktop/zen.nix | 2 +- modules/nixos/core/network.nix | 8 -------- modules/nixos/impermanence.nix | 8 ++++---- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/flake.nix b/flake.nix index 6618c30..cbd1b4f 100644 --- a/flake.nix +++ b/flake.nix @@ -103,6 +103,7 @@ ./modules/nixos inputs.home-manager.nixosModules.default inputs.stylix.nixosModules.stylix + inputs.impermanence.nixosModules.impermanence ]; }; diff --git a/hosts/muon/configuration.nix b/hosts/muon/configuration.nix index 8948fa6..5b19ff4 100644 --- a/hosts/muon/configuration.nix +++ b/hosts/muon/configuration.nix @@ -82,6 +82,14 @@ in { }; networking.firewall.allowedTCPPorts = [80]; + # Wildcard DNS: *.word.local -> 127.0.0.1 via NetworkManager's built-in dnsmasq + networking.networkmanager.dns = "dnsmasq"; + # Force resolv.conf to use local dnsmasq so wildcard DNS is actually queried + networking.resolvconf.useLocalResolver = true; + environment.etc."NetworkManager/dnsmasq.d/word-local.conf".text = '' + address=/.word.local/127.0.0.1 + ''; + virtualisation.virtualbox.host.enable = true; users.extraGroups.vboxusers.members = ["user-with-access-to-virtualbox"]; diff --git a/hosts/mups/home.nix b/hosts/mups/home.nix index 4198439..2f77ed0 100644 --- a/hosts/mups/home.nix +++ b/hosts/mups/home.nix @@ -6,8 +6,6 @@ }: { # Modules mods.terminal.zsh.enable = true; - # mods.terminal.development.enable = true; - # mods.terminal.tools.enable = true; # Version of first install home.stateVersion = "24.05"; diff --git a/modules/home/desktop/zen.nix b/modules/home/desktop/zen.nix index a41edc6..dda7170 100644 --- a/modules/home/desktop/zen.nix +++ b/modules/home/desktop/zen.nix @@ -237,6 +237,6 @@ with lib; { }; }; }; - # stylix.targets.zen-browser.profileNames = ["default"]; + stylix.targets.zen-browser.profileNames = ["default"]; }; } diff --git a/modules/nixos/core/network.nix b/modules/nixos/core/network.nix index 1478fbf..5219b13 100644 --- a/modules/nixos/core/network.nix +++ b/modules/nixos/core/network.nix @@ -103,14 +103,6 @@ in 127.0.0.1 word.local ''; - # # Wildcard DNS: *.word.local -> 127.0.0.1 via NetworkManager's built-in dnsmasq - # networking.networkmanager.dns = "dnsmasq"; - # # Force resolv.conf to use local dnsmasq so wildcard DNS is actually queried - # networking.resolvconf.useLocalResolver = true; - # environment.etc."NetworkManager/dnsmasq.d/word-local.conf".text = '' - # address=/.word.local/127.0.0.1 - # ''; - # gateway = # "${pkgs.networkmanager}/bin/nmcli dev show ${interface} | ${pkgs.gnugrep}/bin/fgrep IP4.GATEWAY | ${pkgs.awk}/bin/awk {print $2}"; }; diff --git a/modules/nixos/impermanence.nix b/modules/nixos/impermanence.nix index 3710826..2b65dc8 100644 --- a/modules/nixos/impermanence.nix +++ b/modules/nixos/impermanence.nix @@ -8,10 +8,10 @@ with lib; { options.mods.impermanence.enable = mkEnableOption "enables impermanence"; config = mkIf config.mods.impermanence.enable { - # environment.persistence."/persist" = { - # directories = ["/var/lib/nixos" "/var/lib/systemd/coredump"]; - # files = ["/var/lib/sops-nix/key.txt" "/etc/machine-id"]; - # }; + environment.persistence."/persist" = { + directories = ["/var/lib/nixos" "/var/lib/systemd/coredump"]; + files = ["/var/lib/sops-nix/key.txt" "/etc/machine-id"]; + }; boot.initrd.postResumeCommands = lib.mkAfter # sh From 8eb34e181400874d7b3fb6f583439dbe3b2a128f Mon Sep 17 00:00:00 2001 From: muon Date: Sun, 29 Mar 2026 08:20:03 +0000 Subject: [PATCH 10/13] Fix colmena --- flake.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flake.nix b/flake.nix index cbd1b4f..bd3ff18 100644 --- a/flake.nix +++ b/flake.nix @@ -105,6 +105,10 @@ inputs.stylix.nixosModules.stylix inputs.impermanence.nixosModules.impermanence ]; + + home-manager.sharedModules = [ + inputs.stylix.homeManagerModules.stylix + ]; }; # "muho" = { name, nodes, ... }: { From 1d2696b05ab28adb991b0b22eaca5fb56d21572d Mon Sep 17 00:00:00 2001 From: muon Date: Sun, 29 Mar 2026 20:16:57 +0000 Subject: [PATCH 11/13] Add enshrouded --- hosts/muho/configuration.nix | 5 +- modules/nixos/server/gaming/default.nix | 9 +- modules/nixos/server/gaming/enshrouded.nix | 117 +++++++++++++++++++++ 3 files changed, 127 insertions(+), 4 deletions(-) create mode 100644 modules/nixos/server/gaming/enshrouded.nix diff --git a/hosts/muho/configuration.nix b/hosts/muho/configuration.nix index 3e41fbb..db9d631 100644 --- a/hosts/muho/configuration.nix +++ b/hosts/muho/configuration.nix @@ -50,9 +50,10 @@ in { mods.server.ntfy.enable = true; mods.server.lemmy.enable = true; mods.server.audio.enable = true; - mods.server.murmur.enable = true; + # mods.server.murmur.enable = true; mods.server.atuin.enable = true; - mods.server.seedbox.enable = true; + # mods.server.seedbox.enable = true; + mods.server.enshrouded.enable = true; mods.server.dash.enable = false; mods.server.nginx.ports.dash = 3009; diff --git a/modules/nixos/server/gaming/default.nix b/modules/nixos/server/gaming/default.nix index 46b1c01..4c963c6 100644 --- a/modules/nixos/server/gaming/default.nix +++ b/modules/nixos/server/gaming/default.nix @@ -1,4 +1,9 @@ -{ pkgs, lib, config, ... }: { +{ + pkgs, + lib, + config, + ... +}: { options.mods.server.gaming = { enable = lib.mkEnableOption { default = false; @@ -6,7 +11,7 @@ }; }; - imports = [ ./astral.nix ./vrising.nix ./statech.nix ]; + imports = [./astral.nix ./vrising.nix ./statech.nix ./enshrouded.nix]; config = lib.mkIf config.mods.server.gaming.enable { mods.server.astral.enable = true; diff --git a/modules/nixos/server/gaming/enshrouded.nix b/modules/nixos/server/gaming/enshrouded.nix new file mode 100644 index 0000000..792403a --- /dev/null +++ b/modules/nixos/server/gaming/enshrouded.nix @@ -0,0 +1,117 @@ +# Auto-generated by compose2nix. +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.mods.server.enshrouded; +in + with lib; { + options.mods.server.enshrouded = { + enable = mkEnableOption { + default = false; + description = "enables enshrouded containers"; + }; + }; + + config = mkIf cfg.enable { + # Runtime + virtualisation.docker = { + enable = true; + autoPrune.enable = true; + }; + virtualisation.oci-containers.backend = "docker"; + + networking.firewall.allowedUDPPorts = [15637]; + + # Containers + virtualisation.oci-containers.containers."enshrouded" = { + image = "mornedhels/enshrouded-server:dev-proton"; + environment = { + "PGID" = "4711"; + "PUID" = "4711"; + "SERVER_NAME" = "Blarch"; + "UPDATE_CRON" = "*/30 * * * *"; + "log_level" = "50"; + "SERVER_ROLE_1_NAME" = "Friends"; + "SERVER_ROLE_1_PASSWORD" = "Blarch157"; + "SERVER_ROLE_1_CAN_ACCESS_INVENTORIES" = "true"; + "SERVER_ROLE_1_CAN_EDIT_WORLD" = "true"; + "SERVER_ROLE_1_CAN_EDIT_BASE" = "true"; + "SERVER_ROLE_1_CAN_EXTEND_BASE" = "true"; + "SERVER_ROLE_1_RESERVED_SLOTS" = "6"; + }; + volumes = [ + "/home/muon/enshrouded-server/game:/opt/enshrouded:rw" + ]; + ports = [ + "15637:15637/udp" + ]; + log-driver = "journald"; + extraOptions = [ + "--hostname=enshrouded" + "--network-alias=enshrouded" + "--network=enshrouded_default" + ]; + }; + systemd.services."docker-enshrouded" = { + serviceConfig = { + Restart = lib.mkOverride 90 "always"; + RestartMaxDelaySec = lib.mkOverride 90 "1m"; + RestartSec = lib.mkOverride 90 "100ms"; + RestartSteps = lib.mkOverride 90 9; + }; + after = [ + "docker-network-enshrouded_default.service" + ]; + requires = [ + "docker-network-enshrouded_default.service" + ]; + partOf = [ + "docker-compose-enshrouded-root.target" + ]; + wantedBy = [ + "docker-compose-enshrouded-root.target" + ]; + }; + + # Networks + systemd.services."docker-network-enshrouded_default" = { + path = [pkgs.docker]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStop = "docker network rm -f enshrouded_default"; + }; + script = '' + docker network inspect enshrouded_default || docker network create enshrouded_default + ''; + partOf = ["docker-compose-enshrouded-root.target"]; + wantedBy = ["docker-compose-enshrouded-root.target"]; + }; + + # Builds + systemd.services."docker-build-enshrouded" = { + path = [pkgs.docker pkgs.git]; + serviceConfig = { + Type = "oneshot"; + TimeoutSec = 300; + }; + script = '' + cd /home/muon/enshrouded-server + docker build -t mornedhels/enshrouded-server:dev-proton -f dockerfiles/proton.Dockerfile . + ''; + }; + + # Root service + # When started, this will automatically create all resources and start + # the containers. When stopped, this will teardown all resources. + systemd.targets."docker-compose-enshrouded-root" = { + unitConfig = { + Description = "Root target generated by compose2nix."; + }; + wantedBy = ["multi-user.target"]; + }; + }; + } From 55adebb809858ed27a96c03f2a9cc99ab1dc93bb Mon Sep 17 00:00:00 2001 From: Sage Date: Tue, 31 Mar 2026 11:19:04 +0000 Subject: [PATCH 12/13] Add worktrunk --- modules/home/terminal/development.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/home/terminal/development.nix b/modules/home/terminal/development.nix index b0f55d6..5bcaedf 100644 --- a/modules/home/terminal/development.nix +++ b/modules/home/terminal/development.nix @@ -30,5 +30,9 @@ in { programs.zsh.sessionVariables = lib.mkIf config.mods.terminal.zsh.enable { EDITOR = "nvim"; }; + + home.packages = with pkgs; [ + worktrunk + ]; }; } From 08293858022458d157c56e0cfc1a411cb792da2e Mon Sep 17 00:00:00 2001 From: Sage Date: Tue, 31 Mar 2026 11:35:38 +0000 Subject: [PATCH 13/13] Add worktrunk shell integration --- modules/home/terminal/default.nix | 1 + modules/home/terminal/development.nix | 10 ++- modules/home/terminal/worktrunk.nix | 103 ++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 modules/home/terminal/worktrunk.nix diff --git a/modules/home/terminal/default.nix b/modules/home/terminal/default.nix index 7beb495..0107465 100644 --- a/modules/home/terminal/default.nix +++ b/modules/home/terminal/default.nix @@ -17,6 +17,7 @@ ./zellij ./opencode ./gh.nix + ./worktrunk.nix ]; config = lib.mkIf osConfig.mods.desktop.enable { diff --git a/modules/home/terminal/development.nix b/modules/home/terminal/development.nix index 5bcaedf..81bec67 100644 --- a/modules/home/terminal/development.nix +++ b/modules/home/terminal/development.nix @@ -26,13 +26,15 @@ in { enableNushellIntegration = lib.mkIf config.mods.terminal.nushell.enable true; }; + programs.worktrunk = { + enable = true; + enableZshIntegration = lib.mkIf config.mods.terminal.zsh.enable true; + enableNushellIntegration = lib.mkIf config.mods.terminal.nushell.enable true; + }; + home.sessionVariables.EDITOR = "nvim"; programs.zsh.sessionVariables = lib.mkIf config.mods.terminal.zsh.enable { EDITOR = "nvim"; }; - - home.packages = with pkgs; [ - worktrunk - ]; }; } diff --git a/modules/home/terminal/worktrunk.nix b/modules/home/terminal/worktrunk.nix new file mode 100644 index 0000000..5d85528 --- /dev/null +++ b/modules/home/terminal/worktrunk.nix @@ -0,0 +1,103 @@ +{ + config, + lib, + pkgs, + ... +}: let + inherit (lib) mkIf types; + + cfg = config.programs.worktrunk; +in { + options.programs.worktrunk = { + enable = lib.mkEnableOption "worktrunk, a CLI tool for managing work sessions"; + + package = lib.mkPackageOption pkgs "worktrunk" {nullable = true;}; + + enableBashIntegration = lib.hm.shell.mkBashIntegrationOption {inherit config;}; + + enableFishIntegration = lib.hm.shell.mkFishIntegrationOption {inherit config;}; + + enableNushellIntegration = lib.hm.shell.mkNushellIntegrationOption {inherit config;}; + + enableZshIntegration = lib.hm.shell.mkZshIntegrationOption {inherit config;}; + + shellWrapperName = lib.mkOption { + type = types.str; + default = "wt"; + example = "wt"; + description = '' + Name of the shell wrapper to be called. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = mkIf (cfg.package != null) [cfg.package]; + + programs = let + bashIntegration = '' + ${cfg.shellWrapperName}() { + local directive_file=$(mktemp) + WORKTRUNK_DIRECTIVE_FILE="$directive_file" command ${ + if cfg.shellWrapperName != "wt" + then "wt" + else "\${WORKTRUNK_BIN:-wt}" + } "$@" + if [[ -s "$directive_file" ]]; then + source "$directive_file" + fi + rm -f "$directive_file" + } + ''; + + fishIntegration = '' + set -l directive_file (mktemp) + ${ + if cfg.shellWrapperName != "wt" + then '' + env WORKTRUNK_DIRECTIVE_FILE=$directive_file wt $argv'' + else '' + set -q WORKTRUNK_BIN; or set -l WORKTRUNK_BIN wt + env WORKTRUNK_DIRECTIVE_FILE=$directive_file $WORKTRUNK_BIN $argv'' + } + if test -s "$directive_file" + set -l directive (string collect < "$directive_file") + eval $directive + end + command rm -f "$directive_file" + ''; + + nushellIntegration = '' + def --env --wrapped ${cfg.shellWrapperName} [...args] { + let directive_file = (mktemp --tmpdir) + let worktrunk_bin = (${ + if cfg.shellWrapperName != "wt" + then "'wt'" + else "$env.WORKTRUNK_BIN? | default 'wt'" + }) + with-env { WORKTRUNK_DIRECTIVE_FILE: $directive_file } { + ^$worktrunk_bin ...$args + } + if ($directive_file | path exists) { + let directives = open $directive_file --raw | str trim | lines + for directive in $directives { + if ($directive | str starts-with "cd '") { + let target_dir = $directive | str substring 4..-2 + cd $target_dir + } + } + } + rm -f $directive_file + } + ''; + in { + bash.initExtra = mkIf cfg.enableBashIntegration bashIntegration; + + zsh.initContent = mkIf cfg.enableZshIntegration bashIntegration; + + fish.functions.${cfg.shellWrapperName} = mkIf cfg.enableFishIntegration fishIntegration; + + nushell.extraConfig = mkIf cfg.enableNushellIntegration nushellIntegration; + }; + }; +}