From 81fededbc08ab1bc3d2e156de3abd6702010e243 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 12 Feb 2026 12:26:57 +0900 Subject: [PATCH 1/4] Makefile: add `install` target --- Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7a23797..745dd06 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,10 @@ CFLAGS_WARNINGS = -Wall -Wextra CFLAGS_RELEASE = -O2 -fstack-protector-strong -fpie CFLAGS_DEBUG = -O0 -ggdb -DDEBUG -fsanitize=address -static-libasan +prefix = /usr/local +exec_prefix = $(prefix) +bindir = $(exec_prefix)/bin + SOURCE_FOLDER = src SOURCE = main.c TARGET = wamf @@ -18,7 +22,7 @@ REMOTE_HOST = innovation.pvv.ntnu.no REMOTE_DIR = /tmp/wamf REMOTE_PATH = $(REMOTE_USER)@$(REMOTE_HOST):$(REMOTE_DIR) -.PHONY: all release debug clean deploy remote-build remote-clean remote-run +.PHONY: all install release debug clean deploy remote-build remote-clean remote-run help all: $(OUTPUT) @@ -31,6 +35,9 @@ $(OUTPUT) release: $(SOURCE_FOLDER)/$(SOURCE) $(OUTPUT_FOLDER) $(OUTPUT_DEBUG) debug: $(SOURCE_FOLDER)/$(SOURCE) $(OUTPUT_FOLDER) $(CC) $(CFLAGS) $(CFLAGS_WARNINGS) $(CFLAGS_DEBUG) -o $(OUTPUT_DEBUG) $(SOURCE_FOLDER)/$(SOURCE) +install: $(OUTPUT) + install -Dm755 $(OUTPUT) -t $(bindir) + clean: rm -rf $(OUTPUT_FOLDER) @@ -55,7 +62,6 @@ remote-run: remote-build @echo "Running on remote server..." ssh $(REMOTE_USER)@$(REMOTE_HOST) "cd $(REMOTE_DIR) && ./$(TARGET)" -.PHONY: help help: @echo "Available targets:" @echo " all - Build locally" -- 2.52.0 From 1669bc478fd2f7aacb6a1ea0e812c3d76c178fa7 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 12 Feb 2026 12:27:59 +0900 Subject: [PATCH 2/4] nix/package: init --- .gitignore | 3 +++ flake.nix | 12 ++++++++++-- nix/package.nix | 24 ++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 nix/package.nix diff --git a/.gitignore b/.gitignore index ea1472e..00e91da 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ output/ + +result +result-* diff --git a/flake.nix b/flake.nix index 6120759..6ebdba2 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "development shell"; + description = "RCON -> Bluemap player position API converter"; inputs.nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; @@ -7,11 +7,19 @@ let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; }; + inherit (pkgs) lib; in { - devShells.x86_64-linux.default = pkgs.mkShell { + devShells.${system}.default = pkgs.mkShell { buildInputs = with pkgs; [ clang ]; }; + + packages.${system} = let + src = lib.cleanSource ./.; + in { + default = self.packages.${system}.wamf; + wamf = pkgs.callPackage ./nix/package.nix { inherit src; }; + }; }; } diff --git a/nix/package.nix b/nix/package.nix new file mode 100644 index 0000000..5b85477 --- /dev/null +++ b/nix/package.nix @@ -0,0 +1,24 @@ +{ + lib, + src, + stdenv, +}: + +stdenv.mkDerivation { + pname = "where-are-my-friends"; + version = "0.1.0"; + inherit src; + + makeFlags = [ + "prefix=$(out)" + "CC=${stdenv.cc.targetPrefix}cc" + ]; + + meta = { + description = "RCON -> Bluemap player position API converter"; + homepage = "https://git.pvv.ntnu.no/Projects/where-are-my-friends"; + platforms = lib.platforms.unix; + mainProgram = "wamf"; + }; +} + -- 2.52.0 From 8f6c41c47ef5fcd52b5fc30933d4f22c19ff7a47 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 12 Feb 2026 12:28:37 +0900 Subject: [PATCH 3/4] flake.nix: add freebsd cross compiled variant of package --- flake.nix | 6 ++++++ nix/package.nix | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 6ebdba2..119fb5a 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,12 @@ in { default = self.packages.${system}.wamf; wamf = pkgs.callPackage ./nix/package.nix { inherit src; }; + wamf-freebsd-cross = let + pkgs = import nixpkgs { + localSystem = system; + crossSystem = "x86_64-freebsd"; + }; + in pkgs.callPackage ./nix/package.nix { inherit src; }; }; }; } diff --git a/nix/package.nix b/nix/package.nix index 5b85477..5990536 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -3,7 +3,9 @@ src, stdenv, }: - +let + isFreebsdCross = !stdenv.buildPlatform.isFreeBSD && stdenv.hostPlatform.isFreeBSD; +in stdenv.mkDerivation { pname = "where-are-my-friends"; version = "0.1.0"; @@ -14,6 +16,13 @@ stdenv.mkDerivation { "CC=${stdenv.cc.targetPrefix}cc" ]; + postFixup = lib.optionalString isFreebsdCross '' + patchelf --set-interpreter /usr/libexec/ld-elf.so.1 "$out/bin/wamf" + patchelf --remove-rpath "$out/bin/wamf" + ''; + + hardeningDisable = lib.optionals isFreebsdCross [ "fortify" ]; + meta = { description = "RCON -> Bluemap player position API converter"; homepage = "https://git.pvv.ntnu.no/Projects/where-are-my-friends"; -- 2.52.0 From 9629f86ba0c89829b35aaa863c94b312e116888a Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 12 Feb 2026 12:33:26 +0900 Subject: [PATCH 4/4] flake.nix: use `lib.fileset` for source filtering --- flake.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 119fb5a..96f3740 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,13 @@ }; packages.${system} = let - src = lib.cleanSource ./.; + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.unions [ + ./Makefile + ./src + ]; + }; in { default = self.packages.${system}.wamf; wamf = pkgs.callPackage ./nix/package.nix { inherit src; }; -- 2.52.0