Ctrl K
ComunidadGuías…

flake.nix

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs";
    flake-parts.url = "github:hercules-ci/flake-parts";
    flakever.url = "github:numinit/flakever";
    treefmt-nix.url = "github:numtide/treefmt-nix";
  };

  outputs =
    {
      self,
      nixpkgs,
      flake-parts,
      flakever,
      treefmt-nix,
      ...
    }@inputs:
    let
      flakeverConfig = flakever.lib.mkFlakever {
        inherit inputs;

        digits = [
          1
          2
          2
        ];
      };
    in
    flake-parts.lib.mkFlake { inherit inputs; } {
      imports = [
        inputs.flake-parts.flakeModules.easyOverlay
        inputs.treefmt-nix.flakeModule
      ];

      flake.versionTemplate = "1.1pre-<lastModifiedDate>-<rev>";

      systems = [
        "aarch64-linux"
        "aarch64-darwin"
        "x86_64-linux"
      ];

      perSystem =
        {
          system,
          pkgs,
          ...
        }:
        let
          inherit (pkgs) lib;
        in
        {
          _module.args.pkgs = import inputs.nixpkgs {
            inherit system;
            overlays = [
              self.overlays.default
            ];
            config.allowUnfree = true;
          };

          treefmt.programs = {
            clang-format.enable = true;
            nixfmt.enable = true;
            zig = {
              enable = true;
              package = pkgs.zig_0_17;
            };
          };

          overlayAttrs = {
            flakever = flakeverConfig;
            erbium-hal = pkgs.callPackage ./pkgs/erbium-hal { };
            etsoc-sysemu = pkgs.callPackage ./pkgs/etsoc-sysemu { };
            vulcan = pkgs.callPackage ./pkgs/vulcan { zig = pkgs.zig_0_17; };
          };

          packages = {
            default = pkgs.vulcan;
            inherit (pkgs) erbium-hal etsoc-sysemu;
          };

          devShells.default = pkgs.vulcan.shell;

          checks = {
            default = pkgs.vulcan;
            inherit (pkgs.vulcan) cc vcc-stdenv;
            inherit (pkgs) erbium-hal etsoc-sysemu;
          };
        };
    };
}