Compare commits

..

3 commits

Author SHA1 Message Date
f825dec85a Fix murk home 2026-03-19 10:14:17 +00:00
87f09972b0 Merge branch 'main' of codeberg.org:muon/home 2026-03-19 09:50:23 +00:00
bf5cdde16c Murk slideshow 2026-03-19 09:50:10 +00:00
14 changed files with 155 additions and 518 deletions

View file

@ -1,55 +1,34 @@
{ {
"mender-cli": {
"cargoLock": null,
"date": null,
"extract": null,
"name": "mender-cli",
"passthru": null,
"pinned": false,
"src": {
"deepClone": false,
"fetchSubmodules": false,
"leaveDotGit": false,
"name": null,
"owner": "mendersoftware",
"repo": "mender-cli",
"rev": "2.0.0",
"sha256": "sha256-jFWC1g/ebgMIqgBFgotBDwPcGNmAK3VsvfjiuRCN1ws=",
"sparseCheckout": [],
"type": "github"
},
"version": "2.0.0"
},
"valheim.aaacrafting": { "valheim.aaacrafting": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.aaacrafting", "name": "valheim.aaacrafting",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-XdVVDXU/YfXHnpgjfDixFvRRIn+liunVSXqmGMLXGKY=", "sha256": "sha256-YcKuJKSuhOYZVRNTfp1fYW+STecRYn/IrNVdOeC+rIE=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/2.1.6/" "url": "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/2.1.5/"
}, },
"version": "2.1.6" "version": "2.1.5"
}, },
"valheim.architect": { "valheim.architect": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.architect", "name": "valheim.architect",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-tNlufmp8rMKBzcRWSp0o8FbtrPOpS5OZJACnG7N1Iqc=", "sha256": "sha256-osxAsTjTyVH2qG69vMxr3LH1p1Y+8g6acGHqbfdz8fs=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/OdinPlus/OdinArchitect/1.6.5/" "url": "https://thunderstore.io/package/download/OdinPlus/OdinArchitect/1.6.4/"
}, },
"version": "1.6.5" "version": "1.6.4"
}, },
"valheim.arearepair": { "valheim.arearepair": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.arearepair", "name": "valheim.arearepair",
@ -63,35 +42,35 @@
"version": "1.1.6" "version": "1.1.6"
}, },
"valheim.autostore": { "valheim.autostore": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.autostore", "name": "valheim.autostore",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-ZSGQTxWtTBLrGU9oRPrXgLAauiwWVQQ2gv0Rzq7FHw4=", "sha256": "sha256-h75EnPCQSXMrpDTNaxBHnG4hjYLzICYdU+sE0i/Hud4=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.14/" "url": "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.11/"
}, },
"version": "3.0.14" "version": "3.0.11"
}, },
"valheim.backpacks": { "valheim.backpacks": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.backpacks", "name": "valheim.backpacks",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-ZHvN8J6DsRXRSzVZ3K12WSRtdKt40hMtzHMkYxl0ttU=", "sha256": "sha256-xSfcLisLLPALx6l1Rtbt10YFUo112HV2I6BO/zCjr5w=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Smoothbrain/Backpacks/1.3.8/" "url": "https://thunderstore.io/package/download/Smoothbrain/Backpacks/1.3.6/"
}, },
"version": "1.3.8" "version": "1.3.6"
}, },
"valheim.betternetworking": { "valheim.betternetworking": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.betternetworking", "name": "valheim.betternetworking",
@ -105,7 +84,7 @@
"version": "2.3.2" "version": "2.3.2"
}, },
"valheim.boneappetit": { "valheim.boneappetit": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.boneappetit", "name": "valheim.boneappetit",
@ -119,21 +98,21 @@
"version": "3.3.1" "version": "3.3.1"
}, },
"valheim.campsite": { "valheim.campsite": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.campsite", "name": "valheim.campsite",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-vioZ7NoIWLfO0XlRCe/BEyRaouy1Kl+cPl0QXSyqjC8=", "sha256": "sha256-hQzKXIVxbdq73E0NZlNX+aYLS5Mg6uczX8F8GKFUtec=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.6.3/" "url": "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.6.1/"
}, },
"version": "1.6.3" "version": "1.6.1"
}, },
"valheim.cartography": { "valheim.cartography": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.cartography", "name": "valheim.cartography",
@ -147,21 +126,21 @@
"version": "3.1.1" "version": "3.1.1"
}, },
"valheim.craftyboxes": { "valheim.craftyboxes": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.craftyboxes", "name": "valheim.craftyboxes",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-P7NucjydUf9TMJi8ObfTBA+WQsxKxeaM7N8N7mSDELY=", "sha256": "sha256-+EKD+kBj7JHrwDi/yMPus8MZRtBApX7bOqPRrA3iXoY=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.14/" "url": "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.12/"
}, },
"version": "1.8.14" "version": "1.8.12"
}, },
"valheim.customships": { "valheim.customships": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.customships", "name": "valheim.customships",
@ -175,21 +154,21 @@
"version": "0.4.1" "version": "0.4.1"
}, },
"valheim.extendedinv": { "valheim.extendedinv": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.extendedinv", "name": "valheim.extendedinv",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-mua5nD0BLzkBFIfkfOIAUPQGlOP4sTQ9eqBqrJJJG3w=", "sha256": "sha256-PDmlJw4hfMg1fqO/hPrT6Oss0Czci/Chvr+vz79m5JI=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/2.4.1/" "url": "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/2.2.2/"
}, },
"version": "2.4.1" "version": "2.2.2"
}, },
"valheim.foodmove": { "valheim.foodmove": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.foodmove", "name": "valheim.foodmove",
@ -203,21 +182,21 @@
"version": "1.0.1" "version": "1.0.1"
}, },
"valheim.jotunn": { "valheim.jotunn": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.jotunn", "name": "valheim.jotunn",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-6Qh5hcXM886OiOpcg73EU35kvnyvTtyJ1+7CSPzBsSA=", "sha256": "sha256-AfiWmmoCsDtmvjTPw7AdiPYQZ055dTwq5GFvDD93e2M=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.28.0/" "url": "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.27.1/"
}, },
"version": "2.28.0" "version": "2.27.1"
}, },
"valheim.jsondotnet": { "valheim.jsondotnet": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.jsondotnet", "name": "valheim.jsondotnet",
@ -231,7 +210,7 @@
"version": "13.0.4" "version": "13.0.4"
}, },
"valheim.lazyvikings": { "valheim.lazyvikings": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.lazyvikings", "name": "valheim.lazyvikings",
@ -245,21 +224,21 @@
"version": "1.2.3" "version": "1.2.3"
}, },
"valheim.mining": { "valheim.mining": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.mining", "name": "valheim.mining",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-zWSIDugJchxIfzAt9Ktc37L6ez09iK77pUowUWTndgE=", "sha256": "sha256-SxQ+Z4T5Hg5w4X4+L++eArWZXhoXuarecKl6gdpcpNQ=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Smoothbrain/Mining/1.1.6/" "url": "https://thunderstore.io/package/download/Smoothbrain/Mining/1.1.5/"
}, },
"version": "1.1.6" "version": "1.1.5"
}, },
"valheim.missingpieces": { "valheim.missingpieces": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.missingpieces", "name": "valheim.missingpieces",
@ -273,7 +252,7 @@
"version": "2.2.2" "version": "2.2.2"
}, },
"valheim.multiuserchest": { "valheim.multiuserchest": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.multiuserchest", "name": "valheim.multiuserchest",
@ -287,21 +266,21 @@
"version": "0.6.1" "version": "0.6.1"
}, },
"valheim.planteasily": { "valheim.planteasily": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.planteasily", "name": "valheim.planteasily",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-A7WIMjNkkZoUD9xf5gswOv00/4j/NGkE+yD4gM+bAsY=", "sha256": "sha256-HvjwiVBWs723LhHR7Xk6knugOU8eQewGiV+mZaAN5YU=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Advize/PlantEasily/2.1.0/" "url": "https://thunderstore.io/package/download/Advize/PlantEasily/2.0.3/"
}, },
"version": "2.1.0" "version": "2.0.3"
}, },
"valheim.quickteleport": { "valheim.quickteleport": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.quickteleport", "name": "valheim.quickteleport",
@ -315,21 +294,21 @@
"version": "1.1.0" "version": "1.1.0"
}, },
"valheim.reclaim": { "valheim.reclaim": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.reclaim", "name": "valheim.reclaim",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-MIWKc6cdibXbFXKdMDdNsj7a1L6+jAMzJvhm79JQn/E=", "sha256": "sha256-MnaJ7ulZdDemBrSzKnsgL0BN7UfRfRueFJRiL0iwjB8=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.4.0/" "url": "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.3.10/"
}, },
"version": "1.4.0" "version": "1.3.10"
}, },
"valheim.savecrossbow": { "valheim.savecrossbow": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.savecrossbow", "name": "valheim.savecrossbow",
@ -343,7 +322,7 @@
"version": "1.0.2" "version": "1.0.2"
}, },
"valheim.seedbed": { "valheim.seedbed": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.seedbed", "name": "valheim.seedbed",
@ -357,7 +336,7 @@
"version": "1.2.8" "version": "1.2.8"
}, },
"valheim.servercharacters": { "valheim.servercharacters": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.servercharacters", "name": "valheim.servercharacters",
@ -371,7 +350,7 @@
"version": "1.4.16" "version": "1.4.16"
}, },
"valheim.smoothsave": { "valheim.smoothsave": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.smoothsave", "name": "valheim.smoothsave",
@ -385,7 +364,7 @@
"version": "1.0.5" "version": "1.0.5"
}, },
"valheim.spearfishing": { "valheim.spearfishing": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.spearfishing", "name": "valheim.spearfishing",
@ -399,21 +378,21 @@
"version": "1.0.4" "version": "1.0.4"
}, },
"valheim.swim": { "valheim.swim": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.swim", "name": "valheim.swim",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-3BsC+cFLMtuW9pat5vTqHPt1Ak6fbXStaq6Kk9CdU3c=", "sha256": "sha256-ZNGOZDwLqZ+AisdQKvSU2imqdCQ84jgzT38L1Fp4g4g=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.4.1/" "url": "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.4.0/"
}, },
"version": "1.4.1" "version": "1.4.0"
}, },
"valheim.swimequip": { "valheim.swimequip": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.swimequip", "name": "valheim.swimequip",
@ -427,21 +406,21 @@
"version": "1.1.3" "version": "1.1.3"
}, },
"valheim.targetportal": { "valheim.targetportal": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "valheim.targetportal", "name": "valheim.targetportal",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-mW73PrH+AwZGTYk2zr2/MOTa5RsP5rDr/HKIeKqo9DI=", "sha256": "sha256-qjeihonPwlja7sCRyKhJL53fWX4w1qfuFoOA6FAA7mw=",
"type": "tarball", "type": "tarball",
"url": "https://thunderstore.io/package/download/Smoothbrain/TargetPortal/1.2.3/" "url": "https://thunderstore.io/package/download/Smoothbrain/TargetPortal/1.2.1/"
}, },
"version": "1.2.3" "version": "1.2.1"
}, },
"vesktop.micfix": { "vesktop.micfix": {
"cargoLock": null, "cargoLocks": null,
"date": null, "date": null,
"extract": null, "extract": null,
"name": "vesktop.micfix", "name": "vesktop.micfix",

View file

@ -1,37 +1,20 @@
# This file was generated by nvfetcher, please do not modify it manually. # This file was generated by nvfetcher, please do not modify it manually.
{ fetchgit, fetchurl, fetchFromGitHub, dockerTools }:
{ {
fetchgit,
fetchurl,
fetchFromGitHub,
dockerTools,
}:
{
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;
sha256 = "sha256-jFWC1g/ebgMIqgBFgotBDwPcGNmAK3VsvfjiuRCN1ws=";
};
};
"valheim.aaacrafting" = { "valheim.aaacrafting" = {
pname = "valheim.aaacrafting"; pname = "valheim.aaacrafting";
version = "2.1.6"; version = "2.1.5";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/2.1.6/"; url = "https://thunderstore.io/package/download/Azumatt/AAA_Crafting/2.1.5/";
sha256 = "sha256-XdVVDXU/YfXHnpgjfDixFvRRIn+liunVSXqmGMLXGKY="; sha256 = "sha256-YcKuJKSuhOYZVRNTfp1fYW+STecRYn/IrNVdOeC+rIE=";
}; };
}; };
"valheim.architect" = { "valheim.architect" = {
pname = "valheim.architect"; pname = "valheim.architect";
version = "1.6.5"; version = "1.6.4";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/OdinPlus/OdinArchitect/1.6.5/"; url = "https://thunderstore.io/package/download/OdinPlus/OdinArchitect/1.6.4/";
sha256 = "sha256-tNlufmp8rMKBzcRWSp0o8FbtrPOpS5OZJACnG7N1Iqc="; sha256 = "sha256-osxAsTjTyVH2qG69vMxr3LH1p1Y+8g6acGHqbfdz8fs=";
}; };
}; };
"valheim.arearepair" = { "valheim.arearepair" = {
@ -44,18 +27,18 @@
}; };
"valheim.autostore" = { "valheim.autostore" = {
pname = "valheim.autostore"; pname = "valheim.autostore";
version = "3.0.14"; version = "3.0.11";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.14/"; url = "https://thunderstore.io/package/download/Azumatt/AzuAutoStore/3.0.11/";
sha256 = "sha256-ZSGQTxWtTBLrGU9oRPrXgLAauiwWVQQ2gv0Rzq7FHw4="; sha256 = "sha256-h75EnPCQSXMrpDTNaxBHnG4hjYLzICYdU+sE0i/Hud4=";
}; };
}; };
"valheim.backpacks" = { "valheim.backpacks" = {
pname = "valheim.backpacks"; pname = "valheim.backpacks";
version = "1.3.8"; version = "1.3.6";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Smoothbrain/Backpacks/1.3.8/"; url = "https://thunderstore.io/package/download/Smoothbrain/Backpacks/1.3.6/";
sha256 = "sha256-ZHvN8J6DsRXRSzVZ3K12WSRtdKt40hMtzHMkYxl0ttU="; sha256 = "sha256-xSfcLisLLPALx6l1Rtbt10YFUo112HV2I6BO/zCjr5w=";
}; };
}; };
"valheim.betternetworking" = { "valheim.betternetworking" = {
@ -76,10 +59,10 @@
}; };
"valheim.campsite" = { "valheim.campsite" = {
pname = "valheim.campsite"; pname = "valheim.campsite";
version = "1.6.3"; version = "1.6.1";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.6.3/"; url = "https://thunderstore.io/package/download/OdinPlus/OdinCampsite/1.6.1/";
sha256 = "sha256-vioZ7NoIWLfO0XlRCe/BEyRaouy1Kl+cPl0QXSyqjC8="; sha256 = "sha256-hQzKXIVxbdq73E0NZlNX+aYLS5Mg6uczX8F8GKFUtec=";
}; };
}; };
"valheim.cartography" = { "valheim.cartography" = {
@ -92,10 +75,10 @@
}; };
"valheim.craftyboxes" = { "valheim.craftyboxes" = {
pname = "valheim.craftyboxes"; pname = "valheim.craftyboxes";
version = "1.8.14"; version = "1.8.12";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.14/"; url = "https://thunderstore.io/package/download/Azumatt/AzuCraftyBoxes/1.8.12/";
sha256 = "sha256-P7NucjydUf9TMJi8ObfTBA+WQsxKxeaM7N8N7mSDELY="; sha256 = "sha256-+EKD+kBj7JHrwDi/yMPus8MZRtBApX7bOqPRrA3iXoY=";
}; };
}; };
"valheim.customships" = { "valheim.customships" = {
@ -108,10 +91,10 @@
}; };
"valheim.extendedinv" = { "valheim.extendedinv" = {
pname = "valheim.extendedinv"; pname = "valheim.extendedinv";
version = "2.4.1"; version = "2.2.2";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/2.4.1/"; url = "https://thunderstore.io/package/download/Azumatt/AzuExtendedPlayerInventory/2.2.2/";
sha256 = "sha256-mua5nD0BLzkBFIfkfOIAUPQGlOP4sTQ9eqBqrJJJG3w="; sha256 = "sha256-PDmlJw4hfMg1fqO/hPrT6Oss0Czci/Chvr+vz79m5JI=";
}; };
}; };
"valheim.foodmove" = { "valheim.foodmove" = {
@ -124,10 +107,10 @@
}; };
"valheim.jotunn" = { "valheim.jotunn" = {
pname = "valheim.jotunn"; pname = "valheim.jotunn";
version = "2.28.0"; version = "2.27.1";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.28.0/"; url = "https://thunderstore.io/package/download/ValheimModding/Jotunn/2.27.1/";
sha256 = "sha256-6Qh5hcXM886OiOpcg73EU35kvnyvTtyJ1+7CSPzBsSA="; sha256 = "sha256-AfiWmmoCsDtmvjTPw7AdiPYQZ055dTwq5GFvDD93e2M=";
}; };
}; };
"valheim.jsondotnet" = { "valheim.jsondotnet" = {
@ -148,10 +131,10 @@
}; };
"valheim.mining" = { "valheim.mining" = {
pname = "valheim.mining"; pname = "valheim.mining";
version = "1.1.6"; version = "1.1.5";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Smoothbrain/Mining/1.1.6/"; url = "https://thunderstore.io/package/download/Smoothbrain/Mining/1.1.5/";
sha256 = "sha256-zWSIDugJchxIfzAt9Ktc37L6ez09iK77pUowUWTndgE="; sha256 = "sha256-SxQ+Z4T5Hg5w4X4+L++eArWZXhoXuarecKl6gdpcpNQ=";
}; };
}; };
"valheim.missingpieces" = { "valheim.missingpieces" = {
@ -172,10 +155,10 @@
}; };
"valheim.planteasily" = { "valheim.planteasily" = {
pname = "valheim.planteasily"; pname = "valheim.planteasily";
version = "2.1.0"; version = "2.0.3";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Advize/PlantEasily/2.1.0/"; url = "https://thunderstore.io/package/download/Advize/PlantEasily/2.0.3/";
sha256 = "sha256-A7WIMjNkkZoUD9xf5gswOv00/4j/NGkE+yD4gM+bAsY="; sha256 = "sha256-HvjwiVBWs723LhHR7Xk6knugOU8eQewGiV+mZaAN5YU=";
}; };
}; };
"valheim.quickteleport" = { "valheim.quickteleport" = {
@ -188,10 +171,10 @@
}; };
"valheim.reclaim" = { "valheim.reclaim" = {
pname = "valheim.reclaim"; pname = "valheim.reclaim";
version = "1.4.0"; version = "1.3.10";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.4.0/"; url = "https://thunderstore.io/package/download/Azumatt/Recycle_N_Reclaim/1.3.10/";
sha256 = "sha256-MIWKc6cdibXbFXKdMDdNsj7a1L6+jAMzJvhm79JQn/E="; sha256 = "sha256-MnaJ7ulZdDemBrSzKnsgL0BN7UfRfRueFJRiL0iwjB8=";
}; };
}; };
"valheim.savecrossbow" = { "valheim.savecrossbow" = {
@ -236,10 +219,10 @@
}; };
"valheim.swim" = { "valheim.swim" = {
pname = "valheim.swim"; pname = "valheim.swim";
version = "1.4.1"; version = "1.4.0";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.4.1/"; url = "https://thunderstore.io/package/download/blacks7ar/VikingsDoSwim/1.4.0/";
sha256 = "sha256-3BsC+cFLMtuW9pat5vTqHPt1Ak6fbXStaq6Kk9CdU3c="; sha256 = "sha256-ZNGOZDwLqZ+AisdQKvSU2imqdCQ84jgzT38L1Fp4g4g=";
}; };
}; };
"valheim.swimequip" = { "valheim.swimequip" = {
@ -252,10 +235,10 @@
}; };
"valheim.targetportal" = { "valheim.targetportal" = {
pname = "valheim.targetportal"; pname = "valheim.targetportal";
version = "1.2.3"; version = "1.2.1";
src = fetchTarball { src = fetchTarball {
url = "https://thunderstore.io/package/download/Smoothbrain/TargetPortal/1.2.3/"; url = "https://thunderstore.io/package/download/Smoothbrain/TargetPortal/1.2.1/";
sha256 = "sha256-mW73PrH+AwZGTYk2zr2/MOTa5RsP5rDr/HKIeKqo9DI="; sha256 = "sha256-qjeihonPwlja7sCRyKhJL53fWX4w1qfuFoOA6FAA7mw=";
}; };
}; };
"vesktop.micfix" = { "vesktop.micfix" = {

42
flake.lock generated
View file

@ -233,11 +233,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1774007980, "lastModified": 1773367248,
"narHash": "sha256-FOnZjElEI8pqqCvB6K/1JRHTE8o4rer8driivTpq2uo=", "narHash": "sha256-FFMc1uAwy2GYasd0rdNDVxKyAgzuoJH2M+GglBQbqf0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "9670de2921812bc4e0452f6e3efd8c859696c183", "rev": "be0c641a6a5564caa33982faa1fe2c60d92131c7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -275,11 +275,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1773422513, "lastModified": 1772330611,
"narHash": "sha256-MPjR48roW7CUMU6lu0+qQGqj92Kuh3paIulMWFZy+NQ=", "narHash": "sha256-UZjPc/d5XRxvjDbk4veAO4XFdvx6BUum2l40V688Xq8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "ef12a9a2b0f77c8fa3dda1e7e494fca668909056", "rev": "58fd7ff0eec2cda43e705c4c0585729ec471d400",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -471,11 +471,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1773821835, "lastModified": 1773282481,
"narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", "narHash": "sha256-b/GV2ysM8mKHhinse2wz+uP37epUrSE+sAKXy/xvBY4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", "rev": "fe416aaedd397cacb33a610b33d60ff2b431b127",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -538,11 +538,11 @@
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1773970322, "lastModified": 1773343795,
"narHash": "sha256-xyO9ZV+cZk+HVmjS6P5Jzwl6ioRCKgeLQSSbUFtPrZk=", "narHash": "sha256-0+HEuOytpwyPt7i1jj6v2QJ+NXXisCYnL2XNwPBltvg=",
"owner": "NotAShelf", "owner": "NotAShelf",
"repo": "nvf", "repo": "nvf",
"rev": "8aad181ec9057c56b6fe5d6081a399427e1d1dec", "rev": "83b44eaf50b96bd5d06b1a56a3a51f1b2362db52",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -573,11 +573,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1773889674, "lastModified": 1773096132,
"narHash": "sha256-+ycaiVAk3MEshJTg35cBTUa0MizGiS+bgpYw/f8ohkg=", "narHash": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "29b6519f3e0780452bca0ac0be4584f04ac16cc5", "rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -626,11 +626,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1773792048, "lastModified": 1772296853,
"narHash": "sha256-Oy9PCLG3vtflFBWcJd8c/EB3h5RU7ABAIDWn6JrGf6o=", "narHash": "sha256-pAtzPsgHRKw/2Kv8HgAjSJg450FDldHPWsP3AKG/Xj0=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "3f2f9d307fe58c6abe2a16eb9b62c42d53ef5ee1", "rev": "c4b8e80a1020e09a1f081ad0f98ce804a6e85acf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -794,11 +794,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1773737882, "lastModified": 1773290887,
"narHash": "sha256-P6k0BtT1/idYveVRdcwAZk8By9UjZW8XOMhSoS6wTBY=", "narHash": "sha256-L1yMYmFffHfZNP+hKJGRBmrFKkn/VDhu7jEbVftBQuM=",
"owner": "0xc000022070", "owner": "0xc000022070",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "a7f1db35d74faf04e5189b3a32f890186ace5c28", "rev": "9346698c4562819f61b4e5097151ec0b17729fab",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -16,6 +16,7 @@ in {
with pkgs; [ with pkgs; [
nix-alien nix-alien
r2modman r2modman
lutris
godot godot
rustdesk-flutter rustdesk-flutter
motion motion
@ -80,7 +81,7 @@ in {
}; };
}; };
}; };
networking.firewall.allowedTCPPorts = [80]; networking.firewall.allowedTCPPorts = [ 80 ];
virtualisation.virtualbox.host.enable = true; virtualisation.virtualbox.host.enable = true;
users.extraGroups.vboxusers.members = ["user-with-access-to-virtualbox"]; users.extraGroups.vboxusers.members = ["user-with-access-to-virtualbox"];

