# To update to the newest version of SWORD do the following: # * Scroll down to the line where the "rev" is listed # * Update that value to match the latest revision of SWORD's SVN trunk # * Comment out the hash line below that # * Run a `nix build` on the current target # * When you receive an error about the hash mismatch, copy the correct value # and paste it into the hash as the new value, then uncomment the hash # * Run the build again. It won't need to re-fetch the sources, it will only # execute the build { description = "Subversion SWORD builds."; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; flake-root.url = "github:srid/flake-root"; hooks.url = "github:cachix/git-hooks.nix"; }; outputs = { flake-parts, ... }@inputs: flake-parts.lib.mkFlake { inherit inputs; } { imports = [ inputs.flake-root.flakeModule ]; flake = { # Universal things overlays.default = _final: _prev: { }; }; systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; perSystem = { pkgs, self', ... }@inputs': { _module.args.pkgs = import inputs.nixpkgs { inherit (inputs') system; overlays = [ (_: p: { nghttp3 = p.nghttp3.overrideAttrs { meta.platforms = pkgs.lib.platforms.all; }; ngtcp2 = p.ngtcp2.overrideAttrs { meta.platforms = pkgs.lib.platforms.all; }; }) ]; }; devShells.default = pkgs.mkShell { # These will just be available packages = with pkgs; [ pre-commit ]; buildInputs = self'.checks.pre-commit.enabledPackages; inherit (self'.checks.pre-commit) shellHook; }; checks = { pre-commit = inputs.hooks.lib.${inputs'.system}.run { src = ./.; hooks = { check-added-large-files.enable = true; check-case-conflicts.enable = true; check-merge-conflicts.enable = true; check-symlinks.enable = true; deadnix.enable = true; end-of-file-fixer.enable = true; fix-byte-order-marker.enable = true; mixed-line-endings.enable = true; nixfmt.enable = true; trim-trailing-whitespace.enable = true; }; }; }; # This is not special, this is just flakes packages = let tar = win: let svnSword = (win.sword.overrideAttrs { src = pkgs.fetchsvn { url = "https://svn.crosswire.org/svn/sword/trunk"; rev = "3914"; hash = "sha256-yqZtUb86KILTYcshe/qim5+H57ktKlH3Uiic6KDKnrQ="; }; patches = [ ]; }).override { curl = curlMinimal; }; curlMinimal = win.curlMinimal.overrideAttrs (final: { buildInputs = [ ]; # This causes circular dependencies on bash, which is not supported in MinGW postInstall = final.postInstall + '' rm "''${!outputBin}/bin/wcurl" ''; }); in pkgs.writeShellApplication { name = "package-sword"; runtimeInputs = with pkgs; [ coreutils gnutar xz ]; text = '' set -x out=$(pwd) pushd ${svnSword} tar --mtime="$(date +'%Y-%m-%d')" -cvhaf "$out/sword.tar.xz" ./* --transform "s+^\\./+sword/+" ''; }; in with pkgs.pkgsCross; { default = tar mingwW64; x86 = tar mingwW64; ucrt = tar ucrt64; #ucrtAarch = tar ucrtAarch64; update = pkgs.callPackage ./update.nix { }; }; }; }; }