commit 6556ca4a2adbd86cb3ca48585aeb09fd6008813c
parent 8fabced9f614302a6bfaded21a964afa59f96565
Author: Nikolay Korotkiy <sikmir@disroot.org>
Date: Sat, 24 Oct 2026 20:38:24 +0400
Up
Diffstat:
12 files changed, 177 insertions(+), 171 deletions(-)
diff --git a/flake.lock b/flake.lock
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1792116957,
- "narHash": "sha256-EjZqHKObBfIOeHZnMRVV87HB3pPq/WBkmRJWyFxmZu8=",
+ "lastModified": 1792506237,
+ "narHash": "sha256-Q/8KLB6jNfpaUN1HAedE/u/Et9feE/zYSsutBLKrCFk=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "f20cd90e28fe0403873f473b29e42662cd86e8c4",
+ "rev": "5adc50831c259f87faeb09ddf930d43597197473",
"type": "github"
},
"original": {
diff --git a/pkgs/by-name/em/embox-aarch64/package.nix b/pkgs/by-name/em/embox-aarch64/package.nix
@@ -0,0 +1,3 @@
+{ embox }:
+
+embox.override { arch = "aarch64"; }
diff --git a/pkgs/by-name/em/embox-arm/package.nix b/pkgs/by-name/em/embox-arm/package.nix
@@ -0,0 +1,3 @@
+{ embox }:
+
+embox.override { arch = "arm"; }
diff --git a/pkgs/by-name/em/embox-ppc/package.nix b/pkgs/by-name/em/embox-ppc/package.nix
@@ -0,0 +1,3 @@
+{ embox }:
+
+embox.override { arch = "ppc"; }
diff --git a/pkgs/by-name/em/embox-riscv64/package.nix b/pkgs/by-name/em/embox-riscv64/package.nix
@@ -0,0 +1,3 @@
+{ embox }:
+
+embox.override { arch = "riscv64"; }
diff --git a/pkgs/by-name/em/embox/0001-fix-build.patch b/pkgs/by-name/em/embox/0001-fix-build.patch
@@ -0,0 +1,38 @@
+diff --git c/mk/flags.mk i/mk/flags.mk
+index 3c0887cf9a..254ab2bb77 100644
+--- c/mk/flags.mk
++++ i/mk/flags.mk
+@@ -27,15 +27,15 @@ LDFLAGS ?=
+
+ CROSS_COMPILE ?=
+
+-GCC := $(CROSS_COMPILE)gcc
+-GXX := $(CROSS_COMPILE)g++
+-AR := $(CROSS_COMPILE)ar
+-AS := $(CROSS_COMPILE)as
+-LD := $(CROSS_COMPILE)ld
+-NM := $(CROSS_COMPILE)nm
+-OBJDUMP := $(CROSS_COMPILE)objdump
+-OBJCOPY := $(CROSS_COMPILE)objcopy
+-SIZE := $(CROSS_COMPILE)size
++GCC = $(CROSS_COMPILE)gcc
++GXX = $(CROSS_COMPILE)g++
++AR = $(CROSS_COMPILE)ar
++AS = $(CROSS_COMPILE)as
++LD = $(CROSS_COMPILE)ld
++NM = $(CROSS_COMPILE)nm
++OBJDUMP = $(CROSS_COMPILE)objdump
++OBJCOPY = $(CROSS_COMPILE)objcopy
++SIZE = $(CROSS_COMPILE)size
+
+ ifeq ($(COMPILER),clang)
+ CC := clang
+@@ -44,7 +44,7 @@ else
+ CC := $(GCC)
+ CXX := $(GXX)
+ endif
+-CPP := $(CC) -E
++CPP = $(CC) -E
+
+ EMBOX_GCC := $(TOOLCHAIN_DIR)/embox-gcc
+ EMBOX_GXX := $(TOOLCHAIN_DIR)/embox-g++
diff --git a/pkgs/by-name/em/embox/package.nix b/pkgs/by-name/em/embox/package.nix
@@ -0,0 +1,122 @@
+{
+ lib,
+ gccMultiStdenv,
+ stdenv,
+ fetchFromGitHub,
+ fetchurl,
+ makeWrapper,
+ pkgsCross,
+ bash,
+ cpio,
+ gcc-arm-embedded,
+ python3,
+ qemu,
+ unzip,
+ which,
+ arch ? "x86",
+}:
+
+assert lib.assertOneOf "arch" arch [
+ "aarch64"
+ "arm"
+ "ppc"
+ "riscv64"
+ "x86"
+];
+
+let
+ stdenv' = if arch == "x86" then gccMultiStdenv else stdenv;
+ third-party = lib.mapAttrs (name: spec: fetchurl spec) (
+ builtins.fromJSON (builtins.readFile ./third-party.json)
+ );
+in
+stdenv'.mkDerivation (finalAttrs: {
+ pname = "embox-${arch}-qemu";
+ version = "0.7.3";
+
+ src = fetchFromGitHub {
+ owner = "embox";
+ repo = "embox";
+ tag = "v${finalAttrs.version}";
+ hash = "sha256-fT9cMPczEEBqiuULobsrgM30ivDGFRSNCNzIbw+RENs=";
+ };
+
+ patches = [ ./0001-fix-build.patch ];
+
+ postPatch = ''
+ substituteInPlace mk/extbld/gen_compilers.sh \
+ --replace "/usr/bin/env bash" "${lib.getExe bash}"
+ substituteInPlace templates/aarch64/qemu/build.conf \
+ --replace-fail "aarch64-elf" "aarch64-none-elf"
+ substituteInPlace templates/ppc/qemu/build.conf \
+ --replace-fail "powerpc-elf" "powerpc-none-eabi"
+ substituteInPlace templates/riscv64/qemu/build.conf \
+ --replace-fail "riscv64-unknown-elf" "riscv64-none-elf"
+ '';
+
+ nativeBuildInputs =
+ [
+ cpio
+ python3
+ unzip
+ which
+ makeWrapper
+ ]
+ ++ lib.optional (arch != "x86" && arch != "arm") pkgsCross."${arch}-embedded".stdenv'.cc
+ ++ lib.optional (arch == "arm") gcc-arm-embedded;
+
+ configurePhase = "make confload-${arch}/qemu";
+
+ preBuild = ''
+ patchShebangs ./mk
+ mkdir -p ./download
+ ln -s ${third-party.cjson} ./download/cjson-v1.7.16.tar.gz
+ ln -s ${third-party.acpica-unix} ./download/acpica-R06_28_23.tar.gz
+ ln -s ${third-party.openlibm} ./download/openlibm-0.8.3.tar.gz
+ '';
+
+ installPhase =
+ let
+ platform_args =
+ {
+ aarch64 = "-M virt -cpu cortex-a53 -m 1024";
+ arm = "-M integratorcp -m 256";
+ ppc = "-M virtex-ml507 -m 64";
+ riscv64 = "-M virt -m 512";
+ x86 = "-enable-kvm -device pci-ohci,id=ohci -m 256";
+ }
+ .${arch};
+ net_args = {
+ aarch64 = "model=e1000";
+ arm = "model=smc91c111";
+ x86 = "model=virtio";
+ };
+ withNetwork = (lib.hasAttr arch net_args) && stdenv'.hostPlatform.isLinux;
+ in
+ ''
+ mkdir -p $out/bin
+
+ makeWrapper ${qemu}/bin/qemu-system-${if arch == "x86" then "i386" else arch} $out/bin/embox \
+ --add-flags "${platform_args}" \
+ --add-flags "-kernel $out/share/embox/images/embox.img" \
+ --add-flags "${lib.optionalString withNetwork "-net nic,netdev=n0,${net_args.${arch}},macaddr=AA:BB:CC:DD:EE:02"}" \
+ --add-flags "${lib.optionalString withNetwork "-netdev tap,script=$out/share/embox/scripts/start_script,downscript=$out/share/embox/scripts/stop_script,id=n0"}" \
+ --add-flags "-nographic"
+
+ install -Dm644 build/base/bin/embox $out/share/embox/images/embox.img
+ install -Dm644 conf/*.conf* -t $out/share/embox/conf
+ ''
+ + lib.optionalString withNetwork ''
+ install -Dm755 scripts/qemu/{start,stop}_script -t $out/share/embox/scripts
+ '';
+
+ meta = {
+ description = "Modular and configurable OS for embedded applications";
+ homepage = "http://embox.github.io/";
+ license = lib.licenses.bsd2;
+ maintainers = [ lib.maintainers.sikmir ];
+ platforms = lib.platforms.unix;
+ skip.ci = true;
+ mainProgram = "embox";
+ };
+})
diff --git a/pkgs/embedded/embox/third-party.json b/pkgs/by-name/em/embox/third-party.json
diff --git a/pkgs/by-name/mq/mqtt-cli/package.nix b/pkgs/by-name/mq/mqtt-cli/package.nix
@@ -8,7 +8,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "mqtt-cli";
- version = "4.56.0";
+ version = "4.56.1";
__structuredAttrs = true;
@@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "hivemq";
repo = "mqtt-cli";
tag = "v${finalAttrs.version}";
- hash = "sha256-pxD97LG+BE1sG8NUg+JOLP1gKss9K7rjBRH6/3HO3YY=";
+ hash = "sha256-kS9TGVsDRs4vW+7+B+hvZsdpOqSXtlYpuRA0rzarj3M=";
name = "mqtt-cli-${finalAttrs.version}.jar";
};
diff --git a/pkgs/default.nix b/pkgs/default.nix
@@ -54,14 +54,6 @@ lib.makeScope newScope (
perlPackages =
(callPackage ./perl-packages.nix { }) // pkgs.perlPackages // { recurseForDerivations = false; };
- ### EMBEDDED
-
- embox-aarch64 = callPackage ./embedded/embox { arch = "aarch64"; };
- embox-arm = callPackage ./embedded/embox { arch = "arm"; };
- embox-ppc = callPackage ./embedded/embox { arch = "ppc"; };
- embox-riscv64 = callPackage ./embedded/embox { arch = "riscv64"; };
- embox-x86 = callPackage ./embedded/embox { stdenv = pkgs.gccMultiStdenv; };
-
### GEOSPATIAL
#tdh = callPackage ./geospatial/tdh { };
diff --git a/pkgs/embedded/embox/0001-fix-build.patch b/pkgs/embedded/embox/0001-fix-build.patch
@@ -1,38 +0,0 @@
-diff --git c/mk/flags.mk i/mk/flags.mk
-index 3c0887cf9a..254ab2bb77 100644
---- c/mk/flags.mk
-+++ i/mk/flags.mk
-@@ -27,15 +27,15 @@ LDFLAGS ?=
-
- CROSS_COMPILE ?=
-
--GCC := $(CROSS_COMPILE)gcc
--GXX := $(CROSS_COMPILE)g++
--AR := $(CROSS_COMPILE)ar
--AS := $(CROSS_COMPILE)as
--LD := $(CROSS_COMPILE)ld
--NM := $(CROSS_COMPILE)nm
--OBJDUMP := $(CROSS_COMPILE)objdump
--OBJCOPY := $(CROSS_COMPILE)objcopy
--SIZE := $(CROSS_COMPILE)size
-+GCC = $(CROSS_COMPILE)gcc
-+CXX = $(CROSS_COMPILE)g++
-+AR = $(CROSS_COMPILE)ar
-+AS = $(CROSS_COMPILE)as
-+LD = $(CROSS_COMPILE)ld
-+NM = $(CROSS_COMPILE)nm
-+OBJDUMP = $(CROSS_COMPILE)objdump
-+OBJCOPY = $(CROSS_COMPILE)objcopy
-+SIZE = $(CROSS_COMPILE)size
-
- ifeq ($(COMPILER),clang)
- CC := clang
-@@ -44,7 +44,7 @@ else
- CC := $(GCC)
- CXX := $(GXX)
- endif
--CPP := $(CC) -E
-+CPP = $(CC) -E
-
- EMBOX_GCC := $(TOOLCHAIN_DIR)/embox-gcc
- EMBOX_GXX := $(TOOLCHAIN_DIR)/embox-g++
diff --git a/pkgs/embedded/embox/default.nix b/pkgs/embedded/embox/default.nix
@@ -1,120 +0,0 @@
-{
- lib,
- stdenv,
- fetchFromGitHub,
- fetchurl,
- makeWrapper,
- pkgsCross,
- bash,
- cpio,
- gcc-arm-embedded,
- python3,
- qemu,
- unzip,
- which,
- arch ? "x86",
-}:
-
-assert lib.assertOneOf "arch" arch [
- "aarch64"
- "arm"
- "ppc"
- "riscv64"
- "x86"
-];
-
-let
- third-party = lib.mapAttrs (name: spec: fetchurl spec) (
- builtins.fromJSON (builtins.readFile ./third-party.json)
- );
-in
-stdenv.mkDerivation (finalAttrs: {
- pname = "embox-${arch}-qemu";
- version = "0.7.2";
-
- src = fetchFromGitHub {
- owner = "embox";
- repo = "embox";
- tag = "v${finalAttrs.version}";
- hash = "sha256-lySO7VZJzvTwn1gMNo0LJOQ5vXCN5Wyea4DTzP46Y8Y=";
- };
-
- patches = [ ./0001-fix-build.patch ];
-
- postPatch = ''
- substituteInPlace mk/extbld/gen_compilers.sh \
- --replace "/usr/bin/env bash" "${lib.getExe bash}"
- substituteInPlace templates/aarch64/qemu/build.conf \
- --replace-fail "aarch64-elf" "aarch64-none-elf"
- substituteInPlace templates/ppc/qemu/build.conf \
- --replace-fail "powerpc-elf" "powerpc-none-eabi"
- substituteInPlace templates/riscv64/qemu/build.conf \
- --replace-fail "riscv64-unknown-elf" "riscv64-none-elf"
- '';
-
- nativeBuildInputs =
- [
- cpio
- python3
- unzip
- which
- makeWrapper
- ]
- ++ lib.optional (arch != "x86" && arch != "arm") pkgsCross."${arch}-embedded".stdenv.cc
- ++ lib.optional (arch == "arm") gcc-arm-embedded;
-
- configurePhase = "make confload-${arch}/qemu";
-
- preBuild = ''
- patchShebangs ./mk
- mkdir -p ./download
- ln -s ${third-party.cjson} ./download/cjson-v1.7.16.tar.gz
- ln -s ${third-party.acpica-unix} ./download/acpica-R06_28_23.tar.gz
- ln -s ${third-party.openlibm} ./download/openlibm-0.8.3.tar.gz
- '';
-
- installPhase =
- let
- platform_args =
- {
- aarch64 = "-M virt -cpu cortex-a53 -m 1024";
- arm = "-M integratorcp -m 256";
- ppc = "-M virtex-ml507 -m 64";
- riscv64 = "-M virt -m 512";
- x86 = "-enable-kvm -device pci-ohci,id=ohci -m 256";
- }
- .${arch};
- net_args = {
- aarch64 = "model=e1000";
- arm = "model=smc91c111";
- x86 = "model=virtio";
- };
- withNetwork = (lib.hasAttr arch net_args) && stdenv.hostPlatform.isLinux;
- in
- ''
- mkdir -p $out/bin
-
- makeWrapper ${qemu}/bin/qemu-system-${if arch == "x86" then "i386" else arch} $out/bin/embox \
- --add-flags "${platform_args}" \
- --add-flags "-kernel $out/share/embox/images/embox.img" \
- --add-flags "${lib.optionalString withNetwork "-net nic,netdev=n0,${net_args.${arch}},macaddr=AA:BB:CC:DD:EE:02"}" \
- --add-flags "${lib.optionalString withNetwork "-netdev tap,script=$out/share/embox/scripts/start_script,downscript=$out/share/embox/scripts/stop_script,id=n0"}" \
- --add-flags "-nographic"
-
- install -Dm644 build/base/bin/embox $out/share/embox/images/embox.img
- install -Dm644 conf/*.conf* -t $out/share/embox/conf
- ''
- + lib.optionalString withNetwork ''
- install -Dm755 scripts/qemu/{start,stop}_script -t $out/share/embox/scripts
- '';
-
- meta = {
- description = "Modular and configurable OS for embedded applications";
- homepage = "http://embox.github.io/";
- license = lib.licenses.bsd2;
- maintainers = [ lib.maintainers.sikmir ];
- platforms = lib.platforms.unix;
- skip.ci = true;
- mainProgram = "embox";
- };
-})