mirror of
https://github.com/NiklasGollenstede/nixos-installer.git
synced 2024-11-25 01:14:13 +01:00
include scripts in build of all-systems, add base.includeNixpkgs option
This commit is contained in:
parent
1f72d9bf26
commit
df3fa46b3c
@ -12,5 +12,5 @@ This is a minimal example for a NixOS system installation function using the fun
|
|||||||
function install-system {( set -eu # 1: blockDev
|
function install-system {( set -eu # 1: blockDev
|
||||||
prepare-installer "$@"
|
prepare-installer "$@"
|
||||||
do-disk-setup "$1"
|
do-disk-setup "$1"
|
||||||
install-system-to $mnt prompt=true @{config.th.minify.topLevel:-}
|
install-system-to $mnt prompt=true
|
||||||
)}
|
)}
|
||||||
|
@ -49,11 +49,7 @@ in { imports = [ ({ ## Hardware
|
|||||||
fileSystems."/nix/store" = { options = ["bind,ro"]; device = "/system/nix/store"; neededForBoot = true; };
|
fileSystems."/nix/store" = { options = ["bind,ro"]; device = "/system/nix/store"; neededForBoot = true; };
|
||||||
|
|
||||||
# Some base config:
|
# Some base config:
|
||||||
users.mutableUsers = false; users.allowNoPasswordLogin = true;
|
wip.base.enable = true; wip.base.includeNixpkgs = inputs.nixpkgs;
|
||||||
networking.hostId = lib.mkDefault (builtins.substring 0 8 (builtins.hashString "sha256" config.networking.hostName));
|
|
||||||
environment.etc."machine-id".text = (builtins.substring 0 32 (builtins.hashString "sha256" "${config.networking.hostName}:machine-id"));
|
|
||||||
boot.kernelParams = [ "panic=10" "boot.panic_on_fail" ]; # Reboot on kernel panic, panic if boot fails.
|
|
||||||
systemd.extraConfig = "StatusUnitFormat=name"; # Show unit names instead of descriptions during boot.
|
|
||||||
|
|
||||||
# Static config for VBox Adapter 1 set to NAT (the default):
|
# Static config for VBox Adapter 1 set to NAT (the default):
|
||||||
networking.interfaces.enp0s3.ipv4.addresses = [ {
|
networking.interfaces.enp0s3.ipv4.addresses = [ {
|
||||||
|
@ -82,9 +82,11 @@ in rec {
|
|||||||
|
|
||||||
networking.hostName = name;
|
networking.hostName = name;
|
||||||
|
|
||||||
system.extraSystemBuilderCmds = if !config.boot.initrd.enable then "" else ''
|
system.extraSystemBuilderCmds = (if !config.boot.initrd.enable then "" else ''
|
||||||
ln -sT ${builtins.unsafeDiscardStringContext config.system.build.bootStage1} $out/boot-stage-1.sh # (this is super annoying to locate otherwise)
|
ln -sT ${builtins.unsafeDiscardStringContext config.system.build.bootStage1} $out/boot-stage-1.sh # (this is super annoying to locate otherwise)
|
||||||
'';
|
'') + (if !inputs?self then "" else ''
|
||||||
|
ln -sT ${inputs.self.outPath} $out/config # (build input for reference)
|
||||||
|
'');
|
||||||
|
|
||||||
}) ];
|
}) ];
|
||||||
specialArgs = specialArgs; # explicitly passing »pkgs« here breaks »config.nixpkgs.overlays«!
|
specialArgs = specialArgs; # explicitly passing »pkgs« here breaks »config.nixpkgs.overlays«!
|
||||||
@ -145,7 +147,7 @@ in rec {
|
|||||||
... }: let
|
... }: let
|
||||||
otherArgs = (builtins.removeAttrs args [ "systems" ]) // { inherit systems overlays modules specialArgs scripts inputs configPath nixosSystem localSystem; };
|
otherArgs = (builtins.removeAttrs args [ "systems" ]) // { inherit systems overlays modules specialArgs scripts inputs configPath nixosSystem localSystem; };
|
||||||
nixosConfigurations = if builtins.isList systems then mergeAttrsUnique (map (systems: mkNixosConfigurations (otherArgs // systems)) systems) else mkNixosConfigurations (otherArgs // systems);
|
nixosConfigurations = if builtins.isList systems then mergeAttrsUnique (map (systems: mkNixosConfigurations (otherArgs // systems)) systems) else mkNixosConfigurations (otherArgs // systems);
|
||||||
in {
|
in let outputs = {
|
||||||
inherit nixosConfigurations;
|
inherit nixosConfigurations;
|
||||||
} // (forEachSystem [ "aarch64-linux" "x86_64-linux" ] (localSystem: let
|
} // (forEachSystem [ "aarch64-linux" "x86_64-linux" ] (localSystem: let
|
||||||
pkgs = (import inputs.nixpkgs { inherit overlays; system = localSystem; });
|
pkgs = (import inputs.nixpkgs { inherit overlays; system = localSystem; });
|
||||||
@ -212,6 +214,10 @@ in rec {
|
|||||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: system: (
|
${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: system: (
|
||||||
"ln -sT ${system.config.system.build.toplevel} $out/systems/${name}"
|
"ln -sT ${system.config.system.build.toplevel} $out/systems/${name}"
|
||||||
)) nixosConfigurations)}
|
)) nixosConfigurations)}
|
||||||
|
${lib.optionalString (scripts != [ ]) ''
|
||||||
|
mkdir -p $out/scripts
|
||||||
|
${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: _: "ln -sT ${outputs.apps.${localSystem}.${name}.program} $out/scripts/${name}") nixosConfigurations)}
|
||||||
|
''}
|
||||||
${lib.optionalString (inputs != { }) ''
|
${lib.optionalString (inputs != { }) ''
|
||||||
mkdir -p $out/inputs
|
mkdir -p $out/inputs
|
||||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: { outPath, ... }: "ln -sT ${outPath} $out/inputs/${name}") inputs)}
|
${lib.concatStringsSep "\n" (lib.mapAttrsToList (name: { outPath, ... }: "ln -sT ${outPath} $out/inputs/${name}") inputs)}
|
||||||
@ -220,6 +226,6 @@ in rec {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
}));
|
})); in outputs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ With the functions from here, adding a simple three-liner can be enough to do a
|
|||||||
function install-system {( set -eu # 1: blockDev
|
function install-system {( set -eu # 1: blockDev
|
||||||
prepare-installer "$@"
|
prepare-installer "$@"
|
||||||
do-disk-setup "$1"
|
do-disk-setup "$1"
|
||||||
install-system-to $mnt prompt=true @{config.th.minify.topLevel:-}
|
install-system-to $mnt prompt=true
|
||||||
)}
|
)}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ in {
|
|||||||
|
|
||||||
options.${prefix} = { base = {
|
options.${prefix} = { base = {
|
||||||
enable = lib.mkEnableOption "saner defaults";
|
enable = lib.mkEnableOption "saner defaults";
|
||||||
|
includeNixpkgs = lib.mkOption { description = "»nixpkgs« to include in the system build."; type = lib.types.nullOr lib.types.package; default = null; };
|
||||||
}; };
|
}; };
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
@ -36,6 +37,16 @@ in {
|
|||||||
# might additionally want to do this: https://stackoverflow.com/questions/62083796/automatic-reboot-on-systemd-emergency-mode
|
# might additionally want to do this: https://stackoverflow.com/questions/62083796/automatic-reboot-on-systemd-emergency-mode
|
||||||
systemd.extraConfig = "StatusUnitFormat=name"; # Show unit names instead of descriptions during boot.
|
systemd.extraConfig = "StatusUnitFormat=name"; # Show unit names instead of descriptions during boot.
|
||||||
|
|
||||||
|
|
||||||
|
}) (lib.mkIf (cfg.includeNixpkgs != null) {
|
||||||
|
|
||||||
|
nix.registry.nixpkgs.flake = cfg.includeNixpkgs;
|
||||||
|
environment.etc."nix/channels/nixpkgs".source = cfg.includeNixpkgs.outPath;
|
||||||
|
nix.nixPath = [ "nixpkgs=/etc/nix/channels/nixpkgs" "nixos-config=/etc/nixos" ];
|
||||||
|
nix.extraOptions = "experimental-features = nix-command flakes"; # apparently, even nix 2.8 (in nixos-22.05) needs this
|
||||||
|
environment.shellAliases = { "with" = ''nix-shell --run "bash --login" -p''; };
|
||||||
|
|
||||||
|
|
||||||
}) ({
|
}) ({
|
||||||
# Free convenience:
|
# Free convenience:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user