1
0
Fork 0
nixos-config/system/update-script.nix

30 lines
861 B
Nix
Raw Normal View History

2019-07-25 21:35:59 +00:00
{ pkgs, config, lib, ... }:
let
inherit (import ../common/lib.nix) writeHaskellScript getNivPath getNivAssign home-manager;
configPath = "/etc/nixos";
update-system = writeHaskellScript {
name = "update-system";
imports = [ "qualified Data.ByteString.Lazy.Char8 as C" "qualified Data.List as L" ];
bins = [ getNivPath config.system.build.nixos-rebuild ];
}
''
getNivPath = fmap C.unpack . readTrim . get_niv_path "${configPath}/nix/sources.nix"
getNivAssign name = fmap process . getNivPath $ name
where process str = ["-I", name ++ "=" ++ str]
main = do
paths <- fmap concat . mapM getNivAssign $ ["nixpkgs", "unstable", "home-manager"]
nixos_rebuild (paths ++ ["switch"])
'';
in
{
config = {
environment = {
systemPackages = [
update-system
];
};
};
}