Compare commits
7 Commits
updated-in
...
master
Author | SHA1 | Date | |
---|---|---|---|
82f8064956 | |||
342d50d936 | |||
dd76691f7d | |||
72cdef91d9 | |||
22c7cb451b | |||
9357981ff3 | |||
eddb365ae5 |
@@ -6,6 +6,7 @@
|
||||
# My system is fucked
|
||||
gptfdisk
|
||||
parted
|
||||
grow-last-partition-and-filesystem
|
||||
|
||||
# Normal usage
|
||||
htop
|
||||
|
6
flake.lock
generated
6
flake.lock
generated
@@ -646,11 +646,11 @@
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1755186698,
|
||||
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
|
||||
"lastModified": 1753549186,
|
||||
"narHash": "sha256-Znl7rzuxKg/Mdm6AhimcKynM7V3YeNDIcLjBuoBcmNs=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c",
|
||||
"rev": "17f6bd177404d6d43017595c5264756764444ab8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@@ -237,7 +237,7 @@
|
||||
];
|
||||
};
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
services.bijwerken = {
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -111,7 +111,7 @@
|
||||
'';
|
||||
};
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
services.bijwerken = {
|
||||
autoUpgrade = true;
|
||||
startAt = "*-*-* 06:22:00";
|
||||
};
|
||||
|
@@ -105,7 +105,7 @@
|
||||
'';
|
||||
};
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
services.bijwerken = {
|
||||
autoUpgrade = true;
|
||||
startAt = "*-*-* 07:22:00";
|
||||
};
|
||||
|
@@ -161,7 +161,7 @@
|
||||
}
|
||||
'';
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
services.bijwerken = {
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -70,7 +70,7 @@
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
services.bijwerken = {
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -89,7 +89,7 @@ groups:
|
||||
description: "GPG with fingerprint {{ $labels.fingerprint }} is expiring in less then six weeks"
|
||||
- alert: NadjaTopIPv4ProxyBroken
|
||||
expr: probe_success{job="blackbox_local_http6", target="blog.nadja.top"} != on (target) probe_success{job="blackbox_local_http4", target="blog.nadja.top"}
|
||||
for: 5m
|
||||
for: 15m
|
||||
labels:
|
||||
severity: critical
|
||||
annotations:
|
||||
@@ -102,3 +102,11 @@ groups:
|
||||
annotations:
|
||||
summary: "Too many notification requests failed"
|
||||
description: "Too many notification requests to Alertmanager integration {{ $labels.integration }} failed"
|
||||
- alert: FemSocialDown
|
||||
expr: min(probe_success{target="fem.social", job=~"blackbox_local_http.*"}) == 0
|
||||
for: 5m
|
||||
labels:
|
||||
severity: critical
|
||||
annotations:
|
||||
summary: "fem.social unavailable via HTTP"
|
||||
description: "fem.social is not fully reachable via HTTP"
|
||||
|
@@ -41,7 +41,7 @@
|
||||
|
||||
networking.firewall.allowedUDPPorts = [];
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
services.bijwerken = {
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -58,7 +58,7 @@
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
networking.firewall.allowedUDPPorts = [];
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
services.bijwerken = {
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -52,7 +52,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
services.bijwerken = {
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -3,13 +3,13 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.clerie.system-auto-upgrade;
|
||||
cfg = config.services.bijwerken;
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
clerie.system-auto-upgrade = {
|
||||
enable = mkEnableOption "clerie system upgrade";
|
||||
services.bijwerken = {
|
||||
enable = mkEnableOption "Automatic system upgrades";
|
||||
autoUpgrade = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@@ -20,10 +20,15 @@ in
|
||||
default = null;
|
||||
description = "Systemd time string for starting the unit";
|
||||
};
|
||||
nodeExporterTextfilePath = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
description = "Path to node exporter textfile for putting metrics";
|
||||
};
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.clerie-system-auto-upgrade = {
|
||||
systemd.services.bijwerken-system-upgrade = {
|
||||
requires = [ "network-online.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
|
||||
@@ -33,10 +38,10 @@ in
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = pkgs.clerie-system-upgrade + "/bin/clerie-system-upgrade --no-confirm${optionalString (config.clerie.monitoring.enable) " --node-exporter-metrics-path /var/lib/prometheus-node-exporter/textfiles/clerie-system-upgrade.prom"}";
|
||||
ExecStart = (getExe pkgs.bijwerken-system-upgrade) + " --no-confirm${optionalString (cfg.nodeExporterTextfilePath != null) " --node-exporter-metrics-path ${cfg.nodeExporterTextfilePath}"}";
|
||||
};
|
||||
};
|
||||
systemd.timers.clerie-system-auto-upgrade = mkIf cfg.autoUpgrade {
|
||||
systemd.timers.bijwerken-system-upgrade = mkIf cfg.autoUpgrade {
|
||||
wantedBy = [ "timers.target" ];
|
||||
timerConfig = {
|
||||
OnCalendar = if cfg.startAt == null then "*-*-* 05:37:00" else cfg.startAt;
|
||||
@@ -46,7 +51,7 @@ in
|
||||
after = [ "network-online.target" ];
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
clerie-system-upgrade
|
||||
bijwerken-system-upgrade
|
||||
];
|
||||
};
|
||||
}
|
@@ -5,9 +5,9 @@
|
||||
./policyrouting
|
||||
./akne
|
||||
./backup
|
||||
./bijwerken
|
||||
./clerie-firewall
|
||||
./clerie-gc-dir
|
||||
./clerie-system-upgrade
|
||||
./dhcpcd-prefixdelegation
|
||||
./minecraft-server
|
||||
./monitoring
|
||||
|
@@ -75,6 +75,8 @@ in
|
||||
|
||||
systemd.services."prometheus-node-exporter".serviceConfig.RestrictAddressFamilies = [ "AF_NETLINK" ];
|
||||
|
||||
services.bijwerken.nodeExporterTextfilePath = "/var/lib/prometheus-node-exporter/textfiles/bijwerken-system-upgrade.prom";
|
||||
|
||||
services.prometheus.exporters.bird = mkIf cfg.bird {
|
||||
enable = true;
|
||||
};
|
||||
|
5
pkgs/bijwerken-poke/bijwerken-poke.sh
Executable file
5
pkgs/bijwerken-poke/bijwerken-poke.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
TARGETS="$(nix --extra-experimental-features "nix-command flakes" eval --raw ".#nixosConfigurations" --apply "nixosConfigurations: builtins.concatStringsSep \"\\n\" (builtins.attrValues (builtins.mapAttrs (name: host: host.config.networking.fqdn) nixosConfigurations))")"
|
||||
|
||||
pssh -h <(echo "${TARGETS}") -i -- sudo systemctl start bijwerken-system-upgrade.service --no-block
|
10
pkgs/bijwerken-poke/default.nix
Normal file
10
pkgs/bijwerken-poke/default.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
pkgs.writeShellApplication {
|
||||
name = "bijwerken-poke";
|
||||
text = builtins.readFile ./bijwerken-poke.sh;
|
||||
runtimeInputs = with pkgs; [
|
||||
pssh
|
||||
];
|
||||
}
|
||||
|
@@ -40,7 +40,7 @@ if [[ -z $NO_CONFIRM ]]; then
|
||||
fi
|
||||
|
||||
echo "Download ${STORE_PATH}"
|
||||
nix copy --from "https://nix-cache.clerie.de" "${STORE_PATH}"
|
||||
nix copy --to daemon "${STORE_PATH}"
|
||||
|
||||
echo "Add to system profile"
|
||||
nix-env -p "/nix/var/nix/profiles/system" --set "${STORE_PATH}"
|
||||
@@ -50,7 +50,7 @@ echo "Set as boot target"
|
||||
|
||||
if [[ -n "$NODE_EXPORTER_METRICS_PATH" ]]; then
|
||||
echo "Write monitoring check data"
|
||||
echo "clerie_system_upgrade_last_check $(date +%s)" > "$NODE_EXPORTER_METRICS_PATH"
|
||||
echo "bijwerken_system_upgrade_last_check $(date +%s)" > "$NODE_EXPORTER_METRICS_PATH"
|
||||
fi
|
||||
|
||||
BOOTED_SYSTEM_KERNEL="$(readlink /run/booted-system/{initrd,kernel,kernel-modules})"
|
@@ -1,8 +1,8 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
pkgs.writeShellApplication {
|
||||
name = "clerie-system-upgrade";
|
||||
text = builtins.readFile ./clerie-system-upgrade.sh;
|
||||
name = "bijwerken-system-upgrade";
|
||||
text = builtins.readFile ./bijwerken-system-upgrade.sh;
|
||||
runtimeInputs = with pkgs; [
|
||||
curl
|
||||
jq
|
17
pkgs/grow-last-partition-and-filesystem/default.nix
Normal file
17
pkgs/grow-last-partition-and-filesystem/default.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
e2fsprogs,
|
||||
jq,
|
||||
parted,
|
||||
writeShellApplication,
|
||||
}:
|
||||
|
||||
writeShellApplication {
|
||||
name = "grow-last-partition-and-filesystem";
|
||||
text = builtins.readFile ./grow-last-partition-and-filesystem.sh;
|
||||
runtimeInputs = [
|
||||
e2fsprogs
|
||||
jq
|
||||
parted
|
||||
];
|
||||
}
|
||||
|
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [[ $# -ne 1 ]]; then
|
||||
echo "Pass device to grow as first argument:"
|
||||
echo "grow-last-partition-and-filesystem DEVICE"
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEVICE="$1"
|
||||
|
||||
PARTITIONDATA="$(parted --script --json --fix "${DEVICE}" print)"
|
||||
PARTNUMBER="$(echo "${PARTITIONDATA}" | jq -r '.disk.partitions | last | .number')"
|
||||
PARTNAME="$(echo "${PARTITIONDATA}" | jq -r '.disk.partitions | last | .name')"
|
||||
|
||||
echo "Growing partition ${DEVICE}${PARTNUMBER} (${PARTNAME})"
|
||||
echo
|
||||
|
||||
parted "${DEVICE}" resizepart "${PARTNUMBER}" 100%
|
||||
|
||||
echo
|
||||
echo "Resizing filesystem"
|
||||
echo
|
||||
|
||||
resize2fs "${DEVICE}${PARTNUMBER}"
|
||||
|
||||
echo "Done."
|
@@ -1,10 +1,11 @@
|
||||
final: prev: {
|
||||
bijwerken-poke = final.callPackage ./bijwerken-poke {};
|
||||
bijwerken-system-upgrade = final.callPackage ./bijwerken-system-upgrade {};
|
||||
clerie-backup = final.callPackage ./clerie-backup {};
|
||||
clerie-cleanup-branches = final.callPackage ./clerie-update-nixfiles/clerie-cleanup-branches.nix {};
|
||||
clerie-keys = final.callPackage ./clerie-keys {};
|
||||
clerie-ssh-known-hosts = final.callPackage ./clerie-ssh-known-hosts {};
|
||||
clerie-system-remote-install = final.callPackage ./clerie-system-remote-install {};
|
||||
clerie-system-upgrade = final.callPackage ./clerie-system-upgrade/clerie-system-upgrade.nix {};
|
||||
clerie-merge-nixfiles-update = final.callPackage ./clerie-update-nixfiles/clerie-merge-nixfiles-update.nix {};
|
||||
clerie-sops = final.callPackage ./clerie-sops/clerie-sops.nix {};
|
||||
clerie-sops-config = final.callPackage ./clerie-sops/clerie-sops-config.nix {};
|
||||
@@ -18,6 +19,7 @@ final: prev: {
|
||||
git-diff-word = final.callPackage ./git-diff-word {};
|
||||
git-pp = final.callPackage ./git-pp {};
|
||||
git-show-link = final.callPackage ./git-show-link {};
|
||||
grow-last-partition-and-filesystem = final.callPackage ./grow-last-partition-and-filesystem {};
|
||||
nix-remove-result-links = final.callPackage ./nix-remove-result-links {};
|
||||
nixfiles-auto-install = final.callPackage ./nixfiles/nixfiles-auto-install.nix {};
|
||||
nixfiles-generate-config = final.callPackage ./nixfiles/nixfiles-generate-config.nix {};
|
||||
|
@@ -19,10 +19,10 @@ in {
|
||||
|
||||
clerie.nixfiles.enable = true;
|
||||
|
||||
clerie.system-auto-upgrade.enable = true;
|
||||
services.bijwerken.enable = true;
|
||||
|
||||
nix.settings = {
|
||||
trusted-users = [ "@wheel" "@guests" ];
|
||||
trusted-users = [ "@wheel" ];
|
||||
auto-optimise-store = true;
|
||||
# Keep buildtime dependencies
|
||||
keep-outputs = true;
|
||||
|
Reference in New Issue
Block a user