View file

@ -8,7 +8,7 @@
}: let }: let
cfg = osConfig.mods; cfg = osConfig.mods;
in { in {
imports = [inputs.impermanence.homeManagerModules.impermanence]; # imports = [inputs.impermanence.homeManagerModules.impermanence];
# Modules # Modules
mods.xdg.enable = true; mods.xdg.enable = true;
@ -25,8 +25,8 @@ in {
mods.desktop.productivity.enable = false; mods.desktop.productivity.enable = false;
mods.zen.enable = true; mods.zen.enable = true;
mods.obsidian.enable = true; mods.obsidian.enable = true;
mods.theme.slideshow.enable = true;
mods.octo.enable = true; mods.octo.enable = true;
mods.theme.slideshow = true;
home.packages = with pkgs; home.packages = with pkgs;
[ [
@ -46,6 +46,7 @@ in {
go go
rainfrog rainfrog
tealdeer tealdeer
(callPackage ./packages/mender-cli.nix {})
] ]
# Non-free </3 # Non-free </3
++ [google-cloud-sdk google-cloud-sql-proxy]; ++ [google-cloud-sdk google-cloud-sql-proxy];

View file

@ -2,28 +2,31 @@
lib, lib,
stdenv, stdenv,
buildGoModule, buildGoModule,
sources, fetchFromGitHub,
makeWrapper, makeWrapper,
installShellFiles, installShellFiles,
pkg-config,
openssl,
xz, xz,
go, go,
}: }:
let buildGoModule rec {
src = sources.mender-cli; pname = "mender-cli";
in version = "1.12.0";
buildGoModule {
inherit (src) pname version src vendorHash; src = fetchFromGitHub {
owner = "mendersoftware";
repo = "mender-cli";
rev = version;
sha256 = "sha256-Pf87wTHXcFlnYsgx7ieiIJ9PWJFPUkFJYTkKJKmMFEQ=";
};
vendorHash = "sha256-MqyBa+wsbuXqtM4DL/QGBUWuEYlG8BRxIXq7O1LJUyM=";
nativeBuildInputs = [ nativeBuildInputs = [
makeWrapper makeWrapper
installShellFiles installShellFiles
pkg-config
]; ];
buildInputs = [ buildInputs = [
openssl
xz xz
]; ];
@ -45,7 +48,7 @@ buildGoModule {
description = "Mender CLI tool to simplify integration between the Mender server and cloud services like continuous integration (CI)/build automation"; description = "Mender CLI tool to simplify integration between the Mender server and cloud services like continuous integration (CI)/build automation";
mainProgram = "mender-cli"; mainProgram = "mender-cli";
homepage = "https://github.com/mendersoftware/mender-cli/"; homepage = "https://github.com/mendersoftware/mender-cli/";
changelog = "https://github.com/mendersoftware/mender-cli/releases/tag/${src.version}"; changelog = "https://github.com/mendersoftware/mender-cli/releases/tag/${version}";
license = lib.licenses.asl20; license = lib.licenses.asl20;
}; };
} }

View file

@ -28,7 +28,7 @@ in
# mullvad-browser # mullvad-browser
# password manager # password manager
# bitwarden-desktop bitwarden-desktop
# file management # file management
libsForQt5.breeze-icons libsForQt5.breeze-icons

View file

@ -8,11 +8,6 @@
vesktop-nogain = pkgs.vesktop.overrideAttrs (previousAttrs: { vesktop-nogain = pkgs.vesktop.overrideAttrs (previousAttrs: {
patches = previousAttrs.patches ++ [sources."vesktop.micfix".src]; patches = previousAttrs.patches ++ [sources."vesktop.micfix".src];
}); });
# freetube-custom =
# (import sources.freetube.src {
# inherit (pkgs) system;
# config = pkgs.config;
# }).freetube;
in { in {
options.mods.social.enable = options.mods.social.enable =
lib.mkEnableOption "enables social media clients"; lib.mkEnableOption "enables social media clients";
@ -22,13 +17,12 @@ in {
# Communication # Communication
# kotatogram-desktop # kotatogram-desktop
signal-desktop signal-desktop
# abaddon abaddon
# vesktop-nogain vesktop-nogain
# (callPackage ./packages/librediscord.nix {}) # (callPackage ./packages/librediscord.nix {})
jami jami
# Video # Video
# freetube-custom
freetube freetube
# Security # Security

View file

@ -2,7 +2,6 @@
pkgs, pkgs,
lib, lib,
config, config,
sources,
... ...
}: let }: let
cfg = config.mods.terminal; cfg = config.mods.terminal;
@ -13,10 +12,6 @@ in {
options.mods.terminal.hr.enable = lib.mkEnableOption "Hefring (Work Tooling)"; options.mods.terminal.hr.enable = lib.mkEnableOption "Hefring (Work Tooling)";
config = lib.mkIf cfg.hr.enable { config = lib.mkIf cfg.hr.enable {
home.packages = [
(pkgs.callPackage ./mender-cli.nix {inherit sources;})
];
programs.nushell = lib.mkIf cfg.nushell.enable { programs.nushell = lib.mkIf cfg.nushell.enable {
extraConfig = '' extraConfig = ''
$env.PROJECT_ID = if ($env | get -o PROJECT_ID | is-empty) { "mk2-test" } else { $env.PROJECT_ID } $env.PROJECT_ID = if ($env | get -o PROJECT_ID | is-empty) { "mk2-test" } else { $env.PROJECT_ID }

View file

@ -19,7 +19,7 @@
programs.opencode = { programs.opencode = {
enable = true; enable = true;
settings = { settings = {
"plugin" = ["opencode-gemini-auth" "opencode-anthropic-oauth"]; "plugin" = ["opencode-gemini-auth"];
"permission" = { "permission" = {
"bash" = { "bash" = {

View file

@ -1,8 +1,3 @@
# ["freetube"]
# src.git = "https://github.com/ddogfoodd/nixpkgs.git"
# src.branch = "update-freetube"
# fetch.git = "https://github.com/ddogfoodd/nixpkgs.git"
["vesktop.micfix"] ["vesktop.micfix"]
src.manual = "1.0.2" src.manual = "1.0.2"
fetch.url = "https://codeberg.org/muon/gists/raw/branch/main/micfix.patch" fetch.url = "https://codeberg.org/muon/gists/raw/branch/main/micfix.patch"
@ -157,7 +152,3 @@ src.webpage = "https://thunderstore.io/c/valheim/p/BentoG/MissingPieces/"
src.regex = "v(\\d+\\.\\d+\\.\\d+)" src.regex = "v(\\d+\\.\\d+\\.\\d+)"
fetch.tarball = "https://thunderstore.io/package/download/BentoG/MissingPieces/$ver/" fetch.tarball = "https://thunderstore.io/package/download/BentoG/MissingPieces/$ver/"
["mender-cli"]
src.github = "mendersoftware/mender-cli"
fetch.github = "mendersoftware/mender-cli"

View file

@ -1,55 +0,0 @@
# nvft (nvfetcher + tools)
A Nix package that combines nvfetcher source updates with automatic Go vendor hash calculation.
## Usage
```bash
# Enter the nix-shell (makes nvft available)
nix-shell
# Run the updater
nvft
```
This will:
1. Save existing vendorHash and source hashes
2. Run `nvfetcher` to update all source versions and hashes in `_sources/generated.nix`
3. Restore saved vendorHash values
4. Check if source hash changed - if yes, recalculate vendorHash; if no, skip (fast!)
5. Update `vendorHash` in `_sources/generated.nix` only if needed
## Configuration
Go packages that need vendor hash updates are configured in the `GO_PACKAGES` array within the script.
Currently configured packages:
- `mender-cli` -> `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.

View file

@ -1,250 +0,0 @@
{
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 <nixpkgs> {};
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 <nixpkgs> {} }:
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";
};
}

View file

@ -1,8 +1,4 @@
{pkgs ? import <nixpkgs> {}, ...}: {pkgs ? import <nixpkgs> {}, ...}: {
let
nvft = pkgs.callPackage ./pkgs/nvft {};
in
{
default = pkgs.mkShell { default = pkgs.mkShell {
NIX_CONFIG = "extra-experimental-features = nix-command flakes ca-derivations"; NIX_CONFIG = "extra-experimental-features = nix-command flakes ca-derivations";
nativeBuildInputs = with pkgs; [ nativeBuildInputs = with pkgs; [
@ -12,7 +8,6 @@ in
sops sops
age age
nvfetcher nvfetcher
nvft
]; ];
}; };
} }