From c87e2a988aade3b0fab5eb0275e3411f6799e675 Mon Sep 17 00:00:00 2001 From: Maximilian Held Date: Mon, 26 Oct 2026 17:27:36 +0100 Subject: [PATCH 1/5] Update nullkomma integration Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .Rbuildignore | 2 + .github/workflows/push.yml | 2 - .gitignore | 1 + README.md | 2 +- flake.lock | 217 +++++++++++++++++++++++++++++++++++-- flake.nix | 8 +- 6 files changed, 218 insertions(+), 14 deletions(-) diff --git a/.Rbuildignore b/.Rbuildignore index 925113a..cbbdc71 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -13,9 +13,11 @@ ^[.]github$ ^[.]vscode$ ^[.]nvim[.]lua$ +^[.]nullkomma$ ^result(-.*)?$ ^docs$ ^pkgdown$ ^coverage[.]xml$ ^pkg[.]lock$ +^docs$ # nullkomma:r:end diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index c9991ca..ce46eb9 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -9,8 +9,6 @@ concurrency: jobs: nullkomma: uses: dataheld/nullkomma/.github/workflows/ci.yml@main - with: - visibility: unlisted permissions: contents: read id-token: write diff --git a/.gitignore b/.gitignore index 8252d39..4787c9e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ result result-* .direnv/ /.nullkomma/cloudflare/ +/.nullkomma/processes/ .R/library/ /.nvim.lua /.vscode/extensions.json diff --git a/README.md b/README.md index fd77c31..3ac83a7 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ pak::pak("dataheld/elf") diff --git a/flake.lock b/flake.lock index e58659f..6e6f5cd 100644 --- a/flake.lock +++ b/flake.lock @@ -7,9 +7,7 @@ "nullkomma", "nixpkgs" ], - "nullkomma": [ - "nullkomma" - ] + "nullkomma": "nullkomma" }, "locked": { "lastModified": 1792768557, @@ -25,6 +23,27 @@ } }, "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "brand", + "nullkomma", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1790898470, + "narHash": "sha256-zTwuwezD0w3hpga6a6P8emidzAZFyWqlNeRBlpWOOl8=", + "rev": "024633cd702b10285db5cb19b40ad48d2399ba60", + "revCount": 497, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/hercules-ci/flake-parts/0.1.497%2Brev-024633cd702b10285db5cb19b40ad48d2399ba60/01a0fb23-e4db-78b2-9625-e9cb19ce9ac8/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/hercules-ci/flake-parts/0.1.%2A" + } + }, + "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "nullkomma", @@ -58,6 +77,20 @@ "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/0.5.%2A" } }, + "flake-schemas_2": { + "locked": { + "lastModified": 1780327564, + "narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=", + "rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6", + "revCount": 149, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/0.5.%2A" + } + }, "import-tree": { "locked": { "lastModified": 1784254960, @@ -73,6 +106,21 @@ "type": "github" } }, + "import-tree_2": { + "locked": { + "lastModified": 1784254960, + "narHash": "sha256-iI88R3wHz8wTKQb5orvpc51L/Xr64AJyxid/0MKa/b8=", + "owner": "vic", + "repo": "import-tree", + "rev": "4ebb10ae17d5f1ad366e7aef5b92cb8eecf24f69", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "import-tree", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1791353474, @@ -87,12 +135,27 @@ "url": "https://flakehub.com/f/NixOS/nixpkgs/0.2605.%2A" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1791353474, + "narHash": "sha256-v72qr4LsSz61tQki/41nHKZKPY6NSeZavtGlAInOCng=", + "rev": "2efa67fd26b6df417c33e4603185c701f260dd83", + "revCount": 1015818, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2605.1015818%2Brev-2efa67fd26b6df417c33e4603185c701f260dd83/01a11777-646c-7ac3-9a38-941658c52e27/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/NixOS/nixpkgs/0.2605.%2A" + } + }, "nullkomma": { "inputs": { "flake-parts": "flake-parts", "flake-schemas": "flake-schemas", "nixpkgs": "nixpkgs", "nixpkgs-r": [ + "brand", "nullkomma", "nixpkgs" ], @@ -102,12 +165,41 @@ "up": "up" }, "locked": { - "lastModified": 1792848421, - "narHash": "sha256-Afh6PbcxYPWoTOsQIzUpxug3yhPGLtgW6lD1uh791G4=", - "rev": "02a9b440a43ebbed44610e24ef5b137cc17e4553", - "revCount": 464, + "lastModified": 1792765921, + "narHash": "sha256-UYYAV+euzKdmIlIzRav3WmhQXjjC8aXlSsdm90DCmLk=", + "owner": "dataheld", + "repo": "nullkomma", + "rev": "c0472461009131a23065588c709d4c14da849f72", + "type": "github" + }, + "original": { + "owner": "dataheld", + "repo": "nullkomma", + "rev": "c0472461009131a23065588c709d4c14da849f72", + "type": "github" + } + }, + "nullkomma_2": { + "inputs": { + "flake-parts": "flake-parts_2", + "flake-schemas": "flake-schemas_2", + "nixpkgs": "nixpkgs_2", + "nixpkgs-r": [ + "nullkomma", + "nixpkgs" + ], + "terraform-providers-bin": "terraform-providers-bin_2", + "terranix": "terranix_2", + "treefmt-nix": "treefmt-nix_2", + "up": "up_2" + }, + "locked": { + "lastModified": 1793028762, + "narHash": "sha256-7cFCpyag7yzDxnlTRCrxxcxRW5AahOVmn5spwfSilvY=", + "rev": "6399a5af88ca7c3ca2f52aa6c15a4acf69f8d01f", + "revCount": 495, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/dataheld/nullkomma/0.1.464%2Brev-02a9b440a43ebbed44610e24ef5b137cc17e4553/01a16e1e-d138-7d23-8baa-7b4feca285b5/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/dataheld/nullkomma/0.1.495%2Brev-6399a5af88ca7c3ca2f52aa6c15a4acf69f8d01f/01a178e1-0cbf-7042-8649-4bbe01a3fd68/source.tar.gz" }, "original": { "type": "tarball", @@ -121,7 +213,7 @@ "nullkomma", "nixpkgs" ], - "nullkomma": "nullkomma" + "nullkomma": "nullkomma_2" } }, "systems": { @@ -139,6 +231,21 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "terraform-providers-bin": { "flake": false, "locked": { @@ -155,14 +262,32 @@ "type": "github" } }, + "terraform-providers-bin_2": { + "flake": false, + "locked": { + "lastModified": 1789698037, + "narHash": "sha256-8/ihOyBtmanPd3qB6HkTi11KeW0bg4dnRIGfrzoo+kQ=", + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "rev": "6f5dbe9186d4a26da7c8a554b45260aa95e24add", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "type": "github" + } + }, "terranix": { "inputs": { "flake-parts": [ + "brand", "nullkomma", "flake-parts" ], "import-tree": "import-tree", "nixpkgs": [ + "brand", "nullkomma", "nixpkgs" ], @@ -182,7 +307,55 @@ "type": "github" } }, + "terranix_2": { + "inputs": { + "flake-parts": [ + "nullkomma", + "flake-parts" + ], + "import-tree": "import-tree_2", + "nixpkgs": [ + "nullkomma", + "nixpkgs" + ], + "systems": "systems_2" + }, + "locked": { + "lastModified": 1790023441, + "narHash": "sha256-9vmOUIearXFJbafvJjEd8yaQQV/dKN2J5t3rC92Hi+Y=", + "owner": "terranix", + "repo": "terranix", + "rev": "cb9dd00fe24f3f1323baaa19b5ee5fb514d37d77", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix", + "type": "github" + } + }, "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "brand", + "nullkomma", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1791203292, + "narHash": "sha256-vuzVwvjeucSnwKwMBpyP8r5IzdrMKCHEdwTrRFwUN7I=", + "rev": "03d8ee1bcbc8f9638907bb79edb9673151d0e22b", + "revCount": 593, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/numtide/treefmt-nix/0.1.593%2Brev-03d8ee1bcbc8f9638907bb79edb9673151d0e22b/01a10d28-fe85-7ba0-9d91-820ac13e70a3/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/numtide/treefmt-nix/0.1.%2A" + } + }, + "treefmt-nix_2": { "inputs": { "nixpkgs": [ "nullkomma", @@ -203,6 +376,32 @@ } }, "up": { + "inputs": { + "flake-schemas": [ + "brand", + "nullkomma", + "flake-schemas" + ], + "nixpkgs": [ + "brand", + "nullkomma", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776825590, + "narHash": "sha256-v8Au0RfOD3CpfB208+J+9Wmyak8VBMzvjGMrxZFiGT0=", + "rev": "9679e3e9157c510033038497235790cee46e2a18", + "revCount": 130, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/up/0.1.130%2Brev-9679e3e9157c510033038497235790cee46e2a18/019db30f-74b2-7d20-90f1-f92b7f56621a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/up/0.1.%2A" + } + }, + "up_2": { "inputs": { "flake-schemas": [ "nullkomma", diff --git a/flake.nix b/flake.nix index a3cd4ee..85ba989 100644 --- a/flake.nix +++ b/flake.nix @@ -6,14 +6,18 @@ nixpkgs.follows = "nullkomma/nixpkgs"; brand = { url = "https://flakehub.com/f/dataheld/brand/*"; - inputs.nullkomma.follows = "nullkomma"; + # The brand flake's own CI config still uses nullkomma.github.ci.inputs. }; }; outputs = inputs: inputs.nullkomma.lib.mkFlake { inherit inputs; } { - nullkomma.r-non-nix.enable = true; + nullkomma.r = { + enable = true; + nonNix.enable = true; + pkgdown.brand.enable = true; + }; nullkomma.brand = inputs.brand; nullkomma.cloudflare = { enable = true; From 400e45abbc0831b67552a86c9def54ff2afaab42 Mon Sep 17 00:00:00 2001 From: Maximilian Held Date: Mon, 26 Oct 2026 17:55:47 +0100 Subject: [PATCH 2/5] Silence test console noise idiomatically Capture is_installed2() results from within expect_message()/expect_silent() instead of calling it twice, and scope opt_set_local2() with local() instead of calling withr::deferred_run(). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- tests/testthat/test-dependencies.R | 12 ++++++++---- tests/testthat/test-options.R | 7 ++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/tests/testthat/test-dependencies.R b/tests/testthat/test-dependencies.R index 855e9aa..6cec0c5 100644 --- a/tests/testthat/test-dependencies.R +++ b/tests/testthat/test-dependencies.R @@ -1,11 +1,15 @@ test_that("missing package is identified", { withr::local_options(rlib_message_verbosity = "verbose") - expect_message(source_pef_elf("dependencies", "is_installed2", "missing")) - expect_false(source_pef_elf("dependencies", "is_installed2", "missing")) + expect_message( + installed <- source_pef_elf("dependencies", "is_installed2", "missing") + ) + expect_false(installed) }) test_that("present package is identified", { withr::local_options(rlib_message_verbosity = "verbose") - expect_silent(source_pef_elf("dependencies", "is_installed2", "present")) - expect_true(source_pef_elf("dependencies", "is_installed2", "present")) + expect_silent( + installed <- source_pef_elf("dependencies", "is_installed2", "present") + ) + expect_true(installed) }) diff --git a/tests/testthat/test-options.R b/tests/testthat/test-options.R index 9250efa..3b693d9 100644 --- a/tests/testthat/test-options.R +++ b/tests/testthat/test-options.R @@ -1,8 +1,9 @@ test_that("locally setting options works", { options::define_option("foo", default = "bar") expect_equal(options::opt("foo"), "bar") - opt_set_local2("foo", "baz") - expect_equal(options::opt("foo"), "baz") - withr::deferred_run() + local({ + opt_set_local2("foo", "baz") + expect_equal(options::opt("foo"), "baz") + }) expect_equal(options::opt("foo"), "bar") }) From 726be630b459108d3f177c1ed747069ed296ce18 Mon Sep 17 00:00:00 2001 From: Maximilian Held Date: Mon, 26 Oct 2026 18:03:19 +0100 Subject: [PATCH 3/5] Use dataheld/maxheld as brand dataheld/brand is deprecated; brand declarations moved to dataheld/maxheld. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- flake.lock | 269 +++++++++++------------------------------------------ flake.nix | 8 +- 2 files changed, 57 insertions(+), 220 deletions(-) diff --git a/flake.lock b/flake.lock index 6e6f5cd..c40e0b6 100644 --- a/flake.lock +++ b/flake.lock @@ -1,49 +1,6 @@ { "nodes": { - "brand": { - "inputs": { - "nixpkgs": [ - "brand", - "nullkomma", - "nixpkgs" - ], - "nullkomma": "nullkomma" - }, - "locked": { - "lastModified": 1792768557, - "narHash": "sha256-RO4zqZolbuOeq1G1pO8JTAHNfjMckh2I856PG/mfdlc=", - "rev": "9b30b65c6a4a782d8845a0b1f857cd5434e04940", - "revCount": 15, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/dataheld/brand/0.1.15%2Brev-9b30b65c6a4a782d8845a0b1f857cd5434e04940/01a1695a-42ef-73d2-8fa4-222bad88f84c/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/dataheld/brand/%2A" - } - }, "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "brand", - "nullkomma", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1790898470, - "narHash": "sha256-zTwuwezD0w3hpga6a6P8emidzAZFyWqlNeRBlpWOOl8=", - "rev": "024633cd702b10285db5cb19b40ad48d2399ba60", - "revCount": 497, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/hercules-ci/flake-parts/0.1.497%2Brev-024633cd702b10285db5cb19b40ad48d2399ba60/01a0fb23-e4db-78b2-9625-e9cb19ce9ac8/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/hercules-ci/flake-parts/0.1.%2A" - } - }, - "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "nullkomma", @@ -77,20 +34,6 @@ "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/0.5.%2A" } }, - "flake-schemas_2": { - "locked": { - "lastModified": 1780327564, - "narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=", - "rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6", - "revCount": 149, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/0.5.%2A" - } - }, "import-tree": { "locked": { "lastModified": 1784254960, @@ -106,36 +49,50 @@ "type": "github" } }, - "import-tree_2": { + "maxheld": { + "inputs": { + "modern2-cv": "modern2-cv", + "nixpkgs": [ + "maxheld", + "nullkomma", + "nixpkgs" + ], + "nullkomma": [ + "nullkomma" + ], + "pillar": "pillar" + }, "locked": { - "lastModified": 1784254960, - "narHash": "sha256-iI88R3wHz8wTKQb5orvpc51L/Xr64AJyxid/0MKa/b8=", - "owner": "vic", - "repo": "import-tree", - "rev": "4ebb10ae17d5f1ad366e7aef5b92cb8eecf24f69", - "type": "github" + "lastModified": 1793032852, + "narHash": "sha256-17Ah7o/NJb1Te81TKDDfgtSumV9QJ8RRhnNV8qE4ZP8=", + "rev": "83c05ac1282b2add9516117102c2a561d709b27e", + "revCount": 220, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/dataheld/maxheld/0.1.220%2Brev-83c05ac1282b2add9516117102c2a561d709b27e/01a1791d-37f5-7b53-b196-0de5224abeae/source.tar.gz" }, "original": { - "owner": "vic", - "repo": "import-tree", - "type": "github" + "type": "tarball", + "url": "https://flakehub.com/f/dataheld/maxheld/%2A" } }, - "nixpkgs": { + "modern2-cv": { + "flake": false, "locked": { - "lastModified": 1791353474, - "narHash": "sha256-v72qr4LsSz61tQki/41nHKZKPY6NSeZavtGlAInOCng=", - "rev": "2efa67fd26b6df417c33e4603185c701f260dd83", - "revCount": 1015818, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2605.1015818%2Brev-2efa67fd26b6df417c33e4603185c701f260dd83/01a11777-646c-7ac3-9a38-941658c52e27/source.tar.gz" + "lastModified": 1730144289, + "narHash": "sha256-g26OWmYGlcMH0n0nrGxM/qXbHnQAcc16ZKRy2KaEWBw=", + "owner": "schochastics", + "repo": "modern2-cv", + "rev": "14147a8da77a7afafe9140c7ef32f2cccaddcfcb", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://flakehub.com/f/NixOS/nixpkgs/0.2605.%2A" + "owner": "schochastics", + "repo": "modern2-cv", + "rev": "14147a8da77a7afafe9140c7ef32f2cccaddcfcb", + "type": "github" } }, - "nixpkgs_2": { + "nixpkgs": { "locked": { "lastModified": 1791353474, "narHash": "sha256-v72qr4LsSz61tQki/41nHKZKPY6NSeZavtGlAInOCng=", @@ -155,7 +112,6 @@ "flake-schemas": "flake-schemas", "nixpkgs": "nixpkgs", "nixpkgs-r": [ - "brand", "nullkomma", "nixpkgs" ], @@ -164,35 +120,6 @@ "treefmt-nix": "treefmt-nix", "up": "up" }, - "locked": { - "lastModified": 1792765921, - "narHash": "sha256-UYYAV+euzKdmIlIzRav3WmhQXjjC8aXlSsdm90DCmLk=", - "owner": "dataheld", - "repo": "nullkomma", - "rev": "c0472461009131a23065588c709d4c14da849f72", - "type": "github" - }, - "original": { - "owner": "dataheld", - "repo": "nullkomma", - "rev": "c0472461009131a23065588c709d4c14da849f72", - "type": "github" - } - }, - "nullkomma_2": { - "inputs": { - "flake-parts": "flake-parts_2", - "flake-schemas": "flake-schemas_2", - "nixpkgs": "nixpkgs_2", - "nixpkgs-r": [ - "nullkomma", - "nixpkgs" - ], - "terraform-providers-bin": "terraform-providers-bin_2", - "terranix": "terranix_2", - "treefmt-nix": "treefmt-nix_2", - "up": "up_2" - }, "locked": { "lastModified": 1793028762, "narHash": "sha256-7cFCpyag7yzDxnlTRCrxxcxRW5AahOVmn5spwfSilvY=", @@ -206,14 +133,31 @@ "url": "https://flakehub.com/f/dataheld/nullkomma/%2A" } }, + "pillar": { + "flake": false, + "locked": { + "lastModified": 1687682392, + "narHash": "sha256-QFjaC3QfxTGGt3JcPYeuNaZMRvo7bOMIHHyqzCoEpHs=", + "owner": "xriley", + "repo": "pillar-theme", + "rev": "dbe51083f1566b748c7b3cf81f3d1069b634608e", + "type": "github" + }, + "original": { + "owner": "xriley", + "repo": "pillar-theme", + "rev": "dbe51083f1566b748c7b3cf81f3d1069b634608e", + "type": "github" + } + }, "root": { "inputs": { - "brand": "brand", + "maxheld": "maxheld", "nixpkgs": [ "nullkomma", "nixpkgs" ], - "nullkomma": "nullkomma_2" + "nullkomma": "nullkomma" } }, "systems": { @@ -231,21 +175,6 @@ "type": "github" } }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "terraform-providers-bin": { "flake": false, "locked": { @@ -262,32 +191,14 @@ "type": "github" } }, - "terraform-providers-bin_2": { - "flake": false, - "locked": { - "lastModified": 1789698037, - "narHash": "sha256-8/ihOyBtmanPd3qB6HkTi11KeW0bg4dnRIGfrzoo+kQ=", - "owner": "nix-community", - "repo": "nixpkgs-terraform-providers-bin", - "rev": "6f5dbe9186d4a26da7c8a554b45260aa95e24add", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs-terraform-providers-bin", - "type": "github" - } - }, "terranix": { "inputs": { "flake-parts": [ - "brand", "nullkomma", "flake-parts" ], "import-tree": "import-tree", "nixpkgs": [ - "brand", "nullkomma", "nixpkgs" ], @@ -307,55 +218,7 @@ "type": "github" } }, - "terranix_2": { - "inputs": { - "flake-parts": [ - "nullkomma", - "flake-parts" - ], - "import-tree": "import-tree_2", - "nixpkgs": [ - "nullkomma", - "nixpkgs" - ], - "systems": "systems_2" - }, - "locked": { - "lastModified": 1790023441, - "narHash": "sha256-9vmOUIearXFJbafvJjEd8yaQQV/dKN2J5t3rC92Hi+Y=", - "owner": "terranix", - "repo": "terranix", - "rev": "cb9dd00fe24f3f1323baaa19b5ee5fb514d37d77", - "type": "github" - }, - "original": { - "owner": "terranix", - "repo": "terranix", - "type": "github" - } - }, "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "brand", - "nullkomma", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1791203292, - "narHash": "sha256-vuzVwvjeucSnwKwMBpyP8r5IzdrMKCHEdwTrRFwUN7I=", - "rev": "03d8ee1bcbc8f9638907bb79edb9673151d0e22b", - "revCount": 593, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/numtide/treefmt-nix/0.1.593%2Brev-03d8ee1bcbc8f9638907bb79edb9673151d0e22b/01a10d28-fe85-7ba0-9d91-820ac13e70a3/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/numtide/treefmt-nix/0.1.%2A" - } - }, - "treefmt-nix_2": { "inputs": { "nixpkgs": [ "nullkomma", @@ -376,32 +239,6 @@ } }, "up": { - "inputs": { - "flake-schemas": [ - "brand", - "nullkomma", - "flake-schemas" - ], - "nixpkgs": [ - "brand", - "nullkomma", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1776825590, - "narHash": "sha256-v8Au0RfOD3CpfB208+J+9Wmyak8VBMzvjGMrxZFiGT0=", - "rev": "9679e3e9157c510033038497235790cee46e2a18", - "revCount": 130, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/up/0.1.130%2Brev-9679e3e9157c510033038497235790cee46e2a18/019db30f-74b2-7d20-90f1-f92b7f56621a/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/DeterminateSystems/up/0.1.%2A" - } - }, - "up_2": { "inputs": { "flake-schemas": [ "nullkomma", diff --git a/flake.nix b/flake.nix index 85ba989..9d5ce23 100644 --- a/flake.nix +++ b/flake.nix @@ -4,9 +4,9 @@ inputs = { nullkomma.url = "https://flakehub.com/f/dataheld/nullkomma/*"; nixpkgs.follows = "nullkomma/nixpkgs"; - brand = { - url = "https://flakehub.com/f/dataheld/brand/*"; - # The brand flake's own CI config still uses nullkomma.github.ci.inputs. + maxheld = { + url = "https://flakehub.com/f/dataheld/maxheld/*"; + inputs.nullkomma.follows = "nullkomma"; }; }; @@ -18,7 +18,7 @@ nonNix.enable = true; pkgdown.brand.enable = true; }; - nullkomma.brand = inputs.brand; + nullkomma.brand = inputs.maxheld; nullkomma.cloudflare = { enable = true; domain = "maxheld.de"; From 9246e018cb5ca34bfeca201b52b67143dce77fd1 Mon Sep 17 00:00:00 2001 From: Maximilian Held Date: Mon, 26 Oct 2026 18:09:06 +0100 Subject: [PATCH 4/5] Avoid implicit assignment in present-package test Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- tests/testthat/test-dependencies.R | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/testthat/test-dependencies.R b/tests/testthat/test-dependencies.R index 6cec0c5..5fe99f6 100644 --- a/tests/testthat/test-dependencies.R +++ b/tests/testthat/test-dependencies.R @@ -8,8 +8,6 @@ test_that("missing package is identified", { test_that("present package is identified", { withr::local_options(rlib_message_verbosity = "verbose") - expect_silent( - installed <- source_pef_elf("dependencies", "is_installed2", "present") - ) - expect_true(installed) + expect_silent(source_pef_elf("dependencies", "is_installed2", "present")) + expect_true(source_pef_elf("dependencies", "is_installed2", "present")) }) From 5c04ede963e74b9dd39ca309be6d23665860d621 Mon Sep 17 00:00:00 2001 From: Maximilian Held Date: Mon, 26 Oct 2026 23:00:25 +0100 Subject: [PATCH 5/5] Update nullkomma Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .Rbuildignore | 2 ++ .gitignore | 2 ++ AGENTS.md | 21 +++++++++++++++++++++ README.md | 2 +- flake.lock | 10 +++++----- 5 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 AGENTS.md diff --git a/.Rbuildignore b/.Rbuildignore index cbbdc71..e6404b4 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -4,6 +4,8 @@ # nullkomma:r:start [.]nix$ ^flake[.]lock$ +^[.]agents$ +^AGENTS[.]md$ ^[.]envrc$ ^[.]Renviron$ ^[.]Rprofile$ diff --git a/.gitignore b/.gitignore index 4787c9e..48c13fe 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ result-* /.nullkomma/processes/ .R/library/ /.nvim.lua +/.agents/skills/nullkomma-resolve-file-conflicts +/.agents/skills/nullkomma-upgrade /.vscode/extensions.json /.vscode/settings.json !man/figures/ diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..376a0b7 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,21 @@ + +## nullkomma + +This project's development environment comes from [nullkomma](https://github.com/dataheld/nullkomma). +Run commands inside its dev shell: +`direnv exec . `, or `nix develop --command ` without direnv. +`tasks` lists the project's workflows. + +Check your work locally, from fastest to strictest: + +1. While you work, run the narrowest task that covers the change, + e.g. `check ` or a single language task. +1. Before you report a change as done, run `tasks all`, then `nix flake check`, + and fix what fails. + `tasks all` formats, regenerates files and runs the checks in the working tree. + `nix flake check` runs the checks sandboxed, as CI does, + and sees only files that Git tracks: `git add` new files first. + +Skills for nullkomma itself are in `.agents/skills/nullkomma-*`; +if they are missing, run `nk-generate-files`. + diff --git a/README.md b/README.md index 3ac83a7..1dbf035 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ for plugin configuration and development documentation. You do not need Nix or direnv to run or develop this package. -> **Note:** +> [! NOTE] > Developing without nix provides only limited reproducibility of the environment. > The PPM date *approximates* the Nix package set: > R package versions can differ, diff --git a/flake.lock b/flake.lock index c40e0b6..a6f0e9b 100644 --- a/flake.lock +++ b/flake.lock @@ -121,12 +121,12 @@ "up": "up" }, "locked": { - "lastModified": 1793028762, - "narHash": "sha256-7cFCpyag7yzDxnlTRCrxxcxRW5AahOVmn5spwfSilvY=", - "rev": "6399a5af88ca7c3ca2f52aa6c15a4acf69f8d01f", - "revCount": 495, + "lastModified": 1793049623, + "narHash": "sha256-xAu05L+aMSxKG71q7yFUbhzW/DmY82CIH3sC7Wb7FxY=", + "rev": "cf176d7a0652e160ef0f2fbbd4ce943deb443eca", + "revCount": 533, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/dataheld/nullkomma/0.1.495%2Brev-6399a5af88ca7c3ca2f52aa6c15a4acf69f8d01f/01a178e1-0cbf-7042-8649-4bbe01a3fd68/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/dataheld/nullkomma/0.1.533%2Brev-cf176d7a0652e160ef0f2fbbd4ce943deb443eca/01a17a1e-5146-7da0-a4de-85d449cf8ec4/source.tar.gz" }, "original": { "type": "tarball",