From 2aeb0cb8c8a61336da2f70f589cd668948e5cd01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignas=20Vy=C5=A1niauskas?= Date: Wed, 4 Feb 2026 10:56:16 +0200 Subject: [PATCH 1/7] Bump nixpkgs to current PlayOS pin --- flake.lock | 8 ++++---- flake.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index b7deb4ee..3055a6e7 100644 --- a/flake.lock +++ b/flake.lock @@ -20,16 +20,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1701282334, - "narHash": "sha256-MxCVrXY6v4QmfTwIysjjaX0XUhqBbxTWWB4HXtDYsdk=", + "lastModified": 1731603435, + "narHash": "sha256-CqCX4JG7UiHvkrBTpYC3wcEurvbtTADLbo3Ns2CEoL8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "057f9aecfb71c4437d2b27d3323df7f93c010b7e", + "rev": "8b27c1239e5c421a2bbc2c65d52e4a6fbf2ff296", "type": "github" }, "original": { "owner": "nixos", - "ref": "23.11", + "ref": "24.11", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index f266355a..dcf833a1 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,7 @@ and a development shell for Linux and macOS. ''; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/23.11"; + nixpkgs.url = "github:nixos/nixpkgs/24.11"; flake-utils.url = "github:numtide/flake-utils"; }; From 33a0ac6283e5363295d0d224dc3e9cd45ecc37d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignas=20Vy=C5=A1niauskas?= Date: Wed, 4 Feb 2026 10:56:32 +0200 Subject: [PATCH 2/7] Upgrade x/net dependency --- go.mod | 8 +++++--- go.sum | 9 ++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 5bcd3910..d95e2c47 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/dividat/driver -go 1.18 +go 1.23.0 + +toolchain go1.23.3 require ( github.com/cenkalti/backoff v2.2.1+incompatible @@ -25,8 +27,8 @@ require ( require ( github.com/creack/goselect v0.1.2 // indirect github.com/miekg/dns v1.1.43 // indirect - golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 // indirect - golang.org/x/sys v0.19.0 // indirect + golang.org/x/net v0.36.0 // indirect + golang.org/x/sys v0.30.0 // indirect ) replace go.bug.st/serial => github.com/dividat/go-serial v1.6.4-usbmetadata diff --git a/go.sum b/go.sum index e27f1694..0b88a106 100644 --- a/go.sum +++ b/go.sum @@ -28,9 +28,11 @@ github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6 h1:0PC75Fz/kyMGhL0e1QnypqK2kQMqKt9csD1GnMJR+Zk= golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= +golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -39,10 +41,11 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 9f347772f081053339e24c979439c8bed033eb85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignas=20Vy=C5=A1niauskas?= Date: Wed, 4 Feb 2026 10:58:52 +0200 Subject: [PATCH 3/7] Bump logrus to fix CVE-2025-65637 --- go.mod | 2 +- go.sum | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index d95e2c47..2febc2a9 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( // dependency choice as these projects evolve in the future. github.com/libp2p/zeroconf/v2 v2.2.0 github.com/pin/tftp v2.1.0+incompatible - github.com/sirupsen/logrus v1.8.1 + github.com/sirupsen/logrus v1.8.3 go.bug.st/serial v1.6.1 ) diff --git a/go.sum b/go.sum index 0b88a106..dabc2ce4 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,7 @@ github.com/creack/goselect v0.1.2 h1:2DNy14+JPjRBgPzAd1thbQp4BSIihxcBf0IXhQXDRa0 github.com/creack/goselect v0.1.2/go.mod h1:a/NhLweNvqIYMuxcMOuWY516Cimucms3DglDzQP3hKY= github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ= @@ -24,9 +25,10 @@ github.com/pin/tftp v2.1.0+incompatible h1:Yng4J7jv6lOc6IF4XoB5mnd3P7ZrF60XQq+my github.com/pin/tftp v2.1.0+incompatible/go.mod h1:xVpZOMCXTy+A5QMjEVN0Glwa1sUvaJhFXbr/aAxuxGY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/sirupsen/logrus v1.8.3 h1:DBBfY8eMYazKEJHb3JKpSPfpgd2mBCoNFlQx6C5fftU= +github.com/sirupsen/logrus v1.8.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -35,17 +37,19 @@ golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 62c72967c7a62fd7377a86296d9585a53d89feec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignas=20Vy=C5=A1niauskas?= Date: Wed, 4 Feb 2026 11:07:54 +0200 Subject: [PATCH 4/7] Use the new maps.Values in 1.23 --- src/dividat-driver/flex/enumerator/mockdev/enabled.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dividat-driver/flex/enumerator/mockdev/enabled.go b/src/dividat-driver/flex/enumerator/mockdev/enabled.go index c445483a..6f9ce90e 100644 --- a/src/dividat-driver/flex/enumerator/mockdev/enabled.go +++ b/src/dividat-driver/flex/enumerator/mockdev/enabled.go @@ -5,7 +5,9 @@ package mockdev import ( "encoding/json" "errors" + "maps" "net/http" + "slices" "strconv" "strings" @@ -80,11 +82,8 @@ func (h *MockDeviceRegistry) ServeHTTP(w http.ResponseWriter, r *http.Request) { } func (h *MockDeviceRegistry) ListMockDevices() []*serialenum.PortDetails { - ports := make([]*serialenum.PortDetails, 0, len(h.registeredMockDevices)) - for _, port := range h.registeredMockDevices { - ports = append(ports, port) - } - return ports + values := slices.Collect(maps.Values(h.registeredMockDevices)) + return values } func (h *MockDeviceRegistry) nextMockDeviceId() MockDeviceId { From f17420c897bfc351bad73b7b3ea3217c0359bb64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignas=20Vy=C5=A1niauskas?= Date: Fri, 18 Jul 2025 11:54:55 +0300 Subject: [PATCH 5/7] Fix: update pcsclite flags for meson --- nix/crossBuild.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/crossBuild.nix b/nix/crossBuild.nix index 386357bb..97e7f6e3 100644 --- a/nix/crossBuild.nix +++ b/nix/crossBuild.nix @@ -43,7 +43,7 @@ in muslPkgs = pkgs.pkgsCross.musl64; cc = muslPkgs.gcc; static-pcsclite = muslPkgs.pcsclite.overrideAttrs (attrs: { - configureFlags = attrs.configureFlags ++ [ "--enable-static" "--disable-shared" ]; + mesonFlags = attrs.mesonFlags ++ [ (pkgs.lib.mesonOption "default_library" "static") ]; }); in mkCrossBuildShell { From f533bf884e89e5bffdeaa1c82ca21a3ea759c28b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignas=20Vy=C5=A1niauskas?= Date: Wed, 4 Feb 2026 13:01:25 +0200 Subject: [PATCH 6/7] Fix windows crossBuild by switching to mcfgthreads Resulting binary not tested. Cross-building with mingw_w64_pthreads broken in nixpkgs 24.11 for some reason. --- flake.lock | 6 +++--- nix/crossBuild.nix | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 3055a6e7..c15ba2a9 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { diff --git a/nix/crossBuild.nix b/nix/crossBuild.nix index 97e7f6e3..f0894848 100644 --- a/nix/crossBuild.nix +++ b/nix/crossBuild.nix @@ -26,6 +26,10 @@ in let mingwPkgs = pkgs.pkgsCross.mingwW64; cc = mingwPkgs.stdenv.cc; + + mcfgthreads = mingwPkgs.windows.mcfgthreads.overrideAttrs (oldAttrs: { + configureFlags = (oldAttrs.configureFlags or []) ++ [ "--enable-static" ]; + }); in mkCrossBuildShell { GOOS = "windows"; @@ -33,7 +37,7 @@ in CC = "${cc}/bin/x86_64-w64-mingw32-gcc"; buildInputs = [ cc - mingwPkgs.windows.mingw_w64_pthreads + mcfgthreads ]; staticBuild = true; }; From 635976f3322a7791ea7c493e64893b562e65a800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ignas=20Vy=C5=A1niauskas?= Date: Wed, 4 Feb 2026 14:13:38 +0200 Subject: [PATCH 7/7] Use nixpkgs 25.05 to cross-build macOS Cross-building on 24.11 seems to be broken --- flake.lock | 19 ++++++++++++++++++- flake.nix | 11 +++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index c15ba2a9..a6175434 100644 --- a/flake.lock +++ b/flake.lock @@ -34,10 +34,27 @@ "type": "github" } }, + "nixpkgs2505": { + "locked": { + "lastModified": 1748026580, + "narHash": "sha256-rWtXrcIzU5wm/C8F9LWvUfBGu5U5E7cFzPYT1pHIJaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "11cb3517b3af6af300dd6c055aeda73c9bf52c48", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "nixpkgs2505": "nixpkgs2505" } }, "systems": { diff --git a/flake.nix b/flake.nix index dcf833a1..49678a81 100644 --- a/flake.nix +++ b/flake.nix @@ -5,23 +5,30 @@ ''; inputs = { nixpkgs.url = "github:nixos/nixpkgs/24.11"; + # only used for crossBuilding on darwin, since 24.11 is broken + nixpkgs2505.url = "github:nixos/nixpkgs/25.05"; flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, flake-utils }: + outputs = { self, nixpkgs, nixpkgs2505, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; + crossBuild = import ./nix/crossBuild.nix { inherit pkgs; }; + + crossBuildDarwin = import ./nix/crossBuild.nix { + pkgs = import nixpkgs2505 { inherit system; }; + }; in { devShells = { crossBuild = { inherit (crossBuild) x86_64-linux; inherit (crossBuild) x86_64-windows; - inherit (crossBuild) darwin; + inherit (crossBuildDarwin) darwin; }; default = import ./nix/devShell.nix { inherit pkgs;