Auto-upgrade with NixOS and NixOps
Published on 2.11.2016Published in nixops nixos
Since the end of last year NixOS has an auto-upgrade feature. Some weeks ago I decided to move my server from an unstable version of NixOS to the latest stable version. That made it easier for me to activate the auto-upgrade feature. However the first time the auto-upgrade was triggered it failed, since I deploy my server with NixOps and therefore there the file /etc/nixos/configuration.nix
does not exist.
Until I have a real fix for this problem I decided to live with the workaround of copying the configuration with NixOps to the server and to create a custom configuration.nix
that wraps around the NixOps configuration of the server. This resulted in the following code in my server configuration:
system.autoUpgrade.enable = true;
system.autoUpgrade.channel = https://nixos.org/channels/nixos-16.03;
systemd.services.nixos-upgrade.environment.NIXOS_CONFIG = pkgs.writeText "configuration.nix" ''
all@{ lib, ... }: lib.filterAttrs (n: v: n != "deployment")
((import /etc/nixos/current/default.nix).server all)
'';
system.activationScripts = {
configuration = ''
rm /etc/nixos/current/* #*/
ln -s ${./.}/* /etc/nixos/current #*/
'';
};
Here is the full configuration.
Leave a Reply
Comments
Kommentare für diesen Eintrag als RSS FeedThank you, that's a good idea, but it shouldn't go without saying that ${./.} will copy the working directory recursively into the world-readable Nix store. So one has to be wary that there are no secrets lying around anywhere.