1
0
Fork 0
nixos-config/lib/update-system.nix
2019-08-02 05:17:05 +02:00

32 lines
970 B
Nix

nixos-rebuild:
let
inherit (import ../lib)
writeHaskellScript get-niv-path home-manager gcRetentionDays pkgs;
in rec {
configPath = "/etc/nixos";
update-system = writeHaskellScript {
name = "update-system";
bins = [ get-niv-path nixos-rebuild ];
} ''
getNivPath = readTrim . get_niv_path "${configPath}/nix/sources.nix"
getNivAssign name = tag <$> getNivPath name
where tag str = ["-I", [i|#{name}=#{str :: LBS.ByteString}|] ]
main = do
paths <- fmap concat . mapM getNivAssign $ ["nixpkgs", "unstable", "home-manager"]
args <- getArgs
nixos_rebuild (paths ++ ["switch"] ++ args)
'';
system-maintenance = writeHaskellScript {
name = "system-maintenance";
bins = [ pkgs.nix pkgs.git update-system ];
} ''
main = do
git "-C" "${configPath}" "pull"
update_system
nix_collect_garbage "--delete-older-than" "${toString gcRetentionDays}d"
nix "optimise-store"
'';
}