summaryrefslogtreecommitdiff
path: root/systems/default.nix
blob: eb3522bb430764e9d5645edd144f8818e1a62ed3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
{
  lib,
  inputs,
  self,
  withSystem,
  ...
}: let
  /*
  basic nixosSystem/darwinSystem wrapper; can override
  the exact builder by supplying an argument
  */
  toSystem = builder: name: args:
    (args.builder or builder) (
      (builtins.removeAttrs args ["builder"])
      // {
        modules = args.modules ++ [./${name}];
        specialArgs = {inherit inputs self;};
      }
    );

  mapSystems = builder: lib.mapAttrs (toSystem builder);

  mapDarwin = mapSystems inputs.darwin.lib.darwinSystem;
  mapNixOS = mapSystems inputs.nixpkgs.lib.nixosSystem;
  inherit (import ./common.nix {inherit inputs self;}) darwin nixos server;
in {
  flake = {
    darwinConfigurations = mapDarwin {
      caroline = {
        system = "x86_64-darwin";
        modules = darwin;
      };
    };

    nixosConfigurations = mapNixOS {
      glados = {
        system = "x86_64-linux";
        modules = with inputs;
          [
            lanzaboote.nixosModules.lanzaboote
            nixos-hardware.nixosModules.common-gpu-nvidia-nonprime
            nixos-hardware.nixosModules.common-pc-ssd
            {
              hardware.nvidia.modesetting.enable = true;
            }
          ]
          ++ nixos;
      };

      glados-wsl = {
        system = "x86_64-linux";
        modules =
          [
            inputs.nixos-wsl.nixosModules.wsl
          ]
          ++ nixos;
      };

      atlas = {
        builder = inputs.nixpkgs-stable.lib.nixosSystem;
        system = "aarch64-linux";
        modules =
          [
            inputs.guzzle_api.nixosModules.default
          ]
          ++ server;
      };
    };

    openwrtConfigurations.turret = withSystem "x86_64-linux" ({pkgs, ...}:
      pkgs.callPackage ./turret {
        inherit (inputs) openwrt-imagebuilder;
      });
  };

  perSystem = {system, ...}: {
    apps = (inputs.nixinate.nixinate.${system} self).nixinate;
  };
}