From 1dc1cd67a47890c4b209fd16c181280788b0897f Mon Sep 17 00:00:00 2001 From: Tobias Happ Date: Thu, 27 Oct 2022 20:29:34 +0200 Subject: [PATCH] bootstrap: override flake inputs if needed --- modules/build/initial-build.nix | 37 ++++++++++++++++++++--- modules/environment/login/login-inner.nix | 9 ++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/modules/build/initial-build.nix b/modules/build/initial-build.nix index 79e6f24..3c5c49b 100644 --- a/modules/build/initial-build.nix +++ b/modules/build/initial-build.nix @@ -4,6 +4,17 @@ with lib; +let + defaultNixpkgsBranch = "nixos-22.05"; + defaultNixOnDroidBranch = "release-22.05"; + + defaultNixpkgsChannel = "https://nixos.org/channels/${defaultNixpkgsBranch}"; + defaultNixOnDroidChannel = "https://github.com/t184256/nix-on-droid/archive/${defaultNixOnDroidBranch}.tar.gz"; + + defaultNixpkgsFlake = "github:NixOS/nixpkgs/${defaultNixpkgsBranch}"; + defaultNixOnDroidFlake = "github:t184256/nix-on-droid/${defaultNixOnDroidBranch}"; +in + { ###### interface @@ -14,23 +25,35 @@ with lib; channel = { nixpkgs = mkOption { type = types.str; - default = "https://nixos.org/channels/nixos-22.05"; + default = defaultNixpkgsChannel; description = "Channel URL for nixpkgs."; }; nix-on-droid = mkOption { type = types.str; - default = "https://github.com/t184256/nix-on-droid/archive/release-22.05.tar.gz"; + default = defaultNixOnDroidChannel; description = "Channel URL for nix-on-droid."; }; }; flake = { + nixpkgs = mkOption { + type = types.str; + default = defaultNixpkgsFlake; + description = "Flake URL for nixpkgs."; + }; + nix-on-droid = mkOption { type = types.str; - default = "github:t184256/nix-on-droid/release-22.05"; + default = defaultNixOnDroidFlake; description = "Flake URL for nix-on-droid."; }; + + inputOverrides = mkEnableOption "" // { + description = '' + Whether to override the standard input URLs in the initial flake.nix. + ''; + }; }; }; @@ -41,7 +64,13 @@ with lib; config = { - build.initialBuild = true; + build = { + initialBuild = true; + + flake.inputOverrides = + config.build.flake.nixpkgs != defaultNixpkgsFlake + || config.build.flake.nix-on-droid != defaultNixOnDroidFlake; + }; # /etc/group and /etc/passwd need to be build on target machine because # uid and gid need to be determined. diff --git a/modules/environment/login/login-inner.nix b/modules/environment/login/login-inner.nix index 8dbe591..eeb2fa7 100644 --- a/modules/environment/login/login-inner.nix +++ b/modules/environment/login/login-inner.nix @@ -78,6 +78,15 @@ writeText "login-inner" '' echo "Installing flake from default template..." ${nixCmd} flake new ${config.user.home}/.config/nix-on-droid --template ${config.build.flake.nix-on-droid} + ${lib.optionalString config.build.flake.inputOverrides '' + echo "Overriding input urls in flake..." + ${nixCmd} run nixpkgs#gnused -- \ + -i \ + -e 's,\"github:NixOS/nixpkgs.*\",\"${config.build.flake.nixpkgs}\",' \ + -e 's,\"github:t184256/nix-on-droid.*\",\"${config.build.flake.nix-on-droid}\",' \ + "${config.user.home}/.config/nix-on-droid/flake.nix" + ''} + echo "Installing first nix-on-droid generation..." ${nixCmd} run ${config.build.flake.nix-on-droid} -- switch --flake ${config.user.home}/.config/nix-on-droid#deviceName