59 lines
1.6 KiB
Nix
59 lines
1.6 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
with lib.custom; let
|
|
enable = false;
|
|
in {
|
|
custom.services.guix = {inherit enable;};
|
|
systemd.timers."guix-build" = {
|
|
inherit enable;
|
|
wantedBy = ["timers.target"];
|
|
timerConfig = {
|
|
OnBootSec = "120m";
|
|
OnUnitActiveSec = "120m";
|
|
Unit = "guix-build.service";
|
|
};
|
|
};
|
|
|
|
systemd.services."guix-build" = {
|
|
inherit enable;
|
|
script = let
|
|
gitRepo = "/root/dotfiles";
|
|
git = "${pkgs.git}/bin/git";
|
|
echo = "${pkgs.coreutils}/bin/echo";
|
|
repoUrl = "https://git.kylekrein.com/kylekrein/dotfiles.git";
|
|
guix = "${pkgs.guix}/bin/guix time-machine -C ${gitRepo}/guix-config/channels-lock.scm --";
|
|
in ''
|
|
if [ ! -d "${gitRepo}" ]; then
|
|
${echo} "dotfiles repo not found, cloning..."
|
|
${git} clone "${repoUrl}" "${gitRepo}"
|
|
else
|
|
${echo} "Updating repo..."
|
|
cd "${gitRepo}"
|
|
${git} fetch --all
|
|
${git} reset --hard origin/master
|
|
fi
|
|
|
|
cd "${gitRepo}"
|
|
|
|
${echo} "Building packages..."
|
|
${guix} build -L "${gitRepo}" ${gitRepo}/guix-config/packages/*
|
|
|
|
${echo} "Building system config..."
|
|
${guix} system build -L "${gitRepo}" ${gitRepo}/guix-config/system/anaconda.scm
|
|
|
|
${echo} "Building home config..."
|
|
${guix} home build -L "${gitRepo}" ${gitRepo}/guix-config/home/workstation.scm
|
|
|
|
${echo} "All builds complete!"
|
|
'';
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
User = "root";
|
|
WorkingDirectory = "/root";
|
|
};
|
|
};
|
|
}
|