From 85e1b5067a4a5aa7dbb1c662b09aa2e32f17cfb9 Mon Sep 17 00:00:00 2001 From: truxnell <19149206+truxnell@users.noreply.github.com> Date: Thu, 21 Mar 2024 20:54:51 +1100 Subject: [PATCH] feat: add iso and desktop shell --- flake.nix | 10 +++ nixos/hosts/images/cd-dvd/default.nix | 89 ++++++++++++++++++++++ nixos/hosts/nixosvm/default.nix | 4 - nixos/hosts/rickenbacker/default.nix | 105 ++++++++++++++++++++++++++ 4 files changed, 204 insertions(+), 4 deletions(-) create mode 100644 nixos/hosts/images/cd-dvd/default.nix create mode 100644 nixos/hosts/rickenbacker/default.nix diff --git a/flake.nix b/flake.nix index 2999ee7..01634ce 100644 --- a/flake.nix +++ b/flake.nix @@ -104,11 +104,21 @@ ./nixos/hosts/images/sd-image ]; }; + # nix build .#images.rpi4 + iso = nixpkgs.lib.nixosSystem { + inherit specialArgs; + + modules = defaultModules ++ [ + "${nixpkgs}/nixos/modules/installer/cd-dvd/channel.nix" + ./nixos/hosts/images/sd-image + ]; + }; }; # simple shortcut to allow for easier referencing of correct # key for building images # > nix build .#images.rpi4 images.rpi4 = nixosConfigurations.rpi4.config.system.build.sdImage; + images.iso = nixosConfigurations.rpi4.config.system.build.sdImage; # deploy-rs deploy.nodes = diff --git a/nixos/hosts/images/cd-dvd/default.nix b/nixos/hosts/images/cd-dvd/default.nix new file mode 100644 index 0000000..b17a87f --- /dev/null +++ b/nixos/hosts/images/cd-dvd/default.nix @@ -0,0 +1,89 @@ +{ config, pkgs, lib, nixos-hardware, ... }: + +{ + imports = [ + # nixos-hardware.nixosModules.raspberry-pi-4 + ../../common/nixos/openssh.nix + ]; + + nix = { + settings = { + experimental-features = [ "nix-command" "flakes" ]; + trusted-users = [ "root" "@wheel" ]; + }; + }; + + nixpkgs = { + + # Configure your nixpkgs instance + config = { + # Disable if you don't want unfree packages + allowUnfree = true; + }; + }; + + boot = { + initrd.availableKernelModules = [ "usbhid" "usb_storage" ]; + # ttyAMA0 is the serial console broken out to the GPIO + kernelParams = [ + "8250.nr_uarts=1" + "console=ttyAMA0,115200" + "console=tty1" + ]; + loader = { + grub.enable = false; + raspberryPi = { + version = 4; + }; + }; + }; + + # # https://nixos.wiki/wiki/NixOS_on_ARM/Raspberry_Pi_4 + # hardware = { + # raspberry-pi."4".apply-overlays-dtmerge.enable = true; + # deviceTree = { + # enable = true; + # filter = "*rpi-4-*.dtb"; + # }; + # }; + + console.enable = false; + + environment.systemPackages = with pkgs; [ + libraspberrypi + raspberrypi-eeprom + ssh-to-age + vim + git + curl + wget + dnsutils + ]; + + networking = { + hostName = "nixos"; + wireless.enable = false; + networkmanager.enable = false; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.truxnell = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMZS9J1ydflZ4iJdJgO8+vnN8nNSlEwyn9tbWU9OcysW truxnell@home" + ]; + }; + + # Free up to 1GiB whenever there is less than 100MiB left. + nix.extraOptions = '' + min-free = ${toString (100 * 1024 * 1024)} + max-free = ${toString (1024 * 1024 * 1024)} + ''; + nixpkgs.hostPlatform = "aarch64-linux"; + + system.stateVersion = "23.11"; + +} diff --git a/nixos/hosts/nixosvm/default.nix b/nixos/hosts/nixosvm/default.nix index 8bb00e2..59781f4 100644 --- a/nixos/hosts/nixosvm/default.nix +++ b/nixos/hosts/nixosvm/default.nix @@ -29,10 +29,6 @@ networking.hostName = "nixosvm"; # Define your hostname. - # Passwordless sudo when SSH'ing with keys - security.pam.enableSSHAgentAuth = true; - security.pam.services.sudo.sshAgentAuth = true; - # Pick only one of the below networking options. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. diff --git a/nixos/hosts/rickenbacker/default.nix b/nixos/hosts/rickenbacker/default.nix new file mode 100644 index 0000000..b7622eb --- /dev/null +++ b/nixos/hosts/rickenbacker/default.nix @@ -0,0 +1,105 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). +{ config +, lib +, pkgs +, ... +}: { + imports = [ + # Host-specific + ./hardware-configuration.nix + + # Common imports + ../common/nixos + ../common/nixos/users/truxnell + ../common/optional/fish.nix + ../common/optional/monitoring.nix + ../common/optional/reboot-required.nix + ../common/optional/gnome.nix + ../common/optional/editors/vscode + ../common/optional/firefox.nix + ../common/optional/sops-nix.nix + + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; # Enabled for raspi4 compilation + + networking.hostName = "rickenbacker"; # Define your hostname. + + + + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + # networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + # i18n.defaultLocale = "en_US.UTF-8"; + # console = { + # font = "Lat2-Terminus16"; + # keyMap = "us"; + # useXkbConfig = true; # use xkb.options in tty. + # }; + + # Enable the X11 windowing system. + # services.xserver.enable = true; + + # Configure keymap in X11 + # services.xserver.xkb.layout = "us"; + # services.xserver.xkb.options = "eurosign:e,caps:escape"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + # sound.enable = true; + # hardware.pulseaudio.enable = true; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "23.11"; # Did you read the comment? +}