2020-03-25 19:52:13 +01:00
|
|
|
{
|
|
|
|
description = "C3D2 NixOS configurations";
|
|
|
|
|
2020-06-11 07:50:42 +02:00
|
|
|
inputs = {
|
2022-06-23 22:25:36 +02:00
|
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-22.05";
|
2022-06-16 23:48:49 +02:00
|
|
|
nixpkgs-mobilizon.url = "github:minijackson/nixpkgs/init-mobilizon";
|
2022-06-28 12:33:31 +02:00
|
|
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
2022-05-31 12:47:58 +02:00
|
|
|
nixos-hardware.url = "github:nixos/nixos-hardware";
|
|
|
|
fenix = {
|
|
|
|
url = "github:nix-community/fenix";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
heliwatch = {
|
|
|
|
url = "git+https://gitea.c3d2.de/astro/heliwatch.git";
|
2022-04-17 22:45:05 +02:00
|
|
|
inputs = {
|
2022-05-31 12:47:58 +02:00
|
|
|
fenix.follows = "fenix";
|
2022-04-17 22:45:05 +02:00
|
|
|
nixpkgs.follows = "nixpkgs";
|
2022-05-31 12:47:58 +02:00
|
|
|
naersk.follows = "naersk";
|
2022-04-17 22:45:05 +02:00
|
|
|
};
|
|
|
|
};
|
2022-06-24 01:02:11 +02:00
|
|
|
hydra.url = "github:nixos/hydra";
|
2022-06-28 20:34:54 +02:00
|
|
|
hydra-ca.url = "github:mlabs-haskell/hydra/aciceri/ca-derivations";
|
2022-05-31 12:47:58 +02:00
|
|
|
microvm = {
|
|
|
|
url = "github:astro/microvm.nix";
|
2022-04-24 21:56:45 +02:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2022-05-31 12:47:58 +02:00
|
|
|
naersk = {
|
|
|
|
url = "github:nix-community/naersk";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2022-06-27 23:06:38 +02:00
|
|
|
oparl-scraper = {
|
|
|
|
url = "github:offenesdresden/ratsinfo-scraper/oparl";
|
|
|
|
flake = false;
|
|
|
|
};
|
2022-05-31 12:47:58 +02:00
|
|
|
openwrt = {
|
|
|
|
url = "git+https://git.openwrt.org/openwrt/openwrt.git?ref=openwrt-21.02";
|
|
|
|
flake = false;
|
|
|
|
};
|
|
|
|
openwrt-imagebuilder = {
|
|
|
|
url = "github:astro/nix-openwrt-imagebuilder";
|
2022-04-17 22:45:05 +02:00
|
|
|
inputs = {
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
2022-05-31 12:47:58 +02:00
|
|
|
openwrt.follows = "openwrt";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
scrapers = {
|
|
|
|
url = "git+https://gitea.c3d2.de/astro/scrapers.git";
|
|
|
|
flake = false;
|
|
|
|
};
|
|
|
|
secrets = {
|
|
|
|
url = "git+ssh://gitea@gitea.c3d2.de/c3d2-admins/secrets.git";
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
|
|
|
sops-nix.follows = "sops-nix";
|
2022-04-17 22:45:05 +02:00
|
|
|
};
|
|
|
|
};
|
|
|
|
sops-nix = {
|
|
|
|
url = "github:Mic92/sops-nix";
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
};
|
2022-05-31 12:47:58 +02:00
|
|
|
spacemsg = {
|
|
|
|
url = "github:astro/spacemsg";
|
|
|
|
flake = false;
|
|
|
|
};
|
|
|
|
ticker = {
|
|
|
|
url = "git+https://gitea.c3d2.de/astro/ticker.git";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
|
|
|
tigger = {
|
|
|
|
url = "github:astro/tigger";
|
|
|
|
flake = false;
|
|
|
|
};
|
|
|
|
yammat = {
|
2022-06-16 22:51:51 +02:00
|
|
|
url = "git+https://gitea.c3d2.de/C3D2/yammat.git?ref=nix";
|
2022-05-12 02:58:47 +02:00
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2022-05-31 12:47:58 +02:00
|
|
|
zentralwerk = {
|
|
|
|
url = "git+https://gitea.c3d2.de/zentralwerk/network.git";
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.follows = "nixpkgs";
|
|
|
|
nixpkgs-master.follows = "nixpkgs";
|
|
|
|
openwrt.follows = "openwrt";
|
|
|
|
openwrt-imagebuilder.follows = "openwrt-imagebuilder";
|
|
|
|
};
|
|
|
|
};
|
2022-06-08 22:55:35 +02:00
|
|
|
riscv64 = {
|
|
|
|
url = "github:zhaofengli/nixos-riscv64";
|
|
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
};
|
2020-06-11 07:50:42 +02:00
|
|
|
};
|
2020-04-15 19:00:56 +02:00
|
|
|
|
2022-06-28 12:33:31 +02:00
|
|
|
outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, secrets, nixos-hardware, zentralwerk, yammat, scrapers, spacemsg, tigger, ticker, heliwatch, sops-nix, naersk, fenix, microvm, riscv64, oparl-scraper, ... }:
|
2021-02-22 12:31:58 +01:00
|
|
|
let
|
2022-01-13 18:38:36 +01:00
|
|
|
inherit (nixpkgs) lib;
|
|
|
|
forAllSystems = lib.genAttrs [ "aarch64-linux" "x86_64-linux" ];
|
2021-02-24 11:52:19 +01:00
|
|
|
|
2021-09-07 00:38:16 +02:00
|
|
|
extractZwHosts = { hosts4, hosts6, ... }:
|
2022-01-13 18:38:36 +01:00
|
|
|
lib.recursiveUpdate (
|
2021-09-07 00:38:16 +02:00
|
|
|
builtins.foldl' (result: name:
|
2022-01-13 18:38:36 +01:00
|
|
|
lib.recursiveUpdate result {
|
2021-10-31 19:00:03 +01:00
|
|
|
"${name}".ip4 = hosts4."${name}";
|
2021-09-07 00:38:16 +02:00
|
|
|
}
|
|
|
|
) {} (builtins.attrNames hosts4)
|
|
|
|
) (
|
|
|
|
builtins.foldl' (result: ctx:
|
|
|
|
builtins.foldl' (result: name:
|
2022-01-13 18:38:36 +01:00
|
|
|
lib.recursiveUpdate result {
|
2021-10-31 19:00:03 +01:00
|
|
|
"${name}".ip6 = hosts6."${ctx}"."${name}";
|
2021-09-07 00:38:16 +02:00
|
|
|
}
|
2021-10-31 19:00:03 +01:00
|
|
|
) result (builtins.attrNames hosts6."${ctx}")
|
2021-09-07 00:38:16 +02:00
|
|
|
) {} (builtins.attrNames hosts6)
|
|
|
|
);
|
|
|
|
zwHostRegistry = {
|
|
|
|
hosts =
|
|
|
|
builtins.foldl' (result: net:
|
2022-01-13 18:38:36 +01:00
|
|
|
lib.recursiveUpdate result (extractZwHosts zentralwerk.lib.config.site.net."${net}")
|
2021-09-07 00:38:16 +02:00
|
|
|
) {} [ "core" "c3d2" "serv" ];
|
|
|
|
};
|
2022-01-16 13:26:37 +01:00
|
|
|
extraHostRegistry.hosts = import ./host-registry.nix;
|
2022-01-13 18:38:36 +01:00
|
|
|
hostRegistry = lib.recursiveUpdate zwHostRegistry extraHostRegistry;
|
2020-04-14 08:42:13 +02:00
|
|
|
|
2021-09-08 00:33:57 +02:00
|
|
|
getHostAddr = name:
|
|
|
|
let
|
2021-10-31 19:00:03 +01:00
|
|
|
hostConf = hostRegistry.hosts."${name}";
|
2021-09-08 00:33:57 +02:00
|
|
|
in
|
2022-06-18 13:36:36 +02:00
|
|
|
if hostConf ? ip6
|
2021-09-08 00:33:57 +02:00
|
|
|
then hostConf.ip6
|
2022-06-18 13:36:36 +02:00
|
|
|
else if hostConf ? ip4
|
|
|
|
then hostConf.ip4
|
2021-10-18 22:24:08 +02:00
|
|
|
else throw "Host ${name} has no ip4 or ip6 address";
|
2021-09-08 00:33:57 +02:00
|
|
|
in {
|
2022-01-13 18:38:36 +01:00
|
|
|
overlay = import ./overlay;
|
2021-02-26 20:22:15 +01:00
|
|
|
|
2022-01-13 18:38:36 +01:00
|
|
|
legacyPackages = lib.attrsets.mapAttrs
|
|
|
|
(system: pkgs: pkgs.appendOverlays
|
|
|
|
[ fenix.overlay naersk.overlay self.overlay ])
|
|
|
|
nixpkgs.legacyPackages;
|
2020-04-21 13:44:42 +02:00
|
|
|
|
2022-01-13 18:38:36 +01:00
|
|
|
packages = lib.attrsets.mapAttrs (system: pkgs:
|
|
|
|
let overlayPkgs = builtins.intersectAttrs (self.overlay {} {}) pkgs;
|
|
|
|
in overlayPkgs //
|
|
|
|
{
|
2021-02-26 20:22:15 +01:00
|
|
|
|
2021-09-08 00:34:38 +02:00
|
|
|
list-upgradable = pkgs.writeScriptBin "list-upgradable" ''
|
|
|
|
#! ${pkgs.runtimeShell}
|
|
|
|
|
|
|
|
NORMAL="\033[0m"
|
|
|
|
RED="\033[0;31m"
|
|
|
|
YELLOW="\033[0;33m"
|
|
|
|
GREEN="\033[0;32m"
|
|
|
|
|
|
|
|
${pkgs.lib.concatMapStringsSep "\n" (name:
|
|
|
|
let
|
|
|
|
addr = getHostAddr name;
|
|
|
|
in nixpkgs.lib.optionalString (addr != null) ''
|
|
|
|
echo -n -e "${name}: $RED"
|
|
|
|
RUNNING=$(ssh -o PreferredAuthentications=publickey -o StrictHostKeyChecking=accept-new root@"${addr}" "readlink /run/current-system")
|
2021-09-08 01:36:26 +02:00
|
|
|
if [ $? = 0 ] && [ -n "$RUNNING" ]; then
|
2021-09-08 00:34:38 +02:00
|
|
|
CURRENT=$(nix eval --raw ".#nixosConfigurations.${name}.config.system.build.toplevel" 2>/dev/null)
|
2021-09-08 01:36:26 +02:00
|
|
|
RUNNING_VER=$(basename $RUNNING|rev|cut -d - -f 1|rev)
|
2022-01-25 00:54:22 +01:00
|
|
|
RUNNING_DATE=$(echo $RUNNING_VER|cut -d . -f 3)
|
2021-09-08 01:36:26 +02:00
|
|
|
CURRENT_VER=$(basename $CURRENT|rev|cut -d - -f 1|rev)
|
2022-01-25 00:54:22 +01:00
|
|
|
CURRENT_DATE=$(echo $CURRENT_VER|cut -d . -f 3)
|
2021-09-08 00:34:38 +02:00
|
|
|
|
|
|
|
if [ "$RUNNING" = "$CURRENT" ]; then
|
2021-09-08 01:36:26 +02:00
|
|
|
echo -e "$GREEN"current"$NORMAL $RUNNING_VER"
|
2022-01-25 00:54:22 +01:00
|
|
|
elif [ $RUNNING_DATE -gt $CURRENT_DATE ]; then
|
|
|
|
echo -e "$GREEN"newer"$NORMAL $RUNNING_VER > $CURRENT_VER"
|
2021-09-08 01:36:26 +02:00
|
|
|
elif [ "$RUNNING_VER" = "$CURRENT_VER" ]; then
|
2022-01-25 00:54:22 +01:00
|
|
|
echo -e "$YELLOW"modified"$NORMAL $RUNNING_VER"
|
2022-01-08 18:17:17 +01:00
|
|
|
elif [ -n "$RUNNING_VER" ]; then
|
2022-01-25 00:54:22 +01:00
|
|
|
echo -e "$RED"outdated"$NORMAL $RUNNING_VER < $CURRENT_VER"
|
2022-01-08 18:17:17 +01:00
|
|
|
else
|
|
|
|
echo -e "$RED"error"$NORMAL $RUNNING_VER"
|
2021-09-08 00:34:38 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
echo -n -e "$NORMAL"
|
2022-01-20 03:12:37 +01:00
|
|
|
'') (builtins.attrNames self.nixosConfigurations)}
|
2021-09-08 00:34:38 +02:00
|
|
|
'';
|
2021-10-18 22:26:38 +02:00
|
|
|
|
|
|
|
prebuild-all = pkgs.runCommandNoCC "prebuild-all" {
|
|
|
|
preferLocalBuild = true;
|
|
|
|
} ''
|
|
|
|
mkdir $out
|
|
|
|
|
|
|
|
${pkgs.lib.concatMapStrings (name: ''
|
2021-10-31 19:00:03 +01:00
|
|
|
ln -s ${self.nixosConfigurations."${name}".config.system.build.toplevel} name
|
2022-01-20 03:12:37 +01:00
|
|
|
'') (builtins.attrNames self.nixosConfigurations)}
|
2021-10-18 22:26:38 +02:00
|
|
|
'';
|
|
|
|
|
2021-11-10 00:33:42 +01:00
|
|
|
prebuild-all-remote = pkgs.writeScriptBin "prebuild-all" ''
|
|
|
|
#!${pkgs.runtimeShell} -e
|
|
|
|
|
|
|
|
nix copy --to ssh://$1 ${secrets}
|
|
|
|
nix copy --to ssh://$1 ${self}
|
|
|
|
|
|
|
|
set -x
|
2022-06-17 21:27:38 +02:00
|
|
|
ssh $1 -- nix build -L --no-link ${
|
2021-11-10 00:33:42 +01:00
|
|
|
pkgs.lib.concatMapStringsSep " " (name:
|
|
|
|
"${self}#nixosConfigurations.${name}.config.system.build.toplevel"
|
2022-01-20 03:12:37 +01:00
|
|
|
) (builtins.attrNames self.nixosConfigurations)
|
2021-11-10 00:33:42 +01:00
|
|
|
}
|
|
|
|
'';
|
|
|
|
|
2021-09-08 00:33:57 +02:00
|
|
|
} //
|
2021-05-26 18:50:48 +02:00
|
|
|
|
2021-09-08 00:33:57 +02:00
|
|
|
builtins.foldl' (result: host: result // {
|
2021-09-29 23:26:05 +02:00
|
|
|
# TODO: check if the ethernet address is reachable and if not,
|
|
|
|
# execute wol on a machine in HQ.
|
|
|
|
"${host}-wake" = pkgs.writeScriptBin "${host}-wake" ''
|
|
|
|
#!${pkgs.runtimeShell}
|
2021-10-31 19:00:03 +01:00
|
|
|
exec ${pkgs.wol}/bin/wol ${hostRegistry.hosts."${host}".ether}
|
2021-09-29 23:26:05 +02:00
|
|
|
'';
|
2021-09-08 00:33:57 +02:00
|
|
|
}) {} (builtins.attrNames (nixpkgs.lib.filterAttrs (_: { wol ? false, ... }: wol) hostRegistry.hosts)) //
|
2021-05-26 18:50:48 +02:00
|
|
|
|
2021-09-29 23:26:05 +02:00
|
|
|
builtins.foldl' (result: name:
|
|
|
|
let
|
2021-09-08 00:33:57 +02:00
|
|
|
host = getHostAddr name;
|
2021-09-29 23:26:05 +02:00
|
|
|
target = ''root@"${host}"'';
|
|
|
|
rebuildArg = "--flake ${self}#${name}";
|
2022-06-16 21:18:04 +02:00
|
|
|
hostConfig = self.nixosConfigurations."${name}".config;
|
|
|
|
profile = hostConfig.system.build.toplevel;
|
2022-06-21 15:06:52 +02:00
|
|
|
# let /var/lib/microvm/*/flake point to the flake-update branch so that
|
|
|
|
# `microvm -u $NAME` updates to what hydra built today.
|
2022-06-19 03:28:22 +02:00
|
|
|
selfRef = "git+https://gitea.c3d2.de/c3d2/nix-config?ref=flake-update";
|
2021-09-29 23:26:05 +02:00
|
|
|
in result // {
|
|
|
|
# Generate a small script for copying this flake to the
|
|
|
|
# remote machine and bulding and switching there.
|
|
|
|
# Can be run with `nix run c3d2#…-nixos-rebuild switch`
|
|
|
|
"${name}-nixos-rebuild" = pkgs.writeScriptBin "${name}-nixos-rebuild" ''
|
2021-10-31 12:49:09 +01:00
|
|
|
#!${pkgs.runtimeShell} -ex
|
2021-10-27 21:25:00 +02:00
|
|
|
[[ $(ssh ${target} cat /etc/hostname) == ${name} ]]
|
2021-10-19 01:27:22 +02:00
|
|
|
nix copy --to ssh://${target} ${secrets}
|
|
|
|
nix copy --to ssh://${target} ${self}
|
2021-10-27 21:25:00 +02:00
|
|
|
ssh ${target} nixos-rebuild ${rebuildArg} "$@"
|
2021-09-08 22:48:13 +02:00
|
|
|
'';
|
2021-09-29 23:26:05 +02:00
|
|
|
|
2021-09-30 20:54:02 +02:00
|
|
|
"${name}-nixos-rebuild-local" = pkgs.writeScriptBin "${name}-nixos-rebuild" ''
|
2021-10-31 12:49:09 +01:00
|
|
|
#!${pkgs.runtimeShell} -ex
|
2021-10-27 21:25:00 +02:00
|
|
|
[[ $(ssh ${target} cat /etc/hostname) == ${name} ]]
|
|
|
|
nix copy --to ssh://${target} ${profile}
|
|
|
|
ssh ${target} "${profile}/bin/switch-to-configuration $*"
|
|
|
|
'';
|
2021-09-29 23:26:05 +02:00
|
|
|
|
2021-09-30 20:54:02 +02:00
|
|
|
"${name}-cleanup" = pkgs.writeScriptBin "${name}-cleanup" ''
|
2021-10-31 12:49:09 +01:00
|
|
|
#!${pkgs.runtimeShell} -ex
|
2021-10-27 21:25:00 +02:00
|
|
|
ssh ${target} "time nix-collect-garbage -d && time nix-store --optimise"
|
|
|
|
'';
|
2022-06-16 21:18:04 +02:00
|
|
|
} // lib.optionalAttrs (hostConfig ? c3d2.deployment.server) {
|
|
|
|
"microvm-update-${name}" = pkgs.writeScriptBin "microvm-update-${name}" ''
|
|
|
|
#!${pkgs.runtimeShell} -e
|
|
|
|
${hostConfig.system.build.copyToServer} ${self} ${secrets}
|
|
|
|
|
|
|
|
${hostConfig.system.build.runOnServer} bash -e <<END
|
|
|
|
mkdir -p /var/lib/microvms/${name}
|
|
|
|
cd /var/lib/microvms/${name}
|
2022-06-16 21:26:21 +02:00
|
|
|
chown root:kvm .
|
|
|
|
chmod 0775 .
|
2022-06-17 23:23:31 +02:00
|
|
|
|
|
|
|
rm -f old
|
|
|
|
[ -e current ] && mv current old
|
|
|
|
|
2022-06-17 21:27:38 +02:00
|
|
|
nix build -L \
|
2022-06-16 21:18:04 +02:00
|
|
|
-o current \
|
|
|
|
${self}#nixosConfigurations.${name}.config.microvm.declaredRunner
|
|
|
|
echo '${selfRef}' > flake
|
2022-06-17 23:23:31 +02:00
|
|
|
|
|
|
|
[ -e old ] && nix store diff-closures ./old ./current
|
|
|
|
|
2022-06-16 21:18:04 +02:00
|
|
|
systemctl restart microvm@${name}.service
|
|
|
|
END
|
|
|
|
'';
|
2022-06-16 21:36:52 +02:00
|
|
|
|
2022-06-16 21:18:04 +02:00
|
|
|
"microvm-update-${name}-local" = pkgs.writeScriptBin "microvm-update-${name}" ''
|
|
|
|
#!${pkgs.runtimeShell} -e
|
|
|
|
${hostConfig.system.build.copyToServer} ${hostConfig.microvm.declaredRunner}
|
|
|
|
|
|
|
|
${hostConfig.system.build.runOnServer} bash -e <<END
|
|
|
|
mkdir -p /var/lib/microvms/${name}
|
|
|
|
cd /var/lib/microvms/${name}
|
2022-06-16 21:26:21 +02:00
|
|
|
chown root:kvm .
|
|
|
|
chmod 0775 .
|
2022-06-17 23:23:31 +02:00
|
|
|
|
|
|
|
rm -f old
|
|
|
|
[ -e current ] && mv current old
|
|
|
|
|
2022-06-16 21:18:04 +02:00
|
|
|
ln -s ${hostConfig.microvm.declaredRunner} current
|
|
|
|
echo '${selfRef}' > flake
|
2022-06-17 23:23:31 +02:00
|
|
|
|
|
|
|
[ -e old ] && nix store diff-closures ./old ./current
|
|
|
|
|
2022-06-16 21:18:04 +02:00
|
|
|
systemctl restart microvm@${name}.service
|
|
|
|
END
|
|
|
|
'';
|
2022-01-20 03:12:37 +01:00
|
|
|
}) {} (builtins.attrNames self.nixosConfigurations) //
|
2021-09-23 19:34:09 +02:00
|
|
|
|
2022-01-20 03:07:16 +01:00
|
|
|
builtins.foldl' (result: host:
|
|
|
|
let
|
|
|
|
inherit (self.nixosConfigurations.${host}) config;
|
|
|
|
in
|
|
|
|
result //
|
2022-05-24 17:02:12 +02:00
|
|
|
nixpkgs.lib.optionalAttrs (config.system.build ? vm) {
|
|
|
|
# boot any machine in a microvm
|
|
|
|
"${host}-vm" = (self.nixosConfigurations.${host}
|
|
|
|
.extendModules {
|
|
|
|
modules = [
|
|
|
|
microvm.nixosModules.microvm
|
|
|
|
{
|
|
|
|
microvm = {
|
2022-06-13 20:38:33 +02:00
|
|
|
mem = nixpkgs.lib.mkForce 2048;
|
2022-05-28 00:15:03 +02:00
|
|
|
hypervisor = nixpkgs.lib.mkForce "qemu";
|
2022-06-13 20:38:33 +02:00
|
|
|
socket = nixpkgs.lib.mkForce null;
|
2022-05-24 17:02:12 +02:00
|
|
|
shares = [ {
|
|
|
|
tag = "ro-store";
|
|
|
|
source = "/nix/store";
|
|
|
|
mountPoint = "/nix/.ro-store";
|
|
|
|
} ];
|
|
|
|
};
|
|
|
|
boot.isContainer = lib.mkForce false;
|
2022-05-24 17:32:41 +02:00
|
|
|
users.users.root.password = "";
|
2022-05-24 17:02:12 +02:00
|
|
|
fileSystems."/".fsType = lib.mkForce "tmpfs";
|
2022-05-24 17:32:41 +02:00
|
|
|
services.getty.helpLine = ''
|
|
|
|
Log in as "root" with an empty password.
|
|
|
|
Use "reboot" to shut qemu down.
|
|
|
|
'';
|
2022-05-24 17:02:12 +02:00
|
|
|
}
|
|
|
|
];
|
|
|
|
})
|
|
|
|
.config.microvm.declaredRunner;
|
2022-03-16 20:38:00 +01:00
|
|
|
} //
|
2022-03-16 21:50:20 +01:00
|
|
|
nixpkgs.lib.optionalAttrs (config.system.build ? tftproot) {
|
|
|
|
"${host}-tftproot" = config.system.build.tftproot;
|
2022-01-20 03:07:16 +01:00
|
|
|
}
|
|
|
|
) {} (builtins.attrNames self.nixosConfigurations)
|
2022-01-13 18:38:36 +01:00
|
|
|
) self.legacyPackages;
|
2020-08-04 17:15:07 +02:00
|
|
|
|
2021-02-22 12:31:58 +01:00
|
|
|
nixosConfigurations = let
|
|
|
|
nixosSystem' =
|
|
|
|
# Our custom NixOS builder
|
2022-06-24 01:02:11 +02:00
|
|
|
{ nixpkgs ? inputs.nixpkgs, modules, extraArgs ? {}, specialArgs ? { }, system ? "x86_64-linux" }:
|
2022-01-08 01:52:17 +01:00
|
|
|
nixpkgs.lib.nixosSystem {
|
2022-06-24 01:02:11 +02:00
|
|
|
inherit specialArgs system;
|
2022-01-08 21:21:51 +01:00
|
|
|
|
|
|
|
modules = [
|
2021-02-22 12:31:58 +01:00
|
|
|
({ pkgs, ... }: {
|
2022-01-08 01:52:17 +01:00
|
|
|
_module.args = extraArgs // {
|
|
|
|
inherit hostRegistry inputs zentralwerk;
|
|
|
|
};
|
2022-03-29 00:01:14 +02:00
|
|
|
nixpkgs = {
|
|
|
|
overlays = [ self.overlay ];
|
|
|
|
};
|
2021-02-22 12:31:58 +01:00
|
|
|
})
|
2022-01-08 21:21:51 +01:00
|
|
|
|
2022-01-15 18:30:20 +01:00
|
|
|
self.nixosModules.c3d2
|
|
|
|
./config/audio-server
|
|
|
|
./config/c3d2.nix
|
|
|
|
./config/stats.nix
|
|
|
|
./modules/pi-sensors.nix
|
2022-01-08 21:21:51 +01:00
|
|
|
] ++ modules;
|
2022-01-08 01:52:17 +01:00
|
|
|
};
|
2021-02-22 12:31:58 +01:00
|
|
|
in {
|
2020-08-04 17:15:07 +02:00
|
|
|
|
2021-02-26 20:22:15 +01:00
|
|
|
freifunk = nixosSystem' {
|
2021-03-05 01:16:57 +01:00
|
|
|
modules = [
|
2022-06-16 21:18:04 +02:00
|
|
|
self.nixosModules.microvm
|
2021-03-05 01:16:57 +01:00
|
|
|
./hosts/containers/freifunk
|
2022-01-13 18:38:36 +01:00
|
|
|
{
|
2021-03-05 01:16:57 +01:00
|
|
|
nixpkgs.overlays = with secrets.overlays; [
|
|
|
|
freifunk ospf
|
|
|
|
];
|
2022-03-22 21:53:44 +01:00
|
|
|
sops.defaultSopsFile = "${secrets}/hosts/freifunk/secrets.yaml";
|
2022-01-13 18:38:36 +01:00
|
|
|
}
|
2021-03-05 01:16:57 +01:00
|
|
|
];
|
2021-02-26 20:22:15 +01:00
|
|
|
};
|
|
|
|
|
2021-10-02 20:28:30 +02:00
|
|
|
gitea = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-20 22:10:23 +02:00
|
|
|
self.nixosModules.microvm
|
2021-10-02 20:28:30 +02:00
|
|
|
./hosts/containers/gitea
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-02-22 13:21:31 +01:00
|
|
|
glotzbert = nixosSystem' {
|
2021-02-22 14:16:25 +01:00
|
|
|
modules = [
|
|
|
|
./hosts/glotzbert
|
|
|
|
nixos-hardware.nixosModules.common-cpu-intel
|
|
|
|
nixos-hardware.nixosModules.common-pc-ssd
|
2021-03-12 17:06:37 +01:00
|
|
|
secrets.nixosModules.admins
|
2022-01-08 21:21:51 +01:00
|
|
|
{
|
|
|
|
sops.defaultSopsFile = "${secrets}/hosts/glotzbert/secrets.yaml";
|
|
|
|
}
|
2021-02-22 14:16:25 +01:00
|
|
|
];
|
2021-02-22 13:21:31 +01:00
|
|
|
};
|
|
|
|
|
2022-06-21 22:00:17 +02:00
|
|
|
hedgedoc = nixosSystem' {
|
|
|
|
modules = [
|
|
|
|
self.nixosModules.microvm
|
2022-06-22 00:42:06 +02:00
|
|
|
{
|
|
|
|
sops.defaultSopsFile = "${secrets}/hosts/hedgedoc/secrets.yaml";
|
|
|
|
}
|
2022-06-21 22:00:17 +02:00
|
|
|
./hosts/containers/hedgedoc
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-02-22 13:21:31 +01:00
|
|
|
pulsebert = nixosSystem' {
|
2021-09-23 19:34:09 +02:00
|
|
|
modules = [
|
|
|
|
./hosts/pulsebert
|
|
|
|
];
|
2021-02-22 13:21:31 +01:00
|
|
|
system = "aarch64-linux";
|
|
|
|
};
|
2020-08-04 17:15:07 +02:00
|
|
|
|
2021-09-23 03:32:17 +02:00
|
|
|
radiobert = nixosSystem' {
|
|
|
|
modules = [
|
2022-01-13 18:38:36 +01:00
|
|
|
({ modulesPath, ... }:
|
2021-12-29 21:09:43 +01:00
|
|
|
{
|
|
|
|
nixpkgs.overlays = [ heliwatch.overlay ];
|
|
|
|
sops.defaultSopsFile = "${secrets}/hosts/radiobert/secrets.yaml";
|
2022-01-13 18:38:36 +01:00
|
|
|
})
|
2021-09-23 03:32:17 +02:00
|
|
|
./hosts/radiobert
|
|
|
|
];
|
2021-09-22 21:21:13 +02:00
|
|
|
system = "aarch64-linux";
|
|
|
|
};
|
|
|
|
|
2022-01-15 11:28:23 +01:00
|
|
|
nncp = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-20 00:41:20 +02:00
|
|
|
self.nixosModules.microvm
|
2022-01-15 11:28:23 +01:00
|
|
|
self.nixosModules.nncp
|
|
|
|
./hosts/containers/nncp
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-09-27 22:19:24 +02:00
|
|
|
dacbert = nixosSystem' {
|
|
|
|
modules = [
|
2021-10-07 20:19:48 +02:00
|
|
|
nixos-hardware.nixosModules.raspberry-pi-4
|
2022-03-16 23:16:02 +01:00
|
|
|
self.nixosModules.rpi-netboot
|
2021-09-27 22:19:24 +02:00
|
|
|
./hosts/dacbert
|
|
|
|
];
|
|
|
|
system = "aarch64-linux";
|
|
|
|
};
|
|
|
|
|
2022-03-13 23:49:12 +01:00
|
|
|
rpi-netboot = nixosSystem' {
|
|
|
|
modules = [
|
2022-05-31 20:08:25 +02:00
|
|
|
{ _module.args = { inherit nixpkgs; }; }
|
2022-03-13 23:49:12 +01:00
|
|
|
nixos-hardware.nixosModules.raspberry-pi-4
|
2022-03-16 20:38:00 +01:00
|
|
|
self.nixosModules.rpi-netboot
|
2022-03-13 23:49:12 +01:00
|
|
|
./hosts/rpi-netboot
|
|
|
|
];
|
|
|
|
system = "aarch64-linux";
|
|
|
|
};
|
|
|
|
|
2021-03-06 01:13:27 +01:00
|
|
|
matemat = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-17 21:27:38 +02:00
|
|
|
self.nixosModules.microvm
|
2021-03-06 01:13:27 +01:00
|
|
|
./hosts/containers/matemat
|
2021-03-10 01:54:28 +01:00
|
|
|
yammat.nixosModule
|
2021-03-06 16:57:47 +01:00
|
|
|
secrets.nixosModules.admins
|
2022-01-13 20:20:48 +01:00
|
|
|
{ nixpkgs.overlays = [ secrets.overlays.matemat ]; }
|
2021-03-06 01:13:27 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-03-06 02:57:35 +01:00
|
|
|
scrape = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-17 00:05:21 +02:00
|
|
|
self.nixosModules.microvm
|
2021-03-06 02:57:35 +01:00
|
|
|
./hosts/containers/scrape
|
2022-06-17 00:05:21 +02:00
|
|
|
{
|
|
|
|
nixpkgs.overlays = [ secrets.overlays.scrape ];
|
|
|
|
_module.args = { inherit scrapers; };
|
|
|
|
}
|
2021-03-06 02:57:35 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-03-11 15:59:00 +01:00
|
|
|
dn42 = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-16 23:17:10 +02:00
|
|
|
self.nixosModules.microvm
|
2021-03-11 15:59:00 +01:00
|
|
|
./hosts/containers/dn42
|
2022-01-08 21:21:51 +01:00
|
|
|
{
|
2021-03-11 15:59:00 +01:00
|
|
|
nixpkgs.overlays = [ secrets.overlays.dn42 ];
|
2022-01-06 23:30:33 +01:00
|
|
|
sops.defaultSopsFile = "${secrets}/hosts/dn42/secrets.yaml";
|
2022-01-08 21:21:51 +01:00
|
|
|
}
|
2021-03-11 15:59:00 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-03-11 16:40:39 +01:00
|
|
|
grafana = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-18 02:09:33 +02:00
|
|
|
self.nixosModules.microvm
|
2021-03-11 16:40:39 +01:00
|
|
|
./hosts/containers/grafana
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-03-12 21:45:12 +01:00
|
|
|
hydra = nixosSystem' {
|
|
|
|
modules = [
|
2022-05-12 02:58:47 +02:00
|
|
|
inputs.hydra.nixosModules.hydra
|
2022-05-05 22:34:51 +02:00
|
|
|
./hosts/hydra
|
2022-01-09 01:46:11 +01:00
|
|
|
{
|
|
|
|
sops.defaultSopsFile = "${secrets}/hosts/hydra/secrets.yaml";
|
|
|
|
}
|
2021-03-12 21:45:12 +01:00
|
|
|
];
|
2022-06-24 01:02:11 +02:00
|
|
|
specialArgs = {
|
|
|
|
hydra-ca = inputs.hydra-ca;
|
|
|
|
};
|
2021-03-12 21:45:12 +01:00
|
|
|
};
|
|
|
|
|
2021-03-22 16:22:57 +01:00
|
|
|
mucbot = nixosSystem' {
|
|
|
|
modules = [
|
2022-05-31 20:08:25 +02:00
|
|
|
{ _module.args = { inherit tigger; }; }
|
2022-06-16 21:36:52 +02:00
|
|
|
self.nixosModules.microvm
|
2021-03-22 16:22:57 +01:00
|
|
|
"${tigger}/module.nix"
|
|
|
|
{ nixpkgs.overlays = [ secrets.overlays.mucbot ]; }
|
|
|
|
./hosts/containers/mucbot
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-05-10 00:28:27 +02:00
|
|
|
kibana = nixosSystem' {
|
|
|
|
modules = [
|
2022-01-15 18:30:20 +01:00
|
|
|
./config/lxc-container.nix
|
2021-05-10 00:28:27 +02:00
|
|
|
./hosts/containers/kibana
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-06-23 21:59:10 +02:00
|
|
|
public-access-proxy = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-16 22:23:36 +02:00
|
|
|
self.nixosModules.microvm
|
2021-06-23 21:59:10 +02:00
|
|
|
./hosts/containers/public-access-proxy
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-09-08 01:22:40 +02:00
|
|
|
ticker = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-16 21:26:57 +02:00
|
|
|
self.nixosModules.microvm
|
2022-06-04 02:35:17 +02:00
|
|
|
ticker.nixosModules.ticker
|
2021-09-08 01:22:40 +02:00
|
|
|
./hosts/containers/ticker
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-09-10 00:21:38 +02:00
|
|
|
spaceapi = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-16 21:38:53 +02:00
|
|
|
self.nixosModules.microvm
|
2021-09-10 00:21:38 +02:00
|
|
|
"${spacemsg}/spaceapi/module.nix"
|
|
|
|
./hosts/containers/spaceapi
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-09-10 22:59:40 +02:00
|
|
|
stream = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-28 03:26:08 +02:00
|
|
|
self.nixosModules.microvm
|
2021-09-10 22:59:40 +02:00
|
|
|
./hosts/containers/stream
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-09-20 22:11:17 +02:00
|
|
|
mobilizon = nixosSystem' {
|
|
|
|
# TODO: pending https://github.com/NixOS/nixpkgs/pull/119132
|
|
|
|
nixpkgs = inputs.nixpkgs-mobilizon;
|
|
|
|
modules = [
|
2022-06-16 23:48:49 +02:00
|
|
|
self.nixosModules.microvm
|
2021-09-20 22:11:17 +02:00
|
|
|
./hosts/containers/mobilizon
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-10-02 00:46:59 +02:00
|
|
|
mail = nixosSystem' {
|
|
|
|
modules = [
|
2022-01-15 18:30:20 +01:00
|
|
|
./config/lxc-container.nix
|
2021-10-02 00:46:59 +02:00
|
|
|
./hosts/containers/mail
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-10-05 00:12:02 +02:00
|
|
|
logging = nixosSystem' {
|
|
|
|
modules = [
|
2022-01-15 18:30:20 +01:00
|
|
|
./config/lxc-container.nix
|
2021-10-05 00:12:02 +02:00
|
|
|
./hosts/containers/logging
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-05-31 19:16:41 +02:00
|
|
|
# TODO: requires config cleanup for nixos-22.05
|
|
|
|
# keycloak = nixosSystem' {
|
|
|
|
# modules = [
|
|
|
|
# ./config/lxc-container.nix
|
|
|
|
# ./hosts/containers/keycloak
|
|
|
|
# { nixpkgs.overlays = with secrets.overlays; [ keycloak ]; }
|
|
|
|
# ];
|
|
|
|
# };
|
2021-10-05 12:53:16 +02:00
|
|
|
|
2021-10-06 02:55:30 +02:00
|
|
|
c3d2-web = nixosSystem' {
|
|
|
|
modules = [
|
2022-05-31 20:08:25 +02:00
|
|
|
{ _module.args = { inherit nixpkgs; }; }
|
2022-06-18 02:42:41 +02:00
|
|
|
self.nixosModules.microvm
|
2021-10-06 02:55:30 +02:00
|
|
|
./hosts/containers/c3d2-web
|
2022-01-13 18:38:36 +01:00
|
|
|
{ nixpkgs.overlays = [ secrets.overlays.c3d2-web ]; }
|
2021-10-06 02:55:30 +02:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-10-07 23:00:50 +02:00
|
|
|
sdrweb = nixosSystem' {
|
2022-06-28 12:33:31 +02:00
|
|
|
nixpkgs = nixpkgs-unstable;
|
2021-10-07 23:00:50 +02:00
|
|
|
modules = [
|
2022-06-19 22:29:08 +02:00
|
|
|
self.nixosModules.microvm
|
2021-10-30 02:02:08 +02:00
|
|
|
{ nixpkgs.overlays = [ secrets.overlays.mucbot ]; }
|
2021-11-09 01:23:35 +01:00
|
|
|
heliwatch.nixosModules.heliwatch
|
2021-10-07 23:00:50 +02:00
|
|
|
./hosts/containers/sdrweb
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-10-15 02:07:50 +02:00
|
|
|
bind = nixosSystem' {
|
|
|
|
modules = [
|
2022-01-13 18:38:36 +01:00
|
|
|
{ nixpkgs.overlays = with secrets.overlays; [ bind ]; }
|
2022-06-18 02:43:11 +02:00
|
|
|
self.nixosModules.microvm
|
2021-10-15 02:07:50 +02:00
|
|
|
./hosts/containers/bind
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-10-18 03:46:25 +02:00
|
|
|
jabber = nixosSystem' {
|
|
|
|
modules = [
|
2022-01-13 18:38:36 +01:00
|
|
|
{ nixpkgs.overlays = with secrets.overlays; [ jabber ]; }
|
2022-06-20 00:15:34 +02:00
|
|
|
self.nixosModules.microvm
|
2021-10-18 03:46:25 +02:00
|
|
|
./hosts/containers/jabber
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-12-24 03:18:20 +01:00
|
|
|
blogs = nixosSystem' {
|
|
|
|
modules = [
|
|
|
|
self.nixosModules.plume
|
2022-06-20 00:06:32 +02:00
|
|
|
self.nixosModules.microvm
|
2021-12-24 03:18:20 +01:00
|
|
|
./hosts/containers/blogs
|
2022-01-13 18:38:36 +01:00
|
|
|
{ sops.defaultSopsFile = "${secrets}/hosts/blogs/secrets.yaml"; }
|
2021-12-24 03:18:20 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-06-18 01:07:43 +02:00
|
|
|
server9 = nixosSystem' {
|
|
|
|
modules = [
|
|
|
|
./hosts/server9
|
2022-06-22 00:59:58 +02:00
|
|
|
microvm.nixosModules.host
|
2022-06-18 01:07:43 +02:00
|
|
|
self.nixosModules.cluster-network
|
|
|
|
{ _module.args = { inherit self; }; }
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-05-14 20:33:56 +02:00
|
|
|
server10 = nixosSystem' {
|
|
|
|
modules = [
|
|
|
|
./hosts/server10
|
2022-05-15 02:46:14 +02:00
|
|
|
microvm.nixosModules.host
|
2022-06-18 00:49:47 +02:00
|
|
|
self.nixosModules.cluster-network
|
2022-06-16 22:42:03 +02:00
|
|
|
{ _module.args = { inherit self; }; }
|
2022-05-14 20:33:56 +02:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-05-28 00:12:18 +02:00
|
|
|
oparl = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-16 21:18:04 +02:00
|
|
|
self.nixosModules.microvm
|
2022-05-28 00:12:18 +02:00
|
|
|
./hosts/containers/oparl
|
2022-06-27 23:06:38 +02:00
|
|
|
{
|
|
|
|
_module.args = { inherit oparl-scraper; };
|
|
|
|
sops.defaultSopsFile = "${secrets}/hosts/oparl/secrets.yaml";
|
|
|
|
}
|
2022-05-28 00:12:18 +02:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-06-01 20:46:47 +02:00
|
|
|
leon = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-16 21:18:04 +02:00
|
|
|
self.nixosModules.microvm
|
2022-06-01 20:46:47 +02:00
|
|
|
./hosts/containers/leon
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-06-07 20:15:09 +02:00
|
|
|
nfsroot = nixosSystem' {
|
|
|
|
modules = [
|
2022-06-16 21:18:04 +02:00
|
|
|
self.nixosModules.microvm
|
2022-06-07 20:15:09 +02:00
|
|
|
./hosts/containers/nfsroot
|
2022-06-21 23:34:13 +02:00
|
|
|
{
|
|
|
|
_module.args.tftproots = nixpkgs.lib.filterAttrs (name: _:
|
|
|
|
builtins.match ".+-tftproot" name != null
|
|
|
|
) self.packages.x86_64-linux;
|
|
|
|
} ];
|
2022-06-07 20:15:09 +02:00
|
|
|
};
|
|
|
|
|
2022-06-08 22:55:35 +02:00
|
|
|
riscbert = nixosSystem' {
|
|
|
|
modules = [
|
|
|
|
riscv64.nixosModules.visionfive
|
|
|
|
./hosts/riscbert
|
|
|
|
];
|
|
|
|
system = "riscv64-linux";
|
|
|
|
};
|
|
|
|
|
2022-06-18 00:50:08 +02:00
|
|
|
direkthilfe = nixosSystem' {
|
|
|
|
modules = [
|
|
|
|
self.nixosModules.microvm
|
|
|
|
./hosts/containers/direkthilfe
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2022-06-23 18:38:42 +02:00
|
|
|
mediawiki = nixosSystem' {
|
|
|
|
modules = [
|
|
|
|
self.nixosModules.microvm
|
|
|
|
./hosts/containers/mediawiki
|
2022-06-28 20:44:01 +02:00
|
|
|
{
|
|
|
|
sops.defaultSopsFile = "${secrets}/hosts/mediawiki/secrets.yaml";
|
|
|
|
}
|
2022-06-23 18:38:42 +02:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2020-08-04 17:15:07 +02:00
|
|
|
};
|
|
|
|
|
2022-01-15 18:30:20 +01:00
|
|
|
nixosModule = self.nixosModules.c3d2;
|
2022-01-13 18:38:36 +01:00
|
|
|
nixosModules = {
|
2022-01-18 21:44:17 +01:00
|
|
|
c3d2 = {
|
2022-01-16 00:09:17 +01:00
|
|
|
imports = [
|
|
|
|
sops-nix.nixosModule
|
|
|
|
./modules/c3d2.nix
|
2022-01-18 15:39:35 +01:00
|
|
|
./modules/nncp.nix
|
2022-01-18 22:04:02 +01:00
|
|
|
./modules/autoupdate.nix
|
2022-01-16 00:09:17 +01:00
|
|
|
];
|
2022-01-16 13:26:37 +01:00
|
|
|
c3d2.hosts = hostRegistry.hosts;
|
2022-01-16 00:09:17 +01:00
|
|
|
c3d2.users = import ./users.nix;
|
2022-01-18 21:44:17 +01:00
|
|
|
c3d2.nncp.neigh = import ./config/nncp-relays.nix;
|
2022-01-16 00:09:17 +01:00
|
|
|
};
|
2022-06-18 01:07:53 +02:00
|
|
|
cluster-network = ./modules/cluster-network.nix;
|
2022-06-16 21:18:04 +02:00
|
|
|
microvm.imports = [
|
|
|
|
microvm.nixosModules.microvm
|
|
|
|
./modules/microvm.nix
|
|
|
|
];
|
2022-01-15 11:00:01 +01:00
|
|
|
nncp = ./modules/nncp.nix;
|
2022-01-13 18:38:36 +01:00
|
|
|
plume = {
|
2022-01-15 18:30:20 +01:00
|
|
|
imports = [ ./modules/plume.nix ];
|
2022-01-13 18:38:36 +01:00
|
|
|
nixpkgs.overlays = [ fenix.overlay naersk.overlay ];
|
|
|
|
};
|
2022-03-16 20:38:00 +01:00
|
|
|
rpi-netboot = ./modules/rpi-netboot.nix;
|
2022-01-13 18:38:36 +01:00
|
|
|
};
|
2021-11-10 00:33:29 +01:00
|
|
|
|
2022-05-31 22:07:32 +02:00
|
|
|
hydraJobs =
|
2022-01-08 21:27:34 +01:00
|
|
|
builtins.mapAttrs (_: nixpkgs.lib.hydraJob) (
|
2022-05-31 22:07:32 +02:00
|
|
|
builtins.mapAttrs (_: nixosSystem:
|
2022-06-17 01:42:10 +02:00
|
|
|
if nixosSystem.config ? microvm.declaredRunner
|
|
|
|
then nixosSystem.config.microvm.declaredRunner
|
|
|
|
else nixosSystem.config.system.build.toplevel
|
2022-05-31 22:07:32 +02:00
|
|
|
) self.nixosConfigurations
|
2022-03-16 21:50:20 +01:00
|
|
|
//
|
|
|
|
nixpkgs.lib.filterAttrs (name: _:
|
|
|
|
builtins.match ".+-tftproot" name != null
|
2022-05-31 22:07:32 +02:00
|
|
|
) self.packages.aarch64-linux
|
|
|
|
);
|
2021-02-22 12:31:58 +01:00
|
|
|
};
|
2020-03-25 19:52:13 +01:00
|
|
|
}
|