treesummaryrefslogcommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authorPatrick2026-02-12 13:44:56 +0100
committerPatrick2026-02-12 13:44:56 +0100
commit6777e29993359c4bc1d3bfb1c34be450a4f04108 (patch)
tree6745f0fcff926aae6fe5054d5af9e15cdad8b692 /flake.nix
downloadiftint.zig-6777e29993359c4bc1d3bfb1c34be450a4f04108.tar.gz
iftint.zig-6777e29993359c4bc1d3bfb1c34be450a4f04108.zip
initial
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix78
1 files changed, 78 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..3908ef8
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,78 @@
+{
+ description = "Zig project flake";
+
+ inputs = {
+ zig2nix.url = "github:Cloudef/zig2nix";
+ };
+
+ outputs = { zig2nix, ... }: let
+ flake-utils = zig2nix.inputs.flake-utils;
+ in (flake-utils.lib.eachDefaultSystem (system: let
+ # Zig flake helper
+ # Check the flake.nix in zig2nix project for more options:
+ # <https://github.com/Cloudef/zig2nix/blob/master/flake.nix>
+ env = zig2nix.outputs.zig-env.${system} {};
+ in with builtins; with env.pkgs.lib; rec {
+ # Produces clean binaries meant to be ship'd outside of nix
+ # nix build .#foreign
+ packages.foreign = env.package {
+ src = cleanSource ./.;
+
+ # Packages required for compiling
+ nativeBuildInputs = with env.pkgs; [];
+
+ # Packages required for linking
+ buildInputs = with env.pkgs; [];
+
+ # Smaller binaries and avoids shipping glibc.
+ zigPreferMusl = true;
+ };
+
+ # nix build .
+ packages.default = packages.foreign.override (attrs: {
+ # Prefer nix friendly settings.
+ zigPreferMusl = false;
+
+ # Executables required for runtime
+ # These packages will be added to the PATH
+ zigWrapperBins = with env.pkgs; [];
+
+ # Libraries required for runtime
+ # These packages will be added to the LD_LIBRARY_PATH
+ zigWrapperLibs = attrs.buildInputs or [];
+ });
+
+ # For bundling with nix bundle for running outside of nix
+ # example: https://github.com/ralismark/nix-appimage
+ apps.bundle = {
+ type = "app";
+ program = "${packages.foreign}/bin/default";
+ };
+
+ # nix run .
+ apps.default = env.app [] "zig build run -- \"$@\"";
+
+ # nix run .#build
+ apps.build = env.app [] "zig build \"$@\"";
+
+ # nix run .#test
+ apps.test = env.app [] "zig build test -- \"$@\"";
+
+ # nix run .#docs
+ apps.docs = env.app [] "zig build docs -- \"$@\"";
+
+ # nix run .#zig2nix
+ apps.zig2nix = env.app [] "zig2nix \"$@\"";
+
+ # nix develop
+ devShells.default = env.mkShell {
+ # Packages required for compiling, linking and running
+ # Libraries added here will be automatically added to the LD_LIBRARY_PATH and PKG_CONFIG_PATH
+ nativeBuildInputs = []
+ ++ packages.default.nativeBuildInputs
+ ++ packages.default.buildInputs
+ ++ packages.default.zigWrapperBins
+ ++ packages.default.zigWrapperLibs;
+ };
+ }));
+}