diff --git a/flake.nix b/flake.nix index 2caf8c1..a19ecb9 100644 --- a/flake.nix +++ b/flake.nix @@ -105,7 +105,7 @@ packages.x86_64-linux = { proxmox = import ./packages/proxmox.nix {inherit inputs configLib;}; iso = import ./packages/iso.nix {inherit inputs configLib;}; - rockpro64-image = import ./packages/rockpro64-image.nix {inherit inputs configLib;}; + aarch-64-iso = import ./packages/aarch64-iso.nix {inherit inputs configLib;}; }; templates = import ./templates; diff --git a/hosts/home-workstation.nix b/hosts/home-workstation.nix index 38eb0b4..c357fa1 100644 --- a/hosts/home-workstation.nix +++ b/hosts/home-workstation.nix @@ -45,7 +45,7 @@ inputs.home-manager.lib.homeManagerConfiguration { inputs.sops-nix.homeManagerModules.sops ]; - sops = lib.mkIf (inputs?nix-secrets) { + sops = lib.mkIf (inputs ? nix-secrets) { secrets = { irc-cert.sopsFile = "${inputs.nix-secrets}/workstations.yaml"; }; diff --git a/hosts/workstation-vm/default.nix b/hosts/workstation-vm/default.nix index c7084da..ceaa811 100644 --- a/hosts/workstation-vm/default.nix +++ b/hosts/workstation-vm/default.nix @@ -1,6 +1,3 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). { inputs, configLib, diff --git a/packages/rockpro64-image.nix b/packages/aarch64-iso.nix similarity index 53% rename from packages/rockpro64-image.nix rename to packages/aarch64-iso.nix index 5b1a0cf..c145555 100644 --- a/packages/rockpro64-image.nix +++ b/packages/aarch64-iso.nix @@ -1,6 +1,4 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). +# this ISO works best with tow-boot or another way of UEFI booting. { inputs, configLib, @@ -15,7 +13,6 @@ ../configs/nixos/interactive-networking.nix ../configs/nixos/common.nix ../configs/nixos/sshd.nix - ../roles/nixos/power-saving.nix ({ config, pkgs, @@ -26,11 +23,19 @@ options, ... }: { - nixpkgs.buildPlatform.system = "x86_64-linux"; - nixpkgs.hostPlatform.system = "aarch64-linux"; + # do not cross compile, some packages are broken, and will take an age anywyay. instead, if you are on nixos, set `boot.binfmt.emulatedSystems=["aarch64-linux"];`. + # if your not on nixos, install quemu-user-static and quemu-user-static-binfmt, and add `extra-platforms = aarch64-linux` to /etc/nix/nix.conf. may have to modify extra-sandbox-paths. + # alternatively, set up a remote-builder for aarch64-linux. + + # nixpkgs.buildPlatform.system = "x86_64-linux"; + # nixpkgs.hostPlatform.system = "aarch64-linux"; imports = [ - # "${modulesPath}/installer/sd-card/sd-image.nix" - "${modulesPath}/installer/sd-card/sd-image-aarch64.nix" + "${modulesPath}/installer/cd-dvd/iso-image.nix" + "${modulesPath}/profiles/base.nix" + "${modulesPath}/profiles/clone-config.nix" + "${modulesPath}/profiles/all-hardware.nix" + "${modulesPath}/installer/scan/detected.nix" + "${modulesPath}/installer/scan/not-detected.nix" ]; host = { user = "gabe"; @@ -69,15 +74,36 @@ ]; }; - boot.loader.grub.enable = false; - boot.loader.generic-extlinux-compatible.enable = true; - - boot.consoleLogLevel = lib.mkDefault 7; - boot.kernelParams = ["console=ttyS0,115200n8" "console=ttyAMA0,115200n8" "console=tty0"]; - # Adds terminus_font for people with HiDPI displays console.packages = options.console.packages.default ++ [pkgs.terminus_font]; + # ISO naming. + isoImage.isoName = "${config.isoImage.isoBaseName}-${pkgs.stdenv.hostPlatform.system}.iso"; + + # EFI booting + isoImage.makeEfiBootable = true; + + # USB booting + isoImage.makeUsbBootable = true; + + # Add Memtest86+ to the CD. + boot.loader.grub.memtest86.enable = true; + + # services.libinput.enable = true; # for touchpad support on many laptops + + # An installation media cannot tolerate a host config defined file + # system layout on a fresh machine, before it has been formatted. + swapDevices = lib.mkForce []; + fileSystems = lib.mkForce config.lib.isoFileSystems; + + system.nixos.variant_id = lib.mkDefault "installer"; + + # Enable in installer, even if the minimal profile disables it. + documentation.enable = lib.mkForce true; + + # Show the manual. + documentation.nixos.enable = lib.mkForce true; + # Tell the Nix evaluator to garbage collect more aggressively. # This is desirable in memory-constrained environments that don't # (yet) have swap set up. @@ -95,6 +121,17 @@ # console less cumbersome if the machine has a public IP. networking.firewall.logRefusedConnections = lib.mkDefault false; + # Prevent installation media from evacuating persistent storage, as their + # var directory is not persistent and it would thus result in deletion of + # those entries. + environment.etc."systemd/pstore.conf".text = '' + [PStore] + Unlink=no + ''; + + # Much faster than xz + isoImage.squashfsCompression = lib.mkDefault "zstd"; + system.stateVersion = lib.mkDefault lib.trivial.release; }) ]; @@ -102,4 +139,4 @@ .config .system .build -.sdImage +.isoImage diff --git a/packages/iso.nix b/packages/iso.nix index 81f7032..5474c3f 100644 --- a/packages/iso.nix +++ b/packages/iso.nix @@ -1,6 +1,3 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). { inputs, configLib, diff --git a/roles/home-manager/minimal-terminal.nix b/roles/home-manager/minimal-terminal.nix index 116f663..c18cf5a 100644 --- a/roles/home-manager/minimal-terminal.nix +++ b/roles/home-manager/minimal-terminal.nix @@ -9,6 +9,7 @@ ../../configs/home-manager/direnv.nix ../../configs/home-manager/ssh-agent.nix ../../configs/home-manager/zsh.nix + ../../configs/home-manager/zellij ]; user = {