aboutsummaryrefslogtreecommitdiff
path: root/nixos
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2022-07-17 19:35:04 +0200
committerKarel Kočí <cynerd@email.cz>2022-07-17 19:35:04 +0200
commit482566b84fc9b30538ae4dd090e77a0979aa1a3f (patch)
tree16a9819851b9fda2fcf45698c38f6b63eeb58228 /nixos
parentb106528fd8db5f1004b5559b742c2f2825e39940 (diff)
downloadnixturris-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.nix2
-rw-r--r--nixos/modules/turris-crossbuild.nix21
-rw-r--r--nixos/modules/turris-defaults.nix2
-rw-r--r--nixos/modules/turris-tarball.nix78
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
+ ];
+ };
+
+}