chore(nix)_: enforce nix shell for Linux

This commit is contained in:
Anton Iakimov 2024-10-10 12:36:25 +02:00
parent 9767a9809c
commit b93b7c567c
No known key found for this signature in database
4 changed files with 67 additions and 9 deletions

View File

@ -17,6 +17,7 @@ BUILD_SYSTEM_DIR := vendor/nimbus-build-system
all \
nix-shell \
bottles \
check-nix-shell \
check-qt-dir \
check-pkg-target-linux \
check-pkg-target-macos \
@ -104,6 +105,13 @@ else
RUN_TARGET := run-linux
endif
check-nix-shell:
ifeq ($(detected_OS),Linux)
ifndef IN_NIX_SHELL
$(error Running outside of Nix shell is not supported)
endif
endif
check-qt-dir:
ifeq ($(shell qmake -v 2>/dev/null),)
$(error Cannot find your Qt5 installation. Please make sure to export correct Qt installation binaries path to PATH env)
@ -365,7 +373,7 @@ storybook-build: | storybook-configure
run-storybook: storybook-build
echo -e "\033[92mRunning:\033[39m Storybook"
$(STORYBOOK_BUILD_PATH)/bin/Storybook
nixGL $(STORYBOOK_BUILD_PATH)/bin/Storybook
run-storybook-tests: storybook-build
echo -e "\033[92mRunning:\033[39m Storybook Tests"
@ -453,7 +461,7 @@ status-go-clean:
rm -f $(STATUSGO)
export STATUSKEYCARDGO := vendor/status-keycard-go/build/libkeycard/libkeycard.$(LIBSTATUS_EXT)
export STATUSKEYCARDGO_LIBDIR := "$(shell pwd)/$(shell dirname "$(STATUSKEYCARDGO)")"
export STATUSKEYCARDGO_LIBDIR := $(shell pwd)/$(shell dirname "$(STATUSKEYCARDGO)")
status-keycard-go: $(STATUSKEYCARDGO)
$(STATUSKEYCARDGO): | deps
@ -578,7 +586,7 @@ ifeq ($(detected_OS),Darwin)
bin/nim_status_client
endif
nim_status_client: force-rebuild-status-go $(NIM_STATUS_CLIENT)
nim_status_client: check-nix-shell force-rebuild-status-go $(NIM_STATUS_CLIENT)
ifdef IN_NIX_SHELL
APPIMAGE_TOOL := appimagetool
@ -825,15 +833,15 @@ ICON_TOOL := node_modules/.bin/fileicon
# STATUS_PORT ?= 30306
# WAKUV2_PORT ?= 30307
run-linux: export LD_LIBRARY_PATH := $(QT5_LIBDIR):$(STATUSGO_LIBDIR):$(STATUSKEYCARDGO_LIBDIR):$(LD_LIBRARY_PATH)
run-linux: nim_status_client
echo -e "\033[92mRunning:\033[39m bin/nim_status_client"
LD_LIBRARY_PATH="$(QT5_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(STATUSKEYCARDGO_LIBDIR):$(LD_LIBRARY_PATH)" \
./bin/nim_status_client $(ARGS)
nixGL ./bin/nim_status_client $(ARGS)
run-linux-gdb: export LD_LIBRARY_PATH := $(QT5_LIBDIR):$(STATUSGO_LIBDIR):$(STATUSKEYCARDGO_LIBDIR):$(LD_LIBRARY_PATH)
run-linux-gdb: nim_status_client
echo -e "\033[92mRunning:\033[39m bin/nim_status_client"
LD_LIBRARY_PATH="$(QT5_LIBDIR)":"$(STATUSGO_LIBDIR)":"$(STATUSKEYCARDGO_LIBDIR):$(LD_LIBRARY_PATH)" \
gdb -ex=r ./bin/nim_status_client $(ARGS)
nixGL gdb -ex=r ./bin/nim_status_client $(ARGS)
run-macos: nim_status_client
mkdir -p bin/StatusDev.app/Contents/{MacOS,Resources}

View File

@ -14,6 +14,43 @@
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-utils": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixgl": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1672992692,
"narHash": "sha256-/eLQLSNIa22ARTZbk+x8i0iE8khe1eiHWkuxgTVXZ7g=",
"owner": "nix-community",
"repo": "nixGL",
"rev": "643e730efb981ffaf8478f441ec9b9aeea1c89f5",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixGL",
"rev": "643e730efb981ffaf8478f441ec9b9aeea1c89f5",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1651477912,
@ -33,6 +70,7 @@
"root": {
"inputs": {
"flake-compat": "flake-compat",
"nixgl": "nixgl",
"nixpkgs": "nixpkgs"
}
}

View File

@ -3,11 +3,17 @@
# for nix-shell support
inputs.flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
outputs = { self, nixpkgs, flake-compat }:
# pinned last commit which works with nixpkgs 20.09
inputs.nixgl = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/nixGL/643e730efb981ffaf8478f441ec9b9aeea1c89f5";
};
outputs = { self, nixpkgs, nixgl, flake-compat }:
let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [ (import ./nix/overlay.nix) ];
overlays = [ (import ./nix/overlay.nix) nixgl.overlay ];
};
in {
devShells.x86_64-linux.default = pkgs.callPackage ./nix/shell.nix { };

View File

@ -25,6 +25,7 @@ in pkgs.mkShell {
# TODO:check the required packages
buildInputs = with pkgs; [
# dev and CI
bash curl wget git file unzip jq lsb-release which cacert gnupg
linuxdeployqt appimagekit
libglvnd # TODO: Qt 5.15.2 fix, review after upgrade
@ -32,6 +33,10 @@ in pkgs.mkShell {
go_1_21 go-bindata mockgen protobuf3_20 protoc-gen-go
pcre nss pcsclite extra-cmake-modules
xorg.libxcb xorg.libX11 libxkbcommon
# dev machine only
nixUnstable # for flake support TODO: remove with nixpkgs upgrade
nixgl.auto.nixGLDefault
gdb
] ++ (with gst_all_1; [
gst-libav gstreamer
gst-plugins-bad gst-plugins-base
@ -62,6 +67,7 @@ in pkgs.mkShell {
# TODO:check which deps are needed
LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath (
[
libudev0-shim # this only needed to run, not build
alsaLib
expat
fontconfig