summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/check.yml28
-rw-r--r--.github/workflows/ci.yml2
-rw-r--r--.github/workflows/format_and_lint.yml73
-rw-r--r--flake.nix62
4 files changed, 67 insertions, 98 deletions
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
new file mode 100644
index 0000000..2d516de
--- /dev/null
+++ b/.github/workflows/check.yml
@@ -0,0 +1,28 @@
+name: check project
+
+on:
+ push:
+ paths:
+ - "**.lock"
+ - "**.nix"
+ - "**.rs"
+ - "**.toml"
+ pull_request:
+ paths:
+ - "**.lock"
+ - "**.nix"
+ - "**.rs"
+ - "**.toml"
+ workflow_dispatch:
+
+jobs:
+ check:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+
+ - uses: cachix/install-nix-action@v19
+ with:
+ github_access_token: ${{ secrets.GITHUB_TOKEN }}
+
+ - run: nix flake check -L
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 43b5dd3..93256b5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -47,7 +47,7 @@ jobs:
- name: build
run: |
- nix build .#${{ matrix.output }}
+ nix build -L .#${{ matrix.output }}
- name: upload to ghcr
if: ${{ matrix.output == 'container' && github.ref == 'refs/heads/main' }}
diff --git a/.github/workflows/format_and_lint.yml b/.github/workflows/format_and_lint.yml
deleted file mode 100644
index 08a9dce..0000000
--- a/.github/workflows/format_and_lint.yml
+++ /dev/null
@@ -1,73 +0,0 @@
-name: format and lint
-
-on:
- push:
- paths:
- - "**.lock"
- - "**.nix"
- - "**.rs"
- - "**.toml"
- pull_request:
- paths:
- - "**.lock"
- - "**.nix"
- - "**.rs"
- - "**.toml"
- workflow_dispatch:
-
-jobs:
- check:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: stable
- override: true
- - uses: actions-rs/cargo@v1
- with:
- command: check
-
- clippy:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: stable
- override: true
- components: clippy
- - uses: actions-rs/clippy-check@v1
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- args: --all-features
-
- fmt:
- if: ${{ github.event_name == 'push' }}
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: stable
- override: true
- components: rustfmt
-
- - uses: actions-rs/cargo@v1
- with:
- command: fmt
- args: --all
-
- - uses: cachix/install-nix-action@v19
- with:
- github_access_token: ${{ secrets.GITHUB_TOKEN }}
-
- - run: nix fmt
-
- - uses: EndBug/add-and-commit@v9
- with:
- default_author: github_actions
- message: "chore: fmt files"
diff --git a/flake.nix b/flake.nix
index d89c6d3..81352e5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -43,21 +43,9 @@
aarch64-darwin
];
- packageFn = pkgs: let
+ packageFn = craneLib: cargoArtifacts: pkgs: let
inherit (pkgs.lib) licenses maintainers platforms;
- craneLib = let
- toolchain = with pkgs.fenix;
- combine [
- stable.cargo
- stable.rustc
- targets."x86_64-unknown-linux-musl".stable.rust-std
- ];
- in
- (crane.mkLib pkgs).overrideToolchain toolchain;
inherit (craneLib) buildPackage;
- cargoArtifacts = craneLib.buildDepsOnly {
- src = ./.;
- };
in {
teawiebot = buildPackage {
src = ./.;
@@ -78,9 +66,26 @@
inherit system;
overlays = [fenix.overlays.default];
};
+
+ toolchain = with pkgs.fenix;
+ with stable;
+ combine [
+ cargo
+ rustc
+ rustfmt
+ clippy
+ targets."x86_64-unknown-linux-musl".stable.rust-std
+ ];
+
+ craneLib = (crane.mkLib pkgs).overrideToolchain toolchain;
+
+ cargoArtifacts = craneLib.buildDepsOnly {
+ src = ./.;
+ };
in {
packages = let
- inherit (packageFn pkgs) teawiebot;
+ inherit (packageFn craneLib cargoArtifacts pkgs) teawiebot;
+
teawiebot-smol =
teawiebot.overrideAttrs (_: {
# statically link musl, optimize for size
@@ -107,8 +112,23 @@
}
// {default = self.packages.${system}.teawiebot;};
- checks = {
+ checks = let
+ commonArgs = {
+ src = ./.;
+ };
+
+ inherit (craneLib) cargoClippy cargoFmt;
+ in {
inherit (self.packages.${system}) teawiebot;
+
+ clippy = cargoClippy (commonArgs
+ // {
+ inherit cargoArtifacts;
+ cargoClippyExtraArgs = "--all-targets";
+ });
+
+ fmt = cargoFmt commonArgs;
+
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
@@ -121,7 +141,7 @@
};
devShells = let
- inherit (pkgs) fenix mkShell;
+ inherit (pkgs) mkShell;
inherit (self.checks.${system}.pre-commit-check) shellHook;
in {
default = mkShell {
@@ -129,16 +149,10 @@
packages = with pkgs; [
actionlint
alejandra
- clippy
deadnix
statix
- (with fenix;
- combine [
- stable.cargo
- stable.rustc
- stable.rustfmt
- targets."x86_64-unknown-linux-musl".stable.rust-std
- ])
+
+ toolchain
];
};
};