diff options
author | Karel Kočí <cynerd@email.cz> | 2022-07-17 19:35:04 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2022-07-17 19:35:04 +0200 |
commit | 482566b84fc9b30538ae4dd090e77a0979aa1a3f (patch) | |
tree | 16a9819851b9fda2fcf45698c38f6b63eeb58228 /nixos | |
parent | b106528fd8db5f1004b5559b742c2f2825e39940 (diff) | |
download | nixturris-482566b84fc9b30538ae4dd090e77a0979aa1a3f.tar.gz nixturris-482566b84fc9b30538ae4dd090e77a0979aa1a3f.tar.bz2 nixturris-482566b84fc9b30538ae4dd090e77a0979aa1a3f.zip |
nixos: allow tarball build and cross-build directly
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/default.nix | 2 | ||||
-rw-r--r-- | nixos/modules/turris-crossbuild.nix | 21 | ||||
-rw-r--r-- | nixos/modules/turris-defaults.nix | 2 | ||||
-rw-r--r-- | nixos/modules/turris-tarball.nix | 78 |
4 files changed, 102 insertions, 1 deletions
diff --git a/nixos/default.nix b/nixos/default.nix index 79ce6e1..7274f66 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -4,6 +4,8 @@ self: let turris-board = import ./modules/turris-board.nix; turris-defaults = import ./modules/turris-defaults.nix; + turris-tarball = import ./modules/turris-tarball.nix; + turris-crossbuild = import ./modules/turris-crossbuild.nix; hostapd = import ./modules/hostapd.nix; diff --git a/nixos/modules/turris-crossbuild.nix b/nixos/modules/turris-crossbuild.nix new file mode 100644 index 0000000..1f107bd --- /dev/null +++ b/nixos/modules/turris-crossbuild.nix @@ -0,0 +1,21 @@ +{ config, lib, pkgs, modulesPath, extendModules, ... }: + +with lib; + +let + + crossVariant = host: extendModules { + modules = [{ + nixpkgs.system = host; + nixpkgs.crossSystem = { + inherit (config.nixpkgs.localSystem) system config; + }; + }]; + }; + +in mkIf (config.nixpkgs.crossSystem == null) { + + # TODO for each common platform + system.build.cross.x86_64-linux = crossVariant "x86_64-linux"; + +} diff --git a/nixos/modules/turris-defaults.nix b/nixos/modules/turris-defaults.nix index 5de0d44..ee7f88e 100644 --- a/nixos/modules/turris-defaults.nix +++ b/nixos/modules/turris-defaults.nix @@ -83,7 +83,7 @@ in { ] ++ optionals (config.turris.board == "mox") [ #mox-otp ] ++ optionals (config.turris.board == "omnia") [ - #libatsha204 + libatsha204 ]; # No need for installer tools in standard system diff --git a/nixos/modules/turris-tarball.nix b/nixos/modules/turris-tarball.nix new file mode 100644 index 0000000..5a1f672 --- /dev/null +++ b/nixos/modules/turris-tarball.nix @@ -0,0 +1,78 @@ +{ config, lib, pkgs, modulesPath, extendModules, ... }: + +with lib; + +let + + tarballVariant = extendModules { + modules = [{ + boot.consoleLogLevel = lib.mkDefault 7; + + # Allow access to the root account right after installation + users = { + mutableUsers = false; + users.root.password = mkDefault "nixturris"; + }; + + # Allow root access over SSH + services.openssh = { + enable = true; + passwordAuthentication = true; + permitRootLogin = "yes"; + }; + + # TODO we have to generate the hardware specific configuration on first boot + boot.postBootCommands = '' + ''; + + environment.etc."nixos/flake.nix" = { + mode = "0600"; + text = '' + { + inputs.nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-21.11"; + inputs.nixturris.url = "git+https://git.cynerd.cz/nixturris"; + outputs = { self, nixpkgs-stable, nixturris }: { + nixosConfigurations.nixturris = nixturris.lib.nixturrisSystem { + nixpkgs = nixpkgs-stable; + board = "${config.turris.board}"; + modules = [({ config, lib, pkgs, ... }: { + # Optionally place your configuration here + })]; + }; + }; + } + ''; + }; + system.extraSystemBuilderCmds = '' + mkdir -p $out/boot/extlinux + cat >$out/boot/extlinux/extlinux.conf <<EOF + DEFAULT nixos-default + TIMEOUT 0 + LABEL nixos-default + MENU LABEL NixOS - Default + LINUX /run/current-system/kernel + FDTDIR /run/current-system/dtbs + INITRD /run/current-system/initrd + APPEND init=${config.system.build.toplevel}/init ${builtins.toString config.boot.kernelParams} + EOF + ''; + }]; + }; + +in { + + system.build.tarball = pkgs.callPackage "${modulesPath}/../lib/make-system-tarball.nix" { + contents = [ + { + source = "${tarballVariant.config.system.build.toplevel}/."; + target = "./"; + } + ]; + + storeContents = map (x: { object = x; symlink = "none"; }) [ + tarballVariant.config.system.build.toplevel + pkgs.stdenv + ]; + }; + +} |