diff --git a/modules/hosts/default.nix b/modules/hosts/default.nix index 1c5bad4..05efcf6 100644 --- a/modules/hosts/default.nix +++ b/modules/hosts/default.nix @@ -1,4 +1,5 @@ { + self, inputs, outputs, config, @@ -66,17 +67,61 @@ let config.flake.modules.nixOnDroid.${hostName} ]; }; -in -{ - flake.nixosConfigurations = builtins.mapAttrs mkHost { - alpha = { }; - arcturus = { }; - canopus = { }; - sirius = { }; - vps = { }; + + mkNixOSNode = hostname: { + inherit hostname; + profiles.system = { + user = "root"; + path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.${hostname}; + }; }; - flake.nixOnDroidConfigurations = builtins.mapAttrs mkDroidHost { - vega = { }; + activateNixOnDroid = + configuration: + inputs.deploy-rs.lib.aarch64-linux.activate.custom configuration.activationPackage "${configuration.activationPackage}/activate"; + + mkDroidNode = hostname: { + inherit hostname; + profiles.system = { + sshUser = "nix-on-droid"; + user = "nix-on-droid"; + magicRollback = true; + sshOpts = [ + "-p" + "8033" + ]; + path = activateNixOnDroid self.nixOnDroidConfigurations.${hostname}; + }; }; +in +{ + flake = { + nixosConfigurations = builtins.mapAttrs mkHost { + sirius = { }; + canopus = { }; + arcturus = { }; + alpha = { }; + vps = { }; + }; + + nixOnDroidConfigurations = builtins.mapAttrs mkDroidHost { + vega = { }; + }; + + deploy.nodes = { + sirius = mkNixOSNode "sirius"; + canopus = mkNixOSNode "canopus"; + arcturus = mkNixOSNode "arcturus"; + alpha = mkNixOSNode "alpha"; + vega = mkDroidNode "vega"; + }; + }; + + perSystem = + { ... }: + { + checks = builtins.mapAttrs ( + _: config: config.config.system.build.toplevel + ) self.nixosConfigurations; + }; } diff --git a/modules/nixos/boot/loader.nix b/modules/nixos/boot/loader.nix index 1823475..37081e7 100644 --- a/modules/nixos/boot/loader.nix +++ b/modules/nixos/boot/loader.nix @@ -11,6 +11,8 @@ config = lib.mkMerge [ { + boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; + boot.loader = { timeout = 1; efi.canTouchEfiVariables = true; diff --git a/modules/nixos/core/nix.nix b/modules/nixos/core/nix.nix index 237b976..465c37c 100644 --- a/modules/nixos/core/nix.nix +++ b/modules/nixos/core/nix.nix @@ -15,6 +15,11 @@ optimise.automatic = true; settings = { + extra-platforms = [ + "aarch64-linux" + "arm-linux" + ]; + experimental-features = [ "nix-command" "flakes"