tonarchy

tonarchy

https://git.tonybtw.com/tonarchy.git git://git.tonybtw.com/tonarchy.git
1,860 bytes raw
1
{
2
  description = "tonarchy - Minimal Arch Linux installer";
3
4
  inputs = {
5
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6
  };
7
8
  outputs = { self, nixpkgs }:
9
    let
10
      systems = [ "x86_64-linux" "aarch64-linux" ];
11
      forAllSystems = fn: nixpkgs.lib.genAttrs systems (system: fn nixpkgs.legacyPackages.${system});
12
    in
13
    {
14
      packages = forAllSystems (pkgs: {
15
        build_iso = pkgs.stdenv.mkDerivation {
16
          pname = "build_iso";
17
          version = "0.1.0";
18
          src = ./.;
19
          buildInputs = [ pkgs.musl ];
20
          buildPhase = ''
21
            ${pkgs.musl.dev}/bin/musl-gcc -std=c23 -Wall -Wextra -O2 -static src/build_iso.c -o build_iso
22
          '';
23
          installPhase = ''
24
            mkdir -p $out/bin
25
            cp build_iso $out/bin/
26
          '';
27
        };
28
29
        default = self.packages.${pkgs.system}.build_iso;
30
      });
31
32
      apps = forAllSystems (pkgs: {
33
        build_iso = {
34
          type = "app";
35
          program = "${self.packages.${pkgs.system}.build_iso}/bin/build_iso";
36
        };
37
38
        default = self.apps.${pkgs.system}.build_iso;
39
      });
40
41
      devShells = forAllSystems (pkgs: {
42
        default = pkgs.mkShell {
43
          buildInputs = [
44
            pkgs.gcc
45
            pkgs.glibc.static
46
            pkgs.gnumake
47
            pkgs.bear
48
            pkgs.qemu_kvm
49
            pkgs.OVMF
50
            pkgs.podman
51
            pkgs.distrobox
52
          ];
53
          shellHook = ''
54
            export PS1="(tonarchy-dev) $PS1"
55
            echo "tonarchy development environment"
56
            echo "Run 'make' to build"
57
            echo "Run 'make build' to build ISO natively (Arch)"
58
            echo "Run 'nix run .#build_iso -- --container podman' to build ISO (NixOS)"
59
            echo "Run './vm-test [iso-path]' to test an ISO in qemu"
60
          '';
61
        };
62
      });
63
    };
64
}