140 lines
4.3 KiB
Nix
140 lines
4.3 KiB
Nix
# A safe, Rust-native binding for the SWORD library
|
|
# Copyright (C) 2025 Gregory Hellings
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; version 2.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
{
|
|
description = "Greg's homepage";
|
|
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";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
naersk = {
|
|
url = "github:nix-community/naersk";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
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':
|
|
let
|
|
naersk-lib = pkgs.callPackage inputs.naersk { };
|
|
in
|
|
{
|
|
_module.args.pkgs = import inputs.nixpkgs {
|
|
inherit (inputs') system;
|
|
overlays = [ ];
|
|
};
|
|
devShells.default = pkgs.mkShell rec {
|
|
# These will just be available
|
|
packages = with pkgs; [
|
|
cargo
|
|
clippy
|
|
libgcc
|
|
lldb
|
|
rustc.llvm
|
|
rustc
|
|
rustfmt
|
|
pre-commit
|
|
|
|
sword
|
|
];
|
|
|
|
buildInputs = self'.checks.pre-commit.enabledPackages;
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
pkg-config
|
|
];
|
|
|
|
RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc;
|
|
|
|
inherit (self'.checks.pre-commit) shellHook;
|
|
# This is also used when building with iced
|
|
# let
|
|
# lib_path = builtins.foldl' (a: b: "${a}:${b}/lib") "${pkgs.vulkan-loader}/lib" packages;
|
|
# in
|
|
# ''
|
|
# export LD_LIBRARY_PATH="${lib_path}"
|
|
# ''
|
|
};
|
|
|
|
checks = {
|
|
pre-commit = inputs.hooks.lib.${inputs'.system}.run {
|
|
src = ./.;
|
|
excludes = [ ".*\\.txt" ];
|
|
settings.rust = {
|
|
check.cargoDeps = pkgs.rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
|
|
cargoManifestPath = "./Cargo.toml";
|
|
};
|
|
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-rfc-style.enable = true;
|
|
trim-trailing-whitespace.enable = true;
|
|
# Rust hooks
|
|
cargo-check.enable = true;
|
|
clippy = {
|
|
enable = true;
|
|
extraPackages = [
|
|
pkgs.pkg-config
|
|
pkgs.sword
|
|
];
|
|
};
|
|
rustfmt.enable = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
# This is not special, this is just flakes
|
|
packages = rec {
|
|
default = rustpkg;
|
|
rustpkg = naersk-lib.buildPackage {
|
|
src = ./.;
|
|
buildInputs = with pkgs; [
|
|
sword
|
|
];
|
|
nativeBuildInputs = with pkgs; [
|
|
pkg-config
|
|
];
|
|
doCheck = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|