nixos-config/config/nix.nix

211 lines
6 KiB
Nix
Raw Normal View History

2022-06-12 15:39:15 +00:00
{
pkgs,
lib,
config,
system,
attic,
2022-06-12 15:39:15 +00:00
...
}: {
2022-01-27 16:16:42 +00:00
imports = [
./workarounds
];
2022-01-14 13:03:14 +00:00
nixpkgs.config.allowUnfree = true;
nix = {
settings = {
sandbox = true;
2023-01-14 19:58:07 +00:00
trusted-users = ["@wheel" "remote-build"];
2022-04-12 09:37:53 +00:00
require-sigs = true;
2022-02-08 09:48:37 +00:00
builders-use-substitutes = true;
2022-03-03 07:50:45 +00:00
substituters = [
"https://attic.chir.rs/chir-rs/"
"https://hydra.int.chir.rs"
2022-04-12 09:33:58 +00:00
];
trusted-public-keys = [
"nixcache:8KKuGz95Pk4UJ5W/Ni+pN+v+LDTkMMFV4yrGmAYgkDg="
"hydra.nixos.org-1:CNHJZBh9K4tP3EKF6FkkgeVYsS3ohTl+oS0Qa8bezVs="
2023-12-18 12:19:57 +00:00
"chir-rs:rzK1Czm3RqBbZLnXYrLM6JyOhfr6Z/8lhACIPO/LNFQ="
2022-03-03 07:50:45 +00:00
];
2024-10-13 16:39:49 +00:00
auto-optimise-store = true;
};
2022-01-14 13:03:14 +00:00
extraOptions = ''
experimental-features = nix-command flakes ca-derivations
2023-12-08 13:20:12 +00:00
builders-use-substitutes = true
2022-01-14 13:03:14 +00:00
'';
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
2023-05-21 17:32:58 +00:00
buildMachines = with lib;
mkMerge [
(mkIf (config.networking.hostName != "instance-20221213-1915") [
{
hostName = "build-aarch64";
systems = [
"aarch64-linux"
2023-10-19 08:02:43 +00:00
"riscv32-linux"
"riscv64-linux"
2023-05-21 17:32:58 +00:00
];
maxJobs = 4;
speedFactor = 1;
supportedFeatures = ["nixos-test" "benchmark" "ca-derivations" "gccarch-armv8-a" "gccarch-armv8.1-a" "gccarch-armv8.2-a" "big-parallel"];
}
])
2023-10-19 08:02:43 +00:00
(mkIf (config.networking.hostName != "nas") [
{
hostName = "build-nas";
systems = [
2023-12-08 13:20:12 +00:00
"i686-linux"
"x86_64-linux"
2023-10-19 08:02:43 +00:00
"armv7l-linux"
"powerpc-linux"
"powerpc64-linux"
"powerpc64le-linux"
"wasm32-wasi"
"riscv32-linux"
"riscv64-linux"
];
maxJobs = 12;
speedFactor = 1;
supportedFeatures = [
"kvm"
"nixos-test"
"big-parallel"
"benchmark"
"gccarch-znver1"
"gccarch-skylake"
"ca-derivations"
];
}
])
2023-12-06 16:28:12 +00:00
(mkIf (config.networking.hostName != "rainbow-resort") [
{
hostName = "build-rainbow-resort";
systems = [
2023-12-08 13:20:12 +00:00
"i686-linux"
"x86_64-linux"
2023-12-06 16:28:12 +00:00
"armv7l-linux"
"powerpc-linux"
"powerpc64-linux"
"powerpc64le-linux"
"wasm32-wasi"
"riscv32-linux"
"riscv64-linux"
];
maxJobs = 16;
speedFactor = 1;
supportedFeatures = [
"kvm"
"nixos-test"
"big-parallel"
"benchmark"
2023-12-08 13:20:12 +00:00
"gccarch-skylake-avx512"
"gccarch-znver3"
2023-12-06 16:28:12 +00:00
"gccarch-znver2"
"gccarch-znver1"
"gccarch-skylake"
"ca-derivations"
];
}
])
2023-10-19 08:02:43 +00:00
(mkIf (config.networking.hostName != "vf2") [
{
hostName = "build-riscv";
systems = [
"riscv32-linux"
"riscv64-linux"
];
maxJobs = 4;
speedFactor = 2;
supportedFeatures = [
"nixos-test"
"big-parallel"
"benchmark"
"ca-derivations"
# There are many more combinations but i simply do not care lol
"gccarch-rv64gc_zba_zbb"
"gccarch-rv64gc_zba"
"gccarch-rv64gc_zbb"
"gccarch-rv64gc"
"gccarch-rv32gc_zba_zbb"
"gccarch-rv32gc_zba"
"gccarch-rv32gc_zbb"
"gccarch-rv32gc"
"native-riscv"
];
}
])
2023-05-21 17:32:58 +00:00
];
2022-02-08 09:48:37 +00:00
distributedBuilds = true;
2022-01-14 13:03:14 +00:00
};
systemd.services.nix-daemon.environment.TMPDIR = "/build";
2024-08-31 07:09:21 +00:00
systemd.services.nixos-upgrade = {
2024-08-31 06:56:08 +00:00
description = "NixOS Upgrade";
restartIfChanged = false;
unitConfig.X-StopOnRemoval = false;
serviceConfig.Type = "oneshot";
path = with pkgs; [
coreutils
gnutar
xz.bin
gzip
gitMinimal
config.nix.package.out
config.programs.ssh.package
jq
curl
2023-11-10 08:19:08 +00:00
];
2024-08-31 06:56:08 +00:00
script = lib.mkDefault ''
#!${pkgs.bash}/bin/bash
set -ex
2024-09-01 18:12:04 +00:00
builds=$(${pkgs.curl}/bin/curl -H 'accept: application/json' https://hydra.int.chir.rs/jobset/flakes/${
if config.networking.hostName != "vf2"
then "nixos-config"
else "nixos-config-riscv"
}/evals | ${pkgs.jq}/bin/jq -r '.evals[0].builds[]')
2024-08-31 06:56:08 +00:00
for build in $builds; do
doc=$(${pkgs.curl}/bin/curl -H 'accept: application/json' https://hydra.int.chir.rs/build/$build)
jobname=$(echo $doc | ${pkgs.jq}/bin/jq -r '.job')
if [ "$jobname" = "${config.networking.hostName}.${system}" ]; then
drvname=$(echo $doc | ${pkgs.jq}/bin/jq -r '.drvpath')
output=$(${pkgs.nix}/bin/nix-store -r $drvname)
2024-09-03 06:28:15 +00:00
${pkgs.nix}/bin/nix-env -p /nix/var/nix/profiles/system --set $output
2024-08-31 06:56:08 +00:00
2024-09-01 18:12:04 +00:00
${
if config.networking.hostName != "nixos-8gb-fsn1-1"
then ''
$output/bin/switch-to-configuration boot
booted="$(${pkgs.coreutils}/bin/readlink /run/booted-system/{initrd,kernel,kernel-modules})"
built="$(${pkgs.coreutils}/bin/readlink $output/{initrd,kernel,kernel-modules})"
if [ "$booted" = "$built" ]; then
$output/bin/switch-to-configuration switch
else
${pkgs.systemd}/bin/shutdown -r +1
fi
exit
''
else "$output/bin/switch-to-configuration switch"
}
2024-08-31 06:56:08 +00:00
fi
done
'';
after = ["network-online.target"];
wants = ["network-online.target"];
};
systemd.timers.nixos-upgrade = {
enable = true;
description = "Automatically update nixos";
requires = ["nixos-upgrade.service"];
wantedBy = ["multi-user.target"];
timerConfig = {
OnUnitActiveSec = "30min";
RandomizedDelaySec = "1h";
};
2022-01-14 13:07:01 +00:00
};
2022-01-14 13:03:14 +00:00
}