-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflake.nix
More file actions
110 lines (94 loc) · 2.85 KB
/
Copy pathflake.nix
File metadata and controls
110 lines (94 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
{
description = "fbDOOM for Braiins devices (Deck and MiniMiner)";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
fbdoom-deck = {
url = "github:BraiinsForge/fbDOOM-fork/doom-deck-mp";
flake = false;
};
fbdoom-miniminer = {
url = "github:BraiinsForge/fbDOOM-fork/doom-miniminer";
flake = false;
};
};
outputs = { self, nixpkgs, fbdoom-deck, fbdoom-miniminer }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
pkgsCross = pkgs.pkgsCross.armv7l-hf-multiplatform;
# Helper function to build fbDOOM
mkDoom = { src, name }: pkgsCross.stdenv.mkDerivation {
pname = "fbdoom-${name}";
version = "0.1";
src = src;
sourceRoot = "source/fbdoom";
nativeBuildInputs = [ pkgs.gnumake ];
buildInputs = [ pkgsCross.glibc.static ];
makeFlags = [
"CROSS_COMPILE=${pkgsCross.stdenv.cc.targetPrefix}"
"CC=${pkgsCross.stdenv.cc.targetPrefix}gcc"
];
NIX_CFLAGS_COMPILE = "-static -std=gnu99";
NIX_LDFLAGS = "-static";
NOSDL = "1";
buildPhase = ''
runHook preBuild
make $makeFlags
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp fbdoom $out/bin/
runHook postInstall
'';
meta = {
description = "DOOM port for framebuffer - ${name} variant";
homepage = "https://github.com/BraiinsForge/fbDOOM-fork";
platforms = [ "armv7l-linux" ];
};
};
in
{
packages.${system} = {
doom-deck = mkDoom {
src = fbdoom-deck;
name = "deck";
};
doom-bmm = mkDoom {
src = fbdoom-miniminer;
name = "miniminer";
};
default = self.packages.${system}.doom-deck;
};
devShells.${system}.default = pkgs.mkShell {
nativeBuildInputs = [
pkgsCross.stdenv.cc
pkgs.gnumake
];
buildInputs = [
pkgsCross.glibc.static
];
shellHook = ''
export CROSS_COMPILE="${pkgsCross.stdenv.cc.targetPrefix}"
export CC="${pkgsCross.stdenv.cc}/bin/${pkgsCross.stdenv.cc.targetPrefix}gcc"
export CFLAGS="-static -std=gnu99 $CFLAGS"
export LDFLAGS="-static $LDFLAGS"
export NOSDL="1"
echo "fbDOOM cross-compile environment for Braiins Forge Deck"
echo ""
echo "Environment configured:"
echo " CROSS_COMPILE=$CROSS_COMPILE"
echo " CC=$CC"
echo " Target: armv7l-hf"
echo ""
echo "To build:"
echo " cd fbdoom"
echo " make"
echo ""
echo "Binary will be: ./fbdoom/fbdoom"
echo ""
'';
};
};
}