This project is better-maintained and more stable, so it's what we're using now.
84 lines
2.3 KiB
Nix
84 lines
2.3 KiB
Nix
{
|
|
description = "Aether - web server configuration";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main";
|
|
|
|
agenix.url = "github:ryantm/agenix";
|
|
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
|
agenix.inputs.darwin.follows = "";
|
|
|
|
forgejo-tokyo-night.url = "https://git.tokinanpa.dev/toki/forgejo-tokyo-night/archive/main.tar.gz";
|
|
forgejo-tokyo-night.flake = false;
|
|
};
|
|
|
|
nixConfig = {
|
|
extra-substituters = [
|
|
"https://nixos-raspberrypi.cachix.org"
|
|
];
|
|
extra-trusted-public-keys = [
|
|
"nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI="
|
|
];
|
|
};
|
|
|
|
outputs = inputs@{ self, nixpkgs, nixos-raspberrypi, agenix, ... }:
|
|
let
|
|
inherit (nixpkgs) lib;
|
|
|
|
# Extra config applied to each module
|
|
# (Mostly used for injecting flake inputs)
|
|
extraConfig = {
|
|
deploy-rpi5 = {
|
|
imports = with nixos-raspberrypi.nixosModules; [
|
|
raspberry-pi-5.base
|
|
raspberry-pi-5.page-size-16k
|
|
raspberry-pi-5.display-vc4
|
|
];
|
|
};
|
|
};
|
|
|
|
moduleNames =
|
|
let sub = builtins.readDir ./modules;
|
|
in builtins.filter
|
|
(d: sub.${d} == "directory")
|
|
(builtins.attrNames sub);
|
|
|
|
deployNames =
|
|
let sub = builtins.readDir ./deploy;
|
|
in builtins.map (d: "deploy-${d}")
|
|
(builtins.filter
|
|
(d: sub.${d} == "directory")
|
|
(builtins.attrNames sub));
|
|
|
|
modules = lib.genAttrs moduleNames
|
|
(name: ./modules/${name});
|
|
deployments = lib.genAttrs deployNames
|
|
(name: ./deploy/${lib.removePrefix "deploy-" name});
|
|
|
|
modulesWithCfg = builtins.mapAttrs (k: v: {
|
|
imports = [ v (extraConfig.${k} or {}) ];
|
|
}) modules;
|
|
deploymentsWithCfg = builtins.mapAttrs (k: v: {
|
|
imports = [ v (extraConfig.${k} or {}) ];
|
|
}) deployments;
|
|
in {
|
|
nixosModules =
|
|
modulesWithCfg // deploymentsWithCfg // {
|
|
all.imports = lib.attrValues modulesWithCfg;
|
|
};
|
|
|
|
nixosConfigurations."toki-aether" =
|
|
nixos-raspberrypi.lib.nixosSystem {
|
|
specialArgs = inputs // {
|
|
aether = self.nixosModules;
|
|
};
|
|
modules = [
|
|
agenix.nixosModules.default
|
|
./aether/hardware-configuration.nix
|
|
./aether/config.nix
|
|
];
|
|
};
|
|
nixosConfigurations.default = self.nixosConfigurations."toki-aether";
|
|
};
|
|
}
|