X-Git-Url: https://gitweb.ps.run/chirp/blobdiff_plain/756346507acccc810c23b895caa937483cf9d0a8..refs/heads/refactor:/flake.nix diff --git a/flake.nix b/flake.nix index 60987e7..e32262f 100644 --- a/flake.nix +++ b/flake.nix @@ -1,95 +1,35 @@ { - 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: - # - env = zig2nix.outputs.zig-env.${system} {}; - zighttp = env.pkgs.fetchFromGitHub { - owner = "patrick-scho"; - repo = "zighttp"; - rev = "274c46eb3f7e9987cc9260bb70c43b4f5d8555ac"; - sha256 = "sha256-SUFHiA0r46QfzhlO6Ie1CByzC/+qPR2kyAbeDEdKOJ0="; - }; - ziglmdb = env.pkgs.fetchFromGitHub { - owner = "patrick-scho"; - repo = "ziglmdb"; - rev = "88cb74a430fa9629c8127c3a866c40e79a8e4612"; - sha256 = "sha256-SUFHiA0r46QfzhlO6Ie1CByzC/+qPR2kyAbeDEdKOJ0="; - }; - 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 []; + description = "Chirp Flake"; + + inputs.self.submodules = true; + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + inputs.flake-utils.url = "github:numtide/flake-utils"; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + in { + packages.default = pkgs.stdenvNoCC.mkDerivation { + pname = "chirp"; + version = "0.0.0"; + src = ./.; + + buildPhase = '' + mkdir -p .zig-cache-global/zig + ${pkgs.zig}/bin/zig build --global-cache-dir .zig-cache-global + ''; + + installPhase = '' + mkdir -p $out/bin + cp zig-out/bin/chirp $out/bin + ''; + }; + + apps.default = { + type = "app"; + program = "${self.packages.${system}.default}/bin/chirp"; + }; }); - - # 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 [] '' - mkdir -p ext - ln -s ${zighttp} ext/zighttp - ln -s ${ziglmdb} ext/ziglmdb - 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; - }; - })); } +