mirror of
https://github.com/tomasriveral/nixos.git
synced 2026-08-12 02:28:37 +02:00
nix: add script to clean up my system
This commit is contained in:
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "custom-cleanNix";
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [
|
||||||
|
git
|
||||||
|
nixos-rebuild
|
||||||
|
matrix-commander-rs
|
||||||
|
libnotify
|
||||||
|
alejandra
|
||||||
|
deadnix
|
||||||
|
];
|
||||||
|
|
||||||
|
text = ''
|
||||||
|
set -e
|
||||||
|
|
||||||
|
FLAKE_DIR="/home/tomasr/nixos"
|
||||||
|
FLAKE="$FLAKE_DIR#laptop"
|
||||||
|
TIME=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
|
||||||
|
|
||||||
|
ERROR_FILE=$(mktemp)
|
||||||
|
|
||||||
|
# snapshot current state
|
||||||
|
git -C "$FLAKE_DIR" add -A
|
||||||
|
git -C "$FLAKE_DIR" commit --allow-empty -m "snapshot pre-cleanup-$TIME"
|
||||||
|
git -C "$FLAKE_DIR" tag "pre-cleanup-$TIME" HEAD
|
||||||
|
|
||||||
|
# removes dead code
|
||||||
|
deadnix --edit "$FLAKE_DIR" # removes unused code
|
||||||
|
statix fix "$FLAKE_DIR" # check other linting issues
|
||||||
|
alejandra "$FLAKE_DIR" # formats the config
|
||||||
|
|
||||||
|
if sudo /run/current-system/sw/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule
|
||||||
|
|
||||||
|
if ! git -C "$FLAKE_DIR" diff --quiet HEAD; then
|
||||||
|
git -C "$FLAKE_DIR" add -A
|
||||||
|
git -C "$FLAKE_DIR" commit -m "Auto: cleanup-$TIME"
|
||||||
|
git -C "$FLAKE_DIR" push
|
||||||
|
|
||||||
|
notify-send "Nix auto cleanup" "Everything OK"
|
||||||
|
|
||||||
|
matrix-commander-rs --verbose -m "Nix auto cleanup. Everything OK.<br><a href=\"https://matrix.to/#/@notificationbot_0000:matrix.org\">@notificationbot_0000</a>" \
|
||||||
|
--html \
|
||||||
|
-r "\!7j-78_02dHROeLj4Ns8F12eo4IiZGv4zNsQ_1-WlyIU"
|
||||||
|
else
|
||||||
|
notify-send "Nix auto cleanup" "No changes"
|
||||||
|
git -C "$FLAKE_DIR" push
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
ERROR_MSG=$(cat "$ERROR_FILE")
|
||||||
|
|
||||||
|
notify-send -u critical "Nix auto cleanup" "FAILED"
|
||||||
|
|
||||||
|
matrix-commander-rs --verbose -m "Nix auto cleanup failed.<br>Error: <pre>$ERROR_MSG</pre><br><a href=\"https://matrix.to/#/@notificationbot_0000:matrix.org\">@notificationbot_0000</a>" \
|
||||||
|
--html \
|
||||||
|
-r "\!7j-78_02dHROeLj4Ns8F12eo4IiZGv4zNsQ_1-WlyIU"
|
||||||
|
|
||||||
|
git -C "$FLAKE_DIR" reset --hard "pre-cleanup-$TIME"
|
||||||
|
fi
|
||||||
|
git -C "$FLAKE_DIR" tag -d "pre-cleanup-$TIME" # removes the tag
|
||||||
|
|
||||||
|
rm -f "$ERROR_FILE"
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
# some options are in ../../hostsModules/laptop/nixos/nixUtils.nix
|
# some options are in ../../hostsModules/laptop/nixos/nixUtils.nix
|
||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
pkgs-unstable,
|
pkgs-unstable,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
@@ -29,5 +30,7 @@
|
|||||||
alejandra
|
alejandra
|
||||||
vimPluginsUpdater # used for building plugins
|
vimPluginsUpdater # used for building plugins
|
||||||
nix-index
|
nix-index
|
||||||
|
statix
|
||||||
|
(pkgs.callPackage ../../hostsModules/laptop/scripts/cleanNix.nix {})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user