atagen

roundabout

public
Star0
Watch0
ecc1cf8df0f5b88c6bf2cd07254c98d13827cd26
1
ssh://brewery@pls.lobotomise.me:33/atagen/roundabout.git
flake.nixNix89 lines2.2 KB
1
{
2
  description = "one build at a time, please";
3
4
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
5
6
  outputs =
7
    { self, nixpkgs }:
8
    let
9
      inherit (nixpkgs) lib;
10
      forAllSystems = lib.genAttrs [
11
        "x86_64-linux"
12
        "aarch64-linux"
13
        "x86_64-darwin"
14
        "aarch64-darwin"
15
      ];
16
      pkgsFor = system: nixpkgs.legacyPackages.${system};
17
    in
18
    {
19
      nixosModules.default = import ./nix/nixos-module.nix self;
20
21
      packages = forAllSystems (
22
        system:
23
        let
24
          pkgs = pkgsFor system;
25
          roundabout = pkgs.callPackage ./nix/package.nix { };
26
        in
27
        {
28
          inherit roundabout;
29
          default = roundabout;
30
          plugin = pkgs.callPackage ./nix/plugin.nix { inherit roundabout; };
31
        }
32
      );
33
34
      devShells = forAllSystems (
35
        system:
36
        let
37
          pkgs = pkgsFor system;
38
        in
39
        {
40
          default = pkgs.mkShell {
41
            packages = [
42
              pkgs.cargo
43
              pkgs.rustc
44
              pkgs.clippy
45
              pkgs.rustfmt
46
              pkgs.rust-analyzer
47
            ];
48
            env.RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}";
49
          };
50
        }
51
      );
52
53
      checks = forAllSystems (
54
        system:
55
        let
56
          pkgs = pkgsFor system;
57
          roundabout = self.packages.${system}.roundabout;
58
        in
59
        {
60
          inherit roundabout;
61
          plugin = self.packages.${system}.plugin;
62
          clippy = roundabout.overrideAttrs (old: {
63
            pname = "roundabout-clippy";
64
            nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.clippy ];
65
            buildPhase = ''
66
              runHook preBuild
67
              cargo clippy --offline --all-targets -- -D warnings
68
              runHook postBuild
69
            '';
70
            doCheck = false;
71
            installPhase = "touch $out";
72
          });
73
          fmt =
74
            pkgs.runCommand "roundabout-fmt"
75
              {
76
                nativeBuildInputs = [
77
                  pkgs.cargo
78
                  pkgs.rustfmt
79
                ];
80
              }
81
              ''
82
                cd ${self}
83
                cargo fmt --check
84
                touch $out
85
              '';
86
        }
87
      );
88
    };
89
}